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

@farris/bef

Package Overview
Dependencies
Maintainers
19
Versions
244
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@farris/bef - npm Package Compare versions

Comparing version 0.0.12-20210412145944-dev to 0.0.12-20210427141956-dev

2

bundles/farris-bef.umd.min.js

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

!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports,require("@ecp-caf/caf-common"),require("date-fns"),require("rxjs"),require("rxjs/operators"),require("rxjs/operators/map"),require("@angular/core"),require("@farris/devkit"),require("@angular/common/http")):"function"==typeof define&&define.amd?define("@farris/bef",["exports","@ecp-caf/caf-common","date-fns","rxjs","rxjs/operators","rxjs/operators/map","@angular/core","@farris/devkit","@angular/common/http"],t):t((e.farris=e.farris||{},e.farris.bef={}),e.cafCommon,e.dateFns,e.rxjs,e.rxjs.operators,e.rxjs["operators/map"],e.ng.core,e.devkit,e.ng.common.http)}(this,function(e,t,n,f,l,s,i,I,a){"use strict";var S=(r.Added="Added",r.Modify="Modify",r.Deleted="Deleted",r);function r(){}var p=new i.InjectionToken("@farris/be BE_SERVER_URL"),u=new i.InjectionToken("@farris/be BE_SESSION_HANDLING_STRATEGY_TOKEN"),b=(o.getPropInfo=function(e,t){var r,n,o,i=I.FieldMetadataUtil.getNgFields(e);Object.keys(i).forEach(function(e){e===t&&(r="NgField",n=null,o=i[e])});var a=I.FieldMetadataUtil.getNgObjects(e);Object.keys(a).forEach(function(e){e===t&&(r="NgObject",n=a[e].type,o=a[e])});var s=I.FieldMetadataUtil.getNgList(e);Object.keys(s).forEach(function(e){e===t&&(r="NgList",n=s[e].type,o=s[e])});var p=I.FieldMetadataUtil.getNgDynamic(e);return Object.keys(p).forEach(function(e){e===t&&(r="NgDynamic",n=p[e].type,o=p[e])}),{propType:r,propEntityType:n,propMetadata:o}},o.getPrimaryKey=function(e){var t=I.FieldMetadataUtil.getPrimaryFieldMetadata(e);return t?t.dataField:""},o.isObjectProp=function(e,t){var r=!1,n=I.FieldMetadataUtil.getNgObjects(e);return Object.keys(n).forEach(function(e){e===t&&(r=!0)}),r},o.isDynamicProp=function(e,t){var r=!1,n=I.FieldMetadataUtil.getNgDynamic(e);return Object.keys(n).forEach(function(e){e===t&&(r=!0)}),r},o.appendInitialData=function(e,t){var r=Object.assign({},t);delete r.id,delete r.parentID,e.initialData=r},o);function o(){}var c=(h.prototype.build=function(e){var t=this;return this.changeDetail={ChangeType:S.Modify,ChangeInfo:{DataId:""}},e.forEach(function(e){t.buildChangeDetail(e)}),this.changeDetail},h.prototype.buildChangeDetail=function(l){var d=l.path.concat();this.changeDetail.ChangeInfo.DataId||(this.changeDetail.ChangeInfo.DataId=d[0].split(":")[1]);for(var f=this.changeDetail,g=this.entityType,e=function(e){var t=v.getChangeInfo(f),r=d[e],n=b.getPropInfo(g,r),o=n.propType,i=n.propEntityType,a=n.propMetadata.dataField||r;if("NgField"===o){if(r===b.getPrimaryKey(g))return"continue";if(l.type!==I.ModifyType.ValueChange)throw Error("简单类型的属性上不支持ValueChange类型之外的变更");t[a]=l.value,f=null}else if("NgObject"===o)if(d[e+1].split(":")[1],d[e+1].split(":")[0]){var s=t[a],p=d.slice(0,e+1);s=(y=v.entityCollection.getEntityByPath(p))?y.toJSON(!0):{},t[a]=s,g=f=null}else c=(c=t[a])||{ChangeType:S.Modify,ChangeInfo:{}},t[a]=c,f=c,g=i;else if("NgList"===o){f.ChangeInfo[a]||(f.ChangeInfo[a]=[]);var u=f.ChangeInfo[a];if(e!==d.length-1){var c,h=d[e+1].split(":")[1];return(c=u.find(function(e){return e.ChangeInfo.DataId===h}))||(c=v.createEmptyChangeDetail(S.Modify,h),u.push(c)),f=c,g=i,"continue"}l.type===I.ModifyType.Add||l.type===I.ModifyType.Insert||(l.type,I.ModifyType.Remove),g=f=null}else if("NgDynamic"===o){p=d.slice(0,e+1);var y=v.entityCollection.getEntityByPath(p);t[a]={ChangeType:S.Modify,ChangeInfo:y?y.toJSON(!0):{}},g=f=null}},v=this,t=1;t<d.length&&f;t+=2)e(t)},h.prototype.getChangeInfo=function(e){return e.hasOwnProperty("ChangeInfo")?e.ChangeInfo:e},h.prototype.createEmptyChangeDetail=function(e,t){return{ChangeType:e,ChangeInfo:{DataId:t}}},h);function h(e,t){this.entityType=e,this.entityCollection=t}var y=(d.prototype.handle=function(e,t,r){this.handleChangeDetails(e,t,r)},d.prototype.handleChangeDetails=function(n,o,e){var i=this;e&&e.forEach(function(e){var t=e.ChangeInfo.dataId||e.ChangeInfo.DataId,r=i.getEntityById(o,t);r&&i.handleChangeDetail(n,r,e)})},d.prototype.handleChangeDetail=function(u,c,e){var h=this;if(e&&c&&e.ChangeType===S.Modify){var y=e.ChangeInfo;Object.keys(y).forEach(function(e){var t=b.getPropInfo(u,e),r=t.propType,n=t.propEntityType;if("NgField"===r)c[e]=y[e];else if("NgObject"===r){var o=c[e];if(o.primaryKey){var i=y[e];o.load(i)}else{var a=y[e];h.handleChangeDetail(n,o,a)}}else if("NgList"===r){var s=c[e],p=y[e];h.handleChangeDetails(n,s,p)}})}},d.prototype.getEntityById=function(e,t){return(e instanceof I.EntityCollection?e.getEntityById(t):e.get(t))||null},d);function d(){}var g=(v.prototype.getUserSessionId=function(){return this.sessionService.getUserSessionId()},v.prototype.getCurrentSessionId=function(e){var t;if(this.sessionService)if(e&&e.hasOwnProperty("tabId")){var r=e.tabId;t=this.sessionService.getCurrentSeesionId(r)}else t=this.sessionService.getCurrentSeesionId();return t=t||this.getUserSessionId()},v.decorators=[{type:i.Injectable}],v.ctorParameters=function(){return[{type:t.SessionService,decorators:[{type:i.Optional}]}]},v);function v(e){this.sessionService=e}var C=(m.prototype.getItem=function(e){return this.getAllBeSessions()[e]},m.prototype.setItem=function(e,t){var r=this.getAllBeSessions();r[e]=t,this.setAllBeSessions(r)},m.prototype.removeItem=function(e){var t=this.getAllBeSessions();t[e]&&delete t[e],this.setAllBeSessions(t)},m.prototype.clear=function(e,t){!0===this.isInFramework()?this.removeItemsByFrmSessionId(e):this.removeItem(t)},m.prototype.removeItemsByFrmSessionId=function(t){var r=this.getAllBeSessions();Object.keys(r).forEach(function(e){!0===e.startsWith(t)&&delete r[e]}),this.setAllBeSessions(r)},m.prototype.getAllBeSessions=function(){var e=window.sessionStorage.getItem(this.sessionStorageKey);return e?JSON.parse(e):{}},m.prototype.setAllBeSessions=function(e){var t=JSON.stringify(e);window.sessionStorage.setItem(this.sessionStorageKey,t)},m.prototype.isInFramework=function(){var e=window.location.hash;return!!e&&-1!==e.indexOf("tabId=")},m);function m(){this.sessionStorageKey="BE_SESSION_ID"}var E=function(e,t){return(E=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var r in t)t.hasOwnProperty(r)&&(e[r]=t[r])})(e,t)};function x(e,t){function r(){this.constructor=e}E(e,t),e.prototype=null===t?Object.create(t):(r.prototype=t.prototype,new r)}var B=function(){return(B=Object.assign||function(e){for(var t,r=1,n=arguments.length;r<n;r++)for(var o in t=arguments[r])Object.prototype.hasOwnProperty.call(t,o)&&(e[o]=t[o]);return e}).apply(this,arguments)};function P(e){var t="function"==typeof Symbol&&Symbol.iterator,r=t&&e[t],n=0;if(r)return r.call(e);if(e&&"number"==typeof e.length)return{next:function(){return e&&n>=e.length&&(e=void 0),{value:e&&e[n++],done:!e}}};throw new TypeError(t?"Object is not iterable.":"Symbol.iterator is not defined.")}function R(e,t){var r="function"==typeof Symbol&&e[Symbol.iterator];if(!r)return e;var n,o,i=r.call(e),a=[];try{for(;(void 0===t||0<t--)&&!(n=i.next()).done;)a.push(n.value)}catch(s){o={error:s}}finally{try{n&&!n.done&&(r=i["return"])&&r.call(i)}finally{if(o)throw o.error}}return a}function D(){for(var e=[],t=0;t<arguments.length;t++)e=e.concat(R(arguments[t]));return e}var q=(O.convertToHeaders=function(t){if(1==(t=t||new a.HttpHeaders)instanceof a.HttpHeaders)return t;if(0<Object.keys(t).length){var r=new a.HttpHeaders;Object.keys(t).forEach(function(e){r=r.append(e,t[e])}),t=r}else t=new a.HttpHeaders;return t},O.appendSessionId=function(e,t){return e.append("SessionId",t)},O.appendCafRuntimeCommonVariable=function(e,t){return e.append("X-CAF-Runtime-CommonVariable",t)},O.appendCafRuntimeContext=function(e,t){return e.append("X-CAF-Runtime-Context",t)},O.appendContextType=function(e,t){return t=t||"application/json",e.append("Content-Type",t)},O.appendRequireMessage=function(e,t){return void 0===t&&(t=!0),e.append("Bff-Require-Message",t.toString())},O.appendFuncInstId=function(e,t){return e.append("Func-Inst-Id",t)},O.toJson=function(r){if(!(r instanceof a.HttpHeaders))return null;var n={};return r.keys().forEach(function(e){var t=r.getAll(e);1<t.length?n[e]=t:n[e]=t[0]||""}),n},O);function O(){}var w=(M.buildParams=function(e){var t=new a.HttpParams;for(var r in e)if(e.hasOwnProperty(r)){var n=e[r].toString();t=t.append(r,n)}return t},M);function M(){}var T=(j.hasRequestInfo=function(e){if(!e||!e.body)return!1;var t=e.body;return!(!t.requestInfo||!t.requestInfo.dataChange)||!!t.dataChange},j.hasRequestInfoWithR=function(e){if(!e||!e.body)return!1;var t=e.body;return!(!t.RequestInfo||!t.RequestInfo.dataChange)||!!t.dataChange},j.buildRequestInfo=function(e){return{dataChange:e.entityManager.buildAllEntityChangeDetails(),variableChange:e.variableManager.buildChangeDetail()}},j.buildBodyWithRequestInfo=function(e,t){if(e.RequestInfo||e.requestInfo)return e;var r=this.buildRequestInfo(t);return Object.assign({},e,{requestInfo:r})},j);function j(){}var A=(U.unWrapResponseInfo=function(e){if(!e)return e;if(!1===e.hasOwnProperty("returnValue"))return e.hasOwnProperty("result")&&e.hasOwnProperty("pagination")?e.result:e;var t=e.returnValue;return t&&t.hasOwnProperty("result")&&t.hasOwnProperty("pagination")?t.result:e.returnValue},U.isReported401Error=function(e){return 401===e.status},U.parseBackEndMessage=function(e){return e&&e.message&&Array.isArray(e.message)&&0<e.message.length?e.message:null},U.parseBackEndError=function(e){var t=e&&e.error;return t&&t.hasOwnProperty("extensionMessage")&&t.extensionMessage&&t.extensionMessage.hasOwnProperty("UIMsg")&&t.extensionMessage.UIMsg&&0<t.extensionMessage.UIMsg.length?JSON.parse(t.extensionMessage.UIMsg):null},U);function U(){}var H=(k.prototype.getService=function(){for(var e=window;!e.gspframeworkService&&e!==window.top&&this.isSameOrigin(e);)e=window.parent;return e.gspframeworkService&&e.gspframeworkService.rtf||{}},k.prototype.isSameOrigin=function(e){var t=window.location.host;try{if(e&&e.location&&"undefined"!=typeof e.location.host)return e.location.host===t}catch(r){return!1}return!1},Object.defineProperty(k.prototype,"params",{get:function(){return this.rtf&&this.rtf.hasOwnProperty("session")&&"function"==typeof this.rtf.session.getCommonVariable?this.rtf.session.getCommonVariable():null},enumerable:!0,configurable:!0}),Object.defineProperty(k.prototype,"httpService",{get:function(){return this.rtf&&this.rtf.hasOwnProperty("http")&&"function"==typeof this.rtf.http.request?this.rtf.http:null},enumerable:!0,configurable:!0}),k.prototype.request=function(e,t,r){return void 0===r&&(r={}),this.defaultHttpClient.request(e,t,r)},k.decorators=[{type:i.Injectable}],k.ctorParameters=function(){return[{type:a.HttpClient}]},k);function k(e){this.defaultHttpClient=e,this.httpClient=e,this.rtf=this.getService()}var V=(N.prototype.getFrmSessionId=function(e){return this.frmSessionService.getCurrentSessionId(e)},Object.defineProperty(N.prototype,"frmSessionId",{get:function(){return this.frmSessionService.getCurrentSessionId()},enumerable:!0,configurable:!0}),N.prototype.getFrameworkSessionId=function(e){return this.getFrmSessionId(e)},N.prototype.getSessionIdFromStorage=function(e){var t=this.getSessionStorageKey(e);return this.storageStrategy.getItem(t)},N);function N(e,t){this.storageStrategy=e,this.frmSessionService=t}var F,_=(x(L,F=V),L.prototype.getSessionId=function(){var e=this.getSessionIdFromStorage();return e?f.of(e):this.createSession()},L.prototype.setSessionId=function(e){var t=this.getSessionStorageKey();this.storageStrategy.setItem(t,e)},L.prototype.clearSessionId=function(){var e=this.getSessionStorageKey();this.storageStrategy.clear(this.frmSessionId,e)},L.prototype.extendRequestHeaders=function(e,t){var r=this.getFrameworkSessionId(t),n=this.getSessionIdFromStorage(t);return e=q.appendCafRuntimeCommonVariable(e,r),e=q.appendCafRuntimeContext(e,n),e=q.appendSessionId(e,n)},L.prototype.handleReponseHeaders=function(e){console.log(e)},L.prototype.createSession=function(){var t=this,e={responseType:"text"};return this.frmSessionId&&(e.headers=new a.HttpHeaders({SessionId:this.frmSessionId}),e.headers=e.headers.append("X-CAF-Runtime-CommonVariable",this.frmSessionId),e.headers=q.toJson(e.headers)),this.httpService.request("POST",this.beSessionUri,e).pipe(l.tap(function(e){t.setSessionId(e)}))},L.prototype.extendHttpHeader=function(){},L.prototype.getSessionStorageKey=function(e){return(e?this.getFrameworkSessionId(e):this.frmSessionId)+"_"+this.beSessionUri},L);function L(e,t,r,n){var o=F.call(this,e,t)||this;return o.beSessionUri=n,o.httpClient=r,o.httpService=new H(o.httpClient),o}var K,G=(x(J,K=V),J.prototype.getSessionId=function(){var e=this.getSessionStorageKey(),t=this.storageStrategy.getItem(e);return f.of(t)},J.prototype.setSessionId=function(e){var t=this.getSessionStorageKey();this.storageStrategy.setItem(t,e)},J.prototype.clearSessionId=function(){var e=this.getSessionStorageKey();this.storageStrategy.removeItem(e)},J.prototype.extendRequestHeaders=function(e,t){var r=this.getFrameworkSessionId(t),n=this.getSessionIdFromStorage(t),o=this.injector.get(I.AppContext,null);if(o){var i=o.ApplicationId;e=q.appendFuncInstId(e,i)}return e=q.appendCafRuntimeCommonVariable(e,r),n&&(e=q.appendCafRuntimeContext(e,n)),e},J.prototype.handleReponseHeaders=function(e){console.log(e)},J.prototype.getSessionStorageKey=function(e){return(e?this.getFrameworkSessionId(e):this.frmSessionId)+"_"+window.location.hash},J);function J(e,t,r,n){var o=K.call(this,e,t)||this;return o.beSessionUri=r,o.injector=n,o}var W=(z.prototype.create=function(e,t,r,n,o){var i=this.createStorageStrategy(),a=this.createBeSessionUri(r);return"UnifiedSession"===e?new G(i,t,a,o):new _(i,t,n,a)},z.prototype.createStorageStrategy=function(){return new C},z.prototype.createBeSessionUri=function(e){return e+"/service/createsession"},z.decorators=[{type:i.Injectable}],z);function z(){}var Q=(Object.defineProperty(Y.prototype,"token",{get:function(){return this.handlingStrategy.getFrameworkSessionId()},enumerable:!0,configurable:!0}),Y.prototype.getBeSessionId=function(){return this.handlingStrategy.getSessionId()},Y.prototype.setBeSessionId=function(e){this.handlingStrategy.setSessionId(e)},Y.prototype.clearBeSessionId=function(){this.handlingStrategy.clearSessionId()},Y.prototype.extendRequestHeaders=function(e,t){return this.handlingStrategy.extendRequestHeaders(e,t)},Y.prototype.handleResponseHeaders=function(e){return this.handlingStrategy.handleReponseHeaders(e)},Y.prototype.createBeSession=function(){return this.handlingStrategy.createSession()},Y.prototype.createHandlingStrategy=function(e,t,r,n){var o;return o=(o=e?e.get(u,null,i.InjectFlags.Optional):"SeparatedSession")||"SeparatedSession",(new W).create(o,r,n,t,e)},Y.decorators=[{type:i.Injectable}],Y.ctorParameters=function(){return[{type:a.HttpClient},{type:String},{type:g},{type:i.Injector}]},Y);function Y(e,t,r,n){this.handlingStrategy=this.createHandlingStrategy(n,e,r,t)}var X,Z="@farris/bef NG_VARIABLE",$=I.makePropDecorator(Z,function(e){return e}),ee=(x(te,X=I.Repository),Object.defineProperty(te.prototype,"restService",{get:function(){return this.dataService.restService},enumerable:!0,configurable:!0}),Object.defineProperty(te.prototype,"changeBuilder",{get:function(){return this.entityManager.changeBuilder},enumerable:!0,configurable:!0}),Object.defineProperty(te.prototype,"changeHandler",{get:function(){return this.entityManager.changeHandler},enumerable:!0,configurable:!0}),te.prototype.getList=function(){return this.dataService.getList(null,null,null,null)},te.prototype.getById=function(e){return this.dataService.getById(e)},te.prototype.updateById=function(e){return this.dataService.updateById(e)},te.prototype.create=function(e){return this.dataService.create(e)},te.prototype.append=function(e){return this.dataService.append(e)},te.prototype.appendByPath=function(e){return this.dataService.appendByPath(e)},te.prototype.removeById=function(e,t){return this.dataService.removeById(e,t)},te.prototype.removeByIds=function(e,t){return this.dataService.removeByIds(e,t)},te.prototype.removeByPath=function(e,t){return this.dataService.removeByPath(e,t)},te.prototype.updateChangesById=function(e){return this.dataService.updateChangesById(e)},te.prototype.updateChangesByPath=function(e,t){throw new Error("Not Implement")},te.prototype.updateAllChanges=function(){return this.dataService.updateAllChanges()},te.prototype.applyChanges=function(){return this.dataService.applyChanges()},te.prototype.updateDataAndVariableChanges=function(){var e={FilterConditions:[],SortConditions:[],IsUsePagination:!0,Pagination:{PageIndex:1,PageSize:1,PageCount:0,TotalCount:0}},t=JSON.stringify(e),r=this.restService.buildRequestInfo();if(this.isEmptyRequestInfo(r))return f.of(null);var n=this.restService.baseUri+"/extension/query?entityFilter="+t,o={body:r};return this.restService.invoke(n,"PUT",null,o,!1,!0,!0)},te.prototype.applyChangesById=function(e){return this.dataService.applyChangesById(e)},te.prototype.cancelChanges=function(e){return this.dataService.cancelChanges(e)},te.prototype.clearAllEntityChanges=function(){return this.entityManager.clearAllEntityChanges()},te.prototype.getDataChangeDetails=function(){return this.entityManager.buildAllEntityChangeDetails()},te.prototype.handleDataChangeDetails=function(e){return this.entityManager.handleDataChangeDetails(e)},te.prototype.getVariableChangeDetail=function(){return this.variableManager.buildChangeDetail()},te.prototype.handleVariableChangeDetail=function(e){this.variableManager.handleChangeDetail(e)},te.prototype.isEmptyRequestInfo=function(e){return!e||(!e.dataChange||e.dataChange.length<1)&&(!e.variableChange||Object.keys(e.variableChange).length<1)},te.decorators=[{type:i.Injectable}],te.ctorParameters=function(){return[]},te);function te(){return X.call(this)||this}var re,ne=(x(oe,re=I.EntityManager),oe.prototype.buildAllEntityChangeDetails=function(){var r=this,n=[];return this.entityCollection.getAllEntities().forEach(function(e){if(0!==e.changes.length){var t=r.changeBuilder.build(e.changes);t&&t.ChangeInfo&&t.ChangeInfo.DataId&&n.push(t)}}),n},oe.prototype.buildEntityChangeDetailById=function(e){var t=this.entityCollection.getEntityById(e);return 0===t.changes.length?null:this.changeBuilder.build(t.changes)},oe.prototype.handleDataChangeDetails=function(e){this.changeHandler.handle(this.entityType,this.entityCollection,e)},oe.prototype.reset=function(){this.entityCollection.clear()},oe);function oe(e){var t=re.call(this,e)||this;return t.changeBuilder=new c(t.entityCollection.entityType,t.entityCollection),t.changeHandler=new y,t}var ie=(ae.createEmpty=function(e,t){var r={ChangeType:e,ChangeInfo:{}};return t&&(r.ChangeInfo.DataId=t),r},ae.getChangeInfo=function(e){return!0===this.isChangeDetail(e)?e.ChangeInfo:e},ae.isChangeDetail=function(e){var t=Object.keys(e);return 2===t.length&&-1<t.indexOf("ChangeType")&&-1<t.indexOf("ChangeInfo")},ae);function ae(){}var se=(pe.prototype.handleChangeDetail=function(e){},pe.prototype.buildChangeDetail=function(){var i=this,a=ie.createEmpty(S.Modify);return this.ngVariableMap.forEach(function(e,t){var r=e.mapping,n=i.getValueFromUIState(r),o=i.innerValueMap.get(t);!1===i.isValueEqual(n,o)&&(i.innerValueMap.set(t,n),i.appendToChangeInfo(a,t,n))}),0===Object.keys(a.ChangeInfo).length?null:a},pe.prototype.reset=function(){this.innerValueMap.clear()},pe.prototype.appendToChangeInfo=function(e,t,r){if(!0===this.isUdtVariable(r)){var n=ie.createEmpty(S.Modify);n.ChangeInfo=r,e.ChangeInfo[t]=n}else e.ChangeInfo[t]=r},pe.prototype.getValueFromUIState=function(e){var t=this.getRootUIState(),r=e.split(".").reduce(function(e,t){return e?e[t]:null},t);return r instanceof Date?n.format(r,"yyyy-MM-dd HH:mm:ss"):r},pe.prototype.getRootUIState=function(){var e=this.appContext.frameContextManager.getRootFrameContext();if(this.injector){var t=this.injector.get(I.FrameContext,null);t&&(e=t.getVirtualRootFrameContext()||e)}if(e)return e.uiState},pe.prototype.isValueEqual=function(e,t){return JSON.stringify(e)===JSON.stringify(t)},pe.prototype.isUdtVariable=function(e){return e&&e.constructor&&"[object Object]"===e.toString()&&e.constructor.prototype.hasOwnProperty("isPrototypeOf")},pe.prototype.setValueToUIState=function(e,t){},pe.ctorParameters=function(){return[{type:I.AppContext},{type:undefined},{type:i.Injector,decorators:[{type:i.Optional}]}]},pe);function pe(e,t,r){var n=this;this.appContext=e,this.ngVariables=t,this.injector=r,this.ngVariableMap=new Map,this.innerValueMap=new Map,Object.keys(t).forEach(function(e){n.ngVariableMap.set(e,t[e])})}var ue=(ce.buildRequestInfo=function(e){return{dataChange:e.entityManager.buildAllEntityChangeDetails(),variableChange:e.variableManager.buildChangeDetail()}},ce);function ce(){}var he=(ye.convertToPathArray=function(e,t){var n=this,r=I.BindingPathConverter.toBindingPathArray(e),o=[],i=t.list.currentItem;return o.push(i.primaryKeyValue),r.forEach(function(e){var t=I.PropertyUtil.getPropertyByName(i.properties,e);if(t.type!==I.BindingPropertyType.List)throw new Error(t.name+"不是子表对应的属性");var r=i[e];i=r.currentItem,o.push(n.trimTrailingS(e)),o.push(i.primaryKeyValue)}),o},ye.convertToPathUrl=function(e,t){var r=this.convertToPathArray(e,t);return r.pop(),"/"+r.join("/")},ye.convertToObjectCodes=function(e,t){for(var r=this.convertToPathArray(e,t),n=r.length,o=[],i=1;i<n;i+=2)o.push(r[i]);return o},ye.convertToDataIdsForUpdate=function(e,t){for(var r=this.convertToPathArray(e,t),n=r.length,o=[],i=0;i<n;i+=2)o.push(r[i]);return o},ye.convertToDataIdsForAdd=function(e,t){var r=this.convertToDataIdsForUpdate(e,t);return r.pop(),r},ye.convertPathToUrl=function(e){for(var t=e.split("/"),r=t.length-1;0<r;r--)t[r]&&t[r].endsWith("s")&&(t[r]=t[r].substr(0,t[r].length-1).toLowerCase());return t.join("/")},ye.trimTrailingS=function(e){return e.substr(0,e.length-1)},ye.convertPathsToNodeCodes=function(e){var t=[];return!e||e.length<1||e.filter(function(e){return!!e&&-1===e.indexOf(":")}).forEach(function(e){t.push(e)}),t},ye.convertPathsToIds=function(e){var t=[];return!e||e.length<1||e.filter(function(e){return!!e&&-1!==e.indexOf(":")}).forEach(function(e){t.push(e.split(":")[1])}),t},ye);function ye(){}var le=(Object.defineProperty(de.prototype,"restProxy",{get:function(){return this.repository.restService.proxy},enumerable:!0,configurable:!0}),de.prototype.getList=function(e,t,r,n){var p=this;0!==r&&(r=r||this.repository.entityCollection.pageSize,n=n||this.repository.entityCollection.pageIndex);var o=this.buildEntityFilter(e,t,r,n),i=this.restService.buildRequestInfo();return this.restProxy.extendQuery(o,i).pipe(l.map(function(e){var t=e.returnValue,r=t.result,n=[];r.forEach(function(e){var t=p.repository.buildEntity(e);b.appendInitialData(t,e),n.push(t)});var o=t.pagination;if(o&&0<Object.keys(o).length){var i=o.pageSize,a=o.pageIndex,s=o.totalCount;p.repository.entityCollection.updatePaginationInfoByPath("/",{pageIndex:a,pageSize:i,totalCount:s})}else p.repository.entityCollection.updatePaginationInfoByPath("/",{pageIndex:1,pageSize:0,totalCount:n.length});return p.repository.entityCollection.loadEntities(n),n}))},de.prototype.filter=function(e,t,r,n){var p=this;0!==r&&(r=r||this.repository.entityCollection.pageSize,n=n||this.repository.entityCollection.pageIndex);var o=this.buildEntityFilter(e,t,r,n),i=this.restService.buildRequestInfo();return this.restProxy.filter(o,i).pipe(l.map(function(e){var t=e.returnValue,r=t.result,n=[];r.forEach(function(e){var t=p.repository.buildEntity(e);b.appendInitialData(t,e),n.push(t)});var o=t.pagination;if(o&&0<Object.keys(o).length){var i=o.pageSize,a=o.pageIndex,s=o.totalCount;p.repository.entityCollection.updatePaginationInfoByPath("/",{pageIndex:a,pageSize:i,totalCount:s})}else p.repository.entityCollection.updatePaginationInfoByPath("/",{pageIndex:1,pageSize:0,totalCount:n.length});return p.repository.entityCollection.loadEntities(n),n}))},de.prototype.buildEntityFilter=function(e,t,r,n){return e||t||r||n?(e&&0<e.length&&(e[e.length-1].Relation=0),{FilterConditions:e,SortConditions:t,IsUsePagination:0!==r,Pagination:{PageIndex:n,PageSize:r,PageCount:0,TotalCount:0}}):null},de.prototype.getById=function(e){var n=this,t=this.restService.buildRequestInfo();return this.restService.extendRetrieve(e,t).pipe(l.map(function(e){var t=e.returnValue,r=n.repository.buildEntity(t);return n.repository.entityCollection.loadEntities([r]),r}))},de.prototype.getPagedById=function(o){var i=this,e=this.restService.buildRequestInfo(),t=this.repository.entityCollection.getPaginationConfigByPath("/"),r=this.buildChildPagination(t),n=this.buildRetrieveParam(r);return this.restService.serviceRetrieve(o,n,e).pipe(l.map(function(e){var t=e.dataResult,r=e.paginations;i.updatePagination(r);var n=i.repository.entityCollection.getEntityById(o);return i.reloadEntityData(n,t),n}))},de.prototype.queryChild=function(s,e,t,r,n){var p=this,o=this.restService.buildRequestInfo(),u=he.convertPathsToNodeCodes(s),i=u.map(function(e){return e.substring(0,e.length-1)}),a=he.convertPathsToIds(s),c=B({nodeCodes:i,ids:a,pagination:{pageIndex:e,pageSize:t}},o),h=u[u.length-1];return h=h.substring(0,h.length-1),this.restService.queryChild(c).pipe(l.map(function(e){console.log(e);var t=e.returnValue;if(!t)return null;var r=t.result,n=void 0===r?[]:r,o=t.pagination,i=void 0===o?{}:o,a=[];n.forEach(function(e){var t=new(I.FieldMetadataUtil.getNgList(p.repository.entityType)[u[u.length-1]].type)(e);b.appendInitialData(t,e),a.push(t)}),u=u.map(function(e){return e.charAt(0).toLocaleLowerCase()+e.substr(1)}),p.repository.entityCollection.resetEntities(s,a),p.repository.entityCollection.setPaginationConfigByPath("/"+h,i)}))},de.prototype.buildChildPagination=function(r){var n={};return Object.keys(r).forEach(function(e){var t=r[e];"object"==typeof t&&(n[e]=t)}),n},de.prototype.updatePagination=function(t){var r=this;t&&Object.keys(t).forEach(function(e){r.repository.entityCollection.setPaginationConfigByPath("/"+e,t[e])})},de.prototype.buildRetrieveParam=function(n){var e={};if(n&&0<Object.keys(n).length){var o=[];Object.keys(n).forEach(function(e){var t=n[e],r={};r[e]={pagination:{pageSize:t.pageSize||0,pageIndex:1}},o.push(r)}),e.filters=o}return e},de.prototype.editById=function(n){var o=this;if(!this.repository.entityCollection.getEntityById(n))return f.of(null);var e=ue.buildRequestInfo(this.repository);return this.restProxy.edit(n,e).pipe(l.map(function(e){var t=e.returnValue.data,r=o.repository.entityCollection.getEntityById(n);return r&&t&&o.reloadEntityData(r,t),r}))},de.prototype.updateById=function(n){var o=this;if(!this.repository.entityCollection.getEntityById(n))return f.of(null);var e=this.restService.buildRequestInfo();return this.restService.extendRetrieve(n,e).pipe(l.map(function(e){var t=e.returnValue,r=o.repository.entityCollection.getEntityById(n);return o.reloadEntityData(r,t),r}))},de.prototype.reloadEntityData=function(e,t){e&&(this.appContext.changeDetectionController.detach(),e.load(t),e.changes.splice(0,e.changes.length),this.appContext.changeDetectionController.reattach())},de.prototype.create=function(e){var n=this,t=this.restService.buildRequestInfo();return this.restService.create(e,t).pipe(l.map(function(e){var t=e.returnValue,r=n.repository.buildEntity(t);return b.appendInitialData(r,t),n.repository.entityCollection.loadEntities([r]),r}))},de.prototype.append=function(e){var n=this,t=this.restService.buildRequestInfo();return this.restService.create(e,t).pipe(l.map(function(e){var t=e.returnValue,r=n.repository.buildEntity(t);return n.repository.entityCollection.addEntity(r),r}))},de.prototype.insert=function(n,e){var o=this,t=this.buildRequestInfo();return this.restProxy.create(e,t).pipe(l.map(function(e){var t=e.returnValue,r=o.repository.buildEntity(t);return o.repository.entityCollection.insertEntity(r,n),r}))},de.prototype.appendByPath=function(r){var n=this,e=this.restService.buildRequestInfo();return this.restService.createByPath(r,e).pipe(l.map(function(e){var t=e.returnValue;return n.repository.entityManager.appendEntityByPath(r,t,t)}))},de.prototype.insertByPath=function(r,n){var o=this,e=this.buildRequestInfo();return this.restProxy.createByPath(r,e).pipe(l.map(function(e){var t=e.returnValue;return o.repository.entityManager.insertEntityByPath(r,t,t,n)}))},de.prototype.removeById=function(e,t){var r=this;t=t===undefined||t;var n=ue.buildRequestInfo(this.repository);return t?this.restProxy.deleteAndSave(e,n).pipe(l.switchMap(function(){return r.repository.entityCollection.removeEntityById(e),f.of(!0)})):this.restService.extendDelete(e,n).pipe(l.switchMap(function(){return r.repository.entityCollection.removeEntityById(e),r.repository.dataChangeHistory.addChange({dataId:e,changeType:I.DataChangeType.Delete}),f.of(!0)}))},de.prototype.removeAndSaveById=function(e){var t=this,r=ue.buildRequestInfo(this.repository);return this.restProxy.deleteAndSave(e,r).pipe(l.switchMap(function(){return t.repository.entityCollection.removeEntityById(e),f.of(!0)}))},de.prototype.removeByIds=function(r,e){var n=this;e=e===undefined||e;var t=this.restService.buildRequestInfo();return this.restService.extendBatchDelete(r,t).pipe(l.switchMap(function(){if(e)return n.applyChangesByIdArray(r).pipe(l.tap(function(e){e&&n.repository.entityCollection.removeEntities(function(e){return n.checkEntityValueExists(e,r)})}));if(n.repository.entityCollection.removeEntities(function(e){return n.checkEntityValueExists(e,r)}),r&&0<r.length){var t=[];r.forEach(function(e){t.push({dataId:e,changeType:I.DataChangeType.Delete})}),n.repository.dataChangeHistory.addChanges(t)}return f.of(!0)}))},de.prototype.checkEntityValueExists=function(e,t){for(var r=!1,n=0;n<t.length;n++)if(e.primaryValue===t[n]){r=!0;break}return r},de.prototype.removeByPath=function(e,t){var r=this,n=this.restService.buildRequestInfo();return this.restService.extendDeletByPath(e,t,n).pipe(l.map(function(){return r.repository.entityManager.removeEntityByPath(e,t),r.repository.dataChangeHistory.addChange({fpath:e,dataId:t,changeType:I.DataChangeType.Delete}),!0}))},de.prototype.batchRemoveByPath=function(t,r){var n=this,e=this.restService.buildRequestInfo();return this.restService.batchDeleteByPath(t,r,e).pipe(l.map(function(){var e=r.split(",");return 0<e.length&&e.forEach(function(e){n.repository.entityManager.removeEntityByPath(t,e),n.repository.dataChangeHistory.addChange({fPath:t,dataId:e,changeType:I.DataChangeType.Delete})}),!0}))},de.prototype.updateChangesById=function(e){var t=this,r=this.repository.entityCollection.getEntityById(e);if(!r.changes)return f.of(!0);if(0===r.changes.length)return f.of(!0);var n=this.repository.entityManager.buildEntityChangeDetailById(e),o=this.restService.buildRequestInfo();return this.restService.update(n,o).pipe(l.tap(function(){t.repository.entityManager.clearEntityChangesById(e)}),l.map(function(){return!0}))},de.prototype.updateChangesByPath=function(e,t){throw new Error("Not Implement")},de.prototype.updateAllChanges=function(){var r=this,n=[],e=this.repository.entityCollection.toArray();return 0===e.length?f.of(!0):(e.forEach(function(e){var t=r.updateChangesById(e.primaryValue);n.push(t)}),f.zip.apply(void 0,D(n)).pipe(l.map(function(){return!0})))},de.prototype.applyChanges=function(){var e=this,t=this.restService.buildRequestInfo();return this.restService.save(t).pipe(l.tap(function(){e.repository.entityManager.clearAllEntityChanges(),e.repository.dataChangeHistory.clear()}),l.map(function(){return!0}))},de.prototype.applyChangesByIdArray=function(e){var t=this,r=this.restService.buildRequestInfo();return this.restService.save(r).pipe(l.tap(function(){t.repository.entityManager.clearEntityChangesByArray(e),t.repository.dataChangeHistory.clearByIds(e)}),l.map(function(){return!0}))},de.prototype.applyChangesById=function(e){var t=this,r=this.restService.buildRequestInfo();return this.restService.save(r).pipe(l.tap(function(){t.repository.entityManager.clearEntityChangesById(e),t.repository.dataChangeHistory.clearByIds([e])}),l.map(function(){return!0}))},de.prototype.cancelChanges=function(e){var t=this;return this.restService.cancel(e).pipe(l.tap(function(){t.repository.entityManager.clearAllEntityChanges(),t.repository.dataChangeHistory.clear()}),l.map(function(){return!0}))},de.prototype.batchAppendByPath=function(o,e){var i=this,t=this.buildRequestInfo();return this.restProxy.batchAppendByPath(o,e,t).pipe(l.map(function(e){var t=e.returnValue,r=i.repository.entityManager.createEntitiesByPath(o,t),n=o.split("/").filter(function(e){return e});return i.repository.entityManager.appendEntitiesByPath(n,r),r}))},de.prototype.buildRequestInfo=function(){return{dataChange:this.repository.entityManager.buildAllEntityChangeDetails(),variableChange:this.repository.variableManager.buildChangeDetail()}},de);function de(e,t){this.injector=e,this.repository=t;var r=e.get(g),n=e.get(a.HttpClient),o=e.get(p)+"/"+this.repository.apiUri,i=e.get(I.EventBus);this.restService=new qe(n,o,r,this.repository,i),this.appContext=e.get(I.AppContext)}var fe=(ge.handleMessage=function(e,t){var r={ns:t.get(I.NAMESPACE,null),appContext:t.get(I.AppContext,null)},n=this.buildBackEndMessages(e),o=new I.BackEndMessage.Message(n,r),i=t.get(I.BACK_END_MESSAGE_HANDLER_TOKEN,null);i&&i.handle(o)},ge.isBackEndMessageHandlerExist=function(e){return!!e.get(I.BACK_END_MESSAGE_HANDLER_TOKEN,null)},ge.buildBackEndMessages=function(e){if(!e||e.length<1||!Array.isArray(e))return null;var r=[];return e.forEach(function(e){var t={level:e.level,message:e.message};e.hasOwnProperty("location")&&e.location&&(t.location={nodeCode:e.location.nodeCode,rows:e.location.dataIds,columns:e.location.columnNames}),r.push(t)}),r},ge);function ge(){}var ve=(Ie.prototype.onResponse=function(e,t){e&&e.innerDataChange&&!0!==t&&this.context.handleDataChangeDetails(e.innerDataChange);var r=A.parseBackEndMessage(e);return fe.handleMessage(r,this.context.getInjector()),this.context.clearAllEntityChanges(),e&&e.hasOwnProperty("returnValue")?e.returnValue:e},Ie.prototype.onError=function(e,t,r){var n,o,i=this.context.appContext.getFormAppContext(),a=i.ApplicationId,s=window.DEVKIT_LOADING_SERVICE,p=A.parseBackEndError(e);if(fe.handleMessage(p,this.context.getInjector()),s&&s instanceof Array&&0<s.length)try{for(var u=P(s),c=u.next();!c.done;c=u.next()){var h=c.value;"function"==typeof h.clearAll&&h.clearAll()}}catch(d){n={error:d}}finally{try{c&&!c.done&&(o=u["return"])&&o.call(u)}finally{if(n)throw n.error}}if(t)return f.throwError(e);var y=this.context.restService.eventBus,l=window[a]||{};return y&&l.isExceptionHandlerExist&&!A.isReported401Error(e)?(e&&e.error&&e.error.extensionMessage&&fe.isBackEndMessageHandlerExist(this.context.getInjector())||y.post("Exception","","onException",e,i),r?f.of(null):f.EMPTY):f.throwError(e)},Ie.prototype.extendHeaders=function(t,r){var n=this;return this.context.restService.sessionService.getBeSessionId().pipe(l.switchMap(function(e){return t=n.context.restService.sessionService.extendRequestHeaders(t,r),f.of(t)}))},Ie.prototype.extendUrl=function(e,t){if(!t)return e;for(var r in t)if(t.hasOwnProperty(r)){var n=JSON.stringify(t[r]);e=-1===e.indexOf("?")?e+"?"+r+"="+n:e+"&"+r+"="+n}return e},Ie.prototype.extendBody=function(t){var r=this;return!t||"object"!=typeof t||Object.keys(t).length<1||(Object.keys(t).forEach(function(e){"requestInfo"===e&&(t.requestInfo=r.context.restService.buildRequestInfo())}),1===Object.keys(t).length&&(t=Object.values(t)[0])),t},Ie.prototype.parseHeaders=function(e){var t="BEFSessionID";e.headers&&e.headers.has(t)&&this.context.restService.sessionService.setBeSessionId(e.headers.get(t))},Ie);function Ie(e){this.context=e}var Se,be=(x(Ce,Se=ee),Object.defineProperty(Ce.prototype,"proxy",{get:function(){return this.befProxy},set:function(e){this.befProxy=e,this.befProxy.setProxyExtend(new ve(this))},enumerable:!0,configurable:!0}),Ce.prototype.getEntities=function(e,t,r,n){return this.dataService.getList(e,t,r,n)},Ce.prototype.filter=function(e,t,r,n){return void 0===e&&(e=[]),void 0===t&&(t=[]),this.dataService.filter(e,t,r,n)},Ce.prototype.getPagedById=function(e){return this.dataService.getPagedById(e)},Ce.prototype.queryChild=function(e,t,r,n,o){return this.dataService.queryChild(e,t,r,n,o)},Ce.prototype.getEntityById=function(e){return this.dataService.getById(e)},Ce.prototype.updateEntityById=function(e){return this.dataService.updateById(e)},Ce.prototype.editEntityById=function(e){return this.dataService.editById(e)},Ce.prototype.createEntity=function(e){return this.dataService.create(e)},Ce.prototype.appendEntity=function(e){return this.dataService.append(e)},Ce.prototype.insert=function(e,t){return this.dataService.insert(e,t)},Ce.prototype.insertByPath=function(e,t){return this.dataService.insertByPath(e,t)},Ce.prototype.appendEntityByPath=function(e){return this.dataService.appendByPath(e)},Ce.prototype.removeEntityById=function(e,t){return this.dataService.removeById(e,t)},Ce.prototype.removeEntityAndSaveById=function(e){return this.dataService.removeAndSaveById(e)},Ce.prototype.removeEntityByPath=function(e,t){return this.dataService.removeByPath(e,t)},Ce.prototype.batchRemoveByPath=function(e,t){return this.dataService.batchRemoveByPath(e,t)},Ce.prototype.saveEntityById=function(e){return this.dataService.applyChangesById(e)},Ce.prototype.saveEntities=function(){return this.dataService.applyChanges()},Ce.prototype.cancelEntityChanges=function(){return this.dataService.cancelChanges()},Ce.prototype.batchAppendByPath=function(e,t){return this.dataService.batchAppendByPath(e,t)},Ce.prototype.reset=function(){this.entityManager.reset(),this.variableManager.reset(),this.restService.sessionService.clearBeSessionId()},Ce.prototype.getInjector=function(){return this.injector},Ce.decorators=[{type:i.Injectable}],Ce.ctorParameters=function(){return[{type:i.Injector}]},Ce);function Ce(e){var t=Se.call(this)||this;t.injector=e,t.entityManager=new ne(t.entityCollection),t.appContext=t.injector.get(I.AppContext);var r=I.MetadataUtil.getPropsMetadatasByName(t.constructor,Z);return t.variableManager=new se(t.appContext,r,t.injector),t.dataService=new le(t.injector,t),t.serverUri=e.get(p),t}var me=(Ee.prototype.extendUri=function(e){return this.serverUri+"/"+e},Ee.decorators=[{type:i.Injectable}],Ee.ctorParameters=function(){return[{type:String,decorators:[{type:i.Inject,args:[p]}]}]},Ee);function Ee(e){this.serverUri=e}var xe="DELETE",Be="PUT",Pe="POST",Re=(De.prototype.setBaseUri=function(e){this.baseUri=e},De.prototype.setProxyExtend=function(e){this.proxyExtend=e},De.prototype.query=function(e){var t=this.baseUri;return e&&(t=t+"?entityFilter="+JSON.stringify(e)),this.request(t,"GET")},De.prototype.extendQuery=function(e,t){var r=this.baseUri+"/extension/query";e&&(r=r+"?entityFilter="+JSON.stringify(e));var n=t,o=this.addBodyToOptions({},n);return this.request(r,Be,null,o,!1)},De.prototype.filter=function(e,t){var r=this.baseUri+"/extension/filter",n={requestInfo:t};e&&(n={entityFilter:e,requestInfo:t});var o=this.addBodyToOptions({},n);return this.request(r,Pe,null,o,!1)},De.prototype.retrieve=function(e){var t=this.baseUri+"/"+e;return this.request(t,"GET")},De.prototype.serviceRetrieve=function(e,t,r){var n=this.baseUri+"/service/retrieve/"+e,o={body:{retrieveParam:t,requestInfo:r}};return this.request(n,Be,null,o)},De.prototype.queryChild=function(e){var t=this.baseUri+"/service/querychild",r={body:e};return this.request(t,Be,null,r)},De.prototype.extendRetrieve=function(e,t){var r=this.baseUri+"/extension/retrieve/"+e,n=t,o=this.addBodyToOptions({},n);return this.request(r,Be,null,o)},De.prototype.edit=function(e,t){var r=this.baseUri+"/service/edit/"+e,n=t,o=this.addBodyToOptions({},n);return this.request(r,Be,null,o)},De.prototype.create=function(e,t){var r={defaultValue:e,requestInfo:t},n=this.addBodyToOptions({},r);return this.request(this.baseUri,Pe,null,n)},De.prototype.createByPath=function(e,t){var r=he.convertPathToUrl(e),n=""+this.baseUri+r,o=t,i=this.addBodyToOptions({},o);return this.request(n,Pe,null,i)},De.prototype.update=function(e,t){var r={changeDetail:e,requestInfo:t},n=this.addBodyToOptions({},r);return this.request(this.baseUri,"PATCH",null,n)},De.prototype.save=function(e){var t=e,r=this.addBodyToOptions({},t);return this.request(this.baseUri,Be,null,r)},De.prototype["delete"]=function(e){var t=this.baseUri+"/"+e;return this.request(t,xe)},De.prototype.deleteAndSave=function(e,t){var r=this.baseUri+"/service/delete/"+e,n=t,o=this.addBodyToOptions({},n);return this.request(r,Be,null,o)},De.prototype.extendDelete=function(e,t){var r=this.baseUri+"/extension/delete/"+e,n=t,o=this.addBodyToOptions({},n);return this.request(r,Be,null,o)},De.prototype.deletByPath=function(e,t){var r=he.convertPathToUrl(e),n=""+this.baseUri+r+"/"+t;return this.request(n,xe)},De.prototype.extendDeletByPath=function(e,t,r){var n=he.convertPathToUrl(e),o=this.baseUri+"/extension"+n+"/"+t,i=r,a=this.addBodyToOptions({},i);return this.request(o,Be,null,a)},De.prototype.batchDeleteByPath=function(e,t,r){var n=he.convertPathToUrl(e);if(n.split("/").length<3)throw Error("根据path删除实体数据出错了。传入的path["+e+"]格式不对");var o=this.baseUri+"/extension"+n+"/batch",i={ids:t.split(","),requestInfo:r},a=this.addBodyToOptions({},i);return this.request(o,Be,null,a)},De.prototype.batchDelete=function(e){var t={ids:e.join(",")};return this.request(this.baseUri,xe,t)},De.prototype.extendBatchDelete=function(e,t){var r=this.baseUri+"/extension/batchdelete",n={ids:e.join(",")},o=t,i=this.addBodyToOptions({},o);return this.request(r,Be,n,i)},De.prototype.cancel=function(e){var t=this.baseUri+"/service/cancel";return this.request(t,Pe,null,null,!1,!1,!1,e)},De.prototype.batchAppendByPath=function(e,t,r){var n=he.convertPathToUrl(e),o=""+this.baseUri+n+"/batch",i={requestInfo:r,retrieveDefaultParam:{defaultValues:t}},a=this.addBodyToOptions({},i);return this.request(o,Pe,null,a)},De.prototype.request=function(t,r,e,n,o,i,a,s){var p=this;n=n||{},void 0!==o&&"boolean"==typeof o||(o=!1),void 0!==i&&"boolean"==typeof i||(i=!1),e&&(n.params=e),n.headers=q.convertToHeaders(n.headers);var u=this.hasRequestInfo(n);return n&&n.body&&n.body.hasOwnProperty("RequestInfo")&&(n.body.requestInfo=n.body.RequestInfo,delete n.body.RequestInfo),this.proxyExtend.extendHeaders(n.headers,s).pipe(l.switchMap(function(e){return n.headers=q.toJson(e),n.observe="response",p.httpService.request(r,t,n)}),l.tap(function(e){return p.proxyExtend.parseHeaders(e)}),l.map(function(e){return e.body}),l.map(function(e){return u?(p.proxyExtend.onResponse(e,a),e):p.unWrapResponseInfo(e)}),l.catchError(function(e){return p.proxyExtend.onError(e,o,i)}))},De.prototype.invoke=function(t,r,n){var o=this;return n.params&&(t=this.proxyExtend.extendUrl(t,n.params),n.params=null),n.body&&(n.body=this.proxyExtend.extendBody(n.body)),n.headers=q.convertToHeaders(n.headers),this.proxyExtend.extendHeaders(n.headers).pipe(l.switchMap(function(e){return n.headers=q.toJson(e),n.observe="response",o.httpService.request(r,t,n).pipe(l.tap(function(e){return o.proxyExtend.parseHeaders(e)}),l.map(function(e){return e.body}),l.map(function(e){return o.proxyExtend.onResponse(e)}),l.catchError(function(e){return o.proxyExtend.onError(e,!1,!1)}))}))},De.prototype.addBodyToOptions=function(e,t){return e=e||{},Object.assign(e,{body:t})},De.prototype.buildParams=function(e){return w.buildParams(e)},De.prototype.hasRequestInfo=function(e){return T.hasRequestInfo(e)||T.hasRequestInfoWithR(e)},De.prototype.unWrapResponseInfo=function(e){return A.unWrapResponseInfo(e)},De.decorators=[{type:i.Injectable}],De.ctorParameters=function(){return[{type:a.HttpClient},{type:me}]},De);function De(e,t){this.httpClient=e,this.uriService=t,this.httpService=new H(this.httpClient)}var qe=(Object.defineProperty(Oe.prototype,"proxy",{get:function(){return this.repository.proxy?this.repository.proxy:this.createBefProxy()},enumerable:!0,configurable:!0}),Oe.prototype.createBefProxy=function(){var e=this.repository.serverUri,t=new me(e),r=new Re(this.httpClient,t);r.setBaseUri(this.baseUri);var n=new ve(this.repository);return r.setProxyExtend(n),r},Oe.prototype.query=function(e){return this.proxy.query(e)},Oe.prototype.extendQuery=function(e,t){return this.proxy.extendQuery(e,t)},Oe.prototype.serviceRetrieve=function(e,t,r){return this.proxy.serviceRetrieve(e,t,r)},Oe.prototype.queryChild=function(e){return this.proxy.queryChild(e)},Oe.prototype.retrieve=function(e){return this.proxy.retrieve(e)},Oe.prototype.extendRetrieve=function(e,t){return this.proxy.extendRetrieve(e,t)},Oe.prototype.create=function(e,t){return this.proxy.create(e,t)},Oe.prototype.createByPath=function(e,t){return this.proxy.createByPath(e,t)},Oe.prototype.update=function(e,t){return this.proxy.update(e,t)},Oe.prototype.save=function(e){return this.proxy.save(e)},Oe.prototype["delete"]=function(e){return this.proxy["delete"](e)},Oe.prototype.extendDelete=function(e,t){return this.proxy.extendDelete(e,t)},Oe.prototype.deletByPath=function(e,t){return this.proxy.deletByPath(e,t)},Oe.prototype.extendDeletByPath=function(e,t,r){return this.proxy.extendDeletByPath(e,t,r)},Oe.prototype.batchDeleteByPath=function(e,t,r){return this.proxy.batchDeleteByPath(e,t,r)},Oe.prototype.batchDelete=function(e){return this.proxy.batchDelete(e)},Oe.prototype.extendBatchDelete=function(e,t){return this.proxy.extendBatchDelete(e,t)},Oe.prototype.cancel=function(e){return this.proxy.cancel(e)},Oe.prototype.request=function(e,t,r,n,o,i,a){return this.innerRequest(e,t,r,n,o,i,a,!1)},Oe.prototype.invoke=function(e,t,r,n,o,i,a){if(n&&n.body&&n.body.RequestInfo)throw new Error("请使用requestInfo提交变更");return this.innerRequest(e,t,r,n,o,i,a,!0)},Oe.prototype.innerRequest=function(t,r,e,n,o,i,a,s){var p=this;n=n||{};var u="BEFSessionID";void 0!==o&&"boolean"==typeof o||(o=!1),void 0!==i&&"boolean"==typeof i||(i=!1),void 0!==s&&"boolean"==typeof s||(s=!1);var c=s?this.existRequestInfo:this.hasRequestInfo;e&&(n.params=e);var h=c(n),y=q.convertToHeaders(n.headers);return this.sessionService.getBeSessionId().pipe(l.switchMap(function(e){return y=p.sessionService.extendRequestHeaders(y),n.headers=q.toJson(y),n.observe="response",p.httpService.request(r,t,n)}),l.tap(function(e){e.headers&&e.headers.has(u)&&p.sessionService.setBeSessionId(e.headers.get(u))}),l.map(function(e){return e.body}),l.map(function(e){var t=A.parseBackEndMessage(e);return fe.handleMessage(t,p.repository.getInjector()),p.handleReponseInfo(e,h,a)}),l.catchError(function(e){var t=A.parseBackEndError(e);return fe.handleMessage(t,p.repository.getInjector()),p.handleErrors(e,o,i)}))},Oe.prototype.handleReponseInfo=function(e,t,r){return t?(e&&e.innerDataChange&&!0!==r&&this.repository.handleDataChangeDetails(e.innerDataChange),this.repository.clearAllEntityChanges(),e):this.unWrapResponseInfo(e)},Oe.prototype.handleErrors=function(e,t,r){if(this.clearLoading(),t)return f.throwError(e);var n=this.repository.appContext.getFormAppContext(),o=n.ApplicationId,i=!!(window[o]||{}).isExceptionHandlerExist;return this.eventBus&&i&&!A.isReported401Error(e)?(e&&e.error&&e.error.extensionMessage&&fe.isBackEndMessageHandlerExist(this.repository.getInjector())||this.eventBus.post("Exception","","onException",e,n),r?f.of(null):f.EMPTY):f.throwError(e)},Oe.prototype.clearLoading=function(){var e,t;if(!1!==(window.DEVKIT_LOADING_SERVICE&&window.DEVKIT_LOADING_SERVICE instanceof Array&&0<window.DEVKIT_LOADING_SERVICE.length||!1)){var r=window.DEVKIT_LOADING_SERVICE;try{for(var n=P(r),o=n.next();!o.done;o=n.next()){var i=o.value;"function"==typeof i.clearAll&&i.clearAll()}}catch(a){e={error:a}}finally{try{o&&!o.done&&(t=n["return"])&&t.call(n)}finally{if(e)throw e.error}}}},Oe.prototype.unWrapResponseInfo=function(e){return A.unWrapResponseInfo(e)},Oe.prototype.hasRequestInfo=function(e){return T.hasRequestInfoWithR(e)},Oe.prototype.existRequestInfo=function(e){return T.hasRequestInfo(e)},Oe.prototype.buildParams=function(e){return w.buildParams(e)},Oe.prototype.buildBodyWithRequestInfo=function(e){return T.buildBodyWithRequestInfo(e,this.repository)},Oe.prototype.buildRequestInfo=function(){return T.buildRequestInfo(this.repository)},Oe.decorators=[{type:i.Injectable}],Oe.ctorParameters=function(){return[{type:a.HttpClient},{type:String},{type:g},{type:be},{type:I.EventBus}]},Oe);function Oe(e,t,r,n,o){this.httpClient=e,this.httpService=new H(this.httpClient),this.baseUri=t;var i=n.getInjector();this.sessionService=new Q(e,t,r,i),this.repository=n,this.eventBus=o}var we=(Me.prototype.getData=function(e,t){var r=e.split(".")[0],n=e.split(".")[1];return t=t||{},!0===this.ifEnableExtendLoadMethod(e)?this.extendGetHelpData(n,r,t):this.getHelpData(n,r,t)},Me.prototype.saveUserSettings=function(e){return this.befRepository.restService.invoke("/api/runtime/bcc/v1.0/datagrid/settings","POST",null,{body:e},!1)},Me.prototype.getUserSettings=function(e){var t="/api/runtime/bcc/v1.0/datagrid/settings/"+e;return this.befRepository.restService.invoke(t,"GET",null,null,!1)},Me.prototype.ifEnableExtendLoadMethod=function(e){if(this.context&&this.context.hasOwnProperty("enableExtendLoadMethod"))return this.context.enableExtendLoadMethod;var t=!1;if(this.frameContext){var r=e+"@"+this.frameContext.repository.apiUri;t=this.frameContext.getParam(r)}return t},Me.prototype.getHelpData=function(e,t,r){var n=this,o=this.befRepository.restService.baseUri+"/elementhelps/"+e;return this.befRepository.updateDataAndVariableChanges().pipe(l.switchMap(function(){return n.befRepository.restService.invoke(o,"GET",{nodeCode:t,queryParam:JSON.stringify(r)},null,!1)}))},Me.prototype.extendGetHelpData=function(e,t,r){var n=this.befRepository.restService.baseUri+"/extension/elementhelps",o={body:{labelId:e,nodeCode:t,queryParam:r,requestInfo:this.befRepository.restService.buildRequestInfo()}};return this.befRepository.restService.invoke(n,"PUT",null,o,!1,!0,!0).pipe(l.map(function(e){return e&&e.returnValue||null}))},Me.prototype.convert2TreeDataWithPathCode=function(n,t,r){var o=this;void 0===t&&(t=1),void 0===r&&(r="01");var e=n.filter(function(e){return e.layer===t&&e.pathcode===r});if(1<t&&(e=n.filter(function(e){return e.layer===t&&e.pathcode.substr(0,2*(t-1))===r})),e.length){var i=e.map(function(e){return{data:e,children:[]}});return i.forEach(function(e){var t,r=o.convert2TreeDataWithPathCode(n,e.data.layer+1,e.data.pathcode);(t=e.children).push.apply(t,D(r))}),i}},Me.decorators=[{type:i.Injectable}],Me.ctorParameters=function(){return[{type:I.Repository},{type:I.FrameContext,decorators:[{type:i.Optional}]}]},Me);function Me(e,t){this.frameContext=t,this.befRepository=e}var Te=(je.prototype.createSession=function(e){var t=this.sessionService.getUserSessionId();return t?this.befRepository.restService.invoke(e,"POST",null,{headers:new a.HttpHeaders({SessionId:t}),responseType:"text"},!1).pipe(l.switchMap(function(e){return f.of({status:!0,payload:e})})):f.of({status:!1,payload:"用户登录信息已过期,请重新登录"})},je.prototype.getData=function(e,t){var r=this,n={};t.condition&&(n=t.condition),"/"===e[e.length-1]&&(e=e.substr(0,e.length-1));var o=e+"/extension/query",i=e+"/service/createsession";if(n){var a=JSON.stringify(n);o=o+"?entityFilter="+a}return this.createSession(i).pipe(l.switchMap(function(e){if(e.status)return e.payload,r.befRepository.restService.invoke(o,"PUT",null,{},!1);throw new Error(e.payload)}),s.map(function(e){var t=e.returnValue,r={items:t.result};return t.pagination?Object.assign({},r,{total:t.pagination.totalCount,pageInfo:{pageSize:t.pagination.pageSize,pageIndex:t.pagination.pageIndex,enablePager:!0}}):r}))},je.decorators=[{type:i.Injectable}],je.ctorParameters=function(){return[{type:I.Repository},{type:g}]},je);function je(e,t){this.sessionService=t,this.befRepository=e}var Ae=(Ue.isExistUnsaveData=function(e){var t=!1;if(!e||!e.entityCollection)throw"Current Object is null or it's entityCollection is null.";var r=e.entityCollection.toArray();if(e.dataChangeHistory.isChanged())return!0;for(var n=0;n<r.length;n++)if(0<r[n].changes.length){t=!0;break}return t},Ue);function Ue(){}var He=(ke.prototype.toString=function(){return this.url},ke);function ke(e,t){void 0===t&&(t=null);var r=this;this.url=e,this.paths=t,this.paths&&Object.keys(t).forEach(function(e){-1!==r.url.indexOf("{"+e+"}")&&(r.url=r.url.replace("{"+e+"}",""+t[e]))})}var Ve=(Ne.prototype.getData=function(e,t,r){void 0===t&&(t={}),void 0===r&&(r="GET");var n=new a.HttpHeaders({"content-type":"application/json"});return"get"!==r.toLowerCase()?this.befRest.restService.invoke(e,r,null,{headers:n,body:t}):this.befRest.restService.invoke(e,r,t,{headers:n})},Ne.decorators=[{type:i.Injectable}],Ne.ctorParameters=function(){return[{type:I.Repository}]},Ne);function Ne(e){this.befRest=e}var Fe=(_e.prototype.getData=function(e,t,r){void 0===t&&(t={}),void 0===r&&(r="GET");var n=new a.HttpHeaders({"content-type":"application/json"});return this.befRest.restService.invoke(e,r,t,{headers:n})},_e.decorators=[{type:i.Injectable}],_e.ctorParameters=function(){return[{type:I.Repository}]},_e);function _e(e){this.befRest=e}e.VERSION="ver.",e.ChangeDetailType=S,e.BE_SERVER_URI_TOKEN=p,e.BE_SESSION_HANDLING_STRATEGY_TOKEN=u,e.BefChangeBuilder=c,e.BefChangeHandler=y,e.BefSessionService=Q,e.BefRestService=qe,e.BefProxy=Re,e.BefLookupRestService=we,e.BefLookupDefaultService=Te,e.BefRepository=be,e.FrameworkSessionService=g,e.NG_VARIABLE=Z,e.NgVariable=$,e.BefRepositoryUtil=Ae,e.BefDataPathUtil=he,e.UriService=me,e.Uri=He,e.DefaultComboHttpService=Ve,e.DefaultDynamiControlGroupHttpService=Fe,e.ɵa=ee,Object.defineProperty(e,"__esModule",{value:!0})});
!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports,require("@ecp-caf/caf-common"),require("date-fns"),require("rxjs"),require("rxjs/operators"),require("rxjs/operators/map"),require("@angular/core"),require("@farris/devkit"),require("@angular/common/http")):"function"==typeof define&&define.amd?define("@farris/bef",["exports","@ecp-caf/caf-common","date-fns","rxjs","rxjs/operators","rxjs/operators/map","@angular/core","@farris/devkit","@angular/common/http"],t):t((e.farris=e.farris||{},e.farris.bef={}),e.cafCommon,e.dateFns,e.rxjs,e.rxjs.operators,e.rxjs["operators/map"],e.ng.core,e.devkit,e.ng.common.http)}(this,function(e,t,n,I,l,s,i,S,a){"use strict";var b=(r.Added="Added",r.Modify="Modify",r.Deleted="Deleted",r);function r(){}var p=new i.InjectionToken("@farris/be BE_SERVER_URL"),u=new i.InjectionToken("@farris/be BE_SESSION_HANDLING_STRATEGY_TOKEN"),C=(o.getPropInfo=function(e,t){var r,n,o,i=S.FieldMetadataUtil.getNgFields(e);Object.keys(i).forEach(function(e){e===t&&(r="NgField",n=null,o=i[e])});var a=S.FieldMetadataUtil.getNgObjects(e);Object.keys(a).forEach(function(e){e===t&&(r="NgObject",n=a[e].type,o=a[e])});var s=S.FieldMetadataUtil.getNgList(e);Object.keys(s).forEach(function(e){e===t&&(r="NgList",n=s[e].type,o=s[e])});var p=S.FieldMetadataUtil.getNgDynamic(e);return Object.keys(p).forEach(function(e){e===t&&(r="NgDynamic",n=p[e].type,o=p[e])}),{propType:r,propEntityType:n,propMetadata:o}},o.getPrimaryKey=function(e){var t=S.FieldMetadataUtil.getPrimaryFieldMetadata(e);return t?t.dataField:""},o.isObjectProp=function(e,t){var r=!1,n=S.FieldMetadataUtil.getNgObjects(e);return Object.keys(n).forEach(function(e){e===t&&(r=!0)}),r},o.isDynamicProp=function(e,t){var r=!1,n=S.FieldMetadataUtil.getNgDynamic(e);return Object.keys(n).forEach(function(e){e===t&&(r=!0)}),r},o.appendInitialData=function(e,t){var r=Object.assign({},t);delete r.id,delete r.parentID,e.initialData=r},o);function o(){}var c=(h.prototype.build=function(e){var t=this;return this.changeDetail={ChangeType:b.Modify,ChangeInfo:{DataId:""}},e.forEach(function(e){t.buildChangeDetail(e)}),this.changeDetail},h.prototype.buildChangeDetail=function(l){var d=l.path.concat();this.changeDetail.ChangeInfo.DataId||(this.changeDetail.ChangeInfo.DataId=d[0].split(":")[1]);for(var f=this.changeDetail,g=this.entityType,e=function(e){var t=v.getChangeInfo(f),r=d[e],n=C.getPropInfo(g,r),o=n.propType,i=n.propEntityType,a=n.propMetadata.dataField||r;if("NgField"===o){if(r===C.getPrimaryKey(g))return"continue";if(l.type!==S.ModifyType.ValueChange)throw Error("简单类型的属性上不支持ValueChange类型之外的变更");t[a]=l.value,f=null}else if("NgObject"===o)if(d[e+1].split(":")[1],d[e+1].split(":")[0]){var s=t[a],p=d.slice(0,e+1);s=(y=v.entityCollection.getEntityByPath(p))?y.toJSON(!0):{},t[a]=s,g=f=null}else c=(c=t[a])||{ChangeType:b.Modify,ChangeInfo:{}},t[a]=c,f=c,g=i;else if("NgList"===o){f.ChangeInfo[a]||(f.ChangeInfo[a]=[]);var u=f.ChangeInfo[a];if(e!==d.length-1){var c,h=d[e+1].split(":")[1];return(c=u.find(function(e){return e.ChangeInfo.DataId===h}))||(c=v.createEmptyChangeDetail(b.Modify,h),u.push(c)),f=c,g=i,"continue"}l.type===S.ModifyType.Add||l.type===S.ModifyType.Insert||(l.type,S.ModifyType.Remove),g=f=null}else if("NgDynamic"===o){p=d.slice(0,e+1);var y=v.entityCollection.getEntityByPath(p);t[a]={ChangeType:b.Modify,ChangeInfo:y?y.toJSON(!0):{}},g=f=null}},v=this,t=1;t<d.length&&f;t+=2)e(t)},h.prototype.getChangeInfo=function(e){return e.hasOwnProperty("ChangeInfo")?e.ChangeInfo:e},h.prototype.createEmptyChangeDetail=function(e,t){return{ChangeType:e,ChangeInfo:{DataId:t}}},h);function h(e,t){this.entityType=e,this.entityCollection=t}var y=(d.prototype.handle=function(e,t,r){this.handleChangeDetails(e,t,r)},d.prototype.handleChangeDetails=function(n,o,e){var i=this;e&&e.forEach(function(e){var t=e.ChangeInfo.dataId||e.ChangeInfo.DataId,r=i.getEntityById(o,t);r&&i.handleChangeDetail(n,r,e)})},d.prototype.handleChangeDetail=function(u,c,e){var h=this;if(e&&c&&e.ChangeType===b.Modify){var y=e.ChangeInfo;Object.keys(y).forEach(function(e){var t=C.getPropInfo(u,e),r=t.propType,n=t.propEntityType;if("NgField"===r)c[e]=y[e];else if("NgObject"===r){var o=c[e];if(o.primaryKey){var i=y[e];o.load(i)}else{var a=y[e];h.handleChangeDetail(n,o,a)}}else if("NgList"===r){var s=c[e],p=y[e];h.handleChangeDetails(n,s,p)}})}},d.prototype.getEntityById=function(e,t){return(e instanceof S.EntityCollection?e.getEntityById(t):e.get(t))||null},d);function d(){}var f=(g.prototype.getUserSessionId=function(){return this.sessionService.getUserSessionId()},g.prototype.getCurrentSessionId=function(e){var t;if(this.sessionService)if(e&&e.hasOwnProperty("tabId")){var r=e.tabId;t=this.sessionService.getCurrentSeesionId(r)}else t=this.sessionService.getCurrentSeesionId();return t=t||this.getUserSessionId()},g.decorators=[{type:i.Injectable}],g.ctorParameters=function(){return[{type:t.SessionService,decorators:[{type:i.Optional}]}]},g);function g(e){this.sessionService=e}var v=(m.prototype.getItem=function(e){return this.getAllBeSessions()[e]},m.prototype.setItem=function(e,t){var r=this.getAllBeSessions();r[e]=t,this.setAllBeSessions(r)},m.prototype.removeItem=function(e){var t=this.getAllBeSessions();t[e]&&delete t[e],this.setAllBeSessions(t)},m.prototype.clear=function(e,t){!0===this.isInFramework()?this.removeItemsByFrmSessionId(e):this.removeItem(t)},m.prototype.removeItemsByFrmSessionId=function(t){var r=this.getAllBeSessions();Object.keys(r).forEach(function(e){!0===e.startsWith(t)&&delete r[e]}),this.setAllBeSessions(r)},m.prototype.getAllBeSessions=function(){var e=window.sessionStorage.getItem(this.sessionStorageKey);return e?JSON.parse(e):{}},m.prototype.setAllBeSessions=function(e){var t=JSON.stringify(e);window.sessionStorage.setItem(this.sessionStorageKey,t)},m.prototype.isInFramework=function(){var e=window.location.hash;return!!e&&-1!==e.indexOf("tabId=")},m);function m(){this.sessionStorageKey="BE_SESSION_ID"}var E=function(e,t){return(E=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var r in t)t.hasOwnProperty(r)&&(e[r]=t[r])})(e,t)};function x(e,t){function r(){this.constructor=e}E(e,t),e.prototype=null===t?Object.create(t):(r.prototype=t.prototype,new r)}var B=function(){return(B=Object.assign||function(e){for(var t,r=1,n=arguments.length;r<n;r++)for(var o in t=arguments[r])Object.prototype.hasOwnProperty.call(t,o)&&(e[o]=t[o]);return e}).apply(this,arguments)};function P(e){var t="function"==typeof Symbol&&Symbol.iterator,r=t&&e[t],n=0;if(r)return r.call(e);if(e&&"number"==typeof e.length)return{next:function(){return e&&n>=e.length&&(e=void 0),{value:e&&e[n++],done:!e}}};throw new TypeError(t?"Object is not iterable.":"Symbol.iterator is not defined.")}function R(e,t){var r="function"==typeof Symbol&&e[Symbol.iterator];if(!r)return e;var n,o,i=r.call(e),a=[];try{for(;(void 0===t||0<t--)&&!(n=i.next()).done;)a.push(n.value)}catch(s){o={error:s}}finally{try{n&&!n.done&&(r=i["return"])&&r.call(i)}finally{if(o)throw o.error}}return a}function D(){for(var e=[],t=0;t<arguments.length;t++)e=e.concat(R(arguments[t]));return e}var q=(O.convertToHeaders=function(t){if(1==(t=t||new a.HttpHeaders)instanceof a.HttpHeaders)return t;if(0<Object.keys(t).length){var r=new a.HttpHeaders;Object.keys(t).forEach(function(e){r=r.append(e,t[e])}),t=r}else t=new a.HttpHeaders;return t},O.appendSessionId=function(e,t){return e.append("SessionId",t)},O.appendCafRuntimeCommonVariable=function(e,t){return e.append("X-CAF-Runtime-CommonVariable",t)},O.appendCafRuntimeContext=function(e,t){return e.append("X-CAF-Runtime-Context",t)},O.appendContextType=function(e,t){return t=t||"application/json",e.append("Content-Type",t)},O.appendRequireMessage=function(e,t){return void 0===t&&(t=!0),e.append("Bff-Require-Message",t.toString())},O.appendFuncInstId=function(e,t){return e.append("Func-Inst-Id",t)},O.toJson=function(r){if(!(r instanceof a.HttpHeaders))return null;var n={};return r.keys().forEach(function(e){var t=r.getAll(e);1<t.length?n[e]=t:n[e]=t[0]||""}),n},O);function O(){}var w=(M.buildParams=function(e){var t=new a.HttpParams;for(var r in e)if(e.hasOwnProperty(r)){var n=e[r].toString();t=t.append(r,n)}return t},M);function M(){}var T=(j.hasRequestInfo=function(e){if(!e||!e.body)return!1;var t=e.body;return!(!t.requestInfo||!t.requestInfo.dataChange)||!!t.dataChange},j.hasRequestInfoWithR=function(e){if(!e||!e.body)return!1;var t=e.body;return!(!t.RequestInfo||!t.RequestInfo.dataChange)||!!t.dataChange},j.buildRequestInfo=function(e){return{dataChange:e.entityManager.buildAllEntityChangeDetails(),variableChange:e.variableManager.buildChangeDetail()}},j.buildBodyWithRequestInfo=function(e,t){if(e.RequestInfo||e.requestInfo)return e;var r=this.buildRequestInfo(t);return Object.assign({},e,{requestInfo:r})},j);function j(){}var A=(U.unWrapResponseInfo=function(e){if(!e)return e;if(!1===e.hasOwnProperty("returnValue"))return e.hasOwnProperty("result")&&e.hasOwnProperty("pagination")?e.result:e;var t=e.returnValue;return t&&t.hasOwnProperty("result")&&t.hasOwnProperty("pagination")?t.result:e.returnValue},U.isReported401Error=function(e){return 401===e.status},U.parseBackEndMessage=function(e){return e&&e.message&&Array.isArray(e.message)&&0<e.message.length?e.message:null},U.parseBackEndError=function(e){var t=e&&e.error;return t&&t.hasOwnProperty("extensionMessage")&&t.extensionMessage&&t.extensionMessage.hasOwnProperty("UIMsg")&&t.extensionMessage.UIMsg&&0<t.extensionMessage.UIMsg.length?JSON.parse(t.extensionMessage.UIMsg):null},U);function U(){}var H=(k.prototype.getService=function(){for(var e=window;!e.gspframeworkService&&e!==window.top&&this.isSameOrigin(e);)e=window.parent;return e.gspframeworkService&&e.gspframeworkService.rtf||{}},k.prototype.isSameOrigin=function(e){var t=window.location.host;try{if(e&&e.location&&"undefined"!=typeof e.location.host)return e.location.host===t}catch(r){return!1}return!1},Object.defineProperty(k.prototype,"params",{get:function(){return this.rtf&&this.rtf.hasOwnProperty("session")&&"function"==typeof this.rtf.session.getCommonVariable?this.rtf.session.getCommonVariable():null},enumerable:!0,configurable:!0}),Object.defineProperty(k.prototype,"httpService",{get:function(){return this.rtf&&this.rtf.hasOwnProperty("http")&&"function"==typeof this.rtf.http.request?this.rtf.http:null},enumerable:!0,configurable:!0}),k.prototype.request=function(e,t,r){return void 0===r&&(r={}),this.defaultHttpClient.request(e,t,r)},k.decorators=[{type:i.Injectable}],k.ctorParameters=function(){return[{type:a.HttpClient}]},k);function k(e){this.defaultHttpClient=e,this.httpClient=e,this.rtf=this.getService()}var V=(F.prototype.getFrmSessionId=function(e){return this.frmSessionService.getCurrentSessionId(e)},Object.defineProperty(F.prototype,"frmSessionId",{get:function(){return this.frmSessionService.getCurrentSessionId()},enumerable:!0,configurable:!0}),F.prototype.getFrameworkSessionId=function(e){return this.getFrmSessionId(e)},F.prototype.getSessionIdFromStorage=function(e){var t=this.getSessionStorageKey(e);return this.storageStrategy.getItem(t)},F);function F(e,t){this.storageStrategy=e,this.frmSessionService=t}var N,_=(x(L,N=V),L.prototype.getSessionId=function(){var e=this.getSessionIdFromStorage();return e?I.of(e):this.createSession()},L.prototype.setSessionId=function(e){var t=this.getSessionStorageKey();this.storageStrategy.setItem(t,e)},L.prototype.clearSessionId=function(){var e=this.getSessionStorageKey();this.storageStrategy.clear(this.frmSessionId,e)},L.prototype.extendRequestHeaders=function(e,t){var r=this.getFrameworkSessionId(t),n=this.getSessionIdFromStorage(t);return e=q.appendCafRuntimeCommonVariable(e,r),e=q.appendCafRuntimeContext(e,n),e=q.appendSessionId(e,n)},L.prototype.handleReponseHeaders=function(e){console.log(e)},L.prototype.createSession=function(){var t=this,e={responseType:"text"};return this.frmSessionId&&(e.headers=new a.HttpHeaders({SessionId:this.frmSessionId}),e.headers=e.headers.append("X-CAF-Runtime-CommonVariable",this.frmSessionId),e.headers=q.toJson(e.headers)),this.httpService.request("POST",this.beSessionUri,e).pipe(l.tap(function(e){t.setSessionId(e)}))},L.prototype.extendHttpHeader=function(){},L.prototype.getSessionStorageKey=function(e){return(e?this.getFrameworkSessionId(e):this.frmSessionId)+"_"+this.beSessionUri},L);function L(e,t,r,n){var o=N.call(this,e,t)||this;return o.beSessionUri=n,o.httpClient=r,o.httpService=new H(o.httpClient),o}var K,G=(x(J,K=V),J.prototype.getSessionId=function(){var e=this.getSessionStorageKey(),t=this.storageStrategy.getItem(e);return I.of(t)},J.prototype.setSessionId=function(e){var t=this.getSessionStorageKey();this.storageStrategy.setItem(t,e)},J.prototype.clearSessionId=function(){var e=this.getSessionStorageKey();this.storageStrategy.removeItem(e)},J.prototype.extendRequestHeaders=function(e,t){var r=this.getFrameworkSessionId(t),n=this.getSessionIdFromStorage(t),o=this.injector.get(S.AppContext,null);if(o){var i=o.ApplicationId;e=q.appendFuncInstId(e,i)}return e=q.appendCafRuntimeCommonVariable(e,r),n&&(e=q.appendCafRuntimeContext(e,n)),e},J.prototype.handleReponseHeaders=function(e){console.log(e)},J.prototype.getSessionStorageKey=function(e){return(e?this.getFrameworkSessionId(e):this.frmSessionId)+"_"+window.location.hash},J);function J(e,t,r,n){var o=K.call(this,e,t)||this;return o.beSessionUri=r,o.injector=n,o}var W=(z.prototype.create=function(e,t,r,n,o){var i=this.createStorageStrategy(),a=this.createBeSessionUri(r);return"UnifiedSession"===e?new G(i,t,a,o):new _(i,t,n,a)},z.prototype.createStorageStrategy=function(){return new v},z.prototype.createBeSessionUri=function(e){return e+"/service/createsession"},z.decorators=[{type:i.Injectable}],z);function z(){}var Q=(Object.defineProperty(Y.prototype,"token",{get:function(){return this.handlingStrategy.getFrameworkSessionId()},enumerable:!0,configurable:!0}),Y.prototype.getBeSessionId=function(){return this.handlingStrategy.getSessionId()},Y.prototype.setBeSessionId=function(e){this.handlingStrategy.setSessionId(e)},Y.prototype.clearBeSessionId=function(){this.handlingStrategy.clearSessionId()},Y.prototype.extendRequestHeaders=function(e,t){return this.handlingStrategy.extendRequestHeaders(e,t)},Y.prototype.handleResponseHeaders=function(e){return this.handlingStrategy.handleReponseHeaders(e)},Y.prototype.createBeSession=function(){return this.handlingStrategy.createSession()},Y.prototype.createHandlingStrategy=function(e,t,r,n){var o;return o=(o=e?e.get(u,null,i.InjectFlags.Optional):"SeparatedSession")||"SeparatedSession",(new W).create(o,r,n,t,e)},Y.decorators=[{type:i.Injectable}],Y.ctorParameters=function(){return[{type:a.HttpClient},{type:String},{type:f},{type:i.Injector}]},Y);function Y(e,t,r,n){this.handlingStrategy=this.createHandlingStrategy(n,e,r,t)}var X,Z="@farris/bef NG_VARIABLE",$=S.makePropDecorator(Z,function(e){return e}),ee=(x(te,X=S.Repository),Object.defineProperty(te.prototype,"restService",{get:function(){return this.dataService.restService},enumerable:!0,configurable:!0}),Object.defineProperty(te.prototype,"changeBuilder",{get:function(){return this.entityManager.changeBuilder},enumerable:!0,configurable:!0}),Object.defineProperty(te.prototype,"changeHandler",{get:function(){return this.entityManager.changeHandler},enumerable:!0,configurable:!0}),te.prototype.getList=function(){return this.dataService.getList(null,null,null,null)},te.prototype.getById=function(e){return this.dataService.getById(e)},te.prototype.updateById=function(e){return this.dataService.updateById(e)},te.prototype.create=function(e){return this.dataService.create(e)},te.prototype.append=function(e){return this.dataService.append(e)},te.prototype.appendByPath=function(e){return this.dataService.appendByPath(e)},te.prototype.removeById=function(e,t){return this.dataService.removeById(e,t)},te.prototype.removeByIds=function(e,t){return this.dataService.removeByIds(e,t)},te.prototype.removeByPath=function(e,t){return this.dataService.removeByPath(e,t)},te.prototype.updateChangesById=function(e){return this.dataService.updateChangesById(e)},te.prototype.updateChangesByPath=function(e,t){throw new Error("Not Implement")},te.prototype.updateAllChanges=function(){return this.dataService.updateAllChanges()},te.prototype.applyChanges=function(){return this.dataService.applyChanges()},te.prototype.updateDataAndVariableChanges=function(){var e={FilterConditions:[],SortConditions:[],IsUsePagination:!0,Pagination:{PageIndex:1,PageSize:1,PageCount:0,TotalCount:0}},t=JSON.stringify(e),r=this.restService.buildRequestInfo();if(this.isEmptyRequestInfo(r))return I.of(null);var n=this.restService.baseUri+"/extension/query?entityFilter="+t,o={body:r};return this.restService.invoke(n,"PUT",null,o,!1,!0,!0)},te.prototype.applyChangesById=function(e){return this.dataService.applyChangesById(e)},te.prototype.cancelChanges=function(e){return this.dataService.cancelChanges(e)},te.prototype.clearAllEntityChanges=function(){return this.entityManager.clearAllEntityChanges()},te.prototype.getDataChangeDetails=function(){return this.entityManager.buildAllEntityChangeDetails()},te.prototype.handleDataChangeDetails=function(e){return this.entityManager.handleDataChangeDetails(e)},te.prototype.getVariableChangeDetail=function(){return this.variableManager.buildChangeDetail()},te.prototype.handleVariableChangeDetail=function(e){this.variableManager.handleChangeDetail(e)},te.prototype.isEmptyRequestInfo=function(e){return!e||(!e.dataChange||e.dataChange.length<1)&&(!e.variableChange||Object.keys(e.variableChange).length<1)},te.decorators=[{type:i.Injectable}],te.ctorParameters=function(){return[]},te);function te(){return X.call(this)||this}var re,ne=(x(oe,re=S.EntityManager),oe.prototype.buildAllEntityChangeDetails=function(){var r=this,n=[];return this.entityCollection.getAllEntities().forEach(function(e){if(0!==e.changes.length){var t=r.changeBuilder.build(e.changes);t&&t.ChangeInfo&&t.ChangeInfo.DataId&&n.push(t)}}),n},oe.prototype.buildEntityChangeDetailById=function(e){var t=this.entityCollection.getEntityById(e);return 0===t.changes.length?null:this.changeBuilder.build(t.changes)},oe.prototype.handleDataChangeDetails=function(e){this.changeHandler.handle(this.entityType,this.entityCollection,e)},oe.prototype.reset=function(){this.entityCollection.clear()},oe);function oe(e){var t=re.call(this,e)||this;return t.changeBuilder=new c(t.entityCollection.entityType,t.entityCollection),t.changeHandler=new y,t}var ie=(ae.createEmpty=function(e,t){var r={ChangeType:e,ChangeInfo:{}};return t&&(r.ChangeInfo.DataId=t),r},ae.getChangeInfo=function(e){return!0===this.isChangeDetail(e)?e.ChangeInfo:e},ae.isChangeDetail=function(e){var t=Object.keys(e);return 2===t.length&&-1<t.indexOf("ChangeType")&&-1<t.indexOf("ChangeInfo")},ae);function ae(){}var se=(pe.prototype.handleChangeDetail=function(e){},pe.prototype.buildChangeDetail=function(){var i=this,a=ie.createEmpty(b.Modify);return this.ngVariableMap.forEach(function(e,t){var r=e.mapping,n=i.getValueFromUIState(r),o=i.innerValueMap.get(t);!1===i.isValueEqual(n,o)&&(i.innerValueMap.set(t,n),i.appendToChangeInfo(a,t,n))}),0===Object.keys(a.ChangeInfo).length?null:a},pe.prototype.reset=function(){this.innerValueMap.clear()},pe.prototype.appendToChangeInfo=function(e,t,r){if(!0===this.isUdtVariable(r)){var n=ie.createEmpty(b.Modify);n.ChangeInfo=r,e.ChangeInfo[t]=n}else e.ChangeInfo[t]=r},pe.prototype.getValueFromUIState=function(e){var t=this.getRootUIState(),r=e.split(".").reduce(function(e,t){return e?e[t]:null},t);return r instanceof Date?n.format(r,"yyyy-MM-dd HH:mm:ss"):r},pe.prototype.getRootUIState=function(){var e=this.appContext.frameContextManager.getRootFrameContext();if(this.injector){var t=this.injector.get(S.FrameContext,null);t&&(e=t.getVirtualRootFrameContext()||e)}if(e)return e.uiState},pe.prototype.isValueEqual=function(e,t){return JSON.stringify(e)===JSON.stringify(t)},pe.prototype.isUdtVariable=function(e){return e&&e.constructor&&"[object Object]"===e.toString()&&e.constructor.prototype.hasOwnProperty("isPrototypeOf")},pe.prototype.setValueToUIState=function(e,t){},pe.ctorParameters=function(){return[{type:S.AppContext},{type:undefined},{type:i.Injector,decorators:[{type:i.Optional}]}]},pe);function pe(e,t,r){var n=this;this.appContext=e,this.ngVariables=t,this.injector=r,this.ngVariableMap=new Map,this.innerValueMap=new Map,Object.keys(t).forEach(function(e){n.ngVariableMap.set(e,t[e])})}var ue=(ce.buildRequestInfo=function(e){return{dataChange:e.entityManager.buildAllEntityChangeDetails(),variableChange:e.variableManager.buildChangeDetail()}},ce);function ce(){}var he=(ye.convertToPathArray=function(e,t){var n=this,r=S.BindingPathConverter.toBindingPathArray(e),o=[],i=t.list.currentItem;return o.push(i.primaryKeyValue),r.forEach(function(e){var t=S.PropertyUtil.getPropertyByName(i.properties,e);if(t.type!==S.BindingPropertyType.List)throw new Error(t.name+"不是子表对应的属性");var r=i[e];i=r.currentItem,o.push(n.trimTrailingS(e)),o.push(i.primaryKeyValue)}),o},ye.convertToPathUrl=function(e,t){var r=this.convertToPathArray(e,t);return r.pop(),"/"+r.join("/")},ye.convertToObjectCodes=function(e,t){for(var r=this.convertToPathArray(e,t),n=r.length,o=[],i=1;i<n;i+=2)o.push(r[i]);return o},ye.convertToDataIdsForUpdate=function(e,t){for(var r=this.convertToPathArray(e,t),n=r.length,o=[],i=0;i<n;i+=2)o.push(r[i]);return o},ye.convertToDataIdsForAdd=function(e,t){var r=this.convertToDataIdsForUpdate(e,t);return r.pop(),r},ye.convertPathToUrl=function(e){for(var t=e.split("/"),r=t.length-1;0<r;r--)t[r]&&t[r].endsWith("s")&&(t[r]=t[r].substr(0,t[r].length-1).toLowerCase());return t.join("/")},ye.trimTrailingS=function(e){return e.substr(0,e.length-1)},ye.convertPathsToNodeCodes=function(e){var t=[];return!e||e.length<1||e.filter(function(e){return!!e&&-1===e.indexOf(":")}).forEach(function(e){t.push(e)}),t},ye.convertPathsToIds=function(e){var t=[];return!e||e.length<1||e.filter(function(e){return!!e&&-1!==e.indexOf(":")}).forEach(function(e){t.push(e.split(":")[1])}),t},ye);function ye(){}var le=(Object.defineProperty(de.prototype,"restProxy",{get:function(){return this.repository.restService.proxy},enumerable:!0,configurable:!0}),de.prototype.getList=function(e,t,r,n){var p=this;0!==r&&(r=r||this.repository.entityCollection.pageSize,n=n||this.repository.entityCollection.pageIndex);var o=this.buildEntityFilter(e,t,r,n),i=this.restService.buildRequestInfo();return this.restProxy.extendQuery(o,i).pipe(l.map(function(e){var t=e.returnValue,r=t.result,n=[];r.forEach(function(e){var t=p.repository.buildEntity(e);C.appendInitialData(t,e),n.push(t)});var o=t.pagination;if(o&&0<Object.keys(o).length){var i=o.pageSize,a=o.pageIndex,s=o.totalCount;p.repository.entityCollection.updatePaginationInfoByPath("/",{pageIndex:a,pageSize:i,totalCount:s})}else p.repository.entityCollection.updatePaginationInfoByPath("/",{pageIndex:1,pageSize:0,totalCount:n.length});return p.repository.entityCollection.loadEntities(n),n}))},de.prototype.filter=function(e,t,r,n){var p=this;0!==r&&(r=r||this.repository.entityCollection.pageSize,n=n||this.repository.entityCollection.pageIndex);var o=this.buildEntityFilter(e,t,r,n),i=this.restService.buildRequestInfo();return this.restProxy.filter(o,i).pipe(l.map(function(e){var t=e.returnValue,r=t.result,n=[];r.forEach(function(e){var t=p.repository.buildEntity(e);C.appendInitialData(t,e),n.push(t)});var o=t.pagination;if(o&&0<Object.keys(o).length){var i=o.pageSize,a=o.pageIndex,s=o.totalCount;p.repository.entityCollection.updatePaginationInfoByPath("/",{pageIndex:a,pageSize:i,totalCount:s})}else p.repository.entityCollection.updatePaginationInfoByPath("/",{pageIndex:1,pageSize:0,totalCount:n.length});return p.repository.entityCollection.loadEntities(n),n}))},de.prototype.buildEntityFilter=function(e,t,r,n){return e||t||r||n?(e&&0<e.length&&(e[e.length-1].Relation=0),{FilterConditions:e,SortConditions:t,IsUsePagination:0!==r,Pagination:{PageIndex:n,PageSize:r,PageCount:0,TotalCount:0}}):null},de.prototype.getById=function(e){var n=this,t=this.restService.buildRequestInfo();return this.restService.extendRetrieve(e,t).pipe(l.map(function(e){var t=e.returnValue,r=n.repository.buildEntity(t);return n.repository.entityCollection.loadEntities([r]),r}))},de.prototype.getPagedById=function(o){var i=this,e=this.restService.buildRequestInfo(),t=this.repository.entityCollection.getPaginationConfigByPath("/"),r=this.buildChildPagination(t),n=this.buildRetrieveParam(r);return this.restService.serviceRetrieve(o,n,e).pipe(l.map(function(e){var t=e.dataResult,r=e.paginations;i.updatePagination(r);var n=i.repository.entityCollection.getEntityById(o);return i.reloadEntityData(n,t),n}))},de.prototype.queryChild=function(s,e,t,r,n){var p=this,o=this.restService.buildRequestInfo(),u=he.convertPathsToNodeCodes(s),i=u.map(function(e){return e.substring(0,e.length-1)}),a=he.convertPathsToIds(s),c=B({nodeCodes:i,ids:a,pagination:{pageIndex:e,pageSize:t}},o),h=u[u.length-1];return h=h.substring(0,h.length-1),this.restService.queryChild(c).pipe(l.map(function(e){console.log(e);var t=e.returnValue;if(!t)return null;var r=t.result,n=void 0===r?[]:r,o=t.pagination,i=void 0===o?{}:o,a=[];n.forEach(function(e){var t=new(S.FieldMetadataUtil.getNgList(p.repository.entityType)[u[u.length-1]].type)(e);C.appendInitialData(t,e),a.push(t)}),u=u.map(function(e){return e.charAt(0).toLocaleLowerCase()+e.substr(1)}),p.repository.entityCollection.resetEntities(s,a),p.repository.entityCollection.setPaginationConfigByPath("/"+h,i)}))},de.prototype.buildChildPagination=function(r){var n={};return Object.keys(r).forEach(function(e){var t=r[e];"object"==typeof t&&(n[e]=t)}),n},de.prototype.updatePagination=function(t){var r=this;t&&Object.keys(t).forEach(function(e){r.repository.entityCollection.setPaginationConfigByPath("/"+e,t[e])})},de.prototype.buildRetrieveParam=function(n){var e={};if(n&&0<Object.keys(n).length){var o=[];Object.keys(n).forEach(function(e){var t=n[e],r={};r[e]={pagination:{pageSize:t.pageSize||0,pageIndex:1}},o.push(r)}),e.filters=o}return e},de.prototype.editById=function(n){var o=this;if(!this.repository.entityCollection.getEntityById(n))return I.of(null);var e=ue.buildRequestInfo(this.repository);return this.restProxy.edit(n,e).pipe(l.map(function(e){var t=e.returnValue.data,r=o.repository.entityCollection.getEntityById(n);return r&&t&&o.reloadEntityData(r,t),r}))},de.prototype.updateById=function(n){var o=this;if(!this.repository.entityCollection.getEntityById(n))return I.of(null);var e=this.restService.buildRequestInfo();return this.restService.extendRetrieve(n,e).pipe(l.map(function(e){var t=e.returnValue,r=o.repository.entityCollection.getEntityById(n);return o.reloadEntityData(r,t),r}))},de.prototype.reloadEntityData=function(e,t){e&&(this.appContext.changeDetectionController.detach(),e.load(t),e.changes.splice(0,e.changes.length),this.appContext.changeDetectionController.reattach())},de.prototype.create=function(e){var n=this,t=this.restService.buildRequestInfo();return this.restService.create(e,t).pipe(l.map(function(e){var t=e.returnValue,r=n.repository.buildEntity(t);return C.appendInitialData(r,t),n.repository.entityCollection.loadEntities([r]),r}))},de.prototype.append=function(e){var n=this,t=this.restService.buildRequestInfo();return this.restService.create(e,t).pipe(l.map(function(e){var t=e.returnValue,r=n.repository.buildEntity(t);return n.repository.entityCollection.addEntity(r),r}))},de.prototype.insert=function(n,e){var o=this,t=this.buildRequestInfo();return this.restProxy.create(e,t).pipe(l.map(function(e){var t=e.returnValue,r=o.repository.buildEntity(t);return o.repository.entityCollection.insertEntity(r,n),r}))},de.prototype.appendByPath=function(r){var n=this,e=this.restService.buildRequestInfo();return this.restService.createByPath(r,e).pipe(l.map(function(e){var t=e.returnValue;return n.repository.entityManager.appendEntityByPath(r,t,t)}))},de.prototype.insertByPath=function(r,n){var o=this,e=this.buildRequestInfo();return this.restProxy.createByPath(r,e).pipe(l.map(function(e){var t=e.returnValue;return o.repository.entityManager.insertEntityByPath(r,t,t,n)}))},de.prototype.removeById=function(e,t){var r=this;t=t===undefined||t;var n=ue.buildRequestInfo(this.repository);return t?this.restProxy.deleteAndSave(e,n).pipe(l.switchMap(function(){return r.repository.entityCollection.removeEntityById(e),I.of(!0)})):this.restService.extendDelete(e,n).pipe(l.switchMap(function(){return r.repository.entityCollection.removeEntityById(e),r.repository.dataChangeHistory.addChange({dataId:e,changeType:S.DataChangeType.Delete}),I.of(!0)}))},de.prototype.removeAndSaveById=function(e){var t=this,r=ue.buildRequestInfo(this.repository);return this.restProxy.deleteAndSave(e,r).pipe(l.switchMap(function(){return t.repository.entityCollection.removeEntityById(e),I.of(!0)}))},de.prototype.removeByIds=function(r,e){var n=this;e=e===undefined||e;var t=this.restService.buildRequestInfo();return this.restService.extendBatchDelete(r,t).pipe(l.switchMap(function(){if(e)return n.applyChangesByIdArray(r).pipe(l.tap(function(e){e&&n.repository.entityCollection.removeEntities(function(e){return n.checkEntityValueExists(e,r)})}));if(n.repository.entityCollection.removeEntities(function(e){return n.checkEntityValueExists(e,r)}),r&&0<r.length){var t=[];r.forEach(function(e){t.push({dataId:e,changeType:S.DataChangeType.Delete})}),n.repository.dataChangeHistory.addChanges(t)}return I.of(!0)}))},de.prototype.checkEntityValueExists=function(e,t){for(var r=!1,n=0;n<t.length;n++)if(e.primaryValue===t[n]){r=!0;break}return r},de.prototype.removeByPath=function(e,t){var r=this,n=this.restService.buildRequestInfo();return this.restService.extendDeletByPath(e,t,n).pipe(l.map(function(){return r.repository.entityManager.removeEntityByPath(e,t),r.repository.dataChangeHistory.addChange({fpath:e,dataId:t,changeType:S.DataChangeType.Delete}),!0}))},de.prototype.batchRemoveByPath=function(t,r){var n=this,e=this.restService.buildRequestInfo();return this.restService.batchDeleteByPath(t,r,e).pipe(l.map(function(){var e=r.split(",");return 0<e.length&&e.forEach(function(e){n.repository.entityManager.removeEntityByPath(t,e),n.repository.dataChangeHistory.addChange({fPath:t,dataId:e,changeType:S.DataChangeType.Delete})}),!0}))},de.prototype.updateChangesById=function(e){var t=this,r=this.repository.entityCollection.getEntityById(e);if(!r.changes)return I.of(!0);if(0===r.changes.length)return I.of(!0);var n=this.repository.entityManager.buildEntityChangeDetailById(e),o=this.restService.buildRequestInfo();return this.restService.update(n,o).pipe(l.tap(function(){t.repository.entityManager.clearEntityChangesById(e)}),l.map(function(){return!0}))},de.prototype.updateChangesByPath=function(e,t){throw new Error("Not Implement")},de.prototype.updateAllChanges=function(){var r=this,n=[],e=this.repository.entityCollection.toArray();return 0===e.length?I.of(!0):(e.forEach(function(e){var t=r.updateChangesById(e.primaryValue);n.push(t)}),I.zip.apply(void 0,D(n)).pipe(l.map(function(){return!0})))},de.prototype.applyChanges=function(){var e=this,t=this.restService.buildRequestInfo();return this.restService.save(t).pipe(l.tap(function(){e.repository.entityManager.clearAllEntityChanges(),e.repository.dataChangeHistory.clear()}),l.map(function(){return!0}))},de.prototype.applyChangesByIdArray=function(e){var t=this,r=this.restService.buildRequestInfo();return this.restService.save(r).pipe(l.tap(function(){t.repository.entityManager.clearEntityChangesByArray(e),t.repository.dataChangeHistory.clearByIds(e)}),l.map(function(){return!0}))},de.prototype.applyChangesById=function(e){var t=this,r=this.restService.buildRequestInfo();return this.restService.save(r).pipe(l.tap(function(){t.repository.entityManager.clearEntityChangesById(e),t.repository.dataChangeHistory.clearByIds([e])}),l.map(function(){return!0}))},de.prototype.cancelChanges=function(e){var t=this;return this.restService.cancel(e).pipe(l.tap(function(){t.repository.entityManager.clearAllEntityChanges(),t.repository.dataChangeHistory.clear()}),l.map(function(){return!0}))},de.prototype.batchAppendByPath=function(o,e){var i=this,t=this.buildRequestInfo();return this.restProxy.batchAppendByPath(o,e,t).pipe(l.map(function(e){var t=e.returnValue,r=i.repository.entityManager.createEntitiesByPath(o,t),n=o.split("/").filter(function(e){return e});return i.repository.entityManager.appendEntitiesByPath(n,r),r}))},de.prototype.buildRequestInfo=function(){return{dataChange:this.repository.entityManager.buildAllEntityChangeDetails(),variableChange:this.repository.variableManager.buildChangeDetail()}},de);function de(e,t){this.injector=e,this.repository=t;var r=e.get(f),n=e.get(a.HttpClient),o=e.get(p)+"/"+this.repository.apiUri,i=e.get(S.EventBus);this.restService=new qe(n,o,r,this.repository,i),this.appContext=e.get(S.AppContext)}var fe=(ge.handleMessage=function(e,t){var r={ns:t.get(S.NAMESPACE,null),appContext:t.get(S.AppContext,null)},n=this.buildBackEndMessages(e),o=new S.BackEndMessage.Message(n,r),i=t.get(S.BACK_END_MESSAGE_HANDLER_TOKEN,null);i&&i.handle(o)},ge.isBackEndMessageHandlerExist=function(e){return!!e.get(S.BACK_END_MESSAGE_HANDLER_TOKEN,null)},ge.getFormlessMessages=function(e){return(this.buildBackEndMessages(e)||[]).filter(function(e){return!e.location||!e.location.columns||e.location.columns.length<1||!e.location.nodeCode})},ge.buildBackEndMessages=function(e){if(!e||e.length<1||!Array.isArray(e))return null;var r=[];return e.forEach(function(e){var t={level:e.level,message:e.message};e.hasOwnProperty("location")&&e.location&&(t.location={nodeCode:e.location.nodeCode,rows:e.location.dataIds,columns:e.location.columnNames}),r.push(t)}),r},ge);function ge(){}var ve=(Ie.prototype.onResponse=function(e,t){e&&e.innerDataChange&&!0!==t&&this.context.handleDataChangeDetails(e.innerDataChange);var r=A.parseBackEndMessage(e);return fe.handleMessage(r,this.context.getInjector()),this.context.clearAllEntityChanges(),e&&e.hasOwnProperty("returnValue")?e.returnValue:e},Ie.prototype.onError=function(e,t,r){var n,o,i=this.context.appContext.getFormAppContext(),a=i.ApplicationId,s=window.DEVKIT_LOADING_SERVICE,p=A.parseBackEndError(e);if(fe.handleMessage(p,this.context.getInjector()),s&&s instanceof Array&&0<s.length)try{for(var u=P(s),c=u.next();!c.done;c=u.next()){var h=c.value;"function"==typeof h.clearAll&&h.clearAll()}}catch(v){n={error:v}}finally{try{c&&!c.done&&(o=u["return"])&&o.call(u)}finally{if(n)throw n.error}}if(t)return I.throwError(e);var y=this.context.restService.eventBus,l=window[a]||{};if(!y||!l.isExceptionHandlerExist)return I.throwError(e);if(A.isReported401Error(e))return I.throwError(e);var d=A.parseBackEndError(e),f=fe.getFormlessMessages(d),g=f&&0<f.length||!1;return e&&e.error&&e.error.extensionMessage&&fe.isBackEndMessageHandlerExist(this.context.getInjector())&&!g||y.post("Exception","","onException",e,i),r?I.of(null):I.EMPTY},Ie.prototype.extendHeaders=function(t,r){var n=this;return this.context.restService.sessionService.getBeSessionId().pipe(l.switchMap(function(e){return t=n.context.restService.sessionService.extendRequestHeaders(t,r),I.of(t)}))},Ie.prototype.extendUrl=function(e,t){if(!t)return e;for(var r in t)if(t.hasOwnProperty(r)){var n=JSON.stringify(t[r]);e=-1===e.indexOf("?")?e+"?"+r+"="+n:e+"&"+r+"="+n}return e},Ie.prototype.extendBody=function(t){var r=this;return!t||"object"!=typeof t||Object.keys(t).length<1||(Object.keys(t).forEach(function(e){"requestInfo"===e&&(t.requestInfo=r.context.restService.buildRequestInfo())}),1===Object.keys(t).length&&(t=Object.values(t)[0])),t},Ie.prototype.parseHeaders=function(e){var t="BEFSessionID";e.headers&&e.headers.has(t)&&this.context.restService.sessionService.setBeSessionId(e.headers.get(t))},Ie);function Ie(e){this.context=e}var Se,be=(x(Ce,Se=ee),Object.defineProperty(Ce.prototype,"proxy",{get:function(){return this.befProxy},set:function(e){this.befProxy=e,this.befProxy.setProxyExtend(new ve(this))},enumerable:!0,configurable:!0}),Ce.prototype.getEntities=function(e,t,r,n){return this.dataService.getList(e,t,r,n)},Ce.prototype.filter=function(e,t,r,n){return void 0===e&&(e=[]),void 0===t&&(t=[]),this.dataService.filter(e,t,r,n)},Ce.prototype.getPagedById=function(e){return this.dataService.getPagedById(e)},Ce.prototype.queryChild=function(e,t,r,n,o){return this.dataService.queryChild(e,t,r,n,o)},Ce.prototype.getEntityById=function(e){return this.dataService.getById(e)},Ce.prototype.updateEntityById=function(e){return this.dataService.updateById(e)},Ce.prototype.editEntityById=function(e){return this.dataService.editById(e)},Ce.prototype.createEntity=function(e){return this.dataService.create(e)},Ce.prototype.appendEntity=function(e){return this.dataService.append(e)},Ce.prototype.insert=function(e,t){return this.dataService.insert(e,t)},Ce.prototype.insertByPath=function(e,t){return this.dataService.insertByPath(e,t)},Ce.prototype.appendEntityByPath=function(e){return this.dataService.appendByPath(e)},Ce.prototype.removeEntityById=function(e,t){return this.dataService.removeById(e,t)},Ce.prototype.removeEntityAndSaveById=function(e){return this.dataService.removeAndSaveById(e)},Ce.prototype.removeEntityByPath=function(e,t){return this.dataService.removeByPath(e,t)},Ce.prototype.batchRemoveByPath=function(e,t){return this.dataService.batchRemoveByPath(e,t)},Ce.prototype.saveEntityById=function(e){return this.dataService.applyChangesById(e)},Ce.prototype.saveEntities=function(){return this.dataService.applyChanges()},Ce.prototype.cancelEntityChanges=function(){return this.dataService.cancelChanges()},Ce.prototype.batchAppendByPath=function(e,t){return this.dataService.batchAppendByPath(e,t)},Ce.prototype.reset=function(){this.entityManager.reset(),this.variableManager.reset(),this.restService.sessionService.clearBeSessionId()},Ce.prototype.getInjector=function(){return this.injector},Ce.decorators=[{type:i.Injectable}],Ce.ctorParameters=function(){return[{type:i.Injector}]},Ce);function Ce(e){var t=Se.call(this)||this;t.injector=e,t.entityManager=new ne(t.entityCollection),t.appContext=t.injector.get(S.AppContext);var r=S.MetadataUtil.getPropsMetadatasByName(t.constructor,Z);return t.variableManager=new se(t.appContext,r,t.injector),t.dataService=new le(t.injector,t),t.serverUri=e.get(p),t}var me=(Ee.prototype.extendUri=function(e){return this.serverUri+"/"+e},Ee.decorators=[{type:i.Injectable}],Ee.ctorParameters=function(){return[{type:String,decorators:[{type:i.Inject,args:[p]}]}]},Ee);function Ee(e){this.serverUri=e}var xe="DELETE",Be="PUT",Pe="POST",Re=(De.prototype.setBaseUri=function(e){this.baseUri=e},De.prototype.setProxyExtend=function(e){this.proxyExtend=e},De.prototype.query=function(e){var t=this.baseUri;return e&&(t=t+"?entityFilter="+JSON.stringify(e)),this.request(t,"GET")},De.prototype.extendQuery=function(e,t){var r=this.baseUri+"/extension/query";if(e){var n=JSON.stringify(e);r=r+"?entityFilter="+(n=S.encodeUrl(n))}var o=t,i=this.addBodyToOptions({},o);return this.request(r,Be,null,i,!1)},De.prototype.filter=function(e,t){var r=this.baseUri+"/extension/filter",n={requestInfo:t};e&&(n={entityFilter:e,requestInfo:t});var o=this.addBodyToOptions({},n);return this.request(r,Pe,null,o,!1)},De.prototype.retrieve=function(e){var t=this.baseUri+"/"+e;return this.request(t,"GET")},De.prototype.serviceRetrieve=function(e,t,r){var n=this.baseUri+"/service/retrieve/"+e,o={body:{retrieveParam:t,requestInfo:r}};return this.request(n,Be,null,o)},De.prototype.queryChild=function(e){var t=this.baseUri+"/service/querychild",r={body:e};return this.request(t,Be,null,r)},De.prototype.extendRetrieve=function(e,t){var r=this.baseUri+"/extension/retrieve/"+e,n=t,o=this.addBodyToOptions({},n);return this.request(r,Be,null,o)},De.prototype.edit=function(e,t){var r=this.baseUri+"/service/edit/"+e,n=t,o=this.addBodyToOptions({},n);return this.request(r,Be,null,o)},De.prototype.create=function(e,t){var r={defaultValue:e,requestInfo:t},n=this.addBodyToOptions({},r);return this.request(this.baseUri,Pe,null,n)},De.prototype.createByPath=function(e,t){var r=he.convertPathToUrl(e),n=""+this.baseUri+r,o=t,i=this.addBodyToOptions({},o);return this.request(n,Pe,null,i)},De.prototype.update=function(e,t){var r={changeDetail:e,requestInfo:t},n=this.addBodyToOptions({},r);return this.request(this.baseUri,"PATCH",null,n)},De.prototype.save=function(e){var t=e,r=this.addBodyToOptions({},t);return this.request(this.baseUri,Be,null,r)},De.prototype["delete"]=function(e){var t=this.baseUri+"/"+e;return this.request(t,xe)},De.prototype.deleteAndSave=function(e,t){var r=this.baseUri+"/service/delete/"+e,n=t,o=this.addBodyToOptions({},n);return this.request(r,Be,null,o)},De.prototype.extendDelete=function(e,t){var r=this.baseUri+"/extension/delete/"+e,n=t,o=this.addBodyToOptions({},n);return this.request(r,Be,null,o)},De.prototype.deletByPath=function(e,t){var r=he.convertPathToUrl(e),n=""+this.baseUri+r+"/"+t;return this.request(n,xe)},De.prototype.extendDeletByPath=function(e,t,r){var n=he.convertPathToUrl(e),o=this.baseUri+"/extension"+n+"/"+t,i=r,a=this.addBodyToOptions({},i);return this.request(o,Be,null,a)},De.prototype.batchDeleteByPath=function(e,t,r){var n=he.convertPathToUrl(e);if(n.split("/").length<3)throw Error("根据path删除实体数据出错了。传入的path["+e+"]格式不对");var o=this.baseUri+"/extension"+n+"/batch",i={ids:t.split(","),requestInfo:r},a=this.addBodyToOptions({},i);return this.request(o,Be,null,a)},De.prototype.batchDelete=function(e){var t={ids:e.join(",")};return this.request(this.baseUri,xe,t)},De.prototype.extendBatchDelete=function(e,t){var r=this.baseUri+"/extension/batchdelete",n={ids:e.join(",")},o=t,i=this.addBodyToOptions({},o);return this.request(r,Be,n,i)},De.prototype.cancel=function(e){var t=this.baseUri+"/service/cancel";return this.request(t,Pe,null,null,!1,!1,!1,e)},De.prototype.batchAppendByPath=function(e,t,r){var n=he.convertPathToUrl(e),o=""+this.baseUri+n+"/batch",i={requestInfo:r,retrieveDefaultParam:{defaultValues:t}},a=this.addBodyToOptions({},i);return this.request(o,Pe,null,a)},De.prototype.request=function(t,r,e,n,o,i,a,s){var p=this;n=n||{},void 0!==o&&"boolean"==typeof o||(o=!1),void 0!==i&&"boolean"==typeof i||(i=!1),e&&(n.params=e),n.headers=q.convertToHeaders(n.headers);var u=this.hasRequestInfo(n);return n&&n.body&&n.body.hasOwnProperty("RequestInfo")&&(n.body.requestInfo=n.body.RequestInfo,delete n.body.RequestInfo),this.proxyExtend.extendHeaders(n.headers,s).pipe(l.switchMap(function(e){return n.headers=q.toJson(e),n.observe="response",p.httpService.request(r,t,n)}),l.tap(function(e){return p.proxyExtend.parseHeaders(e)}),l.map(function(e){return e.body}),l.map(function(e){return u?(p.proxyExtend.onResponse(e,a),e):p.unWrapResponseInfo(e)}),l.catchError(function(e){return p.proxyExtend.onError(e,o,i)}))},De.prototype.invoke=function(t,r,n){var o=this;return n.params&&(t=this.proxyExtend.extendUrl(t,n.params),n.params=null),n.body&&(n.body=this.proxyExtend.extendBody(n.body)),n.headers=q.convertToHeaders(n.headers),this.proxyExtend.extendHeaders(n.headers).pipe(l.switchMap(function(e){return n.headers=q.toJson(e),n.observe="response",o.httpService.request(r,t,n).pipe(l.tap(function(e){return o.proxyExtend.parseHeaders(e)}),l.map(function(e){return e.body}),l.map(function(e){return o.proxyExtend.onResponse(e)}),l.catchError(function(e){return o.proxyExtend.onError(e,!1,!1)}))}))},De.prototype.addBodyToOptions=function(e,t){return e=e||{},Object.assign(e,{body:t})},De.prototype.buildParams=function(e){return w.buildParams(e)},De.prototype.hasRequestInfo=function(e){return T.hasRequestInfo(e)||T.hasRequestInfoWithR(e)},De.prototype.unWrapResponseInfo=function(e){return A.unWrapResponseInfo(e)},De.decorators=[{type:i.Injectable}],De.ctorParameters=function(){return[{type:a.HttpClient},{type:me}]},De);function De(e,t){this.httpClient=e,this.uriService=t,this.httpService=new H(this.httpClient)}var qe=(Object.defineProperty(Oe.prototype,"proxy",{get:function(){return this.repository.proxy?this.repository.proxy:this.createBefProxy()},enumerable:!0,configurable:!0}),Oe.prototype.createBefProxy=function(){var e=this.repository.serverUri,t=new me(e),r=new Re(this.httpClient,t);r.setBaseUri(this.baseUri);var n=new ve(this.repository);return r.setProxyExtend(n),r},Oe.prototype.query=function(e){return this.proxy.query(e)},Oe.prototype.extendQuery=function(e,t){return this.proxy.extendQuery(e,t)},Oe.prototype.serviceRetrieve=function(e,t,r){return this.proxy.serviceRetrieve(e,t,r)},Oe.prototype.queryChild=function(e){return this.proxy.queryChild(e)},Oe.prototype.retrieve=function(e){return this.proxy.retrieve(e)},Oe.prototype.extendRetrieve=function(e,t){return this.proxy.extendRetrieve(e,t)},Oe.prototype.create=function(e,t){return this.proxy.create(e,t)},Oe.prototype.createByPath=function(e,t){return this.proxy.createByPath(e,t)},Oe.prototype.update=function(e,t){return this.proxy.update(e,t)},Oe.prototype.save=function(e){return this.proxy.save(e)},Oe.prototype["delete"]=function(e){return this.proxy["delete"](e)},Oe.prototype.extendDelete=function(e,t){return this.proxy.extendDelete(e,t)},Oe.prototype.deletByPath=function(e,t){return this.proxy.deletByPath(e,t)},Oe.prototype.extendDeletByPath=function(e,t,r){return this.proxy.extendDeletByPath(e,t,r)},Oe.prototype.batchDeleteByPath=function(e,t,r){return this.proxy.batchDeleteByPath(e,t,r)},Oe.prototype.batchDelete=function(e){return this.proxy.batchDelete(e)},Oe.prototype.extendBatchDelete=function(e,t){return this.proxy.extendBatchDelete(e,t)},Oe.prototype.cancel=function(e){return this.proxy.cancel(e)},Oe.prototype.request=function(e,t,r,n,o,i,a){return this.innerRequest(e,t,r,n,o,i,a,!1)},Oe.prototype.invoke=function(e,t,r,n,o,i,a){if(n&&n.body&&n.body.RequestInfo)throw new Error("请使用requestInfo提交变更");return this.innerRequest(e,t,r,n,o,i,a,!0)},Oe.prototype.innerRequest=function(t,r,e,n,o,i,a,s){var p=this;n=n||{};var u="BEFSessionID";void 0!==o&&"boolean"==typeof o||(o=!1),void 0!==i&&"boolean"==typeof i||(i=!1),void 0!==s&&"boolean"==typeof s||(s=!1);var c=s?this.existRequestInfo:this.hasRequestInfo;e&&(n.params=e);var h=c(n),y=q.convertToHeaders(n.headers);return this.sessionService.getBeSessionId().pipe(l.switchMap(function(e){return y=p.sessionService.extendRequestHeaders(y),n.headers=q.toJson(y),n.observe="response",p.httpService.request(r,t,n)}),l.tap(function(e){e.headers&&e.headers.has(u)&&p.sessionService.setBeSessionId(e.headers.get(u))}),l.map(function(e){return e.body}),l.map(function(e){var t=A.parseBackEndMessage(e);return fe.handleMessage(t,p.repository.getInjector()),p.handleReponseInfo(e,h,a)}),l.catchError(function(e){var t=A.parseBackEndError(e);return fe.handleMessage(t,p.repository.getInjector()),p.handleErrors(e,o,i)}))},Oe.prototype.handleReponseInfo=function(e,t,r){return t?(e&&e.innerDataChange&&!0!==r&&this.repository.handleDataChangeDetails(e.innerDataChange),this.repository.clearAllEntityChanges(),e):this.unWrapResponseInfo(e)},Oe.prototype.handleErrors=function(e,t,r){if(this.clearLoading(),t)return I.throwError(e);var n=this.repository.appContext.getFormAppContext(),o=n.ApplicationId,i=!!(window[o]||{}).isExceptionHandlerExist;if(this.eventBus&&i){if(A.isReported401Error(e))return I.throwError(e);var a=A.parseBackEndError(e),s=fe.getFormlessMessages(a),p=s&&0<s.length||!1;return e&&e.error&&e.error.extensionMessage&&fe.isBackEndMessageHandlerExist(this.repository.getInjector())&&!p||this.eventBus.post("Exception","","onException",e,n),r?I.of(null):I.EMPTY}return I.throwError(e)},Oe.prototype.clearLoading=function(){var e,t;if(!1!==(window.DEVKIT_LOADING_SERVICE&&window.DEVKIT_LOADING_SERVICE instanceof Array&&0<window.DEVKIT_LOADING_SERVICE.length||!1)){var r=window.DEVKIT_LOADING_SERVICE;try{for(var n=P(r),o=n.next();!o.done;o=n.next()){var i=o.value;"function"==typeof i.clearAll&&i.clearAll()}}catch(a){e={error:a}}finally{try{o&&!o.done&&(t=n["return"])&&t.call(n)}finally{if(e)throw e.error}}}},Oe.prototype.unWrapResponseInfo=function(e){return A.unWrapResponseInfo(e)},Oe.prototype.hasRequestInfo=function(e){return T.hasRequestInfoWithR(e)},Oe.prototype.existRequestInfo=function(e){return T.hasRequestInfo(e)},Oe.prototype.buildParams=function(e){return w.buildParams(e)},Oe.prototype.buildBodyWithRequestInfo=function(e){return T.buildBodyWithRequestInfo(e,this.repository)},Oe.prototype.buildRequestInfo=function(){return T.buildRequestInfo(this.repository)},Oe.decorators=[{type:i.Injectable}],Oe.ctorParameters=function(){return[{type:a.HttpClient},{type:String},{type:f},{type:be},{type:S.EventBus}]},Oe);function Oe(e,t,r,n,o){this.httpClient=e,this.httpService=new H(this.httpClient),this.baseUri=t;var i=n.getInjector();this.sessionService=new Q(e,t,r,i),this.repository=n,this.eventBus=o}var we=(Me.prototype.getData=function(e,t){var r=e.split(".")[0],n=e.split(".")[1];return t=t||{},!0===this.ifEnableExtendLoadMethod(e)?this.extendGetHelpData(n,r,t):this.getHelpData(n,r,t)},Me.prototype.saveUserSettings=function(e){return this.befRepository.restService.invoke("/api/runtime/bcc/v1.0/datagrid/settings","POST",null,{body:e},!1)},Me.prototype.getUserSettings=function(e){var t="/api/runtime/bcc/v1.0/datagrid/settings/"+e;return this.befRepository.restService.invoke(t,"GET",null,null,!1)},Me.prototype.ifEnableExtendLoadMethod=function(e){if(this.context&&this.context.hasOwnProperty("enableExtendLoadMethod"))return this.context.enableExtendLoadMethod;var t=!1;if(this.frameContext){var r=e+"@"+this.frameContext.repository.apiUri;t=this.frameContext.getParam(r)}return t},Me.prototype.getHelpData=function(e,t,r){var n=this,o=this.befRepository.restService.baseUri+"/elementhelps/"+e;return this.befRepository.updateDataAndVariableChanges().pipe(l.switchMap(function(){return n.befRepository.restService.invoke(o,"GET",{nodeCode:t,queryParam:JSON.stringify(r)},null,!1)}))},Me.prototype.extendGetHelpData=function(e,t,r){var n=this.befRepository.restService.baseUri+"/extension/elementhelps",o={body:{labelId:e,nodeCode:t,queryParam:r,requestInfo:this.befRepository.restService.buildRequestInfo()}};return this.befRepository.restService.invoke(n,"PUT",null,o,!1,!0,!0).pipe(l.map(function(e){return e&&e.returnValue||null}))},Me.prototype.convert2TreeDataWithPathCode=function(n,t,r){var o=this;void 0===t&&(t=1),void 0===r&&(r="01");var e=n.filter(function(e){return e.layer===t&&e.pathcode===r});if(1<t&&(e=n.filter(function(e){return e.layer===t&&e.pathcode.substr(0,2*(t-1))===r})),e.length){var i=e.map(function(e){return{data:e,children:[]}});return i.forEach(function(e){var t,r=o.convert2TreeDataWithPathCode(n,e.data.layer+1,e.data.pathcode);(t=e.children).push.apply(t,D(r))}),i}},Me.decorators=[{type:i.Injectable}],Me.ctorParameters=function(){return[{type:S.Repository},{type:S.FrameContext,decorators:[{type:i.Optional}]}]},Me);function Me(e,t){this.frameContext=t,this.befRepository=e}var Te=(je.prototype.createSession=function(e){var t=this.sessionService.getUserSessionId();return t?this.befRepository.restService.invoke(e,"POST",null,{headers:new a.HttpHeaders({SessionId:t}),responseType:"text"},!1).pipe(l.switchMap(function(e){return I.of({status:!0,payload:e})})):I.of({status:!1,payload:"用户登录信息已过期,请重新登录"})},je.prototype.getData=function(e,t){var r=this,n={};t.condition&&(n=t.condition),"/"===e[e.length-1]&&(e=e.substr(0,e.length-1));var o=e+"/extension/query",i=e+"/service/createsession";if(n){var a=JSON.stringify(n);o=o+"?entityFilter="+a}return this.createSession(i).pipe(l.switchMap(function(e){if(e.status)return e.payload,r.befRepository.restService.invoke(o,"PUT",null,{},!1);throw new Error(e.payload)}),s.map(function(e){var t=e.returnValue,r={items:t.result};return t.pagination?Object.assign({},r,{total:t.pagination.totalCount,pageInfo:{pageSize:t.pagination.pageSize,pageIndex:t.pagination.pageIndex,enablePager:!0}}):r}))},je.decorators=[{type:i.Injectable}],je.ctorParameters=function(){return[{type:S.Repository},{type:f}]},je);function je(e,t){this.sessionService=t,this.befRepository=e}var Ae=(Ue.isExistUnsaveData=function(e){var t=!1;if(!e||!e.entityCollection)throw"Current Object is null or it's entityCollection is null.";var r=e.entityCollection.toArray();if(e.dataChangeHistory.isChanged())return!0;for(var n=0;n<r.length;n++)if(0<r[n].changes.length){t=!0;break}return t},Ue);function Ue(){}var He=(ke.prototype.toString=function(){return this.url},ke);function ke(e,t){void 0===t&&(t=null);var r=this;this.url=e,this.paths=t,this.paths&&Object.keys(t).forEach(function(e){-1!==r.url.indexOf("{"+e+"}")&&(r.url=r.url.replace("{"+e+"}",""+t[e]))})}var Ve=(Fe.prototype.getData=function(e,t,r){void 0===t&&(t={}),void 0===r&&(r="GET");var n=new a.HttpHeaders({"content-type":"application/json"});return"get"!==r.toLowerCase()?this.befRest.restService.invoke(e,r,null,{headers:n,body:t}):this.befRest.restService.invoke(e,r,t,{headers:n})},Fe.decorators=[{type:i.Injectable}],Fe.ctorParameters=function(){return[{type:S.Repository}]},Fe);function Fe(e){this.befRest=e}var Ne=(_e.prototype.getData=function(e,t,r){void 0===t&&(t={}),void 0===r&&(r="GET");var n=new a.HttpHeaders({"content-type":"application/json"});return this.befRest.restService.invoke(e,r,t,{headers:n})},_e.decorators=[{type:i.Injectable}],_e.ctorParameters=function(){return[{type:S.Repository}]},_e);function _e(e){this.befRest=e}e.VERSION="ver.",e.ChangeDetailType=b,e.BE_SERVER_URI_TOKEN=p,e.BE_SESSION_HANDLING_STRATEGY_TOKEN=u,e.BefChangeBuilder=c,e.BefChangeHandler=y,e.BefSessionService=Q,e.BefRestService=qe,e.BefProxy=Re,e.BefLookupRestService=we,e.BefLookupDefaultService=Te,e.BefRepository=be,e.FrameworkSessionService=f,e.NG_VARIABLE=Z,e.NgVariable=$,e.BefRepositoryUtil=Ae,e.BefDataPathUtil=he,e.UriService=me,e.Uri=He,e.DefaultComboHttpService=Ve,e.DefaultDynamiControlGroupHttpService=Ne,e.ɵa=ee,Object.defineProperty(e,"__esModule",{value:!0})});
//# sourceMappingURL=farris-bef.umd.min.js.map

@@ -77,3 +77,9 @@ /**

}
if (!(error && error.error && error.error.extensionMessage && BackEndMessageUtil.isBackEndMessageHandlerExist(this.context.getInjector()))) {
/** @type {?} */
const messages = ResponseInfoUtil.parseBackEndError(error);
/** @type {?} */
const bizMessages = BackEndMessageUtil.getFormlessMessages(messages);
/** @type {?} */
const isExistFormlessMessage = bizMessages && bizMessages.length > 0 || false;
if (!(error && error.error && error.error.extensionMessage && BackEndMessageUtil.isBackEndMessageHandlerExist(this.context.getInjector()) && !isExistFormlessMessage)) {
eventBus.post('Exception', '', 'onException', error, formAppContext);

@@ -178,2 +184,2 @@ }

}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmVmX3Byb3h5X2V4dGVuZC5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BmYXJyaXMvYmVmLyIsInNvdXJjZXMiOlsibGliL2JlZl9wcm94eV9leHRlbmQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFjLEVBQUUsRUFBRSxLQUFLLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFJekQsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRTNDLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLFNBQVMsQ0FBQztBQUMzQyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQzs7QUFHbkUsTUFBTSxPQUFPLGNBQWM7Ozs7SUFDekIsWUFBb0IsT0FBOEI7UUFBOUIsWUFBTyxHQUFQLE9BQU8sQ0FBdUI7SUFBSSxDQUFDOzs7Ozs7O0lBTWhELFVBQVUsQ0FBQyxRQUFzQixFQUFFLGFBQXVCO1FBQy9ELElBQUksUUFBUSxJQUFJLFFBQVEsQ0FBQyxlQUFlLElBQUksYUFBYSxLQUFLLElBQUksRUFBRTtZQUNsRSxJQUFJLENBQUMsT0FBTyxDQUFDLHVCQUF1QixDQUFDLFFBQVEsQ0FBQyxlQUFlLENBQUMsQ0FBQztTQUNoRTs7Y0FDSyxRQUFRLEdBQUcsZ0JBQWdCLENBQUMsbUJBQW1CLENBQUMsUUFBUSxDQUFDO1FBQy9ELGtCQUFrQixDQUFDLGFBQWEsQ0FBQyxRQUFRLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDO1FBQ3ZFLElBQUksQ0FBQyxPQUFPLENBQUMscUJBQXFCLEVBQUUsQ0FBQztRQUNyQyxJQUFJLFFBQVEsSUFBSSxRQUFRLENBQUMsY0FBYyxDQUFDLGFBQWEsQ0FBQyxFQUFFO1lBQ3RELE9BQU8sUUFBUSxDQUFDLFdBQVcsQ0FBQztTQUM3QjthQUFNO1lBQ0wsT0FBTyxRQUFRLENBQUM7U0FDakI7SUFDSCxDQUFDOzs7Ozs7OztJQU9NLE9B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QUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsWUFBWSxDQUFDLEVBQUU7WUFDMUQsSUFBSSxDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUMsY0FBYyxDQUFDLGNBQWMsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDO1NBQzVGO0lBQ0gsQ0FBQztDQUNGOzs7Ozs7SUF6SGEsaUNBQXNDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgdGhyb3dFcnJvciwgT2JzZXJ2YWJsZSwgb2YsIEVNUFRZIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IEVudGl0eSB9IGZyb20gJ0BmYXJyaXMvZGV2a2l0JztcclxuaW1wb3J0IHsgSVByb3h5RXh0ZW5kLCBSZXNwb25zZUluZm8gfSBmcm9tICcuL3R5cGVzJztcclxuaW1wb3J0IHsgQmVmUmVwb3NpdG9yeSB9IGZyb20gJy4vYmVmX3JlcG9zaXRvcnknO1xyXG5pbXBvcnQgeyBzd2l0Y2hNYXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcbmltcG9ydCB7IEh0dHBQYXJhbXMsIEh0dHBIZWFkZXJzIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xyXG5pbXBvcnQgeyBSZXNwb25zZUluZm9VdGlsIH0gZnJvbSAnLi91dGlscyc7XHJcbmltcG9ydCB7IEJhY2tFbmRNZXNzYWdlVXRpbCB9IGZyb20gJy4vdXRpbHMvYmFja19lbmRfbWVzc2FnZS51dGlsJztcclxuXHJcbi8vIHRzbGludDpkaXNhYmxlOiBtYXgtbGluZS1sZW5ndGggdHNsaW50OmRpc2FibGU6IG5vLXN0cmluZy1saXRlcmFsXHJcbmV4cG9ydCBjbGFzcyBCZWZQcm94eUV4dGVuZCBpbXBsZW1lbnRzIElQcm94eUV4dGVuZCB7XHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBjb250ZXh0OiBCZWZSZXBvc2l0b3J5PEVudGl0eT4pIHsgfVxyXG4gIC8qKlxyXG4gICAqIOivt+axgue7k+aenOi/lOWbnlxyXG4gICAqIEBwYXJhbSByZXNwb25zZSByZXNwb25zZVxyXG4gICAqIEBwYXJhbSBpZ25vcmVDaGFuZ2VzIOW/veeVpeWPmOabtFxyXG4gICAqL1xyXG4gIHB1YmxpYyBvblJlc3BvbnNlKHJlc3BvbnNlOiBSZXNwb25zZUluZm8sIGlnbm9yZUNoYW5nZXM/OiBib29sZWFuKSB7XHJcbiAgICBpZiAocmVzcG9uc2UgJiYgcmVzcG9uc2UuaW5uZXJEYXRhQ2hhbmdlICYmIGlnbm9yZUNoYW5nZXMgIT09IHRydWUpIHtcclxuICAgICAgdGhpcy5jb250ZXh0LmhhbmRsZURhdGFDaGFuZ2VEZXRhaWxzKHJlc3BvbnNlLmlubmVyRGF0YUNoYW5nZSk7XHJcbiAgICB9XHJcbiAgICBjb25zdCBtZXNzYWdlcyA9IFJlc3BvbnNlSW5mb1V0aWwucGFyc2VCYWNrRW5kTWVzc2FnZShyZXNwb25zZSk7XHJcbiAgICBCYWNrRW5kTWVzc2FnZVV0aWwuaGFuZGxlTWVzc2FnZShtZXNzYWdlcywgdGhpcy5jb250ZXh0LmdldEluamVjdG9yKCkpO1xyXG4gICAgdGhpcy5jb250ZXh0LmNsZWFyQWxsRW50aXR5Q2hhbmdlcygpO1xyXG4gICAgaWYgKHJlc3BvbnNlICYmIHJlc3BvbnNlLmhhc093blByb3BlcnR5KCdyZXR1cm5WYWx1ZScpKSB7XHJcbiAgICAgIHJldHVybiByZXNwb25zZS5yZXR1cm5WYWx1ZTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHJldHVybiByZXNwb25zZTtcclxuICAgIH1cclxuICB9XHJcbiAgLyoqXHJcbiAgICog5Y+R55Sf6ZSZ6K+vXHJcbiAgICogQHBhcmFtIGVycm9yIGVycm9yXHJcbiAgICogQHBhcmFtIHNlbGZIYW5kRXJyb3Ig6Ieq5a6a5LmJ6ZSZ6K+v5aSE55CGXHJcbiAgICogQHBhcmFtIGlnbm9yZUVycm9yIOW/veeVpemUmeivr1xyXG4gICAqL1xyXG4gIHB1YmxpYyBvbkVycm9yKGVycm9yOiBhbnksIHNlbGZIYW5kRXJyb3I6IGJvb2xlYW4sIGlnbm9yZUVycm9yOiBib29sZWFuKTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuICAgIGNvbnN0IGZvcm1BcHBDb250ZXh0ID0gdGhpcy5jb250ZXh0LmFwcENvbnRleHQuZ2V0Rm9ybUFwcENvbnRleHQoKTtcclxuICAgIGNvbnN0IGFwcGxpY2F0aW9uSWQgPSBmb3JtQXBwQ29udGV4dC5BcHBsaWNhdGlvbklkO1xyXG4gICAgY29uc3QgbG9hZGluZ1NlcnZpY2VzID0gd2luZG93WydERVZLSVRfTE9BRElOR19TRVJWSUNFJ107XHJcbiAgICBjb25zdCBtZXNzYWdlcyA9IFJlc3BvbnNlSW5mb1V0aWwucGFyc2VCYWNrRW5kRXJyb3IoZXJyb3IpO1xyXG4gICAgQmFja0VuZE1lc3NhZ2VVdGlsLmhhbmRsZU1lc3NhZ2UobWVzc2FnZXMsIHRoaXMuY29udGV4dC5nZXRJbmplY3RvcigpKTtcclxuICAgIGlmIChsb2FkaW5nU2VydmljZXMgJiYgbG9hZGluZ1NlcnZpY2VzIGluc3RhbmNlb2YgQXJyYXkgJiYgbG9hZGluZ1NlcnZpY2VzLmxlbmd0aCA+IDApIHtcclxuICAgICAgZm9yIChjb25zdCBsb2FkaW5nU2VydmljZSBvZiBsb2FkaW5nU2VydmljZXMpIHtcclxuICAgICAgICBpZiAodHlwZW9mIChsb2FkaW5nU2VydmljZS5jbGVhckFsbCkgPT09ICdmdW5jdGlvbicpIHtcclxuICAgICAgICAgIGxvYWRpbmdTZXJ2aWNlLmNsZWFyQWxsKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKCEhc2VsZkhhbmRFcnJvcikge1xyXG4gICAgICByZXR1cm4gdGhyb3dFcnJvcihlcnJvcik7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBjb25zdCBldmVudEJ1cyA9IHRoaXMuY29udGV4dC5yZXN0U2VydmljZS5ldmVudEJ1cztcclxuICAgICAgY29uc3QgYXBwbGljYXRpb25Db250ZXh0OiBhbnkgPSB3aW5kb3dbYXBwbGljYXRpb25JZF0gfHwge307XHJcbiAgICAgIGNvbnN0IGlzRXhjZXB0aW9uSGFuZGxlckV4aXN0ID0gISFhcHBsaWNhdGlvbkNvbnRleHQuaXNFeGNlcHRpb25IYW5kbGVyRXhpc3Q7XHJcblxyXG4gICAgICBpZiAoISFldmVudEJ1cyAmJiBpc0V4Y2VwdGlvbkhhbmRsZXJFeGlzdCkge1xyXG4gICAgICAgIGlmIChSZXNwb25zZUluZm9VdGlsLmlzUmVwb3J0ZWQ0MDFFcnJvcihlcnJvcikpIHtcclxuICAgICAgICAgIHJldHVybiB0aHJvd0Vycm9yKGVycm9yKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKCEoZXJyb3IgJiYgZXJyb3IuZXJyb3IgJiYgZXJyb3IuZXJyb3IuZXh0ZW5zaW9uTWVzc2FnZSAmJiBCYWNrRW5kTWVzc2FnZVV0aWwuaXNCYWNrRW5kTWVzc2FnZUhhbmRsZXJFeGlzdCh0aGlzLmNvbnRleHQuZ2V0SW5qZWN0b3IoKSkpKSB7XHJcbiAgICAgICAgICBldmVudEJ1cy5wb3N0KCdFeGNlcHRpb24nLCAnJywgJ29uRXhjZXB0aW9uJywgZXJyb3IsIGZvcm1BcHBDb250ZXh0KTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKGlnbm9yZUVycm9yKSB7XHJcbiAgICAgICAgICByZXR1cm4gb2YobnVsbCk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHJldHVybiBFTVBUWTtcclxuICAgICAgICB9XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoZXJyb3IpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIOaJqeWxlWh0dHAgaGVhZGVyc1xyXG4gICAqIEBwYXJhbSBoZWFkZXJzIGhlYWRlcnNcclxuICAgKi9cclxuICBwdWJsaWMgZXh0ZW5kSGVhZGVycyhoZWFkZXJzOiBIdHRwSGVhZGVycywgcnVudGltZUNvbnRleHQ/OiBhbnkpOiBPYnNlcnZhYmxlPHsgW3Byb3BOYW1lOiBzdHJpbmddOiBhbnkgfT4ge1xyXG4gICAgY29uc3QgJGdldFNlc3Npb25JZCA9IHRoaXMuY29udGV4dC5yZXN0U2VydmljZS5zZXNzaW9uU2VydmljZS5nZXRCZVNlc3Npb25JZCgpO1xyXG4gICAgcmV0dXJuICRnZXRTZXNzaW9uSWQucGlwZShcclxuICAgICAgc3dpdGNoTWFwKHNlc3Npb25JZCA9PiB7XHJcbiAgICAgICAgaGVhZGVycyA9IHRoaXMuY29udGV4dC5yZXN0U2VydmljZS5zZXNzaW9uU2VydmljZS5leHRlbmRSZXF1ZXN0SGVhZGVycyhoZWFkZXJzLCBydW50aW1lQ29udGV4dCk7XHJcbiAgICAgICAgcmV0dXJuIG9mKGhlYWRlcnMpO1xyXG4gICAgICB9KVxyXG4gICAgKTtcclxuICB9XHJcbiAgLyoqXHJcbiAgICog5omp5bGV6K+35rGC5Y+C5pWwXHJcbiAgICogQHBhcmFtIHBhcmFtcyDlj4LmlbBcclxuICAgKi9cclxuICBwdWJsaWMgZXh0ZW5kVXJsKHVybDogc3RyaW5nLCBwYXJhbXM6IHsgW3Byb3BOYW1lOiBzdHJpbmddOiBhbnkgfSk6IHN0cmluZyB7XHJcbiAgICBpZiAoIXBhcmFtcykge1xyXG4gICAgICByZXR1cm4gdXJsO1xyXG4gICAgfVxyXG4gICAgZm9yIChjb25zdCBrZXkgaW4gcGFyYW1zKSB7XHJcbiAgICAgIGlmIChwYXJhbXMuaGFzT3duUHJvcGVydHkoa2V5KSkge1xyXG4gICAgICAgIGNvbnN0IHZhbHVlID0gSlNPTi5zdHJpbmdpZnkocGFyYW1zW2tleV0pO1xyXG4gICAgICAgIGlmICh1cmwuaW5kZXhPZignPycpID09PSAtMSkge1xyXG4gICAgICAgICAgdXJsID0gYCR7dXJsfT8ke2tleX09JHt2YWx1ZX1gO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICB1cmwgPSBgJHt1cmx9JiR7a2V5fT0ke3ZhbHVlfWA7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gdXJsO1xyXG4gIH1cclxuICAvKipcclxuICAgKiDmianlsZXor7fmsYLkvZNcclxuICAgKiBAcGFyYW0gYm9keSBib2R5XHJcbiAgICovXHJcbiAgcHVibGljIGV4dGVuZEJvZHkoYm9keSk6IHsgW3Byb3BOYW1lOiBzdHJpbmddOiBhbnkgfSB7XHJcbiAgICBpZiAoIWJvZHkgfHwgdHlwZW9mIGJvZHkgIT09ICdvYmplY3QnIHx8IE9iamVjdC5rZXlzKGJvZHkpLmxlbmd0aCA8IDEpIHtcclxuICAgICAgcmV0dXJuIGJvZHk7XHJcbiAgICB9XHJcbiAgICBPYmplY3Qua2V5cyhib2R5KS5mb3JFYWNoKG5hbWUgPT4ge1xyXG4gICAgICBpZiAobmFtZSA9PT0gJ3JlcXVlc3RJbmZvJykge1xyXG4gICAgICAgIGJvZHlbJ3JlcXVlc3RJbmZvJ10gPSB0aGlzLmNvbnRleHQucmVzdFNlcnZpY2UuYnVpbGRSZXF1ZXN0SW5mbygpO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICAgIC8vIOWFvOWuuUrniYjlkI7nq69ib2R55Y+q5pyJ5LiA5Liqa2V55pe2Ym9keeWPquS8oHZhbHVl55qE5oOF5Ya1XHJcbiAgICBpZiAoT2JqZWN0LmtleXMoYm9keSkubGVuZ3RoID09PSAxKSB7XHJcbiAgICAgIGJvZHkgPSBPYmplY3QudmFsdWVzKGJvZHkpWzBdO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIGJvZHk7XHJcbiAgfVxyXG4gIHB1YmxpYyBwYXJzZUhlYWRlcnMocmVzcG9uc2U6IGFueSkge1xyXG4gICAgY29uc3Qgc2Vzc2lvbklkS2V5ID0gJ0JFRlNlc3Npb25JRCc7XHJcbiAgICBpZiAocmVzcG9uc2UuaGVhZGVycyAmJiByZXNwb25zZS5oZWFkZXJzLmhhcyhzZXNzaW9uSWRLZXkpKSB7XHJcbiAgICAgIHRoaXMuY29udGV4dC5yZXN0U2VydmljZS5zZXNzaW9uU2VydmljZS5zZXRCZVNlc3Npb25JZChyZXNwb25zZS5oZWFkZXJzLmdldChzZXNzaW9uSWRLZXkpKTtcclxuICAgIH1cclxuICB9XHJcbn1cclxuIl19
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmVmX3Byb3h5X2V4dGVuZC5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BmYXJyaXMvYmVmLyIsInNvdXJjZXMiOlsibGliL2JlZl9wcm94eV9leHRlbmQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFjLEVBQUUsRUFBRSxLQUFLLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFJekQsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRTNDLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLFNBQVMsQ0FBQztBQUMzQyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQzs7QUFHbkUsTUFBTSxPQUFPLGNBQWM7Ozs7SUFDekIsWUFBb0IsT0FBOEI7UUFBOUIsWUFBTyxHQUFQLE9BQU8sQ0FBdUI7SUFBSSxDQUFDOzs7Ozs7O0lBTWhELFVBQVUsQ0FBQyxRQUFzQixFQUFFLGFBQXVCO1FBQy9ELElBQUksUUFBUSxJQUFJLFFBQVEsQ0FBQyxlQUFlLElBQUksYUFBYSxLQUFLLElBQUksRUFBRTtZQUNsRSxJQUFJLENBQUMsT0FBTyxDQUFDLHVCQUF1QixDQUFDLFFBQVEsQ0FBQyxlQUFlLENBQUMsQ0FBQztTQUNoRTs7Y0FDSyxRQUFRLEdBQUcsZ0JBQWdCLENBQUMsbUJBQW1CLENBQUMsUUFBUSxDQUFDO1FBQy9ELGtCQUFrQixDQUFDLGFBQWEsQ0FBQyxRQUFRLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDO1FBQ3ZFLElBQUksQ0FBQyxPQUFPLENBQUMscUJBQXFCLEVBQUUsQ0FBQztRQUNyQyxJQUFJLFFBQVEsSUFBSSxRQUFRLENBQUMsY0FBYyxDQUFDLGFBQWEsQ0FBQyxFQUFFO1lBQ3RELE9BQU8sUUFBUSxDQUFDLFdBQVcsQ0FBQztTQUM3QjthQUFNO1lBQ0wsT0FBTyxRQUFRLENBQUM7U0FDakI7SUFDSCxDQUFDOzs7Ozs7OztJQU9NLE9B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O1lBQ2xDLElBQUksR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1NBQy9CO1FBQ0QsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDOzs7OztJQUNNLFlBQVksQ0FBQyxRQUFhOztjQUN6QixZQUFZLEdBQUcsY0FBYztRQUNuQyxJQUFJLFFBQVEsQ0FBQyxPQUFPLElBQUksUUFBUSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsWUFBWSxDQUFDLEVBQUU7WUFDMUQsSUFBSSxDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUMsY0FBYyxDQUFDLGNBQWMsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDO1NBQzVGO0lBQ0gsQ0FBQztDQUNGOzs7Ozs7SUE1SGEsaUNBQXNDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgdGhyb3dFcnJvciwgT2JzZXJ2YWJsZSwgb2YsIEVNUFRZIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IEVudGl0eSB9IGZyb20gJ0BmYXJyaXMvZGV2a2l0JztcclxuaW1wb3J0IHsgSVByb3h5RXh0ZW5kLCBSZXNwb25zZUluZm8gfSBmcm9tICcuL3R5cGVzJztcclxuaW1wb3J0IHsgQmVmUmVwb3NpdG9yeSB9IGZyb20gJy4vYmVmX3JlcG9zaXRvcnknO1xyXG5pbXBvcnQgeyBzd2l0Y2hNYXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcbmltcG9ydCB7IEh0dHBQYXJhbXMsIEh0dHBIZWFkZXJzIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xyXG5pbXBvcnQgeyBSZXNwb25zZUluZm9VdGlsIH0gZnJvbSAnLi91dGlscyc7XHJcbmltcG9ydCB7IEJhY2tFbmRNZXNzYWdlVXRpbCB9IGZyb20gJy4vdXRpbHMvYmFja19lbmRfbWVzc2FnZS51dGlsJztcclxuXHJcbi8vIHRzbGludDpkaXNhYmxlOiBtYXgtbGluZS1sZW5ndGggdHNsaW50OmRpc2FibGU6IG5vLXN0cmluZy1saXRlcmFsXHJcbmV4cG9ydCBjbGFzcyBCZWZQcm94eUV4dGVuZCBpbXBsZW1lbnRzIElQcm94eUV4dGVuZCB7XHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBjb250ZXh0OiBCZWZSZXBvc2l0b3J5PEVudGl0eT4pIHsgfVxyXG4gIC8qKlxyXG4gICAqIOivt+axgue7k+aenOi/lOWbnlxyXG4gICAqIEBwYXJhbSByZXNwb25zZSByZXNwb25zZVxyXG4gICAqIEBwYXJhbSBpZ25vcmVDaGFuZ2VzIOW/veeVpeWPmOabtFxyXG4gICAqL1xyXG4gIHB1YmxpYyBvblJlc3BvbnNlKHJlc3BvbnNlOiBSZXNwb25zZUluZm8sIGlnbm9yZUNoYW5nZXM/OiBib29sZWFuKSB7XHJcbiAgICBpZiAocmVzcG9uc2UgJiYgcmVzcG9uc2UuaW5uZXJEYXRhQ2hhbmdlICYmIGlnbm9yZUNoYW5nZXMgIT09IHRydWUpIHtcclxuICAgICAgdGhpcy5jb250ZXh0LmhhbmRsZURhdGFDaGFuZ2VEZXRhaWxzKHJlc3BvbnNlLmlubmVyRGF0YUNoYW5nZSk7XHJcbiAgICB9XHJcbiAgICBjb25zdCBtZXNzYWdlcyA9IFJlc3BvbnNlSW5mb1V0aWwucGFyc2VCYWNrRW5kTWVzc2FnZShyZXNwb25zZSk7XHJcbiAgICBCYWNrRW5kTWVzc2FnZVV0aWwuaGFuZGxlTWVzc2FnZShtZXNzYWdlcywgdGhpcy5jb250ZXh0LmdldEluamVjdG9yKCkpO1xyXG4gICAgdGhpcy5jb250ZXh0LmNsZWFyQWxsRW50aXR5Q2hhbmdlcygpO1xyXG4gICAgaWYgKHJlc3BvbnNlICYmIHJlc3BvbnNlLmhhc093blByb3BlcnR5KCdyZXR1cm5WYWx1ZScpKSB7XHJcbiAgICAgIHJldHVybiByZXNwb25zZS5yZXR1cm5WYWx1ZTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHJldHVybiByZXNwb25zZTtcclxuICAgIH1cclxuICB9XHJcbiAgLyoqXHJcbiAgICog5Y+R55Sf6ZSZ6K+vXHJcbiAgICogQHBhcmFtIGVycm9yIGVycm9yXHJcbiAgICogQHBhcmFtIHNlbGZIYW5kRXJyb3Ig6Ieq5a6a5LmJ6ZSZ6K+v5aSE55CGXHJcbiAgICogQHBhcmFtIGlnbm9yZUVycm9yIOW/veeVpemUmeivr1xyXG4gICAqL1xyXG4gIHB1YmxpYyBvbkVycm9yKGVycm9yOiBhbnksIHNlbGZIYW5kRXJyb3I6IGJvb2xlYW4sIGlnbm9yZUVycm9yOiBib29sZWFuKTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuICAgIGNvbnN0IGZvcm1BcHBDb250ZXh0ID0gdGhpcy5jb250ZXh0LmFwcENvbnRleHQuZ2V0Rm9ybUFwcENvbnRleHQoKTtcclxuICAgIGNvbnN0IGFwcGxpY2F0aW9uSWQgPSBmb3JtQXBwQ29udGV4dC5BcHBsaWNhdGlvbklkO1xyXG4gICAgY29uc3QgbG9hZGluZ1NlcnZpY2VzID0gd2luZG93WydERVZLSVRfTE9BRElOR19TRVJWSUNFJ107XHJcbiAgICBjb25zdCBtZXNzYWdlcyA9IFJlc3BvbnNlSW5mb1V0aWwucGFyc2VCYWNrRW5kRXJyb3IoZXJyb3IpO1xyXG4gICAgQmFja0VuZE1lc3NhZ2VVdGlsLmhhbmRsZU1lc3NhZ2UobWVzc2FnZXMsIHRoaXMuY29udGV4dC5nZXRJbmplY3RvcigpKTtcclxuICAgIGlmIChsb2FkaW5nU2VydmljZXMgJiYgbG9hZGluZ1NlcnZpY2VzIGluc3RhbmNlb2YgQXJyYXkgJiYgbG9hZGluZ1NlcnZpY2VzLmxlbmd0aCA+IDApIHtcclxuICAgICAgZm9yIChjb25zdCBsb2FkaW5nU2VydmljZSBvZiBsb2FkaW5nU2VydmljZXMpIHtcclxuICAgICAgICBpZiAodHlwZW9mIChsb2FkaW5nU2VydmljZS5jbGVhckFsbCkgPT09ICdmdW5jdGlvbicpIHtcclxuICAgICAgICAgIGxvYWRpbmdTZXJ2aWNlLmNsZWFyQWxsKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKCEhc2VsZkhhbmRFcnJvcikge1xyXG4gICAgICByZXR1cm4gdGhyb3dFcnJvcihlcnJvcik7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBjb25zdCBldmVudEJ1cyA9IHRoaXMuY29udGV4dC5yZXN0U2VydmljZS5ldmVudEJ1cztcclxuICAgICAgY29uc3QgYXBwbGljYXRpb25Db250ZXh0OiBhbnkgPSB3aW5kb3dbYXBwbGljYXRpb25JZF0gfHwge307XHJcbiAgICAgIGNvbnN0IGlzRXhjZXB0aW9uSGFuZGxlckV4aXN0ID0gISFhcHBsaWNhdGlvbkNvbnRleHQuaXNFeGNlcHRpb25IYW5kbGVyRXhpc3Q7XHJcblxyXG4gICAgICBpZiAoISFldmVudEJ1cyAmJiBpc0V4Y2VwdGlvbkhhbmRsZXJFeGlzdCkge1xyXG4gICAgICAgIGlmIChSZXNwb25zZUluZm9VdGlsLmlzUmVwb3J0ZWQ0MDFFcnJvcihlcnJvcikpIHtcclxuICAgICAgICAgIHJldHVybiB0aHJvd0Vycm9yKGVycm9yKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgY29uc3QgbWVzc2FnZXMgPSBSZXNwb25zZUluZm9VdGlsLnBhcnNlQmFja0VuZEVycm9yKGVycm9yKTtcclxuICAgICAgICBjb25zdCBiaXpNZXNzYWdlcyA9IEJhY2tFbmRNZXNzYWdlVXRpbC5nZXRGb3JtbGVzc01lc3NhZ2VzKG1lc3NhZ2VzKTtcclxuICAgICAgICBjb25zdCBpc0V4aXN0Rm9ybWxlc3NNZXNzYWdlID0gYml6TWVzc2FnZXMgJiYgYml6TWVzc2FnZXMubGVuZ3RoID4gMCB8fCBmYWxzZTtcclxuICAgICAgICBpZiAoIShlcnJvciAmJiBlcnJvci5lcnJvciAmJiBlcnJvci5lcnJvci5leHRlbnNpb25NZXNzYWdlICYmIEJhY2tFbmRNZXNzYWdlVXRpbC5pc0JhY2tFbmRNZXNzYWdlSGFuZGxlckV4aXN0KHRoaXMuY29udGV4dC5nZXRJbmplY3RvcigpKSAmJiAhaXNFeGlzdEZvcm1sZXNzTWVzc2FnZSkpIHtcclxuICAgICAgICAgIGV2ZW50QnVzLnBvc3QoJ0V4Y2VwdGlvbicsICcnLCAnb25FeGNlcHRpb24nLCBlcnJvciwgZm9ybUFwcENvbnRleHQpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoaWdub3JlRXJyb3IpIHtcclxuICAgICAgICAgIHJldHVybiBvZihudWxsKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgcmV0dXJuIEVNUFRZO1xyXG4gICAgICAgIH1cclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICByZXR1cm4gdGhyb3dFcnJvcihlcnJvcik7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcbiAgLyoqXHJcbiAgICog5omp5bGVaHR0cCBoZWFkZXJzXHJcbiAgICogQHBhcmFtIGhlYWRlcnMgaGVhZGVyc1xyXG4gICAqL1xyXG4gIHB1YmxpYyBleHRlbmRIZWFkZXJzKGhlYWRlcnM6IEh0dHBIZWFkZXJzLCBydW50aW1lQ29udGV4dD86IGFueSk6IE9ic2VydmFibGU8eyBbcHJvcE5hbWU6IHN0cmluZ106IGFueSB9PiB7XHJcbiAgICBjb25zdCAkZ2V0U2Vzc2lvbklkID0gdGhpcy5jb250ZXh0LnJlc3RTZXJ2aWNlLnNlc3Npb25TZXJ2aWNlLmdldEJlU2Vzc2lvbklkKCk7XHJcbiAgICByZXR1cm4gJGdldFNlc3Npb25JZC5waXBlKFxyXG4gICAgICBzd2l0Y2hNYXAoc2Vzc2lvbklkID0+IHtcclxuICAgICAgICBoZWFkZXJzID0gdGhpcy5jb250ZXh0LnJlc3RTZXJ2aWNlLnNlc3Npb25TZXJ2aWNlLmV4dGVuZFJlcXVlc3RIZWFkZXJzKGhlYWRlcnMsIHJ1bnRpbWVDb250ZXh0KTtcclxuICAgICAgICByZXR1cm4gb2YoaGVhZGVycyk7XHJcbiAgICAgIH0pXHJcbiAgICApO1xyXG4gIH1cclxuICAvKipcclxuICAgKiDmianlsZXor7fmsYLlj4LmlbBcclxuICAgKiBAcGFyYW0gcGFyYW1zIOWPguaVsFxyXG4gICAqL1xyXG4gIHB1YmxpYyBleHRlbmRVcmwodXJsOiBzdHJpbmcsIHBhcmFtczogeyBbcHJvcE5hbWU6IHN0cmluZ106IGFueSB9KTogc3RyaW5nIHtcclxuICAgIGlmICghcGFyYW1zKSB7XHJcbiAgICAgIHJldHVybiB1cmw7XHJcbiAgICB9XHJcbiAgICBmb3IgKGNvbnN0IGtleSBpbiBwYXJhbXMpIHtcclxuICAgICAgaWYgKHBhcmFtcy5oYXNPd25Qcm9wZXJ0eShrZXkpKSB7XHJcbiAgICAgICAgY29uc3QgdmFsdWUgPSBKU09OLnN0cmluZ2lmeShwYXJhbXNba2V5XSk7XHJcbiAgICAgICAgaWYgKHVybC5pbmRleE9mKCc/JykgPT09IC0xKSB7XHJcbiAgICAgICAgICB1cmwgPSBgJHt1cmx9PyR7a2V5fT0ke3ZhbHVlfWA7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHVybCA9IGAke3VybH0mJHtrZXl9PSR7dmFsdWV9YDtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiB1cmw7XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIOaJqeWxleivt+axguS9k1xyXG4gICAqIEBwYXJhbSBib2R5IGJvZHlcclxuICAgKi9cclxuICBwdWJsaWMgZXh0ZW5kQm9keShib2R5KTogeyBbcHJvcE5hbWU6IHN0cmluZ106IGFueSB9IHtcclxuICAgIGlmICghYm9keSB8fCB0eXBlb2YgYm9keSAhPT0gJ29iamVjdCcgfHwgT2JqZWN0LmtleXMoYm9keSkubGVuZ3RoIDwgMSkge1xyXG4gICAgICByZXR1cm4gYm9keTtcclxuICAgIH1cclxuICAgIE9iamVjdC5rZXlzKGJvZHkpLmZvckVhY2gobmFtZSA9PiB7XHJcbiAgICAgIGlmIChuYW1lID09PSAncmVxdWVzdEluZm8nKSB7XHJcbiAgICAgICAgYm9keVsncmVxdWVzdEluZm8nXSA9IHRoaXMuY29udGV4dC5yZXN0U2VydmljZS5idWlsZFJlcXVlc3RJbmZvKCk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gICAgLy8g5YW85a65SueJiOWQjuerr2JvZHnlj6rmnInkuIDkuKprZXnml7Zib2R55Y+q5LygdmFsdWXnmoTmg4XlhrVcclxuICAgIGlmIChPYmplY3Qua2V5cyhib2R5KS5sZW5ndGggPT09IDEpIHtcclxuICAgICAgYm9keSA9IE9iamVjdC52YWx1ZXMoYm9keSlbMF07XHJcbiAgICB9XHJcbiAgICByZXR1cm4gYm9keTtcclxuICB9XHJcbiAgcHVibGljIHBhcnNlSGVhZGVycyhyZXNwb25zZTogYW55KSB7XHJcbiAgICBjb25zdCBzZXNzaW9uSWRLZXkgPSAnQkVGU2Vzc2lvbklEJztcclxuICAgIGlmIChyZXNwb25zZS5oZWFkZXJzICYmIHJlc3BvbnNlLmhlYWRlcnMuaGFzKHNlc3Npb25JZEtleSkpIHtcclxuICAgICAgdGhpcy5jb250ZXh0LnJlc3RTZXJ2aWNlLnNlc3Npb25TZXJ2aWNlLnNldEJlU2Vzc2lvbklkKHJlc3BvbnNlLmhlYWRlcnMuZ2V0KHNlc3Npb25JZEtleSkpO1xyXG4gICAgfVxyXG4gIH1cclxufVxyXG4iXX0=

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

import { HttpClient } from '@angular/common/http';
import { encodeUrl } from '@farris/devkit';
import { BefDataPathUtil } from './bef_data_path_util';

@@ -81,3 +82,4 @@ import { UriService } from './uri_service';

/** @type {?} */
const entityFilterJson = JSON.stringify(entityFilter);
let entityFilterJson = JSON.stringify(entityFilter);
entityFilterJson = encodeUrl(entityFilterJson);
url = `${url}?entityFilter=${entityFilterJson}`;

@@ -607,2 +609,2 @@ }

}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmVmX3Byb3h5LmpzIiwic291cmNlUm9vdCI6Im5nOi8vQGZhcnJpcy9iZWYvIiwic291cmNlcyI6WyJsaWIvYmVmX3Byb3h5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsT0FBTyxFQUFFLFVBQVUsRUFBWSxNQUFNLGVBQWUsQ0FBQztBQUVyRCxPQUFPLEVBQUUsU0FBUyxFQUFFLEdBQUcsRUFBRSxVQUFVLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDakUsT0FBTyxFQUEyQixVQUFVLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUUzRSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDdkQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQUUsY0FBYyxFQUFFLGFBQWEsRUFBRSxlQUFlLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDakcsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDOztNQUd2QyxHQUFHLEdBQUcsS0FBSzs7TUFDWCxNQUFNLEdBQUcsUUFBUTs7TUFDakIsR0FBRyxHQUFHLEtBQUs7O01BQ1gsSUFBSSxHQUFHLE1BQU07O01BQ2IsS0FBSyxHQUFHLE9BQU87Ozs7OztBQVFyQixNQUFNLE9BQU8sUUFBUTs7Ozs7SUFPbkIsWUFBbUIsVUFBc0IsRUFBUyxVQUFzQjtRQUFyRCxlQUFVLEdBQVYsVUFBVSxDQUFZO1FBQVMsZUFBVSxHQUFWLFVBQVUsQ0FBWTtRQUN0RSxJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksV0FBVyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUN0RCxDQUFDOzs7Ozs7SUFLTSxVQUFVLENBQUMsT0FBZTtRQUMvQixJQUFJLENBQUMsT0FBTyxHQUFHLE9BQU8sQ0FBQztJQUN6QixDQUFDOzs7Ozs7SUFLTSxjQUFjLENBQUMsV0FBeUI7UUFDN0MsSUFBSSxDQUFDLFdBQVcsR0FB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Q0FBQyxtQkFBbUIsQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUNqRyxDQUFDOzs7Ozs7O0lBSU8sa0JBQWtCLENBQUMsTUFBVztRQUNwQyxPQUFPLGdCQUFnQixDQUFDLGtCQUFrQixDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ3JELENBQUM7OztZQTdaRixVQUFVOzs7O1lBbkJ1QixVQUFVO1lBR25DLFVBQVU7Ozs7Ozs7SUFrQmpCLCtCQUFvQzs7Ozs7O0lBSXBDLDJCQUEwQjs7Ozs7SUFDMUIsK0JBQWlDOztJQUNyQiw4QkFBNkI7O0lBQUUsOEJBQTZCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSwgT3B0aW9uYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgZW1wdHksIHRocm93RXJyb3IsIG9mIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IHN3aXRjaE1hcCwgbWFwLCBjYXRjaEVycm9yLCB0YXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcbmltcG9ydCB7IEh0dHBIZWFkZXJzLCBIdHRwUGFyYW1zLCBIdHRwQ2xpZW50IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xyXG5pbXBvcnQgeyBJUHJveHlFeHRlbmQsIFJlcXVlc3RJbmZvLCBSZXNwb25zZUluZm8sIENoYW5nZURldGFpbCB9IGZyb20gJy4vdHlwZXMnO1xyXG5pbXBvcnQgeyBCZWZEYXRhUGF0aFV0aWwgfSBmcm9tICcuL2JlZl9kYXRhX3BhdGhfdXRpbCc7XHJcbmltcG9ydCB7IFVyaVNlcnZpY2UgfSBmcm9tICcuL3VyaV9zZXJ2aWNlJztcclxuaW1wb3J0IHsgSHR0cEhlYWRlclV0aWwsIEh0dHBQYXJhbVV0aWwsIFJlcXVlc3RJbmZvVXRpbCwgUmVzcG9uc2VJbmZvVXRpbCB9IGZyb20gJy4vdXRpbHMvaW5kZXgnO1xyXG5pbXBvcnQgeyBIdHRwU2VydmljZSB9IGZyb20gJy4vaHR0cF9zZXJ2aWNlJztcclxuXHJcblxyXG5jb25zdCBHRVQgPSAnR0VUJztcclxuY29uc3QgREVMRVRFID0gJ0RFTEVURSc7XHJcbmNvbnN0IFBVVCA9ICdQVVQnO1xyXG5jb25zdCBQT1NUID0gJ1BPU1QnO1xyXG5jb25zdCBQQVRDSCA9ICdQQVRDSCc7XHJcblxyXG4vKipcclxuICogQmVm5Luj55CG57G7XHJcbiAqIOS7o+eQhuexu+eahOiBjOi0o+aYr+WkhOeQhmh0dHDor7fmsYLvvIzlj5HpgIHkuIDkuKpodHRw6K+35rGC5omA6ZyA55qE6LWE5rqQ5pyJ77yadXJp77yMbWV0aG9k77yMaGVhZGVy44CBYm9keeOAgXF1ZXJ5IHBhcmFtZXRlclxyXG4gKiB1cmkg55SxdXJpU2VydmljZVxyXG4gKi9cclxuQEluamVjdGFibGUoKVxyXG5leHBvcnQgY2xhc3MgQmVmUHJveHkge1xyXG4gIHByb3RlY3RlZCBwcm94eUV4dGVuZDogSVByb3h5RXh0ZW5kO1xyXG4gIC8qKlxyXG4gICAqIHJlc3RmdWzln7rot6/lvoRcclxuICAgKi9cclxuICBwcm90ZWN0ZWQgYmFzZVVyaTogc3RyaW5nO1xyXG4gIHByaXZhdGUgaHR0cFNlcnZpY2U6IEh0dHBTZXJ2aWNlO1xyXG4gIGNvbnN0cnVjdG9yKHB1YmxpYyBodHRwQ2xpZW50OiBIdHRwQ2xpZW50LCBwdWJsaWMgdXJpU2VydmljZTogVXJpU2VydmljZSkge1xyXG4gICAgdGhpcy5odHRwU2VydmljZSA9IG5ldyBIdHRwU2VydmljZSh0aGlzLmh0dHBDbGllbnQpO1xyXG4gIH1cclxuICAvKipcclxuICAgKiDorr7nva7ln7rot6/lvoRcclxuICAgKiBAcGFyYW0gYmFzZVVyaSDln7rot6/lvoRcclxuICAgKi9cclxuICBwdWJsaWMgc2V0QmFzZVVyaShiYXNlVXJpOiBzdHJpbmcpOiB2b2lkIHtcclxuICAgIHRoaXMuYmFzZVVyaSA9IGJhc2VVcmk7XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIOiuvue9ruetlueVpeaooeW8j1xyXG4gICAqIEBwYXJhbSBzdHJhdGVneSDnrZbnlaVcclxuICAgKi9cclxuICBwdWJsaWMgc2V0UHJveHlFeHRlbmQocHJveHlFeHRlbmQ6IElQcm94eUV4dGVuZCkge1xyXG4gICAgdGhpcy5wcm94eUV4dGVuZCA9IHByb3h5RXh0ZW5kO1xyXG4gIH1cclxuICAvKipcclxuICAgKiDmn6Xor6JcclxuICAgKi9cclxuICBwdWJsaWMgcXVlcnkoZW50aXR5RmlsdGVyPzogYW55KTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuICAgIGxldCB1cmwgPSB0aGlzLmJhc2VVcmk7XHJcbiAgICBpZiAoZW50aXR5RmlsdGVyKSB7XHJcbiAgICAgIGNvbnN0IGVudGl0eUZpbHRlckpzb24gPSBKU09OLnN0cmluZ2lmeShlbnRpdHlGaWx0ZXIpO1xyXG4gICAgICB1cmwgPSBgJHt1cmx9P2VudGl0eUZpbHRlcj0ke2VudGl0eUZpbHRlckpzb259YDtcclxuICAgIH1cclxuICAgIHJldHVybiB0aGlzLnJlcXVlc3QodXJsLCBHRVQpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICog5omp5bGV5p+l6K+iXHJcbiAgICovXHJcbiAgcHVibGljIGV4dGVuZFF1ZXJ5KGVudGl0eUZpbHRlcjogYW55LCByZXF1ZXN0SW5mbzogUmVxdWVzdEluZm8pOiBPYnNlcnZhYmxlPFJlc3BvbnNlSW5mbz4ge1xyXG4gICAgbGV0IHVybCA9IGAke3RoaXMuYmFzZVVyaX0vZXh0ZW5zaW9uL3F1ZXJ5YDtcclxuICAgIGlmIChlbnRpdHlGaWx0ZXIpIHtcclxuICAgICAgY29uc3QgZW50aXR5RmlsdGVySnNvbiA9IEpTT04uc3RyaW5naWZ5KGVudGl0eUZpbHRlcik7XHJcbiAgICAgIHVybCA9IGAke3VybH0/ZW50aXR5RmlsdGVyPSR7ZW50aXR5RmlsdGVySnNvbn1gO1xyXG4gICAgfVxyXG4gICAgY29uc3QgYm9keSA9IHJlcXVlc3RJbmZvO1xyXG4gICAgY29uc3Qgb3B0aW9ucyA9IHRoaXMuYWRkQm9keVRvT3B0aW9ucyh7fSwgYm9keSk7XHJcbiAgICByZXR1cm4gdGhpcy5yZXF1ZXN0KHVybCwgUFVULCBudWxsLCBvcHRpb25zLCBmYWxzZSk7XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIOafpeivouaVsOaNru+8iOW4pui/h+a7pOadoeS7tu+8iVxyXG4gICAqIEBwYXJhbSBlbnRpdHlGaWx0ZXIg6L+H5ruk44CB5o6S5bqP44CB5YiG6aG15L+h5oGvXHJcbiAgICogQHBhcmFtIHJlcXVlc3RJbmZvIHJlcXVlc3RJbmZvXHJcbiAgICogQGRlc2NyaXB0aW9uIOWSjGV4dGVuZFF1ZXJ55LiA6Ie077yM5LuF5bCG5p+l6K+i5Y+C5pWw5pS+5YiwYm9keeS4rVxyXG4gICAqL1xyXG4gIHB1YmxpYyBmaWx0ZXIoZW50aXR5RmlsdGVyOiBhbnksIHJlcXVlc3RJbmZvOiBSZXF1ZXN0SW5mbyk6IE9ic2VydmFibGU8UmVzcG9uc2VJbmZvPiB7XHJcbiAgICBsZXQgdXJsID0gYCR7dGhpcy5iYXNlVXJpfS9leHRlbnNpb24vZmlsdGVyYDtcclxuICAgIGxldCBib2R5OiBhbnkgPSB7IHJlcXVlc3RJbmZvIH07XHJcbiAgICBpZiAoZW50aXR5RmlsdGVyKSB7XHJcbiAgICAgIGJvZHkgPSB7IGVudGl0eUZpbHRlciwgcmVxdWVzdEluZm8gfTtcclxuICAgIH1cclxuICAgIGNvbnN0IG9wdGlvbnMgPSB0aGlzLmFkZEJvZHlUb09wdGlvbnMoe30sIGJvZHkpO1xyXG4gICAgcmV0dXJuIHRoaXMucmVxdWVzdCh1cmwsIFBPU1QsIG51bGwsIG9wdGlvbnMsIGZhbHNlKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIOajgOe0ouaVsOaNrlxyXG4gICAqIEBwYXJhbSBpZCDljZXmja7lhoXnoIFcclxuICAgKiBAcmV0dXJuIOaVsOaNruWvueixoVxyXG4gICAqL1xyXG4gIHB1YmxpYyByZXRyaWV2ZShpZDogc3RyaW5nKTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuICAgIGNvbnN0IHVybCA9IGAke3RoaXMuYmFzZVVyaX0vJHtpZH1gO1xyXG4gICAgcmV0dXJuIHRoaXMucmVxdWVzdCh1cmwsIEdFVCk7XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIOWIhumhteafpeivouWQhOS7juihqOaVsOaNrlxyXG4gICAqIEBwYXJhbSBpZCDkuLvooahpZFxyXG4gICAqIEBwYXJhbSBvcHRpb25zIOmAiemhuVxyXG4gICAqL1xyXG4gIHB1YmxpYyBzZXJ2aWNlUmV0cmlldmUoaWQ6IHN0cmluZywgcmV0cmlldmVQYXJhbTogYW55LCByZXF1ZXN0SW5mbzogUmVxdWVzdEluZm8pOiBPYnNlcnZhYmxlPGFueT4ge1xyXG4gICAgY29uc3QgdXJsID0gYCR7dGhpcy5iYXNlVXJpfS9zZXJ2aWNlL3JldHJpZXZlLyR7aWR9YDtcclxuICAgIGNvbnN0IG9wdGlvbnMgPSB7XHJcbiAgICAgIGJvZHk6IHsgcmV0cmlldmVQYXJhbSwgcmVxdWVzdEluZm8gfVxyXG4gICAgfTtcclxuICAgIHJldHVybiB0aGlzLnJlcXVlc3QodXJsLCBQVVQsIG51bGwsIG9wdGlvbnMpO1xyXG4gIH1cclxuICAvKipcclxuICAgKiDliIbpobXmn6Xor6Lku47ooagv5LuO5LuO6KGo5pWw5o2uXHJcbiAgICogQHBhcmFtIHBhcmFtcyDlj4LmlbBcclxuICAgKi9cclxuICBwdWJsaWMgcXVlcnlDaGlsZChwYXJhbXM6IGFueSkge1xyXG4gICAgY29uc3QgdXJsID0gYCR7dGhpcy5iYXNlVXJpfS9zZXJ2aWNlL3F1ZXJ5Y2hpbGRgO1xyXG4gICAgY29uc3Qgb3B0aW9ucyA9IHsgYm9keTogcGFyYW1zIH07XHJcbiAgICByZXR1cm4gdGhpcy5yZXF1ZXN0KHVybCwgUFVULCBudWxsLCBvcHRpb25zKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIOajgOe0ouaVsOaNru+8iOaJqeWxle+8iVxyXG4gICAqL1xyXG4gIHB1YmxpYyBleHRlbmRSZXRyaWV2ZShpZDogc3RyaW5nLCByZXF1ZXN0SW5mbzogUmVxdWVzdEluZm8pOiBPYnNlcnZhYmxlPFJlc3BvbnNlSW5mbz4ge1xyXG4gICAgY29uc3QgdXJsID0gYCR7dGhpcy5iYXNlVXJpfS9leHRlbnNpb24vcmV0cmlldmUvJHtpZH1gO1xyXG4gICAgY29uc3QgYm9keSA9IHJlcXVlc3RJbmZvO1xyXG4gICAgY29uc3Qgb3B0aW9ucyA9IHRoaXMuYWRkQm9keVRvT3B0aW9ucyh7fSwgYm9keSk7XHJcbiAgICByZXR1cm4gdGhpcy5yZXF1ZXN0KHVybCwgUFVULCBudWxsLCBvcHRpb25zKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIOajgOe0ouaVsOaNrlxyXG4gICAqL1xyXG4gIHB1YmxpYyBlZGl0KGlkOiBzdHJpbmcsIHJlcXVlc3RJbmZvOiBSZXF1ZXN0SW5mbyk6IE9ic2VydmFibGU8UmVzcG9uc2VJbmZvPiB7XHJcbiAgICBjb25zdCB1cmwgPSBgJHt0aGlzLmJhc2VVcml9L3NlcnZpY2UvZWRpdC8ke2lkfWA7XHJcbiAgICBjb25zdCBib2R5ID0gcmVxdWVzdEluZm87XHJcbiAgICBjb25zdCBvcHRpb25zID0gdGhpcy5hZGRCb2R5VG9PcHRpb25zKHt9LCBib2R5KTtcclxuICAgIHJldHVybiB0aGlzLnJlcXVlc3QodXJsLCBQVVQsIG51bGwsIG9wdGlvbnMpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICog5Yib5bu65LiA5p2h5pWw5o2uXHJcbiAgICovXHJcbiAgcHVibGljIGNyZWF0ZShkZWZhdWx0VmFsdWU/OiBhbnksIHJlcXVlc3RJbmZvPzogUmVxdWVzdEluZm8pOiBPYnNlcnZhYmxlPGFueT4ge1xyXG4gICAgY29uc3QgYm9keSA9IHtcclxuICAgICAgZGVmYXVsdFZhbHVlLFxyXG4gICAgICByZXF1ZXN0SW5mbzogcmVxdWVzdEluZm8sXHJcbiAgICB9O1xyXG4gICAgY29uc3Qgb3B0aW9ucyA9IHRoaXMuYWRkQm9keVRvT3B0aW9ucyh7fSwgYm9keSk7XHJcbiAgICByZXR1cm4gdGhpcy5yZXF1ZXN0KHRoaXMuYmFzZVVyaSwgUE9TVCwgbnVsbCwgb3B0aW9ucyk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiDku47ooajmlrDlop5cclxuICAgKiBAcGF0aCDmlrDlop7ot6/lvoTvvIjku47ooajlvaLlpoLvvJovMS9lZHVz77yM5LuO5LuO6KGo5b2i5aaC77yaLzEvZWR1cy8xMS9ncmFkZXPvvIlcclxuICAgKi9cclxuICBwdWJsaWMgY3JlYXRlQnlQYXRoKGZwYXRoOiBzdHJpbmcsIHJlcXVlc3RJbmZvPzogUmVxdWVzdEluZm8pOiBPYnNlcnZhYmxlPGFueT4ge1xyXG4gICAgY29uc3QgcGF0aFVybCA9IEJlZkRhdGFQYXRoVXRpbC5jb252ZXJ0UGF0aFRvVXJsKGZwYXRoKTtcclxuICAgIGNvbnN0IHVybCA9IGAke3RoaXMuYmFzZVVyaX0ke3BhdGhVcmx9YDtcclxuXHJcbiAgICBjb25zdCBib2R5ID0gcmVxdWVzdEluZm87XHJcbiAgICBjb25zdCBvcHRpb25zID0gdGhpcy5hZGRCb2R5VG9PcHRpb25zKHt9LCBib2R5KTtcclxuICAgIHJldHVybiB0aGlzLnJlcXVlc3QodXJsLCBQT1NULCBudWxsLCBvcHRpb25zKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIOaPkOS6pOWPmOabtFxyXG4gICAqL1xyXG4gIHVwZGF0ZShjaGFuZ2VEZXRhaWw6IENoYW5nZURldGFpbCwgcmVxdWVzdEluZm8/OiBSZXF1ZXN0SW5mbyk6IE9ic2VydmFibGU8YW55PiB7XHJcbiAgICBjb25zdCBib2R5ID0ge1xyXG4gICAgICBjaGFuZ2VEZXRhaWwsXHJcbiAgICAgIHJlcXVlc3RJbmZvOiByZXF1ZXN0SW5mbyxcclxuICAgIH07XHJcbiAgICBjb25zdCBvcHRpb25zID0gdGhpcy5hZGRCb2R5VG9PcHRpb25zKHt9LCBib2R5KTtcclxuXHJcbiAgICByZXR1cm4gdGhpcy5yZXF1ZXN0KHRoaXMuYmFzZVVyaSwgUEFUQ0gsIG51bGwsIG9wdGlvbnMpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICog5omn6KGM5L+d5a2YXHJcbiAgICovXHJcbiAgcHVibGljIHNhdmUocmVxdWVzdEluZm8/OiBSZXF1ZXN0SW5mbyk6IE9ic2VydmFibGU8YW55PiB7XHJcbiAgICBjb25zdCBib2R5ID0gcmVxdWVzdEluZm87XHJcbiAgICBjb25zdCBvcHRpb25zID0gdGhpcy5hZGRCb2R5VG9PcHRpb25zKHt9LCBib2R5KTtcclxuICAgIHJldHVybiB0aGlzLnJlcXVlc3QodGhpcy5iYXNlVXJpLCBQVVQsIG51bGwsIG9wdGlvbnMpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICog5Yig6ZmkXHJcbiAgICovXHJcbiAgcHVibGljIGRlbGV0ZShpZDogc3RyaW5nKTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuICAgIGNvbnN0IHVybCA9IGAke3RoaXMuYmFzZVVyaX0vJHtpZH1gO1xyXG4gICAgcmV0dXJuIHRoaXMucmVxdWVzdCh1cmwsIERFTEVURSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiDliKDpmaTlubbkv53lrZhcclxuICAgKi9cclxuICBwdWJsaWMgZGVsZXRlQW5kU2F2ZShpZDogYW55LCByZXF1ZXN0SW5mbzogUmVxdWVzdEluZm8pOiBPYnNlcnZhYmxlPFJlc3BvbnNlSW5mbz4ge1xyXG4gICAgY29uc3QgdXJsID0gYCR7dGhpcy5iYXNlVXJpfS9zZXJ2aWNlL2RlbGV0ZS8ke2lkfWA7XHJcbiAgICBjb25zdCBib2R5ID0gcmVxdWVzdEluZm87XHJcbiAgICBjb25zdCBvcHRpb25zID0gdGhpcy5hZGRCb2R5VG9PcHRpb25zKHt9LCBib2R5KTtcclxuICAgIHJldHVybiB0aGlzLnJlcXVlc3QodXJsLCBQVVQsIG51bGwsIG9wdGlvbnMpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICog5Yig6Zmk77yI5omp5bGV77yJXHJcbiAgICovXHJcbiAgcHVibGljIGV4dGVuZERlbGV0ZShpZDogc3RyaW5nLCByZXF1ZXN0SW5mbzogUmVxdWVzdEluZm8pOiBPYnNlcnZhYmxlPFJlc3BvbnNlSW5mbz4ge1xyXG4gICAgY29uc3QgdXJsID0gYCR7dGhpcy5iYXNlVXJpfS9leHRlbnNpb24vZGVsZXRlLyR7aWR9YDtcclxuICAgIGNvbnN0IGJvZHkgPSByZXF1ZXN0SW5mbztcclxuICAgIGNvbnN0IG9wdGlvbnMgPSB0aGlzLmFkZEJvZHlUb09wdGlvbnMoe30sIGJvZHkpO1xyXG4gICAgcmV0dXJuIHRoaXMucmVxdWVzdCh1cmwsIFBVVCwgbnVsbCwgb3B0aW9ucyk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiDliKDpmaTlkI7ku6NcclxuICAgKiBAcGFyYW0gZnBhdGgg54i26Lev5b6E77yI5LuO6KGo5b2i5aaC77yaLzEvZWR1c++8jOS7juS7juihqOW9ouWmgu+8mi8xL2VkdXMvMTEvZ3JhZGVz77yJXHJcbiAgICovXHJcbiAgcHVibGljIGRlbGV0QnlQYXRoKGZwYXRoOiBzdHJpbmcsIGlkOiBzdHJpbmcpOiBPYnNlcnZhYmxlPGFueT4ge1xyXG4gICAgY29uc3QgcGF0aFVybCA9IEJlZkRhdGFQYXRoVXRpbC5jb252ZXJ0UGF0aFRvVXJsKGZwYXRoKTtcclxuICAgIGNvbnN0IHVybCA9IGAke3RoaXMuYmFzZVVyaX0ke3BhdGhVcmx9LyR7aWR9YDtcclxuICAgIHJldHVybiB0aGlzLnJlcXVlc3QodXJsLCBERUxFVEUpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICog5Yig6Zmk5ZCO5Luj77yI5omp5bGV77yJXHJcbiAgICogQHBhcmFtIGZwYXRoIOeItui3r+W+hO+8iOS7juihqOW9ouWmgu+8mi8xL2VkdXPvvIzku47ku47ooajlvaLlpoLvvJovMS9lZHVzLzExL2dyYWRlc++8iVxyXG4gICAqL1xyXG4gIHB1YmxpYyBleHRlbmREZWxldEJ5UGF0aChmcGF0aDogc3RyaW5nLCBpZDogc3RyaW5nLCByZXF1ZXN0SW5mbzogUmVxdWVzdEluZm8pOiBPYnNlcnZhYmxlPFJlc3BvbnNlSW5mbz4ge1xyXG4gICAgY29uc3QgcGF0aFVybCA9IEJlZkRhdGFQYXRoVXRpbC5jb252ZXJ0UGF0aFRvVXJsKGZwYXRoKTtcclxuICAgIGNvbnN0IHVybCA9IGAke3RoaXMuYmFzZVVyaX0vZXh0ZW5zaW9uJHtwYXRoVXJsfS8ke2lkfWA7XHJcbiAgICBjb25zdCBib2R5ID0gcmVxdWVzdEluZm87XHJcbiAgICBjb25zdCBvcHRpb25zID0gdGhpcy5hZGRCb2R5VG9PcHRpb25zKHt9LCBib2R5KTtcclxuICAgIHJldHVybiB0aGlzLnJlcXVlc3QodXJsLCBQVVQsIG51bGwsIG9wdGlvbnMpO1xyXG4gIH1cclxuICAvKipcclxuICAgKiDmibnph4/liKDpmaTlkI7ku6NcclxuICAgKiBAcGFyYW0gZlBhdGggJ2V4dGVuc2lvbi97cm9vdElkfS9jYy9iYXRjaCdcclxuICAgKiBAcGFyYW0gIGlkcyDlrZDpm4ZpZFxyXG4gICAqIEBwYXJhbSAgcmVxdWVzdEluZm8g6K+35rGC5L+h5oGvXHJcbiAgICovXHJcbiAgcHVibGljIGJhdGNoRGVsZXRlQnlQYXRoKGZQYXRoOiBzdHJpbmcsIGlkczogc3RyaW5nLCByZXF1ZXN0SW5mbzogUmVxdWVzdEluZm8pOiBPYnNlcnZhYmxlPFJlc3BvbnNlSW5mbz4ge1xyXG4gICAgY29uc3QgcGF0aFVybCA9IEJlZkRhdGFQYXRoVXRpbC5jb252ZXJ0UGF0aFRvVXJsKGZQYXRoKTtcclxuICAgIGNvbnN0IHBhdGhBcnJheSA9IHBhdGhVcmwuc3BsaXQoJy8nKTtcclxuICAgIGlmIChwYXRoQXJyYXkubGVuZ3RoIDwgMykge1xyXG4gICAgICB0aHJvdyBFcnJvcihg5qC55o2ucGF0aOWIoOmZpOWunuS9k+aVsOaNruWHuumUmeS6huOAguS8oOWFpeeahHBhdGhbJHtmUGF0aH1d5qC85byP5LiN5a+5YCk7XHJcbiAgICB9XHJcbiAgICAvKiAgIGNvbnN0IHJvb3RJZCA9IHBhdGhBcnJheVsxXTtcclxuXHJcbiAgICBjb25zdCBuYW1lQXJyYXkgPSBbXTtcclxuICAgIHBhdGhBcnJheS5mb3JFYWNoKChuYW1lLCBpbmRleCkgPT4ge1xyXG4gICAgICBpZiAoaW5kZXggPiAxICkge1xyXG4gICAgICAgIGlmIChuYW1lLmluZGV4T2YoJ3MnKSAhPT0gLTEpIHtcclxuICAgICAgICAgIG5hbWVBcnJheS5wdXNoKG5hbWUuc3Vic3RyKDAsIG5hbWUubGVuZ3RoIC0gMSkpO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICBuYW1lQXJyYXkucHVzaChuYW1lKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gICAgY29uc3QgY2hpbGROYW1lID0gbmFtZUFycmF5LmpvaW4oJy8nKTsqL1xyXG4gICAgY29uc3QgdXJsID0gYCR7dGhpcy5iYXNlVXJpfS9leHRlbnNpb24ke3BhdGhVcmx9L2JhdGNoYDtcclxuICAgIGNvbnN0IGlkc0FycmF5ID0gaWRzLnNwbGl0KCcsJyk7XHJcbiAgICBjb25zdCBib2R5ID0ge1xyXG4gICAgICBpZHM6IGlkc0FycmF5LFxyXG4gICAgICByZXF1ZXN0SW5mbzogcmVxdWVzdEluZm9cclxuICAgIH07XHJcbiAgICBjb25zdCBvcHRpb25zID0gdGhpcy5hZGRCb2R5VG9PcHRpb25zKHt9LCBib2R5KTtcclxuICAgIHJldHVybiB0aGlzLnJlcXVlc3QodXJsLCBQVVQsIG51bGwsIG9wdGlvbnMpO1xyXG4gIH1cclxuICAvKipcclxuICAgKiDmibnph4/liKDpmaRcclxuICAgKiBAcGFyYW0gaWRzIOW+heWIoOmZpOeahGlk5pWw57uEXHJcbiAgICovXHJcbiAgcHVibGljIGJhdGNoRGVsZXRlKGlkczogc3RyaW5nW10pOiBPYnNlcnZhYmxlPGFueT4ge1xyXG4gICAgY29uc3QgcGFyYW1zID0ge1xyXG4gICAgICBpZHM6IGlkcy5qb2luKCcsJylcclxuICAgIH07XHJcbiAgICByZXR1cm4gdGhpcy5yZXF1ZXN0KHRoaXMuYmFzZVVyaSwgREVMRVRFLCBwYXJhbXMpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICog5om56YeP5Yig6Zmk77yI5omp5bGV77yJXHJcbiAgICovXHJcbiAgcHVibGljIGV4dGVuZEJhdGNoRGVsZXRlKGlkczogc3RyaW5nW10sIHJlcXVlc3RJbmZvOiBSZXF1ZXN0SW5mbyk6IE9ic2VydmFibGU8UmVzcG9uc2VJbmZvPiB7XHJcbiAgICBjb25zdCB1cmwgPSBgJHt0aGlzLmJhc2VVcml9L2V4dGVuc2lvbi9iYXRjaGRlbGV0ZWA7XHJcbiAgICBjb25zdCBwYXJhbXMgPSB7XHJcbiAgICAgIGlkczogaWRzLmpvaW4oJywnKVxyXG4gICAgfTtcclxuXHJcbiAgICBjb25zdCBib2R5ID0gcmVxdWVzdEluZm87XHJcbiAgICBjb25zdCBvcHRpb25zID0gdGhpcy5hZGRCb2R5VG9PcHRpb25zKHt9LCBib2R5KTtcclxuICAgIHJldHVybiB0aGlzLnJlcXVlc3QodXJsLCBQVVQsIHBhcmFtcywgb3B0aW9ucyk7XHJcbiAgfVxyXG5cclxuXHJcbiAgLyoqXHJcbiAgICog5Y+W5raIXHJcbiAgICovXHJcbiAgcHVibGljIGNhbmNlbChjb250ZXh0PzogYW55KTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuICAgIGNvbnN0IHVybCA9IGAke3RoaXMuYmFzZVVyaX0vc2VydmljZS9jYW5jZWxgO1xyXG4gICAgcmV0dXJuIHRoaXMucmVxdWVzdCh1cmwsIFBPU1QsIG51bGwsIG51bGwsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGNvbnRleHQpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICog5om56YeP5paw5aKe5LuO6KGoL+S7juS7juihqOaVsOaNrlxyXG4gICAqIEBwYXJhbSBwYXRoIOWunuS9k+e7keWumui3r+W+hO+8jGxpa2UgMS9jaGlsZHMgb3IgMS9jaGlsZHMvMTEvY2hpbGRjaGlsZHNcclxuICAgKiBAcGFyYW0gZGVmYXVsdFZhbHVlcyDpu5jorqTlrp7kvZPmlbDmja7mlbDnu4RcclxuICAgKi9cclxuICBwdWJsaWMgYmF0Y2hBcHBlbmRCeVBhdGgocGF0aDogc3RyaW5nLCBkZWZhdWx0VmFsdWVzOiBBcnJheTxhbnk+LCByZXF1ZXN0SW5mbzogUmVxdWVzdEluZm8pOiBPYnNlcnZhYmxlPGFueT4ge1xyXG4gICAgY29uc3QgcGF0aFVybCA9IEJlZkRhdGFQYXRoVXRpbC5jb252ZXJ0UGF0aFRvVXJsKHBhdGgpO1xyXG4gICAgY29uc3QgdXJsID0gYCR7dGhpcy5iYXNlVXJpfSR7cGF0aFVybH0vYmF0Y2hgO1xyXG4gICAgY29uc3QgYm9keSA9IHtcclxuICAgICAgcmVxdWVzdEluZm8sXHJcbiAgICAgIHJldHJpZXZlRGVmYXVsdFBhcmFtOntcclxuICAgICAgICBkZWZhdWx0VmFsdWVzXHJcbiAgICAgIH1cclxuICAgIH07XHJcbiAgICBjb25zdCBvcHRpb25zID0gdGhpcy5hZGRCb2R5VG9PcHRpb25zKHt9LCBib2R5KTtcclxuICAgIHJldHVybiB0aGlzLnJlcXVlc3QodXJsLCBQT1NULCBudWxsLCBvcHRpb25zKTtcclxuICB9XHJcbiAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOiBtYXgtbGluZS1sZW5ndGhcclxuICBwdWJsaWMgcmVxdWVzdChcclxuICAgIHVybDogc3RyaW5nLCBtZXRob2Q6IHN0cmluZywgcGFyYW1zPzogYW55LCBvcHRpb25zPzogYW55LFxyXG4gICAgc2VsZkhhbmRFcnJvcj86IGJvb2xlYW4sIGlnbm9yZUVycm9yPzogYm9vbGVhbiwgaWdub3JlQ2hhbmdlcz86IGJvb2xlYW4sIHJ1bnRpbWVDb250ZXh0PzogYW55XHJcbiAgKTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuICAgIG9wdGlvbnMgPSBvcHRpb25zIHx8IHt9O1xyXG5cclxuICAgIC8vIOaYr+WQpuiHquihjOWkhOeQhumUmeivr1xyXG4gICAgaWYgKHR5cGVvZiAoc2VsZkhhbmRFcnJvcikgPT09ICd1bmRlZmluZWQnIHx8IHR5cGVvZiAoc2VsZkhhbmRFcnJvcikgIT09ICdib29sZWFuJykge1xyXG4gICAgICBzZWxmSGFuZEVycm9yID0gZmFsc2U7XHJcbiAgICB9XHJcblxyXG4gICAgLy8g5piv5ZCm5b+955Wl5byC5bi457un57ut5omn6KGMXHJcbiAgICBpZiAodHlwZW9mIChpZ25vcmVFcnJvcikgPT09ICd1bmRlZmluZWQnIHx8IHR5cGVvZiAoaWdub3JlRXJyb3IpICE9PSAnYm9vbGVhbicpIHtcclxuICAgICAgaWdub3JlRXJyb3IgPSBmYWxzZTtcclxuICAgIH1cclxuXHJcbiAgICAvLyBwYXJhbXNcclxuICAgIGlmIChwYXJhbXMpIHtcclxuICAgICAgLy8gY29uc3QgaHR0cFBhcmFtcyA9IHRoaXMuYnVpbGRQYXJhbXMocGFyYW1zKTtcclxuICAgICAgb3B0aW9ucy5wYXJhbXMgPSBwYXJhbXM7XHJcbiAgICB9XHJcblxyXG4gICAgLy8g5aSE55CGaGVhZGVyc1xyXG4gICAgb3B0aW9ucy5oZWFkZXJzID0gSHR0cEhlYWRlclV0aWwuY29udmVydFRvSGVhZGVycyhvcHRpb25zLmhlYWRlcnMpO1xyXG4gICAgLy8gMeOAgeWIpOaWreaYr+WQpuW4pnJlcXVlc3RJbmZv77yI5LiN5Yy65YiG6aaW5a2X5q+N5aSn5bCP5YaZ77yJO1xyXG4gICAgLy8gMuOAgeWmguaenOS8oOmAkueahOaYr1JlcXVlc3RJbmZv77yM5YiZ6L2s5o2i5Li6cmVxdWVzdEluZm/vvJtcclxuICAgIGNvbnN0IGhhc1JlcXVlc3RJbmZvID0gdGhpcy5oYXNSZXF1ZXN0SW5mbyhvcHRpb25zKTtcclxuICAgIGlmIChvcHRpb25zICYmIG9wdGlvbnMuYm9keSAmJiBvcHRpb25zLmJvZHkuaGFzT3duUHJvcGVydHkoJ1JlcXVlc3RJbmZvJykpIHtcclxuICAgICAgb3B0aW9ucy5ib2R5LnJlcXVlc3RJbmZvID0gb3B0aW9ucy5ib2R5LlJlcXVlc3RJbmZvO1xyXG4gICAgICBkZWxldGUgb3B0aW9ucy5ib2R5LlJlcXVlc3RJbmZvO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHRoaXMucHJveHlFeHRlbmQuZXh0ZW5kSGVhZGVycyhvcHRpb25zLmhlYWRlcnMsIHJ1bnRpbWVDb250ZXh0KS5waXBlKFxyXG4gICAgICBzd2l0Y2hNYXAoaGVhZGVycyA9PiB7XHJcbiAgICAgICAgb3B0aW9ucy5oZWFkZXJzID0gSHR0cEhlYWRlclV0aWwudG9Kc29uKGhlYWRlcnMpO1xyXG4gICAgICAgIG9wdGlvbnMub2JzZXJ2ZSA9ICdyZXNwb25zZSc7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cFNlcnZpY2UucmVxdWVzdChtZXRob2QsIHVybCwgb3B0aW9ucyk7XHJcbiAgICAgIH0pLFxyXG4gICAgICB0YXAoKHJlc3BvbnNlOiBhbnkpID0+IHRoaXMucHJveHlFeHRlbmQucGFyc2VIZWFkZXJzKHJlc3BvbnNlKSksXHJcbiAgICAgIG1hcCgocmVzdWx0OiBhbnkpID0+IHJlc3VsdC5ib2R5KSxcclxuICAgICAgbWFwKChyZXN1bHQ6IGFueSkgPT4ge1xyXG4gICAgICAgIGlmIChoYXNSZXF1ZXN0SW5mbykge1xyXG4gICAgICAgICAgdGhpcy5wcm94eUV4dGVuZC5vblJlc3BvbnNlKHJlc3VsdCwgaWdub3JlQ2hhbmdlcyk7XHJcbiAgICAgICAgICByZXR1cm4gcmVzdWx0O1xyXG4gICAgICAgIH0gZWxzZSB7XHJcblxyXG4gICAgICAgICAgLy8gYm9keemHjOayoeaciXJlcXVlc3RJbmZv55qE5oOF5Ya177yM5qih5ouf6ICB55qE5aSE55CG5pa55byP77yI5LiN5riF55CG5Y+Y5pu044CB5bCGcmV0dXJuVmFsdWXop6PmnpDlh7rmnaXvvIlcclxuICAgICAgICAgIHJldHVybiB0aGlzLnVuV3JhcFJlc3BvbnNlSW5mbyhyZXN1bHQpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSksXHJcbiAgICAgIGNhdGNoRXJyb3IoZXJyb3IgPT4ge1xyXG4gICAgICAgIHJldHVybiB0aGlzLnByb3h5RXh0ZW5kLm9uRXJyb3IoZXJyb3IsIHNlbGZIYW5kRXJyb3IsIGlnbm9yZUVycm9yKTtcclxuICAgICAgfSlcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiDosIPnlKhodHRwY2xpZW505Y+W5pWwXHJcbiAgICogQHBhcmFtIHVybCB1cmxcclxuICAgKiBAcGFyYW0gbWV0aG9kIG1ldGhvZHNcclxuICAgKiBAcGFyYW0gb3B0aW9ucyBvcHRpb25zXHJcbiAgICovXHJcbiAgcHJvdGVjdGVkIGludm9rZSh1cmw6IHN0cmluZywgbWV0aG9kOiBzdHJpbmcsIG9wdGlvbnM6IGFueSk6IE9ic2VydmFibGU8YW55PiB7XHJcbiAgICBpZiAob3B0aW9ucy5wYXJhbXMpIHtcclxuICAgICAgdXJsID0gdGhpcy5wcm94eUV4dGVuZC5leHRlbmRVcmwodXJsLCBvcHRpb25zLnBhcmFtcyk7XHJcbiAgICAgIG9wdGlvbnMucGFyYW1zID0gbnVsbDtcclxuICAgIH1cclxuICAgIGlmIChvcHRpb25zLmJvZHkpIHtcclxuICAgICAgb3B0aW9ucy5ib2R5ID0gdGhpcy5wcm94eUV4dGVuZC5leHRlbmRCb2R5KG9wdGlvbnMuYm9keSk7XHJcbiAgICB9XHJcbiAgICBvcHRpb25zLmhlYWRlcnMgPSBIdHRwSGVhZGVyVXRpbC5jb252ZXJ0VG9IZWFkZXJzKG9wdGlvbnMuaGVhZGVycyk7XHJcbiAgICBjb25zdCBoZWFkZXJzJCA9IHRoaXMucHJveHlFeHRlbmQuZXh0ZW5kSGVhZGVycyhvcHRpb25zLmhlYWRlcnMpO1xyXG4gICAgcmV0dXJuIGhlYWRlcnMkLnBpcGUoXHJcbiAgICAgIHN3aXRjaE1hcChoZWFkZXJzID0+IHtcclxuICAgICAgICBvcHRpb25zLmhlYWRlcnMgPSBIdHRwSGVhZGVyVXRpbC50b0pzb24oaGVhZGVycyk7XHJcbiAgICAgICAgb3B0aW9ucy5vYnNlcnZlID0gJ3Jlc3BvbnNlJztcclxuICAgICAgICByZXR1cm4gdGhpcy5odHRwU2VydmljZS5yZXF1ZXN0KG1ldGhvZCwgdXJsLCBvcHRpb25zKVxyXG4gICAgICAgICAgLnBpcGUoXHJcbiAgICAgICAgICAgIHRhcCgocmVzcG9uc2U6IGFueSkgPT4gdGhpcy5wcm94eUV4dGVuZC5wYXJzZUhlYWRlcnMocmVzcG9uc2UpKSxcclxuICAgICAgICAgICAgbWFwKChyZXN1bHQ6IGFueSkgPT4gcmVzdWx0LmJvZHkpLFxyXG4gICAgICAgICAgICBtYXAoKHJlc3VsdDogYW55KSA9PiB0aGlzLnByb3h5RXh0ZW5kLm9uUmVzcG9uc2UocmVzdWx0KSksXHJcbiAgICAgICAgICAgIGNhdGNoRXJyb3IoZXJyb3IgPT4gdGhpcy5wcm94eUV4dGVuZC5vbkVycm9yKGVycm9yLCBmYWxzZSwgZmFsc2UpKVxyXG4gICAgICAgICAgKTtcclxuICAgICAgfSlcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiDlkJFIdHRwT3B0aW9uc+WvueixoeS4rea3u+WKoGJvZHlcclxuICAgKiBAcGFyYW0gb3B0aW9ucyDljp/mnaXnmoRvcHRpb25zXHJcbiAgICogQHBhcmFtIGJvZHkgYm9keeWGheWuuVxyXG4gICAqL1xyXG4gIHByaXZhdGUgYWRkQm9keVRvT3B0aW9ucyhvcHRpb25zOiBhbnksIGJvZHk6IGFueSkge1xyXG4gICAgb3B0aW9ucyA9IG9wdGlvbnMgfHwge307XHJcbiAgICBjb25zdCBtZXJnZWRPcHRpb25zID0gT2JqZWN0LmFzc2lnbihvcHRpb25zLCB7IGJvZHkgfSk7XHJcbiAgICByZXR1cm4gbWVyZ2VkT3B0aW9ucztcclxuICB9XHJcbiAgLyoqXHJcbiAgICog5p6E6YCgSHR0cFBhcmFtc+WvueixoVxyXG4gICAqIEBwYXJhbSBwYXJhbXMg6K+35rGC5Y+C5pWwXHJcbiAgICovXHJcbiAgcHJpdmF0ZSBidWlsZFBhcmFtcyhwYXJhbXM6IG9iamVjdCk6IEh0dHBQYXJhbXMge1xyXG4gICAgcmV0dXJuIEh0dHBQYXJhbVV0aWwuYnVpbGRQYXJhbXMocGFyYW1zKTtcclxuICB9XHJcbiAgLyoqXHJcbiAgICog5piv5ZCm5bim5pyJUmVxdWVzdEluZm9cclxuICAgKi9cclxuICBwcml2YXRlIGhhc1JlcXVlc3RJbmZvKG9wdGlvbnM6IGFueSk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIFJlcXVlc3RJbmZvVXRpbC5oYXNSZXF1ZXN0SW5mbyhvcHRpb25zKSB8fCBSZXF1ZXN0SW5mb1V0aWwuaGFzUmVxdWVzdEluZm9XaXRoUihvcHRpb25zKTtcclxuICB9XHJcbiAgLyoqXHJcbiAgICog5aSE55CG6L+U5Zue5YC877yM5YW85a656ICB54mI5pysXHJcbiAgICovXHJcbiAgcHJpdmF0ZSB1bldyYXBSZXNwb25zZUluZm8ocmVzdWx0OiBhbnkpIHtcclxuICAgIHJldHVybiBSZXNwb25zZUluZm9VdGlsLnVuV3JhcFJlc3BvbnNlSW5mbyhyZXN1bHQpO1xyXG4gIH1cclxufVxyXG4iXX0=
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmVmX3Byb3h5LmpzIiwic291cmNlUm9vdCI6Im5nOi8vQGZhcnJpcy9iZWYvIiwic291cmNlcyI6WyJsaWIvYmVmX3Byb3h5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUUzQyxPQUFPLEVBQUUsU0FBUyxFQUFFLEdBQUcsRUFBRSxVQUFVLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDakUsT0FBTyxFQUFjLFVBQVUsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQzlELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUUzQyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDdkQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQUUsY0FBYyxFQUFFLGFBQWEsRUFBRSxlQUFlLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDakcsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDOztNQUd2QyxHQUFHLEdBQUcsS0FBSzs7TUFDWCxNQUFNLEdBQUcsUUFBUTs7TUFDakIsR0FBRyxHQUFHLEtBQUs7O01BQ1gsSUFBSSxHQUFHLE1BQU07O01BQ2IsS0FBSyxHQUFHLE9BQU87Ozs7OztBQVFyQixNQUFNLE9BQU8sUUFBUTs7Ozs7SUFPbkIsWUFBbUIsVUFBc0IsRUFBUyxVQUFzQjtRQUFyRCxlQUFVLEdBQVYsVUFBVSxDQUFZO1FBQVMsZUFBVSxHQUFWLFVBQVUsQ0FBWTtRQUN0RSxJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksV0FBVyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUN0RCxDQUFDOzs7Ozs7SUFLTSxVQUFVLENBQUMsT0FBZTtRQUMvQixJQUFJLENBQUMsT0FBTyxHQUFHLE9BQU8sQ0FBQztJQUN6QixDQUFDOzs7Ozs7SUFL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QUMzQyxDQUFDOzs7Ozs7O0lBSU8sY0FBYyxDQUFDLE9BQVk7UUFDakMsT0FBTyxlQUFlLENBQUMsY0FBYyxDQUFDLE9BQU8sQ0FBQyxJQUFJLGVBQWUsQ0FBQyxtQkFBbUIsQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUNqRyxDQUFDOzs7Ozs7O0lBSU8sa0JBQWtCLENBQUMsTUFBVztRQUNwQyxPQUFPLGdCQUFnQixDQUFDLGtCQUFrQixDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ3JELENBQUM7OztZQTlaRixVQUFVOzs7O1lBcEJVLFVBQVU7WUFJdEIsVUFBVTs7Ozs7OztJQWtCakIsK0JBQW9DOzs7Ozs7SUFJcEMsMkJBQTBCOzs7OztJQUMxQiwrQkFBaUM7O0lBQ3JCLDhCQUE2Qjs7SUFBRSw4QkFBNkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgc3dpdGNoTWFwLCBtYXAsIGNhdGNoRXJyb3IsIHRhcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuaW1wb3J0IHsgSHR0cFBhcmFtcywgSHR0cENsaWVudCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcclxuaW1wb3J0IHsgZW5jb2RlVXJsIH0gZnJvbSAnQGZhcnJpcy9kZXZraXQnO1xyXG5pbXBvcnQgeyBJUHJveHlFeHRlbmQsIFJlcXVlc3RJbmZvLCBSZXNwb25zZUluZm8sIENoYW5nZURldGFpbCB9IGZyb20gJy4vdHlwZXMnO1xyXG5pbXBvcnQgeyBCZWZEYXRhUGF0aFV0aWwgfSBmcm9tICcuL2JlZl9kYXRhX3BhdGhfdXRpbCc7XHJcbmltcG9ydCB7IFVyaVNlcnZpY2UgfSBmcm9tICcuL3VyaV9zZXJ2aWNlJztcclxuaW1wb3J0IHsgSHR0cEhlYWRlclV0aWwsIEh0dHBQYXJhbVV0aWwsIFJlcXVlc3RJbmZvVXRpbCwgUmVzcG9uc2VJbmZvVXRpbCB9IGZyb20gJy4vdXRpbHMvaW5kZXgnO1xyXG5pbXBvcnQgeyBIdHRwU2VydmljZSB9IGZyb20gJy4vaHR0cF9zZXJ2aWNlJztcclxuXHJcblxyXG5jb25zdCBHRVQgPSAnR0VUJztcclxuY29uc3QgREVMRVRFID0gJ0RFTEVURSc7XHJcbmNvbnN0IFBVVCA9ICdQVVQnO1xyXG5jb25zdCBQT1NUID0gJ1BPU1QnO1xyXG5jb25zdCBQQVRDSCA9ICdQQVRDSCc7XHJcblxyXG4vKipcclxuICogQmVm5Luj55CG57G7XHJcbiAqIOS7o+eQhuexu+eahOiBjOi0o+aYr+WkhOeQhmh0dHDor7fmsYLvvIzlj5HpgIHkuIDkuKpodHRw6K+35rGC5omA6ZyA55qE6LWE5rqQ5pyJ77yadXJp77yMbWV0aG9k77yMaGVhZGVy44CBYm9keeOAgXF1ZXJ5IHBhcmFtZXRlclxyXG4gKiB1cmkg55SxdXJpU2VydmljZVxyXG4gKi9cclxuQEluamVjdGFibGUoKVxyXG5leHBvcnQgY2xhc3MgQmVmUHJveHkge1xyXG4gIHByb3RlY3RlZCBwcm94eUV4dGVuZDogSVByb3h5RXh0ZW5kO1xyXG4gIC8qKlxyXG4gICAqIHJlc3RmdWzln7rot6/lvoRcclxuICAgKi9cclxuICBwcm90ZWN0ZWQgYmFzZVVyaTogc3RyaW5nO1xyXG4gIHByaXZhdGUgaHR0cFNlcnZpY2U6IEh0dHBTZXJ2aWNlO1xyXG4gIGNvbnN0cnVjdG9yKHB1YmxpYyBodHRwQ2xpZW50OiBIdHRwQ2xpZW50LCBwdWJsaWMgdXJpU2VydmljZTogVXJpU2VydmljZSkge1xyXG4gICAgdGhpcy5odHRwU2VydmljZSA9IG5ldyBIdHRwU2VydmljZSh0aGlzLmh0dHBDbGllbnQpO1xyXG4gIH1cclxuICAvKipcclxuICAgKiDorr7nva7ln7rot6/lvoRcclxuICAgKiBAcGFyYW0gYmFzZVVyaSDln7rot6/lvoRcclxuICAgKi9cclxuICBwdWJsaWMgc2V0QmFzZVVyaShiYXNlVXJpOiBzdHJpbmcpOiB2b2lkIHtcclxuICAgIHRoaXMuYmFzZVVyaSA9IGJhc2VVcmk7XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIOiuvue9ruetlueVpeaooeW8j1xyXG4gICAqIEBwYXJhbSBzdHJhdGVneSDnrZbnlaVcclxuICAgKi9cclxuICBwdWJsaWMgc2V0UHJveHlFeHRlbmQocHJveHlFeHRlbmQ6IElQcm94eUV4dGVuZCkge1xyXG4gICAgdGhpcy5wcm94eUV4dGVuZCA9IHByb3h5RXh0ZW5kO1xyXG4gIH1cclxuICAvKipcclxuICAgKiDmn6Xor6JcclxuICAgKi9cclxuICBwdWJsaWMgcXVlcnkoZW50aXR5RmlsdGVyPzogYW55KTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuICAgIGxldCB1cmwgPSB0aGlzLmJhc2VVcmk7XHJcbiAgICBpZiAoZW50aXR5RmlsdGVyKSB7XHJcbiAgICAgIGNvbnN0IGVudGl0eUZpbHRlckpzb24gPSBKU09OLnN0cmluZ2lmeShlbnRpdHlGaWx0ZXIpO1xyXG4gICAgICB1cmwgPSBgJHt1cmx9P2VudGl0eUZpbHRlcj0ke2VudGl0eUZpbHRlckpzb259YDtcclxuICAgIH1cclxuICAgIHJldHVybiB0aGlzLnJlcXVlc3QodXJsLCBHRVQpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICog5omp5bGV5p+l6K+iXHJcbiAgICovXHJcbiAgcHVibGljIGV4dGVuZFF1ZXJ5KGVudGl0eUZpbHRlcjogYW55LCByZXF1ZXN0SW5mbzogUmVxdWVzdEluZm8pOiBPYnNlcnZhYmxlPFJlc3BvbnNlSW5mbz4ge1xyXG4gICAgbGV0IHVybCA9IGAke3RoaXMuYmFzZVVyaX0vZXh0ZW5zaW9uL3F1ZXJ5YDtcclxuICAgIGlmIChlbnRpdHlGaWx0ZXIpIHtcclxuICAgICAgbGV0IGVudGl0eUZpbHRlckpzb24gPSBKU09OLnN0cmluZ2lmeShlbnRpdHlGaWx0ZXIpO1xyXG4gICAgICBlbnRpdHlGaWx0ZXJKc29uID0gZW5jb2RlVXJsKGVudGl0eUZpbHRlckpzb24pO1xyXG4gICAgICB1cmwgPSBgJHt1cmx9P2VudGl0eUZpbHRlcj0ke2VudGl0eUZpbHRlckpzb259YDtcclxuICAgIH1cclxuICAgIGNvbnN0IGJvZHkgPSByZXF1ZXN0SW5mbztcclxuICAgIGNvbnN0IG9wdGlvbnMgPSB0aGlzLmFkZEJvZHlUb09wdGlvbnMoe30sIGJvZHkpO1xyXG4gICAgcmV0dXJuIHRoaXMucmVxdWVzdCh1cmwsIFBVVCwgbnVsbCwgb3B0aW9ucywgZmFsc2UpO1xyXG4gIH1cclxuICAvKipcclxuICAgKiDmn6Xor6LmlbDmja7vvIjluKbov4fmu6TmnaHku7bvvIlcclxuICAgKiBAcGFyYW0gZW50aXR5RmlsdGVyIOi/h+a7pOOAgeaOkuW6j+OAgeWIhumhteS/oeaBr1xyXG4gICAqIEBwYXJhbSByZXF1ZXN0SW5mbyByZXF1ZXN0SW5mb1xyXG4gICAqIEBkZXNjcmlwdGlvbiDlkoxleHRlbmRRdWVyeeS4gOiHtO+8jOS7heWwhuafpeivouWPguaVsOaUvuWIsGJvZHnkuK1cclxuICAgKi9cclxuICBwdWJsaWMgZmlsdGVyKGVudGl0eUZpbHRlcjogYW55LCByZXF1ZXN0SW5mbzogUmVxdWVzdEluZm8pOiBPYnNlcnZhYmxlPFJlc3BvbnNlSW5mbz4ge1xyXG4gICAgbGV0IHVybCA9IGAke3RoaXMuYmFzZVVyaX0vZXh0ZW5zaW9uL2ZpbHRlcmA7XHJcbiAgICBsZXQgYm9keTogYW55ID0geyByZXF1ZXN0SW5mbyB9O1xyXG4gICAgaWYgKGVudGl0eUZpbHRlcikge1xyXG4gICAgICBib2R5ID0geyBlbnRpdHlGaWx0ZXIsIHJlcXVlc3RJbmZvIH07XHJcbiAgICB9XHJcbiAgICBjb25zdCBvcHRpb25zID0gdGhpcy5hZGRCb2R5VG9PcHRpb25zKHt9LCBib2R5KTtcclxuICAgIHJldHVybiB0aGlzLnJlcXVlc3QodXJsLCBQT1NULCBudWxsLCBvcHRpb25zLCBmYWxzZSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiDmo4DntKLmlbDmja5cclxuICAgKiBAcGFyYW0gaWQg5Y2V5o2u5YaF56CBXHJcbiAgICogQHJldHVybiDmlbDmja7lr7nosaFcclxuICAgKi9cclxuICBwdWJsaWMgcmV0cmlldmUoaWQ6IHN0cmluZyk6IE9ic2VydmFibGU8YW55PiB7XHJcbiAgICBjb25zdCB1cmwgPSBgJHt0aGlzLmJhc2VVcml9LyR7aWR9YDtcclxuICAgIHJldHVybiB0aGlzLnJlcXVlc3QodXJsLCBHRVQpO1xyXG4gIH1cclxuICAvKipcclxuICAgKiDliIbpobXmn6Xor6LlkITku47ooajmlbDmja5cclxuICAgKiBAcGFyYW0gaWQg5Li76KGoaWRcclxuICAgKiBAcGFyYW0gb3B0aW9ucyDpgInpoblcclxuICAgKi9cclxuICBwdWJsaWMgc2VydmljZVJldHJpZXZlKGlkOiBzdHJpbmcsIHJldHJpZXZlUGFyYW06IGFueSwgcmVxdWVzdEluZm86IFJlcXVlc3RJbmZvKTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuICAgIGNvbnN0IHVybCA9IGAke3RoaXMuYmFzZVVyaX0vc2VydmljZS9yZXRyaWV2ZS8ke2lkfWA7XHJcbiAgICBjb25zdCBvcHRpb25zID0ge1xyXG4gICAgICBib2R5OiB7IHJldHJpZXZlUGFyYW0sIHJlcXVlc3RJbmZvIH1cclxuICAgIH07XHJcbiAgICByZXR1cm4gdGhpcy5yZXF1ZXN0KHVybCwgUFVULCBudWxsLCBvcHRpb25zKTtcclxuICB9XHJcbiAgLyoqXHJcbiAgICog5YiG6aG15p+l6K+i5LuO6KGoL+S7juS7juihqOaVsOaNrlxyXG4gICAqIEBwYXJhbSBwYXJhbXMg5Y+C5pWwXHJcbiAgICovXHJcbiAgcHVibGljIHF1ZXJ5Q2hpbGQocGFyYW1zOiBhbnkpIHtcclxuICAgIGNvbnN0IHVybCA9IGAke3RoaXMuYmFzZVVyaX0vc2VydmljZS9xdWVyeWNoaWxkYDtcclxuICAgIGNvbnN0IG9wdGlvbnMgPSB7IGJvZHk6IHBhcmFtcyB9O1xyXG4gICAgcmV0dXJuIHRoaXMucmVxdWVzdCh1cmwsIFBVVCwgbnVsbCwgb3B0aW9ucyk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiDmo4DntKLmlbDmja7vvIjmianlsZXvvIlcclxuICAgKi9cclxuICBwdWJsaWMgZXh0ZW5kUmV0cmlldmUoaWQ6IHN0cmluZywgcmVxdWVzdEluZm86IFJlcXVlc3RJbmZvKTogT2JzZXJ2YWJsZTxSZXNwb25zZUluZm8+IHtcclxuICAgIGNvbnN0IHVybCA9IGAke3RoaXMuYmFzZVVyaX0vZXh0ZW5zaW9uL3JldHJpZXZlLyR7aWR9YDtcclxuICAgIGNvbnN0IGJvZHkgPSByZXF1ZXN0SW5mbztcclxuICAgIGNvbnN0IG9wdGlvbnMgPSB0aGlzLmFkZEJvZHlUb09wdGlvbnMoe30sIGJvZHkpO1xyXG4gICAgcmV0dXJuIHRoaXMucmVxdWVzdCh1cmwsIFBVVCwgbnVsbCwgb3B0aW9ucyk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiDmo4DntKLmlbDmja5cclxuICAgKi9cclxuICBwdWJsaWMgZWRpdChpZDogc3RyaW5nLCByZXF1ZXN0SW5mbzogUmVxdWVzdEluZm8pOiBPYnNlcnZhYmxlPFJlc3BvbnNlSW5mbz4ge1xyXG4gICAgY29uc3QgdXJsID0gYCR7dGhpcy5iYXNlVXJpfS9zZXJ2aWNlL2VkaXQvJHtpZH1gO1xyXG4gICAgY29uc3QgYm9keSA9IHJlcXVlc3RJbmZvO1xyXG4gICAgY29uc3Qgb3B0aW9ucyA9IHRoaXMuYWRkQm9keVRvT3B0aW9ucyh7fSwgYm9keSk7XHJcbiAgICByZXR1cm4gdGhpcy5yZXF1ZXN0KHVybCwgUFVULCBudWxsLCBvcHRpb25zKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIOWIm+W7uuS4gOadoeaVsOaNrlxyXG4gICAqL1xyXG4gIHB1YmxpYyBjcmVhdGUoZGVmYXVsdFZhbHVlPzogYW55LCByZXF1ZXN0SW5mbz86IFJlcXVlc3RJbmZvKTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuICAgIGNvbnN0IGJvZHkgPSB7XHJcbiAgICAgIGRlZmF1bHRWYWx1ZSxcclxuICAgICAgcmVxdWVzdEluZm86IHJlcXVlc3RJbmZvLFxyXG4gICAgfTtcclxuICAgIGNvbnN0IG9wdGlvbnMgPSB0aGlzLmFkZEJvZHlUb09wdGlvbnMoe30sIGJvZHkpO1xyXG4gICAgcmV0dXJuIHRoaXMucmVxdWVzdCh0aGlzLmJhc2VVcmksIFBPU1QsIG51bGwsIG9wdGlvbnMpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICog5LuO6KGo5paw5aKeXHJcbiAgICogQHBhdGgg5paw5aKe6Lev5b6E77yI5LuO6KGo5b2i5aaC77yaLzEvZWR1c++8jOS7juS7juihqOW9ouWmgu+8mi8xL2VkdXMvMTEvZ3JhZGVz77yJXHJcbiAgICovXHJcbiAgcHVibGljIGNyZWF0ZUJ5UGF0aChmcGF0aDogc3RyaW5nLCByZXF1ZXN0SW5mbz86IFJlcXVlc3RJbmZvKTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuICAgIGNvbnN0IHBhdGhVcmwgPSBCZWZEYXRhUGF0aFV0aWwuY29udmVydFBhdGhUb1VybChmcGF0aCk7XHJcbiAgICBjb25zdCB1cmwgPSBgJHt0aGlzLmJhc2VVcml9JHtwYXRoVXJsfWA7XHJcblxyXG4gICAgY29uc3QgYm9keSA9IHJlcXVlc3RJbmZvO1xyXG4gICAgY29uc3Qgb3B0aW9ucyA9IHRoaXMuYWRkQm9keVRvT3B0aW9ucyh7fSwgYm9keSk7XHJcbiAgICByZXR1cm4gdGhpcy5yZXF1ZXN0KHVybCwgUE9TVCwgbnVsbCwgb3B0aW9ucyk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiDmj5DkuqTlj5jmm7RcclxuICAgKi9cclxuICB1cGRhdGUoY2hhbmdlRGV0YWlsOiBDaGFuZ2VEZXRhaWwsIHJlcXVlc3RJbmZvPzogUmVxdWVzdEluZm8pOiBPYnNlcnZhYmxlPGFueT4ge1xyXG4gICAgY29uc3QgYm9keSA9IHtcclxuICAgICAgY2hhbmdlRGV0YWlsLFxyXG4gICAgICByZXF1ZXN0SW5mbzogcmVxdWVzdEluZm8sXHJcbiAgICB9O1xyXG4gICAgY29uc3Qgb3B0aW9ucyA9IHRoaXMuYWRkQm9keVRvT3B0aW9ucyh7fSwgYm9keSk7XHJcblxyXG4gICAgcmV0dXJuIHRoaXMucmVxdWVzdCh0aGlzLmJhc2VVcmksIFBBVENILCBudWxsLCBvcHRpb25zKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIOaJp+ihjOS/neWtmFxyXG4gICAqL1xyXG4gIHB1YmxpYyBzYXZlKHJlcXVlc3RJbmZvPzogUmVxdWVzdEluZm8pOiBPYnNlcnZhYmxlPGFueT4ge1xyXG4gICAgY29uc3QgYm9keSA9IHJlcXVlc3RJbmZvO1xyXG4gICAgY29uc3Qgb3B0aW9ucyA9IHRoaXMuYWRkQm9keVRvT3B0aW9ucyh7fSwgYm9keSk7XHJcbiAgICByZXR1cm4gdGhpcy5yZXF1ZXN0KHRoaXMuYmFzZVVyaSwgUFVULCBudWxsLCBvcHRpb25zKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIOWIoOmZpFxyXG4gICAqL1xyXG4gIHB1YmxpYyBkZWxldGUoaWQ6IHN0cmluZyk6IE9ic2VydmFibGU8YW55PiB7XHJcbiAgICBjb25zdCB1cmwgPSBgJHt0aGlzLmJhc2VVcml9LyR7aWR9YDtcclxuICAgIHJldHVybiB0aGlzLnJlcXVlc3QodXJsLCBERUxFVEUpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICog5Yig6Zmk5bm25L+d5a2YXHJcbiAgICovXHJcbiAgcHVibGljIGRlbGV0ZUFuZFNhdmUoaWQ6IGFueSwgcmVxdWVzdEluZm86IFJlcXVlc3RJbmZvKTogT2JzZXJ2YWJsZTxSZXNwb25zZUluZm8+IHtcclxuICAgIGNvbnN0IHVybCA9IGAke3RoaXMuYmFzZVVyaX0vc2VydmljZS9kZWxldGUvJHtpZH1gO1xyXG4gICAgY29uc3QgYm9keSA9IHJlcXVlc3RJbmZvO1xyXG4gICAgY29uc3Qgb3B0aW9ucyA9IHRoaXMuYWRkQm9keVRvT3B0aW9ucyh7fSwgYm9keSk7XHJcbiAgICByZXR1cm4gdGhpcy5yZXF1ZXN0KHVybCwgUFVULCBudWxsLCBvcHRpb25zKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIOWIoOmZpO+8iOaJqeWxle+8iVxyXG4gICAqL1xyXG4gIHB1YmxpYyBleHRlbmREZWxldGUoaWQ6IHN0cmluZywgcmVxdWVzdEluZm86IFJlcXVlc3RJbmZvKTogT2JzZXJ2YWJsZTxSZXNwb25zZUluZm8+IHtcclxuICAgIGNvbnN0IHVybCA9IGAke3RoaXMuYmFzZVVyaX0vZXh0ZW5zaW9uL2RlbGV0ZS8ke2lkfWA7XHJcbiAgICBjb25zdCBib2R5ID0gcmVxdWVzdEluZm87XHJcbiAgICBjb25zdCBvcHRpb25zID0gdGhpcy5hZGRCb2R5VG9PcHRpb25zKHt9LCBib2R5KTtcclxuICAgIHJldHVybiB0aGlzLnJlcXVlc3QodXJsLCBQVVQsIG51bGwsIG9wdGlvbnMpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICog5Yig6Zmk5ZCO5LujXHJcbiAgICogQHBhcmFtIGZwYXRoIOeItui3r+W+hO+8iOS7juihqOW9ouWmgu+8mi8xL2VkdXPvvIzku47ku47ooajlvaLlpoLvvJovMS9lZHVzLzExL2dyYWRlc++8iVxyXG4gICAqL1xyXG4gIHB1YmxpYyBkZWxldEJ5UGF0aChmcGF0aDogc3RyaW5nLCBpZDogc3RyaW5nKTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuICAgIGNvbnN0IHBhdGhVcmwgPSBCZWZEYXRhUGF0aFV0aWwuY29udmVydFBhdGhUb1VybChmcGF0aCk7XHJcbiAgICBjb25zdCB1cmwgPSBgJHt0aGlzLmJhc2VVcml9JHtwYXRoVXJsfS8ke2lkfWA7XHJcbiAgICByZXR1cm4gdGhpcy5yZXF1ZXN0KHVybCwgREVMRVRFKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIOWIoOmZpOWQjuS7o++8iOaJqeWxle+8iVxyXG4gICAqIEBwYXJhbSBmcGF0aCDniLbot6/lvoTvvIjku47ooajlvaLlpoLvvJovMS9lZHVz77yM5LuO5LuO6KGo5b2i5aaC77yaLzEvZWR1cy8xMS9ncmFkZXPvvIlcclxuICAgKi9cclxuICBwdWJsaWMgZXh0ZW5kRGVsZXRCeVBhdGgoZnBhdGg6IHN0cmluZywgaWQ6IHN0cmluZywgcmVxdWVzdEluZm86IFJlcXVlc3RJbmZvKTogT2JzZXJ2YWJsZTxSZXNwb25zZUluZm8+IHtcclxuICAgIGNvbnN0IHBhdGhVcmwgPSBCZWZEYXRhUGF0aFV0aWwuY29udmVydFBhdGhUb1VybChmcGF0aCk7XHJcbiAgICBjb25zdCB1cmwgPSBgJHt0aGlzLmJhc2VVcml9L2V4dGVuc2lvbiR7cGF0aFVybH0vJHtpZH1gO1xyXG4gICAgY29uc3QgYm9keSA9IHJlcXVlc3RJbmZvO1xyXG4gICAgY29uc3Qgb3B0aW9ucyA9IHRoaXMuYWRkQm9keVRvT3B0aW9ucyh7fSwgYm9keSk7XHJcbiAgICByZXR1cm4gdGhpcy5yZXF1ZXN0KHVybCwgUFVULCBudWxsLCBvcHRpb25zKTtcclxuICB9XHJcbiAgLyoqXHJcbiAgICog5om56YeP5Yig6Zmk5ZCO5LujXHJcbiAgICogQHBhcmFtIGZQYXRoICdleHRlbnNpb24ve3Jvb3RJZH0vY2MvYmF0Y2gnXHJcbiAgICogQHBhcmFtICBpZHMg5a2Q6ZuGaWRcclxuICAgKiBAcGFyYW0gIHJlcXVlc3RJbmZvIOivt+axguS/oeaBr1xyXG4gICAqL1xyXG4gIHB1YmxpYyBiYXRjaERlbGV0ZUJ5UGF0aChmUGF0aDogc3RyaW5nLCBpZHM6IHN0cmluZywgcmVxdWVzdEluZm86IFJlcXVlc3RJbmZvKTogT2JzZXJ2YWJsZTxSZXNwb25zZUluZm8+IHtcclxuICAgIGNvbnN0IHBhdGhVcmwgPSBCZWZEYXRhUGF0aFV0aWwuY29udmVydFBhdGhUb1VybChmUGF0aCk7XHJcbiAgICBjb25zdCBwYXRoQXJyYXkgPSBwYXRoVXJsLnNwbGl0KCcvJyk7XHJcbiAgICBpZiAocGF0aEFycmF5Lmxlbmd0aCA8IDMpIHtcclxuICAgICAgdGhyb3cgRXJyb3IoYOagueaNrnBhdGjliKDpmaTlrp7kvZPmlbDmja7lh7rplJnkuobjgILkvKDlhaXnmoRwYXRoWyR7ZlBhdGh9XeagvOW8j+S4jeWvuWApO1xyXG4gICAgfVxyXG4gICAgLyogICBjb25zdCByb290SWQgPSBwYXRoQXJyYXlbMV07XHJcblxyXG4gICAgY29uc3QgbmFtZUFycmF5ID0gW107XHJcbiAgICBwYXRoQXJyYXkuZm9yRWFjaCgobmFtZSwgaW5kZXgpID0+IHtcclxuICAgICAgaWYgKGluZGV4ID4gMSApIHtcclxuICAgICAgICBpZiAobmFtZS5pbmRleE9mKCdzJykgIT09IC0xKSB7XHJcbiAgICAgICAgICBuYW1lQXJyYXkucHVzaChuYW1lLnN1YnN0cigwLCBuYW1lLmxlbmd0aCAtIDEpKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgbmFtZUFycmF5LnB1c2gobmFtZSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICAgIGNvbnN0IGNoaWxkTmFtZSA9IG5hbWVBcnJheS5qb2luKCcvJyk7Ki9cclxuICAgIGNvbnN0IHVybCA9IGAke3RoaXMuYmFzZVVyaX0vZXh0ZW5zaW9uJHtwYXRoVXJsfS9iYXRjaGA7XHJcbiAgICBjb25zdCBpZHNBcnJheSA9IGlkcy5zcGxpdCgnLCcpO1xyXG4gICAgY29uc3QgYm9keSA9IHtcclxuICAgICAgaWRzOiBpZHNBcnJheSxcclxuICAgICAgcmVxdWVzdEluZm86IHJlcXVlc3RJbmZvXHJcbiAgICB9O1xyXG4gICAgY29uc3Qgb3B0aW9ucyA9IHRoaXMuYWRkQm9keVRvT3B0aW9ucyh7fSwgYm9keSk7XHJcbiAgICByZXR1cm4gdGhpcy5yZXF1ZXN0KHVybCwgUFVULCBudWxsLCBvcHRpb25zKTtcclxuICB9XHJcbiAgLyoqXHJcbiAgICog5om56YeP5Yig6ZmkXHJcbiAgICogQHBhcmFtIGlkcyDlvoXliKDpmaTnmoRpZOaVsOe7hFxyXG4gICAqL1xyXG4gIHB1YmxpYyBiYXRjaERlbGV0ZShpZHM6IHN0cmluZ1tdKTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuICAgIGNvbnN0IHBhcmFtcyA9IHtcclxuICAgICAgaWRzOiBpZHMuam9pbignLCcpXHJcbiAgICB9O1xyXG4gICAgcmV0dXJuIHRoaXMucmVxdWVzdCh0aGlzLmJhc2VVcmksIERFTEVURSwgcGFyYW1zKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIOaJuemHj+WIoOmZpO+8iOaJqeWxle+8iVxyXG4gICAqL1xyXG4gIHB1YmxpYyBleHRlbmRCYXRjaERlbGV0ZShpZHM6IHN0cmluZ1tdLCByZXF1ZXN0SW5mbzogUmVxdWVzdEluZm8pOiBPYnNlcnZhYmxlPFJlc3BvbnNlSW5mbz4ge1xyXG4gICAgY29uc3QgdXJsID0gYCR7dGhpcy5iYXNlVXJpfS9leHRlbnNpb24vYmF0Y2hkZWxldGVgO1xyXG4gICAgY29uc3QgcGFyYW1zID0ge1xyXG4gICAgICBpZHM6IGlkcy5qb2luKCcsJylcclxuICAgIH07XHJcblxyXG4gICAgY29uc3QgYm9keSA9IHJlcXVlc3RJbmZvO1xyXG4gICAgY29uc3Qgb3B0aW9ucyA9IHRoaXMuYWRkQm9keVRvT3B0aW9ucyh7fSwgYm9keSk7XHJcbiAgICByZXR1cm4gdGhpcy5yZXF1ZXN0KHVybCwgUFVULCBwYXJhbXMsIG9wdGlvbnMpO1xyXG4gIH1cclxuXHJcblxyXG4gIC8qKlxyXG4gICAqIOWPlua2iFxyXG4gICAqL1xyXG4gIHB1YmxpYyBjYW5jZWwoY29udGV4dD86IGFueSk6IE9ic2VydmFibGU8YW55PiB7XHJcbiAgICBjb25zdCB1cmwgPSBgJHt0aGlzLmJhc2VVcml9L3NlcnZpY2UvY2FuY2VsYDtcclxuICAgIHJldHVybiB0aGlzLnJlcXVlc3QodXJsLCBQT1NULCBudWxsLCBudWxsLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBjb250ZXh0KTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIOaJuemHj+aWsOWinuS7juihqC/ku47ku47ooajmlbDmja5cclxuICAgKiBAcGFyYW0gcGF0aCDlrp7kvZPnu5Hlrprot6/lvoTvvIxsaWtlIDEvY2hpbGRzIG9yIDEvY2hpbGRzLzExL2NoaWxkY2hpbGRzXHJcbiAgICogQHBhcmFtIGRlZmF1bHRWYWx1ZXMg6buY6K6k5a6e5L2T5pWw5o2u5pWw57uEXHJcbiAgICovXHJcbiAgcHVibGljIGJhdGNoQXBwZW5kQnlQYXRoKHBhdGg6IHN0cmluZywgZGVmYXVsdFZhbHVlczogQXJyYXk8YW55PiwgcmVxdWVzdEluZm86IFJlcXVlc3RJbmZvKTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuICAgIGNvbnN0IHBhdGhVcmwgPSBCZWZEYXRhUGF0aFV0aWwuY29udmVydFBhdGhUb1VybChwYXRoKTtcclxuICAgIGNvbnN0IHVybCA9IGAke3RoaXMuYmFzZVVyaX0ke3BhdGhVcmx9L2JhdGNoYDtcclxuICAgIGNvbnN0IGJvZHkgPSB7XHJcbiAgICAgIHJlcXVlc3RJbmZvLFxyXG4gICAgICByZXRyaWV2ZURlZmF1bHRQYXJhbToge1xyXG4gICAgICAgIGRlZmF1bHRWYWx1ZXNcclxuICAgICAgfVxyXG4gICAgfTtcclxuICAgIGNvbnN0IG9wdGlvbnMgPSB0aGlzLmFkZEJvZHlUb09wdGlvbnMoe30sIGJvZHkpO1xyXG4gICAgcmV0dXJuIHRoaXMucmVxdWVzdCh1cmwsIFBPU1QsIG51bGwsIG9wdGlvbnMpO1xyXG4gIH1cclxuICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6IG1heC1saW5lLWxlbmd0aFxyXG4gIHB1YmxpYyByZXF1ZXN0KFxyXG4gICAgdXJsOiBzdHJpbmcsIG1ldGhvZDogc3RyaW5nLCBwYXJhbXM/OiBhbnksIG9wdGlvbnM/OiBhbnksXHJcbiAgICBzZWxmSGFuZEVycm9yPzogYm9vbGVhbiwgaWdub3JlRXJyb3I/OiBib29sZWFuLCBpZ25vcmVDaGFuZ2VzPzogYm9vbGVhbiwgcnVudGltZUNvbnRleHQ/OiBhbnlcclxuICApOiBPYnNlcnZhYmxlPGFueT4ge1xyXG4gICAgb3B0aW9ucyA9IG9wdGlvbnMgfHwge307XHJcblxyXG4gICAgLy8g5piv5ZCm6Ieq6KGM5aSE55CG6ZSZ6K+vXHJcbiAgICBpZiAodHlwZW9mIChzZWxmSGFuZEVycm9yKSA9PT0gJ3VuZGVmaW5lZCcgfHwgdHlwZW9mIChzZWxmSGFuZEVycm9yKSAhPT0gJ2Jvb2xlYW4nKSB7XHJcbiAgICAgIHNlbGZIYW5kRXJyb3IgPSBmYWxzZTtcclxuICAgIH1cclxuXHJcbiAgICAvLyDmmK/lkKblv73nlaXlvILluLjnu6fnu63miafooYxcclxuICAgIGlmICh0eXBlb2YgKGlnbm9yZUVycm9yKSA9PT0gJ3VuZGVmaW5lZCcgfHwgdHlwZW9mIChpZ25vcmVFcnJvcikgIT09ICdib29sZWFuJykge1xyXG4gICAgICBpZ25vcmVFcnJvciA9IGZhbHNlO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIHBhcmFtc1xyXG4gICAgaWYgKHBhcmFtcykge1xyXG4gICAgICAvLyBjb25zdCBodHRwUGFyYW1zID0gdGhpcy5idWlsZFBhcmFtcyhwYXJhbXMpO1xyXG4gICAgICBvcHRpb25zLnBhcmFtcyA9IHBhcmFtcztcclxuICAgIH1cclxuXHJcbiAgICAvLyDlpITnkIZoZWFkZXJzXHJcbiAgICBvcHRpb25zLmhlYWRlcnMgPSBIdHRwSGVhZGVyVXRpbC5jb252ZXJ0VG9IZWFkZXJzKG9wdGlvbnMuaGVhZGVycyk7XHJcbiAgICAvLyAx44CB5Yik5pat5piv5ZCm5bimcmVxdWVzdEluZm/vvIjkuI3ljLrliIbpppblrZfmr43lpKflsI/lhpnvvIk7XHJcbiAgICAvLyAy44CB5aaC5p6c5Lyg6YCS55qE5pivUmVxdWVzdEluZm/vvIzliJnovazmjaLkuLpyZXF1ZXN0SW5mb++8m1xyXG4gICAgY29uc3QgaGFzUmVxdWVzdEluZm8gPSB0aGlzLmhhc1JlcXVlc3RJbmZvKG9wdGlvbnMpO1xyXG4gICAgaWYgKG9wdGlvbnMgJiYgb3B0aW9ucy5ib2R5ICYmIG9wdGlvbnMuYm9keS5oYXNPd25Qcm9wZXJ0eSgnUmVxdWVzdEluZm8nKSkge1xyXG4gICAgICBvcHRpb25zLmJvZHkucmVxdWVzdEluZm8gPSBvcHRpb25zLmJvZHkuUmVxdWVzdEluZm87XHJcbiAgICAgIGRlbGV0ZSBvcHRpb25zLmJvZHkuUmVxdWVzdEluZm87XHJcbiAgICB9XHJcbiAgICByZXR1cm4gdGhpcy5wcm94eUV4dGVuZC5leHRlbmRIZWFkZXJzKG9wdGlvbnMuaGVhZGVycywgcnVudGltZUNvbnRleHQpLnBpcGUoXHJcbiAgICAgIHN3aXRjaE1hcChoZWFkZXJzID0+IHtcclxuICAgICAgICBvcHRpb25zLmhlYWRlcnMgPSBIdHRwSGVhZGVyVXRpbC50b0pzb24oaGVhZGVycyk7XHJcbiAgICAgICAgb3B0aW9ucy5vYnNlcnZlID0gJ3Jlc3BvbnNlJztcclxuICAgICAgICByZXR1cm4gdGhpcy5odHRwU2VydmljZS5yZXF1ZXN0KG1ldGhvZCwgdXJsLCBvcHRpb25zKTtcclxuICAgICAgfSksXHJcbiAgICAgIHRhcCgocmVzcG9uc2U6IGFueSkgPT4gdGhpcy5wcm94eUV4dGVuZC5wYXJzZUhlYWRlcnMocmVzcG9uc2UpKSxcclxuICAgICAgbWFwKChyZXN1bHQ6IGFueSkgPT4gcmVzdWx0LmJvZHkpLFxyXG4gICAgICBtYXAoKHJlc3VsdDogYW55KSA9PiB7XHJcbiAgICAgICAgaWYgKGhhc1JlcXVlc3RJbmZvKSB7XHJcbiAgICAgICAgICB0aGlzLnByb3h5RXh0ZW5kLm9uUmVzcG9uc2UocmVzdWx0LCBpZ25vcmVDaGFuZ2VzKTtcclxuICAgICAgICAgIHJldHVybiByZXN1bHQ7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuXHJcbiAgICAgICAgICAvLyBib2R56YeM5rKh5pyJcmVxdWVzdEluZm/nmoTmg4XlhrXvvIzmqKHmi5/ogIHnmoTlpITnkIbmlrnlvI/vvIjkuI3muIXnkIblj5jmm7TjgIHlsIZyZXR1cm5WYWx1Zeino+aekOWHuuadpe+8iVxyXG4gICAgICAgICAgcmV0dXJuIHRoaXMudW5XcmFwUmVzcG9uc2VJbmZvKHJlc3VsdCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KSxcclxuICAgICAgY2F0Y2hFcnJvcihlcnJvciA9PiB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMucHJveHlFeHRlbmQub25FcnJvcihlcnJvciwgc2VsZkhhbmRFcnJvciwgaWdub3JlRXJyb3IpO1xyXG4gICAgICB9KVxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIOiwg+eUqGh0dHBjbGllbnTlj5bmlbBcclxuICAgKiBAcGFyYW0gdXJsIHVybFxyXG4gICAqIEBwYXJhbSBtZXRob2QgbWV0aG9kc1xyXG4gICAqIEBwYXJhbSBvcHRpb25zIG9wdGlvbnNcclxuICAgKi9cclxuICBwcm90ZWN0ZWQgaW52b2tlKHVybDogc3RyaW5nLCBtZXRob2Q6IHN0cmluZywgb3B0aW9uczogYW55KTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuICAgIGlmIChvcHRpb25zLnBhcmFtcykge1xyXG4gICAgICB1cmwgPSB0aGlzLnByb3h5RXh0ZW5kLmV4dGVuZFVybCh1cmwsIG9wdGlvbnMucGFyYW1zKTtcclxuICAgICAgb3B0aW9ucy5wYXJhbXMgPSBudWxsO1xyXG4gICAgfVxyXG4gICAgaWYgKG9wdGlvbnMuYm9keSkge1xyXG4gICAgICBvcHRpb25zLmJvZHkgPSB0aGlzLnByb3h5RXh0ZW5kLmV4dGVuZEJvZHkob3B0aW9ucy5ib2R5KTtcclxuICAgIH1cclxuICAgIG9wdGlvbnMuaGVhZGVycyA9IEh0dHBIZWFkZXJVdGlsLmNvbnZlcnRUb0hlYWRlcnMob3B0aW9ucy5oZWFkZXJzKTtcclxuICAgIGNvbnN0IGhlYWRlcnMkID0gdGhpcy5wcm94eUV4dGVuZC5leHRlbmRIZWFkZXJzKG9wdGlvbnMuaGVhZGVycyk7XHJcbiAgICByZXR1cm4gaGVhZGVycyQucGlwZShcclxuICAgICAgc3dpdGNoTWFwKGhlYWRlcnMgPT4ge1xyXG4gICAgICAgIG9wdGlvbnMuaGVhZGVycyA9IEh0dHBIZWFkZXJVdGlsLnRvSnNvbihoZWFkZXJzKTtcclxuICAgICAgICBvcHRpb25zLm9ic2VydmUgPSAncmVzcG9uc2UnO1xyXG4gICAgICAgIHJldHVybiB0aGlzLmh0dHBTZXJ2aWNlLnJlcXVlc3QobWV0aG9kLCB1cmwsIG9wdGlvbnMpXHJcbiAgICAgICAgICAucGlwZShcclxuICAgICAgICAgICAgdGFwKChyZXNwb25zZTogYW55KSA9PiB0aGlzLnByb3h5RXh0ZW5kLnBhcnNlSGVhZGVycyhyZXNwb25zZSkpLFxyXG4gICAgICAgICAgICBtYXAoKHJlc3VsdDogYW55KSA9PiByZXN1bHQuYm9keSksXHJcbiAgICAgICAgICAgIG1hcCgocmVzdWx0OiBhbnkpID0+IHRoaXMucHJveHlFeHRlbmQub25SZXNwb25zZShyZXN1bHQpKSxcclxuICAgICAgICAgICAgY2F0Y2hFcnJvcihlcnJvciA9PiB0aGlzLnByb3h5RXh0ZW5kLm9uRXJyb3IoZXJyb3IsIGZhbHNlLCBmYWxzZSkpXHJcbiAgICAgICAgICApO1xyXG4gICAgICB9KVxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIOWQkUh0dHBPcHRpb25z5a+56LGh5Lit5re75YqgYm9keVxyXG4gICAqIEBwYXJhbSBvcHRpb25zIOWOn+adpeeahG9wdGlvbnNcclxuICAgKiBAcGFyYW0gYm9keSBib2R55YaF5a65XHJcbiAgICovXHJcbiAgcHJpdmF0ZSBhZGRCb2R5VG9PcHRpb25zKG9wdGlvbnM6IGFueSwgYm9keTogYW55KSB7XHJcbiAgICBvcHRpb25zID0gb3B0aW9ucyB8fCB7fTtcclxuICAgIGNvbnN0IG1lcmdlZE9wdGlvbnMgPSBPYmplY3QuYXNzaWduKG9wdGlvbnMsIHsgYm9keSB9KTtcclxuICAgIHJldHVybiBtZXJnZWRPcHRpb25zO1xyXG4gIH1cclxuICAvKipcclxuICAgKiDmnoTpgKBIdHRwUGFyYW1z5a+56LGhXHJcbiAgICogQHBhcmFtIHBhcmFtcyDor7fmsYLlj4LmlbBcclxuICAgKi9cclxuICBwcml2YXRlIGJ1aWxkUGFyYW1zKHBhcmFtczogb2JqZWN0KTogSHR0cFBhcmFtcyB7XHJcbiAgICByZXR1cm4gSHR0cFBhcmFtVXRpbC5idWlsZFBhcmFtcyhwYXJhbXMpO1xyXG4gIH1cclxuICAvKipcclxuICAgKiDmmK/lkKbluKbmnIlSZXF1ZXN0SW5mb1xyXG4gICAqL1xyXG4gIHByaXZhdGUgaGFzUmVxdWVzdEluZm8ob3B0aW9uczogYW55KTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gUmVxdWVzdEluZm9VdGlsLmhhc1JlcXVlc3RJbmZvKG9wdGlvbnMpIHx8IFJlcXVlc3RJbmZvVXRpbC5oYXNSZXF1ZXN0SW5mb1dpdGhSKG9wdGlvbnMpO1xyXG4gIH1cclxuICAvKipcclxuICAgKiDlpITnkIbov5Tlm57lgLzvvIzlhbzlrrnogIHniYjmnKxcclxuICAgKi9cclxuICBwcml2YXRlIHVuV3JhcFJlc3BvbnNlSW5mbyhyZXN1bHQ6IGFueSkge1xyXG4gICAgcmV0dXJuIFJlc3BvbnNlSW5mb1V0aWwudW5XcmFwUmVzcG9uc2VJbmZvKHJlc3VsdCk7XHJcbiAgfVxyXG59XHJcbiJdfQ==

@@ -434,3 +434,9 @@ /**

}
if (!(error && error.error && error.error.extensionMessage && BackEndMessageUtil.isBackEndMessageHandlerExist(this.repository.getInjector()))) {
/** @type {?} */
const messages = ResponseInfoUtil.parseBackEndError(error);
/** @type {?} */
const bizMessages = BackEndMessageUtil.getFormlessMessages(messages);
/** @type {?} */
const isExistFormlessMessage = bizMessages && bizMessages.length > 0 || false;
if (!(error && error.error && error.error.extensionMessage && BackEndMessageUtil.isBackEndMessageHandlerExist(this.repository.getInjector()) && !isExistFormlessMessage)) {
this.eventBus.post('Exception', '', 'onException', error, formAppContext);

@@ -571,2 +577,2 @@ }

export { BefRestService };
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmVmX3Jlc3Rfc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BmYXJyaXMvYmVmLyIsInNvdXJjZXMiOlsibGliL2JlZl9yZXN0X3NlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7QUFPQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxVQUFVLEVBQTJCLE1BQU0sc0JBQXNCLENBQUM7QUFDM0UsT0FBTyxFQUFjLFVBQVUsRUFBRSxFQUFFLEVBQUUsS0FBSyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3pELE9BQU8sRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFFLFVBQVUsRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNqRSxPQUFPLEVBQVUsUUFBUSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDbEQsT0FBTyxFQUFFLGNBQWMsRUFBRSxhQUFhLEVBQUUsZUFBZSxFQUFFLGdCQUFnQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2pHLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUNqRCxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUN0RSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUVwRCxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQ3ZDLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ3BELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM3QyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQzs7TUFFN0QsR0FBRyxHQUFHLEtBQUs7O01BQ1gsTUFBTSxHQUFHLFFBQVE7O01BQ2pCLEdBQUcsR0FBRyxLQUFLOztNQUNYLElB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O2dCQUM1QyxPQUFPLENBQUMsUUFBUSxFQUFFLENBQUM7YUFDcEI7U0FDRjtJQUNILENBQUM7Ozs7Ozs7SUFLTyxrQkFBa0IsQ0FBQyxNQUFXO1FBQ3BDLE9BQU8sZ0JBQWdCLENBQUMsa0JBQWtCLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDckQsQ0FBQzs7Ozs7OztJQUtPLGNBQWMsQ0FBQyxPQUFZO1FBQ2pDLE9BQU8sZUFBZSxDQUFDLG1CQUFtQixDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ3RELENBQUM7Ozs7Ozs7SUFJTyxnQkFBZ0IsQ0FBQyxPQUFZO1FBQ25DLE9BQU8sZUFBZSxDQUFDLGNBQWMsQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUNqRCxDQUFDOzs7Ozs7O0lBTU8sV0FBVyxDQUFDLE1BQVc7UUFDN0IsT0FBTyxhQUFhLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQzNDLENBQUM7Ozs7Ozs7SUFNTSx3QkFBd0IsQ0FBQyxJQUFTO1FBQ3ZDLE9BQU8sZUFBZSxDQUFDLHdCQUF3QixDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDekUsQ0FBQzs7Ozs7SUFLTSxnQkFBZ0I7UUFDckIsT0FBTyxlQUFlLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBQzNELENBQUM7OztZQWxiRixVQUFVOzs7O1lBekJGLFVBQVU7O1lBTVYsdUJBQXVCO1lBRHZCLGFBQWE7WUFGTCxRQUFROzs7Ozs7O0lBeUJ2QixvQ0FBMEM7Ozs7OztJQUsxQyxvQ0FBK0I7Ozs7O0lBQy9CLHFDQUFpQzs7Ozs7SUFLakMsd0NBQXlDOzs7OztJQUt6QyxpQ0FBdUI7Ozs7O0lBS3ZCLGtDQUEwQjs7QUFnYTVCLE9BQU8sRUFBRSxjQUFjLEVBQUUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qXHJcbiAqIEBBdXRob3I6IFdpdHRcclxuICogQERhdGU6IDIwMTktMDItMjMgMTM6NTc6NDdcclxuICogQExhc3QgTW9kaWZpZWQgYnk6IGFhbGl6endlbGxcclxuICogQExhc3QgTW9kaWZpZWQgdGltZTogMjAxOS0wOS0yNCAxNDoxMDo0MFxyXG4gKi9cclxuXHJcbmltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgSHR0cENsaWVudCwgSHR0cEhlYWRlcnMsIEh0dHBQYXJhbXMgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XHJcbmltcG9ydCB7IE9ic2VydmFibGUsIHRocm93RXJyb3IsIG9mLCBFTVBUWSB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBzd2l0Y2hNYXAsIG1hcCwgY2F0Y2hFcnJvciwgdGFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xyXG5pbXBvcnQgeyBFbnRpdHksIEV2ZW50QnVzIH0gZnJvbSAnQGZhcnJpcy9kZXZraXQnO1xyXG5pbXBvcnQgeyBIdHRwSGVhZGVyVXRpbCwgSHR0cFBhcmFtVXRpbCwgUmVxdWVzdEluZm9VdGlsLCBSZXNwb25zZUluZm9VdGlsIH0gZnJvbSAnLi91dGlscy9pbmRleCc7XHJcbmltcG9ydCB7IEJlZlJlcG9zaXRvcnkgfSBmcm9tICcuL2JlZl9yZXBvc2l0b3J5JztcclxuaW1wb3J0IHsgRnJhbWV3b3JrU2Vzc2lvblNlcnZpY2UgfSBmcm9tICcuL2ZyYW1ld29ya19zZXNzaW9uX3NlcnZpY2UnO1xyXG5pbXBvcnQgeyBCZWZTZXNzaW9uU2VydmljZSB9IGZyb20gJy4vc2Vzc2lvbi9pbmRleCc7XHJcbmltcG9ydCB7IENoYW5nZURldGFpbCwgUmVxdWVzdEluZm8sIFJlc3BvbnNlSW5mbyB9IGZyb20gJy4vdHlwZXMnO1xyXG5pbXBvcnQgeyBCZWZQcm94eSB9IGZyb20gJy4vYmVmX3Byb3h5JztcclxuaW1wb3J0IHsgVXJpU2VydmljZSB9IGZyb20gJy4vdXJpX3NlcnZpY2UnO1xyXG5pbXBvcnQgeyBCZWZQcm94eUV4dGVuZCB9IGZyb20gJy4vYmVmX3Byb3h5X2V4dGVuZCc7XHJcbmltcG9ydCB7IEh0dHBTZXJ2aWNlIH0gZnJvbSAnLi9odHRwX3NlcnZpY2UnO1xyXG5pbXBvcnQgeyBCYWNrRW5kTWVzc2FnZVV0aWwgfSBmcm9tICcuL3V0aWxzL2JhY2tfZW5kX21lc3NhZ2UudXRpbCc7XHJcblxyXG5jb25zdCBHRVQgPSAnR0VUJztcclxuY29uc3QgREVMRVRFID0gJ0RFTEVURSc7XHJcbmNvbnN0IFBVVCA9ICdQVVQnO1xyXG5jb25zdCBQT1NUID0gJ1BPU1QnO1xyXG5jb25zdCBQQVRDSCA9ICdQQVRDSCc7XHJcblxyXG4vKipcclxuICogQkVG5Y+W5pWw5pyN5YqhXHJcbiAqIOivpeacjeWKoeeUsUJlZlJlcG9zaXRvcnnlrp7kvovljJbvvIzkuI3lgZrms6jlhaXvvIzmr4/kuKpCZWZSZXBvc2l0b3J55oul5pyJ5LiA5LiqQmVmUmVzdFNlcnZpY2Xlrp7kvovjgIJcclxuICovXHJcbkBJbmplY3RhYmxlKClcclxuY2xhc3MgQmVmUmVzdFNlcnZpY2Uge1xyXG5cclxuICBwcml2YXRlIHJlcG9zaXRvcnk6IEJlZlJlcG9zaXRvcnk8RW50aXR5PjtcclxuXHJcbiAgLyoqXHJcbiAgICogaHR0cENsaWVudFxyXG4gICAqL1xyXG4gIHByaXZhdGUgaHR0cENsaWVudDogSHR0cENsaWVudDtcclxuICBwcml2YXRlIGh0dHBTZXJ2aWNlOiBIdHRwU2VydmljZTtcclxuXHJcbiAgLyoqXHJcbiAgICog5Lya6K+d5pyN5YqhXHJcbiAgICovXHJcbiAgcHVibGljIHNlc3Npb25TZXJ2aWNlOiBCZWZTZXNzaW9uU2VydmljZTtcclxuXHJcbiAgLyoqXHJcbiAgICog5o6l5Y+j5qC5VXJpXHJcbiAgICovXHJcbiAgcHVibGljIGJhc2VVcmk6IHN0cmluZztcclxuXHJcbiAgLyoqXHJcbiAgICog5LqL5Lu25oC757q/XHJcbiAgICovXHJcbiAgcHVibGljIGV2ZW50QnVzOiBFdmVudEJ1cztcclxuXHJcbiAgLyoqXHJcbiAgICog5p6E6YCg5Ye95pWwXHJcbiAgICogQHBhcmFtIGh0dHBDbGllbnQgaHR0cOacjeWKoVxyXG4gICAqIEBwYXJhbSBzZXJ2ZXJVcmkg5bqU55So5pyN5Yqh5Zmo5Zyw5Z2AXHJcbiAgICogQHBhcmFtIGJlVXJpIEJFIEFQSeWcsOWdgFxyXG4gICAqL1xyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgaHR0cENsaWVudDogSHR0cENsaWVudCwgYmFzZVVyaTogc3RyaW5nLFxyXG4gICAgZnJtU2Vzc2lvblNlcnZpY2U6IEZyYW1ld29ya1Nlc3Npb25TZXJ2aWNlLFxyXG4gICAgcmVwb3NpdG9yeTogQmVmUmVwb3NpdG9yeTxFbnRpdHk+LFxyXG4gICAgZXZlbnRCdXM/OiBFdmVudEJ1c1xyXG4gICkge1xyXG4gICAgdGhpcy5odHRwQ2xpZW50ID0gaHR0cENsaWVudDtcclxuICAgIHRoaXMuaHR0cFNlcnZpY2UgPSBuZXcgSHR0cFNlcnZpY2UodGhpcy5odHRwQ2xpZW50KTtcclxuICAgIHRoaXMuYmFzZVVyaSA9IGJhc2VVcmk7XHJcbiAgICBjb25zdCBpbmplY3RvciA9IHJlcG9zaXRvcnkuZ2V0SW5qZWN0b3IoKTtcclxuICAgIHRoaXMuc2Vzc2lvblNlcnZpY2UgPSBuZXcgQmVmU2Vzc2lvblNlcnZpY2UoaHR0cENsaWVudCwgYmFzZVVyaSwgZnJtU2Vzc2lvblNlcnZpY2UsIGluamVjdG9yKTtcclxuICAgIHRoaXMucmVwb3NpdG9yeSA9IHJlcG9zaXRvcnk7XHJcbiAgICB0aGlzLmV2ZW50QnVzID0gZXZlbnRCdXM7XHJcbiAgfVxyXG5cclxuXHJcbiAgLy8gI3JlZ2lvbiDku6PnkIbnm7jlhbNcclxuXHJcbiAgLyoqXHJcbiAgICog6I635Y+WQmVm5Luj55CGXHJcbiAgICovXHJcbiAgcHVibGljIGdldCBwcm94eSgpOiBCZWZQcm94eSB7XHJcbiAgICBpZiAoISF0aGlzLnJlcG9zaXRvcnkucHJveHkpIHtcclxuICAgICAgcmV0dXJuIHRoaXMucmVwb3NpdG9yeS5wcm94eTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHJldHVybiB0aGlzLmNyZWF0ZUJlZlByb3h5KCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiDliJvlu7pCZWbku6PnkIZcclxuICAgKi9cclxuICBwcml2YXRlIGNyZWF0ZUJlZlByb3h5KCkge1xyXG4gICAgY29uc3Qgc2VydmVyVXJpID0gdGhpcy5yZXBvc2l0b3J5LnNlcnZlclVyaTtcclxuICAgIGNvbnN0IHVyaVNlcnZpY2UgPSBuZXcgVXJpU2VydmljZShzZXJ2ZXJVcmkpO1xyXG4gICAgY29uc3QgZGVmYXVsdFByb3h5ID0gbmV3IEJlZlByb3h5KHRoaXMuaHR0cENsaWVudCwgdXJpU2VydmljZSk7XHJcbiAgICBkZWZhdWx0UHJveHkuc2V0QmFzZVVyaSh0aGlzLmJhc2VVcmkpO1xyXG4gICAgY29uc3QgZXh0ZW5kID0gbmV3IEJlZlByb3h5RXh0ZW5kKHRoaXMucmVwb3NpdG9yeSk7XHJcbiAgICBkZWZhdWx0UHJveHkuc2V0UHJveHlFeHRlbmQoZXh0ZW5kKTtcclxuICAgIHJldHVybiBkZWZhdWx0UHJveHk7XHJcbiAgfVxyXG5cclxuICAvLyAjZW5kcmVnaW9uXHJcblxyXG5cclxuICAvLyAjcmVnaW9uIOWfuuacrENSVUTmlrnms5VcclxuXHJcbiAgLyoqXHJcbiAgICog5bey5bqf5byD77yM6K+35L2/55SocmVwb3NpdG9yeS5wcm94eeWvueW6lOaWueazleS7o+abv1xyXG4gICAqIEBkZXByZWNhdGVkXHJcbiAgICovXHJcbiAgcHVibGljIHF1ZXJ5KGVudGl0eUZpbHRlcj86IGFueSk6IE9ic2VydmFibGU8YW55PiB7XHJcbiAgICByZXR1cm4gdGhpcy5wcm94eS5xdWVyeShlbnRpdHlGaWx0ZXIpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICog5bey5bqf5byD77yM6K+35L2/55SocmVwb3NpdG9yeS5wcm94eeWvueW6lOaWueazleS7o+abv1xyXG4gICAqIEBkZXByZWNhdGVkXHJcbiAgICovXHJcbiAgcHVibGljIGV4dGVuZFF1ZXJ5KGVudGl0eUZpbHRlcjogYW55LCByZXF1ZXN0SW5mbzogUmVxdWVzdEluZm8pOiBPYnNlcnZhYmxlPFJlc3BvbnNlSW5mbz4ge1xyXG4gICAgcmV0dXJuIHRoaXMucHJveHkuZXh0ZW5kUXVlcnkoZW50aXR5RmlsdGVyLCByZXF1ZXN0SW5mbyk7XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIOWIhumhteafpeivouWQhOS7juihqOaVsOaNrlxyXG4gICAqIEBwYXJhbSBpZCDkuLvooahpZFxyXG4gICAqIEBwYXJhbSByZXRyaWV2ZVBhcmFtIOWPguaVsFxyXG4gICAqL1xyXG4gIHB1YmxpYyBzZXJ2aWNlUmV0cmlldmUoaWQ6IHN0cmluZywgcmV0cmlldmVQYXJhbTogYW55LCByZXF1ZXN0SW5mbzogUmVxdWVzdEluZm8pOiBPYnNlcnZhYmxlPGFueT4ge1xyXG4gICAgcmV0dXJuIHRoaXMucHJveHkuc2VydmljZVJldHJpZXZlKGlkLCByZXRyaWV2ZVBhcmFtLCByZXF1ZXN0SW5mbyk7XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIOWIhumhteafpeivouS7juihqC/ku47ku47ooajmlbDmja5cclxuICAgKiBAcGFyYW0gcGFyYW1zIOafpeivouWPguaVsFxyXG4gICAqL1xyXG4gIHB1YmxpYyBxdWVyeUNoaWxkKHBhcmFtczogYW55KSB7XHJcbiAgICByZXR1cm4gdGhpcy5wcm94eS5xdWVyeUNoaWxkKHBhcmFtcyk7XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIOW3suW6n+W8g++8jOivt+S9v+eUqHJlcG9zaXRvcnkucHJveHnlr7nlupTmlrnms5Xku6Pmm79cclxuICAgKiBAZGVwcmVjYXRlZFxyXG4gICAqL1xyXG4gIHB1YmxpYyByZXRyaWV2ZShpZDogc3RyaW5nKTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuICAgIHJldHVybiB0aGlzLnByb3h5LnJldHJpZXZlKGlkKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIOW3suW6n+W8g++8jOivt+S9v+eUqHJlcG9zaXRvcnkucHJveHnlr7nlupTmlrnms5Xku6Pmm79cclxuICAgKiBAZGVwcmVjYXRlZFxyXG4gICAqL1xyXG4gIHB1YmxpYyBleHRlbmRSZXRyaWV2ZShpZDogc3RyaW5nLCByZXF1ZXN0SW5mbzogUmVxdWVzdEluZm8pOiBPYnNlcnZhYmxlPFJlc3BvbnNlSW5mbz4ge1xyXG4gICAgcmV0dXJuIHRoaXMucHJveHkuZXh0ZW5kUmV0cmlldmUoaWQsIHJlcXVlc3RJbmZvKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIOW3suW6n+W8g++8jOivt+S9v+eUqHJlcG9zaXRvcnkucHJveHnlr7nlupTmlrnms5Xku6Pmm79cclxuICAgKiBAZGVwcmVjYXRlZFxyXG4gICAqL1xyXG4gIHB1YmxpYyBjcmVhdGUoZGVmYXVsdFZhbHVlPzogYW55LCByZXF1ZXN0SW5mbz86IFJlcXVlc3RJbmZvKTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuICAgIHJldHVybiB0aGlzLnByb3h5LmNyZWF0ZShkZWZhdWx0VmFsdWUsIHJlcXVlc3RJbmZvKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIOW3suW6n+W8g++8jOivt+S9v+eUqHJlcG9zaXRvcnkucHJveHnlr7nlupTmlrnms5Xku6Pmm79cclxuICAgKiBAZGVwcmVjYXRlZFxyXG4gICAqL1xyXG4gIHB1YmxpYyBjcmVhdGVCeVBhdGgoZnBhdGg6IHN0cmluZywgcmVxdWVzdEluZm8/OiBSZXF1ZXN0SW5mbyk6IE9ic2VydmFibGU8YW55PiB7XHJcbiAgICByZXR1cm4gdGhpcy5wcm94eS5jcmVhdGVCeVBhdGgoZnBhdGgsIHJlcXVlc3RJbmZvKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIOW3suW6n+W8g++8jOivt+S9v+eUqHJlcG9zaXRvcnkucHJveHnlr7nlupTmlrnms5Xku6Pmm79cclxuICAgKiBAZGVwcmVjYXRlZFxyXG4gICAqL1xyXG4gIHVwZGF0ZShjaGFuZ2VEZXRhaWw6IENoYW5nZURldGFpbCwgcmVxdWVzdEluZm8/OiBSZXF1ZXN0SW5mbyk6IE9ic2VydmFibGU8YW55PiB7XHJcbiAgICByZXR1cm4gdGhpcy5wcm94eS51cGRhdGUoY2hhbmdlRGV0YWlsLCByZXF1ZXN0SW5mbyk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiDlt7Llup/lvIPvvIzor7fkvb/nlKhyZXBvc2l0b3J5LnByb3h55a+55bqU5pa55rOV5Luj5pu/XHJcbiAgICogQGRlcHJlY2F0ZWRcclxuICAgKi9cclxuICBwdWJsaWMgc2F2ZShyZXF1ZXN0SW5mbz86IFJlcXVlc3RJbmZvKTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuICAgIHJldHVybiB0aGlzLnByb3h5LnNhdmUocmVxdWVzdEluZm8pO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICog5bey5bqf5byD77yM6K+35L2/55SocmVwb3NpdG9yeS5wcm94eeWvueW6lOaWueazleS7o+abv1xyXG4gICAqIEBkZXByZWNhdGVkXHJcbiAgICovXHJcbiAgcHVibGljIGRlbGV0ZShpZDogc3RyaW5nKTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuICAgIHJldHVybiB0aGlzLnByb3h5LmRlbGV0ZShpZCk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiDlt7Llup/lvIPvvIzor7fkvb/nlKhyZXBvc2l0b3J5LnByb3h55a+55bqU5pa55rOV5Luj5pu/XHJcbiAgICogQGRlcHJlY2F0ZWRcclxuICAgKi9cclxuICBwdWJsaWMgZXh0ZW5kRGVsZXRlKGlkOiBzdHJpbmcsIHJlcXVlc3RJbmZvOiBSZXF1ZXN0SW5mbyk6IE9ic2VydmFibGU8UmVzcG9uc2VJbmZvPiB7XHJcbiAgICByZXR1cm4gdGhpcy5wcm94eS5leHRlbmREZWxldGUoaWQsIHJlcXVlc3RJbmZvKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIOW3suW6n+W8g++8jOivt+S9v+eUqHJlcG9zaXRvcnkucHJveHnlr7nlupTmlrnms5Xku6Pmm79cclxuICAgKiBAZGVwcmVjYXRlZFxyXG4gICAqL1xyXG4gIHB1YmxpYyBkZWxldEJ5UGF0aChmcGF0aDogc3RyaW5nLCBpZDogc3RyaW5nKTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuICAgIHJldHVybiB0aGlzLnByb3h5LmRlbGV0QnlQYXRoKGZwYXRoLCBpZCk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiDlt7Llup/lvIPvvIzor7fkvb/nlKhyZXBvc2l0b3J5LnByb3h55a+55bqU5pa55rOV5Luj5pu/XHJcbiAgICogQGRlcHJlY2F0ZWRcclxuICAgKi9cclxuICBwdWJsaWMgZXh0ZW5kRGVsZXRCeVBhdGgoZnBhdGg6IHN0cmluZywgaWQ6IHN0cmluZywgcmVxdWVzdEluZm86IFJlcXVlc3RJbmZvKTogT2JzZXJ2YWJsZTxSZXNwb25zZUluZm8+IHtcclxuICAgIHJldHVybiB0aGlzLnByb3h5LmV4dGVuZERlbGV0QnlQYXRoKGZwYXRoLCBpZCwgcmVxdWVzdEluZm8pO1xyXG4gIH1cclxuICBwdWJsaWMgYmF0Y2hEZWxldGVCeVBhdGgoZlBhdGg6IHN0cmluZywgaWRzOiBzdHJpbmcsIHJlcXVlc3RJbmZvOiBSZXF1ZXN0SW5mbyk6IE9ic2VydmFibGU8UmVzcG9uc2VJbmZvPiB7XHJcbiAgICByZXR1cm4gdGhpcy5wcm94eS5iYXRjaERlbGV0ZUJ5UGF0aChmUGF0aCwgaWRzLCByZXF1ZXN0SW5mbyk7XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIOW3suW6n+W8g++8jOivt+S9v+eUqHJlcG9zaXRvcnkucHJveHnlr7nlupTmlrnms5Xku6Pmm79cclxuICAgKiBAZGVwcmVjYXRlZFxyXG4gICAqL1xyXG4gIHB1YmxpYyBiYXRjaERlbGV0ZShpZHM6IHN0cmluZ1tdKTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuICAgIHJldHVybiB0aGlzLnByb3h5LmJhdGNoRGVsZXRlKGlkcyk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiDlt7Llup/lvIPvvIzor7fkvb/nlKhyZXBvc2l0b3J5LnByb3h55a+55bqU5pa55rOV5Luj5pu/XHJcbiAgICogQGRlcHJlY2F0ZWRcclxuICAgKi9cclxuICBwdWJsaWMgZXh0ZW5kQmF0Y2hEZWxldGUoaWRzOiBzdHJpbmdbXSwgcmVxdWVzdEluZm86IFJlcXVlc3RJbmZvKTogT2JzZXJ2YWJsZTxSZXNwb25zZUluZm8+IHtcclxuICAgIHJldHVybiB0aGlzLnByb3h5LmV4dGVuZEJhdGNoRGVsZXRlKGlkcywgcmVxdWVzdEluZm8pO1xyXG4gIH1cclxuXHJcblxyXG4gIC8qKlxyXG4gICAqIOW3suW6n+W8g++8jOivt+S9v+eUqHJlcG9zaXRvcnkucHJveHnlr7nlupTmlrnms5Xku6Pmm79cclxuICAgKiBAZGVwcmVjYXRlZFxyXG4gICAqL1xyXG4gIHB1YmxpYyBjYW5jZWwob3B0aW9ucz86IGFueSk6IE9ic2VydmFibGU8YW55PiB7XHJcbiAgICByZXR1cm4gdGhpcy5wcm94eS5jYW5jZWwob3B0aW9ucyk7XHJcbiAgfVxyXG5cclxuICAvLyAjZW5kcmVnaW9uXHJcblxyXG5cclxuICAvLyAjcmVnaW9uIHJlcXVlc3Tmlrnms5VcclxuXHJcbiAgLyoqXHJcbiAgICog5bey5bqf5byD77yM6K+35L2/55SocmVwb3NpdG9yeS5wcm94eeWvueW6lOaWueazleS7o+abv1xyXG4gICAqIEBkZXByZWNhdGVkXHJcbiAgICovXHJcbiAgcHVibGljIHJlcXVlc3QoXHJcbiAgICB1cmw6IHN0cmluZywgbWV0aG9kOiBzdHJpbmcsIHBhcmFtcz86IGFueSwgb3B0aW9ucz86IGFueSxcclxuICAgIHNlbGZIYW5kRXJyb3I/OiBib29sZWFuLCBpZ25vcmVFcnJvcj86IGJvb2xlYW4sIGlnbm9yZUNoYW5nZXM/OiBib29sZWFuXHJcbiAgKTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuICAgIHJldHVybiB0aGlzLmlubmVyUmVxdWVzdCh1cmwsIG1ldGhvZCwgcGFyYW1zLCBvcHRpb25zLCBzZWxmSGFuZEVycm9yLCBpZ25vcmVFcnJvciwgaWdub3JlQ2hhbmdlcywgZmFsc2UpO1xyXG4gIH1cclxuICAvLyB0c2xpbnQ6ZGlzYWJsZTogYWxpZ25cclxuXHJcbiAgLyoqXHJcbiAgICog6LCD55So5ZCO56uv5pa55rOVXHJcbiAgICogQHBhcmFtIHVybCB1cmxcclxuICAgKiBAcGFyYW0gbWV0aG9kIG1ldGhvZFxyXG4gICAqIEBwYXJhbSBwYXJhbXMgcGFyYW1zXHJcbiAgICogQHBhcmFtIG9wdGlvbnMgb3B0aW9uc1xyXG4gICAqIEBwYXJhbSBzZWxmSGFuZEVycm9yIOiHquW3seWkhOeQhuW8guW4uFxyXG4gICAqIEBwYXJhbSBpZ25vcmVFcnJvciDlv73nlaXplJnor69cclxuICAgKiBAcGFyYW0gaWdub3JlQ2hhbmdlcyDlv73nlaXlj5jmm7RcclxuICAgKi9cclxuICBwdWJsaWMgaW52b2tlKHVybDogc3RyaW5nLCBtZXRob2Q6IHN0cmluZywgcGFyYW1zPzogYW55LCBvcHRpb25zPzogYW55LFxyXG4gICAgc2VsZkhhbmRFcnJvcj86IGJvb2xlYW4sIGlnbm9yZUVycm9yPzogYm9vbGVhbiwgaWdub3JlQ2hhbmdlcz86IGJvb2xlYW4pIHtcclxuICAgIGlmIChvcHRpb25zICYmIG9wdGlvbnMuYm9keSAmJiBvcHRpb25zLmJvZHkuUmVxdWVzdEluZm8pIHtcclxuICAgICAgdGhyb3cgbmV3IEVycm9yKCfor7fkvb/nlKhyZXF1ZXN0SW5mb+aPkOS6pOWPmOabtCcpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHRoaXMuaW5uZXJSZXF1ZXN0KHVybCwgbWV0aG9kLCBwYXJhbXMsIG9wdGlvbnMsIHNlbGZIYW5kRXJyb3IsIGlnbm9yZUVycm9yLCBpZ25vcmVDaGFuZ2VzLCB0cnVlKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIOWGhemDqOeahHJlcXVlc3Tmlrnms5VcclxuICAgKi9cclxuICBwcml2YXRlIGlubmVyUmVxdWVzdChcclxuICAgIHVybDogc3RyaW5nLCBtZXRob2Q6IHN0cmluZywgcGFyYW1zPzogYW55LCBvcHRpb25zPzogYW55LFxyXG4gICAgc2VsZkhhbmRFcnJvcj86IGJvb2xlYW4sIGlnbm9yZUVycm9yPzogYm9vbGVhbiwgaWdub3JlQ2hhbmdlcz86IGJvb2xlYW4sXHJcbiAgICB1c2VDb3JyZWN0UmVxdWVzdEluZm9DaGVja01ldGhvZD86IGJvb2xlYW5cclxuICApIHtcclxuICAgIG9wdGlvbnMgPSBvcHRpb25zIHx8IHt9O1xyXG4gICAgY29uc3QgYmVmU2Vzc2lvbklkS2V5ID0gJ0JFRlNlc3Npb25JRCc7XHJcblxyXG4gICAgLy8g5piv5ZCm6Ieq5bex5aSE55CG5byC5bi4XHJcbiAgICBpZiAodHlwZW9mIChzZWxmSGFuZEVycm9yKSA9PT0gJ3VuZGVmaW5lZCcgfHwgdHlwZW9mIChzZWxmSGFuZEVycm9yKSAhPT0gJ2Jvb2xlYW4nKSB7XHJcbiAgICAgIHNlbGZIYW5kRXJyb3IgPSBmYWxzZTtcclxuICAgIH1cclxuXHJcbiAgICAvLyDmmK/lkKblv73nlaXlvILluLjnu6fnu63miafooYxcclxuICAgIGlmICh0eXBlb2YgKGlnbm9yZUVycm9yKSA9PT0gJ3VuZGVmaW5lZCcgfHwgdHlwZW9mIChpZ25vcmVFcnJvcikgIT09ICdib29sZWFuJykge1xyXG4gICAgICBpZ25vcmVFcnJvciA9IGZhbHNlO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIOmAieaLqeajgOafpVJlcXVlc3RJbmZv55qE5pa55rOVXHJcbiAgICBpZiAodHlwZW9mICh1c2VDb3JyZWN0UmVxdWVzdEluZm9DaGVja01ldGhvZCkgPT09ICd1bmRlZmluZWQnIHx8IHR5cGVvZiAodXNlQ29ycmVjdFJlcXVlc3RJbmZvQ2hlY2tNZXRob2QpICE9PSAnYm9vbGVhbicpIHtcclxuICAgICAgdXNlQ29ycmVjdFJlcXVlc3RJbmZvQ2hlY2tNZXRob2QgPSBmYWxzZTtcclxuICAgIH1cclxuICAgIGNvbnN0IGNoZWNrUmVxdWVzdEluZm9NZXRob2QgPSB1c2VDb3JyZWN0UmVxdWVzdEluZm9DaGVja01ldGhvZCA/IHRoaXMuZXhpc3RSZXF1ZXN0SW5mbyA6IHRoaXMuaGFzUmVxdWVzdEluZm87XHJcblxyXG4gICAgLy8gcGFyYW1zXHJcbiAgICBpZiAocGFyYW1zKSB7XHJcbiAgICAgIC8vIGNvbnN0IGh0dHBQYXJhbXMgPSB0aGlzLmJ1aWxkUGFyYW1zKHBhcmFtcyk7XHJcbiAgICAgIG9wdGlvbnMucGFyYW1zID0gcGFyYW1zO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIOW4puaciXJlcXVlc3RJbmZv55qE6K+35rGC77yM6K+35rGC5oiQ5Yqf5ZCO5riF56m65Y+Y5pu06ZuGXHJcbiAgICBjb25zdCBoYXNSZXF1ZXN0SW5mbyA9IGNoZWNrUmVxdWVzdEluZm9NZXRob2Qob3B0aW9ucyk7XHJcbiAgICBsZXQgaGVhZGVycyA9IEh0dHBIZWFkZXJVdGlsLmNvbnZlcnRUb0hlYWRlcnMob3B0aW9ucy5oZWFkZXJzKTtcclxuXHJcbiAgICAvLyDkuLLogZRzZXNzaW9u5rWB5ZKMaHR0cOa1gVxyXG4gICAgcmV0dXJuIHRoaXMuc2Vzc2lvblNlcnZpY2UuZ2V0QmVTZXNzaW9uSWQoKS5waXBlKFxyXG4gICAgICBzd2l0Y2hNYXAoKHNlc3Npb25JZDogc3RyaW5nKSA9PiB7XHJcbiAgICAgICAgaGVhZGVycyA9IHRoaXMuc2Vzc2lvblNlcnZpY2UuZXh0ZW5kUmVxdWVzdEhlYWRlcnMoaGVhZGVycyk7XHJcbiAgICAgICAgb3B0aW9ucy5oZWFkZXJzID0gSHR0cEhlYWRlclV0aWwudG9Kc29uKGhlYWRlcnMpO1xyXG4gICAgICAgIG9wdGlvbnMub2JzZXJ2ZSA9ICdyZXNwb25zZSc7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cFNlcnZpY2UucmVxdWVzdChtZXRob2QsIHVybCwgb3B0aW9ucyk7XHJcbiAgICAgIH0pLFxyXG4gICAgICB0YXAoKHJlc3BvbnNlOiBhbnkpID0+IHtcclxuICAgICAgICBpZiAocmVzcG9uc2UuaGVhZGVycyAmJiByZXNwb25zZS5oZWFkZXJzLmhhcyhiZWZTZXNzaW9uSWRLZXkpKSB7XHJcbiAgICAgICAgICB0aGlzLnNlc3Npb25TZXJ2aWNlLnNldEJlU2Vzc2lvbklkKHJlc3BvbnNlLmhlYWRlcnMuZ2V0KGJlZlNlc3Npb25JZEtleSkpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSksXHJcbiAgICAgIG1hcCgocmVzcG9uc2U6IGFueSkgPT4gcmVzcG9uc2UuYm9keSksXHJcbiAgICAgIG1hcCgocmVzdWx0OiBhbnkpID0+IHtcclxuICAgICAgICBjb25zdCBtZXNzYWdlcyA9IFJlc3BvbnNlSW5mb1V0aWwucGFyc2VCYWNrRW5kTWVzc2FnZShyZXN1bHQpO1xyXG4gICAgICAgIEJhY2tFbmRNZXNzYWdlVXRpbC5oYW5kbGVNZXNzYWdlKG1lc3NhZ2VzLCB0aGlzLnJlcG9zaXRvcnkuZ2V0SW5qZWN0b3IoKSk7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuaGFuZGxlUmVwb25zZUluZm8ocmVzdWx0LCBoYXNSZXF1ZXN0SW5mbywgaWdub3JlQ2hhbmdlcyk7XHJcbiAgICAgIH0pLFxyXG4gICAgICBjYXRjaEVycm9yKChlcnJvcjogYW55KSA9PiB7XHJcbiAgICAgICAgY29uc3QgbWVzc2FnZXMgPSBSZXNwb25zZUluZm9VdGlsLnBhcnNlQmFja0VuZEVycm9yKGVycm9yKTtcclxuICAgICAgICBCYWNrRW5kTWVzc2FnZVV0aWwuaGFuZGxlTWVzc2FnZShtZXNzYWdlcywgdGhpcy5yZXBvc2l0b3J5LmdldEluamVjdG9yKCkpO1xyXG4gICAgICAgIHJldHVybiB0aGlzLmhhbmRsZUVycm9ycyhlcnJvciwgc2VsZkhhbmRFcnJvciwgaWdub3JlRXJyb3IpO1xyXG4gICAgICB9KVxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIOWkhOeQhui/lOWbnue7k+aenFxyXG4gICAqL1xyXG4gIHB1YmxpYyBoYW5kbGVSZXBvbnNlSW5mbyhyZXN1bHQ6IGFueSwgaGFzUmVxdWVzdEluZm86IGJvb2xlYW4sIGlnbm9yZUNoYW5nZXM6IGJvb2xlYW4pOiBhbnkge1xyXG4gICAgaWYgKGhhc1JlcXVlc3RJbmZvKSB7XHJcbiAgICAgIC8vIOWmguaenOacieW4puaciVJlcXVlc3RJbmZv77yM5YiZ5oyJ5paw57uT5p6E5aSE55CGXHJcbiAgICAgIC8vIDHjgIHlupTnlKjmnI3liqHlmajnq6/ov5Tlm57nmoTlj5jmm7TvvJtcclxuICAgICAgLy8gMuOAgea4heepuuacrOWcsOWPmOabtOmbhu+8m1xyXG4gICAgICAvLyAz44CB6L+U5Zue5paw57uT5p6EXHJcbiAgICAgIGlmIChyZXN1bHQgJiYgcmVzdWx0LmlubmVyRGF0YUNoYW5nZSAmJiBpZ25vcmVDaGFuZ2VzICE9PSB0cnVlKSB7XHJcbiAgICAgICAgdGhpcy5yZXBvc2l0b3J5LmhhbmRsZURhdGFDaGFuZ2VEZXRhaWxzKHJlc3VsdC5pbm5lckRhdGFDaGFuZ2UpO1xyXG4gICAgICB9XHJcbiAgICAgIHRoaXMucmVwb3NpdG9yeS5jbGVhckFsbEVudGl0eUNoYW5nZXMoKTtcclxuICAgICAgcmV0dXJuIHJlc3VsdDtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIC8vIOWmguaenOacieayoeaciVJlcXVlc3RJbmZv77yM5YiZ5oyJ6ICB55qE5pa55byP5aSE55CGXHJcbiAgICAgIC8vIDHjgIHkuI3lpITnkIbmnI3liqHlmajnq6/ov5Tlm57nmoTlj5jmm7TvvJrot5/ogIHnmoTooYzkuLrkuIDmoLfvvJtcclxuICAgICAgLy8gMuOAgeS4jea4heeQhuacrOWcsOWPmOabtO+8muWboOS4uuWPmOabtOayoeacieaPkOS6pO+8m1xyXG4gICAgICAvLyAz44CB6L+U5Zue6ICB55qE57uT5p6E77ya5YW85a656ICB55qE5Luj56CBXHJcbiAgICAgIHJldHVybiB0aGlzLnVuV3JhcFJlc3BvbnNlSW5mbyhyZXN1bHQpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICog6ZSZ6K+v5aSE55CGXHJcbiAgICovXHJcbiAgcHVibGljIGhhbmRsZUVycm9ycyhlcnJvcjogYW55LCBzZWxmSGFuZEVycm9yOiBib29sZWFuLCBpZ25vcmVFcnJvcjogYm9vbGVhbik6IE9ic2VydmFibGU8YW55PiB7XHJcbiAgICB0aGlzLmNsZWFyTG9hZGluZygpO1xyXG5cclxuICAgIGlmICghIXNlbGZIYW5kRXJyb3IpIHtcclxuICAgICAgcmV0dXJuIHRocm93RXJyb3IoZXJyb3IpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgY29uc3QgZm9ybUFwcENvbnRleHQgPSB0aGlzLnJlcG9zaXRvcnkuYXBwQ29udGV4dC5nZXRGb3JtQXBwQ29udGV4dCgpO1xyXG4gICAgICBjb25zdCBhcHBsaWNhdGlvbklkID0gZm9ybUFwcENvbnRleHQuQXBwbGljYXRpb25JZDtcclxuICAgICAgY29uc3QgYXBwbGljYXRpb25Db250ZXh0OiBhbnkgPSB3aW5kb3dbYXBwbGljYXRpb25JZF0gfHwge307XHJcbiAgICAgIGNvbnN0IGlzRXhjZXB0aW9uSGFuZGxlckV4aXN0ID0gISFhcHBsaWNhdGlvbkNvbnRleHQuaXNFeGNlcHRpb25IYW5kbGVyRXhpc3Q7XHJcbiAgICAgIGlmICghIXRoaXMuZXZlbnRCdXMgJiYgaXNFeGNlcHRpb25IYW5kbGVyRXhpc3QpIHtcclxuICAgICAgICBpZiAoUmVzcG9uc2VJbmZvVXRpbC5pc1JlcG9ydGVkNDAxRXJyb3IoZXJyb3IpKSB7XHJcbiAgICAgICAgICByZXR1cm4gdGhyb3dFcnJvcihlcnJvcik7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmICghKGVycm9yICYmIGVycm9yLmVycm9yICYmIGVycm9yLmVycm9yLmV4dGVuc2lvbk1lc3NhZ2UgJiYgQmFja0VuZE1lc3NhZ2VVdGlsLmlzQmFja0VuZE1lc3NhZ2VIYW5kbGVyRXhpc3QodGhpcy5yZXBvc2l0b3J5LmdldEluamVjdG9yKCkpKSkge1xyXG4gICAgICAgICAgdGhpcy5ldmVudEJ1cy5wb3N0KCdFeGNlcHRpb24nLCAnJywgJ29uRXhjZXB0aW9uJywgZXJyb3IsIGZvcm1BcHBDb250ZXh0KTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKGlnbm9yZUVycm9yKSB7XHJcbiAgICAgICAgICByZXR1cm4gb2YobnVsbCk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHJldHVybiBFTVBUWTtcclxuICAgICAgICB9XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoZXJyb3IpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG4gIC8vICNlbmRyZWdpb25cclxuXHJcblxyXG4gIC8vICNyZWdpb24g5bel5YW35pa55rOVXHJcblxyXG4gIC8qKlxyXG4gICAqIOa4heepukxvYWRpbmdcclxuICAgKi9cclxuICBwcml2YXRlIGNsZWFyTG9hZGluZygpOiB2b2lkIHtcclxuICAgIGNvbnN0IGlmTG9hZGluZ0V4aXN0cyA9IHdpbmRvd1snREVWS0lUX0xPQURJTkdfU0VSVklDRSddICYmXHJcbiAgICAgIHdpbmRvd1snREVWS0lUX0xPQURJTkdfU0VSVklDRSddIGluc3RhbmNlb2YgQXJyYXkgJiZcclxuICAgICAgd2luZG93WydERVZLSVRfTE9BRElOR19TRVJWSUNFJ10ubGVuZ3RoID4gMCB8fCBmYWxzZTtcclxuXHJcbiAgICBpZiAoaWZMb2FkaW5nRXhpc3RzID09PSBmYWxzZSkge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3QgbG9hZGluZ1NlcnZpY2VzOiBhbnlbXSA9IHdpbmRvd1snREVWS0lUX0xPQURJTkdfU0VSVklDRSddO1xyXG4gICAgZm9yIChjb25zdCBzZXJ2aWNlIG9mIGxvYWRpbmdTZXJ2aWNlcykge1xyXG4gICAgICBpZiAodHlwZW9mIChzZXJ2aWNlLmNsZWFyQWxsKSA9PT0gJ2Z1bmN0aW9uJykge1xyXG4gICAgICAgIHNlcnZpY2UuY2xlYXJBbGwoKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICog5aSE55CG6L+U5Zue5YC877yM5YW85a656ICB54mI5pysXHJcbiAgICovXHJcbiAgcHJpdmF0ZSB1bldyYXBSZXNwb25zZUluZm8ocmVzdWx0OiBhbnkpOiBhbnkge1xyXG4gICAgcmV0dXJuIFJlc3BvbnNlSW5mb1V0aWwudW5XcmFwUmVzcG9uc2VJbmZvKHJlc3VsdCk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiDmmK/lkKbluKbmnIlSZXF1ZXN0SW5mb1xyXG4gICAqL1xyXG4gIHByaXZhdGUgaGFzUmVxdWVzdEluZm8ob3B0aW9uczogYW55KTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gUmVxdWVzdEluZm9VdGlsLmhhc1JlcXVlc3RJbmZvV2l0aFIob3B0aW9ucyk7XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIOaYr+WQpuW4puaciXJlcXVlc3RJbmZvXHJcbiAgICovXHJcbiAgcHJpdmF0ZSBleGlzdFJlcXVlc3RJbmZvKG9wdGlvbnM6IGFueSkge1xyXG4gICAgcmV0dXJuIFJlcXVlc3RJbmZvVXRpbC5oYXNSZXF1ZXN0SW5mbyhvcHRpb25zKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIOaehOmAoEh0dHBQYXJhbXPlr7nosaFcclxuICAgKiBAcGFyYW0gcGFyYW1zIOivt+axguWPguaVsFxyXG4gICAqL1xyXG4gIHByaXZhdGUgYnVpbGRQYXJhbXMocGFyYW1zOiBhbnkpOiBIdHRwUGFyYW1zIHtcclxuICAgIHJldHVybiBIdHRwUGFyYW1VdGlsLmJ1aWxkUGFyYW1zKHBhcmFtcyk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiDmnoTpgKDluKZSZXF1ZXN0SW5mb+eahEJvZHnvvIjpgILnlKjkuo7lpJrkuKrlj4LmlbDnmoTmg4XlhrXvvIzlpoLmnpzlj6rmnInkuIDkuKpSZXF1ZXN0SW5mb+WPguaVsO+8jGJvZHk9UmVxdWVzdEluZm/vvIlcclxuICAgKiBAYm9keSDmnKrmkLrluKZSZXF1ZXN0SW5mb+eahGJvZHnvvIzmoLzlvI/lvaLlpoI6IHtrZXkxOiB2YWx1ZTEsIGtleTI6IHZhbHVlMn1cclxuICAgKi9cclxuICBwdWJsaWMgYnVpbGRCb2R5V2l0aFJlcXVlc3RJbmZvKGJvZHk6IGFueSk6IGFueSB7XHJcbiAgICByZXR1cm4gUmVxdWVzdEluZm9VdGlsLmJ1aWxkQm9keVdpdGhSZXF1ZXN0SW5mbyhib2R5LCB0aGlzLnJlcG9zaXRvcnkpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICog5p6E6YCgUmVxdWVzdEluZm9cclxuICAgKi9cclxuICBwdWJsaWMgYnVpbGRSZXF1ZXN0SW5mbygpOiBSZXF1ZXN0SW5mbyB7XHJcbiAgICByZXR1cm4gUmVxdWVzdEluZm9VdGlsLmJ1aWxkUmVxdWVzdEluZm8odGhpcy5yZXBvc2l0b3J5KTtcclxuICB9XHJcblxyXG4gIC8vICNlbmRyZWdpb25cclxuXHJcbn1cclxuXHJcbmV4cG9ydCB7IEJlZlJlc3RTZXJ2aWNlIH07XHJcblxyXG4iXX0=
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmVmX3Jlc3Rfc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BmYXJyaXMvYmVmLyIsInNvdXJjZXMiOlsibGliL2JlZl9yZXN0X3NlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7QUFPQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxVQUFVLEVBQTJCLE1BQU0sc0JBQXNCLENBQUM7QUFDM0UsT0FBTyxFQUFjLFVBQVUsRUFBRSxFQUFFLEVBQUUsS0FBSyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3pELE9BQU8sRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFFLFVBQVUsRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNqRSxPQUFPLEVBQVUsUUFBUSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDbEQsT0FBTyxFQUFFLGNBQWMsRUFBRSxhQUFhLEVBQUUsZUFBZSxFQUFFLGdCQUFnQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2pHLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUNqRCxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUN0RSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUVwRCxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQ3ZDLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ3BELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM3QyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQzs7TUFFN0QsR0FBRyxHQUFHLEtBQUs7O01BQ1gsTUFBTSxHQUFHLFFBQVE7O01BQ2pCLEdBQUcsR0FBRyxLQUFLOztNQUNYLElB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d0NBQXlDOzs7OztJQUt6QyxpQ0FBdUI7Ozs7O0lBS3ZCLGtDQUEwQjs7QUFtYTVCLE9BQU8sRUFBRSxjQUFjLEVBQUUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qXHJcbiAqIEBBdXRob3I6IFdpdHRcclxuICogQERhdGU6IDIwMTktMDItMjMgMTM6NTc6NDdcclxuICogQExhc3QgTW9kaWZpZWQgYnk6IGFhbGl6endlbGxcclxuICogQExhc3QgTW9kaWZpZWQgdGltZTogMjAxOS0wOS0yNCAxNDoxMDo0MFxyXG4gKi9cclxuXHJcbmltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgSHR0cENsaWVudCwgSHR0cEhlYWRlcnMsIEh0dHBQYXJhbXMgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XHJcbmltcG9ydCB7IE9ic2VydmFibGUsIHRocm93RXJyb3IsIG9mLCBFTVBUWSB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBzd2l0Y2hNYXAsIG1hcCwgY2F0Y2hFcnJvciwgdGFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xyXG5pbXBvcnQgeyBFbnRpdHksIEV2ZW50QnVzIH0gZnJvbSAnQGZhcnJpcy9kZXZraXQnO1xyXG5pbXBvcnQgeyBIdHRwSGVhZGVyVXRpbCwgSHR0cFBhcmFtVXRpbCwgUmVxdWVzdEluZm9VdGlsLCBSZXNwb25zZUluZm9VdGlsIH0gZnJvbSAnLi91dGlscy9pbmRleCc7XHJcbmltcG9ydCB7IEJlZlJlcG9zaXRvcnkgfSBmcm9tICcuL2JlZl9yZXBvc2l0b3J5JztcclxuaW1wb3J0IHsgRnJhbWV3b3JrU2Vzc2lvblNlcnZpY2UgfSBmcm9tICcuL2ZyYW1ld29ya19zZXNzaW9uX3NlcnZpY2UnO1xyXG5pbXBvcnQgeyBCZWZTZXNzaW9uU2VydmljZSB9IGZyb20gJy4vc2Vzc2lvbi9pbmRleCc7XHJcbmltcG9ydCB7IENoYW5nZURldGFpbCwgUmVxdWVzdEluZm8sIFJlc3BvbnNlSW5mbyB9IGZyb20gJy4vdHlwZXMnO1xyXG5pbXBvcnQgeyBCZWZQcm94eSB9IGZyb20gJy4vYmVmX3Byb3h5JztcclxuaW1wb3J0IHsgVXJpU2VydmljZSB9IGZyb20gJy4vdXJpX3NlcnZpY2UnO1xyXG5pbXBvcnQgeyBCZWZQcm94eUV4dGVuZCB9IGZyb20gJy4vYmVmX3Byb3h5X2V4dGVuZCc7XHJcbmltcG9ydCB7IEh0dHBTZXJ2aWNlIH0gZnJvbSAnLi9odHRwX3NlcnZpY2UnO1xyXG5pbXBvcnQgeyBCYWNrRW5kTWVzc2FnZVV0aWwgfSBmcm9tICcuL3V0aWxzL2JhY2tfZW5kX21lc3NhZ2UudXRpbCc7XHJcblxyXG5jb25zdCBHRVQgPSAnR0VUJztcclxuY29uc3QgREVMRVRFID0gJ0RFTEVURSc7XHJcbmNvbnN0IFBVVCA9ICdQVVQnO1xyXG5jb25zdCBQT1NUID0gJ1BPU1QnO1xyXG5jb25zdCBQQVRDSCA9ICdQQVRDSCc7XHJcblxyXG4vKipcclxuICogQkVG5Y+W5pWw5pyN5YqhXHJcbiAqIOivpeacjeWKoeeUsUJlZlJlcG9zaXRvcnnlrp7kvovljJbvvIzkuI3lgZrms6jlhaXvvIzmr4/kuKpCZWZSZXBvc2l0b3J55oul5pyJ5LiA5LiqQmVmUmVzdFNlcnZpY2Xlrp7kvovjgIJcclxuICovXHJcbkBJbmplY3RhYmxlKClcclxuY2xhc3MgQmVmUmVzdFNlcnZpY2Uge1xyXG5cclxuICBwcml2YXRlIHJlcG9zaXRvcnk6IEJlZlJlcG9zaXRvcnk8RW50aXR5PjtcclxuXHJcbiAgLyoqXHJcbiAgICogaHR0cENsaWVudFxyXG4gICAqL1xyXG4gIHByaXZhdGUgaHR0cENsaWVudDogSHR0cENsaWVudDtcclxuICBwcml2YXRlIGh0dHBTZXJ2aWNlOiBIdHRwU2VydmljZTtcclxuXHJcbiAgLyoqXHJcbiAgICog5Lya6K+d5pyN5YqhXHJcbiAgICovXHJcbiAgcHVibGljIHNlc3Npb25TZXJ2aWNlOiBCZWZTZXNzaW9uU2VydmljZTtcclxuXHJcbiAgLyoqXHJcbiAgICog5o6l5Y+j5qC5VXJpXHJcbiAgICovXHJcbiAgcHVibGljIGJhc2VVcmk6IHN0cmluZztcclxuXHJcbiAgLyoqXHJcbiAgICog5LqL5Lu25oC757q/XHJcbiAgICovXHJcbiAgcHVibGljIGV2ZW50QnVzOiBFdmVudEJ1cztcclxuXHJcbiAgLyoqXHJcbiAgICog5p6E6YCg5Ye95pWwXHJcbiAgICogQHBhcmFtIGh0dHBDbGllbnQgaHR0cOacjeWKoVxyXG4gICAqIEBwYXJhbSBzZXJ2ZXJVcmkg5bqU55So5pyN5Yqh5Zmo5Zyw5Z2AXHJcbiAgICogQHBhcmFtIGJlVXJpIEJFIEFQSeWcsOWdgFxyXG4gICAqL1xyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgaHR0cENsaWVudDogSHR0cENsaWVudCwgYmFzZVVyaTogc3RyaW5nLFxyXG4gICAgZnJtU2Vzc2lvblNlcnZpY2U6IEZyYW1ld29ya1Nlc3Npb25TZXJ2aWNlLFxyXG4gICAgcmVwb3NpdG9yeTogQmVmUmVwb3NpdG9yeTxFbnRpdHk+LFxyXG4gICAgZXZlbnRCdXM/OiBFdmVudEJ1c1xyXG4gICkge1xyXG4gICAgdGhpcy5odHRwQ2xpZW50ID0gaHR0cENsaWVudDtcclxuICAgIHRoaXMuaHR0cFNlcnZpY2UgPSBuZXcgSHR0cFNlcnZpY2UodGhpcy5odHRwQ2xpZW50KTtcclxuICAgIHRoaXMuYmFzZVVyaSA9IGJhc2VVcmk7XHJcbiAgICBjb25zdCBpbmplY3RvciA9IHJlcG9zaXRvcnkuZ2V0SW5qZWN0b3IoKTtcclxuICAgIHRoaXMuc2Vzc2lvblNlcnZpY2UgPSBuZXcgQmVmU2Vzc2lvblNlcnZpY2UoaHR0cENsaWVudCwgYmFzZVVyaSwgZnJtU2Vzc2lvblNlcnZpY2UsIGluamVjdG9yKTtcclxuICAgIHRoaXMucmVwb3NpdG9yeSA9IHJlcG9zaXRvcnk7XHJcbiAgICB0aGlzLmV2ZW50QnVzID0gZXZlbnRCdXM7XHJcbiAgfVxyXG5cclxuXHJcbiAgLy8gI3JlZ2lvbiDku6PnkIbnm7jlhbNcclxuXHJcbiAgLyoqXHJcbiAgICog6I635Y+WQmVm5Luj55CGXHJcbiAgICovXHJcbiAgcHVibGljIGdldCBwcm94eSgpOiBCZWZQcm94eSB7XHJcbiAgICBpZiAoISF0aGlzLnJlcG9zaXRvcnkucHJveHkpIHtcclxuICAgICAgcmV0dXJuIHRoaXMucmVwb3NpdG9yeS5wcm94eTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHJldHVybiB0aGlzLmNyZWF0ZUJlZlByb3h5KCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiDliJvlu7pCZWbku6PnkIZcclxuICAgKi9cclxuICBwcml2YXRlIGNyZWF0ZUJlZlByb3h5KCkge1xyXG4gICAgY29uc3Qgc2VydmVyVXJpID0gdGhpcy5yZXBvc2l0b3J5LnNlcnZlclVyaTtcclxuICAgIGNvbnN0IHVyaVNlcnZpY2UgPSBuZXcgVXJpU2VydmljZShzZXJ2ZXJVcmkpO1xyXG4gICAgY29uc3QgZGVmYXVsdFByb3h5ID0gbmV3IEJlZlByb3h5KHRoaXMuaHR0cENsaWVudCwgdXJpU2VydmljZSk7XHJcbiAgICBkZWZhdWx0UHJveHkuc2V0QmFzZVVyaSh0aGlzLmJhc2VVcmkpO1xyXG4gICAgY29uc3QgZXh0ZW5kID0gbmV3IEJlZlByb3h5RXh0ZW5kKHRoaXMucmVwb3NpdG9yeSk7XHJcbiAgICBkZWZhdWx0UHJveHkuc2V0UHJveHlFeHRlbmQoZXh0ZW5kKTtcclxuICAgIHJldHVybiBkZWZhdWx0UHJveHk7XHJcbiAgfVxyXG5cclxuICAvLyAjZW5kcmVnaW9uXHJcblxyXG5cclxuICAvLyAjcmVnaW9uIOWfuuacrENSVUTmlrnms5VcclxuXHJcbiAgLyoqXHJcbiAgICog5bey5bqf5byD77yM6K+35L2/55SocmVwb3NpdG9yeS5wcm94eeWvueW6lOaWueazleS7o+abv1xyXG4gICAqIEBkZXByZWNhdGVkXHJcbiAgICovXHJcbiAgcHVibGljIHF1ZXJ5KGVudGl0eUZpbHRlcj86IGFueSk6IE9ic2VydmFibGU8YW55PiB7XHJcbiAgICByZXR1cm4gdGhpcy5wcm94eS5xdWVyeShlbnRpdHlGaWx0ZXIpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICog5bey5bqf5byD77yM6K+35L2/55SocmVwb3NpdG9yeS5wcm94eeWvueW6lOaWueazleS7o+abv1xyXG4gICAqIEBkZXByZWNhdGVkXHJcbiAgICovXHJcbiAgcHVibGljIGV4dGVuZFF1ZXJ5KGVudGl0eUZpbHRlcjogYW55LCByZXF1ZXN0SW5mbzogUmVxdWVzdEluZm8pOiBPYnNlcnZhYmxlPFJlc3BvbnNlSW5mbz4ge1xyXG4gICAgcmV0dXJuIHRoaXMucHJveHkuZXh0ZW5kUXVlcnkoZW50aXR5RmlsdGVyLCByZXF1ZXN0SW5mbyk7XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIOWIhumhteafpeivouWQhOS7juihqOaVsOaNrlxyXG4gICAqIEBwYXJhbSBpZCDkuLvooahpZFxyXG4gICAqIEBwYXJhbSByZXRyaWV2ZVBhcmFtIOWPguaVsFxyXG4gICAqL1xyXG4gIHB1YmxpYyBzZXJ2aWNlUmV0cmlldmUoaWQ6IHN0cmluZywgcmV0cmlldmVQYXJhbTogYW55LCByZXF1ZXN0SW5mbzogUmVxdWVzdEluZm8pOiBPYnNlcnZhYmxlPGFueT4ge1xyXG4gICAgcmV0dXJuIHRoaXMucHJveHkuc2VydmljZVJldHJpZXZlKGlkLCByZXRyaWV2ZVBhcmFtLCByZXF1ZXN0SW5mbyk7XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIOWIhumhteafpeivouS7juihqC/ku47ku47ooajmlbDmja5cclxuICAgKiBAcGFyYW0gcGFyYW1zIOafpeivouWPguaVsFxyXG4gICAqL1xyXG4gIHB1YmxpYyBxdWVyeUNoaWxkKHBhcmFtczogYW55KSB7XHJcbiAgICByZXR1cm4gdGhpcy5wcm94eS5xdWVyeUNoaWxkKHBhcmFtcyk7XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIOW3suW6n+W8g++8jOivt+S9v+eUqHJlcG9zaXRvcnkucHJveHnlr7nlupTmlrnms5Xku6Pmm79cclxuICAgKiBAZGVwcmVjYXRlZFxyXG4gICAqL1xyXG4gIHB1YmxpYyByZXRyaWV2ZShpZDogc3RyaW5nKTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuICAgIHJldHVybiB0aGlzLnByb3h5LnJldHJpZXZlKGlkKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIOW3suW6n+W8g++8jOivt+S9v+eUqHJlcG9zaXRvcnkucHJveHnlr7nlupTmlrnms5Xku6Pmm79cclxuICAgKiBAZGVwcmVjYXRlZFxyXG4gICAqL1xyXG4gIHB1YmxpYyBleHRlbmRSZXRyaWV2ZShpZDogc3RyaW5nLCByZXF1ZXN0SW5mbzogUmVxdWVzdEluZm8pOiBPYnNlcnZhYmxlPFJlc3BvbnNlSW5mbz4ge1xyXG4gICAgcmV0dXJuIHRoaXMucHJveHkuZXh0ZW5kUmV0cmlldmUoaWQsIHJlcXVlc3RJbmZvKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIOW3suW6n+W8g++8jOivt+S9v+eUqHJlcG9zaXRvcnkucHJveHnlr7nlupTmlrnms5Xku6Pmm79cclxuICAgKiBAZGVwcmVjYXRlZFxyXG4gICAqL1xyXG4gIHB1YmxpYyBjcmVhdGUoZGVmYXVsdFZhbHVlPzogYW55LCByZXF1ZXN0SW5mbz86IFJlcXVlc3RJbmZvKTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuICAgIHJldHVybiB0aGlzLnByb3h5LmNyZWF0ZShkZWZhdWx0VmFsdWUsIHJlcXVlc3RJbmZvKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIOW3suW6n+W8g++8jOivt+S9v+eUqHJlcG9zaXRvcnkucHJveHnlr7nlupTmlrnms5Xku6Pmm79cclxuICAgKiBAZGVwcmVjYXRlZFxyXG4gICAqL1xyXG4gIHB1YmxpYyBjcmVhdGVCeVBhdGgoZnBhdGg6IHN0cmluZywgcmVxdWVzdEluZm8/OiBSZXF1ZXN0SW5mbyk6IE9ic2VydmFibGU8YW55PiB7XHJcbiAgICByZXR1cm4gdGhpcy5wcm94eS5jcmVhdGVCeVBhdGgoZnBhdGgsIHJlcXVlc3RJbmZvKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIOW3suW6n+W8g++8jOivt+S9v+eUqHJlcG9zaXRvcnkucHJveHnlr7nlupTmlrnms5Xku6Pmm79cclxuICAgKiBAZGVwcmVjYXRlZFxyXG4gICAqL1xyXG4gIHVwZGF0ZShjaGFuZ2VEZXRhaWw6IENoYW5nZURldGFpbCwgcmVxdWVzdEluZm8/OiBSZXF1ZXN0SW5mbyk6IE9ic2VydmFibGU8YW55PiB7XHJcbiAgICByZXR1cm4gdGhpcy5wcm94eS51cGRhdGUoY2hhbmdlRGV0YWlsLCByZXF1ZXN0SW5mbyk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiDlt7Llup/lvIPvvIzor7fkvb/nlKhyZXBvc2l0b3J5LnByb3h55a+55bqU5pa55rOV5Luj5pu/XHJcbiAgICogQGRlcHJlY2F0ZWRcclxuICAgKi9cclxuICBwdWJsaWMgc2F2ZShyZXF1ZXN0SW5mbz86IFJlcXVlc3RJbmZvKTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuICAgIHJldHVybiB0aGlzLnByb3h5LnNhdmUocmVxdWVzdEluZm8pO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICog5bey5bqf5byD77yM6K+35L2/55SocmVwb3NpdG9yeS5wcm94eeWvueW6lOaWueazleS7o+abv1xyXG4gICAqIEBkZXByZWNhdGVkXHJcbiAgICovXHJcbiAgcHVibGljIGRlbGV0ZShpZDogc3RyaW5nKTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuICAgIHJldHVybiB0aGlzLnByb3h5LmRlbGV0ZShpZCk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiDlt7Llup/lvIPvvIzor7fkvb/nlKhyZXBvc2l0b3J5LnByb3h55a+55bqU5pa55rOV5Luj5pu/XHJcbiAgICogQGRlcHJlY2F0ZWRcclxuICAgKi9cclxuICBwdWJsaWMgZXh0ZW5kRGVsZXRlKGlkOiBzdHJpbmcsIHJlcXVlc3RJbmZvOiBSZXF1ZXN0SW5mbyk6IE9ic2VydmFibGU8UmVzcG9uc2VJbmZvPiB7XHJcbiAgICByZXR1cm4gdGhpcy5wcm94eS5leHRlbmREZWxldGUoaWQsIHJlcXVlc3RJbmZvKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIOW3suW6n+W8g++8jOivt+S9v+eUqHJlcG9zaXRvcnkucHJveHnlr7nlupTmlrnms5Xku6Pmm79cclxuICAgKiBAZGVwcmVjYXRlZFxyXG4gICAqL1xyXG4gIHB1YmxpYyBkZWxldEJ5UGF0aChmcGF0aDogc3RyaW5nLCBpZDogc3RyaW5nKTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuICAgIHJldHVybiB0aGlzLnByb3h5LmRlbGV0QnlQYXRoKGZwYXRoLCBpZCk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiDlt7Llup/lvIPvvIzor7fkvb/nlKhyZXBvc2l0b3J5LnByb3h55a+55bqU5pa55rOV5Luj5pu/XHJcbiAgICogQGRlcHJlY2F0ZWRcclxuICAgKi9cclxuICBwdWJsaWMgZXh0ZW5kRGVsZXRCeVBhdGgoZnBhdGg6IHN0cmluZywgaWQ6IHN0cmluZywgcmVxdWVzdEluZm86IFJlcXVlc3RJbmZvKTogT2JzZXJ2YWJsZTxSZXNwb25zZUluZm8+IHtcclxuICAgIHJldHVybiB0aGlzLnByb3h5LmV4dGVuZERlbGV0QnlQYXRoKGZwYXRoLCBpZCwgcmVxdWVzdEluZm8pO1xyXG4gIH1cclxuICBwdWJsaWMgYmF0Y2hEZWxldGVCeVBhdGgoZlBhdGg6IHN0cmluZywgaWRzOiBzdHJpbmcsIHJlcXVlc3RJbmZvOiBSZXF1ZXN0SW5mbyk6IE9ic2VydmFibGU8UmVzcG9uc2VJbmZvPiB7XHJcbiAgICByZXR1cm4gdGhpcy5wcm94eS5iYXRjaERlbGV0ZUJ5UGF0aChmUGF0aCwgaWRzLCByZXF1ZXN0SW5mbyk7XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIOW3suW6n+W8g++8jOivt+S9v+eUqHJlcG9zaXRvcnkucHJveHnlr7nlupTmlrnms5Xku6Pmm79cclxuICAgKiBAZGVwcmVjYXRlZFxyXG4gICAqL1xyXG4gIHB1YmxpYyBiYXRjaERlbGV0ZShpZHM6IHN0cmluZ1tdKTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuICAgIHJldHVybiB0aGlzLnByb3h5LmJhdGNoRGVsZXRlKGlkcyk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiDlt7Llup/lvIPvvIzor7fkvb/nlKhyZXBvc2l0b3J5LnByb3h55a+55bqU5pa55rOV5Luj5pu/XHJcbiAgICogQGRlcHJlY2F0ZWRcclxuICAgKi9cclxuICBwdWJsaWMgZXh0ZW5kQmF0Y2hEZWxldGUoaWRzOiBzdHJpbmdbXSwgcmVxdWVzdEluZm86IFJlcXVlc3RJbmZvKTogT2JzZXJ2YWJsZTxSZXNwb25zZUluZm8+IHtcclxuICAgIHJldHVybiB0aGlzLnByb3h5LmV4dGVuZEJhdGNoRGVsZXRlKGlkcywgcmVxdWVzdEluZm8pO1xyXG4gIH1cclxuXHJcblxyXG4gIC8qKlxyXG4gICAqIOW3suW6n+W8g++8jOivt+S9v+eUqHJlcG9zaXRvcnkucHJveHnlr7nlupTmlrnms5Xku6Pmm79cclxuICAgKiBAZGVwcmVjYXRlZFxyXG4gICAqL1xyXG4gIHB1YmxpYyBjYW5jZWwob3B0aW9ucz86IGFueSk6IE9ic2VydmFibGU8YW55PiB7XHJcbiAgICByZXR1cm4gdGhpcy5wcm94eS5jYW5jZWwob3B0aW9ucyk7XHJcbiAgfVxyXG5cclxuICAvLyAjZW5kcmVnaW9uXHJcblxyXG5cclxuICAvLyAjcmVnaW9uIHJlcXVlc3Tmlrnms5VcclxuXHJcbiAgLyoqXHJcbiAgICog5bey5bqf5byD77yM6K+35L2/55SocmVwb3NpdG9yeS5wcm94eeWvueW6lOaWueazleS7o+abv1xyXG4gICAqIEBkZXByZWNhdGVkXHJcbiAgICovXHJcbiAgcHVibGljIHJlcXVlc3QoXHJcbiAgICB1cmw6IHN0cmluZywgbWV0aG9kOiBzdHJpbmcsIHBhcmFtcz86IGFueSwgb3B0aW9ucz86IGFueSxcclxuICAgIHNlbGZIYW5kRXJyb3I/OiBib29sZWFuLCBpZ25vcmVFcnJvcj86IGJvb2xlYW4sIGlnbm9yZUNoYW5nZXM/OiBib29sZWFuXHJcbiAgKTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuICAgIHJldHVybiB0aGlzLmlubmVyUmVxdWVzdCh1cmwsIG1ldGhvZCwgcGFyYW1zLCBvcHRpb25zLCBzZWxmSGFuZEVycm9yLCBpZ25vcmVFcnJvciwgaWdub3JlQ2hhbmdlcywgZmFsc2UpO1xyXG4gIH1cclxuICAvLyB0c2xpbnQ6ZGlzYWJsZTogYWxpZ25cclxuXHJcbiAgLyoqXHJcbiAgICog6LCD55So5ZCO56uv5pa55rOVXHJcbiAgICogQHBhcmFtIHVybCB1cmxcclxuICAgKiBAcGFyYW0gbWV0aG9kIG1ldGhvZFxyXG4gICAqIEBwYXJhbSBwYXJhbXMgcGFyYW1zXHJcbiAgICogQHBhcmFtIG9wdGlvbnMgb3B0aW9uc1xyXG4gICAqIEBwYXJhbSBzZWxmSGFuZEVycm9yIOiHquW3seWkhOeQhuW8guW4uFxyXG4gICAqIEBwYXJhbSBpZ25vcmVFcnJvciDlv73nlaXplJnor69cclxuICAgKiBAcGFyYW0gaWdub3JlQ2hhbmdlcyDlv73nlaXlj5jmm7RcclxuICAgKi9cclxuICBwdWJsaWMgaW52b2tlKHVybDogc3RyaW5nLCBtZXRob2Q6IHN0cmluZywgcGFyYW1zPzogYW55LCBvcHRpb25zPzogYW55LFxyXG4gICAgc2VsZkhhbmRFcnJvcj86IGJvb2xlYW4sIGlnbm9yZUVycm9yPzogYm9vbGVhbiwgaWdub3JlQ2hhbmdlcz86IGJvb2xlYW4pIHtcclxuICAgIGlmIChvcHRpb25zICYmIG9wdGlvbnMuYm9keSAmJiBvcHRpb25zLmJvZHkuUmVxdWVzdEluZm8pIHtcclxuICAgICAgdGhyb3cgbmV3IEVycm9yKCfor7fkvb/nlKhyZXF1ZXN0SW5mb+aPkOS6pOWPmOabtCcpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHRoaXMuaW5uZXJSZXF1ZXN0KHVybCwgbWV0aG9kLCBwYXJhbXMsIG9wdGlvbnMsIHNlbGZIYW5kRXJyb3IsIGlnbm9yZUVycm9yLCBpZ25vcmVDaGFuZ2VzLCB0cnVlKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIOWGhemDqOeahHJlcXVlc3Tmlrnms5VcclxuICAgKi9cclxuICBwcml2YXRlIGlubmVyUmVxdWVzdChcclxuICAgIHVybDogc3RyaW5nLCBtZXRob2Q6IHN0cmluZywgcGFyYW1zPzogYW55LCBvcHRpb25zPzogYW55LFxyXG4gICAgc2VsZkhhbmRFcnJvcj86IGJvb2xlYW4sIGlnbm9yZUVycm9yPzogYm9vbGVhbiwgaWdub3JlQ2hhbmdlcz86IGJvb2xlYW4sXHJcbiAgICB1c2VDb3JyZWN0UmVxdWVzdEluZm9DaGVja01ldGhvZD86IGJvb2xlYW5cclxuICApIHtcclxuICAgIG9wdGlvbnMgPSBvcHRpb25zIHx8IHt9O1xyXG4gICAgY29uc3QgYmVmU2Vzc2lvbklkS2V5ID0gJ0JFRlNlc3Npb25JRCc7XHJcblxyXG4gICAgLy8g5piv5ZCm6Ieq5bex5aSE55CG5byC5bi4XHJcbiAgICBpZiAodHlwZW9mIChzZWxmSGFuZEVycm9yKSA9PT0gJ3VuZGVmaW5lZCcgfHwgdHlwZW9mIChzZWxmSGFuZEVycm9yKSAhPT0gJ2Jvb2xlYW4nKSB7XHJcbiAgICAgIHNlbGZIYW5kRXJyb3IgPSBmYWxzZTtcclxuICAgIH1cclxuXHJcbiAgICAvLyDmmK/lkKblv73nlaXlvILluLjnu6fnu63miafooYxcclxuICAgIGlmICh0eXBlb2YgKGlnbm9yZUVycm9yKSA9PT0gJ3VuZGVmaW5lZCcgfHwgdHlwZW9mIChpZ25vcmVFcnJvcikgIT09ICdib29sZWFuJykge1xyXG4gICAgICBpZ25vcmVFcnJvciA9IGZhbHNlO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIOmAieaLqeajgOafpVJlcXVlc3RJbmZv55qE5pa55rOVXHJcbiAgICBpZiAodHlwZW9mICh1c2VDb3JyZWN0UmVxdWVzdEluZm9DaGVja01ldGhvZCkgPT09ICd1bmRlZmluZWQnIHx8IHR5cGVvZiAodXNlQ29ycmVjdFJlcXVlc3RJbmZvQ2hlY2tNZXRob2QpICE9PSAnYm9vbGVhbicpIHtcclxuICAgICAgdXNlQ29ycmVjdFJlcXVlc3RJbmZvQ2hlY2tNZXRob2QgPSBmYWxzZTtcclxuICAgIH1cclxuICAgIGNvbnN0IGNoZWNrUmVxdWVzdEluZm9NZXRob2QgPSB1c2VDb3JyZWN0UmVxdWVzdEluZm9DaGVja01ldGhvZCA/IHRoaXMuZXhpc3RSZXF1ZXN0SW5mbyA6IHRoaXMuaGFzUmVxdWVzdEluZm87XHJcblxyXG4gICAgLy8gcGFyYW1zXHJcbiAgICBpZiAocGFyYW1zKSB7XHJcbiAgICAgIC8vIGNvbnN0IGh0dHBQYXJhbXMgPSB0aGlzLmJ1aWxkUGFyYW1zKHBhcmFtcyk7XHJcbiAgICAgIG9wdGlvbnMucGFyYW1zID0gcGFyYW1zO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIOW4puaciXJlcXVlc3RJbmZv55qE6K+35rGC77yM6K+35rGC5oiQ5Yqf5ZCO5riF56m65Y+Y5pu06ZuGXHJcbiAgICBjb25zdCBoYXNSZXF1ZXN0SW5mbyA9IGNoZWNrUmVxdWVzdEluZm9NZXRob2Qob3B0aW9ucyk7XHJcbiAgICBsZXQgaGVhZGVycyA9IEh0dHBIZWFkZXJVdGlsLmNvbnZlcnRUb0hlYWRlcnMob3B0aW9ucy5oZWFkZXJzKTtcclxuXHJcbiAgICAvLyDkuLLogZRzZXNzaW9u5rWB5ZKMaHR0cOa1gVxyXG4gICAgcmV0dXJuIHRoaXMuc2Vzc2lvblNlcnZpY2UuZ2V0QmVTZXNzaW9uSWQoKS5waXBlKFxyXG4gICAgICBzd2l0Y2hNYXAoKHNlc3Npb25JZDogc3RyaW5nKSA9PiB7XHJcbiAgICAgICAgaGVhZGVycyA9IHRoaXMuc2Vzc2lvblNlcnZpY2UuZXh0ZW5kUmVxdWVzdEhlYWRlcnMoaGVhZGVycyk7XHJcbiAgICAgICAgb3B0aW9ucy5oZWFkZXJzID0gSHR0cEhlYWRlclV0aWwudG9Kc29uKGhlYWRlcnMpO1xyXG4gICAgICAgIG9wdGlvbnMub2JzZXJ2ZSA9ICdyZXNwb25zZSc7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cFNlcnZpY2UucmVxdWVzdChtZXRob2QsIHVybCwgb3B0aW9ucyk7XHJcbiAgICAgIH0pLFxyXG4gICAgICB0YXAoKHJlc3BvbnNlOiBhbnkpID0+IHtcclxuICAgICAgICBpZiAocmVzcG9uc2UuaGVhZGVycyAmJiByZXNwb25zZS5oZWFkZXJzLmhhcyhiZWZTZXNzaW9uSWRLZXkpKSB7XHJcbiAgICAgICAgICB0aGlzLnNlc3Npb25TZXJ2aWNlLnNldEJlU2Vzc2lvbklkKHJlc3BvbnNlLmhlYWRlcnMuZ2V0KGJlZlNlc3Npb25JZEtleSkpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSksXHJcbiAgICAgIG1hcCgocmVzcG9uc2U6IGFueSkgPT4gcmVzcG9uc2UuYm9keSksXHJcbiAgICAgIG1hcCgocmVzdWx0OiBhbnkpID0+IHtcclxuICAgICAgICBjb25zdCBtZXNzYWdlcyA9IFJlc3BvbnNlSW5mb1V0aWwucGFyc2VCYWNrRW5kTWVzc2FnZShyZXN1bHQpO1xyXG4gICAgICAgIEJhY2tFbmRNZXNzYWdlVXRpbC5oYW5kbGVNZXNzYWdlKG1lc3NhZ2VzLCB0aGlzLnJlcG9zaXRvcnkuZ2V0SW5qZWN0b3IoKSk7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuaGFuZGxlUmVwb25zZUluZm8ocmVzdWx0LCBoYXNSZXF1ZXN0SW5mbywgaWdub3JlQ2hhbmdlcyk7XHJcbiAgICAgIH0pLFxyXG4gICAgICBjYXRjaEVycm9yKChlcnJvcjogYW55KSA9PiB7XHJcbiAgICAgICAgY29uc3QgbWVzc2FnZXMgPSBSZXNwb25zZUluZm9VdGlsLnBhcnNlQmFja0VuZEVycm9yKGVycm9yKTtcclxuICAgICAgICBCYWNrRW5kTWVzc2FnZVV0aWwuaGFuZGxlTWVzc2FnZShtZXNzYWdlcywgdGhpcy5yZXBvc2l0b3J5LmdldEluamVjdG9yKCkpO1xyXG4gICAgICAgIHJldHVybiB0aGlzLmhhbmRsZUVycm9ycyhlcnJvciwgc2VsZkhhbmRFcnJvciwgaWdub3JlRXJyb3IpO1xyXG4gICAgICB9KVxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIOWkhOeQhui/lOWbnue7k+aenFxyXG4gICAqL1xyXG4gIHB1YmxpYyBoYW5kbGVSZXBvbnNlSW5mbyhyZXN1bHQ6IGFueSwgaGFzUmVxdWVzdEluZm86IGJvb2xlYW4sIGlnbm9yZUNoYW5nZXM6IGJvb2xlYW4pOiBhbnkge1xyXG4gICAgaWYgKGhhc1JlcXVlc3RJbmZvKSB7XHJcbiAgICAgIC8vIOWmguaenOacieW4puaciVJlcXVlc3RJbmZv77yM5YiZ5oyJ5paw57uT5p6E5aSE55CGXHJcbiAgICAgIC8vIDHjgIHlupTnlKjmnI3liqHlmajnq6/ov5Tlm57nmoTlj5jmm7TvvJtcclxuICAgICAgLy8gMuOAgea4heepuuacrOWcsOWPmOabtOmbhu+8m1xyXG4gICAgICAvLyAz44CB6L+U5Zue5paw57uT5p6EXHJcbiAgICAgIGlmIChyZXN1bHQgJiYgcmVzdWx0LmlubmVyRGF0YUNoYW5nZSAmJiBpZ25vcmVDaGFuZ2VzICE9PSB0cnVlKSB7XHJcbiAgICAgICAgdGhpcy5yZXBvc2l0b3J5LmhhbmRsZURhdGFDaGFuZ2VEZXRhaWxzKHJlc3VsdC5pbm5lckRhdGFDaGFuZ2UpO1xyXG4gICAgICB9XHJcbiAgICAgIHRoaXMucmVwb3NpdG9yeS5jbGVhckFsbEVudGl0eUNoYW5nZXMoKTtcclxuICAgICAgcmV0dXJuIHJlc3VsdDtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIC8vIOWmguaenOacieayoeaciVJlcXVlc3RJbmZv77yM5YiZ5oyJ6ICB55qE5pa55byP5aSE55CGXHJcbiAgICAgIC8vIDHjgIHkuI3lpITnkIbmnI3liqHlmajnq6/ov5Tlm57nmoTlj5jmm7TvvJrot5/ogIHnmoTooYzkuLrkuIDmoLfvvJtcclxuICAgICAgLy8gMuOAgeS4jea4heeQhuacrOWcsOWPmOabtO+8muWboOS4uuWPmOabtOayoeacieaPkOS6pO+8m1xyXG4gICAgICAvLyAz44CB6L+U5Zue6ICB55qE57uT5p6E77ya5YW85a656ICB55qE5Luj56CBXHJcbiAgICAgIHJldHVybiB0aGlzLnVuV3JhcFJlc3BvbnNlSW5mbyhyZXN1bHQpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICog6ZSZ6K+v5aSE55CGXHJcbiAgICovXHJcbiAgcHVibGljIGhhbmRsZUVycm9ycyhlcnJvcjogYW55LCBzZWxmSGFuZEVycm9yOiBib29sZWFuLCBpZ25vcmVFcnJvcjogYm9vbGVhbik6IE9ic2VydmFibGU8YW55PiB7XHJcbiAgICB0aGlzLmNsZWFyTG9hZGluZygpO1xyXG5cclxuICAgIGlmICghIXNlbGZIYW5kRXJyb3IpIHtcclxuICAgICAgcmV0dXJuIHRocm93RXJyb3IoZXJyb3IpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgY29uc3QgZm9ybUFwcENvbnRleHQgPSB0aGlzLnJlcG9zaXRvcnkuYXBwQ29udGV4dC5nZXRGb3JtQXBwQ29udGV4dCgpO1xyXG4gICAgICBjb25zdCBhcHBsaWNhdGlvbklkID0gZm9ybUFwcENvbnRleHQuQXBwbGljYXRpb25JZDtcclxuICAgICAgY29uc3QgYXBwbGljYXRpb25Db250ZXh0OiBhbnkgPSB3aW5kb3dbYXBwbGljYXRpb25JZF0gfHwge307XHJcbiAgICAgIGNvbnN0IGlzRXhjZXB0aW9uSGFuZGxlckV4aXN0ID0gISFhcHBsaWNhdGlvbkNvbnRleHQuaXNFeGNlcHRpb25IYW5kbGVyRXhpc3Q7XHJcbiAgICAgIGlmICghIXRoaXMuZXZlbnRCdXMgJiYgaXNFeGNlcHRpb25IYW5kbGVyRXhpc3QpIHtcclxuICAgICAgICBpZiAoUmVzcG9uc2VJbmZvVXRpbC5pc1JlcG9ydGVkNDAxRXJyb3IoZXJyb3IpKSB7XHJcbiAgICAgICAgICByZXR1cm4gdGhyb3dFcnJvcihlcnJvcik7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNvbnN0IG1lc3NhZ2VzID0gUmVzcG9uc2VJbmZvVXRpbC5wYXJzZUJhY2tFbmRFcnJvcihlcnJvcik7XHJcbiAgICAgICAgY29uc3QgYml6TWVzc2FnZXMgPSBCYWNrRW5kTWVzc2FnZVV0aWwuZ2V0Rm9ybWxlc3NNZXNzYWdlcyhtZXNzYWdlcyk7XHJcbiAgICAgICAgY29uc3QgaXNFeGlzdEZvcm1sZXNzTWVzc2FnZSA9IGJpek1lc3NhZ2VzICYmIGJpek1lc3NhZ2VzLmxlbmd0aCA+IDAgfHwgZmFsc2U7XHJcbiAgICAgICAgaWYgKCEoZXJyb3IgJiYgZXJyb3IuZXJyb3IgJiYgZXJyb3IuZXJyb3IuZXh0ZW5zaW9uTWVzc2FnZSAmJiBCYWNrRW5kTWVzc2FnZVV0aWwuaXNCYWNrRW5kTWVzc2FnZUhhbmRsZXJFeGlzdCh0aGlzLnJlcG9zaXRvcnkuZ2V0SW5qZWN0b3IoKSkgJiYgIWlzRXhpc3RGb3JtbGVzc01lc3NhZ2UpKSB7XHJcbiAgICAgICAgICB0aGlzLmV2ZW50QnVzLnBvc3QoJ0V4Y2VwdGlvbicsICcnLCAnb25FeGNlcHRpb24nLCBlcnJvciwgZm9ybUFwcENvbnRleHQpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoaWdub3JlRXJyb3IpIHtcclxuICAgICAgICAgIHJldHVybiBvZihudWxsKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgcmV0dXJuIEVNUFRZO1xyXG4gICAgICAgIH1cclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICByZXR1cm4gdGhyb3dFcnJvcihlcnJvcik7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcbiAgLy8gI2VuZHJlZ2lvblxyXG5cclxuXHJcbiAgLy8gI3JlZ2lvbiDlt6Xlhbfmlrnms5VcclxuXHJcbiAgLyoqXHJcbiAgICog5riF56m6TG9hZGluZ1xyXG4gICAqL1xyXG4gIHByaXZhdGUgY2xlYXJMb2FkaW5nKCk6IHZvaWQge1xyXG4gICAgY29uc3QgaWZMb2FkaW5nRXhpc3RzID0gd2luZG93WydERVZLSVRfTE9BRElOR19TRVJWSUNFJ10gJiZcclxuICAgICAgd2luZG93WydERVZLSVRfTE9BRElOR19TRVJWSUNFJ10gaW5zdGFuY2VvZiBBcnJheSAmJlxyXG4gICAgICB3aW5kb3dbJ0RFVktJVF9MT0FESU5HX1NFUlZJQ0UnXS5sZW5ndGggPiAwIHx8IGZhbHNlO1xyXG5cclxuICAgIGlmIChpZkxvYWRpbmdFeGlzdHMgPT09IGZhbHNlKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICBjb25zdCBsb2FkaW5nU2VydmljZXM6IGFueVtdID0gd2luZG93WydERVZLSVRfTE9BRElOR19TRVJWSUNFJ107XHJcbiAgICBmb3IgKGNvbnN0IHNlcnZpY2Ugb2YgbG9hZGluZ1NlcnZpY2VzKSB7XHJcbiAgICAgIGlmICh0eXBlb2YgKHNlcnZpY2UuY2xlYXJBbGwpID09PSAnZnVuY3Rpb24nKSB7XHJcbiAgICAgICAgc2VydmljZS5jbGVhckFsbCgpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiDlpITnkIbov5Tlm57lgLzvvIzlhbzlrrnogIHniYjmnKxcclxuICAgKi9cclxuICBwcml2YXRlIHVuV3JhcFJlc3BvbnNlSW5mbyhyZXN1bHQ6IGFueSk6IGFueSB7XHJcbiAgICByZXR1cm4gUmVzcG9uc2VJbmZvVXRpbC51bldyYXBSZXNwb25zZUluZm8ocmVzdWx0KTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIOaYr+WQpuW4puaciVJlcXVlc3RJbmZvXHJcbiAgICovXHJcbiAgcHJpdmF0ZSBoYXNSZXF1ZXN0SW5mbyhvcHRpb25zOiBhbnkpOiBib29sZWFuIHtcclxuICAgIHJldHVybiBSZXF1ZXN0SW5mb1V0aWwuaGFzUmVxdWVzdEluZm9XaXRoUihvcHRpb25zKTtcclxuICB9XHJcbiAgLyoqXHJcbiAgICog5piv5ZCm5bim5pyJcmVxdWVzdEluZm9cclxuICAgKi9cclxuICBwcml2YXRlIGV4aXN0UmVxdWVzdEluZm8ob3B0aW9uczogYW55KSB7XHJcbiAgICByZXR1cm4gUmVxdWVzdEluZm9VdGlsLmhhc1JlcXVlc3RJbmZvKG9wdGlvbnMpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICog5p6E6YCgSHR0cFBhcmFtc+WvueixoVxyXG4gICAqIEBwYXJhbSBwYXJhbXMg6K+35rGC5Y+C5pWwXHJcbiAgICovXHJcbiAgcHJpdmF0ZSBidWlsZFBhcmFtcyhwYXJhbXM6IGFueSk6IEh0dHBQYXJhbXMge1xyXG4gICAgcmV0dXJuIEh0dHBQYXJhbVV0aWwuYnVpbGRQYXJhbXMocGFyYW1zKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIOaehOmAoOW4plJlcXVlc3RJbmZv55qEQm9kee+8iOmAgueUqOS6juWkmuS4quWPguaVsOeahOaDheWGte+8jOWmguaenOWPquacieS4gOS4qlJlcXVlc3RJbmZv5Y+C5pWw77yMYm9keT1SZXF1ZXN0SW5mb++8iVxyXG4gICAqIEBib2R5IOacquaQuuW4plJlcXVlc3RJbmZv55qEYm9kee+8jOagvOW8j+W9ouWmgjoge2tleTE6IHZhbHVlMSwga2V5MjogdmFsdWUyfVxyXG4gICAqL1xyXG4gIHB1YmxpYyBidWlsZEJvZHlXaXRoUmVxdWVzdEluZm8oYm9keTogYW55KTogYW55IHtcclxuICAgIHJldHVybiBSZXF1ZXN0SW5mb1V0aWwuYnVpbGRCb2R5V2l0aFJlcXVlc3RJbmZvKGJvZHksIHRoaXMucmVwb3NpdG9yeSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiDmnoTpgKBSZXF1ZXN0SW5mb1xyXG4gICAqL1xyXG4gIHB1YmxpYyBidWlsZFJlcXVlc3RJbmZvKCk6IFJlcXVlc3RJbmZvIHtcclxuICAgIHJldHVybiBSZXF1ZXN0SW5mb1V0aWwuYnVpbGRSZXF1ZXN0SW5mbyh0aGlzLnJlcG9zaXRvcnkpO1xyXG4gIH1cclxuXHJcbiAgLy8gI2VuZHJlZ2lvblxyXG5cclxufVxyXG5cclxuZXhwb3J0IHsgQmVmUmVzdFNlcnZpY2UgfTtcclxuXHJcbiJdfQ==

@@ -46,2 +46,17 @@ /**

*/
static getFormlessMessages(messages) {
/** @type {?} */
const bizMessages = this.buildBackEndMessages(messages) || [];
return bizMessages.filter((/**
* @param {?} message
* @return {?}
*/
(message) => {
return !message.location || !message.location.columns || message.location.columns.length < 1 || !message.location.nodeCode;
}));
}
/**
* @param {?} messages
* @return {?}
*/
static buildBackEndMessages(messages) {

@@ -75,2 +90,2 @@ if (!messages || messages.length < 1 || !Array.isArray(messages)) {

}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFja19lbmRfbWVzc2FnZS51dGlsLmpzIiwic291cmNlUm9vdCI6Im5nOi8vQGZhcnJpcy9iZWYvIiwic291cmNlcyI6WyJsaWIvdXRpbHMvYmFja19lbmRfbWVzc2FnZS51dGlsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQ0EsT0FBTyxFQUFFLFVBQVUsRUFBRSxjQUFjLEVBQUUsOEJBQThCLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFdkcsTUFBTSxPQUFPLGtCQUFrQjs7Ozs7O0lBQ3RCLE1BQU0sQ0FBQyxhQUFhLENBQUMsUUFBa0IsRUFBRSxRQUFrQjs7Y0FDMUQsU0FBUyxHQUFHLFFBQVEsQ0FBQyxHQUFHLENBQUMsU0FBUyxFQUFFLElBQUksQ0FBQzs7Y0FDekMsVUFBVSxHQUFHLFFBQVEsQ0FBQyxHQUFHLENBQWEsVUFBVSxFQUFFLElBQUksQ0FBQzs7Y0FDdkQsT0FBTyxHQUFtQztZQUM5QyxFQUFFLEVBQUUsU0FBUztZQUNiLFVBQVU7U0FDWDs7Y0FDSyxXQUFXLEdBQUcsSUFBSSxDQUFDLG9CQUFvQixDQUFDLFFBQVEsQ0FBQzs7Y0FDakQsY0FBYyxHQUFHLElBQUksY0FBYyxDQUFDLE9BQU8sQ0FBQyxXQUFXLEVBQUUsT0FBTyxDQUFDOztjQUNqRSxxQkFBcUIsR0FBRyxRQUFRLENBQUMsR0FBRyxDQUF3Qyw4QkFBOEIsRUFBRSxJQUFJLENBQUM7UUFDdkgsSUFBSSxxQkFBcUIsRUFBRTtZQUN6QixxQkFBcUIsQ0FBQyxNQUFNLENBQUMsY0FBYyxDQUFDLENBQUM7U0FDOUM7SUFDSCxDQUFDOzs7OztJQUNNLE1BQU0sQ0FBQyw0QkFBNEIsQ0FBQyxRQUFrQjs7Y0FDckQscUJBQXFCLEdBQUcsUUFBUSxDQUFDLEdBQUcsQ0FBd0MsOEJBQThCLEVBQUUsSUFBSSxDQUFDO1FBQ3ZILE9BQU8scUJBQXFCLElBQUksSUFBSSxJQUFJLEtBQUssQ0FBQztJQUNoRCxDQUFDOzs7OztJQUNNLE1BQU0sQ0FBQyxvQkFBb0IsQ0FBQyxRQUFrQjtRQUNuRCxJQUFJLENBQUMsUUFBUSxJQUFJLFFBQVEsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsRUFBRTtZQUNoRSxPQUFPLElBQUksQ0FBQztTQUNiOztjQUNLLFdBQVcsR0FBaUMsRUFBRTtRQUNwRCxRQUFRLENBQUMsT0FBTzs7OztRQUFDLENBQUMsT0FBWSxFQUFFLEVBQUU7O2tCQUMxQixVQUFVLEdBQStCO2dCQUM3QyxLQUFLLEVBQUUsT0FBTyxDQUFDLEtBQUs7Z0JBQ3BCLE9BQU8sRUFBRSxPQUFPLENBQUMsT0FBTzthQUN6QjtZQUNELElBQUksT0FBTyxDQUFDLGNBQWMsQ0FBQyxVQUFVLENBQUMsSUFBSSxPQUFPLENBQUMsUUFBUSxFQUFFO2dCQUMxRCxVQUFVLENBQUMsUUFBUSxHQUFHO29CQUNwQixRQUFRLEVBQUUsT0FBTyxDQUFDLFFBQVEsQ0FBQyxRQUFRO29CQUNuQyxJQUFJLEVBQUUsT0FBTyxDQUFDLFFBQVEsQ0FBQyxPQUFPO29CQUM5QixPQUFPLEVBQUUsT0FBTyxDQUFDLFFBQVEsQ0FBQyxXQUFXO2lCQUN0QyxDQUFDO2FBQ0g7WUFDRCxXQUFXLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQy9CLENBQUMsRUFBQyxDQUFDO1FBQ0gsT0FBTyxXQUFXLENBQUM7SUFDckIsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0b3IgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5pbXBvcnQgeyBBcHBDb250ZXh0LCBCYWNrRW5kTWVzc2FnZSwgQkFDS19FTkRfTUVTU0FHRV9IQU5ETEVSX1RPS0VOLCBOQU1FU1BBQ0UgfSBmcm9tIFwiQGZhcnJpcy9kZXZraXRcIjtcclxuXHJcbmV4cG9ydCBjbGFzcyBCYWNrRW5kTWVzc2FnZVV0aWwge1xyXG4gIHB1YmxpYyBzdGF0aWMgaGFuZGxlTWVzc2FnZShtZXNzYWdlczogb2JqZWN0W10sIGluamVjdG9yOiBJbmplY3Rvcikge1xyXG4gICAgY29uc3QgbmFtZXNwYWNlID0gaW5qZWN0b3IuZ2V0KE5BTUVTUEFDRSwgbnVsbCk7XHJcbiAgICBjb25zdCBhcHBDb250ZXh0ID0gaW5qZWN0b3IuZ2V0PEFwcENvbnRleHQ+KEFwcENvbnRleHQsIG51bGwpO1xyXG4gICAgY29uc3QgY29udGV4dDogQmFja0VuZE1lc3NhZ2UuSU1lc3NhZ2VDb250ZXh0ID0ge1xyXG4gICAgICBuczogbmFtZXNwYWNlLFxyXG4gICAgICBhcHBDb250ZXh0XHJcbiAgICB9O1xyXG4gICAgY29uc3QgYml6TWVzc2FnZXMgPSB0aGlzLmJ1aWxkQmFja0VuZE1lc3NhZ2VzKG1lc3NhZ2VzKTtcclxuICAgIGNvbnN0IGJhY2tFbmRNZXNzYWdlID0gbmV3IEJhY2tFbmRNZXNzYWdlLk1lc3NhZ2UoYml6TWVzc2FnZXMsIGNvbnRleHQpO1xyXG4gICAgY29uc3QgYmFja0VuZE1lc3NhZ2VIYW5kbGVyID0gaW5qZWN0b3IuZ2V0PEJhY2tFbmRNZXNzYWdlLklCYWNrRW5kTWVzc2FnZUhhbmRsZXI+KEJBQ0tfRU5EX01FU1NBR0VfSEFORExFUl9UT0tFTiwgbnVsbCk7XHJcbiAgICBpZiAoYmFja0VuZE1lc3NhZ2VIYW5kbGVyKSB7XHJcbiAgICAgIGJhY2tFbmRNZXNzYWdlSGFuZGxlci5oYW5kbGUoYmFja0VuZE1lc3NhZ2UpO1xyXG4gICAgfVxyXG4gIH1cclxuICBwdWJsaWMgc3RhdGljIGlzQmFja0VuZE1lc3NhZ2VIYW5kbGVyRXhpc3QoaW5qZWN0b3I6IEluamVjdG9yKSB7XHJcbiAgICBjb25zdCBiYWNrRW5kTWVzc2FnZUhhbmRsZXIgPSBpbmplY3Rvci5nZXQ8QmFja0VuZE1lc3NhZ2UuSUJhY2tFbmRNZXNzYWdlSGFuZGxlcj4oQkFDS19FTkRfTUVTU0FHRV9IQU5ETEVSX1RPS0VOLCBudWxsKTtcclxuICAgIHJldHVybiBiYWNrRW5kTWVzc2FnZUhhbmRsZXIgJiYgdHJ1ZSB8fCBmYWxzZTtcclxuICB9XHJcbiAgcHVibGljIHN0YXRpYyBidWlsZEJhY2tFbmRNZXNzYWdlcyhtZXNzYWdlczogb2JqZWN0W10pOiBCYWNrRW5kTWVzc2FnZS5JQml6TWVzc2FnZVtdIHtcclxuICAgIGlmICghbWVzc2FnZXMgfHwgbWVzc2FnZXMubGVuZ3RoIDwgMSB8fCAhQXJyYXkuaXNBcnJheShtZXNzYWdlcykpIHtcclxuICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICB9XHJcbiAgICBjb25zdCBiaXpNZXNzYWdlczogQmFja0VuZE1lc3NhZ2UuSUJpek1lc3NhZ2VbXSA9IFtdO1xyXG4gICAgbWVzc2FnZXMuZm9yRWFjaCgobWVzc2FnZTogYW55KSA9PiB7XHJcbiAgICAgIGNvbnN0IGJpek1lc3NhZ2U6IEJhY2tFbmRNZXNzYWdlLklCaXpNZXNzYWdlID0ge1xyXG4gICAgICAgIGxldmVsOiBtZXNzYWdlLmxldmVsLFxyXG4gICAgICAgIG1lc3NhZ2U6IG1lc3NhZ2UubWVzc2FnZVxyXG4gICAgICB9O1xyXG4gICAgICBpZiAobWVzc2FnZS5oYXNPd25Qcm9wZXJ0eSgnbG9jYXRpb24nKSAmJiBtZXNzYWdlLmxvY2F0aW9uKSB7XHJcbiAgICAgICAgYml6TWVzc2FnZS5sb2NhdGlvbiA9IHtcclxuICAgICAgICAgIG5vZGVDb2RlOiBtZXNzYWdlLmxvY2F0aW9uLm5vZGVDb2RlLFxyXG4gICAgICAgICAgcm93czogbWVzc2FnZS5sb2NhdGlvbi5kYXRhSWRzLFxyXG4gICAgICAgICAgY29sdW1uczogbWVzc2FnZS5sb2NhdGlvbi5jb2x1bW5OYW1lc1xyXG4gICAgICAgIH07XHJcbiAgICAgIH1cclxuICAgICAgYml6TWVzc2FnZXMucHVzaChiaXpNZXNzYWdlKTtcclxuICAgIH0pO1xyXG4gICAgcmV0dXJuIGJpek1lc3NhZ2VzO1xyXG4gIH1cclxufSJdfQ==
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFja19lbmRfbWVzc2FnZS51dGlsLmpzIiwic291cmNlUm9vdCI6Im5nOi8vQGZhcnJpcy9iZWYvIiwic291cmNlcyI6WyJsaWIvdXRpbHMvYmFja19lbmRfbWVzc2FnZS51dGlsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQ0EsT0FBTyxFQUFFLFVBQVUsRUFBRSxjQUFjLEVBQUUsOEJBQThCLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFdkcsTUFBTSxPQUFPLGtCQUFrQjs7Ozs7O0lBQ3RCLE1BQU0sQ0FBQyxhQUFhLENBQUMsUUFBa0IsRUFBRSxRQUFrQjs7Y0FDMUQsU0FBUyxHQUFHLFFBQVEsQ0FBQyxHQUFHLENBQUMsU0FBUyxFQUFFLElBQUksQ0FBQzs7Y0FDekMsVUFBVSxHQUFHLFFBQVEsQ0FBQyxHQUFHLENBQWEsVUFBVSxFQUFFLElBQUksQ0FBQzs7Y0FDdkQsT0FBTyxHQUFtQztZQUM5QyxFQUFFLEVBQUUsU0FBUztZQUNiLFVBQVU7U0FDWDs7Y0FDSyxXQUFXLEdBQUcsSUFBSSxDQUFDLG9CQUFvQixDQUFDLFFBQVEsQ0FBQzs7Y0FDakQsY0FBYyxHQUFHLElBQUksY0FBYyxDQUFDLE9BQU8sQ0FBQyxXQUFXLEVBQUUsT0FBTyxDQUFDOztjQUNqRSxxQkFBcUIsR0FBRyxRQUFRLENBQUMsR0FBRyxDQUF3Qyw4QkFBOEIsRUFBRSxJQUFJLENBQUM7UUFDdkgsSUFBSSxxQkFBcUIsRUFBRTtZQUN6QixxQkFBcUIsQ0FBQyxNQUFNLENBQUMsY0FBYyxDQUFDLENBQUM7U0FDOUM7SUFDSCxDQUFDOzs7OztJQUNNLE1BQU0sQ0FBQyw0QkFBNEIsQ0FBQyxRQUFrQjs7Y0FDckQscUJBQXFCLEdBQUcsUUFBUSxDQUFDLEdBQUcsQ0FBd0MsOEJBQThCLEVBQUUsSUFBSSxDQUFDO1FBQ3ZILE9BQU8scUJBQXFCLElBQUksSUFBSSxJQUFJLEtBQUssQ0FBQztJQUNoRCxDQUFDOzs7OztJQUNNLE1BQU0sQ0FBQyxtQkFBbUIsQ0FBQyxRQUFzQzs7Y0FDaEUsV0FBVyxHQUFHLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFO1FBQzdELE9BQU8sV0FBVyxDQUFDLE1BQU07Ozs7UUFBQyxDQUFDLE9BQW1DLEVBQUUsRUFBRTtZQUNoRSxPQUFPLENBQUMsT0FBTyxDQUFDLFFBQVEsSUFBSSxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsT0FBTyxJQUFJLE9BQU8sQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLE1BQU0sR0FBRyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQztRQUM3SCxDQUFDLEVBQUMsQ0FBQztJQUNMLENBQUM7Ozs7O0lBQ00sTUFBTSxDQUFDLG9CQUFvQixDQUFDLFFBQWtCO1FBQ25ELElBQUksQ0FBQyxRQUFRLElBQUksUUFBUSxDQUFDLE1BQU0sR0FBRyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxFQUFFO1lBQ2hFLE9BQU8sSUFBSSxDQUFDO1NBQ2I7O2NBQ0ssV0FBVyxHQUFpQyxFQUFFO1FBQ3BELFFBQVEsQ0FBQyxPQUFPOzs7O1FBQUMsQ0FBQyxPQUFZLEVBQUUsRUFBRTs7a0JBQzFCLFVBQVUsR0FBK0I7Z0JBQzdDLEtBQUssRUFBRSxPQUFPLENBQUMsS0FBSztnQkFDcEIsT0FBTyxFQUFFLE9BQU8sQ0FBQyxPQUFPO2FBQ3pCO1lBQ0QsSUFBSSxPQUFPLENBQUMsY0FBYyxDQUFDLFVBQVUsQ0FBQyxJQUFJLE9BQU8sQ0FBQyxRQUFRLEVBQUU7Z0JBQzFELFVBQVUsQ0FBQyxRQUFRLEdBQUc7b0JBQ3BCLFFBQVEsRUFBRSxPQUFPLENBQUMsUUFBUSxDQUFDLFFBQVE7b0JBQ25DLElBQUksRUFBRSxPQUFPLENBQUMsUUFBUSxDQUFDLE9BQU87b0JBQzlCLE9BQU8sRUFBRSxPQUFPLENBQUMsUUFBUSxDQUFDLFdBQVc7aUJBQ3RDLENBQUM7YUFDSDtZQUNELFdBQVcsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDL0IsQ0FBQyxFQUFDLENBQUM7UUFDSCxPQUFPLFdBQVcsQ0FBQztJQUNyQixDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RvciB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcbmltcG9ydCB7IEFwcENvbnRleHQsIEJhY2tFbmRNZXNzYWdlLCBCQUNLX0VORF9NRVNTQUdFX0hBTkRMRVJfVE9LRU4sIE5BTUVTUEFDRSB9IGZyb20gXCJAZmFycmlzL2RldmtpdFwiO1xyXG5cclxuZXhwb3J0IGNsYXNzIEJhY2tFbmRNZXNzYWdlVXRpbCB7XHJcbiAgcHVibGljIHN0YXRpYyBoYW5kbGVNZXNzYWdlKG1lc3NhZ2VzOiBvYmplY3RbXSwgaW5qZWN0b3I6IEluamVjdG9yKSB7XHJcbiAgICBjb25zdCBuYW1lc3BhY2UgPSBpbmplY3Rvci5nZXQoTkFNRVNQQUNFLCBudWxsKTtcclxuICAgIGNvbnN0IGFwcENvbnRleHQgPSBpbmplY3Rvci5nZXQ8QXBwQ29udGV4dD4oQXBwQ29udGV4dCwgbnVsbCk7XHJcbiAgICBjb25zdCBjb250ZXh0OiBCYWNrRW5kTWVzc2FnZS5JTWVzc2FnZUNvbnRleHQgPSB7XHJcbiAgICAgIG5zOiBuYW1lc3BhY2UsXHJcbiAgICAgIGFwcENvbnRleHRcclxuICAgIH07XHJcbiAgICBjb25zdCBiaXpNZXNzYWdlcyA9IHRoaXMuYnVpbGRCYWNrRW5kTWVzc2FnZXMobWVzc2FnZXMpO1xyXG4gICAgY29uc3QgYmFja0VuZE1lc3NhZ2UgPSBuZXcgQmFja0VuZE1lc3NhZ2UuTWVzc2FnZShiaXpNZXNzYWdlcywgY29udGV4dCk7XHJcbiAgICBjb25zdCBiYWNrRW5kTWVzc2FnZUhhbmRsZXIgPSBpbmplY3Rvci5nZXQ8QmFja0VuZE1lc3NhZ2UuSUJhY2tFbmRNZXNzYWdlSGFuZGxlcj4oQkFDS19FTkRfTUVTU0FHRV9IQU5ETEVSX1RPS0VOLCBudWxsKTtcclxuICAgIGlmIChiYWNrRW5kTWVzc2FnZUhhbmRsZXIpIHtcclxuICAgICAgYmFja0VuZE1lc3NhZ2VIYW5kbGVyLmhhbmRsZShiYWNrRW5kTWVzc2FnZSk7XHJcbiAgICB9XHJcbiAgfVxyXG4gIHB1YmxpYyBzdGF0aWMgaXNCYWNrRW5kTWVzc2FnZUhhbmRsZXJFeGlzdChpbmplY3RvcjogSW5qZWN0b3IpIHtcclxuICAgIGNvbnN0IGJhY2tFbmRNZXNzYWdlSGFuZGxlciA9IGluamVjdG9yLmdldDxCYWNrRW5kTWVzc2FnZS5JQmFja0VuZE1lc3NhZ2VIYW5kbGVyPihCQUNLX0VORF9NRVNTQUdFX0hBTkRMRVJfVE9LRU4sIG51bGwpO1xyXG4gICAgcmV0dXJuIGJhY2tFbmRNZXNzYWdlSGFuZGxlciAmJiB0cnVlIHx8IGZhbHNlO1xyXG4gIH1cclxuICBwdWJsaWMgc3RhdGljIGdldEZvcm1sZXNzTWVzc2FnZXMobWVzc2FnZXM6IEJhY2tFbmRNZXNzYWdlLklCaXpNZXNzYWdlW10pIHtcclxuICAgIGNvbnN0IGJpek1lc3NhZ2VzID0gdGhpcy5idWlsZEJhY2tFbmRNZXNzYWdlcyhtZXNzYWdlcykgfHwgW107XHJcbiAgICByZXR1cm4gYml6TWVzc2FnZXMuZmlsdGVyKChtZXNzYWdlOiBCYWNrRW5kTWVzc2FnZS5JQml6TWVzc2FnZSkgPT4ge1xyXG4gICAgICByZXR1cm4gIW1lc3NhZ2UubG9jYXRpb24gfHwgIW1lc3NhZ2UubG9jYXRpb24uY29sdW1ucyB8fCBtZXNzYWdlLmxvY2F0aW9uLmNvbHVtbnMubGVuZ3RoIDwgMSB8fCAhbWVzc2FnZS5sb2NhdGlvbi5ub2RlQ29kZTtcclxuICAgIH0pO1xyXG4gIH1cclxuICBwdWJsaWMgc3RhdGljIGJ1aWxkQmFja0VuZE1lc3NhZ2VzKG1lc3NhZ2VzOiBvYmplY3RbXSk6IEJhY2tFbmRNZXNzYWdlLklCaXpNZXNzYWdlW10ge1xyXG4gICAgaWYgKCFtZXNzYWdlcyB8fCBtZXNzYWdlcy5sZW5ndGggPCAxIHx8ICFBcnJheS5pc0FycmF5KG1lc3NhZ2VzKSkge1xyXG4gICAgICByZXR1cm4gbnVsbDtcclxuICAgIH1cclxuICAgIGNvbnN0IGJpek1lc3NhZ2VzOiBCYWNrRW5kTWVzc2FnZS5JQml6TWVzc2FnZVtdID0gW107XHJcbiAgICBtZXNzYWdlcy5mb3JFYWNoKChtZXNzYWdlOiBhbnkpID0+IHtcclxuICAgICAgY29uc3QgYml6TWVzc2FnZTogQmFja0VuZE1lc3NhZ2UuSUJpek1lc3NhZ2UgPSB7XHJcbiAgICAgICAgbGV2ZWw6IG1lc3NhZ2UubGV2ZWwsXHJcbiAgICAgICAgbWVzc2FnZTogbWVzc2FnZS5tZXNzYWdlXHJcbiAgICAgIH07XHJcbiAgICAgIGlmIChtZXNzYWdlLmhhc093blByb3BlcnR5KCdsb2NhdGlvbicpICYmIG1lc3NhZ2UubG9jYXRpb24pIHtcclxuICAgICAgICBiaXpNZXNzYWdlLmxvY2F0aW9uID0ge1xyXG4gICAgICAgICAgbm9kZUNvZGU6IG1lc3NhZ2UubG9jYXRpb24ubm9kZUNvZGUsXHJcbiAgICAgICAgICByb3dzOiBtZXNzYWdlLmxvY2F0aW9uLmRhdGFJZHMsXHJcbiAgICAgICAgICBjb2x1bW5zOiBtZXNzYWdlLmxvY2F0aW9uLmNvbHVtbk5hbWVzXHJcbiAgICAgICAgfTtcclxuICAgICAgfVxyXG4gICAgICBiaXpNZXNzYWdlcy5wdXNoKGJpek1lc3NhZ2UpO1xyXG4gICAgfSk7XHJcbiAgICByZXR1cm4gYml6TWVzc2FnZXM7XHJcbiAgfVxyXG59Il19

@@ -112,3 +112,9 @@ /**

}
if (!(error && error.error && error.error.extensionMessage && BackEndMessageUtil.isBackEndMessageHandlerExist(this.context.getInjector()))) {
/** @type {?} */
var messages_1 = ResponseInfoUtil.parseBackEndError(error);
/** @type {?} */
var bizMessages = BackEndMessageUtil.getFormlessMessages(messages_1);
/** @type {?} */
var isExistFormlessMessage = bizMessages && bizMessages.length > 0 || false;
if (!(error && error.error && error.error.extensionMessage && BackEndMessageUtil.isBackEndMessageHandlerExist(this.context.getInjector()) && !isExistFormlessMessage)) {
eventBus.post('Exception', '', 'onException', error, formAppContext);

@@ -251,2 +257,2 @@ }

}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmVmX3Byb3h5X2V4dGVuZC5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BmYXJyaXMvYmVmLyIsInNvdXJjZXMiOlsibGliL2JlZl9wcm94eV9leHRlbmQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEsT0FBTyxFQUFFLFVBQVUsRUFBYyxFQUFFLEVBQUUsS0FBSyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBSXpELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUUzQyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxTQUFTLENBQUM7QUFDM0MsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sK0JBQStCLENBQUM7O0FBR25FOzs7SUFDRSx3QkFBb0IsT0FBOEI7UUFBOUIsWUFBTyxHQUFQLE9BQU8sQ0FBdUI7SUFBSSxDQUFDO0lBQ3ZEOzs7O09BSUc7Ozs7Ozs7SUFDSSxtQ0FBVTs7Ozs7O0lBQWpCLFVBQWtCLFFBQXNCLEVBQUUsYUFBdUI7UUFDL0QsSUFBSSxRQUFRLElBQUksUUFBUSxDQUFDLGVBQWUsSUFBSSxhQUFhLEtBQUssSUFBSSxFQUFFO1lBQ2xFLElBQUksQ0FBQyxPQUFPLENBQUMsdUJBQXVCLENBQUMsUUFBUSxDQUFDLGVBQWUsQ0FBQyxDQUFDO1NBQ2hFOztZQUNLLFFBQVEsR0FBRyxnQkFBZ0IsQ0FBQyxtQkFBbUIsQ0FBQyxRQUFRLENBQUM7UUFDL0Qsa0JBQWtCLENBQUMsYUFBYSxDQUFDLFFBQVEsRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUM7UUFDdkUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxxQkFBcUIsRUFBRSxDQUFDO1FBQ3JDLElBQUksUUFBUSxJQUFJLFFBQVEsQ0FBQyxjQUFjLENBQUMsYUFBYSxDQUFDLEVBQUU7WUFDdEQsT0FBTyxRQUFRLENBQUMsV0FBVyxDQUFDO1NBQzdCO2FBQU07WUFDTCxPQUFPLFFBQVEsQ0FBQztTQUNqQjtJQUNILENBQUM7SUFD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QUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1NBQy9CO1FBQ0QsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDOzs7OztJQUNNLHFDQUFZOzs7O0lBQW5CLFVBQW9CLFFBQWE7O1lBQ3pCLFlBQVksR0FBRyxjQUFjO1FBQ25DLElBQUksUUFBUSxDQUFDLE9BQU8sSUFBSSxRQUFRLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxZQUFZLENBQUMsRUFBRTtZQUMxRCxJQUFJLENBQUMsT0FBTyxDQUFDLFdBQVcsQ0FBQyxjQUFjLENBQUMsY0FBYyxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUM7U0FDNUY7SUFDSCxDQUFDO0lBQ0gscUJBQUM7QUFBRCxDQUFDLEFBMUhELElBMEhDOzs7Ozs7OztJQXpIYSxpQ0FBc0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyB0aHJvd0Vycm9yLCBPYnNlcnZhYmxlLCBvZiwgRU1QVFkgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgRW50aXR5IH0gZnJvbSAnQGZhcnJpcy9kZXZraXQnO1xyXG5pbXBvcnQgeyBJUHJveHlFeHRlbmQsIFJlc3BvbnNlSW5mbyB9IGZyb20gJy4vdHlwZXMnO1xyXG5pbXBvcnQgeyBCZWZSZXBvc2l0b3J5IH0gZnJvbSAnLi9iZWZfcmVwb3NpdG9yeSc7XHJcbmltcG9ydCB7IHN3aXRjaE1hcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuaW1wb3J0IHsgSHR0cFBhcmFtcywgSHR0cEhlYWRlcnMgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XHJcbmltcG9ydCB7IFJlc3BvbnNlSW5mb1V0aWwgfSBmcm9tICcuL3V0aWxzJztcclxuaW1wb3J0IHsgQmFja0VuZE1lc3NhZ2VVdGlsIH0gZnJvbSAnLi91dGlscy9iYWNrX2VuZF9tZXNzYWdlLnV0aWwnO1xyXG5cclxuLy8gdHNsaW50OmRpc2FibGU6IG1heC1saW5lLWxlbmd0aCB0c2xpbnQ6ZGlzYWJsZTogbm8tc3RyaW5nLWxpdGVyYWxcclxuZXhwb3J0IGNsYXNzIEJlZlByb3h5RXh0ZW5kIGltcGxlbWVudHMgSVByb3h5RXh0ZW5kIHtcclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGNvbnRleHQ6IEJlZlJlcG9zaXRvcnk8RW50aXR5PikgeyB9XHJcbiAgLyoqXHJcbiAgICog6K+35rGC57uT5p6c6L+U5ZueXHJcbiAgICogQHBhcmFtIHJlc3BvbnNlIHJlc3BvbnNlXHJcbiAgICogQHBhcmFtIGlnbm9yZUNoYW5nZXMg5b+955Wl5Y+Y5pu0XHJcbiAgICovXHJcbiAgcHVibGljIG9uUmVzcG9uc2UocmVzcG9uc2U6IFJlc3BvbnNlSW5mbywgaWdub3JlQ2hhbmdlcz86IGJvb2xlYW4pIHtcclxuICAgIGlmIChyZXNwb25zZSAmJiByZXNwb25zZS5pbm5lckRhdGFDaGFuZ2UgJiYgaWdub3JlQ2hhbmdlcyAhPT0gdHJ1ZSkge1xyXG4gICAgICB0aGlzLmNvbnRleHQuaGFuZGxlRGF0YUNoYW5nZURldGFpbHMocmVzcG9uc2UuaW5uZXJEYXRhQ2hhbmdlKTtcclxuICAgIH1cclxuICAgIGNvbnN0IG1lc3NhZ2VzID0gUmVzcG9uc2VJbmZvVXRpbC5wYXJzZUJhY2tFbmRNZXNzYWdlKHJlc3BvbnNlKTtcclxuICAgIEJhY2tFbmRNZXNzYWdlVXRpbC5oYW5kbGVNZXNzYWdlKG1lc3NhZ2VzLCB0aGlzLmNvbnRleHQuZ2V0SW5qZWN0b3IoKSk7XHJcbiAgICB0aGlzLmNvbnRleHQuY2xlYXJBbGxFbnRpdHlDaGFuZ2VzKCk7XHJcbiAgICBpZiAocmVzcG9uc2UgJiYgcmVzcG9uc2UuaGFzT3duUHJvcGVydHkoJ3JldHVyblZhbHVlJykpIHtcclxuICAgICAgcmV0dXJuIHJlc3BvbnNlLnJldHVyblZhbHVlO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgcmV0dXJuIHJlc3BvbnNlO1xyXG4gICAgfVxyXG4gIH1cclxuICAvKipcclxuICAgKiDlj5HnlJ/plJnor69cclxuICAgKiBAcGFyYW0gZXJyb3IgZXJyb3JcclxuICAgKiBAcGFyYW0gc2VsZkhhbmRFcnJvciDoh6rlrprkuYnplJnor6/lpITnkIZcclxuICAgKiBAcGFyYW0gaWdub3JlRXJyb3Ig5b+955Wl6ZSZ6K+vXHJcbiAgICovXHJcbiAgcHVibGljIG9uRXJyb3IoZXJyb3I6IGFueSwgc2VsZkhhbmRFcnJvcjogYm9vbGVhbiwgaWdub3JlRXJyb3I6IGJvb2xlYW4pOiBPYnNlcnZhYmxlPGFueT4ge1xyXG4gICAgY29uc3QgZm9ybUFwcENvbnRleHQgPSB0aGlzLmNvbnRleHQuYXBwQ29udGV4dC5nZXRGb3JtQXBwQ29udGV4dCgpO1xyXG4gICAgY29uc3QgYXBwbGljYXRpb25JZCA9IGZvcm1BcHBDb250ZXh0LkFwcGxpY2F0aW9uSWQ7XHJcbiAgICBjb25zdCBsb2FkaW5nU2VydmljZXMgPSB3aW5kb3dbJ0RFVktJVF9MT0FESU5HX1NFUlZJQ0UnXTtcclxuICAgIGNvbnN0IG1lc3NhZ2VzID0gUmVzcG9uc2VJbmZvVXRpbC5wYXJzZUJhY2tFbmRFcnJvcihlcnJvcik7XHJcbiAgICBCYWNrRW5kTWVzc2FnZVV0aWwuaGFuZGxlTWVzc2FnZShtZXNzYWdlcywgdGhpcy5jb250ZXh0LmdldEluamVjdG9yKCkpO1xyXG4gICAgaWYgKGxvYWRpbmdTZXJ2aWNlcyAmJiBsb2FkaW5nU2VydmljZXMgaW5zdGFuY2VvZiBBcnJheSAmJiBsb2FkaW5nU2VydmljZXMubGVuZ3RoID4gMCkge1xyXG4gICAgICBmb3IgKGNvbnN0IGxvYWRpbmdTZXJ2aWNlIG9mIGxvYWRpbmdTZXJ2aWNlcykge1xyXG4gICAgICAgIGlmICh0eXBlb2YgKGxvYWRpbmdTZXJ2aWNlLmNsZWFyQWxsKSA9PT0gJ2Z1bmN0aW9uJykge1xyXG4gICAgICAgICAgbG9hZGluZ1NlcnZpY2UuY2xlYXJBbGwoKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBpZiAoISFzZWxmSGFuZEVycm9yKSB7XHJcbiAgICAgIHJldHVybiB0aHJvd0Vycm9yKGVycm9yKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGNvbnN0IGV2ZW50QnVzID0gdGhpcy5jb250ZXh0LnJlc3RTZXJ2aWNlLmV2ZW50QnVzO1xyXG4gICAgICBjb25zdCBhcHBsaWNhdGlvbkNvbnRleHQ6IGFueSA9IHdpbmRvd1thcHBsaWNhdGlvbklkXSB8fCB7fTtcclxuICAgICAgY29uc3QgaXNFeGNlcHRpb25IYW5kbGVyRXhpc3QgPSAhIWFwcGxpY2F0aW9uQ29udGV4dC5pc0V4Y2VwdGlvbkhhbmRsZXJFeGlzdDtcclxuXHJcbiAgICAgIGlmICghIWV2ZW50QnVzICYmIGlzRXhjZXB0aW9uSGFuZGxlckV4aXN0KSB7XHJcbiAgICAgICAgaWYgKFJlc3BvbnNlSW5mb1V0aWwuaXNSZXBvcnRlZDQwMUVycm9yKGVycm9yKSkge1xyXG4gICAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoZXJyb3IpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoIShlcnJvciAmJiBlcnJvci5lcnJvciAmJiBlcnJvci5lcnJvci5leHRlbnNpb25NZXNzYWdlICYmIEJhY2tFbmRNZXNzYWdlVXRpbC5pc0JhY2tFbmRNZXNzYWdlSGFuZGxlckV4aXN0KHRoaXMuY29udGV4dC5nZXRJbmplY3RvcigpKSkpIHtcclxuICAgICAgICAgIGV2ZW50QnVzLnBvc3QoJ0V4Y2VwdGlvbicsICcnLCAnb25FeGNlcHRpb24nLCBlcnJvciwgZm9ybUFwcENvbnRleHQpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoaWdub3JlRXJyb3IpIHtcclxuICAgICAgICAgIHJldHVybiBvZihudWxsKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgcmV0dXJuIEVNUFRZO1xyXG4gICAgICAgIH1cclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICByZXR1cm4gdGhyb3dFcnJvcihlcnJvcik7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcbiAgLyoqXHJcbiAgICog5omp5bGVaHR0cCBoZWFkZXJzXHJcbiAgICogQHBhcmFtIGhlYWRlcnMgaGVhZGVyc1xyXG4gICAqL1xyXG4gIHB1YmxpYyBleHRlbmRIZWFkZXJzKGhlYWRlcnM6IEh0dHBIZWFkZXJzLCBydW50aW1lQ29udGV4dD86IGFueSk6IE9ic2VydmFibGU8eyBbcHJvcE5hbWU6IHN0cmluZ106IGFueSB9PiB7XHJcbiAgICBjb25zdCAkZ2V0U2Vzc2lvbklkID0gdGhpcy5jb250ZXh0LnJlc3RTZXJ2aWNlLnNlc3Npb25TZXJ2aWNlLmdldEJlU2Vzc2lvbklkKCk7XHJcbiAgICByZXR1cm4gJGdldFNlc3Npb25JZC5waXBlKFxyXG4gICAgICBzd2l0Y2hNYXAoc2Vzc2lvbklkID0+IHtcclxuICAgICAgICBoZWFkZXJzID0gdGhpcy5jb250ZXh0LnJlc3RTZXJ2aWNlLnNlc3Npb25TZXJ2aWNlLmV4dGVuZFJlcXVlc3RIZWFkZXJzKGhlYWRlcnMsIHJ1bnRpbWVDb250ZXh0KTtcclxuICAgICAgICByZXR1cm4gb2YoaGVhZGVycyk7XHJcbiAgICAgIH0pXHJcbiAgICApO1xyXG4gIH1cclxuICAvKipcclxuICAgKiDmianlsZXor7fmsYLlj4LmlbBcclxuICAgKiBAcGFyYW0gcGFyYW1zIOWPguaVsFxyXG4gICAqL1xyXG4gIHB1YmxpYyBleHRlbmRVcmwodXJsOiBzdHJpbmcsIHBhcmFtczogeyBbcHJvcE5hbWU6IHN0cmluZ106IGFueSB9KTogc3RyaW5nIHtcclxuICAgIGlmICghcGFyYW1zKSB7XHJcbiAgICAgIHJldHVybiB1cmw7XHJcbiAgICB9XHJcbiAgICBmb3IgKGNvbnN0IGtleSBpbiBwYXJhbXMpIHtcclxuICAgICAgaWYgKHBhcmFtcy5oYXNPd25Qcm9wZXJ0eShrZXkpKSB7XHJcbiAgICAgICAgY29uc3QgdmFsdWUgPSBKU09OLnN0cmluZ2lmeShwYXJhbXNba2V5XSk7XHJcbiAgICAgICAgaWYgKHVybC5pbmRleE9mKCc/JykgPT09IC0xKSB7XHJcbiAgICAgICAgICB1cmwgPSBgJHt1cmx9PyR7a2V5fT0ke3ZhbHVlfWA7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHVybCA9IGAke3VybH0mJHtrZXl9PSR7dmFsdWV9YDtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiB1cmw7XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIOaJqeWxleivt+axguS9k1xyXG4gICAqIEBwYXJhbSBib2R5IGJvZHlcclxuICAgKi9cclxuICBwdWJsaWMgZXh0ZW5kQm9keShib2R5KTogeyBbcHJvcE5hbWU6IHN0cmluZ106IGFueSB9IHtcclxuICAgIGlmICghYm9keSB8fCB0eXBlb2YgYm9keSAhPT0gJ29iamVjdCcgfHwgT2JqZWN0LmtleXMoYm9keSkubGVuZ3RoIDwgMSkge1xyXG4gICAgICByZXR1cm4gYm9keTtcclxuICAgIH1cclxuICAgIE9iamVjdC5rZXlzKGJvZHkpLmZvckVhY2gobmFtZSA9PiB7XHJcbiAgICAgIGlmIChuYW1lID09PSAncmVxdWVzdEluZm8nKSB7XHJcbiAgICAgICAgYm9keVsncmVxdWVzdEluZm8nXSA9IHRoaXMuY29udGV4dC5yZXN0U2VydmljZS5idWlsZFJlcXVlc3RJbmZvKCk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gICAgLy8g5YW85a65SueJiOWQjuerr2JvZHnlj6rmnInkuIDkuKprZXnml7Zib2R55Y+q5LygdmFsdWXnmoTmg4XlhrVcclxuICAgIGlmIChPYmplY3Qua2V5cyhib2R5KS5sZW5ndGggPT09IDEpIHtcclxuICAgICAgYm9keSA9IE9iamVjdC52YWx1ZXMoYm9keSlbMF07XHJcbiAgICB9XHJcbiAgICByZXR1cm4gYm9keTtcclxuICB9XHJcbiAgcHVibGljIHBhcnNlSGVhZGVycyhyZXNwb25zZTogYW55KSB7XHJcbiAgICBjb25zdCBzZXNzaW9uSWRLZXkgPSAnQkVGU2Vzc2lvbklEJztcclxuICAgIGlmIChyZXNwb25zZS5oZWFkZXJzICYmIHJlc3BvbnNlLmhlYWRlcnMuaGFzKHNlc3Npb25JZEtleSkpIHtcclxuICAgICAgdGhpcy5jb250ZXh0LnJlc3RTZXJ2aWNlLnNlc3Npb25TZXJ2aWNlLnNldEJlU2Vzc2lvbklkKHJlc3BvbnNlLmhlYWRlcnMuZ2V0KHNlc3Npb25JZEtleSkpO1xyXG4gICAgfVxyXG4gIH1cclxufVxyXG4iXX0=
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmVmX3Byb3h5X2V4dGVuZC5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BmYXJyaXMvYmVmLyIsInNvdXJjZXMiOlsibGliL2JlZl9wcm94eV9leHRlbmQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEsT0FBTyxFQUFFLFVBQVUsRUFBYyxFQUFFLEVBQUUsS0FBSyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBSXpELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUUzQyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxTQUFTLENBQUM7QUFDM0MsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sK0JBQStCLENBQUM7O0FBR25FOzs7SUFDRSx3QkFBb0IsT0FBOEI7UUFBOUIsWUFBTyxHQUFQLE9BQU8sQ0FBdUI7SUFBSSxDQUFDO0lBQ3ZEOzs7O09BSUc7Ozs7Ozs7SUFDSSxtQ0FBVTs7Ozs7O0lBQWpCLFVBQWtCLFFBQXNCLEVBQUUsYUFBdUI7UUFDL0QsSUFBSSxRQUFRLElBQUksUUFBUSxDQUFDLGVBQWUsSUFBSSxhQUFhLEtBQUssSUFBSSxFQUFFO1lBQ2xFLElBQUksQ0FBQyxPQUFPLENBQUMsdUJBQXVCLENBQUMsUUFBUSxDQUFDLGVBQWUsQ0FBQyxDQUFDO1NBQ2hFOztZQUNLLFFBQVEsR0FBRyxnQkFBZ0IsQ0FBQyxtQkFBbUIsQ0FBQyxRQUFRLENBQUM7UUFDL0Qsa0JBQWtCLENBQUMsYUFBYSxDQUFDLFFBQVEsRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUM7UUFDdkUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxxQkFBcUIsRUFBRSxDQUFDO1FBQ3JDLElBQUksUUFBUSxJQUFJLFFBQVEsQ0FBQyxjQUFjLENBQUMsYUFBYSxDQUFDLEVBQUU7WUFDdEQsT0FBTyxRQUFRLENBQUMsV0FBVyxDQUFDO1NBQzdCO2FBQU07WUFDTCxPQUFPLFFBQVEsQ0FBQztTQUNqQjtJQUNILENBQUM7SUFD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QUcsS0FBSSxDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQzthQUNuRTtRQUNILENBQUMsRUFBQyxDQUFDO1FBQ0gsbUNBQW1DO1FBQ25DLElBQUksTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFO1lBQ2xDLElBQUksR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1NBQy9CO1FBQ0QsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDOzs7OztJQUNNLHFDQUFZOzs7O0lBQW5CLFVBQW9CLFFBQWE7O1lBQ3pCLFlBQVksR0FBRyxjQUFjO1FBQ25DLElBQUksUUFBUSxDQUFDLE9BQU8sSUFBSSxRQUFRLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxZQUFZLENBQUMsRUFBRTtZQUMxRCxJQUFJLENBQUMsT0FBTyxDQUFDLFdBQVcsQ0FBQyxjQUFjLENBQUMsY0FBYyxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUM7U0FDNUY7SUFDSCxDQUFDO0lBQ0gscUJBQUM7QUFBRCxDQUFDLEFBN0hELElBNkhDOzs7Ozs7OztJQTVIYSxpQ0FBc0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyB0aHJvd0Vycm9yLCBPYnNlcnZhYmxlLCBvZiwgRU1QVFkgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgRW50aXR5IH0gZnJvbSAnQGZhcnJpcy9kZXZraXQnO1xyXG5pbXBvcnQgeyBJUHJveHlFeHRlbmQsIFJlc3BvbnNlSW5mbyB9IGZyb20gJy4vdHlwZXMnO1xyXG5pbXBvcnQgeyBCZWZSZXBvc2l0b3J5IH0gZnJvbSAnLi9iZWZfcmVwb3NpdG9yeSc7XHJcbmltcG9ydCB7IHN3aXRjaE1hcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuaW1wb3J0IHsgSHR0cFBhcmFtcywgSHR0cEhlYWRlcnMgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XHJcbmltcG9ydCB7IFJlc3BvbnNlSW5mb1V0aWwgfSBmcm9tICcuL3V0aWxzJztcclxuaW1wb3J0IHsgQmFja0VuZE1lc3NhZ2VVdGlsIH0gZnJvbSAnLi91dGlscy9iYWNrX2VuZF9tZXNzYWdlLnV0aWwnO1xyXG5cclxuLy8gdHNsaW50OmRpc2FibGU6IG1heC1saW5lLWxlbmd0aCB0c2xpbnQ6ZGlzYWJsZTogbm8tc3RyaW5nLWxpdGVyYWxcclxuZXhwb3J0IGNsYXNzIEJlZlByb3h5RXh0ZW5kIGltcGxlbWVudHMgSVByb3h5RXh0ZW5kIHtcclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGNvbnRleHQ6IEJlZlJlcG9zaXRvcnk8RW50aXR5PikgeyB9XHJcbiAgLyoqXHJcbiAgICog6K+35rGC57uT5p6c6L+U5ZueXHJcbiAgICogQHBhcmFtIHJlc3BvbnNlIHJlc3BvbnNlXHJcbiAgICogQHBhcmFtIGlnbm9yZUNoYW5nZXMg5b+955Wl5Y+Y5pu0XHJcbiAgICovXHJcbiAgcHVibGljIG9uUmVzcG9uc2UocmVzcG9uc2U6IFJlc3BvbnNlSW5mbywgaWdub3JlQ2hhbmdlcz86IGJvb2xlYW4pIHtcclxuICAgIGlmIChyZXNwb25zZSAmJiByZXNwb25zZS5pbm5lckRhdGFDaGFuZ2UgJiYgaWdub3JlQ2hhbmdlcyAhPT0gdHJ1ZSkge1xyXG4gICAgICB0aGlzLmNvbnRleHQuaGFuZGxlRGF0YUNoYW5nZURldGFpbHMocmVzcG9uc2UuaW5uZXJEYXRhQ2hhbmdlKTtcclxuICAgIH1cclxuICAgIGNvbnN0IG1lc3NhZ2VzID0gUmVzcG9uc2VJbmZvVXRpbC5wYXJzZUJhY2tFbmRNZXNzYWdlKHJlc3BvbnNlKTtcclxuICAgIEJhY2tFbmRNZXNzYWdlVXRpbC5oYW5kbGVNZXNzYWdlKG1lc3NhZ2VzLCB0aGlzLmNvbnRleHQuZ2V0SW5qZWN0b3IoKSk7XHJcbiAgICB0aGlzLmNvbnRleHQuY2xlYXJBbGxFbnRpdHlDaGFuZ2VzKCk7XHJcbiAgICBpZiAocmVzcG9uc2UgJiYgcmVzcG9uc2UuaGFzT3duUHJvcGVydHkoJ3JldHVyblZhbHVlJykpIHtcclxuICAgICAgcmV0dXJuIHJlc3BvbnNlLnJldHVyblZhbHVlO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgcmV0dXJuIHJlc3BvbnNlO1xyXG4gICAgfVxyXG4gIH1cclxuICAvKipcclxuICAgKiDlj5HnlJ/plJnor69cclxuICAgKiBAcGFyYW0gZXJyb3IgZXJyb3JcclxuICAgKiBAcGFyYW0gc2VsZkhhbmRFcnJvciDoh6rlrprkuYnplJnor6/lpITnkIZcclxuICAgKiBAcGFyYW0gaWdub3JlRXJyb3Ig5b+955Wl6ZSZ6K+vXHJcbiAgICovXHJcbiAgcHVibGljIG9uRXJyb3IoZXJyb3I6IGFueSwgc2VsZkhhbmRFcnJvcjogYm9vbGVhbiwgaWdub3JlRXJyb3I6IGJvb2xlYW4pOiBPYnNlcnZhYmxlPGFueT4ge1xyXG4gICAgY29uc3QgZm9ybUFwcENvbnRleHQgPSB0aGlzLmNvbnRleHQuYXBwQ29udGV4dC5nZXRGb3JtQXBwQ29udGV4dCgpO1xyXG4gICAgY29uc3QgYXBwbGljYXRpb25JZCA9IGZvcm1BcHBDb250ZXh0LkFwcGxpY2F0aW9uSWQ7XHJcbiAgICBjb25zdCBsb2FkaW5nU2VydmljZXMgPSB3aW5kb3dbJ0RFVktJVF9MT0FESU5HX1NFUlZJQ0UnXTtcclxuICAgIGNvbnN0IG1lc3NhZ2VzID0gUmVzcG9uc2VJbmZvVXRpbC5wYXJzZUJhY2tFbmRFcnJvcihlcnJvcik7XHJcbiAgICBCYWNrRW5kTWVzc2FnZVV0aWwuaGFuZGxlTWVzc2FnZShtZXNzYWdlcywgdGhpcy5jb250ZXh0LmdldEluamVjdG9yKCkpO1xyXG4gICAgaWYgKGxvYWRpbmdTZXJ2aWNlcyAmJiBsb2FkaW5nU2VydmljZXMgaW5zdGFuY2VvZiBBcnJheSAmJiBsb2FkaW5nU2VydmljZXMubGVuZ3RoID4gMCkge1xyXG4gICAgICBmb3IgKGNvbnN0IGxvYWRpbmdTZXJ2aWNlIG9mIGxvYWRpbmdTZXJ2aWNlcykge1xyXG4gICAgICAgIGlmICh0eXBlb2YgKGxvYWRpbmdTZXJ2aWNlLmNsZWFyQWxsKSA9PT0gJ2Z1bmN0aW9uJykge1xyXG4gICAgICAgICAgbG9hZGluZ1NlcnZpY2UuY2xlYXJBbGwoKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBpZiAoISFzZWxmSGFuZEVycm9yKSB7XHJcbiAgICAgIHJldHVybiB0aHJvd0Vycm9yKGVycm9yKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGNvbnN0IGV2ZW50QnVzID0gdGhpcy5jb250ZXh0LnJlc3RTZXJ2aWNlLmV2ZW50QnVzO1xyXG4gICAgICBjb25zdCBhcHBsaWNhdGlvbkNvbnRleHQ6IGFueSA9IHdpbmRvd1thcHBsaWNhdGlvbklkXSB8fCB7fTtcclxuICAgICAgY29uc3QgaXNFeGNlcHRpb25IYW5kbGVyRXhpc3QgPSAhIWFwcGxpY2F0aW9uQ29udGV4dC5pc0V4Y2VwdGlvbkhhbmRsZXJFeGlzdDtcclxuXHJcbiAgICAgIGlmICghIWV2ZW50QnVzICYmIGlzRXhjZXB0aW9uSGFuZGxlckV4aXN0KSB7XHJcbiAgICAgICAgaWYgKFJlc3BvbnNlSW5mb1V0aWwuaXNSZXBvcnRlZDQwMUVycm9yKGVycm9yKSkge1xyXG4gICAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoZXJyb3IpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBjb25zdCBtZXNzYWdlcyA9IFJlc3BvbnNlSW5mb1V0aWwucGFyc2VCYWNrRW5kRXJyb3IoZXJyb3IpO1xyXG4gICAgICAgIGNvbnN0IGJpek1lc3NhZ2VzID0gQmFja0VuZE1lc3NhZ2VVdGlsLmdldEZvcm1sZXNzTWVzc2FnZXMobWVzc2FnZXMpO1xyXG4gICAgICAgIGNvbnN0IGlzRXhpc3RGb3JtbGVzc01lc3NhZ2UgPSBiaXpNZXNzYWdlcyAmJiBiaXpNZXNzYWdlcy5sZW5ndGggPiAwIHx8IGZhbHNlO1xyXG4gICAgICAgIGlmICghKGVycm9yICYmIGVycm9yLmVycm9yICYmIGVycm9yLmVycm9yLmV4dGVuc2lvbk1lc3NhZ2UgJiYgQmFja0VuZE1lc3NhZ2VVdGlsLmlzQmFja0VuZE1lc3NhZ2VIYW5kbGVyRXhpc3QodGhpcy5jb250ZXh0LmdldEluamVjdG9yKCkpICYmICFpc0V4aXN0Rm9ybWxlc3NNZXNzYWdlKSkge1xyXG4gICAgICAgICAgZXZlbnRCdXMucG9zdCgnRXhjZXB0aW9uJywgJycsICdvbkV4Y2VwdGlvbicsIGVycm9yLCBmb3JtQXBwQ29udGV4dCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChpZ25vcmVFcnJvcikge1xyXG4gICAgICAgICAgcmV0dXJuIG9mKG51bGwpO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICByZXR1cm4gRU1QVFk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHJldHVybiB0aHJvd0Vycm9yKGVycm9yKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuICAvKipcclxuICAgKiDmianlsZVodHRwIGhlYWRlcnNcclxuICAgKiBAcGFyYW0gaGVhZGVycyBoZWFkZXJzXHJcbiAgICovXHJcbiAgcHVibGljIGV4dGVuZEhlYWRlcnMoaGVhZGVyczogSHR0cEhlYWRlcnMsIHJ1bnRpbWVDb250ZXh0PzogYW55KTogT2JzZXJ2YWJsZTx7IFtwcm9wTmFtZTogc3RyaW5nXTogYW55IH0+IHtcclxuICAgIGNvbnN0ICRnZXRTZXNzaW9uSWQgPSB0aGlzLmNvbnRleHQucmVzdFNlcnZpY2Uuc2Vzc2lvblNlcnZpY2UuZ2V0QmVTZXNzaW9uSWQoKTtcclxuICAgIHJldHVybiAkZ2V0U2Vzc2lvbklkLnBpcGUoXHJcbiAgICAgIHN3aXRjaE1hcChzZXNzaW9uSWQgPT4ge1xyXG4gICAgICAgIGhlYWRlcnMgPSB0aGlzLmNvbnRleHQucmVzdFNlcnZpY2Uuc2Vzc2lvblNlcnZpY2UuZXh0ZW5kUmVxdWVzdEhlYWRlcnMoaGVhZGVycywgcnVudGltZUNvbnRleHQpO1xyXG4gICAgICAgIHJldHVybiBvZihoZWFkZXJzKTtcclxuICAgICAgfSlcclxuICAgICk7XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIOaJqeWxleivt+axguWPguaVsFxyXG4gICAqIEBwYXJhbSBwYXJhbXMg5Y+C5pWwXHJcbiAgICovXHJcbiAgcHVibGljIGV4dGVuZFVybCh1cmw6IHN0cmluZywgcGFyYW1zOiB7IFtwcm9wTmFtZTogc3RyaW5nXTogYW55IH0pOiBzdHJpbmcge1xyXG4gICAgaWYgKCFwYXJhbXMpIHtcclxuICAgICAgcmV0dXJuIHVybDtcclxuICAgIH1cclxuICAgIGZvciAoY29uc3Qga2V5IGluIHBhcmFtcykge1xyXG4gICAgICBpZiAocGFyYW1zLmhhc093blByb3BlcnR5KGtleSkpIHtcclxuICAgICAgICBjb25zdCB2YWx1ZSA9IEpTT04uc3RyaW5naWZ5KHBhcmFtc1trZXldKTtcclxuICAgICAgICBpZiAodXJsLmluZGV4T2YoJz8nKSA9PT0gLTEpIHtcclxuICAgICAgICAgIHVybCA9IGAke3VybH0/JHtrZXl9PSR7dmFsdWV9YDtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgdXJsID0gYCR7dXJsfSYke2tleX09JHt2YWx1ZX1gO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIHVybDtcclxuICB9XHJcbiAgLyoqXHJcbiAgICog5omp5bGV6K+35rGC5L2TXHJcbiAgICogQHBhcmFtIGJvZHkgYm9keVxyXG4gICAqL1xyXG4gIHB1YmxpYyBleHRlbmRCb2R5KGJvZHkpOiB7IFtwcm9wTmFtZTogc3RyaW5nXTogYW55IH0ge1xyXG4gICAgaWYgKCFib2R5IHx8IHR5cGVvZiBib2R5ICE9PSAnb2JqZWN0JyB8fCBPYmplY3Qua2V5cyhib2R5KS5sZW5ndGggPCAxKSB7XHJcbiAgICAgIHJldHVybiBib2R5O1xyXG4gICAgfVxyXG4gICAgT2JqZWN0LmtleXMoYm9keSkuZm9yRWFjaChuYW1lID0+IHtcclxuICAgICAgaWYgKG5hbWUgPT09ICdyZXF1ZXN0SW5mbycpIHtcclxuICAgICAgICBib2R5WydyZXF1ZXN0SW5mbyddID0gdGhpcy5jb250ZXh0LnJlc3RTZXJ2aWNlLmJ1aWxkUmVxdWVzdEluZm8oKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgICAvLyDlhbzlrrlK54mI5ZCO56uvYm9keeWPquacieS4gOS4qmtleeaXtmJvZHnlj6rkvKB2YWx1ZeeahOaDheWGtVxyXG4gICAgaWYgKE9iamVjdC5rZXlzKGJvZHkpLmxlbmd0aCA9PT0gMSkge1xyXG4gICAgICBib2R5ID0gT2JqZWN0LnZhbHVlcyhib2R5KVswXTtcclxuICAgIH1cclxuICAgIHJldHVybiBib2R5O1xyXG4gIH1cclxuICBwdWJsaWMgcGFyc2VIZWFkZXJzKHJlc3BvbnNlOiBhbnkpIHtcclxuICAgIGNvbnN0IHNlc3Npb25JZEtleSA9ICdCRUZTZXNzaW9uSUQnO1xyXG4gICAgaWYgKHJlc3BvbnNlLmhlYWRlcnMgJiYgcmVzcG9uc2UuaGVhZGVycy5oYXMoc2Vzc2lvbklkS2V5KSkge1xyXG4gICAgICB0aGlzLmNvbnRleHQucmVzdFNlcnZpY2Uuc2Vzc2lvblNlcnZpY2Uuc2V0QmVTZXNzaW9uSWQocmVzcG9uc2UuaGVhZGVycy5nZXQoc2Vzc2lvbklkS2V5KSk7XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcbiJdfQ==

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

import { HttpClient } from '@angular/common/http';
import { encodeUrl } from '@farris/devkit';
import { BefDataPathUtil } from './bef_data_path_util';

@@ -113,2 +114,3 @@ import { UriService } from './uri_service';

var entityFilterJson = JSON.stringify(entityFilter);
entityFilterJson = encodeUrl(entityFilterJson);
url = url + "?entityFilter=" + entityFilterJson;

@@ -907,2 +909,2 @@ }

}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmVmX3Byb3h5LmpzIiwic291cmNlUm9vdCI6Im5nOi8vQGZhcnJpcy9iZWYvIiwic291cmNlcyI6WyJsaWIvYmVmX3Byb3h5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsT0FBTyxFQUFFLFVBQVUsRUFBWSxNQUFNLGVBQWUsQ0FBQztBQUVyRCxPQUFPLEVBQUUsU0FBUyxFQUFFLEdBQUcsRUFBRSxVQUFVLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDakUsT0FBTyxFQUEyQixVQUFVLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUUzRSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDdkQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQUUsY0FBYyxFQUFFLGFBQWEsRUFBRSxlQUFlLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDakcsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDOztJQUd2QyxHQUFHLEdBQUcsS0FBSzs7SUFDWCxNQUFNLEdBQUcsUUFBUTs7SUFDakIsR0FBRyxHQUFHLEtBQUs7O0lBQ1gsSUFBSSxHQUFHLE1BQU07O0lBQ2IsS0FBSyxHQUFHLE9BQU87Ozs7OztBQU9yQjtJQVFFLGtCQUFtQixVQUFzQixFQUFTLFVBQXNCO1FBQXJELGVBQVUsR0FBVixVQUFVLENBQVk7UUFBUyxlQUFVLEdBQVYsVUFBVSxDQUFZO1FBQ3RFLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxXQUFXLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBQ3RELENBQUM7SUFDRDs7O09BR0c7Ozs7OztJQUNJLDZCQUFVOzs7OztJQUFqQixVQUFrQixPQUFlO1FBQy9CLElBQUksQ0FBQyxPQUFPLEdBQUcsT0FBTyxDQUFDO0lBQ3pCLENBQUM7SUFDRDs7O09BR0c7Ozs7OztJQUNJLGlDQUFjOzs7OztJQUFyQixVQUFzQixX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SUFJcEMsMkJBQTBCOzs7OztJQUMxQiwrQkFBaUM7O0lBQ3JCLDhCQUE2Qjs7SUFBRSw4QkFBNkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlLCBPcHRpb25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBlbXB0eSwgdGhyb3dFcnJvciwgb2YgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgc3dpdGNoTWFwLCBtYXAsIGNhdGNoRXJyb3IsIHRhcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuaW1wb3J0IHsgSHR0cEhlYWRlcnMsIEh0dHBQYXJhbXMsIEh0dHBDbGllbnQgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XHJcbmltcG9ydCB7IElQcm94eUV4dGVuZCwgUmVxdWVzdEluZm8sIFJlc3BvbnNlSW5mbywgQ2hhbmdlRGV0YWlsIH0gZnJvbSAnLi90eXBlcyc7XHJcbmltcG9ydCB7IEJlZkRhdGFQYXRoVXRpbCB9IGZyb20gJy4vYmVmX2RhdGFfcGF0aF91dGlsJztcclxuaW1wb3J0IHsgVXJpU2VydmljZSB9IGZyb20gJy4vdXJpX3NlcnZpY2UnO1xyXG5pbXBvcnQgeyBIdHRwSGVhZGVyVXRpbCwgSHR0cFBhcmFtVXRpbCwgUmVxdWVzdEluZm9VdGlsLCBSZXNwb25zZUluZm9VdGlsIH0gZnJvbSAnLi91dGlscy9pbmRleCc7XHJcbmltcG9ydCB7IEh0dHBTZXJ2aWNlIH0gZnJvbSAnLi9odHRwX3NlcnZpY2UnO1xyXG5cclxuXHJcbmNvbnN0IEdFVCA9ICdHRVQnO1xyXG5jb25zdCBERUxFVEUgPSAnREVMRVRFJztcclxuY29uc3QgUFVUID0gJ1BVVCc7XHJcbmNvbnN0IFBPU1QgPSAnUE9TVCc7XHJcbmNvbnN0IFBBVENIID0gJ1BBVENIJztcclxuXHJcbi8qKlxyXG4gKiBCZWbku6PnkIbnsbtcclxuICog5Luj55CG57G755qE6IGM6LSj5piv5aSE55CGaHR0cOivt+axgu+8jOWPkemAgeS4gOS4qmh0dHDor7fmsYLmiYDpnIDnmoTotYTmupDmnInvvJp1cmnvvIxtZXRob2TvvIxoZWFkZXLjgIFib2R544CBcXVlcnkgcGFyYW1ldGVyXHJcbiAqIHVyaSDnlLF1cmlTZXJ2aWNlXHJcbiAqL1xyXG5ASW5qZWN0YWJsZSgpXHJcbmV4cG9ydCBjbGFzcyBCZWZQcm94eSB7XHJcbiAgcHJvdGVjdGVkIHByb3h5RXh0ZW5kOiBJUHJveHlFeHRlbmQ7XHJcbiAgLyoqXHJcbiAgICogcmVzdGZ1bOWfuui3r+W+hFxyXG4gICAqL1xyXG4gIHByb3RlY3RlZCBiYXNlVXJpOiBzdHJpbmc7XHJcbiAgcHJpdmF0ZSBodHRwU2VydmljZTogSHR0cFNlcnZpY2U7XHJcbiAgY29uc3RydWN0b3IocHVibGljIGh0dHBDbGllbnQ6IEh0dHBDbGllbnQsIHB1YmxpYyB1cmlTZXJ2aWNlOiBVcmlTZXJ2aWNlKSB7XHJcbiAgICB0aGlzLmh0dHBTZXJ2aWNlID0gbmV3IEh0dHBTZXJ2aWNlKHRoaXMuaHR0cENsaWVudCk7XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIOiuvue9ruWfuui3r+W+hFxyXG4gICAqIEBwYXJhbSBiYXNlVXJpIOWfuui3r+W+hFxyXG4gICAqL1xyXG4gIHB1YmxpYyBzZXRCYXNlVXJpKGJhc2VVcmk6IHN0cmluZyk6IHZvaWQge1xyXG4gICAgdGhpcy5iYXNlVXJpID0gYmFzZVVyaTtcclxuICB9XHJcbiAgLyoqXHJcbiAgICog6K6+572u562W55Wl5qih5byPXHJcbiAgICogQHBhcmFtIHN0cmF0ZWd5IOetlueVpVxyXG4gICAqL1xyXG4gIHB1YmxpYyBzZXRQcm94eUV4dGVuZChwcm94eUV4dGVuZDogSVByb3h5RXh0ZW5kKSB7XHJcbiAgICB0aGlzLnByb3h5RXh0ZW5kID0gcHJveHlFeHRlbmQ7XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIOafpeivolxyXG4gICAqL1xyXG4gIHB1YmxpYyBxdWVyeShlbnRpdHlGaWx0ZXI/OiBhbnkpOiBPYnNlcnZhYmxlPGFueT4ge1xyXG4gICAgbGV0IHVybCA9IHRoaXMuYmFzZVVyaTtcclxuICAgIGlmIChlbnRpdHlGaWx0ZXIpIHtcclxuICAgICAgY29uc3QgZW50aXR5RmlsdGVySnNvbiA9IEpTT04uc3RyaW5naWZ5KGVudGl0eUZpbHRlcik7XHJcbiAgICAgIHVybCA9IGAke3VybH0/ZW50aXR5RmlsdGVyPSR7ZW50aXR5RmlsdGVySnNvbn1gO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHRoaXMucmVxdWVzdCh1cmwsIEdFVCk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiDmianlsZXmn6Xor6JcclxuICAgKi9cclxuICBwdWJsaWMgZXh0ZW5kUXVlcnkoZW50aXR5RmlsdGVyOiBhbnksIHJlcXVlc3RJbmZvOiBSZXF1ZXN0SW5mbyk6IE9ic2VydmFibGU8UmVzcG9uc2VJbmZvPiB7XHJcbiAgICBsZXQgdXJsID0gYCR7dGhpcy5iYXNlVXJpfS9leHRlbnNpb24vcXVlcnlgO1xyXG4gICAgaWYgKGVudGl0eUZpbHRlcikge1xyXG4gICAgICBjb25zdCBlbnRpdHlGaWx0ZXJKc29uID0gSlNPTi5zdHJpbmdpZnkoZW50aXR5RmlsdGVyKTtcclxuICAgICAgdXJsID0gYCR7dXJsfT9lbnRpdHlGaWx0ZXI9JHtlbnRpdHlGaWx0ZXJKc29ufWA7XHJcbiAgICB9XHJcbiAgICBjb25zdCBib2R5ID0gcmVxdWVzdEluZm87XHJcbiAgICBjb25zdCBvcHRpb25zID0gdGhpcy5hZGRCb2R5VG9PcHRpb25zKHt9LCBib2R5KTtcclxuICAgIHJldHVybiB0aGlzLnJlcXVlc3QodXJsLCBQVVQsIG51bGwsIG9wdGlvbnMsIGZhbHNlKTtcclxuICB9XHJcbiAgLyoqXHJcbiAgICog5p+l6K+i5pWw5o2u77yI5bim6L+H5ruk5p2h5Lu277yJXHJcbiAgICogQHBhcmFtIGVudGl0eUZpbHRlciDov4fmu6TjgIHmjpLluo/jgIHliIbpobXkv6Hmga9cclxuICAgKiBAcGFyYW0gcmVxdWVzdEluZm8gcmVxdWVzdEluZm9cclxuICAgKiBAZGVzY3JpcHRpb24g5ZKMZXh0ZW5kUXVlcnnkuIDoh7TvvIzku4XlsIbmn6Xor6Llj4LmlbDmlL7liLBib2R55LitXHJcbiAgICovXHJcbiAgcHVibGljIGZpbHRlcihlbnRpdHlGaWx0ZXI6IGFueSwgcmVxdWVzdEluZm86IFJlcXVlc3RJbmZvKTogT2JzZXJ2YWJsZTxSZXNwb25zZUluZm8+IHtcclxuICAgIGxldCB1cmwgPSBgJHt0aGlzLmJhc2VVcml9L2V4dGVuc2lvbi9maWx0ZXJgO1xyXG4gICAgbGV0IGJvZHk6IGFueSA9IHsgcmVxdWVzdEluZm8gfTtcclxuICAgIGlmIChlbnRpdHlGaWx0ZXIpIHtcclxuICAgICAgYm9keSA9IHsgZW50aXR5RmlsdGVyLCByZXF1ZXN0SW5mbyB9O1xyXG4gICAgfVxyXG4gICAgY29uc3Qgb3B0aW9ucyA9IHRoaXMuYWRkQm9keVRvT3B0aW9ucyh7fSwgYm9keSk7XHJcbiAgICByZXR1cm4gdGhpcy5yZXF1ZXN0KHVybCwgUE9TVCwgbnVsbCwgb3B0aW9ucywgZmFsc2UpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICog5qOA57Si5pWw5o2uXHJcbiAgICogQHBhcmFtIGlkIOWNleaNruWGheeggVxyXG4gICAqIEByZXR1cm4g5pWw5o2u5a+56LGhXHJcbiAgICovXHJcbiAgcHVibGljIHJldHJpZXZlKGlkOiBzdHJpbmcpOiBPYnNlcnZhYmxlPGFueT4ge1xyXG4gICAgY29uc3QgdXJsID0gYCR7dGhpcy5iYXNlVXJpfS8ke2lkfWA7XHJcbiAgICByZXR1cm4gdGhpcy5yZXF1ZXN0KHVybCwgR0VUKTtcclxuICB9XHJcbiAgLyoqXHJcbiAgICog5YiG6aG15p+l6K+i5ZCE5LuO6KGo5pWw5o2uXHJcbiAgICogQHBhcmFtIGlkIOS4u+ihqGlkXHJcbiAgICogQHBhcmFtIG9wdGlvbnMg6YCJ6aG5XHJcbiAgICovXHJcbiAgcHVibGljIHNlcnZpY2VSZXRyaWV2ZShpZDogc3RyaW5nLCByZXRyaWV2ZVBhcmFtOiBhbnksIHJlcXVlc3RJbmZvOiBSZXF1ZXN0SW5mbyk6IE9ic2VydmFibGU8YW55PiB7XHJcbiAgICBjb25zdCB1cmwgPSBgJHt0aGlzLmJhc2VVcml9L3NlcnZpY2UvcmV0cmlldmUvJHtpZH1gO1xyXG4gICAgY29uc3Qgb3B0aW9ucyA9IHtcclxuICAgICAgYm9keTogeyByZXRyaWV2ZVBhcmFtLCByZXF1ZXN0SW5mbyB9XHJcbiAgICB9O1xyXG4gICAgcmV0dXJuIHRoaXMucmVxdWVzdCh1cmwsIFBVVCwgbnVsbCwgb3B0aW9ucyk7XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIOWIhumhteafpeivouS7juihqC/ku47ku47ooajmlbDmja5cclxuICAgKiBAcGFyYW0gcGFyYW1zIOWPguaVsFxyXG4gICAqL1xyXG4gIHB1YmxpYyBxdWVyeUNoaWxkKHBhcmFtczogYW55KSB7XHJcbiAgICBjb25zdCB1cmwgPSBgJHt0aGlzLmJhc2VVcml9L3NlcnZpY2UvcXVlcnljaGlsZGA7XHJcbiAgICBjb25zdCBvcHRpb25zID0geyBib2R5OiBwYXJhbXMgfTtcclxuICAgIHJldHVybiB0aGlzLnJlcXVlc3QodXJsLCBQVVQsIG51bGwsIG9wdGlvbnMpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICog5qOA57Si5pWw5o2u77yI5omp5bGV77yJXHJcbiAgICovXHJcbiAgcHVibGljIGV4dGVuZFJldHJpZXZlKGlkOiBzdHJpbmcsIHJlcXVlc3RJbmZvOiBSZXF1ZXN0SW5mbyk6IE9ic2VydmFibGU8UmVzcG9uc2VJbmZvPiB7XHJcbiAgICBjb25zdCB1cmwgPSBgJHt0aGlzLmJhc2VVcml9L2V4dGVuc2lvbi9yZXRyaWV2ZS8ke2lkfWA7XHJcbiAgICBjb25zdCBib2R5ID0gcmVxdWVzdEluZm87XHJcbiAgICBjb25zdCBvcHRpb25zID0gdGhpcy5hZGRCb2R5VG9PcHRpb25zKHt9LCBib2R5KTtcclxuICAgIHJldHVybiB0aGlzLnJlcXVlc3QodXJsLCBQVVQsIG51bGwsIG9wdGlvbnMpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICog5qOA57Si5pWw5o2uXHJcbiAgICovXHJcbiAgcHVibGljIGVkaXQoaWQ6IHN0cmluZywgcmVxdWVzdEluZm86IFJlcXVlc3RJbmZvKTogT2JzZXJ2YWJsZTxSZXNwb25zZUluZm8+IHtcclxuICAgIGNvbnN0IHVybCA9IGAke3RoaXMuYmFzZVVyaX0vc2VydmljZS9lZGl0LyR7aWR9YDtcclxuICAgIGNvbnN0IGJvZHkgPSByZXF1ZXN0SW5mbztcclxuICAgIGNvbnN0IG9wdGlvbnMgPSB0aGlzLmFkZEJvZHlUb09wdGlvbnMoe30sIGJvZHkpO1xyXG4gICAgcmV0dXJuIHRoaXMucmVxdWVzdCh1cmwsIFBVVCwgbnVsbCwgb3B0aW9ucyk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiDliJvlu7rkuIDmnaHmlbDmja5cclxuICAgKi9cclxuICBwdWJsaWMgY3JlYXRlKGRlZmF1bHRWYWx1ZT86IGFueSwgcmVxdWVzdEluZm8/OiBSZXF1ZXN0SW5mbyk6IE9ic2VydmFibGU8YW55PiB7XHJcbiAgICBjb25zdCBib2R5ID0ge1xyXG4gICAgICBkZWZhdWx0VmFsdWUsXHJcbiAgICAgIHJlcXVlc3RJbmZvOiByZXF1ZXN0SW5mbyxcclxuICAgIH07XHJcbiAgICBjb25zdCBvcHRpb25zID0gdGhpcy5hZGRCb2R5VG9PcHRpb25zKHt9LCBib2R5KTtcclxuICAgIHJldHVybiB0aGlzLnJlcXVlc3QodGhpcy5iYXNlVXJpLCBQT1NULCBudWxsLCBvcHRpb25zKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIOS7juihqOaWsOWinlxyXG4gICAqIEBwYXRoIOaWsOWinui3r+W+hO+8iOS7juihqOW9ouWmgu+8mi8xL2VkdXPvvIzku47ku47ooajlvaLlpoLvvJovMS9lZHVzLzExL2dyYWRlc++8iVxyXG4gICAqL1xyXG4gIHB1YmxpYyBjcmVhdGVCeVBhdGgoZnBhdGg6IHN0cmluZywgcmVxdWVzdEluZm8/OiBSZXF1ZXN0SW5mbyk6IE9ic2VydmFibGU8YW55PiB7XHJcbiAgICBjb25zdCBwYXRoVXJsID0gQmVmRGF0YVBhdGhVdGlsLmNvbnZlcnRQYXRoVG9VcmwoZnBhdGgpO1xyXG4gICAgY29uc3QgdXJsID0gYCR7dGhpcy5iYXNlVXJpfSR7cGF0aFVybH1gO1xyXG5cclxuICAgIGNvbnN0IGJvZHkgPSByZXF1ZXN0SW5mbztcclxuICAgIGNvbnN0IG9wdGlvbnMgPSB0aGlzLmFkZEJvZHlUb09wdGlvbnMoe30sIGJvZHkpO1xyXG4gICAgcmV0dXJuIHRoaXMucmVxdWVzdCh1cmwsIFBPU1QsIG51bGwsIG9wdGlvbnMpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICog5o+Q5Lqk5Y+Y5pu0XHJcbiAgICovXHJcbiAgdXBkYXRlKGNoYW5nZURldGFpbDogQ2hhbmdlRGV0YWlsLCByZXF1ZXN0SW5mbz86IFJlcXVlc3RJbmZvKTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuICAgIGNvbnN0IGJvZHkgPSB7XHJcbiAgICAgIGNoYW5nZURldGFpbCxcclxuICAgICAgcmVxdWVzdEluZm86IHJlcXVlc3RJbmZvLFxyXG4gICAgfTtcclxuICAgIGNvbnN0IG9wdGlvbnMgPSB0aGlzLmFkZEJvZHlUb09wdGlvbnMoe30sIGJvZHkpO1xyXG5cclxuICAgIHJldHVybiB0aGlzLnJlcXVlc3QodGhpcy5iYXNlVXJpLCBQQVRDSCwgbnVsbCwgb3B0aW9ucyk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiDmiafooYzkv53lrZhcclxuICAgKi9cclxuICBwdWJsaWMgc2F2ZShyZXF1ZXN0SW5mbz86IFJlcXVlc3RJbmZvKTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuICAgIGNvbnN0IGJvZHkgPSByZXF1ZXN0SW5mbztcclxuICAgIGNvbnN0IG9wdGlvbnMgPSB0aGlzLmFkZEJvZHlUb09wdGlvbnMoe30sIGJvZHkpO1xyXG4gICAgcmV0dXJuIHRoaXMucmVxdWVzdCh0aGlzLmJhc2VVcmksIFBVVCwgbnVsbCwgb3B0aW9ucyk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiDliKDpmaRcclxuICAgKi9cclxuICBwdWJsaWMgZGVsZXRlKGlkOiBzdHJpbmcpOiBPYnNlcnZhYmxlPGFueT4ge1xyXG4gICAgY29uc3QgdXJsID0gYCR7dGhpcy5iYXNlVXJpfS8ke2lkfWA7XHJcbiAgICByZXR1cm4gdGhpcy5yZXF1ZXN0KHVybCwgREVMRVRFKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIOWIoOmZpOW5tuS/neWtmFxyXG4gICAqL1xyXG4gIHB1YmxpYyBkZWxldGVBbmRTYXZlKGlkOiBhbnksIHJlcXVlc3RJbmZvOiBSZXF1ZXN0SW5mbyk6IE9ic2VydmFibGU8UmVzcG9uc2VJbmZvPiB7XHJcbiAgICBjb25zdCB1cmwgPSBgJHt0aGlzLmJhc2VVcml9L3NlcnZpY2UvZGVsZXRlLyR7aWR9YDtcclxuICAgIGNvbnN0IGJvZHkgPSByZXF1ZXN0SW5mbztcclxuICAgIGNvbnN0IG9wdGlvbnMgPSB0aGlzLmFkZEJvZHlUb09wdGlvbnMoe30sIGJvZHkpO1xyXG4gICAgcmV0dXJuIHRoaXMucmVxdWVzdCh1cmwsIFBVVCwgbnVsbCwgb3B0aW9ucyk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiDliKDpmaTvvIjmianlsZXvvIlcclxuICAgKi9cclxuICBwdWJsaWMgZXh0ZW5kRGVsZXRlKGlkOiBzdHJpbmcsIHJlcXVlc3RJbmZvOiBSZXF1ZXN0SW5mbyk6IE9ic2VydmFibGU8UmVzcG9uc2VJbmZvPiB7XHJcbiAgICBjb25zdCB1cmwgPSBgJHt0aGlzLmJhc2VVcml9L2V4dGVuc2lvbi9kZWxldGUvJHtpZH1gO1xyXG4gICAgY29uc3QgYm9keSA9IHJlcXVlc3RJbmZvO1xyXG4gICAgY29uc3Qgb3B0aW9ucyA9IHRoaXMuYWRkQm9keVRvT3B0aW9ucyh7fSwgYm9keSk7XHJcbiAgICByZXR1cm4gdGhpcy5yZXF1ZXN0KHVybCwgUFVULCBudWxsLCBvcHRpb25zKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIOWIoOmZpOWQjuS7o1xyXG4gICAqIEBwYXJhbSBmcGF0aCDniLbot6/lvoTvvIjku47ooajlvaLlpoLvvJovMS9lZHVz77yM5LuO5LuO6KGo5b2i5aaC77yaLzEvZWR1cy8xMS9ncmFkZXPvvIlcclxuICAgKi9cclxuICBwdWJsaWMgZGVsZXRCeVBhdGgoZnBhdGg6IHN0cmluZywgaWQ6IHN0cmluZyk6IE9ic2VydmFibGU8YW55PiB7XHJcbiAgICBjb25zdCBwYXRoVXJsID0gQmVmRGF0YVBhdGhVdGlsLmNvbnZlcnRQYXRoVG9VcmwoZnBhdGgpO1xyXG4gICAgY29uc3QgdXJsID0gYCR7dGhpcy5iYXNlVXJpfSR7cGF0aFVybH0vJHtpZH1gO1xyXG4gICAgcmV0dXJuIHRoaXMucmVxdWVzdCh1cmwsIERFTEVURSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiDliKDpmaTlkI7ku6PvvIjmianlsZXvvIlcclxuICAgKiBAcGFyYW0gZnBhdGgg54i26Lev5b6E77yI5LuO6KGo5b2i5aaC77yaLzEvZWR1c++8jOS7juS7juihqOW9ouWmgu+8mi8xL2VkdXMvMTEvZ3JhZGVz77yJXHJcbiAgICovXHJcbiAgcHVibGljIGV4dGVuZERlbGV0QnlQYXRoKGZwYXRoOiBzdHJpbmcsIGlkOiBzdHJpbmcsIHJlcXVlc3RJbmZvOiBSZXF1ZXN0SW5mbyk6IE9ic2VydmFibGU8UmVzcG9uc2VJbmZvPiB7XHJcbiAgICBjb25zdCBwYXRoVXJsID0gQmVmRGF0YVBhdGhVdGlsLmNvbnZlcnRQYXRoVG9VcmwoZnBhdGgpO1xyXG4gICAgY29uc3QgdXJsID0gYCR7dGhpcy5iYXNlVXJpfS9leHRlbnNpb24ke3BhdGhVcmx9LyR7aWR9YDtcclxuICAgIGNvbnN0IGJvZHkgPSByZXF1ZXN0SW5mbztcclxuICAgIGNvbnN0IG9wdGlvbnMgPSB0aGlzLmFkZEJvZHlUb09wdGlvbnMoe30sIGJvZHkpO1xyXG4gICAgcmV0dXJuIHRoaXMucmVxdWVzdCh1cmwsIFBVVCwgbnVsbCwgb3B0aW9ucyk7XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIOaJuemHj+WIoOmZpOWQjuS7o1xyXG4gICAqIEBwYXJhbSBmUGF0aCAnZXh0ZW5zaW9uL3tyb290SWR9L2NjL2JhdGNoJ1xyXG4gICAqIEBwYXJhbSAgaWRzIOWtkOmbhmlkXHJcbiAgICogQHBhcmFtICByZXF1ZXN0SW5mbyDor7fmsYLkv6Hmga9cclxuICAgKi9cclxuICBwdWJsaWMgYmF0Y2hEZWxldGVCeVBhdGgoZlBhdGg6IHN0cmluZywgaWRzOiBzdHJpbmcsIHJlcXVlc3RJbmZvOiBSZXF1ZXN0SW5mbyk6IE9ic2VydmFibGU8UmVzcG9uc2VJbmZvPiB7XHJcbiAgICBjb25zdCBwYXRoVXJsID0gQmVmRGF0YVBhdGhVdGlsLmNvbnZlcnRQYXRoVG9VcmwoZlBhdGgpO1xyXG4gICAgY29uc3QgcGF0aEFycmF5ID0gcGF0aFVybC5zcGxpdCgnLycpO1xyXG4gICAgaWYgKHBhdGhBcnJheS5sZW5ndGggPCAzKSB7XHJcbiAgICAgIHRocm93IEVycm9yKGDmoLnmja5wYXRo5Yig6Zmk5a6e5L2T5pWw5o2u5Ye66ZSZ5LqG44CC5Lyg5YWl55qEcGF0aFske2ZQYXRofV3moLzlvI/kuI3lr7lgKTtcclxuICAgIH1cclxuICAgIC8qICAgY29uc3Qgcm9vdElkID0gcGF0aEFycmF5WzFdO1xyXG5cclxuICAgIGNvbnN0IG5hbWVBcnJheSA9IFtdO1xyXG4gICAgcGF0aEFycmF5LmZvckVhY2goKG5hbWUsIGluZGV4KSA9PiB7XHJcbiAgICAgIGlmIChpbmRleCA+IDEgKSB7XHJcbiAgICAgICAgaWYgKG5hbWUuaW5kZXhPZigncycpICE9PSAtMSkge1xyXG4gICAgICAgICAgbmFtZUFycmF5LnB1c2gobmFtZS5zdWJzdHIoMCwgbmFtZS5sZW5ndGggLSAxKSk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIG5hbWVBcnJheS5wdXNoKG5hbWUpO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgICBjb25zdCBjaGlsZE5hbWUgPSBuYW1lQXJyYXkuam9pbignLycpOyovXHJcbiAgICBjb25zdCB1cmwgPSBgJHt0aGlzLmJhc2VVcml9L2V4dGVuc2lvbiR7cGF0aFVybH0vYmF0Y2hgO1xyXG4gICAgY29uc3QgaWRzQXJyYXkgPSBpZHMuc3BsaXQoJywnKTtcclxuICAgIGNvbnN0IGJvZHkgPSB7XHJcbiAgICAgIGlkczogaWRzQXJyYXksXHJcbiAgICAgIHJlcXVlc3RJbmZvOiByZXF1ZXN0SW5mb1xyXG4gICAgfTtcclxuICAgIGNvbnN0IG9wdGlvbnMgPSB0aGlzLmFkZEJvZHlUb09wdGlvbnMoe30sIGJvZHkpO1xyXG4gICAgcmV0dXJuIHRoaXMucmVxdWVzdCh1cmwsIFBVVCwgbnVsbCwgb3B0aW9ucyk7XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIOaJuemHj+WIoOmZpFxyXG4gICAqIEBwYXJhbSBpZHMg5b6F5Yig6Zmk55qEaWTmlbDnu4RcclxuICAgKi9cclxuICBwdWJsaWMgYmF0Y2hEZWxldGUoaWRzOiBzdHJpbmdbXSk6IE9ic2VydmFibGU8YW55PiB7XHJcbiAgICBjb25zdCBwYXJhbXMgPSB7XHJcbiAgICAgIGlkczogaWRzLmpvaW4oJywnKVxyXG4gICAgfTtcclxuICAgIHJldHVybiB0aGlzLnJlcXVlc3QodGhpcy5iYXNlVXJpLCBERUxFVEUsIHBhcmFtcyk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiDmibnph4/liKDpmaTvvIjmianlsZXvvIlcclxuICAgKi9cclxuICBwdWJsaWMgZXh0ZW5kQmF0Y2hEZWxldGUoaWRzOiBzdHJpbmdbXSwgcmVxdWVzdEluZm86IFJlcXVlc3RJbmZvKTogT2JzZXJ2YWJsZTxSZXNwb25zZUluZm8+IHtcclxuICAgIGNvbnN0IHVybCA9IGAke3RoaXMuYmFzZVVyaX0vZXh0ZW5zaW9uL2JhdGNoZGVsZXRlYDtcclxuICAgIGNvbnN0IHBhcmFtcyA9IHtcclxuICAgICAgaWRzOiBpZHMuam9pbignLCcpXHJcbiAgICB9O1xyXG5cclxuICAgIGNvbnN0IGJvZHkgPSByZXF1ZXN0SW5mbztcclxuICAgIGNvbnN0IG9wdGlvbnMgPSB0aGlzLmFkZEJvZHlUb09wdGlvbnMoe30sIGJvZHkpO1xyXG4gICAgcmV0dXJuIHRoaXMucmVxdWVzdCh1cmwsIFBVVCwgcGFyYW1zLCBvcHRpb25zKTtcclxuICB9XHJcblxyXG5cclxuICAvKipcclxuICAgKiDlj5bmtohcclxuICAgKi9cclxuICBwdWJsaWMgY2FuY2VsKGNvbnRleHQ/OiBhbnkpOiBPYnNlcnZhYmxlPGFueT4ge1xyXG4gICAgY29uc3QgdXJsID0gYCR7dGhpcy5iYXNlVXJpfS9zZXJ2aWNlL2NhbmNlbGA7XHJcbiAgICByZXR1cm4gdGhpcy5yZXF1ZXN0KHVybCwgUE9TVCwgbnVsbCwgbnVsbCwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgY29udGV4dCk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiDmibnph4/mlrDlop7ku47ooagv5LuO5LuO6KGo5pWw5o2uXHJcbiAgICogQHBhcmFtIHBhdGgg5a6e5L2T57uR5a6a6Lev5b6E77yMbGlrZSAxL2NoaWxkcyBvciAxL2NoaWxkcy8xMS9jaGlsZGNoaWxkc1xyXG4gICAqIEBwYXJhbSBkZWZhdWx0VmFsdWVzIOm7mOiupOWunuS9k+aVsOaNruaVsOe7hFxyXG4gICAqL1xyXG4gIHB1YmxpYyBiYXRjaEFwcGVuZEJ5UGF0aChwYXRoOiBzdHJpbmcsIGRlZmF1bHRWYWx1ZXM6IEFycmF5PGFueT4sIHJlcXVlc3RJbmZvOiBSZXF1ZXN0SW5mbyk6IE9ic2VydmFibGU8YW55PiB7XHJcbiAgICBjb25zdCBwYXRoVXJsID0gQmVmRGF0YVBhdGhVdGlsLmNvbnZlcnRQYXRoVG9VcmwocGF0aCk7XHJcbiAgICBjb25zdCB1cmwgPSBgJHt0aGlzLmJhc2VVcml9JHtwYXRoVXJsfS9iYXRjaGA7XHJcbiAgICBjb25zdCBib2R5ID0ge1xyXG4gICAgICByZXF1ZXN0SW5mbyxcclxuICAgICAgcmV0cmlldmVEZWZhdWx0UGFyYW06e1xyXG4gICAgICAgIGRlZmF1bHRWYWx1ZXNcclxuICAgICAgfVxyXG4gICAgfTtcclxuICAgIGNvbnN0IG9wdGlvbnMgPSB0aGlzLmFkZEJvZHlUb09wdGlvbnMoe30sIGJvZHkpO1xyXG4gICAgcmV0dXJuIHRoaXMucmVxdWVzdCh1cmwsIFBPU1QsIG51bGwsIG9wdGlvbnMpO1xyXG4gIH1cclxuICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6IG1heC1saW5lLWxlbmd0aFxyXG4gIHB1YmxpYyByZXF1ZXN0KFxyXG4gICAgdXJsOiBzdHJpbmcsIG1ldGhvZDogc3RyaW5nLCBwYXJhbXM/OiBhbnksIG9wdGlvbnM/OiBhbnksXHJcbiAgICBzZWxmSGFuZEVycm9yPzogYm9vbGVhbiwgaWdub3JlRXJyb3I/OiBib29sZWFuLCBpZ25vcmVDaGFuZ2VzPzogYm9vbGVhbiwgcnVudGltZUNvbnRleHQ/OiBhbnlcclxuICApOiBPYnNlcnZhYmxlPGFueT4ge1xyXG4gICAgb3B0aW9ucyA9IG9wdGlvbnMgfHwge307XHJcblxyXG4gICAgLy8g5piv5ZCm6Ieq6KGM5aSE55CG6ZSZ6K+vXHJcbiAgICBpZiAodHlwZW9mIChzZWxmSGFuZEVycm9yKSA9PT0gJ3VuZGVmaW5lZCcgfHwgdHlwZW9mIChzZWxmSGFuZEVycm9yKSAhPT0gJ2Jvb2xlYW4nKSB7XHJcbiAgICAgIHNlbGZIYW5kRXJyb3IgPSBmYWxzZTtcclxuICAgIH1cclxuXHJcbiAgICAvLyDmmK/lkKblv73nlaXlvILluLjnu6fnu63miafooYxcclxuICAgIGlmICh0eXBlb2YgKGlnbm9yZUVycm9yKSA9PT0gJ3VuZGVmaW5lZCcgfHwgdHlwZW9mIChpZ25vcmVFcnJvcikgIT09ICdib29sZWFuJykge1xyXG4gICAgICBpZ25vcmVFcnJvciA9IGZhbHNlO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIHBhcmFtc1xyXG4gICAgaWYgKHBhcmFtcykge1xyXG4gICAgICAvLyBjb25zdCBodHRwUGFyYW1zID0gdGhpcy5idWlsZFBhcmFtcyhwYXJhbXMpO1xyXG4gICAgICBvcHRpb25zLnBhcmFtcyA9IHBhcmFtcztcclxuICAgIH1cclxuXHJcbiAgICAvLyDlpITnkIZoZWFkZXJzXHJcbiAgICBvcHRpb25zLmhlYWRlcnMgPSBIdHRwSGVhZGVyVXRpbC5jb252ZXJ0VG9IZWFkZXJzKG9wdGlvbnMuaGVhZGVycyk7XHJcbiAgICAvLyAx44CB5Yik5pat5piv5ZCm5bimcmVxdWVzdEluZm/vvIjkuI3ljLrliIbpppblrZfmr43lpKflsI/lhpnvvIk7XHJcbiAgICAvLyAy44CB5aaC5p6c5Lyg6YCS55qE5pivUmVxdWVzdEluZm/vvIzliJnovazmjaLkuLpyZXF1ZXN0SW5mb++8m1xyXG4gICAgY29uc3QgaGFzUmVxdWVzdEluZm8gPSB0aGlzLmhhc1JlcXVlc3RJbmZvKG9wdGlvbnMpO1xyXG4gICAgaWYgKG9wdGlvbnMgJiYgb3B0aW9ucy5ib2R5ICYmIG9wdGlvbnMuYm9keS5oYXNPd25Qcm9wZXJ0eSgnUmVxdWVzdEluZm8nKSkge1xyXG4gICAgICBvcHRpb25zLmJvZHkucmVxdWVzdEluZm8gPSBvcHRpb25zLmJvZHkuUmVxdWVzdEluZm87XHJcbiAgICAgIGRlbGV0ZSBvcHRpb25zLmJvZHkuUmVxdWVzdEluZm87XHJcbiAgICB9XHJcbiAgICByZXR1cm4gdGhpcy5wcm94eUV4dGVuZC5leHRlbmRIZWFkZXJzKG9wdGlvbnMuaGVhZGVycywgcnVudGltZUNvbnRleHQpLnBpcGUoXHJcbiAgICAgIHN3aXRjaE1hcChoZWFkZXJzID0+IHtcclxuICAgICAgICBvcHRpb25zLmhlYWRlcnMgPSBIdHRwSGVhZGVyVXRpbC50b0pzb24oaGVhZGVycyk7XHJcbiAgICAgICAgb3B0aW9ucy5vYnNlcnZlID0gJ3Jlc3BvbnNlJztcclxuICAgICAgICByZXR1cm4gdGhpcy5odHRwU2VydmljZS5yZXF1ZXN0KG1ldGhvZCwgdXJsLCBvcHRpb25zKTtcclxuICAgICAgfSksXHJcbiAgICAgIHRhcCgocmVzcG9uc2U6IGFueSkgPT4gdGhpcy5wcm94eUV4dGVuZC5wYXJzZUhlYWRlcnMocmVzcG9uc2UpKSxcclxuICAgICAgbWFwKChyZXN1bHQ6IGFueSkgPT4gcmVzdWx0LmJvZHkpLFxyXG4gICAgICBtYXAoKHJlc3VsdDogYW55KSA9PiB7XHJcbiAgICAgICAgaWYgKGhhc1JlcXVlc3RJbmZvKSB7XHJcbiAgICAgICAgICB0aGlzLnByb3h5RXh0ZW5kLm9uUmVzcG9uc2UocmVzdWx0LCBpZ25vcmVDaGFuZ2VzKTtcclxuICAgICAgICAgIHJldHVybiByZXN1bHQ7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuXHJcbiAgICAgICAgICAvLyBib2R56YeM5rKh5pyJcmVxdWVzdEluZm/nmoTmg4XlhrXvvIzmqKHmi5/ogIHnmoTlpITnkIbmlrnlvI/vvIjkuI3muIXnkIblj5jmm7TjgIHlsIZyZXR1cm5WYWx1Zeino+aekOWHuuadpe+8iVxyXG4gICAgICAgICAgcmV0dXJuIHRoaXMudW5XcmFwUmVzcG9uc2VJbmZvKHJlc3VsdCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KSxcclxuICAgICAgY2F0Y2hFcnJvcihlcnJvciA9PiB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMucHJveHlFeHRlbmQub25FcnJvcihlcnJvciwgc2VsZkhhbmRFcnJvciwgaWdub3JlRXJyb3IpO1xyXG4gICAgICB9KVxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIOiwg+eUqGh0dHBjbGllbnTlj5bmlbBcclxuICAgKiBAcGFyYW0gdXJsIHVybFxyXG4gICAqIEBwYXJhbSBtZXRob2QgbWV0aG9kc1xyXG4gICAqIEBwYXJhbSBvcHRpb25zIG9wdGlvbnNcclxuICAgKi9cclxuICBwcm90ZWN0ZWQgaW52b2tlKHVybDogc3RyaW5nLCBtZXRob2Q6IHN0cmluZywgb3B0aW9uczogYW55KTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuICAgIGlmIChvcHRpb25zLnBhcmFtcykge1xyXG4gICAgICB1cmwgPSB0aGlzLnByb3h5RXh0ZW5kLmV4dGVuZFVybCh1cmwsIG9wdGlvbnMucGFyYW1zKTtcclxuICAgICAgb3B0aW9ucy5wYXJhbXMgPSBudWxsO1xyXG4gICAgfVxyXG4gICAgaWYgKG9wdGlvbnMuYm9keSkge1xyXG4gICAgICBvcHRpb25zLmJvZHkgPSB0aGlzLnByb3h5RXh0ZW5kLmV4dGVuZEJvZHkob3B0aW9ucy5ib2R5KTtcclxuICAgIH1cclxuICAgIG9wdGlvbnMuaGVhZGVycyA9IEh0dHBIZWFkZXJVdGlsLmNvbnZlcnRUb0hlYWRlcnMob3B0aW9ucy5oZWFkZXJzKTtcclxuICAgIGNvbnN0IGhlYWRlcnMkID0gdGhpcy5wcm94eUV4dGVuZC5leHRlbmRIZWFkZXJzKG9wdGlvbnMuaGVhZGVycyk7XHJcbiAgICByZXR1cm4gaGVhZGVycyQucGlwZShcclxuICAgICAgc3dpdGNoTWFwKGhlYWRlcnMgPT4ge1xyXG4gICAgICAgIG9wdGlvbnMuaGVhZGVycyA9IEh0dHBIZWFkZXJVdGlsLnRvSnNvbihoZWFkZXJzKTtcclxuICAgICAgICBvcHRpb25zLm9ic2VydmUgPSAncmVzcG9uc2UnO1xyXG4gICAgICAgIHJldHVybiB0aGlzLmh0dHBTZXJ2aWNlLnJlcXVlc3QobWV0aG9kLCB1cmwsIG9wdGlvbnMpXHJcbiAgICAgICAgICAucGlwZShcclxuICAgICAgICAgICAgdGFwKChyZXNwb25zZTogYW55KSA9PiB0aGlzLnByb3h5RXh0ZW5kLnBhcnNlSGVhZGVycyhyZXNwb25zZSkpLFxyXG4gICAgICAgICAgICBtYXAoKHJlc3VsdDogYW55KSA9PiByZXN1bHQuYm9keSksXHJcbiAgICAgICAgICAgIG1hcCgocmVzdWx0OiBhbnkpID0+IHRoaXMucHJveHlFeHRlbmQub25SZXNwb25zZShyZXN1bHQpKSxcclxuICAgICAgICAgICAgY2F0Y2hFcnJvcihlcnJvciA9PiB0aGlzLnByb3h5RXh0ZW5kLm9uRXJyb3IoZXJyb3IsIGZhbHNlLCBmYWxzZSkpXHJcbiAgICAgICAgICApO1xyXG4gICAgICB9KVxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIOWQkUh0dHBPcHRpb25z5a+56LGh5Lit5re75YqgYm9keVxyXG4gICAqIEBwYXJhbSBvcHRpb25zIOWOn+adpeeahG9wdGlvbnNcclxuICAgKiBAcGFyYW0gYm9keSBib2R55YaF5a65XHJcbiAgICovXHJcbiAgcHJpdmF0ZSBhZGRCb2R5VG9PcHRpb25zKG9wdGlvbnM6IGFueSwgYm9keTogYW55KSB7XHJcbiAgICBvcHRpb25zID0gb3B0aW9ucyB8fCB7fTtcclxuICAgIGNvbnN0IG1lcmdlZE9wdGlvbnMgPSBPYmplY3QuYXNzaWduKG9wdGlvbnMsIHsgYm9keSB9KTtcclxuICAgIHJldHVybiBtZXJnZWRPcHRpb25zO1xyXG4gIH1cclxuICAvKipcclxuICAgKiDmnoTpgKBIdHRwUGFyYW1z5a+56LGhXHJcbiAgICogQHBhcmFtIHBhcmFtcyDor7fmsYLlj4LmlbBcclxuICAgKi9cclxuICBwcml2YXRlIGJ1aWxkUGFyYW1zKHBhcmFtczogb2JqZWN0KTogSHR0cFBhcmFtcyB7XHJcbiAgICByZXR1cm4gSHR0cFBhcmFtVXRpbC5idWlsZFBhcmFtcyhwYXJhbXMpO1xyXG4gIH1cclxuICAvKipcclxuICAgKiDmmK/lkKbluKbmnIlSZXF1ZXN0SW5mb1xyXG4gICAqL1xyXG4gIHByaXZhdGUgaGFzUmVxdWVzdEluZm8ob3B0aW9uczogYW55KTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gUmVxdWVzdEluZm9VdGlsLmhhc1JlcXVlc3RJbmZvKG9wdGlvbnMpIHx8IFJlcXVlc3RJbmZvVXRpbC5oYXNSZXF1ZXN0SW5mb1dpdGhSKG9wdGlvbnMpO1xyXG4gIH1cclxuICAvKipcclxuICAgKiDlpITnkIbov5Tlm57lgLzvvIzlhbzlrrnogIHniYjmnKxcclxuICAgKi9cclxuICBwcml2YXRlIHVuV3JhcFJlc3BvbnNlSW5mbyhyZXN1bHQ6IGFueSkge1xyXG4gICAgcmV0dXJuIFJlc3BvbnNlSW5mb1V0aWwudW5XcmFwUmVzcG9uc2VJbmZvKHJlc3VsdCk7XHJcbiAgfVxyXG59XHJcbiJdfQ==
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmVmX3Byb3h5LmpzIiwic291cmNlUm9vdCI6Im5nOi8vQGZhcnJpcy9iZWYvIiwic291cmNlcyI6WyJsaWIvYmVmX3Byb3h5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUUzQyxPQUFPLEVBQUUsU0FBUyxFQUFFLEdBQUcsRUFBRSxVQUFVLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDakUsT0FBTyxFQUFjLFVBQVUsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQzlELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUUzQyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDdkQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQUUsY0FBYyxFQUFFLGFBQWEsRUFBRSxlQUFlLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDakcsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDOztJQUd2QyxHQUFHLEdBQUcsS0FBSzs7SUFDWCxNQUFNLEdBQUcsUUFBUTs7SUFDakIsR0FBRyxHQUFHLEtBQUs7O0lBQ1gsSUFBSSxHQUFHLE1BQU07O0lBQ2IsS0FBSyxHQUFHLE9BQU87Ozs7OztBQU9yQjtJQVFFLGtCQUFtQixVQUFzQixFQUFTLFVBQXNCO1FBQXJELGVBQVUsR0FBVixVQUFVLENBQVk7UUFBUyxlQUFVLEdBQVYsVUFBVSxDQUFZO1FBQ3RFLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxXQUFXLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBQ3RELENBQUM7SUFDRDs7O09BR0c7Ozs7OztJQUNJLDZCQUFVOzs7OztJQUFqQixVQUFrQixPQUFlO1FBQy9CLElBQUksQ0FBQyxPQUFPLEdBQUcsT0FBTyxDQUFDO0lBQ3pCLENBQUM7SUFD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QXBCVSxVQUFVO2dCQUl0QixVQUFVOztJQSthbkIsZUFBQztDQUFBLEFBL1pELElBK1pDO1NBOVpZLFFBQVE7Ozs7OztJQUNuQiwrQkFBb0M7Ozs7OztJQUlwQywyQkFBMEI7Ozs7O0lBQzFCLCtCQUFpQzs7SUFDckIsOEJBQTZCOztJQUFFLDhCQUE2QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBzd2l0Y2hNYXAsIG1hcCwgY2F0Y2hFcnJvciwgdGFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xyXG5pbXBvcnQgeyBIdHRwUGFyYW1zLCBIdHRwQ2xpZW50IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xyXG5pbXBvcnQgeyBlbmNvZGVVcmwgfSBmcm9tICdAZmFycmlzL2RldmtpdCc7XHJcbmltcG9ydCB7IElQcm94eUV4dGVuZCwgUmVxdWVzdEluZm8sIFJlc3BvbnNlSW5mbywgQ2hhbmdlRGV0YWlsIH0gZnJvbSAnLi90eXBlcyc7XHJcbmltcG9ydCB7IEJlZkRhdGFQYXRoVXRpbCB9IGZyb20gJy4vYmVmX2RhdGFfcGF0aF91dGlsJztcclxuaW1wb3J0IHsgVXJpU2VydmljZSB9IGZyb20gJy4vdXJpX3NlcnZpY2UnO1xyXG5pbXBvcnQgeyBIdHRwSGVhZGVyVXRpbCwgSHR0cFBhcmFtVXRpbCwgUmVxdWVzdEluZm9VdGlsLCBSZXNwb25zZUluZm9VdGlsIH0gZnJvbSAnLi91dGlscy9pbmRleCc7XHJcbmltcG9ydCB7IEh0dHBTZXJ2aWNlIH0gZnJvbSAnLi9odHRwX3NlcnZpY2UnO1xyXG5cclxuXHJcbmNvbnN0IEdFVCA9ICdHRVQnO1xyXG5jb25zdCBERUxFVEUgPSAnREVMRVRFJztcclxuY29uc3QgUFVUID0gJ1BVVCc7XHJcbmNvbnN0IFBPU1QgPSAnUE9TVCc7XHJcbmNvbnN0IFBBVENIID0gJ1BBVENIJztcclxuXHJcbi8qKlxyXG4gKiBCZWbku6PnkIbnsbtcclxuICog5Luj55CG57G755qE6IGM6LSj5piv5aSE55CGaHR0cOivt+axgu+8jOWPkemAgeS4gOS4qmh0dHDor7fmsYLmiYDpnIDnmoTotYTmupDmnInvvJp1cmnvvIxtZXRob2TvvIxoZWFkZXLjgIFib2R544CBcXVlcnkgcGFyYW1ldGVyXHJcbiAqIHVyaSDnlLF1cmlTZXJ2aWNlXHJcbiAqL1xyXG5ASW5qZWN0YWJsZSgpXHJcbmV4cG9ydCBjbGFzcyBCZWZQcm94eSB7XHJcbiAgcHJvdGVjdGVkIHByb3h5RXh0ZW5kOiBJUHJveHlFeHRlbmQ7XHJcbiAgLyoqXHJcbiAgICogcmVzdGZ1bOWfuui3r+W+hFxyXG4gICAqL1xyXG4gIHByb3RlY3RlZCBiYXNlVXJpOiBzdHJpbmc7XHJcbiAgcHJpdmF0ZSBodHRwU2VydmljZTogSHR0cFNlcnZpY2U7XHJcbiAgY29uc3RydWN0b3IocHVibGljIGh0dHBDbGllbnQ6IEh0dHBDbGllbnQsIHB1YmxpYyB1cmlTZXJ2aWNlOiBVcmlTZXJ2aWNlKSB7XHJcbiAgICB0aGlzLmh0dHBTZXJ2aWNlID0gbmV3IEh0dHBTZXJ2aWNlKHRoaXMuaHR0cENsaWVudCk7XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIOiuvue9ruWfuui3r+W+hFxyXG4gICAqIEBwYXJhbSBiYXNlVXJpIOWfuui3r+W+hFxyXG4gICAqL1xyXG4gIHB1YmxpYyBzZXRCYXNlVXJpKGJhc2VVcmk6IHN0cmluZyk6IHZvaWQge1xyXG4gICAgdGhpcy5iYXNlVXJpID0gYmFzZVVyaTtcclxuICB9XHJcbiAgLyoqXHJcbiAgICog6K6+572u562W55Wl5qih5byPXHJcbiAgICogQHBhcmFtIHN0cmF0ZWd5IOetlueVpVxyXG4gICAqL1xyXG4gIHB1YmxpYyBzZXRQcm94eUV4dGVuZChwcm94eUV4dGVuZDogSVByb3h5RXh0ZW5kKSB7XHJcbiAgICB0aGlzLnByb3h5RXh0ZW5kID0gcHJveHlFeHRlbmQ7XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIOafpeivolxyXG4gICAqL1xyXG4gIHB1YmxpYyBxdWVyeShlbnRpdHlGaWx0ZXI/OiBhbnkpOiBPYnNlcnZhYmxlPGFueT4ge1xyXG4gICAgbGV0IHVybCA9IHRoaXMuYmFzZVVyaTtcclxuICAgIGlmIChlbnRpdHlGaWx0ZXIpIHtcclxuICAgICAgY29uc3QgZW50aXR5RmlsdGVySnNvbiA9IEpTT04uc3RyaW5naWZ5KGVudGl0eUZpbHRlcik7XHJcbiAgICAgIHVybCA9IGAke3VybH0/ZW50aXR5RmlsdGVyPSR7ZW50aXR5RmlsdGVySnNvbn1gO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHRoaXMucmVxdWVzdCh1cmwsIEdFVCk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiDmianlsZXmn6Xor6JcclxuICAgKi9cclxuICBwdWJsaWMgZXh0ZW5kUXVlcnkoZW50aXR5RmlsdGVyOiBhbnksIHJlcXVlc3RJbmZvOiBSZXF1ZXN0SW5mbyk6IE9ic2VydmFibGU8UmVzcG9uc2VJbmZvPiB7XHJcbiAgICBsZXQgdXJsID0gYCR7dGhpcy5iYXNlVXJpfS9leHRlbnNpb24vcXVlcnlgO1xyXG4gICAgaWYgKGVudGl0eUZpbHRlcikge1xyXG4gICAgICBsZXQgZW50aXR5RmlsdGVySnNvbiA9IEpTT04uc3RyaW5naWZ5KGVudGl0eUZpbHRlcik7XHJcbiAgICAgIGVudGl0eUZpbHRlckpzb24gPSBlbmNvZGVVcmwoZW50aXR5RmlsdGVySnNvbik7XHJcbiAgICAgIHVybCA9IGAke3VybH0/ZW50aXR5RmlsdGVyPSR7ZW50aXR5RmlsdGVySnNvbn1gO1xyXG4gICAgfVxyXG4gICAgY29uc3QgYm9keSA9IHJlcXVlc3RJbmZvO1xyXG4gICAgY29uc3Qgb3B0aW9ucyA9IHRoaXMuYWRkQm9keVRvT3B0aW9ucyh7fSwgYm9keSk7XHJcbiAgICByZXR1cm4gdGhpcy5yZXF1ZXN0KHVybCwgUFVULCBudWxsLCBvcHRpb25zLCBmYWxzZSk7XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIOafpeivouaVsOaNru+8iOW4pui/h+a7pOadoeS7tu+8iVxyXG4gICAqIEBwYXJhbSBlbnRpdHlGaWx0ZXIg6L+H5ruk44CB5o6S5bqP44CB5YiG6aG15L+h5oGvXHJcbiAgICogQHBhcmFtIHJlcXVlc3RJbmZvIHJlcXVlc3RJbmZvXHJcbiAgICogQGRlc2NyaXB0aW9uIOWSjGV4dGVuZFF1ZXJ55LiA6Ie077yM5LuF5bCG5p+l6K+i5Y+C5pWw5pS+5YiwYm9keeS4rVxyXG4gICAqL1xyXG4gIHB1YmxpYyBmaWx0ZXIoZW50aXR5RmlsdGVyOiBhbnksIHJlcXVlc3RJbmZvOiBSZXF1ZXN0SW5mbyk6IE9ic2VydmFibGU8UmVzcG9uc2VJbmZvPiB7XHJcbiAgICBsZXQgdXJsID0gYCR7dGhpcy5iYXNlVXJpfS9leHRlbnNpb24vZmlsdGVyYDtcclxuICAgIGxldCBib2R5OiBhbnkgPSB7IHJlcXVlc3RJbmZvIH07XHJcbiAgICBpZiAoZW50aXR5RmlsdGVyKSB7XHJcbiAgICAgIGJvZHkgPSB7IGVudGl0eUZpbHRlciwgcmVxdWVzdEluZm8gfTtcclxuICAgIH1cclxuICAgIGNvbnN0IG9wdGlvbnMgPSB0aGlzLmFkZEJvZHlUb09wdGlvbnMoe30sIGJvZHkpO1xyXG4gICAgcmV0dXJuIHRoaXMucmVxdWVzdCh1cmwsIFBPU1QsIG51bGwsIG9wdGlvbnMsIGZhbHNlKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIOajgOe0ouaVsOaNrlxyXG4gICAqIEBwYXJhbSBpZCDljZXmja7lhoXnoIFcclxuICAgKiBAcmV0dXJuIOaVsOaNruWvueixoVxyXG4gICAqL1xyXG4gIHB1YmxpYyByZXRyaWV2ZShpZDogc3RyaW5nKTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuICAgIGNvbnN0IHVybCA9IGAke3RoaXMuYmFzZVVyaX0vJHtpZH1gO1xyXG4gICAgcmV0dXJuIHRoaXMucmVxdWVzdCh1cmwsIEdFVCk7XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIOWIhumhteafpeivouWQhOS7juihqOaVsOaNrlxyXG4gICAqIEBwYXJhbSBpZCDkuLvooahpZFxyXG4gICAqIEBwYXJhbSBvcHRpb25zIOmAiemhuVxyXG4gICAqL1xyXG4gIHB1YmxpYyBzZXJ2aWNlUmV0cmlldmUoaWQ6IHN0cmluZywgcmV0cmlldmVQYXJhbTogYW55LCByZXF1ZXN0SW5mbzogUmVxdWVzdEluZm8pOiBPYnNlcnZhYmxlPGFueT4ge1xyXG4gICAgY29uc3QgdXJsID0gYCR7dGhpcy5iYXNlVXJpfS9zZXJ2aWNlL3JldHJpZXZlLyR7aWR9YDtcclxuICAgIGNvbnN0IG9wdGlvbnMgPSB7XHJcbiAgICAgIGJvZHk6IHsgcmV0cmlldmVQYXJhbSwgcmVxdWVzdEluZm8gfVxyXG4gICAgfTtcclxuICAgIHJldHVybiB0aGlzLnJlcXVlc3QodXJsLCBQVVQsIG51bGwsIG9wdGlvbnMpO1xyXG4gIH1cclxuICAvKipcclxuICAgKiDliIbpobXmn6Xor6Lku47ooagv5LuO5LuO6KGo5pWw5o2uXHJcbiAgICogQHBhcmFtIHBhcmFtcyDlj4LmlbBcclxuICAgKi9cclxuICBwdWJsaWMgcXVlcnlDaGlsZChwYXJhbXM6IGFueSkge1xyXG4gICAgY29uc3QgdXJsID0gYCR7dGhpcy5iYXNlVXJpfS9zZXJ2aWNlL3F1ZXJ5Y2hpbGRgO1xyXG4gICAgY29uc3Qgb3B0aW9ucyA9IHsgYm9keTogcGFyYW1zIH07XHJcbiAgICByZXR1cm4gdGhpcy5yZXF1ZXN0KHVybCwgUFVULCBudWxsLCBvcHRpb25zKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIOajgOe0ouaVsOaNru+8iOaJqeWxle+8iVxyXG4gICAqL1xyXG4gIHB1YmxpYyBleHRlbmRSZXRyaWV2ZShpZDogc3RyaW5nLCByZXF1ZXN0SW5mbzogUmVxdWVzdEluZm8pOiBPYnNlcnZhYmxlPFJlc3BvbnNlSW5mbz4ge1xyXG4gICAgY29uc3QgdXJsID0gYCR7dGhpcy5iYXNlVXJpfS9leHRlbnNpb24vcmV0cmlldmUvJHtpZH1gO1xyXG4gICAgY29uc3QgYm9keSA9IHJlcXVlc3RJbmZvO1xyXG4gICAgY29uc3Qgb3B0aW9ucyA9IHRoaXMuYWRkQm9keVRvT3B0aW9ucyh7fSwgYm9keSk7XHJcbiAgICByZXR1cm4gdGhpcy5yZXF1ZXN0KHVybCwgUFVULCBudWxsLCBvcHRpb25zKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIOajgOe0ouaVsOaNrlxyXG4gICAqL1xyXG4gIHB1YmxpYyBlZGl0KGlkOiBzdHJpbmcsIHJlcXVlc3RJbmZvOiBSZXF1ZXN0SW5mbyk6IE9ic2VydmFibGU8UmVzcG9uc2VJbmZvPiB7XHJcbiAgICBjb25zdCB1cmwgPSBgJHt0aGlzLmJhc2VVcml9L3NlcnZpY2UvZWRpdC8ke2lkfWA7XHJcbiAgICBjb25zdCBib2R5ID0gcmVxdWVzdEluZm87XHJcbiAgICBjb25zdCBvcHRpb25zID0gdGhpcy5hZGRCb2R5VG9PcHRpb25zKHt9LCBib2R5KTtcclxuICAgIHJldHVybiB0aGlzLnJlcXVlc3QodXJsLCBQVVQsIG51bGwsIG9wdGlvbnMpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICog5Yib5bu65LiA5p2h5pWw5o2uXHJcbiAgICovXHJcbiAgcHVibGljIGNyZWF0ZShkZWZhdWx0VmFsdWU/OiBhbnksIHJlcXVlc3RJbmZvPzogUmVxdWVzdEluZm8pOiBPYnNlcnZhYmxlPGFueT4ge1xyXG4gICAgY29uc3QgYm9keSA9IHtcclxuICAgICAgZGVmYXVsdFZhbHVlLFxyXG4gICAgICByZXF1ZXN0SW5mbzogcmVxdWVzdEluZm8sXHJcbiAgICB9O1xyXG4gICAgY29uc3Qgb3B0aW9ucyA9IHRoaXMuYWRkQm9keVRvT3B0aW9ucyh7fSwgYm9keSk7XHJcbiAgICByZXR1cm4gdGhpcy5yZXF1ZXN0KHRoaXMuYmFzZVVyaSwgUE9TVCwgbnVsbCwgb3B0aW9ucyk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiDku47ooajmlrDlop5cclxuICAgKiBAcGF0aCDmlrDlop7ot6/lvoTvvIjku47ooajlvaLlpoLvvJovMS9lZHVz77yM5LuO5LuO6KGo5b2i5aaC77yaLzEvZWR1cy8xMS9ncmFkZXPvvIlcclxuICAgKi9cclxuICBwdWJsaWMgY3JlYXRlQnlQYXRoKGZwYXRoOiBzdHJpbmcsIHJlcXVlc3RJbmZvPzogUmVxdWVzdEluZm8pOiBPYnNlcnZhYmxlPGFueT4ge1xyXG4gICAgY29uc3QgcGF0aFVybCA9IEJlZkRhdGFQYXRoVXRpbC5jb252ZXJ0UGF0aFRvVXJsKGZwYXRoKTtcclxuICAgIGNvbnN0IHVybCA9IGAke3RoaXMuYmFzZVVyaX0ke3BhdGhVcmx9YDtcclxuXHJcbiAgICBjb25zdCBib2R5ID0gcmVxdWVzdEluZm87XHJcbiAgICBjb25zdCBvcHRpb25zID0gdGhpcy5hZGRCb2R5VG9PcHRpb25zKHt9LCBib2R5KTtcclxuICAgIHJldHVybiB0aGlzLnJlcXVlc3QodXJsLCBQT1NULCBudWxsLCBvcHRpb25zKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIOaPkOS6pOWPmOabtFxyXG4gICAqL1xyXG4gIHVwZGF0ZShjaGFuZ2VEZXRhaWw6IENoYW5nZURldGFpbCwgcmVxdWVzdEluZm8/OiBSZXF1ZXN0SW5mbyk6IE9ic2VydmFibGU8YW55PiB7XHJcbiAgICBjb25zdCBib2R5ID0ge1xyXG4gICAgICBjaGFuZ2VEZXRhaWwsXHJcbiAgICAgIHJlcXVlc3RJbmZvOiByZXF1ZXN0SW5mbyxcclxuICAgIH07XHJcbiAgICBjb25zdCBvcHRpb25zID0gdGhpcy5hZGRCb2R5VG9PcHRpb25zKHt9LCBib2R5KTtcclxuXHJcbiAgICByZXR1cm4gdGhpcy5yZXF1ZXN0KHRoaXMuYmFzZVVyaSwgUEFUQ0gsIG51bGwsIG9wdGlvbnMpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICog5omn6KGM5L+d5a2YXHJcbiAgICovXHJcbiAgcHVibGljIHNhdmUocmVxdWVzdEluZm8/OiBSZXF1ZXN0SW5mbyk6IE9ic2VydmFibGU8YW55PiB7XHJcbiAgICBjb25zdCBib2R5ID0gcmVxdWVzdEluZm87XHJcbiAgICBjb25zdCBvcHRpb25zID0gdGhpcy5hZGRCb2R5VG9PcHRpb25zKHt9LCBib2R5KTtcclxuICAgIHJldHVybiB0aGlzLnJlcXVlc3QodGhpcy5iYXNlVXJpLCBQVVQsIG51bGwsIG9wdGlvbnMpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICog5Yig6ZmkXHJcbiAgICovXHJcbiAgcHVibGljIGRlbGV0ZShpZDogc3RyaW5nKTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuICAgIGNvbnN0IHVybCA9IGAke3RoaXMuYmFzZVVyaX0vJHtpZH1gO1xyXG4gICAgcmV0dXJuIHRoaXMucmVxdWVzdCh1cmwsIERFTEVURSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiDliKDpmaTlubbkv53lrZhcclxuICAgKi9cclxuICBwdWJsaWMgZGVsZXRlQW5kU2F2ZShpZDogYW55LCByZXF1ZXN0SW5mbzogUmVxdWVzdEluZm8pOiBPYnNlcnZhYmxlPFJlc3BvbnNlSW5mbz4ge1xyXG4gICAgY29uc3QgdXJsID0gYCR7dGhpcy5iYXNlVXJpfS9zZXJ2aWNlL2RlbGV0ZS8ke2lkfWA7XHJcbiAgICBjb25zdCBib2R5ID0gcmVxdWVzdEluZm87XHJcbiAgICBjb25zdCBvcHRpb25zID0gdGhpcy5hZGRCb2R5VG9PcHRpb25zKHt9LCBib2R5KTtcclxuICAgIHJldHVybiB0aGlzLnJlcXVlc3QodXJsLCBQVVQsIG51bGwsIG9wdGlvbnMpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICog5Yig6Zmk77yI5omp5bGV77yJXHJcbiAgICovXHJcbiAgcHVibGljIGV4dGVuZERlbGV0ZShpZDogc3RyaW5nLCByZXF1ZXN0SW5mbzogUmVxdWVzdEluZm8pOiBPYnNlcnZhYmxlPFJlc3BvbnNlSW5mbz4ge1xyXG4gICAgY29uc3QgdXJsID0gYCR7dGhpcy5iYXNlVXJpfS9leHRlbnNpb24vZGVsZXRlLyR7aWR9YDtcclxuICAgIGNvbnN0IGJvZHkgPSByZXF1ZXN0SW5mbztcclxuICAgIGNvbnN0IG9wdGlvbnMgPSB0aGlzLmFkZEJvZHlUb09wdGlvbnMoe30sIGJvZHkpO1xyXG4gICAgcmV0dXJuIHRoaXMucmVxdWVzdCh1cmwsIFBVVCwgbnVsbCwgb3B0aW9ucyk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiDliKDpmaTlkI7ku6NcclxuICAgKiBAcGFyYW0gZnBhdGgg54i26Lev5b6E77yI5LuO6KGo5b2i5aaC77yaLzEvZWR1c++8jOS7juS7juihqOW9ouWmgu+8mi8xL2VkdXMvMTEvZ3JhZGVz77yJXHJcbiAgICovXHJcbiAgcHVibGljIGRlbGV0QnlQYXRoKGZwYXRoOiBzdHJpbmcsIGlkOiBzdHJpbmcpOiBPYnNlcnZhYmxlPGFueT4ge1xyXG4gICAgY29uc3QgcGF0aFVybCA9IEJlZkRhdGFQYXRoVXRpbC5jb252ZXJ0UGF0aFRvVXJsKGZwYXRoKTtcclxuICAgIGNvbnN0IHVybCA9IGAke3RoaXMuYmFzZVVyaX0ke3BhdGhVcmx9LyR7aWR9YDtcclxuICAgIHJldHVybiB0aGlzLnJlcXVlc3QodXJsLCBERUxFVEUpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICog5Yig6Zmk5ZCO5Luj77yI5omp5bGV77yJXHJcbiAgICogQHBhcmFtIGZwYXRoIOeItui3r+W+hO+8iOS7juihqOW9ouWmgu+8mi8xL2VkdXPvvIzku47ku47ooajlvaLlpoLvvJovMS9lZHVzLzExL2dyYWRlc++8iVxyXG4gICAqL1xyXG4gIHB1YmxpYyBleHRlbmREZWxldEJ5UGF0aChmcGF0aDogc3RyaW5nLCBpZDogc3RyaW5nLCByZXF1ZXN0SW5mbzogUmVxdWVzdEluZm8pOiBPYnNlcnZhYmxlPFJlc3BvbnNlSW5mbz4ge1xyXG4gICAgY29uc3QgcGF0aFVybCA9IEJlZkRhdGFQYXRoVXRpbC5jb252ZXJ0UGF0aFRvVXJsKGZwYXRoKTtcclxuICAgIGNvbnN0IHVybCA9IGAke3RoaXMuYmFzZVVyaX0vZXh0ZW5zaW9uJHtwYXRoVXJsfS8ke2lkfWA7XHJcbiAgICBjb25zdCBib2R5ID0gcmVxdWVzdEluZm87XHJcbiAgICBjb25zdCBvcHRpb25zID0gdGhpcy5hZGRCb2R5VG9PcHRpb25zKHt9LCBib2R5KTtcclxuICAgIHJldHVybiB0aGlzLnJlcXVlc3QodXJsLCBQVVQsIG51bGwsIG9wdGlvbnMpO1xyXG4gIH1cclxuICAvKipcclxuICAgKiDmibnph4/liKDpmaTlkI7ku6NcclxuICAgKiBAcGFyYW0gZlBhdGggJ2V4dGVuc2lvbi97cm9vdElkfS9jYy9iYXRjaCdcclxuICAgKiBAcGFyYW0gIGlkcyDlrZDpm4ZpZFxyXG4gICAqIEBwYXJhbSAgcmVxdWVzdEluZm8g6K+35rGC5L+h5oGvXHJcbiAgICovXHJcbiAgcHVibGljIGJhdGNoRGVsZXRlQnlQYXRoKGZQYXRoOiBzdHJpbmcsIGlkczogc3RyaW5nLCByZXF1ZXN0SW5mbzogUmVxdWVzdEluZm8pOiBPYnNlcnZhYmxlPFJlc3BvbnNlSW5mbz4ge1xyXG4gICAgY29uc3QgcGF0aFVybCA9IEJlZkRhdGFQYXRoVXRpbC5jb252ZXJ0UGF0aFRvVXJsKGZQYXRoKTtcclxuICAgIGNvbnN0IHBhdGhBcnJheSA9IHBhdGhVcmwuc3BsaXQoJy8nKTtcclxuICAgIGlmIChwYXRoQXJyYXkubGVuZ3RoIDwgMykge1xyXG4gICAgICB0aHJvdyBFcnJvcihg5qC55o2ucGF0aOWIoOmZpOWunuS9k+aVsOaNruWHuumUmeS6huOAguS8oOWFpeeahHBhdGhbJHtmUGF0aH1d5qC85byP5LiN5a+5YCk7XHJcbiAgICB9XHJcbiAgICAvKiAgIGNvbnN0IHJvb3RJZCA9IHBhdGhBcnJheVsxXTtcclxuXHJcbiAgICBjb25zdCBuYW1lQXJyYXkgPSBbXTtcclxuICAgIHBhdGhBcnJheS5mb3JFYWNoKChuYW1lLCBpbmRleCkgPT4ge1xyXG4gICAgICBpZiAoaW5kZXggPiAxICkge1xyXG4gICAgICAgIGlmIChuYW1lLmluZGV4T2YoJ3MnKSAhPT0gLTEpIHtcclxuICAgICAgICAgIG5hbWVBcnJheS5wdXNoKG5hbWUuc3Vic3RyKDAsIG5hbWUubGVuZ3RoIC0gMSkpO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICBuYW1lQXJyYXkucHVzaChuYW1lKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gICAgY29uc3QgY2hpbGROYW1lID0gbmFtZUFycmF5LmpvaW4oJy8nKTsqL1xyXG4gICAgY29uc3QgdXJsID0gYCR7dGhpcy5iYXNlVXJpfS9leHRlbnNpb24ke3BhdGhVcmx9L2JhdGNoYDtcclxuICAgIGNvbnN0IGlkc0FycmF5ID0gaWRzLnNwbGl0KCcsJyk7XHJcbiAgICBjb25zdCBib2R5ID0ge1xyXG4gICAgICBpZHM6IGlkc0FycmF5LFxyXG4gICAgICByZXF1ZXN0SW5mbzogcmVxdWVzdEluZm9cclxuICAgIH07XHJcbiAgICBjb25zdCBvcHRpb25zID0gdGhpcy5hZGRCb2R5VG9PcHRpb25zKHt9LCBib2R5KTtcclxuICAgIHJldHVybiB0aGlzLnJlcXVlc3QodXJsLCBQVVQsIG51bGwsIG9wdGlvbnMpO1xyXG4gIH1cclxuICAvKipcclxuICAgKiDmibnph4/liKDpmaRcclxuICAgKiBAcGFyYW0gaWRzIOW+heWIoOmZpOeahGlk5pWw57uEXHJcbiAgICovXHJcbiAgcHVibGljIGJhdGNoRGVsZXRlKGlkczogc3RyaW5nW10pOiBPYnNlcnZhYmxlPGFueT4ge1xyXG4gICAgY29uc3QgcGFyYW1zID0ge1xyXG4gICAgICBpZHM6IGlkcy5qb2luKCcsJylcclxuICAgIH07XHJcbiAgICByZXR1cm4gdGhpcy5yZXF1ZXN0KHRoaXMuYmFzZVVyaSwgREVMRVRFLCBwYXJhbXMpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICog5om56YeP5Yig6Zmk77yI5omp5bGV77yJXHJcbiAgICovXHJcbiAgcHVibGljIGV4dGVuZEJhdGNoRGVsZXRlKGlkczogc3RyaW5nW10sIHJlcXVlc3RJbmZvOiBSZXF1ZXN0SW5mbyk6IE9ic2VydmFibGU8UmVzcG9uc2VJbmZvPiB7XHJcbiAgICBjb25zdCB1cmwgPSBgJHt0aGlzLmJhc2VVcml9L2V4dGVuc2lvbi9iYXRjaGRlbGV0ZWA7XHJcbiAgICBjb25zdCBwYXJhbXMgPSB7XHJcbiAgICAgIGlkczogaWRzLmpvaW4oJywnKVxyXG4gICAgfTtcclxuXHJcbiAgICBjb25zdCBib2R5ID0gcmVxdWVzdEluZm87XHJcbiAgICBjb25zdCBvcHRpb25zID0gdGhpcy5hZGRCb2R5VG9PcHRpb25zKHt9LCBib2R5KTtcclxuICAgIHJldHVybiB0aGlzLnJlcXVlc3QodXJsLCBQVVQsIHBhcmFtcywgb3B0aW9ucyk7XHJcbiAgfVxyXG5cclxuXHJcbiAgLyoqXHJcbiAgICog5Y+W5raIXHJcbiAgICovXHJcbiAgcHVibGljIGNhbmNlbChjb250ZXh0PzogYW55KTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuICAgIGNvbnN0IHVybCA9IGAke3RoaXMuYmFzZVVyaX0vc2VydmljZS9jYW5jZWxgO1xyXG4gICAgcmV0dXJuIHRoaXMucmVxdWVzdCh1cmwsIFBPU1QsIG51bGwsIG51bGwsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGNvbnRleHQpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICog5om56YeP5paw5aKe5LuO6KGoL+S7juS7juihqOaVsOaNrlxyXG4gICAqIEBwYXJhbSBwYXRoIOWunuS9k+e7keWumui3r+W+hO+8jGxpa2UgMS9jaGlsZHMgb3IgMS9jaGlsZHMvMTEvY2hpbGRjaGlsZHNcclxuICAgKiBAcGFyYW0gZGVmYXVsdFZhbHVlcyDpu5jorqTlrp7kvZPmlbDmja7mlbDnu4RcclxuICAgKi9cclxuICBwdWJsaWMgYmF0Y2hBcHBlbmRCeVBhdGgocGF0aDogc3RyaW5nLCBkZWZhdWx0VmFsdWVzOiBBcnJheTxhbnk+LCByZXF1ZXN0SW5mbzogUmVxdWVzdEluZm8pOiBPYnNlcnZhYmxlPGFueT4ge1xyXG4gICAgY29uc3QgcGF0aFVybCA9IEJlZkRhdGFQYXRoVXRpbC5jb252ZXJ0UGF0aFRvVXJsKHBhdGgpO1xyXG4gICAgY29uc3QgdXJsID0gYCR7dGhpcy5iYXNlVXJpfSR7cGF0aFVybH0vYmF0Y2hgO1xyXG4gICAgY29uc3QgYm9keSA9IHtcclxuICAgICAgcmVxdWVzdEluZm8sXHJcbiAgICAgIHJldHJpZXZlRGVmYXVsdFBhcmFtOiB7XHJcbiAgICAgICAgZGVmYXVsdFZhbHVlc1xyXG4gICAgICB9XHJcbiAgICB9O1xyXG4gICAgY29uc3Qgb3B0aW9ucyA9IHRoaXMuYWRkQm9keVRvT3B0aW9ucyh7fSwgYm9keSk7XHJcbiAgICByZXR1cm4gdGhpcy5yZXF1ZXN0KHVybCwgUE9TVCwgbnVsbCwgb3B0aW9ucyk7XHJcbiAgfVxyXG4gIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTogbWF4LWxpbmUtbGVuZ3RoXHJcbiAgcHVibGljIHJlcXVlc3QoXHJcbiAgICB1cmw6IHN0cmluZywgbWV0aG9kOiBzdHJpbmcsIHBhcmFtcz86IGFueSwgb3B0aW9ucz86IGFueSxcclxuICAgIHNlbGZIYW5kRXJyb3I/OiBib29sZWFuLCBpZ25vcmVFcnJvcj86IGJvb2xlYW4sIGlnbm9yZUNoYW5nZXM/OiBib29sZWFuLCBydW50aW1lQ29udGV4dD86IGFueVxyXG4gICk6IE9ic2VydmFibGU8YW55PiB7XHJcbiAgICBvcHRpb25zID0gb3B0aW9ucyB8fCB7fTtcclxuXHJcbiAgICAvLyDmmK/lkKboh6rooYzlpITnkIbplJnor69cclxuICAgIGlmICh0eXBlb2YgKHNlbGZIYW5kRXJyb3IpID09PSAndW5kZWZpbmVkJyB8fCB0eXBlb2YgKHNlbGZIYW5kRXJyb3IpICE9PSAnYm9vbGVhbicpIHtcclxuICAgICAgc2VsZkhhbmRFcnJvciA9IGZhbHNlO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIOaYr+WQpuW/veeVpeW8guW4uOe7p+e7reaJp+ihjFxyXG4gICAgaWYgKHR5cGVvZiAoaWdub3JlRXJyb3IpID09PSAndW5kZWZpbmVkJyB8fCB0eXBlb2YgKGlnbm9yZUVycm9yKSAhPT0gJ2Jvb2xlYW4nKSB7XHJcbiAgICAgIGlnbm9yZUVycm9yID0gZmFsc2U7XHJcbiAgICB9XHJcblxyXG4gICAgLy8gcGFyYW1zXHJcbiAgICBpZiAocGFyYW1zKSB7XHJcbiAgICAgIC8vIGNvbnN0IGh0dHBQYXJhbXMgPSB0aGlzLmJ1aWxkUGFyYW1zKHBhcmFtcyk7XHJcbiAgICAgIG9wdGlvbnMucGFyYW1zID0gcGFyYW1zO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIOWkhOeQhmhlYWRlcnNcclxuICAgIG9wdGlvbnMuaGVhZGVycyA9IEh0dHBIZWFkZXJVdGlsLmNvbnZlcnRUb0hlYWRlcnMob3B0aW9ucy5oZWFkZXJzKTtcclxuICAgIC8vIDHjgIHliKTmlq3mmK/lkKbluKZyZXF1ZXN0SW5mb++8iOS4jeWMuuWIhummluWtl+avjeWkp+Wwj+WGme+8iTtcclxuICAgIC8vIDLjgIHlpoLmnpzkvKDpgJLnmoTmmK9SZXF1ZXN0SW5mb++8jOWImei9rOaNouS4unJlcXVlc3RJbmZv77ybXHJcbiAgICBjb25zdCBoYXNSZXF1ZXN0SW5mbyA9IHRoaXMuaGFzUmVxdWVzdEluZm8ob3B0aW9ucyk7XHJcbiAgICBpZiAob3B0aW9ucyAmJiBvcHRpb25zLmJvZHkgJiYgb3B0aW9ucy5ib2R5Lmhhc093blByb3BlcnR5KCdSZXF1ZXN0SW5mbycpKSB7XHJcbiAgICAgIG9wdGlvbnMuYm9keS5yZXF1ZXN0SW5mbyA9IG9wdGlvbnMuYm9keS5SZXF1ZXN0SW5mbztcclxuICAgICAgZGVsZXRlIG9wdGlvbnMuYm9keS5SZXF1ZXN0SW5mbztcclxuICAgIH1cclxuICAgIHJldHVybiB0aGlzLnByb3h5RXh0ZW5kLmV4dGVuZEhlYWRlcnMob3B0aW9ucy5oZWFkZXJzLCBydW50aW1lQ29udGV4dCkucGlwZShcclxuICAgICAgc3dpdGNoTWFwKGhlYWRlcnMgPT4ge1xyXG4gICAgICAgIG9wdGlvbnMuaGVhZGVycyA9IEh0dHBIZWFkZXJVdGlsLnRvSnNvbihoZWFkZXJzKTtcclxuICAgICAgICBvcHRpb25zLm9ic2VydmUgPSAncmVzcG9uc2UnO1xyXG4gICAgICAgIHJldHVybiB0aGlzLmh0dHBTZXJ2aWNlLnJlcXVlc3QobWV0aG9kLCB1cmwsIG9wdGlvbnMpO1xyXG4gICAgICB9KSxcclxuICAgICAgdGFwKChyZXNwb25zZTogYW55KSA9PiB0aGlzLnByb3h5RXh0ZW5kLnBhcnNlSGVhZGVycyhyZXNwb25zZSkpLFxyXG4gICAgICBtYXAoKHJlc3VsdDogYW55KSA9PiByZXN1bHQuYm9keSksXHJcbiAgICAgIG1hcCgocmVzdWx0OiBhbnkpID0+IHtcclxuICAgICAgICBpZiAoaGFzUmVxdWVzdEluZm8pIHtcclxuICAgICAgICAgIHRoaXMucHJveHlFeHRlbmQub25SZXNwb25zZShyZXN1bHQsIGlnbm9yZUNoYW5nZXMpO1xyXG4gICAgICAgICAgcmV0dXJuIHJlc3VsdDtcclxuICAgICAgICB9IGVsc2Uge1xyXG5cclxuICAgICAgICAgIC8vIGJvZHnph4zmsqHmnIlyZXF1ZXN0SW5mb+eahOaDheWGte+8jOaooeaLn+iAgeeahOWkhOeQhuaWueW8j++8iOS4jea4heeQhuWPmOabtOOAgeWwhnJldHVyblZhbHVl6Kej5p6Q5Ye65p2l77yJXHJcbiAgICAgICAgICByZXR1cm4gdGhpcy51bldyYXBSZXNwb25zZUluZm8ocmVzdWx0KTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pLFxyXG4gICAgICBjYXRjaEVycm9yKGVycm9yID0+IHtcclxuICAgICAgICByZXR1cm4gdGhpcy5wcm94eUV4dGVuZC5vbkVycm9yKGVycm9yLCBzZWxmSGFuZEVycm9yLCBpZ25vcmVFcnJvcik7XHJcbiAgICAgIH0pXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICog6LCD55SoaHR0cGNsaWVudOWPluaVsFxyXG4gICAqIEBwYXJhbSB1cmwgdXJsXHJcbiAgICogQHBhcmFtIG1ldGhvZCBtZXRob2RzXHJcbiAgICogQHBhcmFtIG9wdGlvbnMgb3B0aW9uc1xyXG4gICAqL1xyXG4gIHByb3RlY3RlZCBpbnZva2UodXJsOiBzdHJpbmcsIG1ldGhvZDogc3RyaW5nLCBvcHRpb25zOiBhbnkpOiBPYnNlcnZhYmxlPGFueT4ge1xyXG4gICAgaWYgKG9wdGlvbnMucGFyYW1zKSB7XHJcbiAgICAgIHVybCA9IHRoaXMucHJveHlFeHRlbmQuZXh0ZW5kVXJsKHVybCwgb3B0aW9ucy5wYXJhbXMpO1xyXG4gICAgICBvcHRpb25zLnBhcmFtcyA9IG51bGw7XHJcbiAgICB9XHJcbiAgICBpZiAob3B0aW9ucy5ib2R5KSB7XHJcbiAgICAgIG9wdGlvbnMuYm9keSA9IHRoaXMucHJveHlFeHRlbmQuZXh0ZW5kQm9keShvcHRpb25zLmJvZHkpO1xyXG4gICAgfVxyXG4gICAgb3B0aW9ucy5oZWFkZXJzID0gSHR0cEhlYWRlclV0aWwuY29udmVydFRvSGVhZGVycyhvcHRpb25zLmhlYWRlcnMpO1xyXG4gICAgY29uc3QgaGVhZGVycyQgPSB0aGlzLnByb3h5RXh0ZW5kLmV4dGVuZEhlYWRlcnMob3B0aW9ucy5oZWFkZXJzKTtcclxuICAgIHJldHVybiBoZWFkZXJzJC5waXBlKFxyXG4gICAgICBzd2l0Y2hNYXAoaGVhZGVycyA9PiB7XHJcbiAgICAgICAgb3B0aW9ucy5oZWFkZXJzID0gSHR0cEhlYWRlclV0aWwudG9Kc29uKGhlYWRlcnMpO1xyXG4gICAgICAgIG9wdGlvbnMub2JzZXJ2ZSA9ICdyZXNwb25zZSc7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cFNlcnZpY2UucmVxdWVzdChtZXRob2QsIHVybCwgb3B0aW9ucylcclxuICAgICAgICAgIC5waXBlKFxyXG4gICAgICAgICAgICB0YXAoKHJlc3BvbnNlOiBhbnkpID0+IHRoaXMucHJveHlFeHRlbmQucGFyc2VIZWFkZXJzKHJlc3BvbnNlKSksXHJcbiAgICAgICAgICAgIG1hcCgocmVzdWx0OiBhbnkpID0+IHJlc3VsdC5ib2R5KSxcclxuICAgICAgICAgICAgbWFwKChyZXN1bHQ6IGFueSkgPT4gdGhpcy5wcm94eUV4dGVuZC5vblJlc3BvbnNlKHJlc3VsdCkpLFxyXG4gICAgICAgICAgICBjYXRjaEVycm9yKGVycm9yID0+IHRoaXMucHJveHlFeHRlbmQub25FcnJvcihlcnJvciwgZmFsc2UsIGZhbHNlKSlcclxuICAgICAgICAgICk7XHJcbiAgICAgIH0pXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICog5ZCRSHR0cE9wdGlvbnPlr7nosaHkuK3mt7vliqBib2R5XHJcbiAgICogQHBhcmFtIG9wdGlvbnMg5Y6f5p2l55qEb3B0aW9uc1xyXG4gICAqIEBwYXJhbSBib2R5IGJvZHnlhoXlrrlcclxuICAgKi9cclxuICBwcml2YXRlIGFkZEJvZHlUb09wdGlvbnMob3B0aW9uczogYW55LCBib2R5OiBhbnkpIHtcclxuICAgIG9wdGlvbnMgPSBvcHRpb25zIHx8IHt9O1xyXG4gICAgY29uc3QgbWVyZ2VkT3B0aW9ucyA9IE9iamVjdC5hc3NpZ24ob3B0aW9ucywgeyBib2R5IH0pO1xyXG4gICAgcmV0dXJuIG1lcmdlZE9wdGlvbnM7XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIOaehOmAoEh0dHBQYXJhbXPlr7nosaFcclxuICAgKiBAcGFyYW0gcGFyYW1zIOivt+axguWPguaVsFxyXG4gICAqL1xyXG4gIHByaXZhdGUgYnVpbGRQYXJhbXMocGFyYW1zOiBvYmplY3QpOiBIdHRwUGFyYW1zIHtcclxuICAgIHJldHVybiBIdHRwUGFyYW1VdGlsLmJ1aWxkUGFyYW1zKHBhcmFtcyk7XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIOaYr+WQpuW4puaciVJlcXVlc3RJbmZvXHJcbiAgICovXHJcbiAgcHJpdmF0ZSBoYXNSZXF1ZXN0SW5mbyhvcHRpb25zOiBhbnkpOiBib29sZWFuIHtcclxuICAgIHJldHVybiBSZXF1ZXN0SW5mb1V0aWwuaGFzUmVxdWVzdEluZm8ob3B0aW9ucykgfHwgUmVxdWVzdEluZm9VdGlsLmhhc1JlcXVlc3RJbmZvV2l0aFIob3B0aW9ucyk7XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIOWkhOeQhui/lOWbnuWAvO+8jOWFvOWuueiAgeeJiOacrFxyXG4gICAqL1xyXG4gIHByaXZhdGUgdW5XcmFwUmVzcG9uc2VJbmZvKHJlc3VsdDogYW55KSB7XHJcbiAgICByZXR1cm4gUmVzcG9uc2VJbmZvVXRpbC51bldyYXBSZXNwb25zZUluZm8ocmVzdWx0KTtcclxuICB9XHJcbn1cclxuIl19

@@ -724,3 +724,9 @@ /**

}
if (!(error && error.error && error.error.extensionMessage && BackEndMessageUtil.isBackEndMessageHandlerExist(this.repository.getInjector()))) {
/** @type {?} */
var messages = ResponseInfoUtil.parseBackEndError(error);
/** @type {?} */
var bizMessages = BackEndMessageUtil.getFormlessMessages(messages);
/** @type {?} */
var isExistFormlessMessage = bizMessages && bizMessages.length > 0 || false;
if (!(error && error.error && error.error.extensionMessage && BackEndMessageUtil.isBackEndMessageHandlerExist(this.repository.getInjector()) && !isExistFormlessMessage)) {
this.eventBus.post('Exception', '', 'onException', error, formAppContext);

@@ -940,2 +946,2 @@ }

export { BefRestService };
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmVmX3Jlc3Rfc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BmYXJyaXMvYmVmLyIsInNvdXJjZXMiOlsibGliL2JlZl9yZXN0X3NlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7O0FBT0EsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQUUsVUFBVSxFQUEyQixNQUFNLHNCQUFzQixDQUFDO0FBQzNFLE9BQU8sRUFBYyxVQUFVLEVBQUUsRUFBRSxFQUFFLEtBQUssRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUN6RCxPQUFPLEVBQUUsU0FBUyxFQUFFLEdBQUcsRUFBRSxVQUFVLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDakUsT0FBTyxFQUFVLFFBQVEsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ2xELE9BQU8sRUFBRSxjQUFjLEVBQUUsYUFBYSxFQUFFLGVBQWUsRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNqRyxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDakQsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDdEUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFFcEQsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUN2QyxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUNwRCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDN0MsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sK0JBQStCLENBQUM7O0lBRTdELEdBQUcsR0FBRyxLQUFLOztJQUNYLE1BQU0sR0FBRyxRQUFROztJQUNqQixHQUFHLEdBQUcsS0FBSzs7SUFDWCxJ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a0JBQWtCLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDckQsQ0FBQztJQUVEOztPQUVHOzs7Ozs7O0lBQ0ssdUNBQWM7Ozs7OztJQUF0QixVQUF1QixPQUFZO1FBQ2pDLE9BQU8sZUFBZSxDQUFDLG1CQUFtQixDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ3RELENBQUM7SUFDRDs7T0FFRzs7Ozs7OztJQUNLLHlDQUFnQjs7Ozs7O0lBQXhCLFVBQXlCLE9BQVk7UUFDbkMsT0FBTyxlQUFlLENBQUMsY0FBYyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ2pELENBQUM7SUFFRDs7O09BR0c7Ozs7Ozs7SUFDSyxvQ0FBVzs7Ozs7O0lBQW5CLFVBQW9CLE1BQVc7UUFDN0IsT0FBTyxhQUFhLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQzNDLENBQUM7SUFFRDs7O09BR0c7Ozs7Ozs7SUFDSSxpREFBd0I7Ozs7OztJQUEvQixVQUFnQyxJQUFTO1FBQ3ZDLE9BQU8sZUFBZSxDQUFDLHdCQUF3QixDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDekUsQ0FBQztJQUVEOztPQUVHOzs7OztJQUNJLHlDQUFnQjs7OztJQUF2QjtRQUNFLE9BQU8sZUFBZSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUMzRCxDQUFDOztnQkFsYkYsVUFBVTs7OztnQkF6QkYsVUFBVTs7Z0JBTVYsdUJBQXVCO2dCQUR2QixhQUFhO2dCQUZMLFFBQVE7O0lBNGN6QixxQkFBQztDQUFBLEFBdGJELElBc2JDOzs7Ozs7SUFuYkMsb0NBQTBDOzs7Ozs7SUFLMUMsb0NBQStCOzs7OztJQUMvQixxQ0FBaUM7Ozs7O0lBS2pDLHdDQUF5Qzs7Ozs7SUFLekMsaUNBQXVCOzs7OztJQUt2QixrQ0FBMEI7O0FBZ2E1QixPQUFPLEVBQUUsY0FBYyxFQUFFLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxyXG4gKiBAQXV0aG9yOiBXaXR0XHJcbiAqIEBEYXRlOiAyMDE5LTAyLTIzIDEzOjU3OjQ3XHJcbiAqIEBMYXN0IE1vZGlmaWVkIGJ5OiBhYWxpenp3ZWxsXHJcbiAqIEBMYXN0IE1vZGlmaWVkIHRpbWU6IDIwMTktMDktMjQgMTQ6MTA6NDBcclxuICovXHJcblxyXG5pbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEh0dHBDbGllbnQsIEh0dHBIZWFkZXJzLCBIdHRwUGFyYW1zIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xyXG5pbXBvcnQgeyBPYnNlcnZhYmxlLCB0aHJvd0Vycm9yLCBvZiwgRU1QVFkgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgc3dpdGNoTWFwLCBtYXAsIGNhdGNoRXJyb3IsIHRhcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuaW1wb3J0IHsgRW50aXR5LCBFdmVudEJ1cyB9IGZyb20gJ0BmYXJyaXMvZGV2a2l0JztcclxuaW1wb3J0IHsgSHR0cEhlYWRlclV0aWwsIEh0dHBQYXJhbVV0aWwsIFJlcXVlc3RJbmZvVXRpbCwgUmVzcG9uc2VJbmZvVXRpbCB9IGZyb20gJy4vdXRpbHMvaW5kZXgnO1xyXG5pbXBvcnQgeyBCZWZSZXBvc2l0b3J5IH0gZnJvbSAnLi9iZWZfcmVwb3NpdG9yeSc7XHJcbmltcG9ydCB7IEZyYW1ld29ya1Nlc3Npb25TZXJ2aWNlIH0gZnJvbSAnLi9mcmFtZXdvcmtfc2Vzc2lvbl9zZXJ2aWNlJztcclxuaW1wb3J0IHsgQmVmU2Vzc2lvblNlcnZpY2UgfSBmcm9tICcuL3Nlc3Npb24vaW5kZXgnO1xyXG5pbXBvcnQgeyBDaGFuZ2VEZXRhaWwsIFJlcXVlc3RJbmZvLCBSZXNwb25zZUluZm8gfSBmcm9tICcuL3R5cGVzJztcclxuaW1wb3J0IHsgQmVmUHJveHkgfSBmcm9tICcuL2JlZl9wcm94eSc7XHJcbmltcG9ydCB7IFVyaVNlcnZpY2UgfSBmcm9tICcuL3VyaV9zZXJ2aWNlJztcclxuaW1wb3J0IHsgQmVmUHJveHlFeHRlbmQgfSBmcm9tICcuL2JlZl9wcm94eV9leHRlbmQnO1xyXG5pbXBvcnQgeyBIdHRwU2VydmljZSB9IGZyb20gJy4vaHR0cF9zZXJ2aWNlJztcclxuaW1wb3J0IHsgQmFja0VuZE1lc3NhZ2VVdGlsIH0gZnJvbSAnLi91dGlscy9iYWNrX2VuZF9tZXNzYWdlLnV0aWwnO1xyXG5cclxuY29uc3QgR0VUID0gJ0dFVCc7XHJcbmNvbnN0IERFTEVURSA9ICdERUxFVEUnO1xyXG5jb25zdCBQVVQgPSAnUFVUJztcclxuY29uc3QgUE9TVCA9ICdQT1NUJztcclxuY29uc3QgUEFUQ0ggPSAnUEFUQ0gnO1xyXG5cclxuLyoqXHJcbiAqIEJFRuWPluaVsOacjeWKoVxyXG4gKiDor6XmnI3liqHnlLFCZWZSZXBvc2l0b3J55a6e5L6L5YyW77yM5LiN5YGa5rOo5YWl77yM5q+P5LiqQmVmUmVwb3NpdG9yeeaLpeacieS4gOS4qkJlZlJlc3RTZXJ2aWNl5a6e5L6L44CCXHJcbiAqL1xyXG5ASW5qZWN0YWJsZSgpXHJcbmNsYXNzIEJlZlJlc3RTZXJ2aWNlIHtcclxuXHJcbiAgcHJpdmF0ZSByZXBvc2l0b3J5OiBCZWZSZXBvc2l0b3J5PEVudGl0eT47XHJcblxyXG4gIC8qKlxyXG4gICAqIGh0dHBDbGllbnRcclxuICAgKi9cclxuICBwcml2YXRlIGh0dHBDbGllbnQ6IEh0dHBDbGllbnQ7XHJcbiAgcHJpdmF0ZSBodHRwU2VydmljZTogSHR0cFNlcnZpY2U7XHJcblxyXG4gIC8qKlxyXG4gICAqIOS8muivneacjeWKoVxyXG4gICAqL1xyXG4gIHB1YmxpYyBzZXNzaW9uU2VydmljZTogQmVmU2Vzc2lvblNlcnZpY2U7XHJcblxyXG4gIC8qKlxyXG4gICAqIOaOpeWPo+aguVVyaVxyXG4gICAqL1xyXG4gIHB1YmxpYyBiYXNlVXJpOiBzdHJpbmc7XHJcblxyXG4gIC8qKlxyXG4gICAqIOS6i+S7tuaAu+e6v1xyXG4gICAqL1xyXG4gIHB1YmxpYyBldmVudEJ1czogRXZlbnRCdXM7XHJcblxyXG4gIC8qKlxyXG4gICAqIOaehOmAoOWHveaVsFxyXG4gICAqIEBwYXJhbSBodHRwQ2xpZW50IGh0dHDmnI3liqFcclxuICAgKiBAcGFyYW0gc2VydmVyVXJpIOW6lOeUqOacjeWKoeWZqOWcsOWdgFxyXG4gICAqIEBwYXJhbSBiZVVyaSBCRSBBUEnlnLDlnYBcclxuICAgKi9cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIGh0dHBDbGllbnQ6IEh0dHBDbGllbnQsIGJhc2VVcmk6IHN0cmluZyxcclxuICAgIGZybVNlc3Npb25TZXJ2aWNlOiBGcmFtZXdvcmtTZXNzaW9uU2VydmljZSxcclxuICAgIHJlcG9zaXRvcnk6IEJlZlJlcG9zaXRvcnk8RW50aXR5PixcclxuICAgIGV2ZW50QnVzPzogRXZlbnRCdXNcclxuICApIHtcclxuICAgIHRoaXMuaHR0cENsaWVudCA9IGh0dHBDbGllbnQ7XHJcbiAgICB0aGlzLmh0dHBTZXJ2aWNlID0gbmV3IEh0dHBTZXJ2aWNlKHRoaXMuaHR0cENsaWVudCk7XHJcbiAgICB0aGlzLmJhc2VVcmkgPSBiYXNlVXJpO1xyXG4gICAgY29uc3QgaW5qZWN0b3IgPSByZXBvc2l0b3J5LmdldEluamVjdG9yKCk7XHJcbiAgICB0aGlzLnNlc3Npb25TZXJ2aWNlID0gbmV3IEJlZlNlc3Npb25TZXJ2aWNlKGh0dHBDbGllbnQsIGJhc2VVcmksIGZybVNlc3Npb25TZXJ2aWNlLCBpbmplY3Rvcik7XHJcbiAgICB0aGlzLnJlcG9zaXRvcnkgPSByZXBvc2l0b3J5O1xyXG4gICAgdGhpcy5ldmVudEJ1cyA9IGV2ZW50QnVzO1xyXG4gIH1cclxuXHJcblxyXG4gIC8vICNyZWdpb24g5Luj55CG55u45YWzXHJcblxyXG4gIC8qKlxyXG4gICAqIOiOt+WPlkJlZuS7o+eQhlxyXG4gICAqL1xyXG4gIHB1YmxpYyBnZXQgcHJveHkoKTogQmVmUHJveHkge1xyXG4gICAgaWYgKCEhdGhpcy5yZXBvc2l0b3J5LnByb3h5KSB7XHJcbiAgICAgIHJldHVybiB0aGlzLnJlcG9zaXRvcnkucHJveHk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICByZXR1cm4gdGhpcy5jcmVhdGVCZWZQcm94eSgpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICog5Yib5bu6QmVm5Luj55CGXHJcbiAgICovXHJcbiAgcHJpdmF0ZSBjcmVhdGVCZWZQcm94eSgpIHtcclxuICAgIGNvbnN0IHNlcnZlclVyaSA9IHRoaXMucmVwb3NpdG9yeS5zZXJ2ZXJVcmk7XHJcbiAgICBjb25zdCB1cmlTZXJ2aWNlID0gbmV3IFVyaVNlcnZpY2Uoc2VydmVyVXJpKTtcclxuICAgIGNvbnN0IGRlZmF1bHRQcm94eSA9IG5ldyBCZWZQcm94eSh0aGlzLmh0dHBDbGllbnQsIHVyaVNlcnZpY2UpO1xyXG4gICAgZGVmYXVsdFByb3h5LnNldEJhc2VVcmkodGhpcy5iYXNlVXJpKTtcclxuICAgIGNvbnN0IGV4dGVuZCA9IG5ldyBCZWZQcm94eUV4dGVuZCh0aGlzLnJlcG9zaXRvcnkpO1xyXG4gICAgZGVmYXVsdFByb3h5LnNldFByb3h5RXh0ZW5kKGV4dGVuZCk7XHJcbiAgICByZXR1cm4gZGVmYXVsdFByb3h5O1xyXG4gIH1cclxuXHJcbiAgLy8gI2VuZHJlZ2lvblxyXG5cclxuXHJcbiAgLy8gI3JlZ2lvbiDln7rmnKxDUlVE5pa55rOVXHJcblxyXG4gIC8qKlxyXG4gICAqIOW3suW6n+W8g++8jOivt+S9v+eUqHJlcG9zaXRvcnkucHJveHnlr7nlupTmlrnms5Xku6Pmm79cclxuICAgKiBAZGVwcmVjYXRlZFxyXG4gICAqL1xyXG4gIHB1YmxpYyBxdWVyeShlbnRpdHlGaWx0ZXI/OiBhbnkpOiBPYnNlcnZhYmxlPGFueT4ge1xyXG4gICAgcmV0dXJuIHRoaXMucHJveHkucXVlcnkoZW50aXR5RmlsdGVyKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIOW3suW6n+W8g++8jOivt+S9v+eUqHJlcG9zaXRvcnkucHJveHnlr7nlupTmlrnms5Xku6Pmm79cclxuICAgKiBAZGVwcmVjYXRlZFxyXG4gICAqL1xyXG4gIHB1YmxpYyBleHRlbmRRdWVyeShlbnRpdHlGaWx0ZXI6IGFueSwgcmVxdWVzdEluZm86IFJlcXVlc3RJbmZvKTogT2JzZXJ2YWJsZTxSZXNwb25zZUluZm8+IHtcclxuICAgIHJldHVybiB0aGlzLnByb3h5LmV4dGVuZFF1ZXJ5KGVudGl0eUZpbHRlciwgcmVxdWVzdEluZm8pO1xyXG4gIH1cclxuICAvKipcclxuICAgKiDliIbpobXmn6Xor6LlkITku47ooajmlbDmja5cclxuICAgKiBAcGFyYW0gaWQg5Li76KGoaWRcclxuICAgKiBAcGFyYW0gcmV0cmlldmVQYXJhbSDlj4LmlbBcclxuICAgKi9cclxuICBwdWJsaWMgc2VydmljZVJldHJpZXZlKGlkOiBzdHJpbmcsIHJldHJpZXZlUGFyYW06IGFueSwgcmVxdWVzdEluZm86IFJlcXVlc3RJbmZvKTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuICAgIHJldHVybiB0aGlzLnByb3h5LnNlcnZpY2VSZXRyaWV2ZShpZCwgcmV0cmlldmVQYXJhbSwgcmVxdWVzdEluZm8pO1xyXG4gIH1cclxuICAvKipcclxuICAgKiDliIbpobXmn6Xor6Lku47ooagv5LuO5LuO6KGo5pWw5o2uXHJcbiAgICogQHBhcmFtIHBhcmFtcyDmn6Xor6Llj4LmlbBcclxuICAgKi9cclxuICBwdWJsaWMgcXVlcnlDaGlsZChwYXJhbXM6IGFueSkge1xyXG4gICAgcmV0dXJuIHRoaXMucHJveHkucXVlcnlDaGlsZChwYXJhbXMpO1xyXG4gIH1cclxuICAvKipcclxuICAgKiDlt7Llup/lvIPvvIzor7fkvb/nlKhyZXBvc2l0b3J5LnByb3h55a+55bqU5pa55rOV5Luj5pu/XHJcbiAgICogQGRlcHJlY2F0ZWRcclxuICAgKi9cclxuICBwdWJsaWMgcmV0cmlldmUoaWQ6IHN0cmluZyk6IE9ic2VydmFibGU8YW55PiB7XHJcbiAgICByZXR1cm4gdGhpcy5wcm94eS5yZXRyaWV2ZShpZCk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiDlt7Llup/lvIPvvIzor7fkvb/nlKhyZXBvc2l0b3J5LnByb3h55a+55bqU5pa55rOV5Luj5pu/XHJcbiAgICogQGRlcHJlY2F0ZWRcclxuICAgKi9cclxuICBwdWJsaWMgZXh0ZW5kUmV0cmlldmUoaWQ6IHN0cmluZywgcmVxdWVzdEluZm86IFJlcXVlc3RJbmZvKTogT2JzZXJ2YWJsZTxSZXNwb25zZUluZm8+IHtcclxuICAgIHJldHVybiB0aGlzLnByb3h5LmV4dGVuZFJldHJpZXZlKGlkLCByZXF1ZXN0SW5mbyk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiDlt7Llup/lvIPvvIzor7fkvb/nlKhyZXBvc2l0b3J5LnByb3h55a+55bqU5pa55rOV5Luj5pu/XHJcbiAgICogQGRlcHJlY2F0ZWRcclxuICAgKi9cclxuICBwdWJsaWMgY3JlYXRlKGRlZmF1bHRWYWx1ZT86IGFueSwgcmVxdWVzdEluZm8/OiBSZXF1ZXN0SW5mbyk6IE9ic2VydmFibGU8YW55PiB7XHJcbiAgICByZXR1cm4gdGhpcy5wcm94eS5jcmVhdGUoZGVmYXVsdFZhbHVlLCByZXF1ZXN0SW5mbyk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiDlt7Llup/lvIPvvIzor7fkvb/nlKhyZXBvc2l0b3J5LnByb3h55a+55bqU5pa55rOV5Luj5pu/XHJcbiAgICogQGRlcHJlY2F0ZWRcclxuICAgKi9cclxuICBwdWJsaWMgY3JlYXRlQnlQYXRoKGZwYXRoOiBzdHJpbmcsIHJlcXVlc3RJbmZvPzogUmVxdWVzdEluZm8pOiBPYnNlcnZhYmxlPGFueT4ge1xyXG4gICAgcmV0dXJuIHRoaXMucHJveHkuY3JlYXRlQnlQYXRoKGZwYXRoLCByZXF1ZXN0SW5mbyk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiDlt7Llup/lvIPvvIzor7fkvb/nlKhyZXBvc2l0b3J5LnByb3h55a+55bqU5pa55rOV5Luj5pu/XHJcbiAgICogQGRlcHJlY2F0ZWRcclxuICAgKi9cclxuICB1cGRhdGUoY2hhbmdlRGV0YWlsOiBDaGFuZ2VEZXRhaWwsIHJlcXVlc3RJbmZvPzogUmVxdWVzdEluZm8pOiBPYnNlcnZhYmxlPGFueT4ge1xyXG4gICAgcmV0dXJuIHRoaXMucHJveHkudXBkYXRlKGNoYW5nZURldGFpbCwgcmVxdWVzdEluZm8pO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICog5bey5bqf5byD77yM6K+35L2/55SocmVwb3NpdG9yeS5wcm94eeWvueW6lOaWueazleS7o+abv1xyXG4gICAqIEBkZXByZWNhdGVkXHJcbiAgICovXHJcbiAgcHVibGljIHNhdmUocmVxdWVzdEluZm8/OiBSZXF1ZXN0SW5mbyk6IE9ic2VydmFibGU8YW55PiB7XHJcbiAgICByZXR1cm4gdGhpcy5wcm94eS5zYXZlKHJlcXVlc3RJbmZvKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIOW3suW6n+W8g++8jOivt+S9v+eUqHJlcG9zaXRvcnkucHJveHnlr7nlupTmlrnms5Xku6Pmm79cclxuICAgKiBAZGVwcmVjYXRlZFxyXG4gICAqL1xyXG4gIHB1YmxpYyBkZWxldGUoaWQ6IHN0cmluZyk6IE9ic2VydmFibGU8YW55PiB7XHJcbiAgICByZXR1cm4gdGhpcy5wcm94eS5kZWxldGUoaWQpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICog5bey5bqf5byD77yM6K+35L2/55SocmVwb3NpdG9yeS5wcm94eeWvueW6lOaWueazleS7o+abv1xyXG4gICAqIEBkZXByZWNhdGVkXHJcbiAgICovXHJcbiAgcHVibGljIGV4dGVuZERlbGV0ZShpZDogc3RyaW5nLCByZXF1ZXN0SW5mbzogUmVxdWVzdEluZm8pOiBPYnNlcnZhYmxlPFJlc3BvbnNlSW5mbz4ge1xyXG4gICAgcmV0dXJuIHRoaXMucHJveHkuZXh0ZW5kRGVsZXRlKGlkLCByZXF1ZXN0SW5mbyk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiDlt7Llup/lvIPvvIzor7fkvb/nlKhyZXBvc2l0b3J5LnByb3h55a+55bqU5pa55rOV5Luj5pu/XHJcbiAgICogQGRlcHJlY2F0ZWRcclxuICAgKi9cclxuICBwdWJsaWMgZGVsZXRCeVBhdGgoZnBhdGg6IHN0cmluZywgaWQ6IHN0cmluZyk6IE9ic2VydmFibGU8YW55PiB7XHJcbiAgICByZXR1cm4gdGhpcy5wcm94eS5kZWxldEJ5UGF0aChmcGF0aCwgaWQpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICog5bey5bqf5byD77yM6K+35L2/55SocmVwb3NpdG9yeS5wcm94eeWvueW6lOaWueazleS7o+abv1xyXG4gICAqIEBkZXByZWNhdGVkXHJcbiAgICovXHJcbiAgcHVibGljIGV4dGVuZERlbGV0QnlQYXRoKGZwYXRoOiBzdHJpbmcsIGlkOiBzdHJpbmcsIHJlcXVlc3RJbmZvOiBSZXF1ZXN0SW5mbyk6IE9ic2VydmFibGU8UmVzcG9uc2VJbmZvPiB7XHJcbiAgICByZXR1cm4gdGhpcy5wcm94eS5leHRlbmREZWxldEJ5UGF0aChmcGF0aCwgaWQsIHJlcXVlc3RJbmZvKTtcclxuICB9XHJcbiAgcHVibGljIGJhdGNoRGVsZXRlQnlQYXRoKGZQYXRoOiBzdHJpbmcsIGlkczogc3RyaW5nLCByZXF1ZXN0SW5mbzogUmVxdWVzdEluZm8pOiBPYnNlcnZhYmxlPFJlc3BvbnNlSW5mbz4ge1xyXG4gICAgcmV0dXJuIHRoaXMucHJveHkuYmF0Y2hEZWxldGVCeVBhdGgoZlBhdGgsIGlkcywgcmVxdWVzdEluZm8pO1xyXG4gIH1cclxuICAvKipcclxuICAgKiDlt7Llup/lvIPvvIzor7fkvb/nlKhyZXBvc2l0b3J5LnByb3h55a+55bqU5pa55rOV5Luj5pu/XHJcbiAgICogQGRlcHJlY2F0ZWRcclxuICAgKi9cclxuICBwdWJsaWMgYmF0Y2hEZWxldGUoaWRzOiBzdHJpbmdbXSk6IE9ic2VydmFibGU8YW55PiB7XHJcbiAgICByZXR1cm4gdGhpcy5wcm94eS5iYXRjaERlbGV0ZShpZHMpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICog5bey5bqf5byD77yM6K+35L2/55SocmVwb3NpdG9yeS5wcm94eeWvueW6lOaWueazleS7o+abv1xyXG4gICAqIEBkZXByZWNhdGVkXHJcbiAgICovXHJcbiAgcHVibGljIGV4dGVuZEJhdGNoRGVsZXRlKGlkczogc3RyaW5nW10sIHJlcXVlc3RJbmZvOiBSZXF1ZXN0SW5mbyk6IE9ic2VydmFibGU8UmVzcG9uc2VJbmZvPiB7XHJcbiAgICByZXR1cm4gdGhpcy5wcm94eS5leHRlbmRCYXRjaERlbGV0ZShpZHMsIHJlcXVlc3RJbmZvKTtcclxuICB9XHJcblxyXG5cclxuICAvKipcclxuICAgKiDlt7Llup/lvIPvvIzor7fkvb/nlKhyZXBvc2l0b3J5LnByb3h55a+55bqU5pa55rOV5Luj5pu/XHJcbiAgICogQGRlcHJlY2F0ZWRcclxuICAgKi9cclxuICBwdWJsaWMgY2FuY2VsKG9wdGlvbnM/OiBhbnkpOiBPYnNlcnZhYmxlPGFueT4ge1xyXG4gICAgcmV0dXJuIHRoaXMucHJveHkuY2FuY2VsKG9wdGlvbnMpO1xyXG4gIH1cclxuXHJcbiAgLy8gI2VuZHJlZ2lvblxyXG5cclxuXHJcbiAgLy8gI3JlZ2lvbiByZXF1ZXN05pa55rOVXHJcblxyXG4gIC8qKlxyXG4gICAqIOW3suW6n+W8g++8jOivt+S9v+eUqHJlcG9zaXRvcnkucHJveHnlr7nlupTmlrnms5Xku6Pmm79cclxuICAgKiBAZGVwcmVjYXRlZFxyXG4gICAqL1xyXG4gIHB1YmxpYyByZXF1ZXN0KFxyXG4gICAgdXJsOiBzdHJpbmcsIG1ldGhvZDogc3RyaW5nLCBwYXJhbXM/OiBhbnksIG9wdGlvbnM/OiBhbnksXHJcbiAgICBzZWxmSGFuZEVycm9yPzogYm9vbGVhbiwgaWdub3JlRXJyb3I/OiBib29sZWFuLCBpZ25vcmVDaGFuZ2VzPzogYm9vbGVhblxyXG4gICk6IE9ic2VydmFibGU8YW55PiB7XHJcbiAgICByZXR1cm4gdGhpcy5pbm5lclJlcXVlc3QodXJsLCBtZXRob2QsIHBhcmFtcywgb3B0aW9ucywgc2VsZkhhbmRFcnJvciwgaWdub3JlRXJyb3IsIGlnbm9yZUNoYW5nZXMsIGZhbHNlKTtcclxuICB9XHJcbiAgLy8gdHNsaW50OmRpc2FibGU6IGFsaWduXHJcblxyXG4gIC8qKlxyXG4gICAqIOiwg+eUqOWQjuerr+aWueazlVxyXG4gICAqIEBwYXJhbSB1cmwgdXJsXHJcbiAgICogQHBhcmFtIG1ldGhvZCBtZXRob2RcclxuICAgKiBAcGFyYW0gcGFyYW1zIHBhcmFtc1xyXG4gICAqIEBwYXJhbSBvcHRpb25zIG9wdGlvbnNcclxuICAgKiBAcGFyYW0gc2VsZkhhbmRFcnJvciDoh6rlt7HlpITnkIblvILluLhcclxuICAgKiBAcGFyYW0gaWdub3JlRXJyb3Ig5b+955Wl6ZSZ6K+vXHJcbiAgICogQHBhcmFtIGlnbm9yZUNoYW5nZXMg5b+955Wl5Y+Y5pu0XHJcbiAgICovXHJcbiAgcHVibGljIGludm9rZSh1cmw6IHN0cmluZywgbWV0aG9kOiBzdHJpbmcsIHBhcmFtcz86IGFueSwgb3B0aW9ucz86IGFueSxcclxuICAgIHNlbGZIYW5kRXJyb3I/OiBib29sZWFuLCBpZ25vcmVFcnJvcj86IGJvb2xlYW4sIGlnbm9yZUNoYW5nZXM/OiBib29sZWFuKSB7XHJcbiAgICBpZiAob3B0aW9ucyAmJiBvcHRpb25zLmJvZHkgJiYgb3B0aW9ucy5ib2R5LlJlcXVlc3RJbmZvKSB7XHJcbiAgICAgIHRocm93IG5ldyBFcnJvcign6K+35L2/55SocmVxdWVzdEluZm/mj5DkuqTlj5jmm7QnKTtcclxuICAgIH1cclxuICAgIHJldHVybiB0aGlzLmlubmVyUmVxdWVzdCh1cmwsIG1ldGhvZCwgcGFyYW1zLCBvcHRpb25zLCBzZWxmSGFuZEVycm9yLCBpZ25vcmVFcnJvciwgaWdub3JlQ2hhbmdlcywgdHJ1ZSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiDlhoXpg6jnmoRyZXF1ZXN05pa55rOVXHJcbiAgICovXHJcbiAgcHJpdmF0ZSBpbm5lclJlcXVlc3QoXHJcbiAgICB1cmw6IHN0cmluZywgbWV0aG9kOiBzdHJpbmcsIHBhcmFtcz86IGFueSwgb3B0aW9ucz86IGFueSxcclxuICAgIHNlbGZIYW5kRXJyb3I/OiBib29sZWFuLCBpZ25vcmVFcnJvcj86IGJvb2xlYW4sIGlnbm9yZUNoYW5nZXM/OiBib29sZWFuLFxyXG4gICAgdXNlQ29ycmVjdFJlcXVlc3RJbmZvQ2hlY2tNZXRob2Q/OiBib29sZWFuXHJcbiAgKSB7XHJcbiAgICBvcHRpb25zID0gb3B0aW9ucyB8fCB7fTtcclxuICAgIGNvbnN0IGJlZlNlc3Npb25JZEtleSA9ICdCRUZTZXNzaW9uSUQnO1xyXG5cclxuICAgIC8vIOaYr+WQpuiHquW3seWkhOeQhuW8guW4uFxyXG4gICAgaWYgKHR5cGVvZiAoc2VsZkhhbmRFcnJvcikgPT09ICd1bmRlZmluZWQnIHx8IHR5cGVvZiAoc2VsZkhhbmRFcnJvcikgIT09ICdib29sZWFuJykge1xyXG4gICAgICBzZWxmSGFuZEVycm9yID0gZmFsc2U7XHJcbiAgICB9XHJcblxyXG4gICAgLy8g5piv5ZCm5b+955Wl5byC5bi457un57ut5omn6KGMXHJcbiAgICBpZiAodHlwZW9mIChpZ25vcmVFcnJvcikgPT09ICd1bmRlZmluZWQnIHx8IHR5cGVvZiAoaWdub3JlRXJyb3IpICE9PSAnYm9vbGVhbicpIHtcclxuICAgICAgaWdub3JlRXJyb3IgPSBmYWxzZTtcclxuICAgIH1cclxuXHJcbiAgICAvLyDpgInmi6nmo4Dmn6VSZXF1ZXN0SW5mb+eahOaWueazlVxyXG4gICAgaWYgKHR5cGVvZiAodXNlQ29ycmVjdFJlcXVlc3RJbmZvQ2hlY2tNZXRob2QpID09PSAndW5kZWZpbmVkJyB8fCB0eXBlb2YgKHVzZUNvcnJlY3RSZXF1ZXN0SW5mb0NoZWNrTWV0aG9kKSAhPT0gJ2Jvb2xlYW4nKSB7XHJcbiAgICAgIHVzZUNvcnJlY3RSZXF1ZXN0SW5mb0NoZWNrTWV0aG9kID0gZmFsc2U7XHJcbiAgICB9XHJcbiAgICBjb25zdCBjaGVja1JlcXVlc3RJbmZvTWV0aG9kID0gdXNlQ29ycmVjdFJlcXVlc3RJbmZvQ2hlY2tNZXRob2QgPyB0aGlzLmV4aXN0UmVxdWVzdEluZm8gOiB0aGlzLmhhc1JlcXVlc3RJbmZvO1xyXG5cclxuICAgIC8vIHBhcmFtc1xyXG4gICAgaWYgKHBhcmFtcykge1xyXG4gICAgICAvLyBjb25zdCBodHRwUGFyYW1zID0gdGhpcy5idWlsZFBhcmFtcyhwYXJhbXMpO1xyXG4gICAgICBvcHRpb25zLnBhcmFtcyA9IHBhcmFtcztcclxuICAgIH1cclxuXHJcbiAgICAvLyDluKbmnIlyZXF1ZXN0SW5mb+eahOivt+axgu+8jOivt+axguaIkOWKn+WQjua4heepuuWPmOabtOmbhlxyXG4gICAgY29uc3QgaGFzUmVxdWVzdEluZm8gPSBjaGVja1JlcXVlc3RJbmZvTWV0aG9kKG9wdGlvbnMpO1xyXG4gICAgbGV0IGhlYWRlcnMgPSBIdHRwSGVhZGVyVXRpbC5jb252ZXJ0VG9IZWFkZXJzKG9wdGlvbnMuaGVhZGVycyk7XHJcblxyXG4gICAgLy8g5Liy6IGUc2Vzc2lvbua1geWSjGh0dHDmtYFcclxuICAgIHJldHVybiB0aGlzLnNlc3Npb25TZXJ2aWNlLmdldEJlU2Vzc2lvbklkKCkucGlwZShcclxuICAgICAgc3dpdGNoTWFwKChzZXNzaW9uSWQ6IHN0cmluZykgPT4ge1xyXG4gICAgICAgIGhlYWRlcnMgPSB0aGlzLnNlc3Npb25TZXJ2aWNlLmV4dGVuZFJlcXVlc3RIZWFkZXJzKGhlYWRlcnMpO1xyXG4gICAgICAgIG9wdGlvbnMuaGVhZGVycyA9IEh0dHBIZWFkZXJVdGlsLnRvSnNvbihoZWFkZXJzKTtcclxuICAgICAgICBvcHRpb25zLm9ic2VydmUgPSAncmVzcG9uc2UnO1xyXG4gICAgICAgIHJldHVybiB0aGlzLmh0dHBTZXJ2aWNlLnJlcXVlc3QobWV0aG9kLCB1cmwsIG9wdGlvbnMpO1xyXG4gICAgICB9KSxcclxuICAgICAgdGFwKChyZXNwb25zZTogYW55KSA9PiB7XHJcbiAgICAgICAgaWYgKHJlc3BvbnNlLmhlYWRlcnMgJiYgcmVzcG9uc2UuaGVhZGVycy5oYXMoYmVmU2Vzc2lvbklkS2V5KSkge1xyXG4gICAgICAgICAgdGhpcy5zZXNzaW9uU2VydmljZS5zZXRCZVNlc3Npb25JZChyZXNwb25zZS5oZWFkZXJzLmdldChiZWZTZXNzaW9uSWRLZXkpKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pLFxyXG4gICAgICBtYXAoKHJlc3BvbnNlOiBhbnkpID0+IHJlc3BvbnNlLmJvZHkpLFxyXG4gICAgICBtYXAoKHJlc3VsdDogYW55KSA9PiB7XHJcbiAgICAgICAgY29uc3QgbWVzc2FnZXMgPSBSZXNwb25zZUluZm9VdGlsLnBhcnNlQmFja0VuZE1lc3NhZ2UocmVzdWx0KTtcclxuICAgICAgICBCYWNrRW5kTWVzc2FnZVV0aWwuaGFuZGxlTWVzc2FnZShtZXNzYWdlcywgdGhpcy5yZXBvc2l0b3J5LmdldEluamVjdG9yKCkpO1xyXG4gICAgICAgIHJldHVybiB0aGlzLmhhbmRsZVJlcG9uc2VJbmZvKHJlc3VsdCwgaGFzUmVxdWVzdEluZm8sIGlnbm9yZUNoYW5nZXMpO1xyXG4gICAgICB9KSxcclxuICAgICAgY2F0Y2hFcnJvcigoZXJyb3I6IGFueSkgPT4ge1xyXG4gICAgICAgIGNvbnN0IG1lc3NhZ2VzID0gUmVzcG9uc2VJbmZvVXRpbC5wYXJzZUJhY2tFbmRFcnJvcihlcnJvcik7XHJcbiAgICAgICAgQmFja0VuZE1lc3NhZ2VVdGlsLmhhbmRsZU1lc3NhZ2UobWVzc2FnZXMsIHRoaXMucmVwb3NpdG9yeS5nZXRJbmplY3RvcigpKTtcclxuICAgICAgICByZXR1cm4gdGhpcy5oYW5kbGVFcnJvcnMoZXJyb3IsIHNlbGZIYW5kRXJyb3IsIGlnbm9yZUVycm9yKTtcclxuICAgICAgfSlcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiDlpITnkIbov5Tlm57nu5PmnpxcclxuICAgKi9cclxuICBwdWJsaWMgaGFuZGxlUmVwb25zZUluZm8ocmVzdWx0OiBhbnksIGhhc1JlcXVlc3RJbmZvOiBib29sZWFuLCBpZ25vcmVDaGFuZ2VzOiBib29sZWFuKTogYW55IHtcclxuICAgIGlmIChoYXNSZXF1ZXN0SW5mbykge1xyXG4gICAgICAvLyDlpoLmnpzmnInluKbmnIlSZXF1ZXN0SW5mb++8jOWImeaMieaWsOe7k+aehOWkhOeQhlxyXG4gICAgICAvLyAx44CB5bqU55So5pyN5Yqh5Zmo56uv6L+U5Zue55qE5Y+Y5pu077ybXHJcbiAgICAgIC8vIDLjgIHmuIXnqbrmnKzlnLDlj5jmm7Tpm4bvvJtcclxuICAgICAgLy8gM+OAgei/lOWbnuaWsOe7k+aehFxyXG4gICAgICBpZiAocmVzdWx0ICYmIHJlc3VsdC5pbm5lckRhdGFDaGFuZ2UgJiYgaWdub3JlQ2hhbmdlcyAhPT0gdHJ1ZSkge1xyXG4gICAgICAgIHRoaXMucmVwb3NpdG9yeS5oYW5kbGVEYXRhQ2hhbmdlRGV0YWlscyhyZXN1bHQuaW5uZXJEYXRhQ2hhbmdlKTtcclxuICAgICAgfVxyXG4gICAgICB0aGlzLnJlcG9zaXRvcnkuY2xlYXJBbGxFbnRpdHlDaGFuZ2VzKCk7XHJcbiAgICAgIHJldHVybiByZXN1bHQ7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICAvLyDlpoLmnpzmnInmsqHmnIlSZXF1ZXN0SW5mb++8jOWImeaMieiAgeeahOaWueW8j+WkhOeQhlxyXG4gICAgICAvLyAx44CB5LiN5aSE55CG5pyN5Yqh5Zmo56uv6L+U5Zue55qE5Y+Y5pu077ya6Lef6ICB55qE6KGM5Li65LiA5qC377ybXHJcbiAgICAgIC8vIDLjgIHkuI3muIXnkIbmnKzlnLDlj5jmm7TvvJrlm6DkuLrlj5jmm7TmsqHmnInmj5DkuqTvvJtcclxuICAgICAgLy8gM+OAgei/lOWbnuiAgeeahOe7k+aehO+8muWFvOWuueiAgeeahOS7o+eggVxyXG4gICAgICByZXR1cm4gdGhpcy51bldyYXBSZXNwb25zZUluZm8ocmVzdWx0KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIOmUmeivr+WkhOeQhlxyXG4gICAqL1xyXG4gIHB1YmxpYyBoYW5kbGVFcnJvcnMoZXJyb3I6IGFueSwgc2VsZkhhbmRFcnJvcjogYm9vbGVhbiwgaWdub3JlRXJyb3I6IGJvb2xlYW4pOiBPYnNlcnZhYmxlPGFueT4ge1xyXG4gICAgdGhpcy5jbGVhckxvYWRpbmcoKTtcclxuXHJcbiAgICBpZiAoISFzZWxmSGFuZEVycm9yKSB7XHJcbiAgICAgIHJldHVybiB0aHJvd0Vycm9yKGVycm9yKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGNvbnN0IGZvcm1BcHBDb250ZXh0ID0gdGhpcy5yZXBvc2l0b3J5LmFwcENvbnRleHQuZ2V0Rm9ybUFwcENvbnRleHQoKTtcclxuICAgICAgY29uc3QgYXBwbGljYXRpb25JZCA9IGZvcm1BcHBDb250ZXh0LkFwcGxpY2F0aW9uSWQ7XHJcbiAgICAgIGNvbnN0IGFwcGxpY2F0aW9uQ29udGV4dDogYW55ID0gd2luZG93W2FwcGxpY2F0aW9uSWRdIHx8IHt9O1xyXG4gICAgICBjb25zdCBpc0V4Y2VwdGlvbkhhbmRsZXJFeGlzdCA9ICEhYXBwbGljYXRpb25Db250ZXh0LmlzRXhjZXB0aW9uSGFuZGxlckV4aXN0O1xyXG4gICAgICBpZiAoISF0aGlzLmV2ZW50QnVzICYmIGlzRXhjZXB0aW9uSGFuZGxlckV4aXN0KSB7XHJcbiAgICAgICAgaWYgKFJlc3BvbnNlSW5mb1V0aWwuaXNSZXBvcnRlZDQwMUVycm9yKGVycm9yKSkge1xyXG4gICAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoZXJyb3IpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoIShlcnJvciAmJiBlcnJvci5lcnJvciAmJiBlcnJvci5lcnJvci5leHRlbnNpb25NZXNzYWdlICYmIEJhY2tFbmRNZXNzYWdlVXRpbC5pc0JhY2tFbmRNZXNzYWdlSGFuZGxlckV4aXN0KHRoaXMucmVwb3NpdG9yeS5nZXRJbmplY3RvcigpKSkpIHtcclxuICAgICAgICAgIHRoaXMuZXZlbnRCdXMucG9zdCgnRXhjZXB0aW9uJywgJycsICdvbkV4Y2VwdGlvbicsIGVycm9yLCBmb3JtQXBwQ29udGV4dCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChpZ25vcmVFcnJvcikge1xyXG4gICAgICAgICAgcmV0dXJuIG9mKG51bGwpO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICByZXR1cm4gRU1QVFk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHJldHVybiB0aHJvd0Vycm9yKGVycm9yKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuICAvLyAjZW5kcmVnaW9uXHJcblxyXG5cclxuICAvLyAjcmVnaW9uIOW3peWFt+aWueazlVxyXG5cclxuICAvKipcclxuICAgKiDmuIXnqbpMb2FkaW5nXHJcbiAgICovXHJcbiAgcHJpdmF0ZSBjbGVhckxvYWRpbmcoKTogdm9pZCB7XHJcbiAgICBjb25zdCBpZkxvYWRpbmdFeGlzdHMgPSB3aW5kb3dbJ0RFVktJVF9MT0FESU5HX1NFUlZJQ0UnXSAmJlxyXG4gICAgICB3aW5kb3dbJ0RFVktJVF9MT0FESU5HX1NFUlZJQ0UnXSBpbnN0YW5jZW9mIEFycmF5ICYmXHJcbiAgICAgIHdpbmRvd1snREVWS0lUX0xPQURJTkdfU0VSVklDRSddLmxlbmd0aCA+IDAgfHwgZmFsc2U7XHJcblxyXG4gICAgaWYgKGlmTG9hZGluZ0V4aXN0cyA9PT0gZmFsc2UpIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IGxvYWRpbmdTZXJ2aWNlczogYW55W10gPSB3aW5kb3dbJ0RFVktJVF9MT0FESU5HX1NFUlZJQ0UnXTtcclxuICAgIGZvciAoY29uc3Qgc2VydmljZSBvZiBsb2FkaW5nU2VydmljZXMpIHtcclxuICAgICAgaWYgKHR5cGVvZiAoc2VydmljZS5jbGVhckFsbCkgPT09ICdmdW5jdGlvbicpIHtcclxuICAgICAgICBzZXJ2aWNlLmNsZWFyQWxsKCk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIOWkhOeQhui/lOWbnuWAvO+8jOWFvOWuueiAgeeJiOacrFxyXG4gICAqL1xyXG4gIHByaXZhdGUgdW5XcmFwUmVzcG9uc2VJbmZvKHJlc3VsdDogYW55KTogYW55IHtcclxuICAgIHJldHVybiBSZXNwb25zZUluZm9VdGlsLnVuV3JhcFJlc3BvbnNlSW5mbyhyZXN1bHQpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICog5piv5ZCm5bim5pyJUmVxdWVzdEluZm9cclxuICAgKi9cclxuICBwcml2YXRlIGhhc1JlcXVlc3RJbmZvKG9wdGlvbnM6IGFueSk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIFJlcXVlc3RJbmZvVXRpbC5oYXNSZXF1ZXN0SW5mb1dpdGhSKG9wdGlvbnMpO1xyXG4gIH1cclxuICAvKipcclxuICAgKiDmmK/lkKbluKbmnIlyZXF1ZXN0SW5mb1xyXG4gICAqL1xyXG4gIHByaXZhdGUgZXhpc3RSZXF1ZXN0SW5mbyhvcHRpb25zOiBhbnkpIHtcclxuICAgIHJldHVybiBSZXF1ZXN0SW5mb1V0aWwuaGFzUmVxdWVzdEluZm8ob3B0aW9ucyk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiDmnoTpgKBIdHRwUGFyYW1z5a+56LGhXHJcbiAgICogQHBhcmFtIHBhcmFtcyDor7fmsYLlj4LmlbBcclxuICAgKi9cclxuICBwcml2YXRlIGJ1aWxkUGFyYW1zKHBhcmFtczogYW55KTogSHR0cFBhcmFtcyB7XHJcbiAgICByZXR1cm4gSHR0cFBhcmFtVXRpbC5idWlsZFBhcmFtcyhwYXJhbXMpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICog5p6E6YCg5bimUmVxdWVzdEluZm/nmoRCb2R577yI6YCC55So5LqO5aSa5Liq5Y+C5pWw55qE5oOF5Ya177yM5aaC5p6c5Y+q5pyJ5LiA5LiqUmVxdWVzdEluZm/lj4LmlbDvvIxib2R5PVJlcXVlc3RJbmZv77yJXHJcbiAgICogQGJvZHkg5pyq5pC65bimUmVxdWVzdEluZm/nmoRib2R577yM5qC85byP5b2i5aaCOiB7a2V5MTogdmFsdWUxLCBrZXkyOiB2YWx1ZTJ9XHJcbiAgICovXHJcbiAgcHVibGljIGJ1aWxkQm9keVdpdGhSZXF1ZXN0SW5mbyhib2R5OiBhbnkpOiBhbnkge1xyXG4gICAgcmV0dXJuIFJlcXVlc3RJbmZvVXRpbC5idWlsZEJvZHlXaXRoUmVxdWVzdEluZm8oYm9keSwgdGhpcy5yZXBvc2l0b3J5KTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIOaehOmAoFJlcXVlc3RJbmZvXHJcbiAgICovXHJcbiAgcHVibGljIGJ1aWxkUmVxdWVzdEluZm8oKTogUmVxdWVzdEluZm8ge1xyXG4gICAgcmV0dXJuIFJlcXVlc3RJbmZvVXRpbC5idWlsZFJlcXVlc3RJbmZvKHRoaXMucmVwb3NpdG9yeSk7XHJcbiAgfVxyXG5cclxuICAvLyAjZW5kcmVnaW9uXHJcblxyXG59XHJcblxyXG5leHBvcnQgeyBCZWZSZXN0U2VydmljZSB9O1xyXG5cclxuIl19
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmVmX3Jlc3Rfc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BmYXJyaXMvYmVmLyIsInNvdXJjZXMiOlsibGliL2JlZl9yZXN0X3NlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7O0FBT0EsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQUUsVUFBVSxFQUEyQixNQUFNLHNCQUFzQixDQUFDO0FBQzNFLE9BQU8sRUFBYyxVQUFVLEVBQUUsRUFBRSxFQUFFLEtBQUssRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUN6RCxPQUFPLEVBQUUsU0FBUyxFQUFFLEdBQUcsRUFBRSxVQUFVLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDakUsT0FBTyxFQUFVLFFBQVEsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ2xELE9BQU8sRUFBRSxjQUFjLEVBQUUsYUFBYSxFQUFFLGVBQWUsRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNqRyxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDakQsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDdEUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFFcEQsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUN2QyxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUNwRCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDN0MsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sK0JBQStCLENBQUM7O0lBRTdELEdBQUcsR0FBRyxLQUFLOztJQUNYLE1BQU0sR0FBRyxRQUFROztJQUNqQixHQUFHLEdBQUcsS0FBSzs7SUFDWCxJ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Ozs7SUFLMUMsb0NBQStCOzs7OztJQUMvQixxQ0FBaUM7Ozs7O0lBS2pDLHdDQUF5Qzs7Ozs7SUFLekMsaUNBQXVCOzs7OztJQUt2QixrQ0FBMEI7O0FBbWE1QixPQUFPLEVBQUUsY0FBYyxFQUFFLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxyXG4gKiBAQXV0aG9yOiBXaXR0XHJcbiAqIEBEYXRlOiAyMDE5LTAyLTIzIDEzOjU3OjQ3XHJcbiAqIEBMYXN0IE1vZGlmaWVkIGJ5OiBhYWxpenp3ZWxsXHJcbiAqIEBMYXN0IE1vZGlmaWVkIHRpbWU6IDIwMTktMDktMjQgMTQ6MTA6NDBcclxuICovXHJcblxyXG5pbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEh0dHBDbGllbnQsIEh0dHBIZWFkZXJzLCBIdHRwUGFyYW1zIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xyXG5pbXBvcnQgeyBPYnNlcnZhYmxlLCB0aHJvd0Vycm9yLCBvZiwgRU1QVFkgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgc3dpdGNoTWFwLCBtYXAsIGNhdGNoRXJyb3IsIHRhcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuaW1wb3J0IHsgRW50aXR5LCBFdmVudEJ1cyB9IGZyb20gJ0BmYXJyaXMvZGV2a2l0JztcclxuaW1wb3J0IHsgSHR0cEhlYWRlclV0aWwsIEh0dHBQYXJhbVV0aWwsIFJlcXVlc3RJbmZvVXRpbCwgUmVzcG9uc2VJbmZvVXRpbCB9IGZyb20gJy4vdXRpbHMvaW5kZXgnO1xyXG5pbXBvcnQgeyBCZWZSZXBvc2l0b3J5IH0gZnJvbSAnLi9iZWZfcmVwb3NpdG9yeSc7XHJcbmltcG9ydCB7IEZyYW1ld29ya1Nlc3Npb25TZXJ2aWNlIH0gZnJvbSAnLi9mcmFtZXdvcmtfc2Vzc2lvbl9zZXJ2aWNlJztcclxuaW1wb3J0IHsgQmVmU2Vzc2lvblNlcnZpY2UgfSBmcm9tICcuL3Nlc3Npb24vaW5kZXgnO1xyXG5pbXBvcnQgeyBDaGFuZ2VEZXRhaWwsIFJlcXVlc3RJbmZvLCBSZXNwb25zZUluZm8gfSBmcm9tICcuL3R5cGVzJztcclxuaW1wb3J0IHsgQmVmUHJveHkgfSBmcm9tICcuL2JlZl9wcm94eSc7XHJcbmltcG9ydCB7IFVyaVNlcnZpY2UgfSBmcm9tICcuL3VyaV9zZXJ2aWNlJztcclxuaW1wb3J0IHsgQmVmUHJveHlFeHRlbmQgfSBmcm9tICcuL2JlZl9wcm94eV9leHRlbmQnO1xyXG5pbXBvcnQgeyBIdHRwU2VydmljZSB9IGZyb20gJy4vaHR0cF9zZXJ2aWNlJztcclxuaW1wb3J0IHsgQmFja0VuZE1lc3NhZ2VVdGlsIH0gZnJvbSAnLi91dGlscy9iYWNrX2VuZF9tZXNzYWdlLnV0aWwnO1xyXG5cclxuY29uc3QgR0VUID0gJ0dFVCc7XHJcbmNvbnN0IERFTEVURSA9ICdERUxFVEUnO1xyXG5jb25zdCBQVVQgPSAnUFVUJztcclxuY29uc3QgUE9TVCA9ICdQT1NUJztcclxuY29uc3QgUEFUQ0ggPSAnUEFUQ0gnO1xyXG5cclxuLyoqXHJcbiAqIEJFRuWPluaVsOacjeWKoVxyXG4gKiDor6XmnI3liqHnlLFCZWZSZXBvc2l0b3J55a6e5L6L5YyW77yM5LiN5YGa5rOo5YWl77yM5q+P5LiqQmVmUmVwb3NpdG9yeeaLpeacieS4gOS4qkJlZlJlc3RTZXJ2aWNl5a6e5L6L44CCXHJcbiAqL1xyXG5ASW5qZWN0YWJsZSgpXHJcbmNsYXNzIEJlZlJlc3RTZXJ2aWNlIHtcclxuXHJcbiAgcHJpdmF0ZSByZXBvc2l0b3J5OiBCZWZSZXBvc2l0b3J5PEVudGl0eT47XHJcblxyXG4gIC8qKlxyXG4gICAqIGh0dHBDbGllbnRcclxuICAgKi9cclxuICBwcml2YXRlIGh0dHBDbGllbnQ6IEh0dHBDbGllbnQ7XHJcbiAgcHJpdmF0ZSBodHRwU2VydmljZTogSHR0cFNlcnZpY2U7XHJcblxyXG4gIC8qKlxyXG4gICAqIOS8muivneacjeWKoVxyXG4gICAqL1xyXG4gIHB1YmxpYyBzZXNzaW9uU2VydmljZTogQmVmU2Vzc2lvblNlcnZpY2U7XHJcblxyXG4gIC8qKlxyXG4gICAqIOaOpeWPo+aguVVyaVxyXG4gICAqL1xyXG4gIHB1YmxpYyBiYXNlVXJpOiBzdHJpbmc7XHJcblxyXG4gIC8qKlxyXG4gICAqIOS6i+S7tuaAu+e6v1xyXG4gICAqL1xyXG4gIHB1YmxpYyBldmVudEJ1czogRXZlbnRCdXM7XHJcblxyXG4gIC8qKlxyXG4gICAqIOaehOmAoOWHveaVsFxyXG4gICAqIEBwYXJhbSBodHRwQ2xpZW50IGh0dHDmnI3liqFcclxuICAgKiBAcGFyYW0gc2VydmVyVXJpIOW6lOeUqOacjeWKoeWZqOWcsOWdgFxyXG4gICAqIEBwYXJhbSBiZVVyaSBCRSBBUEnlnLDlnYBcclxuICAgKi9cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIGh0dHBDbGllbnQ6IEh0dHBDbGllbnQsIGJhc2VVcmk6IHN0cmluZyxcclxuICAgIGZybVNlc3Npb25TZXJ2aWNlOiBGcmFtZXdvcmtTZXNzaW9uU2VydmljZSxcclxuICAgIHJlcG9zaXRvcnk6IEJlZlJlcG9zaXRvcnk8RW50aXR5PixcclxuICAgIGV2ZW50QnVzPzogRXZlbnRCdXNcclxuICApIHtcclxuICAgIHRoaXMuaHR0cENsaWVudCA9IGh0dHBDbGllbnQ7XHJcbiAgICB0aGlzLmh0dHBTZXJ2aWNlID0gbmV3IEh0dHBTZXJ2aWNlKHRoaXMuaHR0cENsaWVudCk7XHJcbiAgICB0aGlzLmJhc2VVcmkgPSBiYXNlVXJpO1xyXG4gICAgY29uc3QgaW5qZWN0b3IgPSByZXBvc2l0b3J5LmdldEluamVjdG9yKCk7XHJcbiAgICB0aGlzLnNlc3Npb25TZXJ2aWNlID0gbmV3IEJlZlNlc3Npb25TZXJ2aWNlKGh0dHBDbGllbnQsIGJhc2VVcmksIGZybVNlc3Npb25TZXJ2aWNlLCBpbmplY3Rvcik7XHJcbiAgICB0aGlzLnJlcG9zaXRvcnkgPSByZXBvc2l0b3J5O1xyXG4gICAgdGhpcy5ldmVudEJ1cyA9IGV2ZW50QnVzO1xyXG4gIH1cclxuXHJcblxyXG4gIC8vICNyZWdpb24g5Luj55CG55u45YWzXHJcblxyXG4gIC8qKlxyXG4gICAqIOiOt+WPlkJlZuS7o+eQhlxyXG4gICAqL1xyXG4gIHB1YmxpYyBnZXQgcHJveHkoKTogQmVmUHJveHkge1xyXG4gICAgaWYgKCEhdGhpcy5yZXBvc2l0b3J5LnByb3h5KSB7XHJcbiAgICAgIHJldHVybiB0aGlzLnJlcG9zaXRvcnkucHJveHk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICByZXR1cm4gdGhpcy5jcmVhdGVCZWZQcm94eSgpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICog5Yib5bu6QmVm5Luj55CGXHJcbiAgICovXHJcbiAgcHJpdmF0ZSBjcmVhdGVCZWZQcm94eSgpIHtcclxuICAgIGNvbnN0IHNlcnZlclVyaSA9IHRoaXMucmVwb3NpdG9yeS5zZXJ2ZXJVcmk7XHJcbiAgICBjb25zdCB1cmlTZXJ2aWNlID0gbmV3IFVyaVNlcnZpY2Uoc2VydmVyVXJpKTtcclxuICAgIGNvbnN0IGRlZmF1bHRQcm94eSA9IG5ldyBCZWZQcm94eSh0aGlzLmh0dHBDbGllbnQsIHVyaVNlcnZpY2UpO1xyXG4gICAgZGVmYXVsdFByb3h5LnNldEJhc2VVcmkodGhpcy5iYXNlVXJpKTtcclxuICAgIGNvbnN0IGV4dGVuZCA9IG5ldyBCZWZQcm94eUV4dGVuZCh0aGlzLnJlcG9zaXRvcnkpO1xyXG4gICAgZGVmYXVsdFByb3h5LnNldFByb3h5RXh0ZW5kKGV4dGVuZCk7XHJcbiAgICByZXR1cm4gZGVmYXVsdFByb3h5O1xyXG4gIH1cclxuXHJcbiAgLy8gI2VuZHJlZ2lvblxyXG5cclxuXHJcbiAgLy8gI3JlZ2lvbiDln7rmnKxDUlVE5pa55rOVXHJcblxyXG4gIC8qKlxyXG4gICAqIOW3suW6n+W8g++8jOivt+S9v+eUqHJlcG9zaXRvcnkucHJveHnlr7nlupTmlrnms5Xku6Pmm79cclxuICAgKiBAZGVwcmVjYXRlZFxyXG4gICAqL1xyXG4gIHB1YmxpYyBxdWVyeShlbnRpdHlGaWx0ZXI/OiBhbnkpOiBPYnNlcnZhYmxlPGFueT4ge1xyXG4gICAgcmV0dXJuIHRoaXMucHJveHkucXVlcnkoZW50aXR5RmlsdGVyKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIOW3suW6n+W8g++8jOivt+S9v+eUqHJlcG9zaXRvcnkucHJveHnlr7nlupTmlrnms5Xku6Pmm79cclxuICAgKiBAZGVwcmVjYXRlZFxyXG4gICAqL1xyXG4gIHB1YmxpYyBleHRlbmRRdWVyeShlbnRpdHlGaWx0ZXI6IGFueSwgcmVxdWVzdEluZm86IFJlcXVlc3RJbmZvKTogT2JzZXJ2YWJsZTxSZXNwb25zZUluZm8+IHtcclxuICAgIHJldHVybiB0aGlzLnByb3h5LmV4dGVuZFF1ZXJ5KGVudGl0eUZpbHRlciwgcmVxdWVzdEluZm8pO1xyXG4gIH1cclxuICAvKipcclxuICAgKiDliIbpobXmn6Xor6LlkITku47ooajmlbDmja5cclxuICAgKiBAcGFyYW0gaWQg5Li76KGoaWRcclxuICAgKiBAcGFyYW0gcmV0cmlldmVQYXJhbSDlj4LmlbBcclxuICAgKi9cclxuICBwdWJsaWMgc2VydmljZVJldHJpZXZlKGlkOiBzdHJpbmcsIHJldHJpZXZlUGFyYW06IGFueSwgcmVxdWVzdEluZm86IFJlcXVlc3RJbmZvKTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuICAgIHJldHVybiB0aGlzLnByb3h5LnNlcnZpY2VSZXRyaWV2ZShpZCwgcmV0cmlldmVQYXJhbSwgcmVxdWVzdEluZm8pO1xyXG4gIH1cclxuICAvKipcclxuICAgKiDliIbpobXmn6Xor6Lku47ooagv5LuO5LuO6KGo5pWw5o2uXHJcbiAgICogQHBhcmFtIHBhcmFtcyDmn6Xor6Llj4LmlbBcclxuICAgKi9cclxuICBwdWJsaWMgcXVlcnlDaGlsZChwYXJhbXM6IGFueSkge1xyXG4gICAgcmV0dXJuIHRoaXMucHJveHkucXVlcnlDaGlsZChwYXJhbXMpO1xyXG4gIH1cclxuICAvKipcclxuICAgKiDlt7Llup/lvIPvvIzor7fkvb/nlKhyZXBvc2l0b3J5LnByb3h55a+55bqU5pa55rOV5Luj5pu/XHJcbiAgICogQGRlcHJlY2F0ZWRcclxuICAgKi9cclxuICBwdWJsaWMgcmV0cmlldmUoaWQ6IHN0cmluZyk6IE9ic2VydmFibGU8YW55PiB7XHJcbiAgICByZXR1cm4gdGhpcy5wcm94eS5yZXRyaWV2ZShpZCk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiDlt7Llup/lvIPvvIzor7fkvb/nlKhyZXBvc2l0b3J5LnByb3h55a+55bqU5pa55rOV5Luj5pu/XHJcbiAgICogQGRlcHJlY2F0ZWRcclxuICAgKi9cclxuICBwdWJsaWMgZXh0ZW5kUmV0cmlldmUoaWQ6IHN0cmluZywgcmVxdWVzdEluZm86IFJlcXVlc3RJbmZvKTogT2JzZXJ2YWJsZTxSZXNwb25zZUluZm8+IHtcclxuICAgIHJldHVybiB0aGlzLnByb3h5LmV4dGVuZFJldHJpZXZlKGlkLCByZXF1ZXN0SW5mbyk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiDlt7Llup/lvIPvvIzor7fkvb/nlKhyZXBvc2l0b3J5LnByb3h55a+55bqU5pa55rOV5Luj5pu/XHJcbiAgICogQGRlcHJlY2F0ZWRcclxuICAgKi9cclxuICBwdWJsaWMgY3JlYXRlKGRlZmF1bHRWYWx1ZT86IGFueSwgcmVxdWVzdEluZm8/OiBSZXF1ZXN0SW5mbyk6IE9ic2VydmFibGU8YW55PiB7XHJcbiAgICByZXR1cm4gdGhpcy5wcm94eS5jcmVhdGUoZGVmYXVsdFZhbHVlLCByZXF1ZXN0SW5mbyk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiDlt7Llup/lvIPvvIzor7fkvb/nlKhyZXBvc2l0b3J5LnByb3h55a+55bqU5pa55rOV5Luj5pu/XHJcbiAgICogQGRlcHJlY2F0ZWRcclxuICAgKi9cclxuICBwdWJsaWMgY3JlYXRlQnlQYXRoKGZwYXRoOiBzdHJpbmcsIHJlcXVlc3RJbmZvPzogUmVxdWVzdEluZm8pOiBPYnNlcnZhYmxlPGFueT4ge1xyXG4gICAgcmV0dXJuIHRoaXMucHJveHkuY3JlYXRlQnlQYXRoKGZwYXRoLCByZXF1ZXN0SW5mbyk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiDlt7Llup/lvIPvvIzor7fkvb/nlKhyZXBvc2l0b3J5LnByb3h55a+55bqU5pa55rOV5Luj5pu/XHJcbiAgICogQGRlcHJlY2F0ZWRcclxuICAgKi9cclxuICB1cGRhdGUoY2hhbmdlRGV0YWlsOiBDaGFuZ2VEZXRhaWwsIHJlcXVlc3RJbmZvPzogUmVxdWVzdEluZm8pOiBPYnNlcnZhYmxlPGFueT4ge1xyXG4gICAgcmV0dXJuIHRoaXMucHJveHkudXBkYXRlKGNoYW5nZURldGFpbCwgcmVxdWVzdEluZm8pO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICog5bey5bqf5byD77yM6K+35L2/55SocmVwb3NpdG9yeS5wcm94eeWvueW6lOaWueazleS7o+abv1xyXG4gICAqIEBkZXByZWNhdGVkXHJcbiAgICovXHJcbiAgcHVibGljIHNhdmUocmVxdWVzdEluZm8/OiBSZXF1ZXN0SW5mbyk6IE9ic2VydmFibGU8YW55PiB7XHJcbiAgICByZXR1cm4gdGhpcy5wcm94eS5zYXZlKHJlcXVlc3RJbmZvKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIOW3suW6n+W8g++8jOivt+S9v+eUqHJlcG9zaXRvcnkucHJveHnlr7nlupTmlrnms5Xku6Pmm79cclxuICAgKiBAZGVwcmVjYXRlZFxyXG4gICAqL1xyXG4gIHB1YmxpYyBkZWxldGUoaWQ6IHN0cmluZyk6IE9ic2VydmFibGU8YW55PiB7XHJcbiAgICByZXR1cm4gdGhpcy5wcm94eS5kZWxldGUoaWQpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICog5bey5bqf5byD77yM6K+35L2/55SocmVwb3NpdG9yeS5wcm94eeWvueW6lOaWueazleS7o+abv1xyXG4gICAqIEBkZXByZWNhdGVkXHJcbiAgICovXHJcbiAgcHVibGljIGV4dGVuZERlbGV0ZShpZDogc3RyaW5nLCByZXF1ZXN0SW5mbzogUmVxdWVzdEluZm8pOiBPYnNlcnZhYmxlPFJlc3BvbnNlSW5mbz4ge1xyXG4gICAgcmV0dXJuIHRoaXMucHJveHkuZXh0ZW5kRGVsZXRlKGlkLCByZXF1ZXN0SW5mbyk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiDlt7Llup/lvIPvvIzor7fkvb/nlKhyZXBvc2l0b3J5LnByb3h55a+55bqU5pa55rOV5Luj5pu/XHJcbiAgICogQGRlcHJlY2F0ZWRcclxuICAgKi9cclxuICBwdWJsaWMgZGVsZXRCeVBhdGgoZnBhdGg6IHN0cmluZywgaWQ6IHN0cmluZyk6IE9ic2VydmFibGU8YW55PiB7XHJcbiAgICByZXR1cm4gdGhpcy5wcm94eS5kZWxldEJ5UGF0aChmcGF0aCwgaWQpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICog5bey5bqf5byD77yM6K+35L2/55SocmVwb3NpdG9yeS5wcm94eeWvueW6lOaWueazleS7o+abv1xyXG4gICAqIEBkZXByZWNhdGVkXHJcbiAgICovXHJcbiAgcHVibGljIGV4dGVuZERlbGV0QnlQYXRoKGZwYXRoOiBzdHJpbmcsIGlkOiBzdHJpbmcsIHJlcXVlc3RJbmZvOiBSZXF1ZXN0SW5mbyk6IE9ic2VydmFibGU8UmVzcG9uc2VJbmZvPiB7XHJcbiAgICByZXR1cm4gdGhpcy5wcm94eS5leHRlbmREZWxldEJ5UGF0aChmcGF0aCwgaWQsIHJlcXVlc3RJbmZvKTtcclxuICB9XHJcbiAgcHVibGljIGJhdGNoRGVsZXRlQnlQYXRoKGZQYXRoOiBzdHJpbmcsIGlkczogc3RyaW5nLCByZXF1ZXN0SW5mbzogUmVxdWVzdEluZm8pOiBPYnNlcnZhYmxlPFJlc3BvbnNlSW5mbz4ge1xyXG4gICAgcmV0dXJuIHRoaXMucHJveHkuYmF0Y2hEZWxldGVCeVBhdGgoZlBhdGgsIGlkcywgcmVxdWVzdEluZm8pO1xyXG4gIH1cclxuICAvKipcclxuICAgKiDlt7Llup/lvIPvvIzor7fkvb/nlKhyZXBvc2l0b3J5LnByb3h55a+55bqU5pa55rOV5Luj5pu/XHJcbiAgICogQGRlcHJlY2F0ZWRcclxuICAgKi9cclxuICBwdWJsaWMgYmF0Y2hEZWxldGUoaWRzOiBzdHJpbmdbXSk6IE9ic2VydmFibGU8YW55PiB7XHJcbiAgICByZXR1cm4gdGhpcy5wcm94eS5iYXRjaERlbGV0ZShpZHMpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICog5bey5bqf5byD77yM6K+35L2/55SocmVwb3NpdG9yeS5wcm94eeWvueW6lOaWueazleS7o+abv1xyXG4gICAqIEBkZXByZWNhdGVkXHJcbiAgICovXHJcbiAgcHVibGljIGV4dGVuZEJhdGNoRGVsZXRlKGlkczogc3RyaW5nW10sIHJlcXVlc3RJbmZvOiBSZXF1ZXN0SW5mbyk6IE9ic2VydmFibGU8UmVzcG9uc2VJbmZvPiB7XHJcbiAgICByZXR1cm4gdGhpcy5wcm94eS5leHRlbmRCYXRjaERlbGV0ZShpZHMsIHJlcXVlc3RJbmZvKTtcclxuICB9XHJcblxyXG5cclxuICAvKipcclxuICAgKiDlt7Llup/lvIPvvIzor7fkvb/nlKhyZXBvc2l0b3J5LnByb3h55a+55bqU5pa55rOV5Luj5pu/XHJcbiAgICogQGRlcHJlY2F0ZWRcclxuICAgKi9cclxuICBwdWJsaWMgY2FuY2VsKG9wdGlvbnM/OiBhbnkpOiBPYnNlcnZhYmxlPGFueT4ge1xyXG4gICAgcmV0dXJuIHRoaXMucHJveHkuY2FuY2VsKG9wdGlvbnMpO1xyXG4gIH1cclxuXHJcbiAgLy8gI2VuZHJlZ2lvblxyXG5cclxuXHJcbiAgLy8gI3JlZ2lvbiByZXF1ZXN05pa55rOVXHJcblxyXG4gIC8qKlxyXG4gICAqIOW3suW6n+W8g++8jOivt+S9v+eUqHJlcG9zaXRvcnkucHJveHnlr7nlupTmlrnms5Xku6Pmm79cclxuICAgKiBAZGVwcmVjYXRlZFxyXG4gICAqL1xyXG4gIHB1YmxpYyByZXF1ZXN0KFxyXG4gICAgdXJsOiBzdHJpbmcsIG1ldGhvZDogc3RyaW5nLCBwYXJhbXM/OiBhbnksIG9wdGlvbnM/OiBhbnksXHJcbiAgICBzZWxmSGFuZEVycm9yPzogYm9vbGVhbiwgaWdub3JlRXJyb3I/OiBib29sZWFuLCBpZ25vcmVDaGFuZ2VzPzogYm9vbGVhblxyXG4gICk6IE9ic2VydmFibGU8YW55PiB7XHJcbiAgICByZXR1cm4gdGhpcy5pbm5lclJlcXVlc3QodXJsLCBtZXRob2QsIHBhcmFtcywgb3B0aW9ucywgc2VsZkhhbmRFcnJvciwgaWdub3JlRXJyb3IsIGlnbm9yZUNoYW5nZXMsIGZhbHNlKTtcclxuICB9XHJcbiAgLy8gdHNsaW50OmRpc2FibGU6IGFsaWduXHJcblxyXG4gIC8qKlxyXG4gICAqIOiwg+eUqOWQjuerr+aWueazlVxyXG4gICAqIEBwYXJhbSB1cmwgdXJsXHJcbiAgICogQHBhcmFtIG1ldGhvZCBtZXRob2RcclxuICAgKiBAcGFyYW0gcGFyYW1zIHBhcmFtc1xyXG4gICAqIEBwYXJhbSBvcHRpb25zIG9wdGlvbnNcclxuICAgKiBAcGFyYW0gc2VsZkhhbmRFcnJvciDoh6rlt7HlpITnkIblvILluLhcclxuICAgKiBAcGFyYW0gaWdub3JlRXJyb3Ig5b+955Wl6ZSZ6K+vXHJcbiAgICogQHBhcmFtIGlnbm9yZUNoYW5nZXMg5b+955Wl5Y+Y5pu0XHJcbiAgICovXHJcbiAgcHVibGljIGludm9rZSh1cmw6IHN0cmluZywgbWV0aG9kOiBzdHJpbmcsIHBhcmFtcz86IGFueSwgb3B0aW9ucz86IGFueSxcclxuICAgIHNlbGZIYW5kRXJyb3I/OiBib29sZWFuLCBpZ25vcmVFcnJvcj86IGJvb2xlYW4sIGlnbm9yZUNoYW5nZXM/OiBib29sZWFuKSB7XHJcbiAgICBpZiAob3B0aW9ucyAmJiBvcHRpb25zLmJvZHkgJiYgb3B0aW9ucy5ib2R5LlJlcXVlc3RJbmZvKSB7XHJcbiAgICAgIHRocm93IG5ldyBFcnJvcign6K+35L2/55SocmVxdWVzdEluZm/mj5DkuqTlj5jmm7QnKTtcclxuICAgIH1cclxuICAgIHJldHVybiB0aGlzLmlubmVyUmVxdWVzdCh1cmwsIG1ldGhvZCwgcGFyYW1zLCBvcHRpb25zLCBzZWxmSGFuZEVycm9yLCBpZ25vcmVFcnJvciwgaWdub3JlQ2hhbmdlcywgdHJ1ZSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiDlhoXpg6jnmoRyZXF1ZXN05pa55rOVXHJcbiAgICovXHJcbiAgcHJpdmF0ZSBpbm5lclJlcXVlc3QoXHJcbiAgICB1cmw6IHN0cmluZywgbWV0aG9kOiBzdHJpbmcsIHBhcmFtcz86IGFueSwgb3B0aW9ucz86IGFueSxcclxuICAgIHNlbGZIYW5kRXJyb3I/OiBib29sZWFuLCBpZ25vcmVFcnJvcj86IGJvb2xlYW4sIGlnbm9yZUNoYW5nZXM/OiBib29sZWFuLFxyXG4gICAgdXNlQ29ycmVjdFJlcXVlc3RJbmZvQ2hlY2tNZXRob2Q/OiBib29sZWFuXHJcbiAgKSB7XHJcbiAgICBvcHRpb25zID0gb3B0aW9ucyB8fCB7fTtcclxuICAgIGNvbnN0IGJlZlNlc3Npb25JZEtleSA9ICdCRUZTZXNzaW9uSUQnO1xyXG5cclxuICAgIC8vIOaYr+WQpuiHquW3seWkhOeQhuW8guW4uFxyXG4gICAgaWYgKHR5cGVvZiAoc2VsZkhhbmRFcnJvcikgPT09ICd1bmRlZmluZWQnIHx8IHR5cGVvZiAoc2VsZkhhbmRFcnJvcikgIT09ICdib29sZWFuJykge1xyXG4gICAgICBzZWxmSGFuZEVycm9yID0gZmFsc2U7XHJcbiAgICB9XHJcblxyXG4gICAgLy8g5piv5ZCm5b+955Wl5byC5bi457un57ut5omn6KGMXHJcbiAgICBpZiAodHlwZW9mIChpZ25vcmVFcnJvcikgPT09ICd1bmRlZmluZWQnIHx8IHR5cGVvZiAoaWdub3JlRXJyb3IpICE9PSAnYm9vbGVhbicpIHtcclxuICAgICAgaWdub3JlRXJyb3IgPSBmYWxzZTtcclxuICAgIH1cclxuXHJcbiAgICAvLyDpgInmi6nmo4Dmn6VSZXF1ZXN0SW5mb+eahOaWueazlVxyXG4gICAgaWYgKHR5cGVvZiAodXNlQ29ycmVjdFJlcXVlc3RJbmZvQ2hlY2tNZXRob2QpID09PSAndW5kZWZpbmVkJyB8fCB0eXBlb2YgKHVzZUNvcnJlY3RSZXF1ZXN0SW5mb0NoZWNrTWV0aG9kKSAhPT0gJ2Jvb2xlYW4nKSB7XHJcbiAgICAgIHVzZUNvcnJlY3RSZXF1ZXN0SW5mb0NoZWNrTWV0aG9kID0gZmFsc2U7XHJcbiAgICB9XHJcbiAgICBjb25zdCBjaGVja1JlcXVlc3RJbmZvTWV0aG9kID0gdXNlQ29ycmVjdFJlcXVlc3RJbmZvQ2hlY2tNZXRob2QgPyB0aGlzLmV4aXN0UmVxdWVzdEluZm8gOiB0aGlzLmhhc1JlcXVlc3RJbmZvO1xyXG5cclxuICAgIC8vIHBhcmFtc1xyXG4gICAgaWYgKHBhcmFtcykge1xyXG4gICAgICAvLyBjb25zdCBodHRwUGFyYW1zID0gdGhpcy5idWlsZFBhcmFtcyhwYXJhbXMpO1xyXG4gICAgICBvcHRpb25zLnBhcmFtcyA9IHBhcmFtcztcclxuICAgIH1cclxuXHJcbiAgICAvLyDluKbmnIlyZXF1ZXN0SW5mb+eahOivt+axgu+8jOivt+axguaIkOWKn+WQjua4heepuuWPmOabtOmbhlxyXG4gICAgY29uc3QgaGFzUmVxdWVzdEluZm8gPSBjaGVja1JlcXVlc3RJbmZvTWV0aG9kKG9wdGlvbnMpO1xyXG4gICAgbGV0IGhlYWRlcnMgPSBIdHRwSGVhZGVyVXRpbC5jb252ZXJ0VG9IZWFkZXJzKG9wdGlvbnMuaGVhZGVycyk7XHJcblxyXG4gICAgLy8g5Liy6IGUc2Vzc2lvbua1geWSjGh0dHDmtYFcclxuICAgIHJldHVybiB0aGlzLnNlc3Npb25TZXJ2aWNlLmdldEJlU2Vzc2lvbklkKCkucGlwZShcclxuICAgICAgc3dpdGNoTWFwKChzZXNzaW9uSWQ6IHN0cmluZykgPT4ge1xyXG4gICAgICAgIGhlYWRlcnMgPSB0aGlzLnNlc3Npb25TZXJ2aWNlLmV4dGVuZFJlcXVlc3RIZWFkZXJzKGhlYWRlcnMpO1xyXG4gICAgICAgIG9wdGlvbnMuaGVhZGVycyA9IEh0dHBIZWFkZXJVdGlsLnRvSnNvbihoZWFkZXJzKTtcclxuICAgICAgICBvcHRpb25zLm9ic2VydmUgPSAncmVzcG9uc2UnO1xyXG4gICAgICAgIHJldHVybiB0aGlzLmh0dHBTZXJ2aWNlLnJlcXVlc3QobWV0aG9kLCB1cmwsIG9wdGlvbnMpO1xyXG4gICAgICB9KSxcclxuICAgICAgdGFwKChyZXNwb25zZTogYW55KSA9PiB7XHJcbiAgICAgICAgaWYgKHJlc3BvbnNlLmhlYWRlcnMgJiYgcmVzcG9uc2UuaGVhZGVycy5oYXMoYmVmU2Vzc2lvbklkS2V5KSkge1xyXG4gICAgICAgICAgdGhpcy5zZXNzaW9uU2VydmljZS5zZXRCZVNlc3Npb25JZChyZXNwb25zZS5oZWFkZXJzLmdldChiZWZTZXNzaW9uSWRLZXkpKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pLFxyXG4gICAgICBtYXAoKHJlc3BvbnNlOiBhbnkpID0+IHJlc3BvbnNlLmJvZHkpLFxyXG4gICAgICBtYXAoKHJlc3VsdDogYW55KSA9PiB7XHJcbiAgICAgICAgY29uc3QgbWVzc2FnZXMgPSBSZXNwb25zZUluZm9VdGlsLnBhcnNlQmFja0VuZE1lc3NhZ2UocmVzdWx0KTtcclxuICAgICAgICBCYWNrRW5kTWVzc2FnZVV0aWwuaGFuZGxlTWVzc2FnZShtZXNzYWdlcywgdGhpcy5yZXBvc2l0b3J5LmdldEluamVjdG9yKCkpO1xyXG4gICAgICAgIHJldHVybiB0aGlzLmhhbmRsZVJlcG9uc2VJbmZvKHJlc3VsdCwgaGFzUmVxdWVzdEluZm8sIGlnbm9yZUNoYW5nZXMpO1xyXG4gICAgICB9KSxcclxuICAgICAgY2F0Y2hFcnJvcigoZXJyb3I6IGFueSkgPT4ge1xyXG4gICAgICAgIGNvbnN0IG1lc3NhZ2VzID0gUmVzcG9uc2VJbmZvVXRpbC5wYXJzZUJhY2tFbmRFcnJvcihlcnJvcik7XHJcbiAgICAgICAgQmFja0VuZE1lc3NhZ2VVdGlsLmhhbmRsZU1lc3NhZ2UobWVzc2FnZXMsIHRoaXMucmVwb3NpdG9yeS5nZXRJbmplY3RvcigpKTtcclxuICAgICAgICByZXR1cm4gdGhpcy5oYW5kbGVFcnJvcnMoZXJyb3IsIHNlbGZIYW5kRXJyb3IsIGlnbm9yZUVycm9yKTtcclxuICAgICAgfSlcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiDlpITnkIbov5Tlm57nu5PmnpxcclxuICAgKi9cclxuICBwdWJsaWMgaGFuZGxlUmVwb25zZUluZm8ocmVzdWx0OiBhbnksIGhhc1JlcXVlc3RJbmZvOiBib29sZWFuLCBpZ25vcmVDaGFuZ2VzOiBib29sZWFuKTogYW55IHtcclxuICAgIGlmIChoYXNSZXF1ZXN0SW5mbykge1xyXG4gICAgICAvLyDlpoLmnpzmnInluKbmnIlSZXF1ZXN0SW5mb++8jOWImeaMieaWsOe7k+aehOWkhOeQhlxyXG4gICAgICAvLyAx44CB5bqU55So5pyN5Yqh5Zmo56uv6L+U5Zue55qE5Y+Y5pu077ybXHJcbiAgICAgIC8vIDLjgIHmuIXnqbrmnKzlnLDlj5jmm7Tpm4bvvJtcclxuICAgICAgLy8gM+OAgei/lOWbnuaWsOe7k+aehFxyXG4gICAgICBpZiAocmVzdWx0ICYmIHJlc3VsdC5pbm5lckRhdGFDaGFuZ2UgJiYgaWdub3JlQ2hhbmdlcyAhPT0gdHJ1ZSkge1xyXG4gICAgICAgIHRoaXMucmVwb3NpdG9yeS5oYW5kbGVEYXRhQ2hhbmdlRGV0YWlscyhyZXN1bHQuaW5uZXJEYXRhQ2hhbmdlKTtcclxuICAgICAgfVxyXG4gICAgICB0aGlzLnJlcG9zaXRvcnkuY2xlYXJBbGxFbnRpdHlDaGFuZ2VzKCk7XHJcbiAgICAgIHJldHVybiByZXN1bHQ7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICAvLyDlpoLmnpzmnInmsqHmnIlSZXF1ZXN0SW5mb++8jOWImeaMieiAgeeahOaWueW8j+WkhOeQhlxyXG4gICAgICAvLyAx44CB5LiN5aSE55CG5pyN5Yqh5Zmo56uv6L+U5Zue55qE5Y+Y5pu077ya6Lef6ICB55qE6KGM5Li65LiA5qC377ybXHJcbiAgICAgIC8vIDLjgIHkuI3muIXnkIbmnKzlnLDlj5jmm7TvvJrlm6DkuLrlj5jmm7TmsqHmnInmj5DkuqTvvJtcclxuICAgICAgLy8gM+OAgei/lOWbnuiAgeeahOe7k+aehO+8muWFvOWuueiAgeeahOS7o+eggVxyXG4gICAgICByZXR1cm4gdGhpcy51bldyYXBSZXNwb25zZUluZm8ocmVzdWx0KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIOmUmeivr+WkhOeQhlxyXG4gICAqL1xyXG4gIHB1YmxpYyBoYW5kbGVFcnJvcnMoZXJyb3I6IGFueSwgc2VsZkhhbmRFcnJvcjogYm9vbGVhbiwgaWdub3JlRXJyb3I6IGJvb2xlYW4pOiBPYnNlcnZhYmxlPGFueT4ge1xyXG4gICAgdGhpcy5jbGVhckxvYWRpbmcoKTtcclxuXHJcbiAgICBpZiAoISFzZWxmSGFuZEVycm9yKSB7XHJcbiAgICAgIHJldHVybiB0aHJvd0Vycm9yKGVycm9yKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGNvbnN0IGZvcm1BcHBDb250ZXh0ID0gdGhpcy5yZXBvc2l0b3J5LmFwcENvbnRleHQuZ2V0Rm9ybUFwcENvbnRleHQoKTtcclxuICAgICAgY29uc3QgYXBwbGljYXRpb25JZCA9IGZvcm1BcHBDb250ZXh0LkFwcGxpY2F0aW9uSWQ7XHJcbiAgICAgIGNvbnN0IGFwcGxpY2F0aW9uQ29udGV4dDogYW55ID0gd2luZG93W2FwcGxpY2F0aW9uSWRdIHx8IHt9O1xyXG4gICAgICBjb25zdCBpc0V4Y2VwdGlvbkhhbmRsZXJFeGlzdCA9ICEhYXBwbGljYXRpb25Db250ZXh0LmlzRXhjZXB0aW9uSGFuZGxlckV4aXN0O1xyXG4gICAgICBpZiAoISF0aGlzLmV2ZW50QnVzICYmIGlzRXhjZXB0aW9uSGFuZGxlckV4aXN0KSB7XHJcbiAgICAgICAgaWYgKFJlc3BvbnNlSW5mb1V0aWwuaXNSZXBvcnRlZDQwMUVycm9yKGVycm9yKSkge1xyXG4gICAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoZXJyb3IpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBjb25zdCBtZXNzYWdlcyA9IFJlc3BvbnNlSW5mb1V0aWwucGFyc2VCYWNrRW5kRXJyb3IoZXJyb3IpO1xyXG4gICAgICAgIGNvbnN0IGJpek1lc3NhZ2VzID0gQmFja0VuZE1lc3NhZ2VVdGlsLmdldEZvcm1sZXNzTWVzc2FnZXMobWVzc2FnZXMpO1xyXG4gICAgICAgIGNvbnN0IGlzRXhpc3RGb3JtbGVzc01lc3NhZ2UgPSBiaXpNZXNzYWdlcyAmJiBiaXpNZXNzYWdlcy5sZW5ndGggPiAwIHx8IGZhbHNlO1xyXG4gICAgICAgIGlmICghKGVycm9yICYmIGVycm9yLmVycm9yICYmIGVycm9yLmVycm9yLmV4dGVuc2lvbk1lc3NhZ2UgJiYgQmFja0VuZE1lc3NhZ2VVdGlsLmlzQmFja0VuZE1lc3NhZ2VIYW5kbGVyRXhpc3QodGhpcy5yZXBvc2l0b3J5LmdldEluamVjdG9yKCkpICYmICFpc0V4aXN0Rm9ybWxlc3NNZXNzYWdlKSkge1xyXG4gICAgICAgICAgdGhpcy5ldmVudEJ1cy5wb3N0KCdFeGNlcHRpb24nLCAnJywgJ29uRXhjZXB0aW9uJywgZXJyb3IsIGZvcm1BcHBDb250ZXh0KTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKGlnbm9yZUVycm9yKSB7XHJcbiAgICAgICAgICByZXR1cm4gb2YobnVsbCk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHJldHVybiBFTVBUWTtcclxuICAgICAgICB9XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoZXJyb3IpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG4gIC8vICNlbmRyZWdpb25cclxuXHJcblxyXG4gIC8vICNyZWdpb24g5bel5YW35pa55rOVXHJcblxyXG4gIC8qKlxyXG4gICAqIOa4heepukxvYWRpbmdcclxuICAgKi9cclxuICBwcml2YXRlIGNsZWFyTG9hZGluZygpOiB2b2lkIHtcclxuICAgIGNvbnN0IGlmTG9hZGluZ0V4aXN0cyA9IHdpbmRvd1snREVWS0lUX0xPQURJTkdfU0VSVklDRSddICYmXHJcbiAgICAgIHdpbmRvd1snREVWS0lUX0xPQURJTkdfU0VSVklDRSddIGluc3RhbmNlb2YgQXJyYXkgJiZcclxuICAgICAgd2luZG93WydERVZLSVRfTE9BRElOR19TRVJWSUNFJ10ubGVuZ3RoID4gMCB8fCBmYWxzZTtcclxuXHJcbiAgICBpZiAoaWZMb2FkaW5nRXhpc3RzID09PSBmYWxzZSkge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3QgbG9hZGluZ1NlcnZpY2VzOiBhbnlbXSA9IHdpbmRvd1snREVWS0lUX0xPQURJTkdfU0VSVklDRSddO1xyXG4gICAgZm9yIChjb25zdCBzZXJ2aWNlIG9mIGxvYWRpbmdTZXJ2aWNlcykge1xyXG4gICAgICBpZiAodHlwZW9mIChzZXJ2aWNlLmNsZWFyQWxsKSA9PT0gJ2Z1bmN0aW9uJykge1xyXG4gICAgICAgIHNlcnZpY2UuY2xlYXJBbGwoKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICog5aSE55CG6L+U5Zue5YC877yM5YW85a656ICB54mI5pysXHJcbiAgICovXHJcbiAgcHJpdmF0ZSB1bldyYXBSZXNwb25zZUluZm8ocmVzdWx0OiBhbnkpOiBhbnkge1xyXG4gICAgcmV0dXJuIFJlc3BvbnNlSW5mb1V0aWwudW5XcmFwUmVzcG9uc2VJbmZvKHJlc3VsdCk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiDmmK/lkKbluKbmnIlSZXF1ZXN0SW5mb1xyXG4gICAqL1xyXG4gIHByaXZhdGUgaGFzUmVxdWVzdEluZm8ob3B0aW9uczogYW55KTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gUmVxdWVzdEluZm9VdGlsLmhhc1JlcXVlc3RJbmZvV2l0aFIob3B0aW9ucyk7XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIOaYr+WQpuW4puaciXJlcXVlc3RJbmZvXHJcbiAgICovXHJcbiAgcHJpdmF0ZSBleGlzdFJlcXVlc3RJbmZvKG9wdGlvbnM6IGFueSkge1xyXG4gICAgcmV0dXJuIFJlcXVlc3RJbmZvVXRpbC5oYXNSZXF1ZXN0SW5mbyhvcHRpb25zKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIOaehOmAoEh0dHBQYXJhbXPlr7nosaFcclxuICAgKiBAcGFyYW0gcGFyYW1zIOivt+axguWPguaVsFxyXG4gICAqL1xyXG4gIHByaXZhdGUgYnVpbGRQYXJhbXMocGFyYW1zOiBhbnkpOiBIdHRwUGFyYW1zIHtcclxuICAgIHJldHVybiBIdHRwUGFyYW1VdGlsLmJ1aWxkUGFyYW1zKHBhcmFtcyk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiDmnoTpgKDluKZSZXF1ZXN0SW5mb+eahEJvZHnvvIjpgILnlKjkuo7lpJrkuKrlj4LmlbDnmoTmg4XlhrXvvIzlpoLmnpzlj6rmnInkuIDkuKpSZXF1ZXN0SW5mb+WPguaVsO+8jGJvZHk9UmVxdWVzdEluZm/vvIlcclxuICAgKiBAYm9keSDmnKrmkLrluKZSZXF1ZXN0SW5mb+eahGJvZHnvvIzmoLzlvI/lvaLlpoI6IHtrZXkxOiB2YWx1ZTEsIGtleTI6IHZhbHVlMn1cclxuICAgKi9cclxuICBwdWJsaWMgYnVpbGRCb2R5V2l0aFJlcXVlc3RJbmZvKGJvZHk6IGFueSk6IGFueSB7XHJcbiAgICByZXR1cm4gUmVxdWVzdEluZm9VdGlsLmJ1aWxkQm9keVdpdGhSZXF1ZXN0SW5mbyhib2R5LCB0aGlzLnJlcG9zaXRvcnkpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICog5p6E6YCgUmVxdWVzdEluZm9cclxuICAgKi9cclxuICBwdWJsaWMgYnVpbGRSZXF1ZXN0SW5mbygpOiBSZXF1ZXN0SW5mbyB7XHJcbiAgICByZXR1cm4gUmVxdWVzdEluZm9VdGlsLmJ1aWxkUmVxdWVzdEluZm8odGhpcy5yZXBvc2l0b3J5KTtcclxuICB9XHJcblxyXG4gIC8vICNlbmRyZWdpb25cclxuXHJcbn1cclxuXHJcbmV4cG9ydCB7IEJlZlJlc3RTZXJ2aWNlIH07XHJcblxyXG4iXX0=

@@ -57,2 +57,21 @@ /**

*/
BackEndMessageUtil.getFormlessMessages = /**
* @param {?} messages
* @return {?}
*/
function (messages) {
/** @type {?} */
var bizMessages = this.buildBackEndMessages(messages) || [];
return bizMessages.filter((/**
* @param {?} message
* @return {?}
*/
function (message) {
return !message.location || !message.location.columns || message.location.columns.length < 1 || !message.location.nodeCode;
}));
};
/**
* @param {?} messages
* @return {?}
*/
BackEndMessageUtil.buildBackEndMessages = /**

@@ -92,2 +111,2 @@ * @param {?} messages

export { BackEndMessageUtil };
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFja19lbmRfbWVzc2FnZS51dGlsLmpzIiwic291cmNlUm9vdCI6Im5nOi8vQGZhcnJpcy9iZWYvIiwic291cmNlcyI6WyJsaWIvdXRpbHMvYmFja19lbmRfbWVzc2FnZS51dGlsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQ0EsT0FBTyxFQUFFLFVBQVUsRUFBRSxjQUFjLEVBQUUsOEJBQThCLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFdkc7SUFBQTtJQXdDQSxDQUFDOzs7Ozs7SUF2Q2UsZ0NBQWE7Ozs7O0lBQTNCLFVBQTRCLFFBQWtCLEVBQUUsUUFBa0I7O1lBQzFELFNBQVMsR0FBRyxRQUFRLENBQUMsR0FBRyxDQUFDLFNBQVMsRUFBRSxJQUFJLENBQUM7O1lBQ3pDLFVBQVUsR0FBRyxRQUFRLENBQUMsR0FBRyxDQUFhLFVBQVUsRUFBRSxJQUFJLENBQUM7O1lBQ3ZELE9BQU8sR0FBbUM7WUFDOUMsRUFBRSxFQUFFLFNBQVM7WUFDYixVQUFVLFlBQUE7U0FDWDs7WUFDSyxXQUFXLEdBQUcsSUFBSSxDQUFDLG9CQUFvQixDQUFDLFFBQVEsQ0FBQzs7WUFDakQsY0FBYyxHQUFHLElBQUksY0FBYyxDQUFDLE9BQU8sQ0FBQyxXQUFXLEVBQUUsT0FBTyxDQUFDOztZQUNqRSxxQkFBcUIsR0FBRyxRQUFRLENBQUMsR0FBRyxDQUF3Qyw4QkFBOEIsRUFBRSxJQUFJLENBQUM7UUFDdkgsSUFBSSxxQkFBcUIsRUFBRTtZQUN6QixxQkFBcUIsQ0FBQyxNQUFNLENBQUMsY0FBYyxDQUFDLENBQUM7U0FDOUM7SUFDSCxDQUFDOzs7OztJQUNhLCtDQUE0Qjs7OztJQUExQyxVQUEyQyxRQUFrQjs7WUFDckQscUJBQXFCLEdBQUcsUUFBUSxDQUFDLEdBQUcsQ0FBd0MsOEJBQThCLEVBQUUsSUFBSSxDQUFDO1FBQ3ZILE9BQU8scUJBQXFCLElBQUksSUFBSSxJQUFJLEtBQUssQ0FBQztJQUNoRCxDQUFDOzs7OztJQUNhLHVDQUFvQjs7OztJQUFsQyxVQUFtQyxRQUFrQjtRQUNuRCxJQUFJLENBQUMsUUFBUSxJQUFJLFFBQVEsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsRUFBRTtZQUNoRSxPQUFPLElBQUksQ0FBQztTQUNiOztZQUNLLFdBQVcsR0FBaUMsRUFBRTtRQUNwRCxRQUFRLENBQUMsT0FBTzs7OztRQUFDLFVBQUMsT0FBWTs7Z0JBQ3RCLFVBQVUsR0FBK0I7Z0JBQzdDLEtBQUssRUFBRSxPQUFPLENBQUMsS0FBSztnQkFDcEIsT0FBTyxFQUFFLE9BQU8sQ0FBQyxPQUFPO2FBQ3pCO1lBQ0QsSUFBSSxPQUFPLENBQUMsY0FBYyxDQUFDLFVBQVUsQ0FBQyxJQUFJLE9BQU8sQ0FBQyxRQUFRLEVBQUU7Z0JBQzFELFVBQVUsQ0FBQyxRQUFRLEdBQUc7b0JBQ3BCLFFBQVEsRUFBRSxPQUFPLENBQUMsUUFBUSxDQUFDLFFBQVE7b0JBQ25DLElBQUksRUFBRSxPQUFPLENBQUMsUUFBUSxDQUFDLE9BQU87b0JBQzlCLE9BQU8sRUFBRSxPQUFPLENBQUMsUUFBUSxDQUFDLFdBQVc7aUJBQ3RDLENBQUM7YUFDSDtZQUNELFdBQVcsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDL0IsQ0FBQyxFQUFDLENBQUM7UUFDSCxPQUFPLFdBQVcsQ0FBQztJQUNyQixDQUFDO0lBQ0gseUJBQUM7QUFBRCxDQUFDLEFBeENELElBd0NDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0b3IgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5pbXBvcnQgeyBBcHBDb250ZXh0LCBCYWNrRW5kTWVzc2FnZSwgQkFDS19FTkRfTUVTU0FHRV9IQU5ETEVSX1RPS0VOLCBOQU1FU1BBQ0UgfSBmcm9tIFwiQGZhcnJpcy9kZXZraXRcIjtcclxuXHJcbmV4cG9ydCBjbGFzcyBCYWNrRW5kTWVzc2FnZVV0aWwge1xyXG4gIHB1YmxpYyBzdGF0aWMgaGFuZGxlTWVzc2FnZShtZXNzYWdlczogb2JqZWN0W10sIGluamVjdG9yOiBJbmplY3Rvcikge1xyXG4gICAgY29uc3QgbmFtZXNwYWNlID0gaW5qZWN0b3IuZ2V0KE5BTUVTUEFDRSwgbnVsbCk7XHJcbiAgICBjb25zdCBhcHBDb250ZXh0ID0gaW5qZWN0b3IuZ2V0PEFwcENvbnRleHQ+KEFwcENvbnRleHQsIG51bGwpO1xyXG4gICAgY29uc3QgY29udGV4dDogQmFja0VuZE1lc3NhZ2UuSU1lc3NhZ2VDb250ZXh0ID0ge1xyXG4gICAgICBuczogbmFtZXNwYWNlLFxyXG4gICAgICBhcHBDb250ZXh0XHJcbiAgICB9O1xyXG4gICAgY29uc3QgYml6TWVzc2FnZXMgPSB0aGlzLmJ1aWxkQmFja0VuZE1lc3NhZ2VzKG1lc3NhZ2VzKTtcclxuICAgIGNvbnN0IGJhY2tFbmRNZXNzYWdlID0gbmV3IEJhY2tFbmRNZXNzYWdlLk1lc3NhZ2UoYml6TWVzc2FnZXMsIGNvbnRleHQpO1xyXG4gICAgY29uc3QgYmFja0VuZE1lc3NhZ2VIYW5kbGVyID0gaW5qZWN0b3IuZ2V0PEJhY2tFbmRNZXNzYWdlLklCYWNrRW5kTWVzc2FnZUhhbmRsZXI+KEJBQ0tfRU5EX01FU1NBR0VfSEFORExFUl9UT0tFTiwgbnVsbCk7XHJcbiAgICBpZiAoYmFja0VuZE1lc3NhZ2VIYW5kbGVyKSB7XHJcbiAgICAgIGJhY2tFbmRNZXNzYWdlSGFuZGxlci5oYW5kbGUoYmFja0VuZE1lc3NhZ2UpO1xyXG4gICAgfVxyXG4gIH1cclxuICBwdWJsaWMgc3RhdGljIGlzQmFja0VuZE1lc3NhZ2VIYW5kbGVyRXhpc3QoaW5qZWN0b3I6IEluamVjdG9yKSB7XHJcbiAgICBjb25zdCBiYWNrRW5kTWVzc2FnZUhhbmRsZXIgPSBpbmplY3Rvci5nZXQ8QmFja0VuZE1lc3NhZ2UuSUJhY2tFbmRNZXNzYWdlSGFuZGxlcj4oQkFDS19FTkRfTUVTU0FHRV9IQU5ETEVSX1RPS0VOLCBudWxsKTtcclxuICAgIHJldHVybiBiYWNrRW5kTWVzc2FnZUhhbmRsZXIgJiYgdHJ1ZSB8fCBmYWxzZTtcclxuICB9XHJcbiAgcHVibGljIHN0YXRpYyBidWlsZEJhY2tFbmRNZXNzYWdlcyhtZXNzYWdlczogb2JqZWN0W10pOiBCYWNrRW5kTWVzc2FnZS5JQml6TWVzc2FnZVtdIHtcclxuICAgIGlmICghbWVzc2FnZXMgfHwgbWVzc2FnZXMubGVuZ3RoIDwgMSB8fCAhQXJyYXkuaXNBcnJheShtZXNzYWdlcykpIHtcclxuICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICB9XHJcbiAgICBjb25zdCBiaXpNZXNzYWdlczogQmFja0VuZE1lc3NhZ2UuSUJpek1lc3NhZ2VbXSA9IFtdO1xyXG4gICAgbWVzc2FnZXMuZm9yRWFjaCgobWVzc2FnZTogYW55KSA9PiB7XHJcbiAgICAgIGNvbnN0IGJpek1lc3NhZ2U6IEJhY2tFbmRNZXNzYWdlLklCaXpNZXNzYWdlID0ge1xyXG4gICAgICAgIGxldmVsOiBtZXNzYWdlLmxldmVsLFxyXG4gICAgICAgIG1lc3NhZ2U6IG1lc3NhZ2UubWVzc2FnZVxyXG4gICAgICB9O1xyXG4gICAgICBpZiAobWVzc2FnZS5oYXNPd25Qcm9wZXJ0eSgnbG9jYXRpb24nKSAmJiBtZXNzYWdlLmxvY2F0aW9uKSB7XHJcbiAgICAgICAgYml6TWVzc2FnZS5sb2NhdGlvbiA9IHtcclxuICAgICAgICAgIG5vZGVDb2RlOiBtZXNzYWdlLmxvY2F0aW9uLm5vZGVDb2RlLFxyXG4gICAgICAgICAgcm93czogbWVzc2FnZS5sb2NhdGlvbi5kYXRhSWRzLFxyXG4gICAgICAgICAgY29sdW1uczogbWVzc2FnZS5sb2NhdGlvbi5jb2x1bW5OYW1lc1xyXG4gICAgICAgIH07XHJcbiAgICAgIH1cclxuICAgICAgYml6TWVzc2FnZXMucHVzaChiaXpNZXNzYWdlKTtcclxuICAgIH0pO1xyXG4gICAgcmV0dXJuIGJpek1lc3NhZ2VzO1xyXG4gIH1cclxufSJdfQ==
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFja19lbmRfbWVzc2FnZS51dGlsLmpzIiwic291cmNlUm9vdCI6Im5nOi8vQGZhcnJpcy9iZWYvIiwic291cmNlcyI6WyJsaWIvdXRpbHMvYmFja19lbmRfbWVzc2FnZS51dGlsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQ0EsT0FBTyxFQUFFLFVBQVUsRUFBRSxjQUFjLEVBQUUsOEJBQThCLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFdkc7SUFBQTtJQThDQSxDQUFDOzs7Ozs7SUE3Q2UsZ0NBQWE7Ozs7O0lBQTNCLFVBQTRCLFFBQWtCLEVBQUUsUUFBa0I7O1lBQzFELFNBQVMsR0FBRyxRQUFRLENBQUMsR0FBRyxDQUFDLFNBQVMsRUFBRSxJQUFJLENBQUM7O1lBQ3pDLFVBQVUsR0FBRyxRQUFRLENBQUMsR0FBRyxDQUFhLFVBQVUsRUFBRSxJQUFJLENBQUM7O1lBQ3ZELE9BQU8sR0FBbUM7WUFDOUMsRUFBRSxFQUFFLFNBQVM7WUFDYixVQUFVLFlBQUE7U0FDWDs7WUFDSyxXQUFXLEdBQUcsSUFBSSxDQUFDLG9CQUFvQixDQUFDLFFBQVEsQ0FBQzs7WUFDakQsY0FBYyxHQUFHLElBQUksY0FBYyxDQUFDLE9BQU8sQ0FBQyxXQUFXLEVBQUUsT0FBTyxDQUFDOztZQUNqRSxxQkFBcUIsR0FBRyxRQUFRLENBQUMsR0FBRyxDQUF3Qyw4QkFBOEIsRUFBRSxJQUFJLENBQUM7UUFDdkgsSUFBSSxxQkFBcUIsRUFBRTtZQUN6QixxQkFBcUIsQ0FBQyxNQUFNLENBQUMsY0FBYyxDQUFDLENBQUM7U0FDOUM7SUFDSCxDQUFDOzs7OztJQUNhLCtDQUE0Qjs7OztJQUExQyxVQUEyQyxRQUFrQjs7WUFDckQscUJBQXFCLEdBQUcsUUFBUSxDQUFDLEdBQUcsQ0FBd0MsOEJBQThCLEVBQUUsSUFBSSxDQUFDO1FBQ3ZILE9BQU8scUJBQXFCLElBQUksSUFBSSxJQUFJLEtBQUssQ0FBQztJQUNoRCxDQUFDOzs7OztJQUNhLHNDQUFtQjs7OztJQUFqQyxVQUFrQyxRQUFzQzs7WUFDaEUsV0FBVyxHQUFHLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFO1FBQzdELE9BQU8sV0FBVyxDQUFDLE1BQU07Ozs7UUFBQyxVQUFDLE9BQW1DO1lBQzVELE9BQU8sQ0FBQyxPQUFPLENBQUMsUUFBUSxJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxPQUFPLElBQUksT0FBTyxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsTUFBTSxHQUFHLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDO1FBQzdILENBQUMsRUFBQyxDQUFDO0lBQ0wsQ0FBQzs7Ozs7SUFDYSx1Q0FBb0I7Ozs7SUFBbEMsVUFBbUMsUUFBa0I7UUFDbkQsSUFBSSxDQUFDLFFBQVEsSUFBSSxRQUFRLENBQUMsTUFBTSxHQUFHLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLEVBQUU7WUFDaEUsT0FBTyxJQUFJLENBQUM7U0FDYjs7WUFDSyxXQUFXLEdBQWlDLEVBQUU7UUFDcEQsUUFBUSxDQUFDLE9BQU87Ozs7UUFBQyxVQUFDLE9BQVk7O2dCQUN0QixVQUFVLEdBQStCO2dCQUM3QyxLQUFLLEVBQUUsT0FBTyxDQUFDLEtBQUs7Z0JBQ3BCLE9BQU8sRUFBRSxPQUFPLENBQUMsT0FBTzthQUN6QjtZQUNELElBQUksT0FBTyxDQUFDLGNBQWMsQ0FBQyxVQUFVLENBQUMsSUFBSSxPQUFPLENBQUMsUUFBUSxFQUFFO2dCQUMxRCxVQUFVLENBQUMsUUFBUSxHQUFHO29CQUNwQixRQUFRLEVBQUUsT0FBTyxDQUFDLFFBQVEsQ0FBQyxRQUFRO29CQUNuQyxJQUFJLEVBQUUsT0FBTyxDQUFDLFFBQVEsQ0FBQyxPQUFPO29CQUM5QixPQUFPLEVBQUUsT0FBTyxDQUFDLFFBQVEsQ0FBQyxXQUFXO2lCQUN0QyxDQUFDO2FBQ0g7WUFDRCxXQUFXLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQy9CLENBQUMsRUFBQyxDQUFDO1FBQ0gsT0FBTyxXQUFXLENBQUM7SUFDckIsQ0FBQztJQUNILHlCQUFDO0FBQUQsQ0FBQyxBQTlDRCxJQThDQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdG9yIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuaW1wb3J0IHsgQXBwQ29udGV4dCwgQmFja0VuZE1lc3NhZ2UsIEJBQ0tfRU5EX01FU1NBR0VfSEFORExFUl9UT0tFTiwgTkFNRVNQQUNFIH0gZnJvbSBcIkBmYXJyaXMvZGV2a2l0XCI7XHJcblxyXG5leHBvcnQgY2xhc3MgQmFja0VuZE1lc3NhZ2VVdGlsIHtcclxuICBwdWJsaWMgc3RhdGljIGhhbmRsZU1lc3NhZ2UobWVzc2FnZXM6IG9iamVjdFtdLCBpbmplY3RvcjogSW5qZWN0b3IpIHtcclxuICAgIGNvbnN0IG5hbWVzcGFjZSA9IGluamVjdG9yLmdldChOQU1FU1BBQ0UsIG51bGwpO1xyXG4gICAgY29uc3QgYXBwQ29udGV4dCA9IGluamVjdG9yLmdldDxBcHBDb250ZXh0PihBcHBDb250ZXh0LCBudWxsKTtcclxuICAgIGNvbnN0IGNvbnRleHQ6IEJhY2tFbmRNZXNzYWdlLklNZXNzYWdlQ29udGV4dCA9IHtcclxuICAgICAgbnM6IG5hbWVzcGFjZSxcclxuICAgICAgYXBwQ29udGV4dFxyXG4gICAgfTtcclxuICAgIGNvbnN0IGJpek1lc3NhZ2VzID0gdGhpcy5idWlsZEJhY2tFbmRNZXNzYWdlcyhtZXNzYWdlcyk7XHJcbiAgICBjb25zdCBiYWNrRW5kTWVzc2FnZSA9IG5ldyBCYWNrRW5kTWVzc2FnZS5NZXNzYWdlKGJpek1lc3NhZ2VzLCBjb250ZXh0KTtcclxuICAgIGNvbnN0IGJhY2tFbmRNZXNzYWdlSGFuZGxlciA9IGluamVjdG9yLmdldDxCYWNrRW5kTWVzc2FnZS5JQmFja0VuZE1lc3NhZ2VIYW5kbGVyPihCQUNLX0VORF9NRVNTQUdFX0hBTkRMRVJfVE9LRU4sIG51bGwpO1xyXG4gICAgaWYgKGJhY2tFbmRNZXNzYWdlSGFuZGxlcikge1xyXG4gICAgICBiYWNrRW5kTWVzc2FnZUhhbmRsZXIuaGFuZGxlKGJhY2tFbmRNZXNzYWdlKTtcclxuICAgIH1cclxuICB9XHJcbiAgcHVibGljIHN0YXRpYyBpc0JhY2tFbmRNZXNzYWdlSGFuZGxlckV4aXN0KGluamVjdG9yOiBJbmplY3Rvcikge1xyXG4gICAgY29uc3QgYmFja0VuZE1lc3NhZ2VIYW5kbGVyID0gaW5qZWN0b3IuZ2V0PEJhY2tFbmRNZXNzYWdlLklCYWNrRW5kTWVzc2FnZUhhbmRsZXI+KEJBQ0tfRU5EX01FU1NBR0VfSEFORExFUl9UT0tFTiwgbnVsbCk7XHJcbiAgICByZXR1cm4gYmFja0VuZE1lc3NhZ2VIYW5kbGVyICYmIHRydWUgfHwgZmFsc2U7XHJcbiAgfVxyXG4gIHB1YmxpYyBzdGF0aWMgZ2V0Rm9ybWxlc3NNZXNzYWdlcyhtZXNzYWdlczogQmFja0VuZE1lc3NhZ2UuSUJpek1lc3NhZ2VbXSkge1xyXG4gICAgY29uc3QgYml6TWVzc2FnZXMgPSB0aGlzLmJ1aWxkQmFja0VuZE1lc3NhZ2VzKG1lc3NhZ2VzKSB8fCBbXTtcclxuICAgIHJldHVybiBiaXpNZXNzYWdlcy5maWx0ZXIoKG1lc3NhZ2U6IEJhY2tFbmRNZXNzYWdlLklCaXpNZXNzYWdlKSA9PiB7XHJcbiAgICAgIHJldHVybiAhbWVzc2FnZS5sb2NhdGlvbiB8fCAhbWVzc2FnZS5sb2NhdGlvbi5jb2x1bW5zIHx8IG1lc3NhZ2UubG9jYXRpb24uY29sdW1ucy5sZW5ndGggPCAxIHx8ICFtZXNzYWdlLmxvY2F0aW9uLm5vZGVDb2RlO1xyXG4gICAgfSk7XHJcbiAgfVxyXG4gIHB1YmxpYyBzdGF0aWMgYnVpbGRCYWNrRW5kTWVzc2FnZXMobWVzc2FnZXM6IG9iamVjdFtdKTogQmFja0VuZE1lc3NhZ2UuSUJpek1lc3NhZ2VbXSB7XHJcbiAgICBpZiAoIW1lc3NhZ2VzIHx8IG1lc3NhZ2VzLmxlbmd0aCA8IDEgfHwgIUFycmF5LmlzQXJyYXkobWVzc2FnZXMpKSB7XHJcbiAgICAgIHJldHVybiBudWxsO1xyXG4gICAgfVxyXG4gICAgY29uc3QgYml6TWVzc2FnZXM6IEJhY2tFbmRNZXNzYWdlLklCaXpNZXNzYWdlW10gPSBbXTtcclxuICAgIG1lc3NhZ2VzLmZvckVhY2goKG1lc3NhZ2U6IGFueSkgPT4ge1xyXG4gICAgICBjb25zdCBiaXpNZXNzYWdlOiBCYWNrRW5kTWVzc2FnZS5JQml6TWVzc2FnZSA9IHtcclxuICAgICAgICBsZXZlbDogbWVzc2FnZS5sZXZlbCxcclxuICAgICAgICBtZXNzYWdlOiBtZXNzYWdlLm1lc3NhZ2VcclxuICAgICAgfTtcclxuICAgICAgaWYgKG1lc3NhZ2UuaGFzT3duUHJvcGVydHkoJ2xvY2F0aW9uJykgJiYgbWVzc2FnZS5sb2NhdGlvbikge1xyXG4gICAgICAgIGJpek1lc3NhZ2UubG9jYXRpb24gPSB7XHJcbiAgICAgICAgICBub2RlQ29kZTogbWVzc2FnZS5sb2NhdGlvbi5ub2RlQ29kZSxcclxuICAgICAgICAgIHJvd3M6IG1lc3NhZ2UubG9jYXRpb24uZGF0YUlkcyxcclxuICAgICAgICAgIGNvbHVtbnM6IG1lc3NhZ2UubG9jYXRpb24uY29sdW1uTmFtZXNcclxuICAgICAgICB9O1xyXG4gICAgICB9XHJcbiAgICAgIGJpek1lc3NhZ2VzLnB1c2goYml6TWVzc2FnZSk7XHJcbiAgICB9KTtcclxuICAgIHJldHVybiBiaXpNZXNzYWdlcztcclxuICB9XHJcbn0iXX0=

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

{"__symbolic":"module","version":4,"metadata":{"VERSION":"ver.","ChangeDetailType":{"__symbolic":"class","members":{},"statics":{"Added":"Added","Modify":"Modify","Deleted":"Deleted"}},"ChangeDetailInfo":{"__symbolic":"interface"},"ChangeDetail":{"__symbolic":"interface"},"RequestInfo":{"__symbolic":"interface"},"Pagination":{"__symbolic":"interface"},"QueryResult":{"__symbolic":"interface"},"ResponseInfo":{"__symbolic":"interface"},"IProxyExtend":{"__symbolic":"interface"},"BodyWithRequestInfo":{"__symbolic":"interface"},"RequestOption":{"__symbolic":"interface"},"BE_SERVER_URI_TOKEN":{"__symbolic":"new","expression":{"__symbolic":"reference","module":"@angular/core","name":"InjectionToken","line":9,"character":32},"arguments":["@farris/be BE_SERVER_URL"]},"BE_SESSION_HANDLING_STRATEGY_TOKEN":{"__symbolic":"new","expression":{"__symbolic":"reference","module":"@angular/core","name":"InjectionToken","line":15,"character":47},"arguments":["@farris/be BE_SESSION_HANDLING_STRATEGY_TOKEN"]},"BefChangeBuilder":{"__symbolic":"class","members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"Type","module":"@angular/core","arguments":[{"__symbolic":"reference","module":"@farris/devkit","name":"Entity","line":28,"character":29}]},{"__symbolic":"reference","name":"EntityCollection","module":"@farris/devkit","arguments":[{"__symbolic":"reference","module":"@farris/devkit","name":"Entity","line":28,"character":29}]}]}],"build":[{"__symbolic":"method"}],"buildChangeDetail":[{"__symbolic":"method"}],"getChangeInfo":[{"__symbolic":"method"}],"createEmptyChangeDetail":[{"__symbolic":"method"}]}},"BefChangeHandler":{"__symbolic":"class","members":{"__ctor__":[{"__symbolic":"constructor"}],"handle":[{"__symbolic":"method"}],"handleChangeDetails":[{"__symbolic":"method"}],"handleChangeDetail":[{"__symbolic":"method"}],"getEntityById":[{"__symbolic":"method"}]}},"BefSessionService":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":15,"character":1}}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@angular/common/http","name":"HttpClient","line":29,"character":16},{"__symbolic":"reference","name":"string"},{"__symbolic":"reference","name":"FrameworkSessionService"},{"__symbolic":"reference","module":"@angular/core","name":"Injector","line":30,"character":59}]}],"getBeSessionId":[{"__symbolic":"method"}],"setBeSessionId":[{"__symbolic":"method"}],"clearBeSessionId":[{"__symbolic":"method"}],"extendRequestHeaders":[{"__symbolic":"method"}],"handleResponseHeaders":[{"__symbolic":"method"}],"createBeSession":[{"__symbolic":"method"}],"createHandlingStrategy":[{"__symbolic":"method"}]}},"BefRestService":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":33,"character":1}}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@angular/common/http","name":"HttpClient","line":66,"character":16},{"__symbolic":"reference","name":"string"},{"__symbolic":"reference","name":"FrameworkSessionService"},{"__symbolic":"reference","name":"BefRepository"},{"__symbolic":"reference","module":"@farris/devkit","name":"EventBus","line":69,"character":15}]}],"createBefProxy":[{"__symbolic":"method"}],"query":[{"__symbolic":"method"}],"extendQuery":[{"__symbolic":"method"}],"serviceRetrieve":[{"__symbolic":"method"}],"queryChild":[{"__symbolic":"method"}],"retrieve":[{"__symbolic":"method"}],"extendRetrieve":[{"__symbolic":"method"}],"create":[{"__symbolic":"method"}],"createByPath":[{"__symbolic":"method"}],"update":[{"__symbolic":"method"}],"save":[{"__symbolic":"method"}],"delete":[{"__symbolic":"method"}],"extendDelete":[{"__symbolic":"method"}],"deletByPath":[{"__symbolic":"method"}],"extendDeletByPath":[{"__symbolic":"method"}],"batchDeleteByPath":[{"__symbolic":"method"}],"batchDelete":[{"__symbolic":"method"}],"extendBatchDelete":[{"__symbolic":"method"}],"cancel":[{"__symbolic":"method"}],"request":[{"__symbolic":"method"}],"invoke":[{"__symbolic":"method"}],"innerRequest":[{"__symbolic":"method"}],"handleReponseInfo":[{"__symbolic":"method"}],"handleErrors":[{"__symbolic":"method"}],"clearLoading":[{"__symbolic":"method"}],"unWrapResponseInfo":[{"__symbolic":"method"}],"hasRequestInfo":[{"__symbolic":"method"}],"existRequestInfo":[{"__symbolic":"method"}],"buildParams":[{"__symbolic":"method"}],"buildBodyWithRequestInfo":[{"__symbolic":"method"}],"buildRequestInfo":[{"__symbolic":"method"}]}},"BefProxy":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":22,"character":1}}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@angular/common/http","name":"HttpClient","line":30,"character":33},{"__symbolic":"reference","name":"UriService"}]}],"setBaseUri":[{"__symbolic":"method"}],"setProxyExtend":[{"__symbolic":"method"}],"query":[{"__symbolic":"method"}],"extendQuery":[{"__symbolic":"method"}],"filter":[{"__symbolic":"method"}],"retrieve":[{"__symbolic":"method"}],"serviceRetrieve":[{"__symbolic":"method"}],"queryChild":[{"__symbolic":"method"}],"extendRetrieve":[{"__symbolic":"method"}],"edit":[{"__symbolic":"method"}],"create":[{"__symbolic":"method"}],"createByPath":[{"__symbolic":"method"}],"update":[{"__symbolic":"method"}],"save":[{"__symbolic":"method"}],"delete":[{"__symbolic":"method"}],"deleteAndSave":[{"__symbolic":"method"}],"extendDelete":[{"__symbolic":"method"}],"deletByPath":[{"__symbolic":"method"}],"extendDeletByPath":[{"__symbolic":"method"}],"batchDeleteByPath":[{"__symbolic":"method"}],"batchDelete":[{"__symbolic":"method"}],"extendBatchDelete":[{"__symbolic":"method"}],"cancel":[{"__symbolic":"method"}],"batchAppendByPath":[{"__symbolic":"method"}],"request":[{"__symbolic":"method"}],"invoke":[{"__symbolic":"method"}],"addBodyToOptions":[{"__symbolic":"method"}],"buildParams":[{"__symbolic":"method"}],"hasRequestInfo":[{"__symbolic":"method"}],"unWrapResponseInfo":[{"__symbolic":"method"}]}},"BefLookupRestService":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":11,"character":1}}],"members":{"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[null,[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Optional","line":26,"character":5}}]],"parameters":[{"__symbolic":"reference","name":"Repository","module":"@farris/devkit","arguments":[{"__symbolic":"reference","name":"any"}]},{"__symbolic":"reference","module":"@farris/devkit","name":"FrameContext","line":26,"character":38}]}],"getData":[{"__symbolic":"method"}],"saveUserSettings":[{"__symbolic":"method"}],"getUserSettings":[{"__symbolic":"method"}],"ifEnableExtendLoadMethod":[{"__symbolic":"method"}],"getHelpData":[{"__symbolic":"method"}],"extendGetHelpData":[{"__symbolic":"method"}],"convert2TreeDataWithPathCode":[{"__symbolic":"method"}]}},"BefLookupDefaultService":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":14,"character":1}}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"Repository","module":"@farris/devkit","arguments":[{"__symbolic":"reference","name":"any"}]},{"__symbolic":"reference","name":"FrameworkSessionService"}]}],"createSession":[{"__symbolic":"method"}],"getData":[{"__symbolic":"method"}]}},"BefRepository":{"__symbolic":"class","arity":1,"extends":{"__symbolic":"reference","name":"ɵa"},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":28,"character":1}}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@angular/core","name":"Injector","line":65,"character":32}]}],"getEntities":[{"__symbolic":"method"}],"filter":[{"__symbolic":"method"}],"getPagedById":[{"__symbolic":"method"}],"queryChild":[{"__symbolic":"method"}],"getEntityById":[{"__symbolic":"method"}],"updateEntityById":[{"__symbolic":"method"}],"editEntityById":[{"__symbolic":"method"}],"createEntity":[{"__symbolic":"method"}],"appendEntity":[{"__symbolic":"method"}],"insert":[{"__symbolic":"method"}],"insertByPath":[{"__symbolic":"method"}],"appendEntityByPath":[{"__symbolic":"method"}],"removeEntityById":[{"__symbolic":"method"}],"removeEntityAndSaveById":[{"__symbolic":"method"}],"removeEntityByPath":[{"__symbolic":"method"}],"batchRemoveByPath":[{"__symbolic":"method"}],"saveEntityById":[{"__symbolic":"method"}],"saveEntities":[{"__symbolic":"method"}],"cancelEntityChanges":[{"__symbolic":"method"}],"batchAppendByPath":[{"__symbolic":"method"}],"reset":[{"__symbolic":"method"}],"getInjector":[{"__symbolic":"method"}]}},"FrameworkSessionService":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":10,"character":1}}],"members":{"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Optional","line":13,"character":15}}]],"parameters":[{"__symbolic":"reference","module":"@ecp-caf/caf-common","name":"SessionService","line":13,"character":50}]}],"getUserSessionId":[{"__symbolic":"method"}],"getCurrentSessionId":[{"__symbolic":"method"}]}},"NG_VARIABLE":"@farris/bef NG_VARIABLE","NgVariable":{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@farris/devkit","name":"makePropDecorator","line":42,"character":2},"arguments":["@farris/bef NG_VARIABLE",{"__symbolic":"error","message":"Lambda not supported","line":42,"character":33,"module":"./lib/decorators"}]},"NgVariableDecorator":{"__symbolic":"interface"},"BefRepositoryUtil":{"__symbolic":"class","members":{}},"BefDataPathUtil":{"__symbolic":"class","members":{},"statics":{"trimTrailingS":{"__symbolic":"function","parameters":["str"],"value":{"__symbolic":"call","expression":{"__symbolic":"select","expression":{"__symbolic":"reference","name":"str"},"member":"substr"},"arguments":[0,{"__symbolic":"binop","operator":"-","left":{"__symbolic":"select","expression":{"__symbolic":"reference","name":"str"},"member":"length"},"right":1}]}}}},"UriService":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":3,"character":1}}],"members":{"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":5,"character":17},"arguments":[{"__symbolic":"reference","name":"BE_SERVER_URI_TOKEN"}]}]],"parameters":[{"__symbolic":"reference","name":"string"}]}],"extendUri":[{"__symbolic":"method"}]}},"Uri":{"__symbolic":"class","members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"string"},{"__symbolic":"error","message":"Expression form not supported","line":1,"character":52,"module":"./lib/uri"}]}],"toString":[{"__symbolic":"method"}]}},"DefaultComboHttpService":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":7,"character":1}}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"Repository","module":"@farris/devkit","arguments":[{"__symbolic":"reference","name":"any"}]}]}],"getData":[{"__symbolic":"method"}]}},"DefaultDynamiControlGroupHttpService":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":8,"character":1}}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"Repository","module":"@farris/devkit","arguments":[{"__symbolic":"reference","name":"any"}]}]}],"getData":[{"__symbolic":"method"}]}},"ɵa":{"__symbolic":"class","arity":1,"extends":{"__symbolic":"reference","module":"@farris/devkit","name":"Repository","line":26,"character":65},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":25,"character":1}}],"members":{"__ctor__":[{"__symbolic":"constructor"}],"getList":[{"__symbolic":"method"}],"getById":[{"__symbolic":"method"}],"updateById":[{"__symbolic":"method"}],"create":[{"__symbolic":"method"}],"append":[{"__symbolic":"method"}],"appendByPath":[{"__symbolic":"method"}],"removeById":[{"__symbolic":"method"}],"removeByIds":[{"__symbolic":"method"}],"removeByPath":[{"__symbolic":"method"}],"updateChangesById":[{"__symbolic":"method"}],"updateChangesByPath":[{"__symbolic":"method"}],"updateAllChanges":[{"__symbolic":"method"}],"applyChanges":[{"__symbolic":"method"}],"updateDataAndVariableChanges":[{"__symbolic":"method"}],"applyChangesById":[{"__symbolic":"method"}],"cancelChanges":[{"__symbolic":"method"}],"clearAllEntityChanges":[{"__symbolic":"method"}],"getDataChangeDetails":[{"__symbolic":"method"}],"handleDataChangeDetails":[{"__symbolic":"method"}],"getVariableChangeDetail":[{"__symbolic":"method"}],"handleVariableChangeDetail":[{"__symbolic":"method"}],"isEmptyRequestInfo":[{"__symbolic":"method"}]}}},"origins":{"VERSION":"./public-api","ChangeDetailType":"./lib/types","ChangeDetailInfo":"./lib/types","ChangeDetail":"./lib/types","RequestInfo":"./lib/types","Pagination":"./lib/types","QueryResult":"./lib/types","ResponseInfo":"./lib/types","IProxyExtend":"./lib/types","BodyWithRequestInfo":"./lib/types","RequestOption":"./lib/types","BE_SERVER_URI_TOKEN":"./lib/tokens","BE_SESSION_HANDLING_STRATEGY_TOKEN":"./lib/tokens","BefChangeBuilder":"./lib/bef_change_builder","BefChangeHandler":"./lib/bef_change_handler","BefSessionService":"./lib/session/bef_session_service","BefRestService":"./lib/bef_rest_service","BefProxy":"./lib/bef_proxy","BefLookupRestService":"./lib/bef_lookup.service","BefLookupDefaultService":"./lib/bef_lookup_default.service","BefRepository":"./lib/bef_repository","FrameworkSessionService":"./lib/framework_session_service","NG_VARIABLE":"./lib/decorators","NgVariable":"./lib/decorators","NgVariableDecorator":"./lib/decorators","BefRepositoryUtil":"./lib/bef_repository_util","BefDataPathUtil":"./lib/bef_data_path_util","UriService":"./lib/uri_service","Uri":"./lib/uri","DefaultComboHttpService":"./lib/bef_combo.service","DefaultDynamiControlGroupHttpService":"./lib/bef_dynamic_control_group_default.service","ɵa":"./lib/deprecated/deprecated_bef_repository"},"importAs":"@farris/bef"}
{"__symbolic":"module","version":4,"metadata":{"VERSION":"ver.","ChangeDetailType":{"__symbolic":"class","members":{},"statics":{"Added":"Added","Modify":"Modify","Deleted":"Deleted"}},"ChangeDetailInfo":{"__symbolic":"interface"},"ChangeDetail":{"__symbolic":"interface"},"RequestInfo":{"__symbolic":"interface"},"Pagination":{"__symbolic":"interface"},"QueryResult":{"__symbolic":"interface"},"ResponseInfo":{"__symbolic":"interface"},"IProxyExtend":{"__symbolic":"interface"},"BodyWithRequestInfo":{"__symbolic":"interface"},"RequestOption":{"__symbolic":"interface"},"BE_SERVER_URI_TOKEN":{"__symbolic":"new","expression":{"__symbolic":"reference","module":"@angular/core","name":"InjectionToken","line":9,"character":32},"arguments":["@farris/be BE_SERVER_URL"]},"BE_SESSION_HANDLING_STRATEGY_TOKEN":{"__symbolic":"new","expression":{"__symbolic":"reference","module":"@angular/core","name":"InjectionToken","line":15,"character":47},"arguments":["@farris/be BE_SESSION_HANDLING_STRATEGY_TOKEN"]},"BefChangeBuilder":{"__symbolic":"class","members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"Type","module":"@angular/core","arguments":[{"__symbolic":"reference","module":"@farris/devkit","name":"Entity","line":28,"character":29}]},{"__symbolic":"reference","name":"EntityCollection","module":"@farris/devkit","arguments":[{"__symbolic":"reference","module":"@farris/devkit","name":"Entity","line":28,"character":29}]}]}],"build":[{"__symbolic":"method"}],"buildChangeDetail":[{"__symbolic":"method"}],"getChangeInfo":[{"__symbolic":"method"}],"createEmptyChangeDetail":[{"__symbolic":"method"}]}},"BefChangeHandler":{"__symbolic":"class","members":{"__ctor__":[{"__symbolic":"constructor"}],"handle":[{"__symbolic":"method"}],"handleChangeDetails":[{"__symbolic":"method"}],"handleChangeDetail":[{"__symbolic":"method"}],"getEntityById":[{"__symbolic":"method"}]}},"BefSessionService":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":15,"character":1}}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@angular/common/http","name":"HttpClient","line":29,"character":16},{"__symbolic":"reference","name":"string"},{"__symbolic":"reference","name":"FrameworkSessionService"},{"__symbolic":"reference","module":"@angular/core","name":"Injector","line":30,"character":59}]}],"getBeSessionId":[{"__symbolic":"method"}],"setBeSessionId":[{"__symbolic":"method"}],"clearBeSessionId":[{"__symbolic":"method"}],"extendRequestHeaders":[{"__symbolic":"method"}],"handleResponseHeaders":[{"__symbolic":"method"}],"createBeSession":[{"__symbolic":"method"}],"createHandlingStrategy":[{"__symbolic":"method"}]}},"BefRestService":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":33,"character":1}}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@angular/common/http","name":"HttpClient","line":66,"character":16},{"__symbolic":"reference","name":"string"},{"__symbolic":"reference","name":"FrameworkSessionService"},{"__symbolic":"reference","name":"BefRepository"},{"__symbolic":"reference","module":"@farris/devkit","name":"EventBus","line":69,"character":15}]}],"createBefProxy":[{"__symbolic":"method"}],"query":[{"__symbolic":"method"}],"extendQuery":[{"__symbolic":"method"}],"serviceRetrieve":[{"__symbolic":"method"}],"queryChild":[{"__symbolic":"method"}],"retrieve":[{"__symbolic":"method"}],"extendRetrieve":[{"__symbolic":"method"}],"create":[{"__symbolic":"method"}],"createByPath":[{"__symbolic":"method"}],"update":[{"__symbolic":"method"}],"save":[{"__symbolic":"method"}],"delete":[{"__symbolic":"method"}],"extendDelete":[{"__symbolic":"method"}],"deletByPath":[{"__symbolic":"method"}],"extendDeletByPath":[{"__symbolic":"method"}],"batchDeleteByPath":[{"__symbolic":"method"}],"batchDelete":[{"__symbolic":"method"}],"extendBatchDelete":[{"__symbolic":"method"}],"cancel":[{"__symbolic":"method"}],"request":[{"__symbolic":"method"}],"invoke":[{"__symbolic":"method"}],"innerRequest":[{"__symbolic":"method"}],"handleReponseInfo":[{"__symbolic":"method"}],"handleErrors":[{"__symbolic":"method"}],"clearLoading":[{"__symbolic":"method"}],"unWrapResponseInfo":[{"__symbolic":"method"}],"hasRequestInfo":[{"__symbolic":"method"}],"existRequestInfo":[{"__symbolic":"method"}],"buildParams":[{"__symbolic":"method"}],"buildBodyWithRequestInfo":[{"__symbolic":"method"}],"buildRequestInfo":[{"__symbolic":"method"}]}},"BefProxy":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":23,"character":1}}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@angular/common/http","name":"HttpClient","line":31,"character":33},{"__symbolic":"reference","name":"UriService"}]}],"setBaseUri":[{"__symbolic":"method"}],"setProxyExtend":[{"__symbolic":"method"}],"query":[{"__symbolic":"method"}],"extendQuery":[{"__symbolic":"method"}],"filter":[{"__symbolic":"method"}],"retrieve":[{"__symbolic":"method"}],"serviceRetrieve":[{"__symbolic":"method"}],"queryChild":[{"__symbolic":"method"}],"extendRetrieve":[{"__symbolic":"method"}],"edit":[{"__symbolic":"method"}],"create":[{"__symbolic":"method"}],"createByPath":[{"__symbolic":"method"}],"update":[{"__symbolic":"method"}],"save":[{"__symbolic":"method"}],"delete":[{"__symbolic":"method"}],"deleteAndSave":[{"__symbolic":"method"}],"extendDelete":[{"__symbolic":"method"}],"deletByPath":[{"__symbolic":"method"}],"extendDeletByPath":[{"__symbolic":"method"}],"batchDeleteByPath":[{"__symbolic":"method"}],"batchDelete":[{"__symbolic":"method"}],"extendBatchDelete":[{"__symbolic":"method"}],"cancel":[{"__symbolic":"method"}],"batchAppendByPath":[{"__symbolic":"method"}],"request":[{"__symbolic":"method"}],"invoke":[{"__symbolic":"method"}],"addBodyToOptions":[{"__symbolic":"method"}],"buildParams":[{"__symbolic":"method"}],"hasRequestInfo":[{"__symbolic":"method"}],"unWrapResponseInfo":[{"__symbolic":"method"}]}},"BefLookupRestService":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":11,"character":1}}],"members":{"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[null,[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Optional","line":26,"character":5}}]],"parameters":[{"__symbolic":"reference","name":"Repository","module":"@farris/devkit","arguments":[{"__symbolic":"reference","name":"any"}]},{"__symbolic":"reference","module":"@farris/devkit","name":"FrameContext","line":26,"character":38}]}],"getData":[{"__symbolic":"method"}],"saveUserSettings":[{"__symbolic":"method"}],"getUserSettings":[{"__symbolic":"method"}],"ifEnableExtendLoadMethod":[{"__symbolic":"method"}],"getHelpData":[{"__symbolic":"method"}],"extendGetHelpData":[{"__symbolic":"method"}],"convert2TreeDataWithPathCode":[{"__symbolic":"method"}]}},"BefLookupDefaultService":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":14,"character":1}}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"Repository","module":"@farris/devkit","arguments":[{"__symbolic":"reference","name":"any"}]},{"__symbolic":"reference","name":"FrameworkSessionService"}]}],"createSession":[{"__symbolic":"method"}],"getData":[{"__symbolic":"method"}]}},"BefRepository":{"__symbolic":"class","arity":1,"extends":{"__symbolic":"reference","name":"ɵa"},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":28,"character":1}}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@angular/core","name":"Injector","line":65,"character":32}]}],"getEntities":[{"__symbolic":"method"}],"filter":[{"__symbolic":"method"}],"getPagedById":[{"__symbolic":"method"}],"queryChild":[{"__symbolic":"method"}],"getEntityById":[{"__symbolic":"method"}],"updateEntityById":[{"__symbolic":"method"}],"editEntityById":[{"__symbolic":"method"}],"createEntity":[{"__symbolic":"method"}],"appendEntity":[{"__symbolic":"method"}],"insert":[{"__symbolic":"method"}],"insertByPath":[{"__symbolic":"method"}],"appendEntityByPath":[{"__symbolic":"method"}],"removeEntityById":[{"__symbolic":"method"}],"removeEntityAndSaveById":[{"__symbolic":"method"}],"removeEntityByPath":[{"__symbolic":"method"}],"batchRemoveByPath":[{"__symbolic":"method"}],"saveEntityById":[{"__symbolic":"method"}],"saveEntities":[{"__symbolic":"method"}],"cancelEntityChanges":[{"__symbolic":"method"}],"batchAppendByPath":[{"__symbolic":"method"}],"reset":[{"__symbolic":"method"}],"getInjector":[{"__symbolic":"method"}]}},"FrameworkSessionService":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":10,"character":1}}],"members":{"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Optional","line":13,"character":15}}]],"parameters":[{"__symbolic":"reference","module":"@ecp-caf/caf-common","name":"SessionService","line":13,"character":50}]}],"getUserSessionId":[{"__symbolic":"method"}],"getCurrentSessionId":[{"__symbolic":"method"}]}},"NG_VARIABLE":"@farris/bef NG_VARIABLE","NgVariable":{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@farris/devkit","name":"makePropDecorator","line":42,"character":2},"arguments":["@farris/bef NG_VARIABLE",{"__symbolic":"error","message":"Lambda not supported","line":42,"character":33,"module":"./lib/decorators"}]},"NgVariableDecorator":{"__symbolic":"interface"},"BefRepositoryUtil":{"__symbolic":"class","members":{}},"BefDataPathUtil":{"__symbolic":"class","members":{},"statics":{"trimTrailingS":{"__symbolic":"function","parameters":["str"],"value":{"__symbolic":"call","expression":{"__symbolic":"select","expression":{"__symbolic":"reference","name":"str"},"member":"substr"},"arguments":[0,{"__symbolic":"binop","operator":"-","left":{"__symbolic":"select","expression":{"__symbolic":"reference","name":"str"},"member":"length"},"right":1}]}}}},"UriService":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":3,"character":1}}],"members":{"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":5,"character":17},"arguments":[{"__symbolic":"reference","name":"BE_SERVER_URI_TOKEN"}]}]],"parameters":[{"__symbolic":"reference","name":"string"}]}],"extendUri":[{"__symbolic":"method"}]}},"Uri":{"__symbolic":"class","members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"string"},{"__symbolic":"error","message":"Expression form not supported","line":1,"character":52,"module":"./lib/uri"}]}],"toString":[{"__symbolic":"method"}]}},"DefaultComboHttpService":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":7,"character":1}}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"Repository","module":"@farris/devkit","arguments":[{"__symbolic":"reference","name":"any"}]}]}],"getData":[{"__symbolic":"method"}]}},"DefaultDynamiControlGroupHttpService":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":8,"character":1}}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"Repository","module":"@farris/devkit","arguments":[{"__symbolic":"reference","name":"any"}]}]}],"getData":[{"__symbolic":"method"}]}},"ɵa":{"__symbolic":"class","arity":1,"extends":{"__symbolic":"reference","module":"@farris/devkit","name":"Repository","line":26,"character":65},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":25,"character":1}}],"members":{"__ctor__":[{"__symbolic":"constructor"}],"getList":[{"__symbolic":"method"}],"getById":[{"__symbolic":"method"}],"updateById":[{"__symbolic":"method"}],"create":[{"__symbolic":"method"}],"append":[{"__symbolic":"method"}],"appendByPath":[{"__symbolic":"method"}],"removeById":[{"__symbolic":"method"}],"removeByIds":[{"__symbolic":"method"}],"removeByPath":[{"__symbolic":"method"}],"updateChangesById":[{"__symbolic":"method"}],"updateChangesByPath":[{"__symbolic":"method"}],"updateAllChanges":[{"__symbolic":"method"}],"applyChanges":[{"__symbolic":"method"}],"updateDataAndVariableChanges":[{"__symbolic":"method"}],"applyChangesById":[{"__symbolic":"method"}],"cancelChanges":[{"__symbolic":"method"}],"clearAllEntityChanges":[{"__symbolic":"method"}],"getDataChangeDetails":[{"__symbolic":"method"}],"handleDataChangeDetails":[{"__symbolic":"method"}],"getVariableChangeDetail":[{"__symbolic":"method"}],"handleVariableChangeDetail":[{"__symbolic":"method"}],"isEmptyRequestInfo":[{"__symbolic":"method"}]}}},"origins":{"VERSION":"./public-api","ChangeDetailType":"./lib/types","ChangeDetailInfo":"./lib/types","ChangeDetail":"./lib/types","RequestInfo":"./lib/types","Pagination":"./lib/types","QueryResult":"./lib/types","ResponseInfo":"./lib/types","IProxyExtend":"./lib/types","BodyWithRequestInfo":"./lib/types","RequestOption":"./lib/types","BE_SERVER_URI_TOKEN":"./lib/tokens","BE_SESSION_HANDLING_STRATEGY_TOKEN":"./lib/tokens","BefChangeBuilder":"./lib/bef_change_builder","BefChangeHandler":"./lib/bef_change_handler","BefSessionService":"./lib/session/bef_session_service","BefRestService":"./lib/bef_rest_service","BefProxy":"./lib/bef_proxy","BefLookupRestService":"./lib/bef_lookup.service","BefLookupDefaultService":"./lib/bef_lookup_default.service","BefRepository":"./lib/bef_repository","FrameworkSessionService":"./lib/framework_session_service","NG_VARIABLE":"./lib/decorators","NgVariable":"./lib/decorators","NgVariableDecorator":"./lib/decorators","BefRepositoryUtil":"./lib/bef_repository_util","BefDataPathUtil":"./lib/bef_data_path_util","UriService":"./lib/uri_service","Uri":"./lib/uri","DefaultComboHttpService":"./lib/bef_combo.service","DefaultDynamiControlGroupHttpService":"./lib/bef_dynamic_control_group_default.service","ɵa":"./lib/deprecated/deprecated_bef_repository"},"importAs":"@farris/bef"}

@@ -6,3 +6,4 @@ import { Injector } from "@angular/core";

static isBackEndMessageHandlerExist(injector: Injector): boolean;
static getFormlessMessages(messages: BackEndMessage.IBizMessage[]): BackEndMessage.IBizMessage[];
static buildBackEndMessages(messages: object[]): BackEndMessage.IBizMessage[];
}
{
"name": "@farris/bef",
"version": "0.0.12-20210412145944-dev",
"version": "0.0.12-20210427141956-dev",
"peerDependencies": {

@@ -5,0 +5,0 @@ "@angular/common": "^7.2.0",

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 too big to display

Sorry, the diff of this file is not supported yet

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

Sorry, the diff of this file is not supported yet

SocketSocket SOC 2 Logo

Product

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

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc