Socket
Socket
Sign inDemoInstall

@ngx-pwa/local-storage

Package Overview
Dependencies
Maintainers
1
Versions
126
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@ngx-pwa/local-storage - npm Package Compare versions

Comparing version 6.1.1 to 7.0.0-beta.0

2

bundles/ngx-pwa-local-storage.umd.min.js

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

!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports,require("@angular/core"),require("rxjs"),require("rxjs/operators"),require("@angular/common")):"function"==typeof define&&define.amd?define("@ngx-pwa/local-storage",["exports","@angular/core","rxjs","rxjs/operators","@angular/common"],t):t((e["ngx-pwa"]=e["ngx-pwa"]||{},e["ngx-pwa"]["local-storage"]={}),e.ng.core,e.rxjs,e.rxjs.operators,e.ng.common)}(this,function(e,r,s,c,n){"use strict";var o=new r.InjectionToken("localStoragePrefix",{providedIn:"root",factory:function(){return""}});var i=function(){function e(e){void 0===e&&(e=null),this.userPrefix=e,this.prefix="",e&&(this.prefix=e+"_")}return e.prototype.getItem=function(e){var t=localStorage.getItem(""+this.prefix+e),r=null;if(null!=t)try{r=JSON.parse(t)}catch(n){return s.throwError(new Error("Invalid data in localStorage."))}return s.of(r)},e.prototype.setItem=function(e,t){return localStorage.setItem(""+this.prefix+e,JSON.stringify(t)),s.of(!0)},e.prototype.removeItem=function(e){return localStorage.removeItem(""+this.prefix+e),s.of(!0)},e.prototype.clear=function(){return localStorage.clear(),s.of(!0)},e.decorators=[{type:r.Injectable,args:[{providedIn:"root"}]}],e.ctorParameters=function(){return[{type:undefined,decorators:[{type:r.Optional},{type:r.Inject,args:[o]}]}]},e.ngInjectableDef=r.defineInjectable({factory:function t(){return new e(r.inject(o,8))},token:e,providedIn:"root"}),e}(),a=function(){function e(e){void 0===e&&(e=null),this.prefix=e,this.dbName="ngStorage",this.objectStoreName="localStorage",this.keyPath="key",this.dataPath="value",this.fallback=null,e&&(this.dbName=e+"_"+this.dbName),this.database=new s.ReplaySubject,this.connect(e)}return e.prototype.getItem=function(e){return this.fallback?this.fallback.getItem(e):this.getItemFromTransaction(e)},e.prototype.getItemFromTransaction=function(t,e){var r=this;return(e?s.of(e):this.transaction()).pipe(c.map(function(e){return e.get(t)}),c.mergeMap(function(e){var t=s.fromEvent(e,"success").pipe(c.map(function(e){return e.target.result}),c.map(function(e){return e&&r.dataPath in e?e[r.dataPath]:null}));return s.race(t,r.toErrorObservable(e,"getter")).pipe(c.first())}),c.first())},e.prototype.setItem=function(o,i){var a,u=this;return this.fallback?this.fallback.setItem(o,i):null==i?s.of(!0):this.transaction("readwrite").pipe(c.tap(function(e){a=e}),c.mergeMap(function(){return u.getItemFromTransaction(o,a)}),c.map(function(e){return null==e?"add":"put"}),c.mergeMap(function(e){var t,r,n;switch(e){case"add":t=a.add(((r={})[u.dataPath]=i,r),o);break;case"put":default:t=a.put(((n={})[u.dataPath]=i,n),o)}return s.race(u.toSuccessObservable(t),u.toErrorObservable(t,"setter")).pipe(c.first())}),c.first())},e.prototype.removeItem=function(r){var n=this;return this.fallback?this.fallback.removeItem(r):this.getItem(r).pipe(c.mergeMap(function(e){return null!=e?n.transaction("readwrite").pipe(c.mergeMap(function(e){var t=e["delete"](r);return s.race(n.toSuccessObservable(t),n.toErrorObservable(t,"remover")).pipe(c.first())})):s.of(!0)}),c.first())},e.prototype.clear=function(){var r=this;return this.fallback?this.fallback.clear():this.transaction("readwrite").pipe(c.mergeMap(function(e){var t=e.clear();return s.race(r.toSuccessObservable(t),r.toErrorObservable(t,"clearer")).pipe(c.first())}),c.first())},e.prototype.connect=function(e){var t,r=this;void 0===e&&(e=null);try{t=indexedDB.open(this.dbName)}catch(o){return void this.setFallback(e)}s.fromEvent(t,"upgradeneeded").pipe(c.first()).subscribe(function(e){var t=e.target.result;t.objectStoreNames.contains(r.objectStoreName)||t.createObjectStore(r.objectStoreName)});var n=s.fromEvent(t,"success");s.race(n,this.toErrorObservable(t,"connection")).pipe(c.first()).subscribe(function(e){r.database.next(e.target.result)},function(){r.setFallback(e)})},e.prototype.transaction=function(t){var r=this;return void 0===t&&(t="readonly"),this.database.pipe(c.map(function(e){return e.transaction([r.objectStoreName],t).objectStore(r.objectStoreName)}))},e.prototype.toSuccessObservable=function(e){return s.fromEvent(e,"success").pipe(c.map(function(){return!0}))},e.prototype.toErrorObservable=function(e,t){return void 0===t&&(t=""),s.fromEvent(e,"error").pipe(c.mergeMap(function(){return s.throwError(new Error("IndexedDB "+t+" issue : "+e.error.message+"."))}))},e.prototype.setFallback=function(e){this.fallback=new i(e)},e.decorators=[{type:r.Injectable,args:[{providedIn:"root"}]}],e.ctorParameters=function(){return[{type:undefined,decorators:[{type:r.Optional},{type:r.Inject,args:[o]}]}]},e.ngInjectableDef=r.defineInjectable({factory:function t(){return new e(r.inject(o,8))},token:e,providedIn:"root"}),e}(),u=function(){function e(){this.localStorage=new Map}return e.prototype.getItem=function(e){var t=this.localStorage.get(e);return s.of(t!==undefined?t:null)},e.prototype.setItem=function(e,t){return this.localStorage.set(e,t),s.of(!0)},e.prototype.removeItem=function(e){return this.localStorage["delete"](e),s.of(!0)},e.prototype.clear=function(){return this.localStorage.clear(),s.of(!0)},e.decorators=[{type:r.Injectable,args:[{providedIn:"root"}]}],e.ngInjectableDef=r.defineInjectable({factory:function t(){return new e},token:e,providedIn:"root"}),e}();function l(e,t){return n.isPlatformBrowser(e)&&"indexedDB"in window&&indexedDB!==undefined&&null!==indexedDB?new a(t):n.isPlatformBrowser(e)&&"localStorage"in window&&localStorage!==undefined&&null!==localStorage?new i(t):new u}var p=function(){function e(){}return e.decorators=[{type:r.Injectable,args:[{providedIn:"root",useFactory:l,deps:[r.PLATFORM_ID,[new r.Optional,o]]}]}],e.ngInjectableDef=r.defineInjectable({factory:function t(){return l(r.inject(r.PLATFORM_ID),r.inject(o,8))},token:e,providedIn:"root"}),e}();function f(e){var t="function"==typeof Symbol&&e[Symbol.iterator],r=0;return t?t.call(e):{next:function(){return e&&r>=e.length&&(e=void 0),{value:e&&e[r++],done:!e}}}}var m=function(){function e(){}return e.prototype.validate=function(e,t){if(!((t.hasOwnProperty("const")&&t["const"]!==undefined||t.hasOwnProperty("enum")&&null!=t["enum"]||t.hasOwnProperty("type")&&null!=t.type)&&"array"!==t.type&&"object"!==t.type||t.hasOwnProperty("properties")&&null!=t.properties||t.hasOwnProperty("items")&&null!=t.items))throw new Error("Each value must have a 'type' or 'properties' or 'items' or 'const' or 'enum', to enforce strict types.");return(!t.hasOwnProperty("const")||t["const"]===undefined||e===t["const"])&&(!!this.validateEnum(e,t)&&(!!this.validateType(e,t)&&(!!this.validateItems(e,t)&&(!!this.validateProperties(e,t)&&!!this.validateRequired(e,t)))))},e.prototype.isObjectNotNull=function(e){return null!==e&&"object"==typeof e},e.prototype.validateProperties=function(e,t){if(!t.hasOwnProperty("properties")||null==t.properties)return!0;if(!this.isObjectNotNull(e))return!1;if(Object.keys(t.properties).length!==Object.keys(e).length)return!1;for(var r in t.properties)if(t.properties.hasOwnProperty(r)&&e.hasOwnProperty(r)&&!this.validate(e[r],t.properties[r]))return!1;return!0},e.prototype.validateRequired=function(e,t){if(!t.hasOwnProperty("required")||null==t.required)return!0;if(!this.isObjectNotNull(e))return!1;try{for(var r=f(t.required),n=r.next();!n.done;n=r.next()){var o=n.value;if(!t.properties||!t.properties.hasOwnProperty(o))throw new Error("'required' properties must be described in 'properties' too.");if(!e.hasOwnProperty(o))return!1}}catch(u){i={error:u}}finally{try{n&&!n.done&&(a=r["return"])&&a.call(r)}finally{if(i)throw i.error}}return!0;var i,a},e.prototype.validateEnum=function(e,t){return!t.hasOwnProperty("enum")||null==t["enum"]||-1!==t["enum"].indexOf(e)},e.prototype.validateType=function(e,t){if(!t.hasOwnProperty("type")||null==t.type)return!0;switch(t.type){case"null":return null===e;case"string":return this.validateString(e,t);case"number":case"integer":return this.validateNumber(e,t);case"boolean":return"boolean"==typeof e;case"object":return"object"==typeof e;case"array":return Array.isArray(e)}},e.prototype.validateItems=function(e,t){if(!t.hasOwnProperty("items")||null==t.items)return!0;if(!Array.isArray(e))return!1;if(t.hasOwnProperty("maxItems")&&null!=t.maxItems){if(!Number.isInteger(t.maxItems)||t.maxItems<0)throw new Error("'maxItems' must be a non-negative integer.");if(e.length>t.maxItems)return!1}if(t.hasOwnProperty("minItems")&&null!=t.minItems){if(!Number.isInteger(t.minItems)||t.minItems<0)throw new Error("'minItems' must be a non-negative integer.");if(e.length<t.minItems)return!1}if(t.hasOwnProperty("uniqueItems")&&null!=t.uniqueItems&&t.uniqueItems){var r=new Set(e);if(e.length!==r.size)return!1}if(Array.isArray(t.items))return this.validateItemsList(e,t);try{for(var n=f(e),o=n.next();!o.done;o=n.next()){var i=o.value;if(!this.validate(i,t.items))return!1}}catch(s){a={error:s}}finally{try{o&&!o.done&&(u=n["return"])&&u.call(n)}finally{if(a)throw a.error}}return!0;var a,u},e.prototype.validateItemsList=function(e,t){var r=t.items;if(e.length!==r.length)return!1;for(var n=0;n<r.length;n+=1)if(!this.validate(e[n],r[n]))return!1;return!0},e.prototype.validateString=function(e,t){if("string"!=typeof e)return!1;if(t.hasOwnProperty("maxLength")&&null!=t.maxLength){if(!Number.isInteger(t.maxLength)||t.maxLength<0)throw new Error("'maxLength' must be a non-negative integer.");if(e.length>t.maxLength)return!1}if(t.hasOwnProperty("minLength")&&null!=t.minLength){if(!Number.isInteger(t.minLength)||t.minLength<0)throw new Error("'minLength' must be a non-negative integer.");if(e.length<t.minLength)return!1}if(t.hasOwnProperty("pattern")&&null!=t.pattern&&!new RegExp(t.pattern).test(e))return!1;return!0},e.prototype.validateNumber=function(e,t){if("number"!=typeof e)return!1;if("integer"===t.type&&!Number.isInteger(e))return!1;if(t.hasOwnProperty("multipleOf")&&null!=t.multipleOf){if(t.multipleOf<=0)throw new Error("'multipleOf' must be a number strictly greater than 0.");if(!Number.isInteger(e/t.multipleOf))return!1}return!(t.hasOwnProperty("maximum")&&null!=t.maximum&&e>t.maximum)&&(!(t.hasOwnProperty("exclusiveMaximum")&&null!=t.exclusiveMaximum&&e>=t.exclusiveMaximum)&&(!(t.hasOwnProperty("minimum")&&null!=t.minimum&&e<t.minimum)&&!(t.hasOwnProperty("exclusiveMinimum")&&null!=t.exclusiveMinimum&&e<=t.exclusiveMinimum)))},e.decorators=[{type:r.Injectable,args:[{providedIn:"root"}]}],e.ngInjectableDef=r.defineInjectable({factory:function t(){return new e},token:e,providedIn:"root"}),e}(),t=function(){function e(e,t){this.database=e,this.jsonValidator=t,this.getItemOptionsDefault={schema:null}}return e.prototype.getItem=function(e,n){var o=this;return void 0===n&&(n=this.getItemOptionsDefault),this.database.getItem(e).pipe(c.mergeMap(function(e){if(n.schema&&null!==e){var t=!0;try{t=o.jsonValidator.validate(e,n.schema)}catch(r){return s.throwError(r)}if(!t)return s.throwError(new Error("JSON invalid"))}return s.of(e)}))},e.prototype.setItem=function(e,t){return this.database.setItem(e,t)},e.prototype.removeItem=function(e){return this.database.removeItem(e)},e.prototype.clear=function(){return this.database.clear()},e.prototype.setItemSubscribe=function(e,t){this.setItem(e,t).subscribe(function(){},function(){})},e.prototype.removeItemSubscribe=function(e){this.removeItem(e).subscribe(function(){},function(){})},e.prototype.clearSubscribe=function(){this.clear().subscribe(function(){},function(){})},e.decorators=[{type:r.Injectable,args:[{providedIn:"root"}]}],e.ctorParameters=function(){return[{type:p},{type:m}]},e.ngInjectableDef=r.defineInjectable({factory:function t(){return new e(r.inject(p),r.inject(m))},token:e,providedIn:"root"}),e}();e.LocalDatabase=p,e.IndexedDBDatabase=a,e.LocalStorageDatabase=i,e.MockLocalDatabase=u,e.JSONValidator=m,e.LocalStorage=t,e.localStorageProviders=function d(e){return[e.prefix?{provide:o,useValue:e.prefix}:[]]},e.LOCAL_STORAGE_PREFIX=o,e.ɵa=l,Object.defineProperty(e,"__esModule",{value:!0})});
!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports,require("@angular/core"),require("rxjs"),require("rxjs/operators"),require("@angular/common")):"function"==typeof define&&define.amd?define("@ngx-pwa/local-storage",["exports","@angular/core","rxjs","rxjs/operators","@angular/common"],t):t((e["ngx-pwa"]=e["ngx-pwa"]||{},e["ngx-pwa"]["local-storage"]={}),e.ng.core,e.rxjs,e.rxjs.operators,e.ng.common)}(this,function(e,r,s,c,n){"use strict";var o=new r.InjectionToken("localStoragePrefix",{providedIn:"root",factory:function(){return""}});var i=function(){function e(e){void 0===e&&(e=null),this.userPrefix=e,this.prefix="",e&&(this.prefix=e+"_")}return e.prototype.getItem=function(e){var t=localStorage.getItem(""+this.prefix+e),r=null;if(null!=t)try{r=JSON.parse(t)}catch(n){return s.throwError(new Error("Invalid data in localStorage."))}return s.of(r)},e.prototype.setItem=function(e,t){return localStorage.setItem(""+this.prefix+e,JSON.stringify(t)),s.of(!0)},e.prototype.removeItem=function(e){return localStorage.removeItem(""+this.prefix+e),s.of(!0)},e.prototype.clear=function(){return localStorage.clear(),s.of(!0)},e.decorators=[{type:r.Injectable,args:[{providedIn:"root"}]}],e.ctorParameters=function(){return[{type:undefined,decorators:[{type:r.Optional},{type:r.Inject,args:[o]}]}]},e.ngInjectableDef=r.defineInjectable({factory:function t(){return new e(r.inject(o,8))},token:e,providedIn:"root"}),e}(),a=function(){function e(e){void 0===e&&(e=null),this.prefix=e,this.dbName="ngStorage",this.objectStoreName="localStorage",this.keyPath="key",this.dataPath="value",this.fallback=null,e&&(this.dbName=e+"_"+this.dbName),this.database=new s.ReplaySubject,this.connect(e)}return e.prototype.getItem=function(e){return this.fallback?this.fallback.getItem(e):this.getItemFromTransaction(e)},e.prototype.getItemFromTransaction=function(t,e){var r=this;return(e?s.of(e):this.transaction()).pipe(c.map(function(e){return e.get(t)}),c.mergeMap(function(e){var t=s.fromEvent(e,"success").pipe(c.map(function(e){return e.target.result}),c.map(function(e){return e&&r.dataPath in e?e[r.dataPath]:null}));return s.race(t,r.toErrorObservable(e,"getter")).pipe(c.first())}),c.first())},e.prototype.setItem=function(o,i){var a,u=this;return this.fallback?this.fallback.setItem(o,i):null==i?s.of(!0):this.transaction("readwrite").pipe(c.tap(function(e){a=e}),c.mergeMap(function(){return u.getItemFromTransaction(o,a)}),c.map(function(e){return null==e?"add":"put"}),c.mergeMap(function(e){var t,r,n;switch(e){case"add":n=a.add(((t={})[u.dataPath]=i,t),o);break;case"put":default:n=a.put(((r={})[u.dataPath]=i,r),o)}return s.race(u.toSuccessObservable(n),u.toErrorObservable(n,"setter")).pipe(c.first())}),c.first())},e.prototype.removeItem=function(r){var n=this;return this.fallback?this.fallback.removeItem(r):this.getItem(r).pipe(c.mergeMap(function(e){return null!=e?n.transaction("readwrite").pipe(c.mergeMap(function(e){var t=e["delete"](r);return s.race(n.toSuccessObservable(t),n.toErrorObservable(t,"remover")).pipe(c.first())})):s.of(!0)}),c.first())},e.prototype.clear=function(){var r=this;return this.fallback?this.fallback.clear():this.transaction("readwrite").pipe(c.mergeMap(function(e){var t=e.clear();return s.race(r.toSuccessObservable(t),r.toErrorObservable(t,"clearer")).pipe(c.first())}),c.first())},e.prototype.connect=function(e){var t,r=this;void 0===e&&(e=null);try{t=indexedDB.open(this.dbName)}catch(o){return void this.setFallback(e)}s.fromEvent(t,"upgradeneeded").pipe(c.first()).subscribe(function(e){var t=e.target.result;t.objectStoreNames.contains(r.objectStoreName)||t.createObjectStore(r.objectStoreName)});var n=s.fromEvent(t,"success");s.race(n,this.toErrorObservable(t,"connection")).pipe(c.first()).subscribe(function(e){r.database.next(e.target.result)},function(){r.setFallback(e)})},e.prototype.transaction=function(t){var r=this;return void 0===t&&(t="readonly"),this.database.pipe(c.map(function(e){return e.transaction([r.objectStoreName],t).objectStore(r.objectStoreName)}))},e.prototype.toSuccessObservable=function(e){return s.fromEvent(e,"success").pipe(c.map(function(){return!0}))},e.prototype.toErrorObservable=function(e,t){return void 0===t&&(t=""),s.fromEvent(e,"error").pipe(c.mergeMap(function(){return s.throwError(new Error("IndexedDB "+t+" issue : "+e.error.message+"."))}))},e.prototype.setFallback=function(e){this.fallback=new i(e)},e.decorators=[{type:r.Injectable,args:[{providedIn:"root"}]}],e.ctorParameters=function(){return[{type:undefined,decorators:[{type:r.Optional},{type:r.Inject,args:[o]}]}]},e.ngInjectableDef=r.defineInjectable({factory:function t(){return new e(r.inject(o,8))},token:e,providedIn:"root"}),e}(),u=function(){function e(){this.localStorage=new Map}return e.prototype.getItem=function(e){var t=this.localStorage.get(e);return s.of(t!==undefined?t:null)},e.prototype.setItem=function(e,t){return this.localStorage.set(e,t),s.of(!0)},e.prototype.removeItem=function(e){return this.localStorage["delete"](e),s.of(!0)},e.prototype.clear=function(){return this.localStorage.clear(),s.of(!0)},e.decorators=[{type:r.Injectable,args:[{providedIn:"root"}]}],e.ngInjectableDef=r.defineInjectable({factory:function t(){return new e},token:e,providedIn:"root"}),e}();function l(e,t){return n.isPlatformBrowser(e)&&"indexedDB"in window&&indexedDB!==undefined&&null!==indexedDB?new a(t):n.isPlatformBrowser(e)&&"localStorage"in window&&localStorage!==undefined&&null!==localStorage?new i(t):new u}var p=function(){function e(){}return e.decorators=[{type:r.Injectable,args:[{providedIn:"root",useFactory:l,deps:[r.PLATFORM_ID,[new r.Optional,o]]}]}],e.ngInjectableDef=r.defineInjectable({factory:function t(){return l(r.inject(r.PLATFORM_ID),r.inject(o,8))},token:e,providedIn:"root"}),e}();function f(e){var t="function"==typeof Symbol&&e[Symbol.iterator],r=0;return t?t.call(e):{next:function(){return e&&r>=e.length&&(e=void 0),{value:e&&e[r++],done:!e}}}}var m=function(){function e(){}return e.prototype.validate=function(e,t){if(!((t.hasOwnProperty("const")&&t["const"]!==undefined||t.hasOwnProperty("enum")&&null!=t["enum"]||t.hasOwnProperty("type")&&null!=t.type)&&"array"!==t.type&&"object"!==t.type||t.hasOwnProperty("properties")&&null!=t.properties||t.hasOwnProperty("items")&&null!=t.items))throw new Error("Each value must have a 'type' or 'properties' or 'items' or 'const' or 'enum', to enforce strict types.");return(!t.hasOwnProperty("const")||t["const"]===undefined||e===t["const"])&&(!!this.validateEnum(e,t)&&(!!this.validateType(e,t)&&(!!this.validateItems(e,t)&&(!!this.validateProperties(e,t)&&!!this.validateRequired(e,t)))))},e.prototype.isObjectNotNull=function(e){return null!==e&&"object"==typeof e},e.prototype.validateProperties=function(e,t){if(!t.hasOwnProperty("properties")||null==t.properties)return!0;if(!this.isObjectNotNull(e))return!1;if(Object.keys(t.properties).length!==Object.keys(e).length)return!1;for(var r in t.properties)if(t.properties.hasOwnProperty(r)&&e.hasOwnProperty(r)&&!this.validate(e[r],t.properties[r]))return!1;return!0},e.prototype.validateRequired=function(e,t){var r,n;if(!t.hasOwnProperty("required")||null==t.required)return!0;if(!this.isObjectNotNull(e))return!1;try{for(var o=f(t.required),i=o.next();!i.done;i=o.next()){var a=i.value;if(!t.properties||!t.properties.hasOwnProperty(a))throw new Error("'required' properties must be described in 'properties' too.");if(!e.hasOwnProperty(a))return!1}}catch(u){r={error:u}}finally{try{i&&!i.done&&(n=o["return"])&&n.call(o)}finally{if(r)throw r.error}}return!0},e.prototype.validateEnum=function(e,t){return!t.hasOwnProperty("enum")||null==t["enum"]||-1!==t["enum"].indexOf(e)},e.prototype.validateType=function(e,t){if(!t.hasOwnProperty("type")||null==t.type)return!0;switch(t.type){case"null":return null===e;case"string":return this.validateString(e,t);case"number":case"integer":return this.validateNumber(e,t);case"boolean":return"boolean"==typeof e;case"object":return"object"==typeof e;case"array":return Array.isArray(e)}},e.prototype.validateItems=function(e,t){var r,n;if(!t.hasOwnProperty("items")||null==t.items)return!0;if(!Array.isArray(e))return!1;if(t.hasOwnProperty("maxItems")&&null!=t.maxItems){if(!Number.isInteger(t.maxItems)||t.maxItems<0)throw new Error("'maxItems' must be a non-negative integer.");if(e.length>t.maxItems)return!1}if(t.hasOwnProperty("minItems")&&null!=t.minItems){if(!Number.isInteger(t.minItems)||t.minItems<0)throw new Error("'minItems' must be a non-negative integer.");if(e.length<t.minItems)return!1}if(t.hasOwnProperty("uniqueItems")&&null!=t.uniqueItems&&t.uniqueItems){var o=new Set(e);if(e.length!==o.size)return!1}if(Array.isArray(t.items))return this.validateItemsList(e,t);try{for(var i=f(e),a=i.next();!a.done;a=i.next()){var u=a.value;if(!this.validate(u,t.items))return!1}}catch(s){r={error:s}}finally{try{a&&!a.done&&(n=i["return"])&&n.call(i)}finally{if(r)throw r.error}}return!0},e.prototype.validateItemsList=function(e,t){var r=t.items;if(e.length!==r.length)return!1;for(var n=0;n<r.length;n+=1)if(!this.validate(e[n],r[n]))return!1;return!0},e.prototype.validateString=function(e,t){if("string"!=typeof e)return!1;if(t.hasOwnProperty("maxLength")&&null!=t.maxLength){if(!Number.isInteger(t.maxLength)||t.maxLength<0)throw new Error("'maxLength' must be a non-negative integer.");if(e.length>t.maxLength)return!1}if(t.hasOwnProperty("minLength")&&null!=t.minLength){if(!Number.isInteger(t.minLength)||t.minLength<0)throw new Error("'minLength' must be a non-negative integer.");if(e.length<t.minLength)return!1}if(t.hasOwnProperty("pattern")&&null!=t.pattern&&!new RegExp(t.pattern).test(e))return!1;return!0},e.prototype.validateNumber=function(e,t){if("number"!=typeof e)return!1;if("integer"===t.type&&!Number.isInteger(e))return!1;if(t.hasOwnProperty("multipleOf")&&null!=t.multipleOf){if(t.multipleOf<=0)throw new Error("'multipleOf' must be a number strictly greater than 0.");if(!Number.isInteger(e/t.multipleOf))return!1}return!(t.hasOwnProperty("maximum")&&null!=t.maximum&&e>t.maximum)&&(!(t.hasOwnProperty("exclusiveMaximum")&&null!=t.exclusiveMaximum&&e>=t.exclusiveMaximum)&&(!(t.hasOwnProperty("minimum")&&null!=t.minimum&&e<t.minimum)&&!(t.hasOwnProperty("exclusiveMinimum")&&null!=t.exclusiveMinimum&&e<=t.exclusiveMinimum)))},e.decorators=[{type:r.Injectable,args:[{providedIn:"root"}]}],e.ngInjectableDef=r.defineInjectable({factory:function t(){return new e},token:e,providedIn:"root"}),e}(),t=function(){function e(e,t){this.database=e,this.jsonValidator=t,this.getItemOptionsDefault={schema:null}}return e.prototype.getItem=function(e,n){var o=this;return void 0===n&&(n=this.getItemOptionsDefault),this.database.getItem(e).pipe(c.mergeMap(function(e){if(n.schema&&null!==e){var t=!0;try{t=o.jsonValidator.validate(e,n.schema)}catch(r){return s.throwError(r)}if(!t)return s.throwError(new Error("JSON invalid"))}return s.of(e)}))},e.prototype.setItem=function(e,t){return this.database.setItem(e,t)},e.prototype.removeItem=function(e){return this.database.removeItem(e)},e.prototype.clear=function(){return this.database.clear()},e.prototype.setItemSubscribe=function(e,t){this.setItem(e,t).subscribe(function(){},function(){})},e.prototype.removeItemSubscribe=function(e){this.removeItem(e).subscribe(function(){},function(){})},e.prototype.clearSubscribe=function(){this.clear().subscribe(function(){},function(){})},e.decorators=[{type:r.Injectable,args:[{providedIn:"root"}]}],e.ctorParameters=function(){return[{type:p},{type:m}]},e.ngInjectableDef=r.defineInjectable({factory:function t(){return new e(r.inject(p),r.inject(m))},token:e,providedIn:"root"}),e}();e.LocalDatabase=p,e.IndexedDBDatabase=a,e.LocalStorageDatabase=i,e.MockLocalDatabase=u,e.JSONValidator=m,e.LocalStorage=t,e.localStorageProviders=function d(e){return[e.prefix?{provide:o,useValue:e.prefix}:[]]},e.LOCAL_STORAGE_PREFIX=o,e.ɵa=l,Object.defineProperty(e,"__esModule",{value:!0})});
//# sourceMappingURL=ngx-pwa-local-storage.umd.min.js.map
/**
* @fileoverview added by tsickle
* @suppress {checkTypes} checked by tsc
* @suppress {checkTypes,extraRequire,uselessCode} checked by tsc
*/

@@ -71,8 +71,10 @@ import { Injectable, Optional, Inject } from '@angular/core';

getItemFromTransaction(key, transactionParam) {
const /** @type {?} */ transaction$ = transactionParam ? of(transactionParam) : this.transaction();
/** @type {?} */
const transaction$ = transactionParam ? of(transactionParam) : this.transaction();
return transaction$.pipe(map((transaction) => transaction.get(key)), mergeMap((request) => {
/* Listening to the success event, and passing the item value if found, null otherwise */
const /** @type {?} */ success = (/** @type {?} */ (fromEvent(request, 'success'))).pipe(map((event) => (/** @type {?} */ (event.target)).result), map((result) => result && (this.dataPath in result) ? (/** @type {?} */ (result[this.dataPath])) : null));
/** @type {?} */
const success = ((/** @type {?} */ (fromEvent(request, 'success')))).pipe(map((event) => ((/** @type {?} */ (event.target))).result), map((result) => result && (this.dataPath in result) ? ((/** @type {?} */ (result[this.dataPath]))) : null));
/* Merging success and errors events and autoclosing the observable */
return (/** @type {?} */ (race(success, this.toErrorObservable(request, `getter`))))
return ((/** @type {?} */ (race(success, this.toErrorObservable(request, `getter`)))))
.pipe(first());

@@ -97,10 +99,14 @@ }), first());

/* Transaction must be the same for read and write, to avoid concurrency issues */
const /** @type {?} */ transaction$ = this.transaction('readwrite');
let /** @type {?} */ transaction;
/** @type {?} */
const transaction$ = this.transaction('readwrite');
/** @type {?} */
let transaction;
/* Opening a transaction */
return transaction$.pipe(tap((value) => {
transaction = value;
}), /* Check if the key already exists or not */
}),
/* Check if the key already exists or not */
mergeMap(() => this.getItemFromTransaction(key, transaction)), map((existingData) => (existingData == null) ? 'add' : 'put'), mergeMap((method) => {
let /** @type {?} */ request;
/** @type {?} */
let request;
/* Adding or updating local storage, based on previous checking */

@@ -117,3 +123,3 @@ switch (method) {

/* Merging success (passing true) and error events and autoclosing the observable */
return (/** @type {?} */ (race(this.toSuccessObservable(request), this.toErrorObservable(request, `setter`))))
return ((/** @type {?} */ (race(this.toSuccessObservable(request), this.toErrorObservable(request, `setter`)))))
.pipe(first());

@@ -139,5 +145,6 @@ }), first());

/* Deleting the item in local storage */
const /** @type {?} */ request = transaction.delete(key);
/** @type {?} */
const request = transaction.delete(key);
/* Merging success (passing true) and error events and autoclosing the observable */
return (/** @type {?} */ (race(this.toSuccessObservable(request), this.toErrorObservable(request, `remover`))))
return ((/** @type {?} */ (race(this.toSuccessObservable(request), this.toErrorObservable(request, `remover`)))))
.pipe(first());

@@ -162,5 +169,6 @@ }));

/* Deleting all items from local storage */
const /** @type {?} */ request = transaction.clear();
/** @type {?} */
const request = transaction.clear();
/* Merging success (passing true) and error events and autoclosing the observable */
return (/** @type {?} */ (race(this.toSuccessObservable(request), this.toErrorObservable(request, `clearer`))))
return ((/** @type {?} */ (race(this.toSuccessObservable(request), this.toErrorObservable(request, `clearer`)))))
.pipe(first());

@@ -175,3 +183,4 @@ }), first());

connect(prefix = null) {
let /** @type {?} */ request;
/** @type {?} */
let request;
/* Connecting to IndexedDB */

@@ -181,3 +190,3 @@ try {

}
catch (/** @type {?} */ error) {
catch (error) {
/* Fallback storage if IndexedDb connection is failing */

@@ -188,7 +197,8 @@ this.setFallback(prefix);

/* Listening the event fired on first connection, creating the object store for local storage */
(/** @type {?} */ (fromEvent(request, 'upgradeneeded')))
((/** @type {?} */ (fromEvent(request, 'upgradeneeded'))))
.pipe(first())
.subscribe((event) => {
/* Getting the database connection */
const /** @type {?} */ database = /** @type {?} */ ((/** @type {?} */ (event.target)).result);
/** @type {?} */
const database = (/** @type {?} */ (((/** @type {?} */ (event.target))).result));
/* Checking if the object store already exists, to avoid error */

@@ -201,9 +211,10 @@ if (!database.objectStoreNames.contains(this.objectStoreName)) {

/* Listening the success event and converting to an RxJS Observable */
const /** @type {?} */ success = /** @type {?} */ (fromEvent(request, 'success'));
/** @type {?} */
const success = (/** @type {?} */ (fromEvent(request, 'success')));
/* Merging success and errors events */
(/** @type {?} */ (race(success, this.toErrorObservable(request, `connection`))))
((/** @type {?} */ (race(success, this.toErrorObservable(request, `connection`)))))
.pipe(first())
.subscribe((event) => {
/* Storing the database connection for further access */
this.database.next(/** @type {?} */ ((/** @type {?} */ (event.target)).result));
this.database.next((/** @type {?} */ (((/** @type {?} */ (event.target))).result)));
}, () => {

@@ -231,3 +242,3 @@ /* Fallback storage if IndexedDb connection is failing */

/* Transforming a IndexedDB success event in an RxJS Observable with true value */
return (/** @type {?} */ (fromEvent(request, 'success')))
return ((/** @type {?} */ (fromEvent(request, 'success'))))
.pipe(map(() => true));

@@ -243,3 +254,3 @@ }

/* Transforming a IndexedDB error event in an RxJS ErrorObservable */
return (/** @type {?} */ (fromEvent(request, 'error')))
return ((/** @type {?} */ (fromEvent(request, 'error'))))
.pipe(mergeMap(() => throwError(new Error(`IndexedDB ${error} issue : ${((/** @type {?} */ (request.error))).message}.`))));

@@ -265,3 +276,3 @@ }

/** @nocollapse */ IndexedDBDatabase.ngInjectableDef = i0.defineInjectable({ factory: function IndexedDBDatabase_Factory() { return new IndexedDBDatabase(i0.inject(i1.LOCAL_STORAGE_PREFIX, 8)); }, token: IndexedDBDatabase, providedIn: "root" });
function IndexedDBDatabase_tsickle_Closure_declarations() {
if (false) {
/**

@@ -302,3 +313,2 @@ * IndexedDB database name for local storage

}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXhlZGRiLWRhdGFiYXNlLmpzIiwic291cmNlUm9vdCI6Im5nOi8vQG5neC1wd2EvbG9jYWwtc3RvcmFnZS8iLCJzb3VyY2VzIjpbImxpYi9kYXRhYmFzZXMvaW5kZXhlZGRiLWRhdGFiYXNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7QUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDN0QsT0FBTyxFQUFjLGFBQWEsRUFBRSxTQUFTLEVBQUUsRUFBRSxFQUFFLFVBQVUsRUFBRSxJQUFJLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDbEYsT0FBTyxFQUFFLEdBQUcsRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRzNELE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQy9ELE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLFdBQVcsQ0FBQzs7O0FBS2pELE1BQU07Ozs7O0lBZ0NKLFlBQWdFLFNBQXdCLElBQUk7UUFBNUIsV0FBTSxHQUFOLE1BQU0sQ0FBc0I7Ozs7c0JBM0J6RSxXQUFXOzs7OytCQUlPLGNBQWM7Ozs7dUJBSXRCLEtBQUs7Ozs7d0JBSUosT0FBTzs7Ozs7d0JBVU0sSUFBSTtRQU83QyxFQUFFLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO1lBRVgsSUFBSSxDQUFDLE1BQU0sR0FBRyxHQUFHLE1BQU0sSUFBSSxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7U0FFMUM7O1FBR0QsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLGFBQWEsRUFBZSxDQUFDOztRQUdqRCxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0tBRXRCOzs7Ozs7O0lBT0QsT0FBTyxDQUFVLEdBQVc7O1FBRzFCLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDO1lBQ2xCLE1B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QyxDQUFDLENBQUM7S0FFbEg7Ozs7OztJQU9TLG1CQUFtQixDQUFDLE9BQW1COztRQUcvQyxNQUFNLENBQUMsbUJBQUMsU0FBUyxDQUFDLE9BQU8sRUFBRSxTQUFTLENBQXNCLEVBQUM7YUFDeEQsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO0tBRTFCOzs7Ozs7O0lBUVMsaUJBQWlCLENBQUMsT0FBbUIsRUFBRSxLQUFLLEdBQUcsRUFBRTs7UUFHekQsTUFBTSxDQUFDLG1CQUFDLFNBQVMsQ0FBQyxPQUFPLEVBQUUsT0FBTyxDQUFzQixFQUFDO2FBQ3RELElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxFQUFFLENBQUMsVUFBVSxDQUFDLElBQUksS0FBSyxDQUFDLGFBQWEsS0FBSyxZQUFZLG9CQUFDLE9BQU8sQ0FBQyxLQUFxQixHQUFDLENBQUMsT0FBTyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztLQUUxSDs7Ozs7SUFFUyxXQUFXLENBQUMsTUFBcUI7UUFDekMsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLG9CQUFvQixDQUFDLE1BQU0sQ0FBQyxDQUFDO0tBQ2xEOzs7WUF0VUYsVUFBVSxTQUFDO2dCQUNWLFVBQVUsRUFBRSxNQUFNO2FBQ25COzs7OzRDQWlDYyxRQUFRLFlBQUksTUFBTSxTQUFDLG9CQUFvQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUsIE9wdGlvbmFsLCBJbmplY3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE9ic2VydmFibGUsIFJlcGxheVN1YmplY3QsIGZyb21FdmVudCwgb2YsIHRocm93RXJyb3IsIHJhY2UgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IG1hcCwgbWVyZ2VNYXAsIGZpcnN0LCB0YXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbmltcG9ydCB7IExvY2FsRGF0YWJhc2UgfSBmcm9tICcuL2xvY2FsLWRhdGFiYXNlJztcbmltcG9ydCB7IExvY2FsU3RvcmFnZURhdGFiYXNlIH0gZnJvbSAnLi9sb2NhbHN0b3JhZ2UtZGF0YWJhc2UnO1xuaW1wb3J0IHsgTE9DQUxfU1RPUkFHRV9QUkVGSVggfSBmcm9tICcuLi90b2tlbnMnO1xuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290J1xufSlcbmV4cG9ydCBjbGFzcyBJbmRleGVkREJEYXRhYmFzZSBpbXBsZW1lbnRzIExvY2FsRGF0YWJhc2Uge1xuXG4gIC8qKlxuICAgKiBJbmRleGVkREIgZGF0YWJhc2UgbmFtZSBmb3IgbG9jYWwgc3RvcmFnZVxuICAgKi9cbiAgcHJvdGVjdGVkIGRiTmFtZSA9ICduZ1N0b3JhZ2UnO1xuICAvKipcbiAgICogSW5kZXhlZERCIG9iamVjdCBzdG9yZSBuYW1lIGZvciBsb2NhbCBzdG9yYWdlXG4gICAqL1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgb2JqZWN0U3RvcmVOYW1lID0gJ2xvY2FsU3RvcmFnZSc7XG4gIC8qKlxuICAgKiBJbmRleGVkREIga2V5IHBhdGggbmFtZSBmb3IgbG9jYWwgc3RvcmFnZSAod2hlcmUgYW4gaXRlbSdzIGtleSB3aWxsIGJlIHN0b3JlZClcbiAgICovXG4gIHByb3RlY3RlZCByZWFkb25seSBrZXlQYXRoID0gJ2tleSc7XG4gIC8qKlxuICAgKiBJbmRleGVkREIgZGF0YSBwYXRoIG5hbWUgZm9yIGxvY2FsIHN0b3JhZ2UgKHdoZXJlIGl0ZW1zJyB2YWx1ZSB3aWxsIGJlIHN0b3JlZClcbiAgICovXG4gIHByb3RlY3RlZCByZWFkb25seSBkYXRhUGF0aCA9ICd2YWx1ZSc7XG4gIC8qKlxuICAgKiBJbmRleGVkREIgZGF0YWJhc2UgY29ubmVjdGlvbiwgd3JhcHBlZCBpbiBhIFJ4SlMgUmVwbGF5U3ViamVjdCB0byBiZSBhYmxlIHRvIGFjY2VzcyB0aGUgY29ubmVjdGlvblxuICAgKiBldmVuIGFmdGVyIHRoZSBjb25uZWN0aW9uIHN1Y2Nlc3MgZXZlbnQgaGFwcGVuZWRcbiAgICovXG4gIHByb3RlY3RlZCBkYXRhYmFzZTogUmVwbGF5U3ViamVjdDxJREJEYXRhYmFzZT47XG4gIC8qKlxuICAgKiBJbmRleGVkREIgaXMgYXZhaWxhYmxlIGJ1dCBmYWlsaW5nIGluIHNvbWUgc2NlbmFyaW9zIChGaXJlZm94IHByaXZhdGUgbW9kZSwgU2FmYXJpIGNyb3NzLW9yaWdpbiBpZnJhbWVzKSxcbiAgICogc28gYSBmYWxsYmFjayBjYW4gYmUgbmVlZGVkLlxuICAgKi9cbiAgcHJvdGVjdGVkIGZhbGxiYWNrOiBMb2NhbERhdGFiYXNlIHwgbnVsbCA9IG51bGw7XG5cbiAgLyoqXG4gICAqIENvbm5lY3RzIHRvIEluZGV4ZWREQlxuICAgKi9cbiAgY29uc3RydWN0b3IoQE9wdGlvbmFsKCkgQEluamVjdChMT0NBTF9TVE9SQUdFX1BSRUZJWCkgcHJvdGVjdGVkIHByZWZpeDogc3RyaW5nIHwgbnVsbCA9IG51bGwpIHtcblxuICAgIGlmIChwcmVmaXgpIHtcblxuICAgICAgdGhpcy5kYk5hbWUgPSBgJHtwcmVmaXh9XyR7dGhpcy5kYk5hbWV9YDtcblxuICAgIH1cblxuICAgIC8qIENyZWF0aW5nIHRoZSBSeEpTIFJlcGxheVN1YmplY3QgKi9cbiAgICB0aGlzLmRhdGFiYXNlID0gbmV3IFJlcGxheVN1YmplY3Q8SURCRGF0YWJhc2U+KCk7XG5cbiAgICAvKiBDb25uZWN0aW5nIHRvIEluZGV4ZWREQiAqL1xuICAgIHRoaXMuY29ubmVjdChwcmVmaXgpO1xuXG4gIH1cblxuICAvKipcbiAgICogR2V0cyBhbiBpdGVtIHZhbHVlIGluIGxvY2FsIHN0b3JhZ2VcbiAgICogQHBhcmFtIGtleSBUaGUgaXRlbSdzIGtleVxuICAgKiBAcmV0dXJucyBUaGUgaXRlbSdzIHZhbHVlIGlmIHRoZSBrZXkgZXhpc3RzLCBudWxsIG90aGVyd2lzZSwgd3JhcHBlZCBpbiBhbiBSeEpTIE9ic2VydmFibGVcbiAgICovXG4gIGdldEl0ZW08VCA9IGFueT4oa2V5OiBzdHJpbmcpOiBPYnNlcnZhYmxlPFTCoHwgbnVsbD4ge1xuXG4gICAgLyogRmFsbGJhY2sgc3RvcmFnZSBpZiBzZXQgKi9cbiAgICBpZiAodGhpcy5mYWxsYmFjaykge1xuICAgICAgcmV0dXJuIHRoaXMuZmFsbGJhY2suZ2V0SXRlbTxUPihrZXkpO1xuICAgIH1cblxuICAgIC8qIE9wZW5pbmcgYSB0cmFzYWN0aW9uIGFuZCByZXF1ZXN0aW5nIHRoZSBpdGVtIGluIGxvY2FsIHN0b3JhZ2UgKi9cbiAgICByZXR1cm4gdGhpcy5nZXRJdGVtRnJvbVRyYW5zYWN0aW9uPFQ+KGtleSk7XG5cbiAgfVxuXG4gIC8qKlxuICAgKiBJbnRlcm5hbCBtZXRob2QgdG8gZmFjdG9yaXplIHRoZSBnZXR0ZXIgZm9yIGdldEl0ZW0gYW5kIHNldEl0ZW0sXG4gICAqIHRoZSBsYXN0IG9uZSBuZWVkaW5nIHRvIGJlIGZyb20gYSBwcmVleGlzdGluZyB0cmFuc2FjdGlvblxuICAgKiBAcGFyYW0ga2V5IFRoZSBpdGVtJ3Mga2V5XG4gICAqIEBwYXJhbSB0cmFuc2FjdGlvblBhcmFtIE9wdGlvbmFsIHByZS1leGlzdGluZyB0cmFuc2FjdGlvbiB0byB1c2UgZm9yIHRoZSByZWFkIHJlcXVlc3RcbiAgICogQHJldHVybnMgVGhlIGl0ZW0ncyB2YWx1ZSBpZiB0aGUga2V5IGV4aXN0cywgbnVsbCBvdGhlcndpc2UsIHdyYXBwZWQgaW4gYW4gUnhKUyBPYnNlcnZhYmxlXG4gICAqL1xuICBwcml2YXRlIGdldEl0ZW1Gcm9tVHJhbnNhY3Rpb248VCA9IGFueT4oa2V5OiBzdHJpbmcsIHRyYW5zYWN0aW9uUGFyYW0/OiBJREJPYmplY3RTdG9yZSk6IE9ic2VydmFibGU8VMKgfCBudWxsPiB7XG5cbiAgICBjb25zdCB0cmFuc2FjdGlvbiQgPSB0cmFuc2FjdGlvblBhcmFtID8gb2YodHJhbnNhY3Rpb25QYXJhbSkgOiB0aGlzLnRyYW5zYWN0aW9uKCk7XG5cbiAgICByZXR1cm4gdHJhbnNhY3Rpb24kLnBpcGUoXG4gICAgICBtYXAoKHRyYW5zYWN0aW9uKSA9PiB0cmFuc2FjdGlvbi5nZXQoa2V5KSksXG4gICAgICBtZXJnZU1hcCgocmVxdWVzdCkgPT4ge1xuXG4gICAgICAgIC8qIExpc3RlbmluZyB0byB0aGUgc3VjY2VzcyBldmVudCwgYW5kIHBhc3NpbmcgdGhlIGl0ZW0gdmFsdWUgaWYgZm91bmQsIG51bGwgb3RoZXJ3aXNlICovXG4gICAgICAgIGNvbnN0IHN1Y2Nlc3MgPSAoZnJvbUV2ZW50KHJlcXVlc3QsICdzdWNjZXNzJykgYXMgT2JzZXJ2YWJsZTxFdmVudD4pLnBpcGUoXG4gICAgICAgICAgbWFwKChldmVudCkgPT4gKGV2ZW50LnRhcmdldCBhcyBJREJSZXF1ZXN0KS5yZXN1bHQpLFxuICAgICAgICAgIG1hcCgocmVzdWx0KSA9PiByZXN1bHQgJiYgKHRoaXMuZGF0YVBhdGggaW4gcmVzdWx0KSA/IChyZXN1bHRbdGhpcy5kYXRhUGF0aF0gYXMgVCkgOiBudWxsKVxuICAgICAgICApO1xuXG4gICAgICAgIC8qIE1lcmdpbmcgc3VjY2VzcyBhbmQgZXJyb3JzIGV2ZW50cyBhbmQgYXV0b2Nsb3NpbmcgdGhlIG9ic2VydmFibGUgKi9cbiAgICAgICAgcmV0dXJuIChyYWNlKHN1Y2Nlc3MsIHRoaXMudG9FcnJvck9ic2VydmFibGUocmVxdWVzdCwgYGdldHRlcmApKSBhcyBPYnNlcnZhYmxlPFQgfCBudWxsPilcbiAgICAgICAgICAucGlwZShmaXJzdCgpKTtcbiAgICAgIH0pLFxuICAgICAgZmlyc3QoKVxuICAgICk7XG5cbiAgfVxuXG4gIC8qKlxuICAgKiBTZXRzIGFuIGl0ZW0gaW4gbG9jYWwgc3RvcmFnZVxuICAgKiBAcGFyYW0ga2V5IFRoZSBpdGVtJ3Mga2V5XG4gICAqIEBwYXJhbSBkYXRhIFRoZSBpdGVtJ3MgdmFsdWUsIG11c3QgTk9UIGJlIG51bGwgb3IgdW5kZWZpbmVkXG4gICAqIEByZXR1cm5zIEFuIFJ4SlMgT2JzZXJ2YWJsZSB0byB3YWl0IHRoZSBlbmQgb2YgdGhlIG9wZXJhdGlvblxuICAgKi9cbiAgc2V0SXRlbShrZXk6IHN0cmluZywgZGF0YTogYW55KTogT2JzZXJ2YWJsZTxib29sZWFuPiB7XG5cbiAgICAvKiBGYWxsYmFjayBzdG9yYWdlIGlmIHNldCAqL1xuICAgIGlmICh0aGlzLmZhbGxiYWNrKSB7XG4gICAgICByZXR1cm4gdGhpcy5mYWxsYmFjay5zZXRJdGVtKGtleSwgZGF0YSk7XG4gICAgfVxuXG4gICAgLyogU3RvcmluZyBudWxsIGlzIG5vdCBjb3JyZWN0bHkgc3VwcG9ydGVkIGJ5IEluZGV4ZWREQiBhbmQgdW5uZWNlc3NhcnkgaGVyZSAqL1xuICAgIGlmIChkYXRhID09IG51bGwpIHtcblxuICAgICAgcmV0dXJuIG9mKHRydWUpO1xuXG4gICAgfVxuXG4gICAgLyogVHJhbnNhY3Rpb24gbXVzdCBiZSB0aGUgc2FtZSBmb3IgcmVhZCBhbmQgd3JpdGUsIHRvIGF2b2lkIGNvbmN1cnJlbmN5IGlzc3VlcyAqL1xuICAgIGNvbnN0IHRyYW5zYWN0aW9uJCA9IHRoaXMudHJhbnNhY3Rpb24oJ3JlYWR3cml0ZScpO1xuICAgIGxldCB0cmFuc2FjdGlvbjogSURCT2JqZWN0U3RvcmU7XG5cbiAgICAgICAgLyogT3BlbmluZyBhIHRyYW5zYWN0aW9uICovXG4gICAgICAgIHJldHVybiB0cmFuc2FjdGlvbiQucGlwZShcbiAgICAgICAgICB0YXAoKHZhbHVlKSA9PiB7XG4gICAgICAgICAgICB0cmFuc2FjdGlvbiA9IHZhbHVlO1xuICAgICAgICAgIH0pLFxuICAgICAgICAgIC8qIENoZWNrIGlmIHRoZSBrZXkgYWxyZWFkeSBleGlzdHMgb3Igbm90ICovXG4gICAgICAgICAgbWVyZ2VNYXAoKCkgPT4gdGhpcy5nZXRJdGVtRnJvbVRyYW5zYWN0aW9uKGtleSwgdHJhbnNhY3Rpb24pKSxcbiAgICAgICAgICBtYXAoKGV4aXN0aW5nRGF0YSkgPT4gKGV4aXN0aW5nRGF0YSA9PSBudWxsKSA/ICdhZGQnIDogJ3B1dCcpLFxuICAgICAgICAgIG1lcmdlTWFwKChtZXRob2QpID0+IHtcblxuICAgICAgICAgICAgbGV0IHJlcXVlc3Q6IElEQlJlcXVlc3Q7XG5cbiAgICAgICAgICAgIC8qIEFkZGluZyBvciB1cGRhdGluZyBsb2NhbCBzdG9yYWdlLCBiYXNlZCBvbiBwcmV2aW91cyBjaGVja2luZyAqL1xuICAgICAgICAgICAgc3dpdGNoIChtZXRob2QpIHtcbiAgICAgICAgICAgICAgY2FzZSAnYWRkJzpcbiAgICAgICAgICAgICAgICByZXF1ZXN0ID0gdHJhbnNhY3Rpb24uYWRkKHsgW3RoaXMuZGF0YVBhdGhdOiBkYXRhIH0sIGtleSk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgIGNhc2UgJ3B1dCc6XG4gICAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgcmVxdWVzdCA9IHRyYW5zYWN0aW9uLnB1dCh7IFt0aGlzLmRhdGFQYXRoXTogZGF0YSB9LCBrZXkpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAvKiBNZXJnaW5nIHN1Y2Nlc3MgKHBhc3NpbmcgdHJ1ZSkgYW5kIGVycm9yIGV2ZW50cyBhbmQgYXV0b2Nsb3NpbmcgdGhlIG9ic2VydmFibGUgKi9cbiAgICAgICAgICAgIHJldHVybiAocmFjZSh0aGlzLnRvU3VjY2Vzc09ic2VydmFibGUocmVxdWVzdCksIHRoaXMudG9FcnJvck9ic2VydmFibGUocmVxdWVzdCwgYHNldHRlcmApKSBhcyBPYnNlcnZhYmxlPGJvb2xlYW4+KVxuICAgICAgICAgICAgICAucGlwZShmaXJzdCgpKTtcblxuICAgICAgICB9KSxcbiAgICAgICAgZmlyc3QoKVxuICAgICAgKTtcblxuICB9XG5cbiAgLyoqXG4gICAqIERlbGV0ZXMgYW4gaXRlbSBpbiBsb2NhbCBzdG9yYWdlXG4gICAqIEBwYXJhbSBrZXkgVGhlIGl0ZW0ncyBrZXlcbiAgICogQHJldHVybnMgQW4gUnhKUyBPYnNlcnZhYmxlIHRvIHdhaXQgdGhlIGVuZCBvZiB0aGUgb3BlcmF0aW9uXG4gICAqL1xuICByZW1vdmVJdGVtKGtleTogc3RyaW5nKTogT2JzZXJ2YWJsZTxib29sZWFuPiB7XG5cbiAgICAvKiBGYWxsYmFjayBzdG9yYWdlIGlmIHNldCAqL1xuICAgIGlmICh0aGlzLmZhbGxiYWNrKSB7XG4gICAgICByZXR1cm4gdGhpcy5mYWxsYmFjay5yZW1vdmVJdGVtKGtleSk7XG4gICAgfVxuXG4gICAgLyogT3BlbmluZyBhIHRyYW5zYWN0aW9uIGFuZCBjaGVja2luZyBpZiB0aGUgaXRlbSBleGlzdHMgaW4gbG9jYWwgc3RvcmFnZSAqL1xuICAgIHJldHVybiB0aGlzLmdldEl0ZW0oa2V5KS5waXBlKFxuICAgICAgbWVyZ2VNYXAoKGRhdGEpID0+IHtcblxuICAgICAgICAvKiBJZiB0aGUgaXRlbSBleGlzdHMgaW4gbG9jYWwgc3RvcmFnZSAqL1xuICAgICAgICBpZiAoZGF0YSAhPSBudWxsKSB7XG5cbiAgICAgICAgICAvKiBPcGVuaW5nIGEgdHJhbnNhY3Rpb24gKi9cbiAgICAgICAgICByZXR1cm4gdGhpcy50cmFuc2FjdGlvbigncmVhZHdyaXRlJykucGlwZShtZXJnZU1hcCgodHJhbnNhY3Rpb24pID0+IHtcblxuICAgICAgICAgICAgLyogRGVsZXRpbmcgdGhlIGl0ZW0gaW4gbG9jYWwgc3RvcmFnZSAqL1xuICAgICAgICAgICAgY29uc3QgcmVxdWVzdCA9IHRyYW5zYWN0aW9uLmRlbGV0ZShrZXkpO1xuXG4gICAgICAgICAgICAvKiBNZXJnaW5nIHN1Y2Nlc3MgKHBhc3NpbmcgdHJ1ZSkgYW5kIGVycm9yIGV2ZW50cyBhbmQgYXV0b2Nsb3NpbmcgdGhlIG9ic2VydmFibGUgKi9cbiAgICAgICAgICAgIHJldHVybiAocmFjZSh0aGlzLnRvU3VjY2Vzc09ic2VydmFibGUocmVxdWVzdCksIHRoaXMudG9FcnJvck9ic2VydmFibGUocmVxdWVzdCwgYHJlbW92ZXJgKSkgYXMgT2JzZXJ2YWJsZTxib29sZWFuPilcbiAgICAgICAgICAgICAgLnBpcGUoZmlyc3QoKSk7XG5cbiAgICAgICAgICB9KSk7XG5cbiAgICAgICAgfVxuXG4gICAgICAgIC8qIFBhc3NpbmcgdHJ1ZSBpZiB0aGUgaXRlbSBkb2VzIG5vdCBleGlzdCBpbiBsb2NhbCBzdG9yYWdlICovXG4gICAgICAgIHJldHVybiBvZih0cnVlKTtcblxuICAgICAgfSksXG4gICAgICBmaXJzdCgpXG4gICAgKTtcblxuICB9XG5cbiAgLyoqXG4gICAqIERlbGV0ZXMgYWxsIGl0ZW1zIGZyb20gbG9jYWwgc3RvcmFnZVxuICAgKiBAcmV0dXJucyBBbiBSeEpTIE9ic2VydmFibGUgdG8gd2FpdCB0aGUgZW5kIG9mIHRoZSBvcGVyYXRpb25cbiAgICovXG4gIGNsZWFyKCk6IE9ic2VydmFibGU8Ym9vbGVhbj4ge1xuXG4gICAgLyogRmFsbGJhY2sgc3RvcmFnZSBpZiBzZXQgKi9cbiAgICBpZiAodGhpcy5mYWxsYmFjaykge1xuICAgICAgcmV0dXJuIHRoaXMuZmFsbGJhY2suY2xlYXIoKTtcbiAgICB9XG5cbiAgICAvKiBPcGVuaW5nIGEgdHJhbnNhY3Rpb24gKi9cbiAgICByZXR1cm4gdGhpcy50cmFuc2FjdGlvbigncmVhZHdyaXRlJykucGlwZShcbiAgICAgIG1lcmdlTWFwKCh0cmFuc2FjdGlvbikgPT4ge1xuXG4gICAgICAgIC8qIERlbGV0aW5nIGFsbCBpdGVtcyBmcm9tIGxvY2FsIHN0b3JhZ2UgKi9cbiAgICAgICAgY29uc3QgcmVxdWVzdCA9IHRyYW5zYWN0aW9uLmNsZWFyKCk7XG5cbiAgICAgICAgLyogTWVyZ2luZyBzdWNjZXNzIChwYXNzaW5nIHRydWUpIGFuZCBlcnJvciBldmVudHMgYW5kIGF1dG9jbG9zaW5nIHRoZSBvYnNlcnZhYmxlICovXG4gICAgICAgIHJldHVybiAocmFjZSh0aGlzLnRvU3VjY2Vzc09ic2VydmFibGUocmVxdWVzdCksIHRoaXMudG9FcnJvck9ic2VydmFibGUocmVxdWVzdCwgYGNsZWFyZXJgKSkgYXMgT2JzZXJ2YWJsZTxib29sZWFuPilcbiAgICAgICAgICAucGlwZShmaXJzdCgpKTtcblxuICAgICAgfSksXG4gICAgICBmaXJzdCgpXG4gICAgKTtcblxuICB9XG5cbiAgLyoqXG4gICAqIENvbm5lY3RzIHRvIEluZGV4ZWREQiBhbmQgY3JlYXRlcyB0aGUgb2JqZWN0IHN0b3JlIG9uIGZpcnN0IHRpbWVcbiAgICovXG4gIHByb3RlY3RlZCBjb25uZWN0KHByZWZpeDogc3RyaW5nIHwgbnVsbCA9IG51bGwpOiB2b2lkIHtcblxuICAgIGxldCByZXF1ZXN0OiBJREJPcGVuREJSZXF1ZXN0O1xuXG4gICAgLyogQ29ubmVjdGluZyB0byBJbmRleGVkREIgKi9cbiAgICB0cnkge1xuXG4gICAgICByZXF1ZXN0ID0gaW5kZXhlZERCLm9wZW4odGhpcy5kYk5hbWUpO1xuXG4gICAgfcKgY2F0Y2ggKGVycm9yKSB7XG5cbiAgICAgIC8qIEZhbGxiYWNrIHN0b3JhZ2UgaWYgSW5kZXhlZERiIGNvbm5lY3Rpb24gaXMgZmFpbGluZyAqL1xuICAgICAgdGhpcy5zZXRGYWxsYmFjayhwcmVmaXgpO1xuXG4gICAgICByZXR1cm47XG5cbiAgICB9XG5cbiAgICAvKiBMaXN0ZW5pbmcgdGhlIGV2ZW50IGZpcmVkIG9uIGZpcnN0IGNvbm5lY3Rpb24sIGNyZWF0aW5nIHRoZSBvYmplY3Qgc3RvcmUgZm9yIGxvY2FsIHN0b3JhZ2UgKi9cbiAgICAoZnJvbUV2ZW50KHJlcXVlc3QsICd1cGdyYWRlbmVlZGVkJykgYXMgT2JzZXJ2YWJsZTxFdmVudD4pXG4gICAgICAucGlwZShmaXJzdCgpKVxuICAgICAgLnN1YnNjcmliZSgoZXZlbnQpID0+IHtcblxuICAgICAgICAvKiBHZXR0aW5nIHRoZSBkYXRhYmFzZSBjb25uZWN0aW9uICovXG4gICAgICAgIGNvbnN0IGRhdGFiYXNlID0gKGV2ZW50LnRhcmdldCBhcyBJREJSZXF1ZXN0KS5yZXN1bHQgYXMgSURCRGF0YWJhc2U7XG5cbiAgICAgICAgLyogQ2hlY2tpbmcgaWYgdGhlIG9iamVjdCBzdG9yZSBhbHJlYWR5IGV4aXN0cywgdG8gYXZvaWQgZXJyb3IgKi9cbiAgICAgICAgaWYgKCFkYXRhYmFzZS5vYmplY3RTdG9yZU5hbWVzLmNvbnRhaW5zKHRoaXMub2JqZWN0U3RvcmVOYW1lKSkge1xuXG4gICAgICAgICAgLyogQ3JlYXRpbmcgdGhlIG9iamVjdCBzdG9yZSBmb3IgbG9jYWwgc3RvcmFnZSAqL1xuICAgICAgICAgIGRhdGFiYXNlLmNyZWF0ZU9iamVjdFN0b3JlKHRoaXMub2JqZWN0U3RvcmVOYW1lKTtcblxuICAgICAgICB9XG5cbiAgICAgIH0pO1xuXG4gICAgLyogTGlzdGVuaW5nIHRoZSBzdWNjZXNzIGV2ZW50IGFuZCBjb252ZXJ0aW5nIHRvIGFuIFJ4SlMgT2JzZXJ2YWJsZSAqL1xuICAgIGNvbnN0IHN1Y2Nlc3MgPSBmcm9tRXZlbnQocmVxdWVzdCwgJ3N1Y2Nlc3MnKSBhcyBPYnNlcnZhYmxlPEV2ZW50PjtcblxuICAgIC8qIE1lcmdpbmcgc3VjY2VzcyBhbmQgZXJyb3JzIGV2ZW50cyAqL1xuICAgIChyYWNlKHN1Y2Nlc3MsIHRoaXMudG9FcnJvck9ic2VydmFibGUocmVxdWVzdCwgYGNvbm5lY3Rpb25gKSkgYXMgT2JzZXJ2YWJsZTxFdmVudD4pXG4gICAgICAucGlwZShmaXJzdCgpKVxuICAgICAgLnN1YnNjcmliZSgoZXZlbnQpID0+IHtcblxuICAgICAgICAvKiBTdG9yaW5nIHRoZSBkYXRhYmFzZSBjb25uZWN0aW9uIGZvciBmdXJ0aGVyIGFjY2VzcyAqL1xuICAgICAgICB0aGlzLmRhdGFiYXNlLm5leHQoKGV2ZW50LnRhcmdldCBhcyBJREJSZXF1ZXN0KS5yZXN1bHQgYXMgSURCRGF0YWJhc2UpO1xuXG4gICAgICB9LCAoKSA9PiB7XG5cbiAgICAgICAgLyogRmFsbGJhY2sgc3RvcmFnZSBpZiBJbmRleGVkRGIgY29ubmVjdGlvbiBpcyBmYWlsaW5nICovXG4gICAgICAgIHRoaXMuc2V0RmFsbGJhY2socHJlZml4KTtcblxuICAgICAgfSk7XG5cbiAgfVxuXG4gIC8qKlxuICAgKiBPcGVucyBhbiBJbmRleGVkREIgdHJhbnNhY3Rpb24gYW5kIGdldHMgdGhlIGxvY2FsIHN0b3JhZ2Ugb2JqZWN0IHN0b3JlXG4gICAqIEBwYXJhbSBtb2RlIERlZmF1bHQgdG8gJ3JlYWRvbmx5JyBmb3IgcmVhZCBvcGVyYXRpb25zLCBvciAncmVhZHdyaXRlJyBmb3Igd3JpdGUgb3BlcmF0aW9uc1xuICAgKiBAcmV0dXJucyBBbiBJbmRleGVkREIgdHJhbnNhY3Rpb24gb2JqZWN0IHN0b3JlLCB3cmFwcGVkIGluIGFuIFJ4SlMgT2JzZXJ2YWJsZVxuICAgKi9cbiAgcHJvdGVjdGVkIHRyYW5zYWN0aW9uKG1vZGU6ICdyZWFkb25seScgfCAncmVhZHdyaXRlJyA9ICdyZWFkb25seScpOiBPYnNlcnZhYmxlPElEQk9iamVjdFN0b3JlPiB7XG5cbiAgICAvKiBGcm9tIHRoZSBJbmRleGVkREIgY29ubmVjdGlvbiwgb3BlbmluZyBhIHRyYW5zYWN0aW9uIGFuZCBnZXR0aW5nIHRoZSBsb2NhbCBzdG9yYWdlIG9iamV0IHN0b3JlICovXG4gICAgcmV0dXJuIHRoaXMuZGF0YWJhc2VcbiAgICAgIC5waXBlKG1hcCgoZGF0YWJhc2UpID0+IGRhdGFiYXNlLnRyYW5zYWN0aW9uKFt0aGlzLm9iamVjdFN0b3JlTmFtZV0sIG1vZGUpLm9iamVjdFN0b3JlKHRoaXMub2JqZWN0U3RvcmVOYW1lKSkpO1xuXG4gIH1cblxuICAvKipcbiAgICogVHJhbnNmb3JtcyBhIEluZGV4ZWREQiBzdWNjZXNzIGV2ZW50IGluIGFuIFJ4SlMgT2JzZXJ2YWJsZVxuICAgKiBAcGFyYW0gcmVxdWVzdCBUaGUgcmVxdWVzdCB0byBsaXN0ZW5cbiAgICogQHJldHVybnMgQSBSeEpTIE9ic2VydmFibGUgd2l0aCB0cnVlIHZhbHVlXG4gICAqL1xuICBwcm90ZWN0ZWQgdG9TdWNjZXNzT2JzZXJ2YWJsZShyZXF1ZXN0OiBJREJSZXF1ZXN0KTogT2JzZXJ2YWJsZTxib29sZWFuPiB7XG5cbiAgICAvKiBUcmFuc2Zvcm1pbmcgYSBJbmRleGVkREIgc3VjY2VzcyBldmVudCBpbiBhbiBSeEpTIE9ic2VydmFibGUgd2l0aCB0cnVlIHZhbHVlICovXG4gICAgcmV0dXJuIChmcm9tRXZlbnQocmVxdWVzdCwgJ3N1Y2Nlc3MnKSBhcyBPYnNlcnZhYmxlPEV2ZW50PilcbiAgICAgIC5waXBlKG1hcCgoKSA9PiB0cnVlKSk7XG5cbiAgfVxuXG4gIC8qKlxuICAgKiBUcmFuc2Zvcm1zIGEgSW5kZXhlZERCIGVycm9yIGV2ZW50IGluIGFuIFJ4SlMgRXJyb3JPYnNlcnZhYmxlXG4gICAqIEBwYXJhbSByZXF1ZXN0IFRoZSByZXF1ZXN0IHRvIGxpc3RlblxuICAgKiBAcGFyYW0gZXJyb3IgT3B0aW9ubmFsIGRldGFpbHMgYWJvdXQgdGhlIGVycm9yJ3Mgb3JpZ2luXG4gICAqIEByZXR1cm5zIEEgUnhKUyBFcnJvck9ic2VydmFibGVcbiAgICovXG4gIHByb3RlY3RlZCB0b0Vycm9yT2JzZXJ2YWJsZShyZXF1ZXN0OiBJREJSZXF1ZXN0LCBlcnJvciA9IGBgKTogT2JzZXJ2YWJsZTxuZXZlcj4ge1xuXG4gICAgLyogVHJhbnNmb3JtaW5nIGEgSW5kZXhlZERCIGVycm9yIGV2ZW50IGluIGFuIFJ4SlMgRXJyb3JPYnNlcnZhYmxlICovXG4gICAgcmV0dXJuIChmcm9tRXZlbnQocmVxdWVzdCwgJ2Vycm9yJykgYXMgT2JzZXJ2YWJsZTxFdmVudD4pXG4gICAgICAucGlwZShtZXJnZU1hcCgoKSA9PiB0aHJvd0Vycm9yKG5ldyBFcnJvcihgSW5kZXhlZERCICR7ZXJyb3J9IGlzc3VlIDogJHsocmVxdWVzdC5lcnJvciBhcyBET01FeGNlcHRpb24pLm1lc3NhZ2V9LmApKSkpO1xuXG4gIH1cblxuICBwcm90ZWN0ZWQgc2V0RmFsbGJhY2socHJlZml4OiBzdHJpbmcgfCBudWxsKTogdm9pZCB7XG4gICAgdGhpcy5mYWxsYmFjayA9IG5ldyBMb2NhbFN0b3JhZ2VEYXRhYmFzZShwcmVmaXgpO1xuICB9XG5cbn1cbiJdfQ==
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXhlZGRiLWRhdGFiYXNlLmpzIiwic291cmNlUm9vdCI6Im5nOi8vQG5neC1wd2EvbG9jYWwtc3RvcmFnZS8iLCJzb3VyY2VzIjpbImxpYi9kYXRhYmFzZXMvaW5kZXhlZGRiLWRhdGFiYXNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7QUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDN0QsT0FBTyxFQUFjLGFBQWEsRUFBRSxTQUFTLEVBQUUsRUFBRSxFQUFFLFVBQVUsRUFBRSxJQUFJLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDbEYsT0FBTyxFQUFFLEdBQUcsRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRzNELE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQy9ELE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLFdBQVcsQ0FBQzs7O0FBS2pELE1BQU0sT0FBTyxpQkFBaUI7Ozs7O0lBZ0M1QixZQUFnRSxTQUF3QixJQUFJO1FBQTVCLFdBQU0sR0FBTixNQUFNLENBQXNCOzs7O1FBM0JsRixXQUFNLEdBQUcsV0FBVyxDQUFDOzs7O1FBSVosb0JBQWUsR0FBRyxjQUFjLENBQUM7Ozs7UUFJakMsWUFBTyxHQUFHLEtBQUssQ0FBQzs7OztRQUloQixhQUFRLEdBQUcsT0FBTyxDQUFDOzs7OztRQVU1QixhQUFRLEdBQXlCLElBQUksQ0FBQztRQU85QyxJQUFJLE1BQU0sRUFBRTtZQUVWLElBQUksQ0FBQyxNQUFNLEdBQUcsR0FBRyxNQUFNLElBQUksSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO1NBRTFDO1FBRUQscUNBQXFDO1FBQ3JDLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxhQUFhLEVBQWUsQ0FBQztRQUVqRCw2QkFBNkI7UUFDN0IsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQztJ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U0FBQyxvQkFBb0I7Ozs7Ozs7O0lBM0JwRCxtQ0FBK0I7Ozs7O0lBSS9CLDRDQUFvRDs7Ozs7SUFJcEQsb0NBQW1DOzs7OztJQUluQyxxQ0FBc0M7Ozs7OztJQUt0QyxxQ0FBK0M7Ozs7OztJQUsvQyxxQ0FBZ0Q7O0lBS3BDLG1DQUFnRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUsIE9wdGlvbmFsLCBJbmplY3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE9ic2VydmFibGUsIFJlcGxheVN1YmplY3QsIGZyb21FdmVudCwgb2YsIHRocm93RXJyb3IsIHJhY2UgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IG1hcCwgbWVyZ2VNYXAsIGZpcnN0LCB0YXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbmltcG9ydCB7IExvY2FsRGF0YWJhc2UgfSBmcm9tICcuL2xvY2FsLWRhdGFiYXNlJztcbmltcG9ydCB7IExvY2FsU3RvcmFnZURhdGFiYXNlIH0gZnJvbSAnLi9sb2NhbHN0b3JhZ2UtZGF0YWJhc2UnO1xuaW1wb3J0IHsgTE9DQUxfU1RPUkFHRV9QUkVGSVggfSBmcm9tICcuLi90b2tlbnMnO1xuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290J1xufSlcbmV4cG9ydCBjbGFzcyBJbmRleGVkREJEYXRhYmFzZSBpbXBsZW1lbnRzIExvY2FsRGF0YWJhc2Uge1xuXG4gIC8qKlxuICAgKiBJbmRleGVkREIgZGF0YWJhc2UgbmFtZSBmb3IgbG9jYWwgc3RvcmFnZVxuICAgKi9cbiAgcHJvdGVjdGVkIGRiTmFtZSA9ICduZ1N0b3JhZ2UnO1xuICAvKipcbiAgICogSW5kZXhlZERCIG9iamVjdCBzdG9yZSBuYW1lIGZvciBsb2NhbCBzdG9yYWdlXG4gICAqL1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgb2JqZWN0U3RvcmVOYW1lID0gJ2xvY2FsU3RvcmFnZSc7XG4gIC8qKlxuICAgKiBJbmRleGVkREIga2V5IHBhdGggbmFtZSBmb3IgbG9jYWwgc3RvcmFnZSAod2hlcmUgYW4gaXRlbSdzIGtleSB3aWxsIGJlIHN0b3JlZClcbiAgICovXG4gIHByb3RlY3RlZCByZWFkb25seSBrZXlQYXRoID0gJ2tleSc7XG4gIC8qKlxuICAgKiBJbmRleGVkREIgZGF0YSBwYXRoIG5hbWUgZm9yIGxvY2FsIHN0b3JhZ2UgKHdoZXJlIGl0ZW1zJyB2YWx1ZSB3aWxsIGJlIHN0b3JlZClcbiAgICovXG4gIHByb3RlY3RlZCByZWFkb25seSBkYXRhUGF0aCA9ICd2YWx1ZSc7XG4gIC8qKlxuICAgKiBJbmRleGVkREIgZGF0YWJhc2UgY29ubmVjdGlvbiwgd3JhcHBlZCBpbiBhIFJ4SlMgUmVwbGF5U3ViamVjdCB0byBiZSBhYmxlIHRvIGFjY2VzcyB0aGUgY29ubmVjdGlvblxuICAgKiBldmVuIGFmdGVyIHRoZSBjb25uZWN0aW9uIHN1Y2Nlc3MgZXZlbnQgaGFwcGVuZWRcbiAgICovXG4gIHByb3RlY3RlZCBkYXRhYmFzZTogUmVwbGF5U3ViamVjdDxJREJEYXRhYmFzZT47XG4gIC8qKlxuICAgKiBJbmRleGVkREIgaXMgYXZhaWxhYmxlIGJ1dCBmYWlsaW5nIGluIHNvbWUgc2NlbmFyaW9zIChGaXJlZm94IHByaXZhdGUgbW9kZSwgU2FmYXJpIGNyb3NzLW9yaWdpbiBpZnJhbWVzKSxcbiAgICogc28gYSBmYWxsYmFjayBjYW4gYmUgbmVlZGVkLlxuICAgKi9cbiAgcHJvdGVjdGVkIGZhbGxiYWNrOiBMb2NhbERhdGFiYXNlIHwgbnVsbCA9IG51bGw7XG5cbiAgLyoqXG4gICAqIENvbm5lY3RzIHRvIEluZGV4ZWREQlxuICAgKi9cbiAgY29uc3RydWN0b3IoQE9wdGlvbmFsKCkgQEluamVjdChMT0NBTF9TVE9SQUdFX1BSRUZJWCkgcHJvdGVjdGVkIHByZWZpeDogc3RyaW5nIHwgbnVsbCA9IG51bGwpIHtcblxuICAgIGlmIChwcmVmaXgpIHtcblxuICAgICAgdGhpcy5kYk5hbWUgPSBgJHtwcmVmaXh9XyR7dGhpcy5kYk5hbWV9YDtcblxuICAgIH1cblxuICAgIC8qIENyZWF0aW5nIHRoZSBSeEpTIFJlcGxheVN1YmplY3QgKi9cbiAgICB0aGlzLmRhdGFiYXNlID0gbmV3IFJlcGxheVN1YmplY3Q8SURCRGF0YWJhc2U+KCk7XG5cbiAgICAvKiBDb25uZWN0aW5nIHRvIEluZGV4ZWREQiAqL1xuICAgIHRoaXMuY29ubmVjdChwcmVmaXgpO1xuXG4gIH1cblxuICAvKipcbiAgICogR2V0cyBhbiBpdGVtIHZhbHVlIGluIGxvY2FsIHN0b3JhZ2VcbiAgICogQHBhcmFtIGtleSBUaGUgaXRlbSdzIGtleVxuICAgKiBAcmV0dXJucyBUaGUgaXRlbSdzIHZhbHVlIGlmIHRoZSBrZXkgZXhpc3RzLCBudWxsIG90aGVyd2lzZSwgd3JhcHBlZCBpbiBhbiBSeEpTIE9ic2VydmFibGVcbiAgICovXG4gIGdldEl0ZW08VCA9IGFueT4oa2V5OiBzdHJpbmcpOiBPYnNlcnZhYmxlPFTCoHwgbnVsbD4ge1xuXG4gICAgLyogRmFsbGJhY2sgc3RvcmFnZSBpZiBzZXQgKi9cbiAgICBpZiAodGhpcy5mYWxsYmFjaykge1xuICAgICAgcmV0dXJuIHRoaXMuZmFsbGJhY2suZ2V0SXRlbTxUPihrZXkpO1xuICAgIH1cblxuICAgIC8qIE9wZW5pbmcgYSB0cmFzYWN0aW9uIGFuZCByZXF1ZXN0aW5nIHRoZSBpdGVtIGluIGxvY2FsIHN0b3JhZ2UgKi9cbiAgICByZXR1cm4gdGhpcy5nZXRJdGVtRnJvbVRyYW5zYWN0aW9uPFQ+KGtleSk7XG5cbiAgfVxuXG4gIC8qKlxuICAgKiBJbnRlcm5hbCBtZXRob2QgdG8gZmFjdG9yaXplIHRoZSBnZXR0ZXIgZm9yIGdldEl0ZW0gYW5kIHNldEl0ZW0sXG4gICAqIHRoZSBsYXN0IG9uZSBuZWVkaW5nIHRvIGJlIGZyb20gYSBwcmVleGlzdGluZyB0cmFuc2FjdGlvblxuICAgKiBAcGFyYW0ga2V5IFRoZSBpdGVtJ3Mga2V5XG4gICAqIEBwYXJhbSB0cmFuc2FjdGlvblBhcmFtIE9wdGlvbmFsIHByZS1leGlzdGluZyB0cmFuc2FjdGlvbiB0byB1c2UgZm9yIHRoZSByZWFkIHJlcXVlc3RcbiAgICogQHJldHVybnMgVGhlIGl0ZW0ncyB2YWx1ZSBpZiB0aGUga2V5IGV4aXN0cywgbnVsbCBvdGhlcndpc2UsIHdyYXBwZWQgaW4gYW4gUnhKUyBPYnNlcnZhYmxlXG4gICAqL1xuICBwcml2YXRlIGdldEl0ZW1Gcm9tVHJhbnNhY3Rpb248VCA9IGFueT4oa2V5OiBzdHJpbmcsIHRyYW5zYWN0aW9uUGFyYW0/OiBJREJPYmplY3RTdG9yZSk6IE9ic2VydmFibGU8VMKgfCBudWxsPiB7XG5cbiAgICBjb25zdCB0cmFuc2FjdGlvbiQgPSB0cmFuc2FjdGlvblBhcmFtID8gb2YodHJhbnNhY3Rpb25QYXJhbSkgOiB0aGlzLnRyYW5zYWN0aW9uKCk7XG5cbiAgICByZXR1cm4gdHJhbnNhY3Rpb24kLnBpcGUoXG4gICAgICBtYXAoKHRyYW5zYWN0aW9uKSA9PiB0cmFuc2FjdGlvbi5nZXQoa2V5KSksXG4gICAgICBtZXJnZU1hcCgocmVxdWVzdCkgPT4ge1xuXG4gICAgICAgIC8qIExpc3RlbmluZyB0byB0aGUgc3VjY2VzcyBldmVudCwgYW5kIHBhc3NpbmcgdGhlIGl0ZW0gdmFsdWUgaWYgZm91bmQsIG51bGwgb3RoZXJ3aXNlICovXG4gICAgICAgIGNvbnN0IHN1Y2Nlc3MgPSAoZnJvbUV2ZW50KHJlcXVlc3QsICdzdWNjZXNzJykgYXMgT2JzZXJ2YWJsZTxFdmVudD4pLnBpcGUoXG4gICAgICAgICAgbWFwKChldmVudCkgPT4gKGV2ZW50LnRhcmdldCBhcyBJREJSZXF1ZXN0KS5yZXN1bHQpLFxuICAgICAgICAgIG1hcCgocmVzdWx0KSA9PiByZXN1bHQgJiYgKHRoaXMuZGF0YVBhdGggaW4gcmVzdWx0KSA/IChyZXN1bHRbdGhpcy5kYXRhUGF0aF0gYXMgVCkgOiBudWxsKVxuICAgICAgICApO1xuXG4gICAgICAgIC8qIE1lcmdpbmcgc3VjY2VzcyBhbmQgZXJyb3JzIGV2ZW50cyBhbmQgYXV0b2Nsb3NpbmcgdGhlIG9ic2VydmFibGUgKi9cbiAgICAgICAgcmV0dXJuIChyYWNlKHN1Y2Nlc3MsIHRoaXMudG9FcnJvck9ic2VydmFibGUocmVxdWVzdCwgYGdldHRlcmApKSBhcyBPYnNlcnZhYmxlPFQgfCBudWxsPilcbiAgICAgICAgICAucGlwZShmaXJzdCgpKTtcbiAgICAgIH0pLFxuICAgICAgZmlyc3QoKVxuICAgICk7XG5cbiAgfVxuXG4gIC8qKlxuICAgKiBTZXRzIGFuIGl0ZW0gaW4gbG9jYWwgc3RvcmFnZVxuICAgKiBAcGFyYW0ga2V5IFRoZSBpdGVtJ3Mga2V5XG4gICAqIEBwYXJhbSBkYXRhIFRoZSBpdGVtJ3MgdmFsdWUsIG11c3QgTk9UIGJlIG51bGwgb3IgdW5kZWZpbmVkXG4gICAqIEByZXR1cm5zIEFuIFJ4SlMgT2JzZXJ2YWJsZSB0byB3YWl0IHRoZSBlbmQgb2YgdGhlIG9wZXJhdGlvblxuICAgKi9cbiAgc2V0SXRlbShrZXk6IHN0cmluZywgZGF0YTogYW55KTogT2JzZXJ2YWJsZTxib29sZWFuPiB7XG5cbiAgICAvKiBGYWxsYmFjayBzdG9yYWdlIGlmIHNldCAqL1xuICAgIGlmICh0aGlzLmZhbGxiYWNrKSB7XG4gICAgICByZXR1cm4gdGhpcy5mYWxsYmFjay5zZXRJdGVtKGtleSwgZGF0YSk7XG4gICAgfVxuXG4gICAgLyogU3RvcmluZyBudWxsIGlzIG5vdCBjb3JyZWN0bHkgc3VwcG9ydGVkIGJ5IEluZGV4ZWREQiBhbmQgdW5uZWNlc3NhcnkgaGVyZSAqL1xuICAgIGlmIChkYXRhID09IG51bGwpIHtcblxuICAgICAgcmV0dXJuIG9mKHRydWUpO1xuXG4gICAgfVxuXG4gICAgLyogVHJhbnNhY3Rpb24gbXVzdCBiZSB0aGUgc2FtZSBmb3IgcmVhZCBhbmQgd3JpdGUsIHRvIGF2b2lkIGNvbmN1cnJlbmN5IGlzc3VlcyAqL1xuICAgIGNvbnN0IHRyYW5zYWN0aW9uJCA9IHRoaXMudHJhbnNhY3Rpb24oJ3JlYWR3cml0ZScpO1xuICAgIGxldCB0cmFuc2FjdGlvbjogSURCT2JqZWN0U3RvcmU7XG5cbiAgICAgICAgLyogT3BlbmluZyBhIHRyYW5zYWN0aW9uICovXG4gICAgICAgIHJldHVybiB0cmFuc2FjdGlvbiQucGlwZShcbiAgICAgICAgICB0YXAoKHZhbHVlKSA9PiB7XG4gICAgICAgICAgICB0cmFuc2FjdGlvbiA9IHZhbHVlO1xuICAgICAgICAgIH0pLFxuICAgICAgICAgIC8qIENoZWNrIGlmIHRoZSBrZXkgYWxyZWFkeSBleGlzdHMgb3Igbm90ICovXG4gICAgICAgICAgbWVyZ2VNYXAoKCkgPT4gdGhpcy5nZXRJdGVtRnJvbVRyYW5zYWN0aW9uKGtleSwgdHJhbnNhY3Rpb24pKSxcbiAgICAgICAgICBtYXAoKGV4aXN0aW5nRGF0YSkgPT4gKGV4aXN0aW5nRGF0YSA9PSBudWxsKSA/ICdhZGQnIDogJ3B1dCcpLFxuICAgICAgICAgIG1lcmdlTWFwKChtZXRob2QpID0+IHtcblxuICAgICAgICAgICAgbGV0IHJlcXVlc3Q6IElEQlJlcXVlc3Q7XG5cbiAgICAgICAgICAgIC8qIEFkZGluZyBvciB1cGRhdGluZyBsb2NhbCBzdG9yYWdlLCBiYXNlZCBvbiBwcmV2aW91cyBjaGVja2luZyAqL1xuICAgICAgICAgICAgc3dpdGNoIChtZXRob2QpIHtcbiAgICAgICAgICAgICAgY2FzZSAnYWRkJzpcbiAgICAgICAgICAgICAgICByZXF1ZXN0ID0gdHJhbnNhY3Rpb24uYWRkKHsgW3RoaXMuZGF0YVBhdGhdOiBkYXRhIH0sIGtleSk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgIGNhc2UgJ3B1dCc6XG4gICAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgcmVxdWVzdCA9IHRyYW5zYWN0aW9uLnB1dCh7IFt0aGlzLmRhdGFQYXRoXTogZGF0YSB9LCBrZXkpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAvKiBNZXJnaW5nIHN1Y2Nlc3MgKHBhc3NpbmcgdHJ1ZSkgYW5kIGVycm9yIGV2ZW50cyBhbmQgYXV0b2Nsb3NpbmcgdGhlIG9ic2VydmFibGUgKi9cbiAgICAgICAgICAgIHJldHVybiAocmFjZSh0aGlzLnRvU3VjY2Vzc09ic2VydmFibGUocmVxdWVzdCksIHRoaXMudG9FcnJvck9ic2VydmFibGUocmVxdWVzdCwgYHNldHRlcmApKSBhcyBPYnNlcnZhYmxlPGJvb2xlYW4+KVxuICAgICAgICAgICAgICAucGlwZShmaXJzdCgpKTtcblxuICAgICAgICB9KSxcbiAgICAgICAgZmlyc3QoKVxuICAgICAgKTtcblxuICB9XG5cbiAgLyoqXG4gICAqIERlbGV0ZXMgYW4gaXRlbSBpbiBsb2NhbCBzdG9yYWdlXG4gICAqIEBwYXJhbSBrZXkgVGhlIGl0ZW0ncyBrZXlcbiAgICogQHJldHVybnMgQW4gUnhKUyBPYnNlcnZhYmxlIHRvIHdhaXQgdGhlIGVuZCBvZiB0aGUgb3BlcmF0aW9uXG4gICAqL1xuICByZW1vdmVJdGVtKGtleTogc3RyaW5nKTogT2JzZXJ2YWJsZTxib29sZWFuPiB7XG5cbiAgICAvKiBGYWxsYmFjayBzdG9yYWdlIGlmIHNldCAqL1xuICAgIGlmICh0aGlzLmZhbGxiYWNrKSB7XG4gICAgICByZXR1cm4gdGhpcy5mYWxsYmFjay5yZW1vdmVJdGVtKGtleSk7XG4gICAgfVxuXG4gICAgLyogT3BlbmluZyBhIHRyYW5zYWN0aW9uIGFuZCBjaGVja2luZyBpZiB0aGUgaXRlbSBleGlzdHMgaW4gbG9jYWwgc3RvcmFnZSAqL1xuICAgIHJldHVybiB0aGlzLmdldEl0ZW0oa2V5KS5waXBlKFxuICAgICAgbWVyZ2VNYXAoKGRhdGEpID0+IHtcblxuICAgICAgICAvKiBJZiB0aGUgaXRlbSBleGlzdHMgaW4gbG9jYWwgc3RvcmFnZSAqL1xuICAgICAgICBpZiAoZGF0YSAhPSBudWxsKSB7XG5cbiAgICAgICAgICAvKiBPcGVuaW5nIGEgdHJhbnNhY3Rpb24gKi9cbiAgICAgICAgICByZXR1cm4gdGhpcy50cmFuc2FjdGlvbigncmVhZHdyaXRlJykucGlwZShtZXJnZU1hcCgodHJhbnNhY3Rpb24pID0+IHtcblxuICAgICAgICAgICAgLyogRGVsZXRpbmcgdGhlIGl0ZW0gaW4gbG9jYWwgc3RvcmFnZSAqL1xuICAgICAgICAgICAgY29uc3QgcmVxdWVzdCA9IHRyYW5zYWN0aW9uLmRlbGV0ZShrZXkpO1xuXG4gICAgICAgICAgICAvKiBNZXJnaW5nIHN1Y2Nlc3MgKHBhc3NpbmcgdHJ1ZSkgYW5kIGVycm9yIGV2ZW50cyBhbmQgYXV0b2Nsb3NpbmcgdGhlIG9ic2VydmFibGUgKi9cbiAgICAgICAgICAgIHJldHVybiAocmFjZSh0aGlzLnRvU3VjY2Vzc09ic2VydmFibGUocmVxdWVzdCksIHRoaXMudG9FcnJvck9ic2VydmFibGUocmVxdWVzdCwgYHJlbW92ZXJgKSkgYXMgT2JzZXJ2YWJsZTxib29sZWFuPilcbiAgICAgICAgICAgICAgLnBpcGUoZmlyc3QoKSk7XG5cbiAgICAgICAgICB9KSk7XG5cbiAgICAgICAgfVxuXG4gICAgICAgIC8qIFBhc3NpbmcgdHJ1ZSBpZiB0aGUgaXRlbSBkb2VzIG5vdCBleGlzdCBpbiBsb2NhbCBzdG9yYWdlICovXG4gICAgICAgIHJldHVybiBvZih0cnVlKTtcblxuICAgICAgfSksXG4gICAgICBmaXJzdCgpXG4gICAgKTtcblxuICB9XG5cbiAgLyoqXG4gICAqIERlbGV0ZXMgYWxsIGl0ZW1zIGZyb20gbG9jYWwgc3RvcmFnZVxuICAgKiBAcmV0dXJucyBBbiBSeEpTIE9ic2VydmFibGUgdG8gd2FpdCB0aGUgZW5kIG9mIHRoZSBvcGVyYXRpb25cbiAgICovXG4gIGNsZWFyKCk6IE9ic2VydmFibGU8Ym9vbGVhbj4ge1xuXG4gICAgLyogRmFsbGJhY2sgc3RvcmFnZSBpZiBzZXQgKi9cbiAgICBpZiAodGhpcy5mYWxsYmFjaykge1xuICAgICAgcmV0dXJuIHRoaXMuZmFsbGJhY2suY2xlYXIoKTtcbiAgICB9XG5cbiAgICAvKiBPcGVuaW5nIGEgdHJhbnNhY3Rpb24gKi9cbiAgICByZXR1cm4gdGhpcy50cmFuc2FjdGlvbigncmVhZHdyaXRlJykucGlwZShcbiAgICAgIG1lcmdlTWFwKCh0cmFuc2FjdGlvbikgPT4ge1xuXG4gICAgICAgIC8qIERlbGV0aW5nIGFsbCBpdGVtcyBmcm9tIGxvY2FsIHN0b3JhZ2UgKi9cbiAgICAgICAgY29uc3QgcmVxdWVzdCA9IHRyYW5zYWN0aW9uLmNsZWFyKCk7XG5cbiAgICAgICAgLyogTWVyZ2luZyBzdWNjZXNzIChwYXNzaW5nIHRydWUpIGFuZCBlcnJvciBldmVudHMgYW5kIGF1dG9jbG9zaW5nIHRoZSBvYnNlcnZhYmxlICovXG4gICAgICAgIHJldHVybiAocmFjZSh0aGlzLnRvU3VjY2Vzc09ic2VydmFibGUocmVxdWVzdCksIHRoaXMudG9FcnJvck9ic2VydmFibGUocmVxdWVzdCwgYGNsZWFyZXJgKSkgYXMgT2JzZXJ2YWJsZTxib29sZWFuPilcbiAgICAgICAgICAucGlwZShmaXJzdCgpKTtcblxuICAgICAgfSksXG4gICAgICBmaXJzdCgpXG4gICAgKTtcblxuICB9XG5cbiAgLyoqXG4gICAqIENvbm5lY3RzIHRvIEluZGV4ZWREQiBhbmQgY3JlYXRlcyB0aGUgb2JqZWN0IHN0b3JlIG9uIGZpcnN0IHRpbWVcbiAgICovXG4gIHByb3RlY3RlZCBjb25uZWN0KHByZWZpeDogc3RyaW5nIHwgbnVsbCA9IG51bGwpOiB2b2lkIHtcblxuICAgIGxldCByZXF1ZXN0OiBJREJPcGVuREJSZXF1ZXN0O1xuXG4gICAgLyogQ29ubmVjdGluZyB0byBJbmRleGVkREIgKi9cbiAgICB0cnkge1xuXG4gICAgICByZXF1ZXN0ID0gaW5kZXhlZERCLm9wZW4odGhpcy5kYk5hbWUpO1xuXG4gICAgfcKgY2F0Y2ggKGVycm9yKSB7XG5cbiAgICAgIC8qIEZhbGxiYWNrIHN0b3JhZ2UgaWYgSW5kZXhlZERiIGNvbm5lY3Rpb24gaXMgZmFpbGluZyAqL1xuICAgICAgdGhpcy5zZXRGYWxsYmFjayhwcmVmaXgpO1xuXG4gICAgICByZXR1cm47XG5cbiAgICB9XG5cbiAgICAvKiBMaXN0ZW5pbmcgdGhlIGV2ZW50IGZpcmVkIG9uIGZpcnN0IGNvbm5lY3Rpb24sIGNyZWF0aW5nIHRoZSBvYmplY3Qgc3RvcmUgZm9yIGxvY2FsIHN0b3JhZ2UgKi9cbiAgICAoZnJvbUV2ZW50KHJlcXVlc3QsICd1cGdyYWRlbmVlZGVkJykgYXMgT2JzZXJ2YWJsZTxFdmVudD4pXG4gICAgICAucGlwZShmaXJzdCgpKVxuICAgICAgLnN1YnNjcmliZSgoZXZlbnQpID0+IHtcblxuICAgICAgICAvKiBHZXR0aW5nIHRoZSBkYXRhYmFzZSBjb25uZWN0aW9uICovXG4gICAgICAgIGNvbnN0IGRhdGFiYXNlID0gKGV2ZW50LnRhcmdldCBhcyBJREJSZXF1ZXN0KS5yZXN1bHQgYXMgSURCRGF0YWJhc2U7XG5cbiAgICAgICAgLyogQ2hlY2tpbmcgaWYgdGhlIG9iamVjdCBzdG9yZSBhbHJlYWR5IGV4aXN0cywgdG8gYXZvaWQgZXJyb3IgKi9cbiAgICAgICAgaWYgKCFkYXRhYmFzZS5vYmplY3RTdG9yZU5hbWVzLmNvbnRhaW5zKHRoaXMub2JqZWN0U3RvcmVOYW1lKSkge1xuXG4gICAgICAgICAgLyogQ3JlYXRpbmcgdGhlIG9iamVjdCBzdG9yZSBmb3IgbG9jYWwgc3RvcmFnZSAqL1xuICAgICAgICAgIGRhdGFiYXNlLmNyZWF0ZU9iamVjdFN0b3JlKHRoaXMub2JqZWN0U3RvcmVOYW1lKTtcblxuICAgICAgICB9XG5cbiAgICAgIH0pO1xuXG4gICAgLyogTGlzdGVuaW5nIHRoZSBzdWNjZXNzIGV2ZW50IGFuZCBjb252ZXJ0aW5nIHRvIGFuIFJ4SlMgT2JzZXJ2YWJsZSAqL1xuICAgIGNvbnN0IHN1Y2Nlc3MgPSBmcm9tRXZlbnQocmVxdWVzdCwgJ3N1Y2Nlc3MnKSBhcyBPYnNlcnZhYmxlPEV2ZW50PjtcblxuICAgIC8qIE1lcmdpbmcgc3VjY2VzcyBhbmQgZXJyb3JzIGV2ZW50cyAqL1xuICAgIChyYWNlKHN1Y2Nlc3MsIHRoaXMudG9FcnJvck9ic2VydmFibGUocmVxdWVzdCwgYGNvbm5lY3Rpb25gKSkgYXMgT2JzZXJ2YWJsZTxFdmVudD4pXG4gICAgICAucGlwZShmaXJzdCgpKVxuICAgICAgLnN1YnNjcmliZSgoZXZlbnQpID0+IHtcblxuICAgICAgICAvKiBTdG9yaW5nIHRoZSBkYXRhYmFzZSBjb25uZWN0aW9uIGZvciBmdXJ0aGVyIGFjY2VzcyAqL1xuICAgICAgICB0aGlzLmRhdGFiYXNlLm5leHQoKGV2ZW50LnRhcmdldCBhcyBJREJSZXF1ZXN0KS5yZXN1bHQgYXMgSURCRGF0YWJhc2UpO1xuXG4gICAgICB9LCAoKSA9PiB7XG5cbiAgICAgICAgLyogRmFsbGJhY2sgc3RvcmFnZSBpZiBJbmRleGVkRGIgY29ubmVjdGlvbiBpcyBmYWlsaW5nICovXG4gICAgICAgIHRoaXMuc2V0RmFsbGJhY2socHJlZml4KTtcblxuICAgICAgfSk7XG5cbiAgfVxuXG4gIC8qKlxuICAgKiBPcGVucyBhbiBJbmRleGVkREIgdHJhbnNhY3Rpb24gYW5kIGdldHMgdGhlIGxvY2FsIHN0b3JhZ2Ugb2JqZWN0IHN0b3JlXG4gICAqIEBwYXJhbSBtb2RlIERlZmF1bHQgdG8gJ3JlYWRvbmx5JyBmb3IgcmVhZCBvcGVyYXRpb25zLCBvciAncmVhZHdyaXRlJyBmb3Igd3JpdGUgb3BlcmF0aW9uc1xuICAgKiBAcmV0dXJucyBBbiBJbmRleGVkREIgdHJhbnNhY3Rpb24gb2JqZWN0IHN0b3JlLCB3cmFwcGVkIGluIGFuIFJ4SlMgT2JzZXJ2YWJsZVxuICAgKi9cbiAgcHJvdGVjdGVkIHRyYW5zYWN0aW9uKG1vZGU6ICdyZWFkb25seScgfCAncmVhZHdyaXRlJyA9ICdyZWFkb25seScpOiBPYnNlcnZhYmxlPElEQk9iamVjdFN0b3JlPiB7XG5cbiAgICAvKiBGcm9tIHRoZSBJbmRleGVkREIgY29ubmVjdGlvbiwgb3BlbmluZyBhIHRyYW5zYWN0aW9uIGFuZCBnZXR0aW5nIHRoZSBsb2NhbCBzdG9yYWdlIG9iamV0IHN0b3JlICovXG4gICAgcmV0dXJuIHRoaXMuZGF0YWJhc2VcbiAgICAgIC5waXBlKG1hcCgoZGF0YWJhc2UpID0+IGRhdGFiYXNlLnRyYW5zYWN0aW9uKFt0aGlzLm9iamVjdFN0b3JlTmFtZV0sIG1vZGUpLm9iamVjdFN0b3JlKHRoaXMub2JqZWN0U3RvcmVOYW1lKSkpO1xuXG4gIH1cblxuICAvKipcbiAgICogVHJhbnNmb3JtcyBhIEluZGV4ZWREQiBzdWNjZXNzIGV2ZW50IGluIGFuIFJ4SlMgT2JzZXJ2YWJsZVxuICAgKiBAcGFyYW0gcmVxdWVzdCBUaGUgcmVxdWVzdCB0byBsaXN0ZW5cbiAgICogQHJldHVybnMgQSBSeEpTIE9ic2VydmFibGUgd2l0aCB0cnVlIHZhbHVlXG4gICAqL1xuICBwcm90ZWN0ZWQgdG9TdWNjZXNzT2JzZXJ2YWJsZShyZXF1ZXN0OiBJREJSZXF1ZXN0KTogT2JzZXJ2YWJsZTxib29sZWFuPiB7XG5cbiAgICAvKiBUcmFuc2Zvcm1pbmcgYSBJbmRleGVkREIgc3VjY2VzcyBldmVudCBpbiBhbiBSeEpTIE9ic2VydmFibGUgd2l0aCB0cnVlIHZhbHVlICovXG4gICAgcmV0dXJuIChmcm9tRXZlbnQocmVxdWVzdCwgJ3N1Y2Nlc3MnKSBhcyBPYnNlcnZhYmxlPEV2ZW50PilcbiAgICAgIC5waXBlKG1hcCgoKSA9PiB0cnVlKSk7XG5cbiAgfVxuXG4gIC8qKlxuICAgKiBUcmFuc2Zvcm1zIGEgSW5kZXhlZERCIGVycm9yIGV2ZW50IGluIGFuIFJ4SlMgRXJyb3JPYnNlcnZhYmxlXG4gICAqIEBwYXJhbSByZXF1ZXN0IFRoZSByZXF1ZXN0IHRvIGxpc3RlblxuICAgKiBAcGFyYW0gZXJyb3IgT3B0aW9ubmFsIGRldGFpbHMgYWJvdXQgdGhlIGVycm9yJ3Mgb3JpZ2luXG4gICAqIEByZXR1cm5zIEEgUnhKUyBFcnJvck9ic2VydmFibGVcbiAgICovXG4gIHByb3RlY3RlZCB0b0Vycm9yT2JzZXJ2YWJsZShyZXF1ZXN0OiBJREJSZXF1ZXN0LCBlcnJvciA9IGBgKTogT2JzZXJ2YWJsZTxuZXZlcj4ge1xuXG4gICAgLyogVHJhbnNmb3JtaW5nIGEgSW5kZXhlZERCIGVycm9yIGV2ZW50IGluIGFuIFJ4SlMgRXJyb3JPYnNlcnZhYmxlICovXG4gICAgcmV0dXJuIChmcm9tRXZlbnQocmVxdWVzdCwgJ2Vycm9yJykgYXMgT2JzZXJ2YWJsZTxFdmVudD4pXG4gICAgICAucGlwZShtZXJnZU1hcCgoKSA9PiB0aHJvd0Vycm9yKG5ldyBFcnJvcihgSW5kZXhlZERCICR7ZXJyb3J9IGlzc3VlIDogJHsocmVxdWVzdC5lcnJvciBhcyBET01FeGNlcHRpb24pLm1lc3NhZ2V9LmApKSkpO1xuXG4gIH1cblxuICBwcm90ZWN0ZWQgc2V0RmFsbGJhY2socHJlZml4OiBzdHJpbmcgfCBudWxsKTogdm9pZCB7XG4gICAgdGhpcy5mYWxsYmFjayA9IG5ldyBMb2NhbFN0b3JhZ2VEYXRhYmFzZShwcmVmaXgpO1xuICB9XG5cbn1cbiJdfQ==
/**
* @fileoverview added by tsickle
* @suppress {checkTypes} checked by tsc
* @suppress {checkTypes,extraRequire,uselessCode} checked by tsc
*/

@@ -48,3 +48,3 @@ import { Injectable, PLATFORM_ID, Optional } from '@angular/core';

/** @nocollapse */ LocalDatabase.ngInjectableDef = i0.defineInjectable({ factory: function LocalDatabase_Factory() { return localDatabaseFactory(i0.inject(i0.PLATFORM_ID), i0.inject(i1.LOCAL_STORAGE_PREFIX, 8)); }, token: LocalDatabase, providedIn: "root" });
function LocalDatabase_tsickle_Closure_declarations() {
if (false) {
/**

@@ -76,3 +76,2 @@ * @abstract

}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9jYWwtZGF0YWJhc2UuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9Abmd4LXB3YS9sb2NhbC1zdG9yYWdlLyIsInNvdXJjZXMiOlsibGliL2RhdGFiYXNlcy9sb2NhbC1kYXRhYmFzZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O0FBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxXQUFXLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2xFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBR3BELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ3pELE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQy9ELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQzFELE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLFdBQVcsQ0FBQzs7Ozs7Ozs7QUFFakQsTUFBTSwrQkFBK0IsVUFBa0IsRUFBRSxNQUFxQjtJQUU1RSxFQUFFLENBQUMsQ0FBQyxpQkFBaUIsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLFdBQVcsSUFBSSxNQUFNLENBQUMsSUFBSSxDQUFDLFNBQVMsS0FBSyxTQUFTLENBQUMsSUFBSSxDQUFDLFNBQVMsS0FBSyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7O1FBR2xILE1BQU0sQ0FBQyxJQUFJLGlCQUFpQixDQUFDLE1BQU0sQ0FBQyxDQUFDO0tBRXRDO0lBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLGlCQUFpQixDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsY0FBYyxJQUFJLE1BQU0sQ0FBQyxJQUFJLENBQUMsWUFBWSxLQUFLLFNBQVMsQ0FBQyxJQUFJLENBQUMsWUFBWSxLQUFLLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQzs7UUFHbEksTUFBTSxDQUFDLElBQUksb0JBQW9CLENBQUMsTUFBTSxDQUFDLENBQUM7S0FFekM7SUFBQyxJQUFJLENBQUMsQ0FBQzs7UUFHTixNQUFNLENBQUMsSUFBSSxpQkFBaUIsRUFBRSxDQUFDO0tBRWhDO0NBRUY7Ozs7QUFVRCxNQUFNOzs7WUFSTCxVQUFVLFNBQUM7Z0JBQ1YsVUFBVSxFQUFFLE1BQU07Z0JBQ2xCLFVBQVUsRUFBRSxvQkFBb0I7Z0JBQ2hDLElBQUksRUFBRTtvQkFDSixXQUFXO29CQUNYLENBQUMsSUFBSSxRQUFRLEVBQUUsRUFBRSxvQkFBb0IsQ0FBQztpQkFDdkM7YUFDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUsIFBMQVRGT1JNX0lELCBPcHRpb25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgaXNQbGF0Zm9ybUJyb3dzZXIgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQgeyBJbmRleGVkREJEYXRhYmFzZSB9IGZyb20gJy4vaW5kZXhlZGRiLWRhdGFiYXNlJztcbmltcG9ydCB7IExvY2FsU3RvcmFnZURhdGFiYXNlIH0gZnJvbSAnLi9sb2NhbHN0b3JhZ2UtZGF0YWJhc2UnO1xuaW1wb3J0IHsgTW9ja0xvY2FsRGF0YWJhc2UgfSBmcm9tICcuL21vY2stbG9jYWwtZGF0YWJhc2UnO1xuaW1wb3J0IHsgTE9DQUxfU1RPUkFHRV9QUkVGSVggfSBmcm9tICcuLi90b2tlbnMnO1xuXG5leHBvcnQgZnVuY3Rpb24gbG9jYWxEYXRhYmFzZUZhY3RvcnkocGxhdGZvcm1JZDogT2JqZWN0LCBwcmVmaXg6IHN0cmluZyB8IG51bGwpIHtcblxuICBpZiAoaXNQbGF0Zm9ybUJyb3dzZXIocGxhdGZvcm1JZCkgJiYgKCdpbmRleGVkREInIGluIHdpbmRvdykgJiYgKGluZGV4ZWREQiAhPT0gdW5kZWZpbmVkKSAmJiAoaW5kZXhlZERCICE9PSBudWxsKSkge1xuXG4gICAgLyogVHJ5IHdpdGggSW5kZXhlZERCIGluIG1vZGVybiBicm93c2VycyAqL1xuICAgIHJldHVybiBuZXcgSW5kZXhlZERCRGF0YWJhc2UocHJlZml4KTtcblxuICB9IGVsc2UgaWYgKGlzUGxhdGZvcm1Ccm93c2VyKHBsYXRmb3JtSWQpICYmICgnbG9jYWxTdG9yYWdlJyBpbiB3aW5kb3cpICYmIChsb2NhbFN0b3JhZ2UgIT09IHVuZGVmaW5lZCkgJiYgKGxvY2FsU3RvcmFnZSAhPT0gbnVsbCkpIHtcblxuICAgIC8qIFRyeSB3aXRoIGxvY2FsU3RvcmFnZSBpbiBvbGQgYnJvd3NlcnMgKElFOSkgKi9cbiAgICByZXR1cm4gbmV3IExvY2FsU3RvcmFnZURhdGFiYXNlKHByZWZpeCk7XG5cbiAgfSBlbHNlIHtcblxuICAgIC8qIEZha2UgZGF0YWJhc2UgZm9yIHNlcnZlci1zaWRlIHJlbmRlcmluZyAoVW5pdmVyc2FsKSAqL1xuICAgIHJldHVybiBuZXcgTW9ja0xvY2FsRGF0YWJhc2UoKTtcblxuICB9XG5cbn1cblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCcsXG4gIHVzZUZhY3Rvcnk6IGxvY2FsRGF0YWJhc2VGYWN0b3J5LFxuICBkZXBzOiBbXG4gICAgUExBVEZPUk1fSUQsXG4gICAgW25ldyBPcHRpb25hbCgpLCBMT0NBTF9TVE9SQUdFX1BSRUZJWF1cbiAgXVxufSlcbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBMb2NhbERhdGFiYXNlIHtcblxuICBhYnN0cmFjdCBnZXRJdGVtPFQgPSBhbnk+KGtleTogc3RyaW5nKTogT2JzZXJ2YWJsZTxUIHwgbnVsbD47XG4gIGFic3RyYWN0IHNldEl0ZW0oa2V5OiBzdHJpbmcsIGRhdGE6IGFueSk6IE9ic2VydmFibGU8Ym9vbGVhbj47XG4gIGFic3RyYWN0IHJlbW92ZUl0ZW0oa2V5OiBzdHJpbmcpOiBPYnNlcnZhYmxlPGJvb2xlYW4+O1xuICBhYnN0cmFjdCBjbGVhcigpOiBPYnNlcnZhYmxlPGJvb2xlYW4+O1xuXG59XG4iXX0=
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9jYWwtZGF0YWJhc2UuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9Abmd4LXB3YS9sb2NhbC1zdG9yYWdlLyIsInNvdXJjZXMiOlsibGliL2RhdGFiYXNlcy9sb2NhbC1kYXRhYmFzZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O0FBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxXQUFXLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2xFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBR3BELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ3pELE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQy9ELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQzFELE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLFdBQVcsQ0FBQzs7Ozs7Ozs7QUFFakQsTUFBTSxVQUFVLG9CQUFvQixDQUFDLFVBQWtCLEVBQUUsTUFBcUI7SUFFNUUsSUFBSSxpQkFBaUIsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLFdBQVcsSUFBSSxNQUFNLENBQUMsSUFBSSxDQUFDLFNBQVMsS0FBSyxTQUFTLENBQUMsSUFBSSxDQUFDLFNBQVMsS0FBSyxJQUFJLENBQUMsRUFBRTtRQUVqSCwyQ0FBMkM7UUFDM0MsT0FBTyxJQUFJLGlCQUFpQixDQUFDLE1BQU0sQ0FBQyxDQUFDO0tBRXRDO1NBQU0sSUFBSSxpQkFBaUIsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLGNBQWMsSUFBSSxNQUFNLENBQUMsSUFBSSxDQUFDLFlBQVksS0FBSyxTQUFTLENBQUMsSUFBSSxDQUFDLFlBQVksS0FBSyxJQUFJLENBQUMsRUFBRTtRQUVqSSxpREFBaUQ7UUFDakQsT0FBTyxJQUFJLG9CQUFvQixDQUFDLE1BQU0sQ0FBQyxDQUFDO0tBRXpDO1NBQU07UUFFTCx5REFBeUQ7UUFDekQsT0FBTyxJQUFJLGlCQUFpQixFQUFFLENBQUM7S0FFaEM7QUFFSCxDQUFDOzs7O0FBVUQsTUFBTSxPQUFnQixhQUFhOzs7WUFSbEMsVUFBVSxTQUFDO2dCQUNWLFVBQVUsRUFBRSxNQUFNO2dCQUNsQixVQUFVLEVBQUUsb0JBQW9CO2dCQUNoQyxJQUFJLEVBQUU7b0JBQ0osV0FBVztvQkFDWCxDQUFDLElBQUksUUFBUSxFQUFFLEVBQUUsb0JBQW9CLENBQUM7aUJBQ3ZDO2FBQ0Y7Ozs7Ozs7Ozs7SUFHQyxxREFBNkQ7Ozs7Ozs7SUFDN0QsMkRBQThEOzs7Ozs7SUFDOUQsd0RBQXNEOzs7OztJQUN0RCxnREFBc0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlLCBQTEFURk9STV9JRCwgT3B0aW9uYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IGlzUGxhdGZvcm1Ccm93c2VyIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcblxuaW1wb3J0IHsgSW5kZXhlZERCRGF0YWJhc2UgfSBmcm9tICcuL2luZGV4ZWRkYi1kYXRhYmFzZSc7XG5pbXBvcnQgeyBMb2NhbFN0b3JhZ2VEYXRhYmFzZSB9IGZyb20gJy4vbG9jYWxzdG9yYWdlLWRhdGFiYXNlJztcbmltcG9ydCB7IE1vY2tMb2NhbERhdGFiYXNlIH0gZnJvbSAnLi9tb2NrLWxvY2FsLWRhdGFiYXNlJztcbmltcG9ydCB7IExPQ0FMX1NUT1JBR0VfUFJFRklYIH0gZnJvbSAnLi4vdG9rZW5zJztcblxuZXhwb3J0IGZ1bmN0aW9uIGxvY2FsRGF0YWJhc2VGYWN0b3J5KHBsYXRmb3JtSWQ6IE9iamVjdCwgcHJlZml4OiBzdHJpbmcgfCBudWxsKSB7XG5cbiAgaWYgKGlzUGxhdGZvcm1Ccm93c2VyKHBsYXRmb3JtSWQpICYmICgnaW5kZXhlZERCJyBpbiB3aW5kb3cpICYmIChpbmRleGVkREIgIT09IHVuZGVmaW5lZCkgJiYgKGluZGV4ZWREQiAhPT0gbnVsbCkpIHtcblxuICAgIC8qIFRyeSB3aXRoIEluZGV4ZWREQiBpbiBtb2Rlcm4gYnJvd3NlcnMgKi9cbiAgICByZXR1cm4gbmV3IEluZGV4ZWREQkRhdGFiYXNlKHByZWZpeCk7XG5cbiAgfSBlbHNlIGlmIChpc1BsYXRmb3JtQnJvd3NlcihwbGF0Zm9ybUlkKSAmJiAoJ2xvY2FsU3RvcmFnZScgaW4gd2luZG93KSAmJiAobG9jYWxTdG9yYWdlICE9PSB1bmRlZmluZWQpICYmIChsb2NhbFN0b3JhZ2UgIT09IG51bGwpKSB7XG5cbiAgICAvKiBUcnkgd2l0aCBsb2NhbFN0b3JhZ2UgaW4gb2xkIGJyb3dzZXJzIChJRTkpICovXG4gICAgcmV0dXJuIG5ldyBMb2NhbFN0b3JhZ2VEYXRhYmFzZShwcmVmaXgpO1xuXG4gIH0gZWxzZSB7XG5cbiAgICAvKiBGYWtlIGRhdGFiYXNlIGZvciBzZXJ2ZXItc2lkZSByZW5kZXJpbmcgKFVuaXZlcnNhbCkgKi9cbiAgICByZXR1cm4gbmV3IE1vY2tMb2NhbERhdGFiYXNlKCk7XG5cbiAgfVxuXG59XG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxuICB1c2VGYWN0b3J5OiBsb2NhbERhdGFiYXNlRmFjdG9yeSxcbiAgZGVwczogW1xuICAgIFBMQVRGT1JNX0lELFxuICAgIFtuZXcgT3B0aW9uYWwoKSwgTE9DQUxfU1RPUkFHRV9QUkVGSVhdXG4gIF1cbn0pXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgTG9jYWxEYXRhYmFzZSB7XG5cbiAgYWJzdHJhY3QgZ2V0SXRlbTxUID0gYW55PihrZXk6IHN0cmluZyk6IE9ic2VydmFibGU8VCB8IG51bGw+O1xuICBhYnN0cmFjdCBzZXRJdGVtKGtleTogc3RyaW5nLCBkYXRhOiBhbnkpOiBPYnNlcnZhYmxlPGJvb2xlYW4+O1xuICBhYnN0cmFjdCByZW1vdmVJdGVtKGtleTogc3RyaW5nKTogT2JzZXJ2YWJsZTxib29sZWFuPjtcbiAgYWJzdHJhY3QgY2xlYXIoKTogT2JzZXJ2YWJsZTxib29sZWFuPjtcblxufVxuIl19
/**
* @fileoverview added by tsickle
* @suppress {checkTypes} checked by tsc
* @suppress {checkTypes,extraRequire,uselessCode} checked by tsc
*/

@@ -29,4 +29,6 @@ import { Injectable, Optional, Inject } from '@angular/core';

getItem(key) {
const /** @type {?} */ unparsedData = localStorage.getItem(`${this.prefix}${key}`);
let /** @type {?} */ parsedData = null;
/** @type {?} */
const unparsedData = localStorage.getItem(`${this.prefix}${key}`);
/** @type {?} */
let parsedData = null;
if (unparsedData != null) {

@@ -36,3 +38,3 @@ try {

}
catch (/** @type {?} */ error) {
catch (error) {
return throwError(new Error(`Invalid data in localStorage.`));

@@ -81,3 +83,3 @@ }

/** @nocollapse */ LocalStorageDatabase.ngInjectableDef = i0.defineInjectable({ factory: function LocalStorageDatabase_Factory() { return new LocalStorageDatabase(i0.inject(i1.LOCAL_STORAGE_PREFIX, 8)); }, token: LocalStorageDatabase, providedIn: "root" });
function LocalStorageDatabase_tsickle_Closure_declarations() {
if (false) {
/** @type {?} */

@@ -88,3 +90,2 @@ LocalStorageDatabase.prototype.prefix;

}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9jYWxzdG9yYWdlLWRhdGFiYXNlLmpzIiwic291cmNlUm9vdCI6Im5nOi8vQG5neC1wd2EvbG9jYWwtc3RvcmFnZS8iLCJzb3VyY2VzIjpbImxpYi9kYXRhYmFzZXMvbG9jYWxzdG9yYWdlLWRhdGFiYXNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7QUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDN0QsT0FBTyxFQUFjLEVBQUUsRUFBRSxVQUFVLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFHbEQsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sV0FBVyxDQUFDOzs7QUFLakQsTUFBTTs7OztJQUtKLFlBQWdFLGFBQTRCLElBQUk7UUFBaEMsZUFBVSxHQUFWLFVBQVUsQ0FBc0I7O3NCQUY3RSxFQUFFO1FBSW5CLEVBQUUsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUM7WUFDZixJQUFJLENBQUMsTUFBTSxHQUFHLEdBQUcsVUFBVSxHQUFHLENBQUM7U0FDaEM7S0FFRjs7Ozs7OztJQU9ELE9BQU8sQ0FBVSxHQUFXO1FBRTFCLHVCQUFNLFlBQVksR0FBRyxZQUFZLENBQUMsT0FBTyxDQUFDLEdBQUcsSUFBSSxDQUFDLE1BQU0sR0FBRyxHQUFHLEVBQUUsQ0FBQyxDQUFDO1FBQ2xFLHFCQUFJLFVBQVUsR0FBYSxJQUFJLENBQUM7UUFFaEMsRUFBRSxDQUFDLENBQUMsWUFBWSxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUM7WUFFekIsSUFBSSxDQUFDO2dCQUNILFVBQVUsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLFlBQVksQ0FBQyxDQUFDO2FBQ3ZDO1lBQUMsS0FBSyxDQUFDLENBQUMsaUJBQUEsS0FBSyxFQUFFLENBQUM7Z0JBQ2YsTUFBTSxDQUFDLFVBQVUsQ0FBQyxJQUFJLEtBQUssQ0FBQywrQkFBK0IsQ0FBQyxDQUFDLENBQUM7YUFDL0Q7U0FFRjtRQUVELE1BQU0sQ0FBQyxFQUFFLENBQUMsVUFBVSxDQUFDLENBQUM7S0FFdkI7Ozs7Ozs7SUFRRCxPQUFPLENBQUMsR0FBVyxFQUFFLElBQVM7UUFFNUIsWUFBWSxDQUFDLE9BQU8sQ0FBQyxHQUFHLElBQUksQ0FBQyxNQUFNLEdBQUcsR0FBRyxFQUFFLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO1FBRW5FLE1BQU0sQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUM7S0FFakI7Ozs7OztJQU9ELFVBQVUsQ0FBQyxHQUFXO1FBRXBCLFlBQVksQ0FBQyxVQUFVLENBQUMsR0FBRyxJQUFJLENBQUMsTUFBTSxHQUFHLEdBQUcsRUFBRSxDQUFDLENBQUM7UUFFaEQsTUFBTSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQztLQUVqQjs7Ozs7SUFNRCxLQUFLO1FBRUgsWUFBWSxDQUFDLEtBQUssRUFBRSxDQUFDO1FBRXJCLE1BQU0sQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUM7S0FFakI7OztZQTdFRixVQUFVLFNBQUM7Z0JBQ1YsVUFBVSxFQUFFLE1BQU07YUFDbkI7Ozs7NENBTWMsUUFBUSxZQUFJLE1BQU0sU0FBQyxvQkFBb0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlLCBPcHRpb25hbCwgSW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBvZiwgdGhyb3dFcnJvciB9IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQgeyBMb2NhbERhdGFiYXNlIH0gZnJvbSAnLi9sb2NhbC1kYXRhYmFzZSc7XG5pbXBvcnQgeyBMT0NBTF9TVE9SQUdFX1BSRUZJWCB9IGZyb20gJy4uL3Rva2Vucyc7XG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXG59KVxuZXhwb3J0IGNsYXNzIExvY2FsU3RvcmFnZURhdGFiYXNlIGltcGxlbWVudHMgTG9jYWxEYXRhYmFzZSB7XG5cbiAgLyogSW5pdGlhbGl6aW5nIG5hdGl2ZSBsb2NhbFN0b3JhZ2UgcmlnaHQgbm93IHRvIGJlIGFibGUgdG8gY2hlY2sgaXRzIHN1cHBvcnQgb24gY2xhc3MgaW5zdGFuY2lhdGlvbiAqL1xuICBwcm90ZWN0ZWQgcHJlZml4ID0gJyc7XG5cbiAgY29uc3RydWN0b3IoQE9wdGlvbmFsKCkgQEluamVjdChMT0NBTF9TVE9SQUdFX1BSRUZJWCkgcHJvdGVjdGVkIHVzZXJQcmVmaXg6IHN0cmluZyB8IG51bGwgPSBudWxsKSB7XG5cbiAgICBpZiAodXNlclByZWZpeCkge1xuICAgICAgdGhpcy5wcmVmaXggPSBgJHt1c2VyUHJlZml4fV9gO1xuICAgIH1cblxuICB9XG5cbiAgLyoqXG4gICAqIEdldHMgYW4gaXRlbSB2YWx1ZSBpbiBsb2NhbCBzdG9yYWdlXG4gICAqIEBwYXJhbSBrZXkgVGhlIGl0ZW0ncyBrZXlcbiAgICogQHJldHVybnMgVGhlIGl0ZW0ncyB2YWx1ZSBpZiB0aGUga2V5IGV4aXN0cywgbnVsbCBvdGhlcndpc2UsIHdyYXBwZWQgaW4gYW4gUnhKUyBPYnNlcnZhYmxlXG4gICAqL1xuICBnZXRJdGVtPFQgPSBhbnk+KGtleTogc3RyaW5nKTogT2JzZXJ2YWJsZTxUIHwgbnVsbD4ge1xuXG4gICAgY29uc3QgdW5wYXJzZWREYXRhID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0oYCR7dGhpcy5wcmVmaXh9JHtrZXl9YCk7XG4gICAgbGV0IHBhcnNlZERhdGE6IFQgfCBudWxsID0gbnVsbDtcblxuICAgIGlmICh1bnBhcnNlZERhdGEgIT0gbnVsbCkge1xuXG4gICAgICB0cnkge1xuICAgICAgICBwYXJzZWREYXRhID0gSlNPTi5wYXJzZSh1bnBhcnNlZERhdGEpO1xuICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgcmV0dXJuIHRocm93RXJyb3IobmV3IEVycm9yKGBJbnZhbGlkIGRhdGEgaW4gbG9jYWxTdG9yYWdlLmApKTtcbiAgICAgIH1cblxuICAgIH1cblxuICAgIHJldHVybiBvZihwYXJzZWREYXRhKTtcblxuICB9XG5cbiAgLyoqXG4gICAqIFNldHMgYW4gaXRlbSBpbiBsb2NhbCBzdG9yYWdlXG4gICAqIEBwYXJhbSBrZXkgVGhlIGl0ZW0ncyBrZXlcbiAgICogQHBhcmFtIGRhdGEgVGhlIGl0ZW0ncyB2YWx1ZSwgbXVzdCBOT1QgYmUgbnVsbCBvciB1bmRlZmluZWRcbiAgICogQHJldHVybnMgQW4gUnhKUyBPYnNlcnZhYmxlIHRvIHdhaXQgdGhlIGVuZCBvZiB0aGUgb3BlcmF0aW9uXG4gICAqL1xuICBzZXRJdGVtKGtleTogc3RyaW5nLCBkYXRhOiBhbnkpOiBPYnNlcnZhYmxlPGJvb2xlYW4+IHtcblxuICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKGAke3RoaXMucHJlZml4fSR7a2V5fWAsIEpTT04uc3RyaW5naWZ5KGRhdGEpKTtcblxuICAgIHJldHVybiBvZih0cnVlKTtcblxuICB9XG5cbiAgLyoqXG4gICAqIERlbGV0ZXMgYW4gaXRlbSBpbiBsb2NhbCBzdG9yYWdlXG4gICAqIEBwYXJhbSBrZXkgVGhlIGl0ZW0ncyBrZXlcbiAgICogQHJldHVybnMgQW4gUnhKUyBPYnNlcnZhYmxlIHRvIHdhaXQgdGhlIGVuZCBvZiB0aGUgb3BlcmF0aW9uXG4gICAqL1xuICByZW1vdmVJdGVtKGtleTogc3RyaW5nKTogT2JzZXJ2YWJsZTxib29sZWFuPiB7XG5cbiAgICBsb2NhbFN0b3JhZ2UucmVtb3ZlSXRlbShgJHt0aGlzLnByZWZpeH0ke2tleX1gKTtcblxuICAgIHJldHVybiBvZih0cnVlKTtcblxuICB9XG5cbiAgLyoqXG4gICAqIERlbGV0ZXMgYWxsIGl0ZW1zIGZyb20gbG9jYWwgc3RvcmFnZVxuICAgKiBAcmV0dXJucyBBbiBSeEpTIE9ic2VydmFibGUgdG8gd2FpdCB0aGUgZW5kIG9mIHRoZSBvcGVyYXRpb25cbiAgICovXG4gIGNsZWFyKCk6IE9ic2VydmFibGU8Ym9vbGVhbj4ge1xuXG4gICAgbG9jYWxTdG9yYWdlLmNsZWFyKCk7XG5cbiAgICByZXR1cm4gb2YodHJ1ZSk7XG5cbiAgfVxuXG59XG4iXX0=
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9jYWxzdG9yYWdlLWRhdGFiYXNlLmpzIiwic291cmNlUm9vdCI6Im5nOi8vQG5neC1wd2EvbG9jYWwtc3RvcmFnZS8iLCJzb3VyY2VzIjpbImxpYi9kYXRhYmFzZXMvbG9jYWxzdG9yYWdlLWRhdGFiYXNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7QUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDN0QsT0FBTyxFQUFjLEVBQUUsRUFBRSxVQUFVLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFHbEQsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sV0FBVyxDQUFDOzs7QUFLakQsTUFBTSxPQUFPLG9CQUFvQjs7OztJQUsvQixZQUFnRSxhQUE0QixJQUFJO1FBQWhDLGVBQVUsR0FBVixVQUFVLENBQXNCOztRQUZ0RixXQUFNLEdBQUcsRUFBRSxDQUFDO1FBSXBCLElBQUksVUFBVSxFQUFFO1lBQ2QsSUFBSSxDQUFDLE1BQU0sR0FBRyxHQUFHLFVBQVUsR0FBRyxDQUFDO1NBQ2hDO0lBRUgsQ0FBQzs7Ozs7OztJQU9ELE9BQU8sQ0FBVSxHQUFXOztjQUVwQixZQUFZLEdBQUcsWUFBWSxDQUFDLE9BQU8sQ0FBQyxHQUFHLElBQUksQ0FBQyxNQUFNLEdBQUcsR0FBRyxFQUFFLENBQUM7O1lBQzdELFVBQVUsR0FBYSxJQUFJO1FBRS9CLElBQUksWUFBWSxJQUFJLElBQUksRUFBRTtZQUV4QixJQUFJO2dCQUNGLFVBQVUsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLFlBQVksQ0FBQyxDQUFDO2FBQ3ZDO1lBQUMsT0FBTyxLQUFLLEVBQUU7Z0JBQ2QsT0FBTyxVQUFVLENBQUMsSUFBSSxLQUFLLENBQUMsK0JBQStCLENBQUMsQ0FBQyxDQUFDO2FBQy9EO1NBRUY7UUFFRCxPQUFPLEVBQUUsQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUV4QixDQUFDOzs7Ozs7O0lBUUQsT0FBTyxDQUFDLEdBQVcsRUFBRSxJQUFTO1FBRTVCLFlBQVksQ0FBQyxPQUFPLENBQUMsR0FBRyxJQUFJLENBQUMsTUFBTSxHQUFHLEdBQUcsRUFBRSxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztRQUVuRSxPQUFPLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUVsQixDQUFDOzs7Ozs7SUFPRCxVQUFVLENBQUMsR0FBVztRQUVwQixZQUFZLENBQUMsVUFBVSxDQUFDLEdBQUcsSUFBSSxDQUFDLE1BQU0sR0FBRyxHQUFHLEVBQUUsQ0FBQyxDQUFDO1FBRWhELE9BQU8sRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBRWxCLENBQUM7Ozs7O0lBTUQsS0FBSztRQUVILFlBQVksQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUVyQixPQUFPLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUVsQixDQUFDOzs7WUE3RUYsVUFBVSxTQUFDO2dCQUNWLFVBQVUsRUFBRSxNQUFNO2FBQ25COzs7OzRDQU1jLFFBQVEsWUFBSSxNQUFNLFNBQUMsb0JBQW9COzs7OztJQUZwRCxzQ0FBc0I7O0lBRVYsMENBQW9GIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSwgT3B0aW9uYWwsIEluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgb2YsIHRocm93RXJyb3IgfSBmcm9tICdyeGpzJztcblxuaW1wb3J0IHsgTG9jYWxEYXRhYmFzZSB9IGZyb20gJy4vbG9jYWwtZGF0YWJhc2UnO1xuaW1wb3J0IHsgTE9DQUxfU1RPUkFHRV9QUkVGSVggfSBmcm9tICcuLi90b2tlbnMnO1xuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290J1xufSlcbmV4cG9ydCBjbGFzcyBMb2NhbFN0b3JhZ2VEYXRhYmFzZSBpbXBsZW1lbnRzIExvY2FsRGF0YWJhc2Uge1xuXG4gIC8qIEluaXRpYWxpemluZyBuYXRpdmUgbG9jYWxTdG9yYWdlIHJpZ2h0IG5vdyB0byBiZSBhYmxlIHRvIGNoZWNrIGl0cyBzdXBwb3J0IG9uIGNsYXNzIGluc3RhbmNpYXRpb24gKi9cbiAgcHJvdGVjdGVkIHByZWZpeCA9ICcnO1xuXG4gIGNvbnN0cnVjdG9yKEBPcHRpb25hbCgpIEBJbmplY3QoTE9DQUxfU1RPUkFHRV9QUkVGSVgpIHByb3RlY3RlZCB1c2VyUHJlZml4OiBzdHJpbmcgfCBudWxsID0gbnVsbCkge1xuXG4gICAgaWYgKHVzZXJQcmVmaXgpIHtcbiAgICAgIHRoaXMucHJlZml4ID0gYCR7dXNlclByZWZpeH1fYDtcbiAgICB9XG5cbiAgfVxuXG4gIC8qKlxuICAgKiBHZXRzIGFuIGl0ZW0gdmFsdWUgaW4gbG9jYWwgc3RvcmFnZVxuICAgKiBAcGFyYW0ga2V5IFRoZSBpdGVtJ3Mga2V5XG4gICAqIEByZXR1cm5zIFRoZSBpdGVtJ3MgdmFsdWUgaWYgdGhlIGtleSBleGlzdHMsIG51bGwgb3RoZXJ3aXNlLCB3cmFwcGVkIGluIGFuIFJ4SlMgT2JzZXJ2YWJsZVxuICAgKi9cbiAgZ2V0SXRlbTxUID0gYW55PihrZXk6IHN0cmluZyk6IE9ic2VydmFibGU8VCB8IG51bGw+IHtcblxuICAgIGNvbnN0IHVucGFyc2VkRGF0YSA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKGAke3RoaXMucHJlZml4fSR7a2V5fWApO1xuICAgIGxldCBwYXJzZWREYXRhOiBUIHwgbnVsbCA9IG51bGw7XG5cbiAgICBpZiAodW5wYXJzZWREYXRhICE9IG51bGwpIHtcblxuICAgICAgdHJ5IHtcbiAgICAgICAgcGFyc2VkRGF0YSA9IEpTT04ucGFyc2UodW5wYXJzZWREYXRhKTtcbiAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgIHJldHVybiB0aHJvd0Vycm9yKG5ldyBFcnJvcihgSW52YWxpZCBkYXRhIGluIGxvY2FsU3RvcmFnZS5gKSk7XG4gICAgICB9XG5cbiAgICB9XG5cbiAgICByZXR1cm4gb2YocGFyc2VkRGF0YSk7XG5cbiAgfVxuXG4gIC8qKlxuICAgKiBTZXRzIGFuIGl0ZW0gaW4gbG9jYWwgc3RvcmFnZVxuICAgKiBAcGFyYW0ga2V5IFRoZSBpdGVtJ3Mga2V5XG4gICAqIEBwYXJhbSBkYXRhIFRoZSBpdGVtJ3MgdmFsdWUsIG11c3QgTk9UIGJlIG51bGwgb3IgdW5kZWZpbmVkXG4gICAqIEByZXR1cm5zIEFuIFJ4SlMgT2JzZXJ2YWJsZSB0byB3YWl0IHRoZSBlbmQgb2YgdGhlIG9wZXJhdGlvblxuICAgKi9cbiAgc2V0SXRlbShrZXk6IHN0cmluZywgZGF0YTogYW55KTogT2JzZXJ2YWJsZTxib29sZWFuPiB7XG5cbiAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbShgJHt0aGlzLnByZWZpeH0ke2tleX1gLCBKU09OLnN0cmluZ2lmeShkYXRhKSk7XG5cbiAgICByZXR1cm4gb2YodHJ1ZSk7XG5cbiAgfVxuXG4gIC8qKlxuICAgKiBEZWxldGVzIGFuIGl0ZW0gaW4gbG9jYWwgc3RvcmFnZVxuICAgKiBAcGFyYW0ga2V5IFRoZSBpdGVtJ3Mga2V5XG4gICAqIEByZXR1cm5zIEFuIFJ4SlMgT2JzZXJ2YWJsZSB0byB3YWl0IHRoZSBlbmQgb2YgdGhlIG9wZXJhdGlvblxuICAgKi9cbiAgcmVtb3ZlSXRlbShrZXk6IHN0cmluZyk6IE9ic2VydmFibGU8Ym9vbGVhbj4ge1xuXG4gICAgbG9jYWxTdG9yYWdlLnJlbW92ZUl0ZW0oYCR7dGhpcy5wcmVmaXh9JHtrZXl9YCk7XG5cbiAgICByZXR1cm4gb2YodHJ1ZSk7XG5cbiAgfVxuXG4gIC8qKlxuICAgKiBEZWxldGVzIGFsbCBpdGVtcyBmcm9tIGxvY2FsIHN0b3JhZ2VcbiAgICogQHJldHVybnMgQW4gUnhKUyBPYnNlcnZhYmxlIHRvIHdhaXQgdGhlIGVuZCBvZiB0aGUgb3BlcmF0aW9uXG4gICAqL1xuICBjbGVhcigpOiBPYnNlcnZhYmxlPGJvb2xlYW4+IHtcblxuICAgIGxvY2FsU3RvcmFnZS5jbGVhcigpO1xuXG4gICAgcmV0dXJuIG9mKHRydWUpO1xuXG4gIH1cblxufVxuIl19
/**
* @fileoverview added by tsickle
* @suppress {checkTypes} checked by tsc
* @suppress {checkTypes,extraRequire,uselessCode} checked by tsc
*/

@@ -19,3 +19,4 @@ import { Injectable } from '@angular/core';

getItem(key) {
const /** @type {?} */ rawData = this.localStorage.get(key);
/** @type {?} */
const rawData = this.localStorage.get(key);
return of((rawData !== undefined) ? rawData : null);

@@ -57,7 +58,6 @@ }

/** @nocollapse */ MockLocalDatabase.ngInjectableDef = i0.defineInjectable({ factory: function MockLocalDatabase_Factory() { return new MockLocalDatabase(); }, token: MockLocalDatabase, providedIn: "root" });
function MockLocalDatabase_tsickle_Closure_declarations() {
if (false) {
/** @type {?} */
MockLocalDatabase.prototype.localStorage;
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9jay1sb2NhbC1kYXRhYmFzZS5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BuZ3gtcHdhL2xvY2FsLXN0b3JhZ2UvIiwic291cmNlcyI6WyJsaWIvZGF0YWJhc2VzL21vY2stbG9jYWwtZGF0YWJhc2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUFjLEVBQUUsRUFBRSxNQUFNLE1BQU0sQ0FBQzs7QUFPdEMsTUFBTTs7NEJBRXFCLElBQUksR0FBRyxFQUFlOzs7Ozs7OztJQU85QyxPQUFPLENBQVUsR0FBVztRQUUzQix1QkFBTSxPQUFPLEdBQWEsSUFBSSxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUM7UUFFckQsTUFBTSxDQUFDLEVBQUUsQ0FBQyxDQUFDLE9BQU8sS0FBSyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQztLQUVyRDs7Ozs7OztJQVFBLE9BQU8sQ0FBQyxHQUFXLEVBQUUsSUFBUztRQUU3QixJQUFJLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFFakMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQztLQUVqQjs7Ozs7O0lBT0EsVUFBVSxDQUFDLEdBQVc7UUFFckIsSUFBSSxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUM7UUFFOUIsTUFBTSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQztLQUVqQjs7Ozs7SUFNQSxLQUFLO1FBRUosSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUUxQixNQUFNLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDO0tBRWpCOzs7WUF6REYsVUFBVSxTQUFDO2dCQUNWLFVBQVUsRUFBRSxNQUFNO2FBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgb2YgfSBmcm9tICdyeGpzJztcblxuaW1wb3J0IHsgTG9jYWxEYXRhYmFzZSB9IGZyb20gJy4vbG9jYWwtZGF0YWJhc2UnO1xuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290J1xufSlcbmV4cG9ydCBjbGFzcyBNb2NrTG9jYWxEYXRhYmFzZSBpbXBsZW1lbnRzIExvY2FsRGF0YWJhc2Uge1xuXG4gIHByb3RlY3RlZCBsb2NhbFN0b3JhZ2UgPSBuZXcgTWFwPHN0cmluZywgYW55PigpO1xuXG4gIC8qKlxuICAgKiBHZXRzIGFuIGl0ZW0gdmFsdWUgaW4gbG9jYWwgc3RvcmFnZVxuICAgKiBAcGFyYW0ga2V5IFRoZSBpdGVtJ3Mga2V5XG4gICAqIEByZXR1cm5zIFRoZSBpdGVtJ3MgdmFsdWUgaWYgdGhlIGtleSBleGlzdHMsIG51bGwgb3RoZXJ3aXNlLCB3cmFwcGVkIGluIGFuIFJ4SlMgT2JzZXJ2YWJsZVxuICAgKi9cbiAgIGdldEl0ZW08VCA9IGFueT4oa2V5OiBzdHJpbmcpOiBPYnNlcnZhYmxlPFQgfMKgbnVsbD4ge1xuXG4gICAgY29uc3QgcmF3RGF0YTogVCB8IG51bGwgPSB0aGlzLmxvY2FsU3RvcmFnZS5nZXQoa2V5KTtcblxuICAgIHJldHVybiBvZigocmF3RGF0YSAhPT0gdW5kZWZpbmVkKSA/IHJhd0RhdGEgOiBudWxsKTtcblxuICB9XG5cbiAgLyoqXG4gICAqIFNldHMgYW4gaXRlbSBpbiBsb2NhbCBzdG9yYWdlXG4gICAqIEBwYXJhbSBrZXkgVGhlIGl0ZW0ncyBrZXlcbiAgICogQHBhcmFtIGRhdGEgVGhlIGl0ZW0ncyB2YWx1ZSwgbXVzdCBOT1QgYmUgbnVsbCBvciB1bmRlZmluZWRcbiAgICogQHJldHVybnMgQW4gUnhKUyBPYnNlcnZhYmxlIHRvIHdhaXQgdGhlIGVuZCBvZiB0aGUgb3BlcmF0aW9uXG4gICAqL1xuICAgc2V0SXRlbShrZXk6IHN0cmluZywgZGF0YTogYW55KTogT2JzZXJ2YWJsZTxib29sZWFuPiB7XG5cbiAgICB0aGlzLmxvY2FsU3RvcmFnZS5zZXQoa2V5LCBkYXRhKTtcblxuICAgIHJldHVybiBvZih0cnVlKTtcblxuICB9XG5cbiAgLyoqXG4gICAqIERlbGV0ZXMgYW4gaXRlbSBpbiBsb2NhbCBzdG9yYWdlXG4gICAqIEBwYXJhbSBrZXkgVGhlIGl0ZW0ncyBrZXlcbiAgICogQHJldHVybnMgQW4gUnhKUyBPYnNlcnZhYmxlIHRvIHdhaXQgdGhlIGVuZCBvZiB0aGUgb3BlcmF0aW9uXG4gICAqL1xuICAgcmVtb3ZlSXRlbShrZXk6IHN0cmluZyk6IE9ic2VydmFibGU8Ym9vbGVhbj4ge1xuXG4gICAgdGhpcy5sb2NhbFN0b3JhZ2UuZGVsZXRlKGtleSk7XG5cbiAgICByZXR1cm4gb2YodHJ1ZSk7XG5cbiAgfVxuXG4gIC8qKlxuICAgKiBEZWxldGVzIGFsbCBpdGVtcyBmcm9tIGxvY2FsIHN0b3JhZ2VcbiAgICogQHJldHVybnMgQW4gUnhKUyBPYnNlcnZhYmxlIHRvIHdhaXQgdGhlIGVuZCBvZiB0aGUgb3BlcmF0aW9uXG4gICAqL1xuICAgY2xlYXIoKTogT2JzZXJ2YWJsZTxib29sZWFuPiB7XG5cbiAgICB0aGlzLmxvY2FsU3RvcmFnZS5jbGVhcigpO1xuXG4gICAgcmV0dXJuIG9mKHRydWUpO1xuXG4gIH1cblxufVxuIl19
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9jay1sb2NhbC1kYXRhYmFzZS5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BuZ3gtcHdhL2xvY2FsLXN0b3JhZ2UvIiwic291cmNlcyI6WyJsaWIvZGF0YWJhc2VzL21vY2stbG9jYWwtZGF0YWJhc2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUFjLEVBQUUsRUFBRSxNQUFNLE1BQU0sQ0FBQzs7QUFPdEMsTUFBTSxPQUFPLGlCQUFpQjtJQUg5QjtRQUtZLGlCQUFZLEdBQUcsSUFBSSxHQUFHLEVBQWUsQ0FBQztLQXNEakQ7Ozs7Ozs7SUEvQ0UsT0FBTyxDQUFVLEdBQVc7O2NBRXJCLE9BQU8sR0FBYSxJQUFJLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUM7UUFFcEQsT0FBTyxFQUFFLENBQUMsQ0FBQyxPQUFPLEtBQUssU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUM7SUFFdEQsQ0FBQzs7Ozs7OztJQVFBLE9BQU8sQ0FBQyxHQUFXLEVBQUUsSUFBUztRQUU3QixJQUFJLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFFakMsT0FBTyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUM7SUFFbEIsQ0FBQzs7Ozs7O0lBT0EsVUFBVSxDQUFDLEdBQVc7UUFFckIsSUFBSSxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUM7UUFFOUIsT0FBTyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUM7SUFFbEIsQ0FBQzs7Ozs7SUFNQSxLQUFLO1FBRUosSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUUxQixPQUFPLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUVsQixDQUFDOzs7WUF6REYsVUFBVSxTQUFDO2dCQUNWLFVBQVUsRUFBRSxNQUFNO2FBQ25COzs7OztJQUdDLHlDQUFnRCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE9ic2VydmFibGUsIG9mIH0gZnJvbSAncnhqcyc7XG5cbmltcG9ydCB7IExvY2FsRGF0YWJhc2UgfSBmcm9tICcuL2xvY2FsLWRhdGFiYXNlJztcblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCdcbn0pXG5leHBvcnQgY2xhc3MgTW9ja0xvY2FsRGF0YWJhc2UgaW1wbGVtZW50cyBMb2NhbERhdGFiYXNlIHtcblxuICBwcm90ZWN0ZWQgbG9jYWxTdG9yYWdlID0gbmV3IE1hcDxzdHJpbmcsIGFueT4oKTtcblxuICAvKipcbiAgICogR2V0cyBhbiBpdGVtIHZhbHVlIGluIGxvY2FsIHN0b3JhZ2VcbiAgICogQHBhcmFtIGtleSBUaGUgaXRlbSdzIGtleVxuICAgKiBAcmV0dXJucyBUaGUgaXRlbSdzIHZhbHVlIGlmIHRoZSBrZXkgZXhpc3RzLCBudWxsIG90aGVyd2lzZSwgd3JhcHBlZCBpbiBhbiBSeEpTIE9ic2VydmFibGVcbiAgICovXG4gICBnZXRJdGVtPFQgPSBhbnk+KGtleTogc3RyaW5nKTogT2JzZXJ2YWJsZTxUIHzCoG51bGw+IHtcblxuICAgIGNvbnN0IHJhd0RhdGE6IFQgfCBudWxsID0gdGhpcy5sb2NhbFN0b3JhZ2UuZ2V0KGtleSk7XG5cbiAgICByZXR1cm4gb2YoKHJhd0RhdGEgIT09IHVuZGVmaW5lZCkgPyByYXdEYXRhIDogbnVsbCk7XG5cbiAgfVxuXG4gIC8qKlxuICAgKiBTZXRzIGFuIGl0ZW0gaW4gbG9jYWwgc3RvcmFnZVxuICAgKiBAcGFyYW0ga2V5IFRoZSBpdGVtJ3Mga2V5XG4gICAqIEBwYXJhbSBkYXRhIFRoZSBpdGVtJ3MgdmFsdWUsIG11c3QgTk9UIGJlIG51bGwgb3IgdW5kZWZpbmVkXG4gICAqIEByZXR1cm5zIEFuIFJ4SlMgT2JzZXJ2YWJsZSB0byB3YWl0IHRoZSBlbmQgb2YgdGhlIG9wZXJhdGlvblxuICAgKi9cbiAgIHNldEl0ZW0oa2V5OiBzdHJpbmcsIGRhdGE6IGFueSk6IE9ic2VydmFibGU8Ym9vbGVhbj4ge1xuXG4gICAgdGhpcy5sb2NhbFN0b3JhZ2Uuc2V0KGtleSwgZGF0YSk7XG5cbiAgICByZXR1cm4gb2YodHJ1ZSk7XG5cbiAgfVxuXG4gIC8qKlxuICAgKiBEZWxldGVzIGFuIGl0ZW0gaW4gbG9jYWwgc3RvcmFnZVxuICAgKiBAcGFyYW0ga2V5IFRoZSBpdGVtJ3Mga2V5XG4gICAqIEByZXR1cm5zIEFuIFJ4SlMgT2JzZXJ2YWJsZSB0byB3YWl0IHRoZSBlbmQgb2YgdGhlIG9wZXJhdGlvblxuICAgKi9cbiAgIHJlbW92ZUl0ZW0oa2V5OiBzdHJpbmcpOiBPYnNlcnZhYmxlPGJvb2xlYW4+IHtcblxuICAgIHRoaXMubG9jYWxTdG9yYWdlLmRlbGV0ZShrZXkpO1xuXG4gICAgcmV0dXJuIG9mKHRydWUpO1xuXG4gIH1cblxuICAvKipcbiAgICogRGVsZXRlcyBhbGwgaXRlbXMgZnJvbSBsb2NhbCBzdG9yYWdlXG4gICAqIEByZXR1cm5zIEFuIFJ4SlMgT2JzZXJ2YWJsZSB0byB3YWl0IHRoZSBlbmQgb2YgdGhlIG9wZXJhdGlvblxuICAgKi9cbiAgIGNsZWFyKCk6IE9ic2VydmFibGU8Ym9vbGVhbj4ge1xuXG4gICAgdGhpcy5sb2NhbFN0b3JhZ2UuY2xlYXIoKTtcblxuICAgIHJldHVybiBvZih0cnVlKTtcblxuICB9XG5cbn1cbiJdfQ==
/**
* @fileoverview added by tsickle
* @suppress {checkTypes} checked by tsc
* @suppress {checkTypes,extraRequire,uselessCode} checked by tsc
*/

@@ -17,3 +17,3 @@ import { Injectable } from '@angular/core';

export function LSGetItemOptions() { }
function LSGetItemOptions_tsickle_Closure_declarations() {
if (false) {
/** @type {?|undefined} */

@@ -42,10 +42,12 @@ LSGetItemOptions.prototype.schema;

getItem(key, options = this.getItemOptionsDefault) {
return this.database.getItem(key).pipe(/* Validate data upon a json schema if requested */
return this.database.getItem(key).pipe(
/* Validate data upon a json schema if requested */
mergeMap((data) => {
if (options.schema && data !== null) {
let /** @type {?} */ validation = true;
/** @type {?} */
let validation = true;
try {
validation = this.jsonValidator.validate(data, options.schema);
}
catch (/** @type {?} */ error) {
catch (error) {
return throwError(error);

@@ -120,3 +122,3 @@ }

/** @nocollapse */ LocalStorage.ngInjectableDef = i0.defineInjectable({ factory: function LocalStorage_Factory() { return new LocalStorage(i0.inject(i1.LocalDatabase), i0.inject(i2.JSONValidator)); }, token: LocalStorage, providedIn: "root" });
function LocalStorage_tsickle_Closure_declarations() {
if (false) {
/** @type {?} */

@@ -129,3 +131,2 @@ LocalStorage.prototype.getItemOptionsDefault;

}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGliLnNlcnZpY2UuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9Abmd4LXB3YS9sb2NhbC1zdG9yYWdlLyIsInNvdXJjZXMiOlsibGliL2xpYi5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7QUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBYyxVQUFVLEVBQUUsRUFBRSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ2xELE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUUxQyxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFFM0QsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLDZCQUE2QixDQUFDOzs7Ozs7Ozs7Ozs7QUFTNUQsTUFBTTs7Ozs7SUFNSixZQUFzQixRQUF1QixFQUFZLGFBQTRCO1FBQS9ELGFBQVEsR0FBUixRQUFRLENBQWU7UUFBWSxrQkFBYSxHQUFiLGFBQWEsQ0FBZTtxQ0FKeEI7WUFDM0QsTUFBTSxFQUFFLElBQUk7U0FDYjtLQUV3Rjs7Ozs7Ozs7SUFPekYsT0FBTyxDQUFVLEdBQVcsRUFBRSxVQUE0QixJQUFJLENBQUMscUJBQXFCO1FBRWxGLE1BQU0sQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBSSxHQUFHLENBQUMsQ0FBQyxJQUFJO1FBR3ZDLFFBQVEsQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFO1lBRWhCLEVBQUUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxNQUFNLElBQUksSUFBSSxLQUFLLElBQUksQ0FBQyxDQUFDLENBQUM7Z0JBRXBDLHFCQUFJLFVBQVUsR0FBRyxJQUFJLENBQUM7Z0JBRXRCLElBQUksQ0FBQztvQkFDSCxVQUFVLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQztpQkFDaEU7Z0JBQUMsS0FBSyxDQUFDLENBQUMsaUJBQUEsS0FBSyxFQUFFLENBQUM7b0JBQ2YsTUFBTSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQztpQkFDMUI7Z0JBRUQsRUFBRSxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDO29CQUNoQixNQUFNLENBQUMsVUFBVSxDQUFDLElBQUksS0FBSyxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUM7aUJBQzlDO2FBRUY7WUFFRCxNQUFNLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDO1NBRWpCLENBQUMsQ0FBQyxDQUFDO0tBRVA7Ozs7Ozs7SUFRQSxPQUFPLENBQUMsR0FBVyxFQUFFLElBQVM7UUFFN0IsTUFBTSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLEdBQUcsRUFBRSxJQUFJLENBQUMsQ0FBQztLQUV6Qzs7Ozs7O0lBT0EsVUFBVSxDQUFDLEdBQVc7UUFFckIsTUFBTSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0tBRXRDOzs7OztJQU1BLEtBQUs7UUFFSixNQUFNLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLEVBQUUsQ0FBQztLQUU5Qjs7Ozs7OztJQU9ELGdCQUFnQixDQUFDLEdBQVcsRUFBRSxJQUFTO1FBRXJDLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxFQUFFLElBQUksQ0FBQyxDQUFDLFNBQVMsQ0FBQyxHQUFHLEVBQUUsSUFBRyxFQUFFLEdBQUcsRUFBRSxJQUFHLENBQUMsQ0FBQztLQUV2RDs7Ozs7O0lBTUEsbUJBQW1CLENBQUMsR0FBVztRQUU5QixJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxHQUFHLEVBQUUsSUFBRyxFQUFFLEdBQUcsRUFBRSxJQUFHLENBQUMsQ0FBQztLQUVwRDs7Ozs7SUFHRCxjQUFjO1FBRVosSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDLFNBQVMsQ0FBQyxHQUFHLEVBQUUsSUFBRyxFQUFFLEdBQUcsRUFBRSxJQUFHLENBQUMsQ0FBQztLQUU1Qzs7O1lBeEdGLFVBQVUsU0FBQztnQkFDVixVQUFVLEVBQUUsTUFBTTthQUNuQjs7OztZQVZRLGFBQWE7WUFFYixhQUFhIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgdGhyb3dFcnJvciwgb2YgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IG1lcmdlTWFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5pbXBvcnQgeyBMb2NhbERhdGFiYXNlIH0gZnJvbSAnLi9kYXRhYmFzZXMvbG9jYWwtZGF0YWJhc2UnO1xuaW1wb3J0IHsgSlNPTlNjaGVtYSB9IGZyb20gJy4vdmFsaWRhdGlvbi9qc29uLXNjaGVtYSc7XG5pbXBvcnQgeyBKU09OVmFsaWRhdG9yIH0gZnJvbSAnLi92YWxpZGF0aW9uL2pzb24tdmFsaWRhdG9yJztcblxuZXhwb3J0IGludGVyZmFjZSBMU0dldEl0ZW1PcHRpb25zIHtcbiAgc2NoZW1hPzogSlNPTlNjaGVtYSB8IG51bGw7XG59XG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXG59KVxuZXhwb3J0IGNsYXNzIExvY2FsU3RvcmFnZSB7XG5cbiAgcHJvdGVjdGVkIHJlYWRvbmx5IGdldEl0ZW1PcHRpb25zRGVmYXVsdDogTFNHZXRJdGVtT3B0aW9ucyA9IHtcbiAgICBzY2hlbWE6IG51bGxcbiAgfTtcblxuICBjb25zdHJ1Y3Rvcihwcm90ZWN0ZWQgZGF0YWJhc2U6IExvY2FsRGF0YWJhc2UsIHByb3RlY3RlZCBqc29uVmFsaWRhdG9yOiBKU09OVmFsaWRhdG9yKSB7fVxuXG4gIC8qKlxuICAgKiBHZXRzIGFuIGl0ZW0gdmFsdWUgaW4gbG9jYWwgc3RvcmFnZVxuICAgKiBAcGFyYW0ga2V5IFRoZSBpdGVtJ3Mga2V5XG4gICAqIEByZXR1cm5zIFRoZSBpdGVtJ3MgdmFsdWUgaWYgdGhlIGtleSBleGlzdHMsIG51bGwgb3RoZXJ3aXNlLCB3cmFwcGVkIGluIGFuIFJ4SlMgT2JzZXJ2YWJsZVxuICAgKi9cbiAgZ2V0SXRlbTxUID0gYW55PihrZXk6IHN0cmluZywgb3B0aW9uczogTFNHZXRJdGVtT3B0aW9ucyA9IHRoaXMuZ2V0SXRlbU9wdGlvbnNEZWZhdWx0KTogT2JzZXJ2YWJsZTxUIHwgbnVsbD4ge1xuXG4gICAgcmV0dXJuIHRoaXMuZGF0YWJhc2UuZ2V0SXRlbTxUPihrZXkpLnBpcGUoXG5cbiAgICAgIC8qIFZhbGlkYXRlIGRhdGEgdXBvbiBhIGpzb24gc2NoZW1hIGlmIHJlcXVlc3RlZCAqL1xuICAgICAgbWVyZ2VNYXAoKGRhdGEpID0+IHtcblxuICAgICAgICBpZiAob3B0aW9ucy5zY2hlbWEgJiYgZGF0YSAhPT0gbnVsbCkge1xuXG4gICAgICAgICAgbGV0IHZhbGlkYXRpb24gPSB0cnVlO1xuXG4gICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIHZhbGlkYXRpb24gPSB0aGlzLmpzb25WYWxpZGF0b3IudmFsaWRhdGUoZGF0YSwgb3B0aW9ucy5zY2hlbWEpO1xuICAgICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhyb3dFcnJvcihlcnJvcik7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgaWYgKCF2YWxpZGF0aW9uKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhyb3dFcnJvcihuZXcgRXJyb3IoYEpTT04gaW52YWxpZGApKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBvZihkYXRhKTtcblxuICAgICAgfSkpO1xuXG4gIH1cblxuICAvKipcbiAgICogU2V0cyBhbiBpdGVtIGluIGxvY2FsIHN0b3JhZ2VcbiAgICogQHBhcmFtIGtleSBUaGUgaXRlbSdzIGtleVxuICAgKiBAcGFyYW0gZGF0YSBUaGUgaXRlbSdzIHZhbHVlLCBtdXN0IE5PVCBiZSBudWxsIG9yIHVuZGVmaW5lZFxuICAgKiBAcmV0dXJucyBBbiBSeEpTIE9ic2VydmFibGUgdG8gd2FpdCB0aGUgZW5kIG9mIHRoZSBvcGVyYXRpb25cbiAgICovXG4gICBzZXRJdGVtKGtleTogc3RyaW5nLCBkYXRhOiBhbnkpOiBPYnNlcnZhYmxlPGJvb2xlYW4+IHtcblxuICAgIHJldHVybiB0aGlzLmRhdGFiYXNlLnNldEl0ZW0oa2V5LCBkYXRhKTtcblxuICB9XG5cbiAgLyoqXG4gICAqIERlbGV0ZXMgYW4gaXRlbSBpbiBsb2NhbCBzdG9yYWdlXG4gICAqIEBwYXJhbSBrZXkgVGhlIGl0ZW0ncyBrZXlcbiAgICogQHJldHVybnMgQW4gUnhKUyBPYnNlcnZhYmxlIHRvIHdhaXQgdGhlIGVuZCBvZiB0aGUgb3BlcmF0aW9uXG4gICAqL1xuICAgcmVtb3ZlSXRlbShrZXk6IHN0cmluZyk6IE9ic2VydmFibGU8Ym9vbGVhbj4ge1xuXG4gICAgcmV0dXJuIHRoaXMuZGF0YWJhc2UucmVtb3ZlSXRlbShrZXkpO1xuXG4gIH1cblxuICAvKipcbiAgICogRGVsZXRlcyBhbGwgaXRlbXMgZnJvbSBsb2NhbCBzdG9yYWdlXG4gICAqIEByZXR1cm5zIEFuIFJ4SlMgT2JzZXJ2YWJsZSB0byB3YWl0IHRoZSBlbmQgb2YgdGhlIG9wZXJhdGlvblxuICAgKi9cbiAgIGNsZWFyKCk6IE9ic2VydmFibGU8Ym9vbGVhbj4ge1xuXG4gICAgcmV0dXJuIHRoaXMuZGF0YWJhc2UuY2xlYXIoKTtcblxuICB9XG5cbiAgLyoqXG4gICAqIFNldHMgYW4gaXRlbSBpbiBsb2NhbCBzdG9yYWdlLCBhbmQgYXV0by1zdWJzY3JpYmVzXG4gICAqIEBwYXJhbSBrZXkgVGhlIGl0ZW0ncyBrZXlcbiAgICogQHBhcmFtIGRhdGEgVGhlIGl0ZW0ncyB2YWx1ZSwgbXVzdCBOT1QgYmUgbnVsbCBvciB1bmRlZmluZWRcbiAgICovXG4gIHNldEl0ZW1TdWJzY3JpYmUoa2V5OiBzdHJpbmcsIGRhdGE6IGFueSk6IHZvaWQge1xuXG4gICAgdGhpcy5zZXRJdGVtKGtleSwgZGF0YSkuc3Vic2NyaWJlKCgpID0+IHt9LCAoKSA9PiB7fSk7XG5cbiAgfVxuXG4gIC8qKlxuICAgKiBEZWxldGVzIGFuIGl0ZW0gaW4gbG9jYWwgc3RvcmFnZSwgYW5kIGF1dG8tc3Vic2NyaWJlc1xuICAgKiBAcGFyYW0ga2V5IFRoZSBpdGVtJ3Mga2V5XG4gICAqL1xuICAgcmVtb3ZlSXRlbVN1YnNjcmliZShrZXk6IHN0cmluZyk6IHZvaWQge1xuXG4gICAgdGhpcy5yZW1vdmVJdGVtKGtleSkuc3Vic2NyaWJlKCgpID0+IHt9LCAoKSA9PiB7fSk7XG5cbiAgfVxuXG4gIC8qKiBEZWxldGVzIGFsbCBpdGVtcyBmcm9tIGxvY2FsIHN0b3JhZ2UsIGFuZCBhdXRvLXN1YnNjcmliZXMgKi9cbiAgY2xlYXJTdWJzY3JpYmUoKTogdm9pZCB7XG5cbiAgICB0aGlzLmNsZWFyKCkuc3Vic2NyaWJlKCgpID0+IHt9LCAoKSA9PiB7fSk7XG5cbiAgfVxuXG59XG4iXX0=
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGliLnNlcnZpY2UuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9Abmd4LXB3YS9sb2NhbC1zdG9yYWdlLyIsInNvdXJjZXMiOlsibGliL2xpYi5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7QUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBYyxVQUFVLEVBQUUsRUFBRSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ2xELE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUUxQyxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFFM0QsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLDZCQUE2QixDQUFDOzs7Ozs7O0FBRTVELHNDQUVDOzs7SUFEQyxrQ0FBMkI7O0FBTTdCLE1BQU0sT0FBTyxZQUFZOzs7OztJQU12QixZQUFzQixRQUF1QixFQUFZLGFBQTRCO1FBQS9ELGFBQVEsR0FBUixRQUFRLENBQWU7UUFBWSxrQkFBYSxHQUFiLGFBQWEsQ0FBZTtRQUpsRSwwQkFBcUIsR0FBcUI7WUFDM0QsTUFBTSxFQUFFLElBQUk7U0FDYixDQUFDO0lBRXNGLENBQUM7Ozs7Ozs7O0lBT3pGLE9BQU8sQ0FBVSxHQUFXLEVBQUUsVUFBNEIsSUFBSSxDQUFDLHFCQUFxQjtRQUVsRixPQUFPLElBQUksQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFJLEdBQUcsQ0FBQyxDQUFDLElBQUk7UUFFdkMsbURBQW1EO1FBQ25ELFFBQVEsQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFO1lBRWhCLElBQUksT0FBTyxDQUFDLE1BQU0sSUFBSSxJQUFJLEtBQUssSUFBSSxFQUFFOztvQkFFL0IsVUFBVSxHQUFHLElBQUk7Z0JBRXJCLElBQUk7b0JBQ0YsVUFBVSxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUM7aUJBQ2hFO2dCQUFDLE9BQU8sS0FBSyxFQUFFO29CQUNkLE9BQU8sVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFDO2lCQUMxQjtnQkFFRCxJQUFJLENBQUMsVUFBVSxFQUFFO29CQUNmLE9BQU8sVUFBVSxDQUFDLElBQUksS0FBSyxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUM7aUJBQzlDO2FBRUY7WUFFRCxPQUFPLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUVsQixDQUFDLENBQUMsQ0FBQyxDQUFDO0lBRVIsQ0FBQzs7Ozs7OztJQVFBLE9BQU8sQ0FBQyxHQUFXLEVBQUUsSUFBUztRQUU3QixPQUFPLElBQUksQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLEdBQUcsRUFBRSxJQUFJLENBQUMsQ0FBQztJQUUxQyxDQUFDOzs7Ozs7SUFPQSxVQUFVLENBQUMsR0FBVztRQUVyQixPQUFPLElBQUksQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBRXZDLENBQUM7Ozs7O0lBTUEsS0FBSztRQUVKLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUUvQixDQUFDOzs7Ozs7O0lBT0QsZ0JBQWdCLENBQUMsR0FBVyxFQUFFLElBQVM7UUFFckMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLEVBQUUsSUFBSSxDQUFDLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRSxHQUFFLENBQUMsRUFBRSxHQUFHLEVBQUUsR0FBRSxDQUFDLENBQUMsQ0FBQztJQUV4RCxDQUFDOzs7Ozs7SUFNQSxtQkFBbUIsQ0FBQyxHQUFXO1FBRTlCLElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRSxHQUFFLENBQUMsRUFBRSxHQUFHLEVBQUUsR0FBRSxDQUFDLENBQUMsQ0FBQztJQUVyRCxDQUFDOzs7OztJQUdELGNBQWM7UUFFWixJQUFJLENBQUMsS0FBSyxFQUFFLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRSxHQUFFLENBQUMsRUFBRSxHQUFHLEVBQUUsR0FBRSxDQUFDLENBQUMsQ0FBQztJQUU3QyxDQUFDOzs7WUF4R0YsVUFBVSxTQUFDO2dCQUNWLFVBQVUsRUFBRSxNQUFNO2FBQ25COzs7O1lBVlEsYUFBYTtZQUViLGFBQWE7Ozs7O0lBV3BCLDZDQUVFOztJQUVVLGdDQUFpQzs7SUFBRSxxQ0FBc0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlLCB0aHJvd0Vycm9yLCBvZiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgbWVyZ2VNYXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbmltcG9ydCB7IExvY2FsRGF0YWJhc2UgfSBmcm9tICcuL2RhdGFiYXNlcy9sb2NhbC1kYXRhYmFzZSc7XG5pbXBvcnQgeyBKU09OU2NoZW1hIH0gZnJvbSAnLi92YWxpZGF0aW9uL2pzb24tc2NoZW1hJztcbmltcG9ydCB7IEpTT05WYWxpZGF0b3IgfSBmcm9tICcuL3ZhbGlkYXRpb24vanNvbi12YWxpZGF0b3InO1xuXG5leHBvcnQgaW50ZXJmYWNlIExTR2V0SXRlbU9wdGlvbnMge1xuICBzY2hlbWE/OiBKU09OU2NoZW1hIHwgbnVsbDtcbn1cblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCdcbn0pXG5leHBvcnQgY2xhc3MgTG9jYWxTdG9yYWdlIHtcblxuICBwcm90ZWN0ZWQgcmVhZG9ubHkgZ2V0SXRlbU9wdGlvbnNEZWZhdWx0OiBMU0dldEl0ZW1PcHRpb25zID0ge1xuICAgIHNjaGVtYTogbnVsbFxuICB9O1xuXG4gIGNvbnN0cnVjdG9yKHByb3RlY3RlZCBkYXRhYmFzZTogTG9jYWxEYXRhYmFzZSwgcHJvdGVjdGVkIGpzb25WYWxpZGF0b3I6IEpTT05WYWxpZGF0b3IpIHt9XG5cbiAgLyoqXG4gICAqIEdldHMgYW4gaXRlbSB2YWx1ZSBpbiBsb2NhbCBzdG9yYWdlXG4gICAqIEBwYXJhbSBrZXkgVGhlIGl0ZW0ncyBrZXlcbiAgICogQHJldHVybnMgVGhlIGl0ZW0ncyB2YWx1ZSBpZiB0aGUga2V5IGV4aXN0cywgbnVsbCBvdGhlcndpc2UsIHdyYXBwZWQgaW4gYW4gUnhKUyBPYnNlcnZhYmxlXG4gICAqL1xuICBnZXRJdGVtPFQgPSBhbnk+KGtleTogc3RyaW5nLCBvcHRpb25zOiBMU0dldEl0ZW1PcHRpb25zID0gdGhpcy5nZXRJdGVtT3B0aW9uc0RlZmF1bHQpOiBPYnNlcnZhYmxlPFQgfCBudWxsPiB7XG5cbiAgICByZXR1cm4gdGhpcy5kYXRhYmFzZS5nZXRJdGVtPFQ+KGtleSkucGlwZShcblxuICAgICAgLyogVmFsaWRhdGUgZGF0YSB1cG9uIGEganNvbiBzY2hlbWEgaWYgcmVxdWVzdGVkICovXG4gICAgICBtZXJnZU1hcCgoZGF0YSkgPT4ge1xuXG4gICAgICAgIGlmIChvcHRpb25zLnNjaGVtYSAmJiBkYXRhICE9PSBudWxsKSB7XG5cbiAgICAgICAgICBsZXQgdmFsaWRhdGlvbiA9IHRydWU7XG5cbiAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgdmFsaWRhdGlvbiA9IHRoaXMuanNvblZhbGlkYXRvci52YWxpZGF0ZShkYXRhLCBvcHRpb25zLnNjaGVtYSk7XG4gICAgICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgICAgIHJldHVybiB0aHJvd0Vycm9yKGVycm9yKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBpZiAoIXZhbGlkYXRpb24pIHtcbiAgICAgICAgICAgIHJldHVybiB0aHJvd0Vycm9yKG5ldyBFcnJvcihgSlNPTiBpbnZhbGlkYCkpO1xuICAgICAgICAgIH1cblxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIG9mKGRhdGEpO1xuXG4gICAgICB9KSk7XG5cbiAgfVxuXG4gIC8qKlxuICAgKiBTZXRzIGFuIGl0ZW0gaW4gbG9jYWwgc3RvcmFnZVxuICAgKiBAcGFyYW0ga2V5IFRoZSBpdGVtJ3Mga2V5XG4gICAqIEBwYXJhbSBkYXRhIFRoZSBpdGVtJ3MgdmFsdWUsIG11c3QgTk9UIGJlIG51bGwgb3IgdW5kZWZpbmVkXG4gICAqIEByZXR1cm5zIEFuIFJ4SlMgT2JzZXJ2YWJsZSB0byB3YWl0IHRoZSBlbmQgb2YgdGhlIG9wZXJhdGlvblxuICAgKi9cbiAgIHNldEl0ZW0oa2V5OiBzdHJpbmcsIGRhdGE6IGFueSk6IE9ic2VydmFibGU8Ym9vbGVhbj4ge1xuXG4gICAgcmV0dXJuIHRoaXMuZGF0YWJhc2Uuc2V0SXRlbShrZXksIGRhdGEpO1xuXG4gIH1cblxuICAvKipcbiAgICogRGVsZXRlcyBhbiBpdGVtIGluIGxvY2FsIHN0b3JhZ2VcbiAgICogQHBhcmFtIGtleSBUaGUgaXRlbSdzIGtleVxuICAgKiBAcmV0dXJucyBBbiBSeEpTIE9ic2VydmFibGUgdG8gd2FpdCB0aGUgZW5kIG9mIHRoZSBvcGVyYXRpb25cbiAgICovXG4gICByZW1vdmVJdGVtKGtleTogc3RyaW5nKTogT2JzZXJ2YWJsZTxib29sZWFuPiB7XG5cbiAgICByZXR1cm4gdGhpcy5kYXRhYmFzZS5yZW1vdmVJdGVtKGtleSk7XG5cbiAgfVxuXG4gIC8qKlxuICAgKiBEZWxldGVzIGFsbCBpdGVtcyBmcm9tIGxvY2FsIHN0b3JhZ2VcbiAgICogQHJldHVybnMgQW4gUnhKUyBPYnNlcnZhYmxlIHRvIHdhaXQgdGhlIGVuZCBvZiB0aGUgb3BlcmF0aW9uXG4gICAqL1xuICAgY2xlYXIoKTogT2JzZXJ2YWJsZTxib29sZWFuPiB7XG5cbiAgICByZXR1cm4gdGhpcy5kYXRhYmFzZS5jbGVhcigpO1xuXG4gIH1cblxuICAvKipcbiAgICogU2V0cyBhbiBpdGVtIGluIGxvY2FsIHN0b3JhZ2UsIGFuZCBhdXRvLXN1YnNjcmliZXNcbiAgICogQHBhcmFtIGtleSBUaGUgaXRlbSdzIGtleVxuICAgKiBAcGFyYW0gZGF0YSBUaGUgaXRlbSdzIHZhbHVlLCBtdXN0IE5PVCBiZSBudWxsIG9yIHVuZGVmaW5lZFxuICAgKi9cbiAgc2V0SXRlbVN1YnNjcmliZShrZXk6IHN0cmluZywgZGF0YTogYW55KTogdm9pZCB7XG5cbiAgICB0aGlzLnNldEl0ZW0oa2V5LCBkYXRhKS5zdWJzY3JpYmUoKCkgPT4ge30sICgpID0+IHt9KTtcblxuICB9XG5cbiAgLyoqXG4gICAqIERlbGV0ZXMgYW4gaXRlbSBpbiBsb2NhbCBzdG9yYWdlLCBhbmQgYXV0by1zdWJzY3JpYmVzXG4gICAqIEBwYXJhbSBrZXkgVGhlIGl0ZW0ncyBrZXlcbiAgICovXG4gICByZW1vdmVJdGVtU3Vic2NyaWJlKGtleTogc3RyaW5nKTogdm9pZCB7XG5cbiAgICB0aGlzLnJlbW92ZUl0ZW0oa2V5KS5zdWJzY3JpYmUoKCkgPT4ge30sICgpID0+IHt9KTtcblxuICB9XG5cbiAgLyoqIERlbGV0ZXMgYWxsIGl0ZW1zIGZyb20gbG9jYWwgc3RvcmFnZSwgYW5kIGF1dG8tc3Vic2NyaWJlcyAqL1xuICBjbGVhclN1YnNjcmliZSgpOiB2b2lkIHtcblxuICAgIHRoaXMuY2xlYXIoKS5zdWJzY3JpYmUoKCkgPT4ge30sICgpID0+IHt9KTtcblxuICB9XG5cbn1cbiJdfQ==
/**
* @fileoverview added by tsickle
* @suppress {checkTypes} checked by tsc
* @suppress {checkTypes,extraRequire,uselessCode} checked by tsc
*/
import { InjectionToken } from '@angular/core';
export const /** @type {?} */ LOCAL_STORAGE_PREFIX = new InjectionToken('localStoragePrefix', { providedIn: 'root', factory: () => '' });
/** @type {?} */
export const LOCAL_STORAGE_PREFIX = new InjectionToken('localStoragePrefix', { providedIn: 'root', factory: () => '' });
/**

@@ -11,3 +12,3 @@ * @record

export function LocalStorageProvidersConfig() { }
function LocalStorageProvidersConfig_tsickle_Closure_declarations() {
if (false) {
/**

@@ -28,3 +29,2 @@ * Optional prefix to avoid collision in multiple apps on same subdomain

}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9rZW5zLmpzIiwic291cmNlUm9vdCI6Im5nOi8vQG5neC1wd2EvbG9jYWwtc3RvcmFnZS8iLCJzb3VyY2VzIjpbImxpYi90b2tlbnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQUFBLE9BQU8sRUFBRSxjQUFjLEVBQVksTUFBTSxlQUFlLENBQUM7QUFFekQsTUFBTSxDQUFDLHVCQUFNLG9CQUFvQixHQUFHLElBQUksY0FBYyxDQUFTLG9CQUFvQixFQUFFLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxPQUFPLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQzs7Ozs7Ozs7Ozs7Ozs7OztBQVFoSSxNQUFNLGdDQUFnQyxNQUFtQztJQUN2RSxNQUFNLENBQUM7UUFDTCxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxRQUFRLEVBQUUsTUFBTSxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFO0tBQ2hGLENBQUM7Q0FDSCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGlvblRva2VuLCBQcm92aWRlciB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5leHBvcnQgY29uc3QgTE9DQUxfU1RPUkFHRV9QUkVGSVggPSBuZXcgSW5qZWN0aW9uVG9rZW48c3RyaW5nPignbG9jYWxTdG9yYWdlUHJlZml4JywgeyBwcm92aWRlZEluOiAncm9vdCcsIGZhY3Rvcnk6ICgpID0+ICcnIH0pO1xuXG5leHBvcnQgaW50ZXJmYWNlIExvY2FsU3RvcmFnZVByb3ZpZGVyc0NvbmZpZyB7XG5cbiAgLyoqIE9wdGlvbmFsIHByZWZpeCB0byBhdm9pZCBjb2xsaXNpb24gaW4gbXVsdGlwbGUgYXBwcyBvbiBzYW1lIHN1YmRvbWFpbiAqL1xuICBwcmVmaXg/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBsb2NhbFN0b3JhZ2VQcm92aWRlcnMoY29uZmlnOiBMb2NhbFN0b3JhZ2VQcm92aWRlcnNDb25maWcpOiBQcm92aWRlcltdIHtcbiAgcmV0dXJuIFtcbiAgICBjb25maWcucHJlZml4ID8geyBwcm92aWRlOiBMT0NBTF9TVE9SQUdFX1BSRUZJWCwgdXNlVmFsdWU6IGNvbmZpZy5wcmVmaXggfSA6IFtdXG4gIF07XG59XG4iXX0=
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9rZW5zLmpzIiwic291cmNlUm9vdCI6Im5nOi8vQG5neC1wd2EvbG9jYWwtc3RvcmFnZS8iLCJzb3VyY2VzIjpbImxpYi90b2tlbnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQUFBLE9BQU8sRUFBRSxjQUFjLEVBQVksTUFBTSxlQUFlLENBQUM7O0FBRXpELE1BQU0sT0FBTyxvQkFBb0IsR0FBRyxJQUFJLGNBQWMsQ0FBUyxvQkFBb0IsRUFBRSxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsT0FBTyxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDOzs7O0FBRS9ILGlEQUlDOzs7Ozs7SUFEQyw2Q0FBZ0I7Ozs7OztBQUdsQixNQUFNLFVBQVUscUJBQXFCLENBQUMsTUFBbUM7SUFDdkUsT0FBTztRQUNMLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsT0FBTyxFQUFFLG9CQUFvQixFQUFFLFFBQVEsRUFBRSxNQUFNLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUU7S0FDaEYsQ0FBQztBQUNKLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3Rpb25Ub2tlbiwgUHJvdmlkZXIgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuZXhwb3J0IGNvbnN0IExPQ0FMX1NUT1JBR0VfUFJFRklYID0gbmV3IEluamVjdGlvblRva2VuPHN0cmluZz4oJ2xvY2FsU3RvcmFnZVByZWZpeCcsIHsgcHJvdmlkZWRJbjogJ3Jvb3QnLCBmYWN0b3J5OiAoKSA9PiAnJyB9KTtcblxuZXhwb3J0IGludGVyZmFjZSBMb2NhbFN0b3JhZ2VQcm92aWRlcnNDb25maWcge1xuXG4gIC8qKiBPcHRpb25hbCBwcmVmaXggdG8gYXZvaWQgY29sbGlzaW9uIGluIG11bHRpcGxlIGFwcHMgb24gc2FtZSBzdWJkb21haW4gKi9cbiAgcHJlZml4Pzogc3RyaW5nO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbG9jYWxTdG9yYWdlUHJvdmlkZXJzKGNvbmZpZzogTG9jYWxTdG9yYWdlUHJvdmlkZXJzQ29uZmlnKTogUHJvdmlkZXJbXSB7XG4gIHJldHVybiBbXG4gICAgY29uZmlnLnByZWZpeCA/IHsgcHJvdmlkZTogTE9DQUxfU1RPUkFHRV9QUkVGSVgsIHVzZVZhbHVlOiBjb25maWcucHJlZml4IH0gOiBbXVxuICBdO1xufVxuIl19
/**
* @fileoverview added by tsickle
* @suppress {checkTypes} checked by tsc
* @suppress {checkTypes,extraRequire,uselessCode} checked by tsc
*/

@@ -15,3 +15,3 @@ /**

export function JSONSchema() { }
function JSONSchema_tsickle_Closure_declarations() {
if (false) {
/**

@@ -114,7 +114,4 @@ * Type for a primitive value.

JSONSchema.prototype.uniqueItems;
/* TODO: handle strange member:
[k: string]: any;
*/
/* Skipping unhandled member: [k: string]: any;*/
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoianNvbi1zY2hlbWEuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9Abmd4LXB3YS9sb2NhbC1zdG9yYWdlLyIsInNvdXJjZXMiOlsibGliL3ZhbGlkYXRpb24vanNvbi1zY2hlbWEudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogU3Vic2V0IG9mIHRoZSBKU09OIFNjaGVtYS5cbiAqIFR5cGVzIGFyZSBlbmZvcmNlZCB0byB2YWxpZGF0ZSBldmVyeXRoaW5nOiBlYWNoIHZhbHVlIE1VU1QgaGF2ZSBlaXRoZXIgJ3R5cGUnIG9yICdwcm9wZXJ0aWVzJyBvciAnaXRlbXMnIG9yICdjb25zdCcgb3IgJ2VudW0nLlxuICogVGhlcmVmb3JlLCB1bmxpa2UgdGhlIHNwZWMsIGJvb2xlYW5zIGFyZSBub3QgYWxsb3dlZCBhcyBzY2hlbWFzLlxuICogQHNlZSBodHRwOi8vanNvbi1zY2hlbWEub3JnL2xhdGVzdC9qc29uLXNjaGVtYS12YWxpZGF0aW9uLmh0bWxcbiAqIE5vdCBhbGwgdmFsaWRhdGlvbiBmZWF0dXJlcyBhcmUgc3VwcG9ydGVkOiBqdXN0IGZvbGxvdyB0aGUgaW50ZXJmYWNlLlxuICogQHRvZG8gV2hlbiBUUyAyLjgsIGV4cGxvcmUgaWYgdGhpcyBzY2hlbWFzIGNhbiBiZSBzcGxpdCBmb3Igb2JqZWN0IGFuZCBhcnJheXMgd2l0aCBjb25kaXRpb25hbCB0eXBlcy5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBKU09OU2NoZW1hIHtcblxuICAvKipcbiAgICogVHlwZSBmb3IgYSBwcmltaXRpdmUgdmFsdWUuXG4gICAqIE5vdCByZXF1aXJlZCBmb3Igb2JqZWN0cywganVzdCBzZXQgJ3Byb3BlcnRpZXMnLlxuICAgKiBOb3QgcmVxdWlyZWQgZm9yIGFycmF5cywganVzdCBzZXQgJ2l0ZW1zJy5cbiAgICogTm90IHJlcXVpcmVkIGZvciBjb25zdCBhbmQgZW51bS5cbiAgICovXG4gIHR5cGU/OiAnc3RyaW5nJyB8ICdudW1iZXInIHwgJ2ludGVnZXInIHwgJ2Jvb2xlYW4nIHwgJ2FycmF5JyB8ICdvYmplY3QnIHwgJ251bGwnO1xuXG4gIC8qKlxuICAgKiBMaXN0IG9mIHByb3BlcnRpZXMgc2NoZW1hcyBmb3IgYW4gb2JqZWN0LlxuICAgKi9cbiAgcHJvcGVydGllcz86IHtcbiAgICBbazogc3RyaW5nXTogSlNPTlNjaGVtYTtcbiAgfTtcblxuICAvKipcbiAgICogQXJyYXkgb2YgbmFtZXMgb2YgdGhlIHJlcXVpcmVkIHByb3BlcnRpZXMgZm9yIGFuIG9iamVjdC5cbiAgICogUHJvcGVydGllcyBzZXQgYXMgcmVxdWlyZWQgc2hvdWxkIGJlIHByZXNlbnQgaW4gJ3Byb3BlcnRpZXMnIHRvby5cbiAgICogTm90ZSB0aGF0IGluIHRoZSBsYXN0IHNwZWMsIGJvb2xlYW5zIGFyZSBub3Qgc3VwcG9ydGVkIGFueW1vcmUuXG4gICAqL1xuICByZXF1aXJlZD86IHN0cmluZ1tdO1xuXG4gIC8qKlxuICAgKiBTY2hlbWEgZm9yIHRoZSB2YWx1ZXMgb2YgYW4gYXJyYXkuXG4gICAqICd0eXBlJyBvZiB2YWx1ZXMgc2hvdWxkIGJlIGEgc3RyaW5nIChub3QgYW4gYXJyYXkgb2YgdHlwZSkuXG4gICAqL1xuICBpdGVtcz86IEpTT05TY2hlbWEgfCBKU09OU2NoZW1hW107XG5cbiAgLyoqXG4gICAqIENoZWNrcyBpZiBhIHZhbHVlIGlzIHN0cmljdGx5IGVxdWFsIHRvIHRoaXMuXG4gICAqL1xuICBjb25zdD86IGFueTtcblxuICAvKipcbiAgICogQ2hlY2tzIGlmIGEgdmFsdWUgaXMgc3RyaWN0bHkgZXF1YWwgdG8gb25lIG9mIHRoZSB2YWx1ZSBvZiBlbnVtLlxuICAgKi9cbiAgZW51bT86IGFueVtdO1xuXG4gIC8qKlxuICAgKiBNaW51bXVtIGxlbmdodCBmb3IgYSBzdHJpbmcuXG4gICAqIE11c3QgYmUgYSBub24tbmVnYXRpdmUgaW50ZWdlci5cbiAgICovXG4gIG1heExlbmd0aD86IG51bWJlcjtcblxuICAvKipcbiAgICogTWludW11bSBsZW5naHQgZm9yIGEgc3RyaW5nLlxuICAgKiBNdXN0IGJlIGEgbm9uLW5lZ2F0aXZlIGludGVnZXIuXG4gICAqL1xuICBtaW5MZW5ndGg/OiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIFBhdHRlcm4gdG8gbWF0Y2ggZm9yIGEgc3RyaW5nLlxuICAgKiBNdXN0IGJlIGEgdmFsaWQgcmVndWxhciBleHByZXNzaW9uLCBXSVRIT1VUIHRoZSAvIGRlbGltaXRlcnMuXG4gICAqL1xuICBwYXR0ZXJuPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBDaGVjayBpZiBhIG51bWJlciBpcyBhIG11bHRpcGxlIG9mIHguXG4gICAqIE11c3QgYmUgc3RyaWN0bHkgZ3JlYXRlciB0aGFuIDAuXG4gICAqL1xuICBtdWx0aXBsZU9mPzogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBDaGVjayBpZiBhIG51bWJlciBpcyBsZXNzIG9yIGVxdWFsIHRoYW4gdGhpcyBtYXhpbXVtLlxuICAgKi9cbiAgbWF4aW11bT86IG51bWJlcjtcblxuICAvKipcbiAgICogQ2hlY2sgaWYgYSBudW1iZXIgaXMgc3RyaWN0bHkgbGVzcyB0aGFuIHRoaXMgbWF4aW11bS5cbiAgICovXG4gIGV4Y2x1c2l2ZU1heGltdW0/OiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIENoZWNrIGlmIGEgbnVtYmVyIGlzIGdyZWF0ZXIgb3IgZXF1YWwgdGhhbiB0aGlzIG1pbmltdW0uXG4gICAqL1xuICBtaW5pbXVtPzogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBDaGVjayBpZiBhIG51bWJlciBpcyBzdHJpY3RseSBncmVhdGVyIHRoYW4gdGhpcyBtaW5pbXVtLlxuICAgKi9cbiAgZXhjbHVzaXZlTWluaW11bT86IG51bWJlcjtcblxuICAvKipcbiAgICogQ2hlY2sgaWYgYW4gYXJyYXkgbGVuZ3RoIGlzIGxlc3Mgb3IgZXF1YWwgdG8gdGhpcyB2YWx1ZS5cbiAgICogTXVzdCBiZSBhIG5vbiBuZWdhdGl2ZSBpbnRlZ2VyLlxuICAgKi9cbiAgbWF4SXRlbXM/OiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIENoZWNrIGlmIGFuIGFycmF5IGxlbmd0aCBpcyBncmVhdGVyIG9yIGVxdWFsIHRvIHRoaXMgdmFsdWUuXG4gICAqIE11c3QgYmUgYSBub24gbmVnYXRpdmUgaW50ZWdlci5cbiAgICovXG4gIG1pbkl0ZW1zPzogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBDaGVjayBpZiBhbiBhcnJheSBvbmx5IGhhdmUgdW5pcXVlIHZhbHVlcy5cbiAgICovXG4gIHVuaXF1ZUl0ZW1zPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogQWxsb3cgb3RoZXIgcHJvcGVydGllcywgdG8gbm90IGZhaWwgd2l0aCBleGlzdGluZyBKU09OIHNjaGVtYXMuXG4gICAqL1xuICBbazogc3RyaW5nXTogYW55O1xuXG59XG4iXX0=
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoianNvbi1zY2hlbWEuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9Abmd4LXB3YS9sb2NhbC1zdG9yYWdlLyIsInNvdXJjZXMiOlsibGliL3ZhbGlkYXRpb24vanNvbi1zY2hlbWEudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7OztBQVFBLGdDQTBHQzs7Ozs7Ozs7O0lBbEdDLDBCQUFpRjs7Ozs7SUFLakYsZ0NBRUU7Ozs7Ozs7SUFPRiw4QkFBb0I7Ozs7OztJQU1wQiwyQkFBa0M7Ozs7O0lBS2xDLDJCQUFZOzs7OztJQUtaLDBCQUFhOzs7Ozs7SUFNYiwrQkFBbUI7Ozs7OztJQU1uQiwrQkFBbUI7Ozs7OztJQU1uQiw2QkFBaUI7Ozs7OztJQU1qQixnQ0FBb0I7Ozs7O0lBS3BCLDZCQUFpQjs7Ozs7SUFLakIsc0NBQTBCOzs7OztJQUsxQiw2QkFBaUI7Ozs7O0lBS2pCLHNDQUEwQjs7Ozs7O0lBTTFCLDhCQUFrQjs7Ozs7O0lBTWxCLDhCQUFrQjs7Ozs7SUFLbEIsaUNBQXNCIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBTdWJzZXQgb2YgdGhlIEpTT04gU2NoZW1hLlxuICogVHlwZXMgYXJlIGVuZm9yY2VkIHRvIHZhbGlkYXRlIGV2ZXJ5dGhpbmc6IGVhY2ggdmFsdWUgTVVTVCBoYXZlIGVpdGhlciAndHlwZScgb3IgJ3Byb3BlcnRpZXMnIG9yICdpdGVtcycgb3IgJ2NvbnN0JyBvciAnZW51bScuXG4gKiBUaGVyZWZvcmUsIHVubGlrZSB0aGUgc3BlYywgYm9vbGVhbnMgYXJlIG5vdCBhbGxvd2VkIGFzIHNjaGVtYXMuXG4gKiBAc2VlIGh0dHA6Ly9qc29uLXNjaGVtYS5vcmcvbGF0ZXN0L2pzb24tc2NoZW1hLXZhbGlkYXRpb24uaHRtbFxuICogTm90IGFsbCB2YWxpZGF0aW9uIGZlYXR1cmVzIGFyZSBzdXBwb3J0ZWQ6IGp1c3QgZm9sbG93IHRoZSBpbnRlcmZhY2UuXG4gKiBAdG9kbyBXaGVuIFRTIDIuOCwgZXhwbG9yZSBpZiB0aGlzIHNjaGVtYXMgY2FuIGJlIHNwbGl0IGZvciBvYmplY3QgYW5kIGFycmF5cyB3aXRoIGNvbmRpdGlvbmFsIHR5cGVzLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEpTT05TY2hlbWEge1xuXG4gIC8qKlxuICAgKiBUeXBlIGZvciBhIHByaW1pdGl2ZSB2YWx1ZS5cbiAgICogTm90IHJlcXVpcmVkIGZvciBvYmplY3RzLCBqdXN0IHNldCAncHJvcGVydGllcycuXG4gICAqIE5vdCByZXF1aXJlZCBmb3IgYXJyYXlzLCBqdXN0IHNldCAnaXRlbXMnLlxuICAgKiBOb3QgcmVxdWlyZWQgZm9yIGNvbnN0IGFuZCBlbnVtLlxuICAgKi9cbiAgdHlwZT86ICdzdHJpbmcnIHwgJ251bWJlcicgfCAnaW50ZWdlcicgfCAnYm9vbGVhbicgfCAnYXJyYXknIHwgJ29iamVjdCcgfCAnbnVsbCc7XG5cbiAgLyoqXG4gICAqIExpc3Qgb2YgcHJvcGVydGllcyBzY2hlbWFzIGZvciBhbiBvYmplY3QuXG4gICAqL1xuICBwcm9wZXJ0aWVzPzoge1xuICAgIFtrOiBzdHJpbmddOiBKU09OU2NoZW1hO1xuICB9O1xuXG4gIC8qKlxuICAgKiBBcnJheSBvZiBuYW1lcyBvZiB0aGUgcmVxdWlyZWQgcHJvcGVydGllcyBmb3IgYW4gb2JqZWN0LlxuICAgKiBQcm9wZXJ0aWVzIHNldCBhcyByZXF1aXJlZCBzaG91bGQgYmUgcHJlc2VudCBpbiAncHJvcGVydGllcycgdG9vLlxuICAgKiBOb3RlIHRoYXQgaW4gdGhlIGxhc3Qgc3BlYywgYm9vbGVhbnMgYXJlIG5vdCBzdXBwb3J0ZWQgYW55bW9yZS5cbiAgICovXG4gIHJlcXVpcmVkPzogc3RyaW5nW107XG5cbiAgLyoqXG4gICAqIFNjaGVtYSBmb3IgdGhlIHZhbHVlcyBvZiBhbiBhcnJheS5cbiAgICogJ3R5cGUnIG9mIHZhbHVlcyBzaG91bGQgYmUgYSBzdHJpbmcgKG5vdCBhbiBhcnJheSBvZiB0eXBlKS5cbiAgICovXG4gIGl0ZW1zPzogSlNPTlNjaGVtYSB8IEpTT05TY2hlbWFbXTtcblxuICAvKipcbiAgICogQ2hlY2tzIGlmIGEgdmFsdWUgaXMgc3RyaWN0bHkgZXF1YWwgdG8gdGhpcy5cbiAgICovXG4gIGNvbnN0PzogYW55O1xuXG4gIC8qKlxuICAgKiBDaGVja3MgaWYgYSB2YWx1ZSBpcyBzdHJpY3RseSBlcXVhbCB0byBvbmUgb2YgdGhlIHZhbHVlIG9mIGVudW0uXG4gICAqL1xuICBlbnVtPzogYW55W107XG5cbiAgLyoqXG4gICAqIE1pbnVtdW0gbGVuZ2h0IGZvciBhIHN0cmluZy5cbiAgICogTXVzdCBiZSBhIG5vbi1uZWdhdGl2ZSBpbnRlZ2VyLlxuICAgKi9cbiAgbWF4TGVuZ3RoPzogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBNaW51bXVtIGxlbmdodCBmb3IgYSBzdHJpbmcuXG4gICAqIE11c3QgYmUgYSBub24tbmVnYXRpdmUgaW50ZWdlci5cbiAgICovXG4gIG1pbkxlbmd0aD86IG51bWJlcjtcblxuICAvKipcbiAgICogUGF0dGVybiB0byBtYXRjaCBmb3IgYSBzdHJpbmcuXG4gICAqIE11c3QgYmUgYSB2YWxpZCByZWd1bGFyIGV4cHJlc3Npb24sIFdJVEhPVVQgdGhlIC8gZGVsaW1pdGVycy5cbiAgICovXG4gIHBhdHRlcm4/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIENoZWNrIGlmIGEgbnVtYmVyIGlzIGEgbXVsdGlwbGUgb2YgeC5cbiAgICogTXVzdCBiZSBzdHJpY3RseSBncmVhdGVyIHRoYW4gMC5cbiAgICovXG4gIG11bHRpcGxlT2Y/OiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIENoZWNrIGlmIGEgbnVtYmVyIGlzIGxlc3Mgb3IgZXF1YWwgdGhhbiB0aGlzIG1heGltdW0uXG4gICAqL1xuICBtYXhpbXVtPzogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBDaGVjayBpZiBhIG51bWJlciBpcyBzdHJpY3RseSBsZXNzIHRoYW4gdGhpcyBtYXhpbXVtLlxuICAgKi9cbiAgZXhjbHVzaXZlTWF4aW11bT86IG51bWJlcjtcblxuICAvKipcbiAgICogQ2hlY2sgaWYgYSBudW1iZXIgaXMgZ3JlYXRlciBvciBlcXVhbCB0aGFuIHRoaXMgbWluaW11bS5cbiAgICovXG4gIG1pbmltdW0/OiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIENoZWNrIGlmIGEgbnVtYmVyIGlzIHN0cmljdGx5IGdyZWF0ZXIgdGhhbiB0aGlzIG1pbmltdW0uXG4gICAqL1xuICBleGNsdXNpdmVNaW5pbXVtPzogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBDaGVjayBpZiBhbiBhcnJheSBsZW5ndGggaXMgbGVzcyBvciBlcXVhbCB0byB0aGlzIHZhbHVlLlxuICAgKiBNdXN0IGJlIGEgbm9uIG5lZ2F0aXZlIGludGVnZXIuXG4gICAqL1xuICBtYXhJdGVtcz86IG51bWJlcjtcblxuICAvKipcbiAgICogQ2hlY2sgaWYgYW4gYXJyYXkgbGVuZ3RoIGlzIGdyZWF0ZXIgb3IgZXF1YWwgdG8gdGhpcyB2YWx1ZS5cbiAgICogTXVzdCBiZSBhIG5vbiBuZWdhdGl2ZSBpbnRlZ2VyLlxuICAgKi9cbiAgbWluSXRlbXM/OiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIENoZWNrIGlmIGFuIGFycmF5IG9ubHkgaGF2ZSB1bmlxdWUgdmFsdWVzLlxuICAgKi9cbiAgdW5pcXVlSXRlbXM/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBBbGxvdyBvdGhlciBwcm9wZXJ0aWVzLCB0byBub3QgZmFpbCB3aXRoIGV4aXN0aW5nIEpTT04gc2NoZW1hcy5cbiAgICovXG4gIFtrOiBzdHJpbmddOiBhbnk7XG5cbn1cbiJdfQ==
/**
* @fileoverview added by tsickle
* @suppress {checkTypes} checked by tsc
* @suppress {checkTypes,extraRequire,uselessCode} checked by tsc
*/

@@ -69,5 +69,5 @@ import { Injectable } from '@angular/core';

/**
* Check if the object doesn't have more properties than expected
* Equivalent of additionalProperties: false
*/
* Check if the object doesn't have more properties than expected
* Equivalent of additionalProperties: false
*/
if (Object.keys(schema.properties).length !== Object.keys(data).length) {

@@ -77,3 +77,3 @@ return false;

/* Recursively validate all properties */
for (const /** @type {?} */ property in schema.properties) {
for (const property in schema.properties) {
if (schema.properties.hasOwnProperty(property) && data.hasOwnProperty(property)) {

@@ -99,3 +99,3 @@ if (!this.validate(data[property], schema.properties[property])) {

}
for (const /** @type {?} */ requiredProp of schema.required) {
for (const requiredProp of schema.required) {
/* Checks if the property is present in the schema 'properties' */

@@ -179,3 +179,4 @@ if (!schema.properties || !schema.properties.hasOwnProperty(requiredProp)) {

if (schema.uniqueItems) {
const /** @type {?} */ dataSet = new Set(data);
/** @type {?} */
const dataSet = new Set(data);
if (data.length !== dataSet.size) {

@@ -189,3 +190,3 @@ return false;

}
for (const /** @type {?} */ value of data) {
for (const value of data) {
if (!this.validate(value, schema.items)) {

@@ -203,7 +204,8 @@ return false;

validateItemsList(data, schema) {
const /** @type {?} */ items = /** @type {?} */ (schema.items);
/** @type {?} */
const items = (/** @type {?} */ (schema.items));
if (data.length !== items.length) {
return false;
}
for (let /** @type {?} */ i = 0; i < items.length; i += 1) {
for (let i = 0; i < items.length; i += 1) {
if (!this.validate(data[i], items[i])) {

@@ -241,3 +243,4 @@ return false;

if (schema.hasOwnProperty('pattern') && (schema.pattern != null)) {
const /** @type {?} */ regularExpression = new RegExp(schema.pattern);
/** @type {?} */
const regularExpression = new RegExp(schema.pattern);
if (!regularExpression.test(data)) {

@@ -298,3 +301,2 @@ return false;

/** @nocollapse */ JSONValidator.ngInjectableDef = i0.defineInjectable({ factory: function JSONValidator_Factory() { return new JSONValidator(); }, token: JSONValidator, providedIn: "root" });
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoianNvbi12YWxpZGF0b3IuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9Abmd4LXB3YS9sb2NhbC1zdG9yYWdlLyIsInNvdXJjZXMiOlsibGliL3ZhbGlkYXRpb24vanNvbi12YWxpZGF0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7Ozs7O0FBUzNDLE1BQU07Ozs7Ozs7Ozs7O0lBWUosUUFBUSxDQUFDLElBQVMsRUFBRSxNQUFrQjs7UUFHcEMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsY0FBYyxDQUFDLE9BQU8sQ0FBQyxJQUFJLE1BQU0sQ0FBQyxLQUFLLEtBQUssU0FBUyxDQUFDO2VBQ2xFLENBQUMsQ0FBQyxNQUFNLENBQUMsY0FBYyxDQUFDLE1BQU0sQ0FBQyxJQUFJLE1BQU0sQ0FBQyxJQUFJLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLE1BQU0sQ0FBQyxjQUFjLENBQUMsTUFBTSxDQUFDLElBQUksTUFBTSxDQUFDLElBQUksSUFBSSxJQUFJLENBQUMsQ0FBQztlQUNuSCxNQUFNLENBQUMsSUFBSSxLQUFLLE9BQU8sSUFBSSxNQUFNLENBQUMsSUFBSSxLQUFLLFFBQVEsQ0FBQztlQUNwRCxDQUFDLENBQUMsTUFBTSxDQUFDLGNBQWMsQ0FBQyxZQUFZLENBQUMsSUFBSSxNQUFNLENBQUMsVUFBVSxJQUFJLElBQUksQ0FBQyxJQUFLLENBQUMsQ0FBQyxNQUFNLENBQUMsY0FBYyxDQUFDLE9BQU8sQ0FBQyxJQUFJLE1BQU0sQ0FBQyxLQUFLLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBRXJJLE1BQU0sSUFBSSxLQUFLLENBQUMseUdBQXlHLENBQUMsQ0FBQztTQUU1SDtRQUVELEVBQUUsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxjQUFjLENBQUMsT0FBTyxDQUFDLElBQUksTUFBTSxDQUFDLEtBQUssS0FBSyxTQUFTLElB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SSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFFakUsRUFBRSxDQUFDLENBQUMsSUFBSSxHQUFHLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDO2dCQUMxQixNQUFNLENBQUMsS0FBSyxDQUFDO2FBQ2Q7U0FFRjtRQUVELEVBQUUsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxjQUFjLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxnQkFBZ0IsSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFFbkYsRUFBRSxDQUFDLENBQUMsSUFBSSxJQUFJLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUM7Z0JBQ3BDLE1BQU0sQ0FBQyxLQUFLLENBQUM7YUFDZDtTQUVGO1FBRUQsRUFBRSxDQUFDLENBQUMsTUFBTSxDQUFDLGNBQWMsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBRWpFLEVBQUUsQ0FBQyxDQUFDLElBQUksR0FBRyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQztnQkFDMUIsTUFBTSxDQUFDLEtBQUssQ0FBQzthQUNkO1NBRUY7UUFFRCxFQUFFLENBQUMsQ0FBQyxNQUFNLENBQUMsY0FBYyxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsZ0JBQWdCLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBRW5GLEVBQUUsQ0FBQyxDQUFDLElBQUksSUFBSSxNQUFNLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDO2dCQUNwQyxNQUFNLENBQUMsS0FBSyxDQUFDO2FBQ2Q7U0FFRjtRQUVELE1BQU0sQ0FBQyxJQUFJLENBQUM7S0FFYjs7O1lBclhGLFVBQVUsU0FBQztnQkFDVixVQUFVLEVBQUUsTUFBTTthQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEpTT05TY2hlbWEgfSBmcm9tICcuL2pzb24tc2NoZW1hJztcblxuLyoqXG4gKiBAdG9kbyBBZGQgb3RoZXIgSlNPTiBTY2hlbWEgdmFsaWRhdGlvbiBmZWF0dXJlc1xuICovXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290J1xufSlcbmV4cG9ydCBjbGFzcyBKU09OVmFsaWRhdG9yIHtcblxuICAvKipcbiAgICogVmFsaWRhdGUgYSBKU09OIGRhdGEgYWdhaW5zdCBhIEpTT04gU2NoZW1hXG4gICAqIEBwYXJhbSBkYXRhIEpTT04gZGF0YSB0byB2YWxpZGF0ZVxuICAgKiBAcGFyYW0gc2NoZW1hIFN1YnNldCBvZiBKU09OIFNjaGVtYS5cbiAgICogVHlwZXMgYXJlIGVuZm9yY2VkIHRvIHZhbGlkYXRlIGV2ZXJ5dGhpbmc6XG4gICAqIGVhY2ggdmFsdWUgTVVTVCBoYXZlICd0eXBlJyBvciAncHJvcGVydGllcycgb3IgJ2l0ZW1zJyBvciAnY29uc3QnIG9yICdlbnVtJy5cbiAgICogVGhlcmVmb3JlLCB1bmxpa2UgdGhlIHNwZWMsIGJvb2xlYW5zIGFyZSBub3QgYWxsb3dlZCBhcyBzY2hlbWFzLlxuICAgKiBOb3QgYWxsIHZhbGlkYXRpb24gZmVhdHVyZXMgYXJlIHN1cHBvcnRlZDoganVzdCBmb2xsb3cgdGhlIGludGVyZmFjZS5cbiAgICogQHJldHVybnMgSWYgZGF0YSBpcyB2YWxpZCA6IHRydWUsIGlmIGl0IGlzIGludmFsaWQgOiBmYWxzZSwgYW5kIHRocm93cyBpZiB0aGUgc2NoZW1hIGlzIGludmFsaWRcbiAgICovXG4gIHZhbGlkYXRlKGRhdGE6IGFueSwgc2NoZW1hOiBKU09OU2NoZW1hKTogYm9vbGVhbiB7XG5cbiAgICAvKiogQHRvZG8gV2hlbiBUUyAyLjgsIGV4cGxvcmUgaWYgdGhpcyBpcyBwb3NzaWJsZSB3aXRoIGNvbmRpdGlvbmFsIHR5cGVzICovXG4gICAgaWYgKCgoIShzY2hlbWEuaGFzT3duUHJvcGVydHkoJ2NvbnN0JykgJiYgc2NoZW1hLmNvbnN0ICE9PSB1bmRlZmluZWQpXG4gICAgJiYgIShzY2hlbWEuaGFzT3duUHJvcGVydHkoJ2VudW0nKSAmJiBzY2hlbWEuZW51bSAhPSBudWxsKSAmJiAhKHNjaGVtYS5oYXNPd25Qcm9wZXJ0eSgndHlwZScpICYmIHNjaGVtYS50eXBlICE9IG51bGwpKVxuICAgIHx8IHNjaGVtYS50eXBlID09PSAnYXJyYXknIHx8IHNjaGVtYS50eXBlID09PSAnb2JqZWN0JylcbiAgICAmJiAhKHNjaGVtYS5oYXNPd25Qcm9wZXJ0eSgncHJvcGVydGllcycpICYmIHNjaGVtYS5wcm9wZXJ0aWVzICE9IG51bGwpICAmJiAhKHNjaGVtYS5oYXNPd25Qcm9wZXJ0eSgnaXRlbXMnKSAmJiBzY2hlbWEuaXRlbXMgIT0gbnVsbCkpIHtcblxuICAgICAgdGhyb3cgbmV3IEVycm9yKGBFYWNoIHZhbHVlIG11c3QgaGF2ZSBhICd0eXBlJyBvciAncHJvcGVydGllcycgb3IgJ2l0ZW1zJyBvciAnY29uc3QnIG9yICdlbnVtJywgdG8gZW5mb3JjZSBzdHJpY3QgdHlwZXMuYCk7XG5cbiAgICB9XG5cbiAgICBpZiAoc2NoZW1hLmhhc093blByb3BlcnR5KCdjb25zdCcpICYmIHNjaGVtYS5jb25zdCAhPT0gdW5kZWZpbmVkICYmIChkYXRhICE9PSBzY2hlbWEuY29uc3QpKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgaWYgKCF0aGlzLnZhbGlkYXRlRW51bShkYXRhLCBzY2hlbWEpKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgaWYgKCF0aGlzLnZhbGlkYXRlVHlwZShkYXRhLCBzY2hlbWEpKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgaWYgKCF0aGlzLnZhbGlkYXRlSXRlbXMoZGF0YSwgc2NoZW1hKSkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIGlmICghdGhpcy52YWxpZGF0ZVByb3BlcnRpZXMoZGF0YSwgc2NoZW1hKSkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIGlmICghdGhpcy52YWxpZGF0ZVJlcXVpcmVkKGRhdGEsIHNjaGVtYSkpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICByZXR1cm4gdHJ1ZTtcblxuICB9XG5cbiAgcHJvdGVjdGVkIGlzT2JqZWN0Tm90TnVsbCh2YWx1ZTogYW55KTogYm9vbGVhbiB7XG5cbiAgICByZXR1cm4gKHZhbHVlICE9PSBudWxsKSAmJiAodHlwZW9mIHZhbHVlID09PSAnb2JqZWN0Jyk7XG5cbiAgfVxuXG4gIHByb3RlY3RlZCB2YWxpZGF0ZVByb3BlcnRpZXMoZGF0YTogeyBbazogc3RyaW5nXTogYW55OyB9LCBzY2hlbWE6IEpTT05TY2hlbWEpOiBib29sZWFuIHtcblxuICAgIGlmICghc2NoZW1hLmhhc093blByb3BlcnR5KCdwcm9wZXJ0aWVzJykgfHwgKHNjaGVtYS5wcm9wZXJ0aWVzID09IG51bGwpKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG5cbiAgICBpZiAoIXRoaXMuaXNPYmplY3ROb3ROdWxsKGRhdGEpKSB7XG5cbiAgICAgIHJldHVybiBmYWxzZTtcblxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENoZWNrIGlmIHRoZSBvYmplY3QgZG9lc24ndCBoYXZlIG1vcmUgcHJvcGVydGllcyB0aGFuIGV4cGVjdGVkXG4gICAgICogRXF1aXZhbGVudCBvZiBhZGRpdGlvbmFsUHJvcGVydGllczogZmFsc2VcbiAgICAgKi9cbiAgICBpZiAoT2JqZWN0LmtleXMoc2NoZW1hLnByb3BlcnRpZXMpLmxlbmd0aCAhPT0gT2JqZWN0LmtleXMoZGF0YSkubGVuZ3RoKSB7XG5cbiAgICAgIHJldHVybiBmYWxzZTtcblxuICAgIH1cblxuICAgIC8qIFJlY3Vyc2l2ZWx5IHZhbGlkYXRlIGFsbCBwcm9wZXJ0aWVzICovXG4gICAgZm9yIChjb25zdCBwcm9wZXJ0eSBpbiBzY2hlbWEucHJvcGVydGllcykge1xuXG4gICAgICBpZiAoc2NoZW1hLnByb3BlcnRpZXMuaGFzT3duUHJvcGVydHkocHJvcGVydHkpICYmIGRhdGEuaGFzT3duUHJvcGVydHkocHJvcGVydHkpKSB7XG5cbiAgICAgICAgaWYgKCF0aGlzLnZhbGlkYXRlKGRhdGFbcHJvcGVydHldLCBzY2hlbWEucHJvcGVydGllc1twcm9wZXJ0eV0pKSB7XG5cbiAgICAgICAgICByZXR1cm4gZmFsc2U7XG5cbiAgICAgICAgfVxuXG4gICAgICB9XG5cbiAgICB9XG5cbiAgICByZXR1cm4gdHJ1ZTtcblxuICB9XG5cbiAgcHJvdGVjdGVkIHZhbGlkYXRlUmVxdWlyZWQoZGF0YToge30sIHNjaGVtYTogSlNPTlNjaGVtYSk6IGJvb2xlYW4ge1xuXG4gICAgaWYgKCFzY2hlbWEuaGFzT3duUHJvcGVydHkoJ3JlcXVpcmVkJykgfHwgKHNjaGVtYS5yZXF1aXJlZCA9PSBudWxsKSkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgaWYgKCF0aGlzLmlzT2JqZWN0Tm90TnVsbChkYXRhKSkge1xuXG4gICAgICByZXR1cm4gZmFsc2U7XG5cbiAgICB9XG5cbiAgICBmb3IgKGNvbnN0IHJlcXVpcmVkUHJvcCBvZiBzY2hlbWEucmVxdWlyZWQpIHtcblxuICAgICAgLyogQ2hlY2tzIGlmIHRoZSBwcm9wZXJ0eSBpcyBwcmVzZW50IGluIHRoZSBzY2hlbWEgJ3Byb3BlcnRpZXMnICovXG4gICAgICBpZiAoIXNjaGVtYS5wcm9wZXJ0aWVzIHx8ICFzY2hlbWEucHJvcGVydGllcy5oYXNPd25Qcm9wZXJ0eShyZXF1aXJlZFByb3ApKSB7XG5cbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGAncmVxdWlyZWQnIHByb3BlcnRpZXMgbXVzdCBiZSBkZXNjcmliZWQgaW4gJ3Byb3BlcnRpZXMnIHRvby5gKTtcblxuICAgICAgfVxuXG4gICAgICAvKiBDaGVja3MgaWYgdGhlIHByb3BlcnR5IGlzIHByZXNlbnQgaW4gdGhlIGRhdGEgKi9cbiAgICAgIGlmICghZGF0YS5oYXNPd25Qcm9wZXJ0eShyZXF1aXJlZFByb3ApKSB7XG5cbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuXG4gICAgICB9XG5cbiAgICB9XG5cbiAgICByZXR1cm4gdHJ1ZTtcblxuICB9XG5cbiAgcHJvdGVjdGVkIHZhbGlkYXRlRW51bShkYXRhOiBhbnksIHNjaGVtYTogSlNPTlNjaGVtYSk6IGJvb2xlYW4ge1xuXG4gICAgaWYgKCFzY2hlbWEuaGFzT3duUHJvcGVydHkoJ2VudW0nKSB8fCAoc2NoZW1hLmVudW0gPT0gbnVsbCkpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIC8qKiBAdG9kbyBNb3ZlIHRvIEVTMjAxNiAuaW5jbHVkZXMoKSA/ICovXG4gICAgcmV0dXJuIChzY2hlbWEuZW51bS5pbmRleE9mKGRhdGEpICE9PSAtMSk7XG5cbiAgfVxuXG4gIHByb3RlY3RlZCB2YWxpZGF0ZVR5cGUoZGF0YTogYW55LCBzY2hlbWE6IEpTT05TY2hlbWEpOiBib29sZWFuIHtcblxuICAgIGlmICghc2NoZW1hLmhhc093blByb3BlcnR5KCd0eXBlJykgfHwgKHNjaGVtYS50eXBlID09IG51bGwpKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG5cbiAgICBzd2l0Y2ggKHNjaGVtYS50eXBlKSB7XG5cbiAgICAgIGNhc2UgJ251bGwnOlxuICAgICAgICByZXR1cm4gZGF0YSA9PT0gbnVsbDtcbiAgICAgIGNhc2UgJ3N0cmluZyc6XG4gICAgICAgIHJldHVybiB0aGlzLnZhbGlkYXRlU3RyaW5nKGRhdGEsIHNjaGVtYSk7XG4gICAgICBjYXNlICdudW1iZXInOlxuICAgICAgY2FzZSAnaW50ZWdlcic6XG4gICAgICAgIHJldHVybiB0aGlzLnZhbGlkYXRlTnVtYmVyKGRhdGEsIHNjaGVtYSk7XG4gICAgICBjYXNlICdib29sZWFuJzpcbiAgICAgICAgcmV0dXJuIHR5cGVvZiBkYXRhID09PSAnYm9vbGVhbic7XG4gICAgICBjYXNlICdvYmplY3QnOlxuICAgICAgICByZXR1cm4gdHlwZW9mIGRhdGEgPT09ICdvYmplY3QnO1xuICAgICAgY2FzZSAnYXJyYXknOlxuICAgICAgICByZXR1cm4gQXJyYXkuaXNBcnJheShkYXRhKTtcblxuICAgIH1cblxuICB9XG5cbiAgcHJvdGVjdGVkIHZhbGlkYXRlSXRlbXMoZGF0YTogYW55W10sIHNjaGVtYTogSlNPTlNjaGVtYSk6IGJvb2xlYW4ge1xuXG4gICAgaWYgKCFzY2hlbWEuaGFzT3duUHJvcGVydHkoJ2l0ZW1zJykgfHwgKHNjaGVtYS5pdGVtcyA9PSBudWxsKSkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgaWYgKCFBcnJheS5pc0FycmF5KGRhdGEpKSB7XG5cbiAgICAgIHJldHVybiBmYWxzZTtcblxuICAgIH1cblxuICAgIGlmIChzY2hlbWEuaGFzT3duUHJvcGVydHkoJ21heEl0ZW1zJykgJiYgKHNjaGVtYS5tYXhJdGVtcyAhPSBudWxsKSkge1xuXG4gICAgICBpZiAoIU51bWJlci5pc0ludGVnZXIoc2NoZW1hLm1heEl0ZW1zKSB8fCBzY2hlbWEubWF4SXRlbXMgPCAwKSB7XG5cbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGAnbWF4SXRlbXMnIG11c3QgYmUgYSBub24tbmVnYXRpdmUgaW50ZWdlci5gKTtcblxuICAgICAgfVxuXG4gICAgICBpZiAoZGF0YS5sZW5ndGggPiBzY2hlbWEubWF4SXRlbXMpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuXG4gICAgfVxuXG4gICAgaWYgKHNjaGVtYS5oYXNPd25Qcm9wZXJ0eSgnbWluSXRlbXMnKSAmJiAoc2NoZW1hLm1pbkl0ZW1zICE9IG51bGwpKSB7XG5cbiAgICAgIGlmICghTnVtYmVyLmlzSW50ZWdlcihzY2hlbWEubWluSXRlbXMpIHx8IHNjaGVtYS5taW5JdGVtcyA8IDApIHtcblxuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYCdtaW5JdGVtcycgbXVzdCBiZSBhIG5vbi1uZWdhdGl2ZSBpbnRlZ2VyLmApO1xuXG4gICAgICB9XG5cbiAgICAgIGlmIChkYXRhLmxlbmd0aCA8IHNjaGVtYS5taW5JdGVtcykge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG5cbiAgICB9XG5cbiAgICBpZiAoc2NoZW1hLmhhc093blByb3BlcnR5KCd1bmlxdWVJdGVtcycpICYmIChzY2hlbWEudW5pcXVlSXRlbXMgIT0gbnVsbCkpIHtcblxuICAgICAgaWYgKHNjaGVtYS51bmlxdWVJdGVtcykge1xuXG4gICAgICAgIGNvbnN0IGRhdGFTZXQgPSBuZXcgU2V0KGRhdGEpO1xuXG4gICAgICAgIGlmIChkYXRhLmxlbmd0aCAhPT0gZGF0YVNldC5zaXplKSB7XG4gICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG5cbiAgICAgIH1cblxuICAgIH1cblxuICAgIGlmIChBcnJheS5pc0FycmF5KHNjaGVtYS5pdGVtcykpIHtcblxuICAgICAgcmV0dXJuIHRoaXMudmFsaWRhdGVJdGVtc0xpc3QoZGF0YSwgc2NoZW1hKTtcblxuICAgIH1cblxuICAgIGZvciAoY29uc3QgdmFsdWUgb2YgZGF0YSkge1xuXG4gICAgICBpZiAoIXRoaXMudmFsaWRhdGUodmFsdWUsIHNjaGVtYS5pdGVtcykpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuXG4gICAgfVxuXG4gICAgcmV0dXJuIHRydWU7XG5cbiAgfVxuXG4gIHByb3RlY3RlZCB2YWxpZGF0ZUl0ZW1zTGlzdChkYXRhOiBhbnksIHNjaGVtYTogSlNPTlNjaGVtYSk6IGJvb2xlYW4ge1xuXG4gICAgY29uc3QgaXRlbXMgPSBzY2hlbWEuaXRlbXMgYXMgSlNPTlNjaGVtYVtdO1xuXG4gICAgaWYgKGRhdGEubGVuZ3RoICE9PSBpdGVtcy5sZW5ndGgpIHtcblxuICAgICAgcmV0dXJuIGZhbHNlO1xuXG4gICAgfVxuXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBpdGVtcy5sZW5ndGg7IGkgKz0gMSkge1xuXG4gICAgICBpZiAoIXRoaXMudmFsaWRhdGUoZGF0YVtpXSwgaXRlbXNbaV0pKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cblxuICAgIH1cblxuICAgIHJldHVybiB0cnVlO1xuXG4gIH1cblxuICBwcm90ZWN0ZWQgdmFsaWRhdGVTdHJpbmcoZGF0YTogYW55LCBzY2hlbWE6IEpTT05TY2hlbWEpOiBib29sZWFuIHtcblxuICAgIGlmICh0eXBlb2YgZGF0YSAhPT0gJ3N0cmluZycpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICBpZiAoc2NoZW1hLmhhc093blByb3BlcnR5KCdtYXhMZW5ndGgnKSAmJiAoc2NoZW1hLm1heExlbmd0aCAhPSBudWxsKSkge1xuXG4gICAgICBpZiAoIU51bWJlci5pc0ludGVnZXIoc2NoZW1hLm1heExlbmd0aCkgfHwgc2NoZW1hLm1heExlbmd0aCA8IDApIHtcblxuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYCdtYXhMZW5ndGgnIG11c3QgYmUgYSBub24tbmVnYXRpdmUgaW50ZWdlci5gKTtcblxuICAgICAgfVxuXG4gICAgICBpZiAoZGF0YS5sZW5ndGggPiBzY2hlbWEubWF4TGVuZ3RoKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cblxuICAgIH1cblxuICAgIGlmIChzY2hlbWEuaGFzT3duUHJvcGVydHkoJ21pbkxlbmd0aCcpICYmIChzY2hlbWEubWluTGVuZ3RoICE9IG51bGwpKSB7XG5cbiAgICAgIGlmICghTnVtYmVyLmlzSW50ZWdlcihzY2hlbWEubWluTGVuZ3RoKSB8fCBzY2hlbWEubWluTGVuZ3RoIDwgMCkge1xuXG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgJ21pbkxlbmd0aCcgbXVzdCBiZSBhIG5vbi1uZWdhdGl2ZSBpbnRlZ2VyLmApO1xuXG4gICAgICB9XG5cbiAgICAgIGlmIChkYXRhLmxlbmd0aCA8IHNjaGVtYS5taW5MZW5ndGgpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuXG4gICAgfVxuXG4gICAgaWYgKHNjaGVtYS5oYXNPd25Qcm9wZXJ0eSgncGF0dGVybicpICYmIChzY2hlbWEucGF0dGVybiAhPSBudWxsKSkge1xuXG4gICAgICBjb25zdCByZWd1bGFyRXhwcmVzc2lvbiA9IG5ldyBSZWdFeHAoc2NoZW1hLnBhdHRlcm4pO1xuXG4gICAgICBpZiAoIXJlZ3VsYXJFeHByZXNzaW9uLnRlc3QoZGF0YSkpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuXG4gICAgfVxuXG4gICAgcmV0dXJuIHRydWU7XG5cbiAgfVxuXG4gIHByb3RlY3RlZCB2YWxpZGF0ZU51bWJlcihkYXRhOiBhbnksIHNjaGVtYTogSlNPTlNjaGVtYSk6IGJvb2xlYW4ge1xuXG4gICAgaWYgKHR5cGVvZiBkYXRhICE9PSAnbnVtYmVyJykge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIGlmICgoc2NoZW1hLnR5cGUgPT09ICdpbnRlZ2VyJykgJiYgIU51bWJlci5pc0ludGVnZXIoZGF0YSkpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICBpZiAoc2NoZW1hLmhhc093blByb3BlcnR5KCdtdWx0aXBsZU9mJykgJiYgKHNjaGVtYS5tdWx0aXBsZU9mICE9IG51bGwpKSB7XG5cbiAgICAgIGlmIChzY2hlbWEubXVsdGlwbGVPZiA8PSAwKSB7XG5cbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGAnbXVsdGlwbGVPZicgbXVzdCBiZSBhIG51bWJlciBzdHJpY3RseSBncmVhdGVyIHRoYW4gMC5gKTtcblxuICAgICAgfVxuXG4gICAgICBpZiAoIU51bWJlci5pc0ludGVnZXIoZGF0YSAvIHNjaGVtYS5tdWx0aXBsZU9mKSkge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG5cbiAgICB9XG5cbiAgICBpZiAoc2NoZW1hLmhhc093blByb3BlcnR5KCdtYXhpbXVtJykgJiYgKHNjaGVtYS5tYXhpbXVtICE9IG51bGwpKSB7XG5cbiAgICAgIGlmIChkYXRhID4gc2NoZW1hLm1heGltdW0pIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuXG4gICAgfVxuXG4gICAgaWYgKHNjaGVtYS5oYXNPd25Qcm9wZXJ0eSgnZXhjbHVzaXZlTWF4aW11bScpICYmIChzY2hlbWEuZXhjbHVzaXZlTWF4aW11bSAhPSBudWxsKSkge1xuXG4gICAgICBpZiAoZGF0YSA+PSBzY2hlbWEuZXhjbHVzaXZlTWF4aW11bSkge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG5cbiAgICB9XG5cbiAgICBpZiAoc2NoZW1hLmhhc093blByb3BlcnR5KCdtaW5pbXVtJykgJiYgKHNjaGVtYS5taW5pbXVtICE9IG51bGwpKSB7XG5cbiAgICAgIGlmIChkYXRhIDwgc2NoZW1hLm1pbmltdW0pIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuXG4gICAgfVxuXG4gICAgaWYgKHNjaGVtYS5oYXNPd25Qcm9wZXJ0eSgnZXhjbHVzaXZlTWluaW11bScpICYmIChzY2hlbWEuZXhjbHVzaXZlTWluaW11bSAhPSBudWxsKSkge1xuXG4gICAgICBpZiAoZGF0YSA8PSBzY2hlbWEuZXhjbHVzaXZlTWluaW11bSkge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG5cbiAgICB9XG5cbiAgICByZXR1cm4gdHJ1ZTtcblxuICB9XG5cbn1cbiJdfQ==
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoianNvbi12YWxpZGF0b3IuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9Abmd4LXB3YS9sb2NhbC1zdG9yYWdlLyIsInNvdXJjZXMiOlsibGliL3ZhbGlkYXRpb24vanNvbi12YWxpZGF0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7Ozs7O0FBUzNDLE1BQU0sT0FBTyxhQUFhOzs7Ozs7Ozs7OztJQVl4QixRQUFRLENBQUMsSUFBUyxFQUFFLE1BQWtCO1FBRXBDLDRFQUE0RTtRQUM1RSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLGNBQWMsQ0FBQyxPQUFPLENBQUMsSUFBSSxNQUFNLENBQUMsS0FBSyxLQUFLLFNBQVMsQ0FBQztlQUNsRSxDQUFDLENBQUMsTUFBTSxDQUFDLGNBQWMsQ0FBQyxNQUFNLENBQUMsSUFBSSxNQUFNLENBQUMsSUFBSSxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxNQUFNLENBQUMsY0FBYyxDQUFDLE1BQU0sQ0FBQyxJQUFJLE1BQU0sQ0FBQyxJQUFJLElBQUksSUFBSSxDQUFDLENBQUM7ZUFDbkgsTUFBTSxDQUFDLElBQUksS0FBSyxPQUFPLElBQUksTUFBTSxDQUFDLElBQUksS0FBSyxRQUFRLENBQUM7ZUFDcEQsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxjQUFjLENBQUMsWUFBWSxDQUFDLElBQUksTUFBTSxDQUFDLFVBQVUsSUFBSSxJQUFJLENBQUMsSUFBSyxDQUFDLENBQUMsTUFBTSxDQUFDLGNBQWMsQ0FBQyxPQUFPLENBQUMsSUFBSSxNQUFNLENBQUMsS0FBSyxJQUFJLElBQUksQ0FBQyxFQUFFO1lBRXBJLE1BQU0sSUFBSSxLQUFLLENBQUMseUdBQXlHLENBQUMsQ0FBQztTQUU1SDtRQUVELElBQUksTUFBTSxDQUFDLGNBQWMsQ0FBQyxPQUFPLENBQUMsSUFBSSxNQUFNLENBQUMsS0FBSyxLQUFLLFNBQVMsSUFBSSxDQUFD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Y0FBYyxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sSUFBSSxJQUFJLENBQUMsRUFBRTtZQUVoRSxJQUFJLElBQUksR0FBRyxNQUFNLENBQUMsT0FBTyxFQUFFO2dCQUN6QixPQUFPLEtBQUssQ0FBQzthQUNkO1NBRUY7UUFFRCxJQUFJLE1BQU0sQ0FBQyxjQUFjLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxnQkFBZ0IsSUFBSSxJQUFJLENBQUMsRUFBRTtZQUVsRixJQUFJLElBQUksSUFBSSxNQUFNLENBQUMsZ0JBQWdCLEVBQUU7Z0JBQ25DLE9BQU8sS0FBSyxDQUFDO2FBQ2Q7U0FFRjtRQUVELE9BQU8sSUFBSSxDQUFDO0lBRWQsQ0FBQzs7O1lBclhGLFVBQVUsU0FBQztnQkFDVixVQUFVLEVBQUUsTUFBTTthQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEpTT05TY2hlbWEgfSBmcm9tICcuL2pzb24tc2NoZW1hJztcblxuLyoqXG4gKiBAdG9kbyBBZGQgb3RoZXIgSlNPTiBTY2hlbWEgdmFsaWRhdGlvbiBmZWF0dXJlc1xuICovXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290J1xufSlcbmV4cG9ydCBjbGFzcyBKU09OVmFsaWRhdG9yIHtcblxuICAvKipcbiAgICogVmFsaWRhdGUgYSBKU09OIGRhdGEgYWdhaW5zdCBhIEpTT04gU2NoZW1hXG4gICAqIEBwYXJhbSBkYXRhIEpTT04gZGF0YSB0byB2YWxpZGF0ZVxuICAgKiBAcGFyYW0gc2NoZW1hIFN1YnNldCBvZiBKU09OIFNjaGVtYS5cbiAgICogVHlwZXMgYXJlIGVuZm9yY2VkIHRvIHZhbGlkYXRlIGV2ZXJ5dGhpbmc6XG4gICAqIGVhY2ggdmFsdWUgTVVTVCBoYXZlICd0eXBlJyBvciAncHJvcGVydGllcycgb3IgJ2l0ZW1zJyBvciAnY29uc3QnIG9yICdlbnVtJy5cbiAgICogVGhlcmVmb3JlLCB1bmxpa2UgdGhlIHNwZWMsIGJvb2xlYW5zIGFyZSBub3QgYWxsb3dlZCBhcyBzY2hlbWFzLlxuICAgKiBOb3QgYWxsIHZhbGlkYXRpb24gZmVhdHVyZXMgYXJlIHN1cHBvcnRlZDoganVzdCBmb2xsb3cgdGhlIGludGVyZmFjZS5cbiAgICogQHJldHVybnMgSWYgZGF0YSBpcyB2YWxpZCA6IHRydWUsIGlmIGl0IGlzIGludmFsaWQgOiBmYWxzZSwgYW5kIHRocm93cyBpZiB0aGUgc2NoZW1hIGlzIGludmFsaWRcbiAgICovXG4gIHZhbGlkYXRlKGRhdGE6IGFueSwgc2NoZW1hOiBKU09OU2NoZW1hKTogYm9vbGVhbiB7XG5cbiAgICAvKiogQHRvZG8gV2hlbiBUUyAyLjgsIGV4cGxvcmUgaWYgdGhpcyBpcyBwb3NzaWJsZSB3aXRoIGNvbmRpdGlvbmFsIHR5cGVzICovXG4gICAgaWYgKCgoIShzY2hlbWEuaGFzT3duUHJvcGVydHkoJ2NvbnN0JykgJiYgc2NoZW1hLmNvbnN0ICE9PSB1bmRlZmluZWQpXG4gICAgJiYgIShzY2hlbWEuaGFzT3duUHJvcGVydHkoJ2VudW0nKSAmJiBzY2hlbWEuZW51bSAhPSBudWxsKSAmJiAhKHNjaGVtYS5oYXNPd25Qcm9wZXJ0eSgndHlwZScpICYmIHNjaGVtYS50eXBlICE9IG51bGwpKVxuICAgIHx8IHNjaGVtYS50eXBlID09PSAnYXJyYXknIHx8IHNjaGVtYS50eXBlID09PSAnb2JqZWN0JylcbiAgICAmJiAhKHNjaGVtYS5oYXNPd25Qcm9wZXJ0eSgncHJvcGVydGllcycpICYmIHNjaGVtYS5wcm9wZXJ0aWVzICE9IG51bGwpICAmJiAhKHNjaGVtYS5oYXNPd25Qcm9wZXJ0eSgnaXRlbXMnKSAmJiBzY2hlbWEuaXRlbXMgIT0gbnVsbCkpIHtcblxuICAgICAgdGhyb3cgbmV3IEVycm9yKGBFYWNoIHZhbHVlIG11c3QgaGF2ZSBhICd0eXBlJyBvciAncHJvcGVydGllcycgb3IgJ2l0ZW1zJyBvciAnY29uc3QnIG9yICdlbnVtJywgdG8gZW5mb3JjZSBzdHJpY3QgdHlwZXMuYCk7XG5cbiAgICB9XG5cbiAgICBpZiAoc2NoZW1hLmhhc093blByb3BlcnR5KCdjb25zdCcpICYmIHNjaGVtYS5jb25zdCAhPT0gdW5kZWZpbmVkICYmIChkYXRhICE9PSBzY2hlbWEuY29uc3QpKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgaWYgKCF0aGlzLnZhbGlkYXRlRW51bShkYXRhLCBzY2hlbWEpKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgaWYgKCF0aGlzLnZhbGlkYXRlVHlwZShkYXRhLCBzY2hlbWEpKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgaWYgKCF0aGlzLnZhbGlkYXRlSXRlbXMoZGF0YSwgc2NoZW1hKSkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIGlmICghdGhpcy52YWxpZGF0ZVByb3BlcnRpZXMoZGF0YSwgc2NoZW1hKSkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIGlmICghdGhpcy52YWxpZGF0ZVJlcXVpcmVkKGRhdGEsIHNjaGVtYSkpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICByZXR1cm4gdHJ1ZTtcblxuICB9XG5cbiAgcHJvdGVjdGVkIGlzT2JqZWN0Tm90TnVsbCh2YWx1ZTogYW55KTogYm9vbGVhbiB7XG5cbiAgICByZXR1cm4gKHZhbHVlICE9PSBudWxsKSAmJiAodHlwZW9mIHZhbHVlID09PSAnb2JqZWN0Jyk7XG5cbiAgfVxuXG4gIHByb3RlY3RlZCB2YWxpZGF0ZVByb3BlcnRpZXMoZGF0YTogeyBbazogc3RyaW5nXTogYW55OyB9LCBzY2hlbWE6IEpTT05TY2hlbWEpOiBib29sZWFuIHtcblxuICAgIGlmICghc2NoZW1hLmhhc093blByb3BlcnR5KCdwcm9wZXJ0aWVzJykgfHwgKHNjaGVtYS5wcm9wZXJ0aWVzID09IG51bGwpKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG5cbiAgICBpZiAoIXRoaXMuaXNPYmplY3ROb3ROdWxsKGRhdGEpKSB7XG5cbiAgICAgIHJldHVybiBmYWxzZTtcblxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENoZWNrIGlmIHRoZSBvYmplY3QgZG9lc24ndCBoYXZlIG1vcmUgcHJvcGVydGllcyB0aGFuIGV4cGVjdGVkXG4gICAgICogRXF1aXZhbGVudCBvZiBhZGRpdGlvbmFsUHJvcGVydGllczogZmFsc2VcbiAgICAgKi9cbiAgICBpZiAoT2JqZWN0LmtleXMoc2NoZW1hLnByb3BlcnRpZXMpLmxlbmd0aCAhPT0gT2JqZWN0LmtleXMoZGF0YSkubGVuZ3RoKSB7XG5cbiAgICAgIHJldHVybiBmYWxzZTtcblxuICAgIH1cblxuICAgIC8qIFJlY3Vyc2l2ZWx5IHZhbGlkYXRlIGFsbCBwcm9wZXJ0aWVzICovXG4gICAgZm9yIChjb25zdCBwcm9wZXJ0eSBpbiBzY2hlbWEucHJvcGVydGllcykge1xuXG4gICAgICBpZiAoc2NoZW1hLnByb3BlcnRpZXMuaGFzT3duUHJvcGVydHkocHJvcGVydHkpICYmIGRhdGEuaGFzT3duUHJvcGVydHkocHJvcGVydHkpKSB7XG5cbiAgICAgICAgaWYgKCF0aGlzLnZhbGlkYXRlKGRhdGFbcHJvcGVydHldLCBzY2hlbWEucHJvcGVydGllc1twcm9wZXJ0eV0pKSB7XG5cbiAgICAgICAgICByZXR1cm4gZmFsc2U7XG5cbiAgICAgICAgfVxuXG4gICAgICB9XG5cbiAgICB9XG5cbiAgICByZXR1cm4gdHJ1ZTtcblxuICB9XG5cbiAgcHJvdGVjdGVkIHZhbGlkYXRlUmVxdWlyZWQoZGF0YToge30sIHNjaGVtYTogSlNPTlNjaGVtYSk6IGJvb2xlYW4ge1xuXG4gICAgaWYgKCFzY2hlbWEuaGFzT3duUHJvcGVydHkoJ3JlcXVpcmVkJykgfHwgKHNjaGVtYS5yZXF1aXJlZCA9PSBudWxsKSkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgaWYgKCF0aGlzLmlzT2JqZWN0Tm90TnVsbChkYXRhKSkge1xuXG4gICAgICByZXR1cm4gZmFsc2U7XG5cbiAgICB9XG5cbiAgICBmb3IgKGNvbnN0IHJlcXVpcmVkUHJvcCBvZiBzY2hlbWEucmVxdWlyZWQpIHtcblxuICAgICAgLyogQ2hlY2tzIGlmIHRoZSBwcm9wZXJ0eSBpcyBwcmVzZW50IGluIHRoZSBzY2hlbWEgJ3Byb3BlcnRpZXMnICovXG4gICAgICBpZiAoIXNjaGVtYS5wcm9wZXJ0aWVzIHx8ICFzY2hlbWEucHJvcGVydGllcy5oYXNPd25Qcm9wZXJ0eShyZXF1aXJlZFByb3ApKSB7XG5cbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGAncmVxdWlyZWQnIHByb3BlcnRpZXMgbXVzdCBiZSBkZXNjcmliZWQgaW4gJ3Byb3BlcnRpZXMnIHRvby5gKTtcblxuICAgICAgfVxuXG4gICAgICAvKiBDaGVja3MgaWYgdGhlIHByb3BlcnR5IGlzIHByZXNlbnQgaW4gdGhlIGRhdGEgKi9cbiAgICAgIGlmICghZGF0YS5oYXNPd25Qcm9wZXJ0eShyZXF1aXJlZFByb3ApKSB7XG5cbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuXG4gICAgICB9XG5cbiAgICB9XG5cbiAgICByZXR1cm4gdHJ1ZTtcblxuICB9XG5cbiAgcHJvdGVjdGVkIHZhbGlkYXRlRW51bShkYXRhOiBhbnksIHNjaGVtYTogSlNPTlNjaGVtYSk6IGJvb2xlYW4ge1xuXG4gICAgaWYgKCFzY2hlbWEuaGFzT3duUHJvcGVydHkoJ2VudW0nKSB8fCAoc2NoZW1hLmVudW0gPT0gbnVsbCkpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIC8qKiBAdG9kbyBNb3ZlIHRvIEVTMjAxNiAuaW5jbHVkZXMoKSA/ICovXG4gICAgcmV0dXJuIChzY2hlbWEuZW51bS5pbmRleE9mKGRhdGEpICE9PSAtMSk7XG5cbiAgfVxuXG4gIHByb3RlY3RlZCB2YWxpZGF0ZVR5cGUoZGF0YTogYW55LCBzY2hlbWE6IEpTT05TY2hlbWEpOiBib29sZWFuIHtcblxuICAgIGlmICghc2NoZW1hLmhhc093blByb3BlcnR5KCd0eXBlJykgfHwgKHNjaGVtYS50eXBlID09IG51bGwpKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG5cbiAgICBzd2l0Y2ggKHNjaGVtYS50eXBlKSB7XG5cbiAgICAgIGNhc2UgJ251bGwnOlxuICAgICAgICByZXR1cm4gZGF0YSA9PT0gbnVsbDtcbiAgICAgIGNhc2UgJ3N0cmluZyc6XG4gICAgICAgIHJldHVybiB0aGlzLnZhbGlkYXRlU3RyaW5nKGRhdGEsIHNjaGVtYSk7XG4gICAgICBjYXNlICdudW1iZXInOlxuICAgICAgY2FzZSAnaW50ZWdlcic6XG4gICAgICAgIHJldHVybiB0aGlzLnZhbGlkYXRlTnVtYmVyKGRhdGEsIHNjaGVtYSk7XG4gICAgICBjYXNlICdib29sZWFuJzpcbiAgICAgICAgcmV0dXJuIHR5cGVvZiBkYXRhID09PSAnYm9vbGVhbic7XG4gICAgICBjYXNlICdvYmplY3QnOlxuICAgICAgICByZXR1cm4gdHlwZW9mIGRhdGEgPT09ICdvYmplY3QnO1xuICAgICAgY2FzZSAnYXJyYXknOlxuICAgICAgICByZXR1cm4gQXJyYXkuaXNBcnJheShkYXRhKTtcblxuICAgIH1cblxuICB9XG5cbiAgcHJvdGVjdGVkIHZhbGlkYXRlSXRlbXMoZGF0YTogYW55W10sIHNjaGVtYTogSlNPTlNjaGVtYSk6IGJvb2xlYW4ge1xuXG4gICAgaWYgKCFzY2hlbWEuaGFzT3duUHJvcGVydHkoJ2l0ZW1zJykgfHwgKHNjaGVtYS5pdGVtcyA9PSBudWxsKSkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgaWYgKCFBcnJheS5pc0FycmF5KGRhdGEpKSB7XG5cbiAgICAgIHJldHVybiBmYWxzZTtcblxuICAgIH1cblxuICAgIGlmIChzY2hlbWEuaGFzT3duUHJvcGVydHkoJ21heEl0ZW1zJykgJiYgKHNjaGVtYS5tYXhJdGVtcyAhPSBudWxsKSkge1xuXG4gICAgICBpZiAoIU51bWJlci5pc0ludGVnZXIoc2NoZW1hLm1heEl0ZW1zKSB8fCBzY2hlbWEubWF4SXRlbXMgPCAwKSB7XG5cbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGAnbWF4SXRlbXMnIG11c3QgYmUgYSBub24tbmVnYXRpdmUgaW50ZWdlci5gKTtcblxuICAgICAgfVxuXG4gICAgICBpZiAoZGF0YS5sZW5ndGggPiBzY2hlbWEubWF4SXRlbXMpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuXG4gICAgfVxuXG4gICAgaWYgKHNjaGVtYS5oYXNPd25Qcm9wZXJ0eSgnbWluSXRlbXMnKSAmJiAoc2NoZW1hLm1pbkl0ZW1zICE9IG51bGwpKSB7XG5cbiAgICAgIGlmICghTnVtYmVyLmlzSW50ZWdlcihzY2hlbWEubWluSXRlbXMpIHx8IHNjaGVtYS5taW5JdGVtcyA8IDApIHtcblxuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYCdtaW5JdGVtcycgbXVzdCBiZSBhIG5vbi1uZWdhdGl2ZSBpbnRlZ2VyLmApO1xuXG4gICAgICB9XG5cbiAgICAgIGlmIChkYXRhLmxlbmd0aCA8IHNjaGVtYS5taW5JdGVtcykge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG5cbiAgICB9XG5cbiAgICBpZiAoc2NoZW1hLmhhc093blByb3BlcnR5KCd1bmlxdWVJdGVtcycpICYmIChzY2hlbWEudW5pcXVlSXRlbXMgIT0gbnVsbCkpIHtcblxuICAgICAgaWYgKHNjaGVtYS51bmlxdWVJdGVtcykge1xuXG4gICAgICAgIGNvbnN0IGRhdGFTZXQgPSBuZXcgU2V0KGRhdGEpO1xuXG4gICAgICAgIGlmIChkYXRhLmxlbmd0aCAhPT0gZGF0YVNldC5zaXplKSB7XG4gICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG5cbiAgICAgIH1cblxuICAgIH1cblxuICAgIGlmIChBcnJheS5pc0FycmF5KHNjaGVtYS5pdGVtcykpIHtcblxuICAgICAgcmV0dXJuIHRoaXMudmFsaWRhdGVJdGVtc0xpc3QoZGF0YSwgc2NoZW1hKTtcblxuICAgIH1cblxuICAgIGZvciAoY29uc3QgdmFsdWUgb2YgZGF0YSkge1xuXG4gICAgICBpZiAoIXRoaXMudmFsaWRhdGUodmFsdWUsIHNjaGVtYS5pdGVtcykpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuXG4gICAgfVxuXG4gICAgcmV0dXJuIHRydWU7XG5cbiAgfVxuXG4gIHByb3RlY3RlZCB2YWxpZGF0ZUl0ZW1zTGlzdChkYXRhOiBhbnksIHNjaGVtYTogSlNPTlNjaGVtYSk6IGJvb2xlYW4ge1xuXG4gICAgY29uc3QgaXRlbXMgPSBzY2hlbWEuaXRlbXMgYXMgSlNPTlNjaGVtYVtdO1xuXG4gICAgaWYgKGRhdGEubGVuZ3RoICE9PSBpdGVtcy5sZW5ndGgpIHtcblxuICAgICAgcmV0dXJuIGZhbHNlO1xuXG4gICAgfVxuXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBpdGVtcy5sZW5ndGg7IGkgKz0gMSkge1xuXG4gICAgICBpZiAoIXRoaXMudmFsaWRhdGUoZGF0YVtpXSwgaXRlbXNbaV0pKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cblxuICAgIH1cblxuICAgIHJldHVybiB0cnVlO1xuXG4gIH1cblxuICBwcm90ZWN0ZWQgdmFsaWRhdGVTdHJpbmcoZGF0YTogYW55LCBzY2hlbWE6IEpTT05TY2hlbWEpOiBib29sZWFuIHtcblxuICAgIGlmICh0eXBlb2YgZGF0YSAhPT0gJ3N0cmluZycpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICBpZiAoc2NoZW1hLmhhc093blByb3BlcnR5KCdtYXhMZW5ndGgnKSAmJiAoc2NoZW1hLm1heExlbmd0aCAhPSBudWxsKSkge1xuXG4gICAgICBpZiAoIU51bWJlci5pc0ludGVnZXIoc2NoZW1hLm1heExlbmd0aCkgfHwgc2NoZW1hLm1heExlbmd0aCA8IDApIHtcblxuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYCdtYXhMZW5ndGgnIG11c3QgYmUgYSBub24tbmVnYXRpdmUgaW50ZWdlci5gKTtcblxuICAgICAgfVxuXG4gICAgICBpZiAoZGF0YS5sZW5ndGggPiBzY2hlbWEubWF4TGVuZ3RoKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cblxuICAgIH1cblxuICAgIGlmIChzY2hlbWEuaGFzT3duUHJvcGVydHkoJ21pbkxlbmd0aCcpICYmIChzY2hlbWEubWluTGVuZ3RoICE9IG51bGwpKSB7XG5cbiAgICAgIGlmICghTnVtYmVyLmlzSW50ZWdlcihzY2hlbWEubWluTGVuZ3RoKSB8fCBzY2hlbWEubWluTGVuZ3RoIDwgMCkge1xuXG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgJ21pbkxlbmd0aCcgbXVzdCBiZSBhIG5vbi1uZWdhdGl2ZSBpbnRlZ2VyLmApO1xuXG4gICAgICB9XG5cbiAgICAgIGlmIChkYXRhLmxlbmd0aCA8IHNjaGVtYS5taW5MZW5ndGgpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuXG4gICAgfVxuXG4gICAgaWYgKHNjaGVtYS5oYXNPd25Qcm9wZXJ0eSgncGF0dGVybicpICYmIChzY2hlbWEucGF0dGVybiAhPSBudWxsKSkge1xuXG4gICAgICBjb25zdCByZWd1bGFyRXhwcmVzc2lvbiA9IG5ldyBSZWdFeHAoc2NoZW1hLnBhdHRlcm4pO1xuXG4gICAgICBpZiAoIXJlZ3VsYXJFeHByZXNzaW9uLnRlc3QoZGF0YSkpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuXG4gICAgfVxuXG4gICAgcmV0dXJuIHRydWU7XG5cbiAgfVxuXG4gIHByb3RlY3RlZCB2YWxpZGF0ZU51bWJlcihkYXRhOiBhbnksIHNjaGVtYTogSlNPTlNjaGVtYSk6IGJvb2xlYW4ge1xuXG4gICAgaWYgKHR5cGVvZiBkYXRhICE9PSAnbnVtYmVyJykge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIGlmICgoc2NoZW1hLnR5cGUgPT09ICdpbnRlZ2VyJykgJiYgIU51bWJlci5pc0ludGVnZXIoZGF0YSkpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICBpZiAoc2NoZW1hLmhhc093blByb3BlcnR5KCdtdWx0aXBsZU9mJykgJiYgKHNjaGVtYS5tdWx0aXBsZU9mICE9IG51bGwpKSB7XG5cbiAgICAgIGlmIChzY2hlbWEubXVsdGlwbGVPZiA8PSAwKSB7XG5cbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGAnbXVsdGlwbGVPZicgbXVzdCBiZSBhIG51bWJlciBzdHJpY3RseSBncmVhdGVyIHRoYW4gMC5gKTtcblxuICAgICAgfVxuXG4gICAgICBpZiAoIU51bWJlci5pc0ludGVnZXIoZGF0YSAvIHNjaGVtYS5tdWx0aXBsZU9mKSkge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG5cbiAgICB9XG5cbiAgICBpZiAoc2NoZW1hLmhhc093blByb3BlcnR5KCdtYXhpbXVtJykgJiYgKHNjaGVtYS5tYXhpbXVtICE9IG51bGwpKSB7XG5cbiAgICAgIGlmIChkYXRhID4gc2NoZW1hLm1heGltdW0pIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuXG4gICAgfVxuXG4gICAgaWYgKHNjaGVtYS5oYXNPd25Qcm9wZXJ0eSgnZXhjbHVzaXZlTWF4aW11bScpICYmIChzY2hlbWEuZXhjbHVzaXZlTWF4aW11bSAhPSBudWxsKSkge1xuXG4gICAgICBpZiAoZGF0YSA+PSBzY2hlbWEuZXhjbHVzaXZlTWF4aW11bSkge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG5cbiAgICB9XG5cbiAgICBpZiAoc2NoZW1hLmhhc093blByb3BlcnR5KCdtaW5pbXVtJykgJiYgKHNjaGVtYS5taW5pbXVtICE9IG51bGwpKSB7XG5cbiAgICAgIGlmIChkYXRhIDwgc2NoZW1hLm1pbmltdW0pIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuXG4gICAgfVxuXG4gICAgaWYgKHNjaGVtYS5oYXNPd25Qcm9wZXJ0eSgnZXhjbHVzaXZlTWluaW11bScpICYmIChzY2hlbWEuZXhjbHVzaXZlTWluaW11bSAhPSBudWxsKSkge1xuXG4gICAgICBpZiAoZGF0YSA8PSBzY2hlbWEuZXhjbHVzaXZlTWluaW11bSkge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG5cbiAgICB9XG5cbiAgICByZXR1cm4gdHJ1ZTtcblxuICB9XG5cbn1cbiJdfQ==
/**
* @fileoverview added by tsickle
* @suppress {checkTypes} checked by tsc
* @suppress {checkTypes,extraRequire,uselessCode} checked by tsc
*/

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

export { localDatabaseFactory as ɵa } from './lib/databases/local-database';
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmd4LXB3YS1sb2NhbC1zdG9yYWdlLmpzIiwic291cmNlUm9vdCI6Im5nOi8vQG5neC1wd2EvbG9jYWwtc3RvcmFnZS8iLCJzb3VyY2VzIjpbIm5neC1wd2EtbG9jYWwtc3RvcmFnZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7O0FBSUEsb0tBQWMsY0FBYyxDQUFDO0FBRTdCLE9BQU8sRUFBQyxvQkFBb0IsSUFBSSxFQUFFLEVBQUMsTUFBTSxnQ0FBZ0MsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogR2VuZXJhdGVkIGJ1bmRsZSBpbmRleC4gRG8gbm90IGVkaXQuXG4gKi9cblxuZXhwb3J0ICogZnJvbSAnLi9wdWJsaWNfYXBpJztcblxuZXhwb3J0IHtsb2NhbERhdGFiYXNlRmFjdG9yeSBhcyDJtWF9IGZyb20gJy4vbGliL2RhdGFiYXNlcy9sb2NhbC1kYXRhYmFzZSc7Il19
/**
* @fileoverview added by tsickle
* @suppress {checkTypes} checked by tsc
* @suppress {checkTypes,extraRequire,uselessCode} checked by tsc
*/

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

export { localStorageProviders, LOCAL_STORAGE_PREFIX } from './lib/tokens';
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljX2FwaS5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BuZ3gtcHdhL2xvY2FsLXN0b3JhZ2UvIiwic291cmNlcyI6WyJwdWJsaWNfYXBpLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFLQSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDL0QsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFDdkUsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sdUNBQXVDLENBQUM7QUFDN0UsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFDeEUsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQ2hFLE9BQU8sRUFBb0IsWUFBWSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDbkUsT0FBTyxFQUFFLHFCQUFxQixFQUErQixvQkFBb0IsRUFBRSxNQUFNLGNBQWMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiBQdWJsaWMgQVBJIFN1cmZhY2Ugb2YgbG9jYWwtc3RvcmFnZVxuICovXG5cbmV4cG9ydCB7IEpTT05TY2hlbWEgfSBmcm9tICcuL2xpYi92YWxpZGF0aW9uL2pzb24tc2NoZW1hJztcbmV4cG9ydCB7IExvY2FsRGF0YWJhc2UgfSBmcm9tICcuL2xpYi9kYXRhYmFzZXMvbG9jYWwtZGF0YWJhc2UnO1xuZXhwb3J0IHsgSW5kZXhlZERCRGF0YWJhc2UgfSBmcm9tICcuL2xpYi9kYXRhYmFzZXMvaW5kZXhlZGRiLWRhdGFiYXNlJztcbmV4cG9ydCB7IExvY2FsU3RvcmFnZURhdGFiYXNlIH0gZnJvbSAnLi9saWIvZGF0YWJhc2VzL2xvY2Fsc3RvcmFnZS1kYXRhYmFzZSc7XG5leHBvcnQgeyBNb2NrTG9jYWxEYXRhYmFzZSB9IGZyb20gJy4vbGliL2RhdGFiYXNlcy9tb2NrLWxvY2FsLWRhdGFiYXNlJztcbmV4cG9ydCB7IEpTT05WYWxpZGF0b3IgfSBmcm9tICcuL2xpYi92YWxpZGF0aW9uL2pzb24tdmFsaWRhdG9yJztcbmV4cG9ydCB7IExTR2V0SXRlbU9wdGlvbnMsIExvY2FsU3RvcmFnZSB9IGZyb20gJy4vbGliL2xpYi5zZXJ2aWNlJztcbmV4cG9ydCB7IGxvY2FsU3RvcmFnZVByb3ZpZGVycywgTG9jYWxTdG9yYWdlUHJvdmlkZXJzQ29uZmlnLCBMT0NBTF9TVE9SQUdFX1BSRUZJWCB9IGZyb20gJy4vbGliL3Rva2Vucyc7XG4iXX0=
/**
* @fileoverview added by tsickle
* @suppress {checkTypes} checked by tsc
* @suppress {checkTypes,extraRequire,uselessCode} checked by tsc
*/

@@ -76,2 +76,9 @@ import { Injectable, Optional, Inject } from '@angular/core';

* the last one needing to be from a preexisting transaction
* @param key The item's key
* @param transactionParam Optional pre-existing transaction to use for the read request
* @returns The item's value if the key exists, null otherwise, wrapped in an RxJS Observable
*/
/**
* Internal method to factorize the getter for getItem and setItem,
* the last one needing to be from a preexisting transaction
* @template T

@@ -92,8 +99,10 @@ * @param {?} key The item's key

var _this = this;
var /** @type {?} */ transaction$ = transactionParam ? of(transactionParam) : this.transaction();
/** @type {?} */
var transaction$ = transactionParam ? of(transactionParam) : this.transaction();
return transaction$.pipe(map(function (transaction) { return transaction.get(key); }), mergeMap(function (request) {
/* Listening to the success event, and passing the item value if found, null otherwise */
var /** @type {?} */ success = (/** @type {?} */ (fromEvent(request, 'success'))).pipe(map(function (event) { return (/** @type {?} */ (event.target)).result; }), map(function (result) { return result && (_this.dataPath in result) ? (/** @type {?} */ (result[_this.dataPath])) : null; }));
/** @type {?} */
var success = ((/** @type {?} */ (fromEvent(request, 'success')))).pipe(map(function (event) { return ((/** @type {?} */ (event.target))).result; }), map(function (result) { return result && (_this.dataPath in result) ? ((/** @type {?} */ (result[_this.dataPath]))) : null; }));
/* Merging success and errors events and autoclosing the observable */
return (/** @type {?} */ (race(success, _this.toErrorObservable(request, "getter"))))
return ((/** @type {?} */ (race(success, _this.toErrorObservable(request, "getter")))))
.pipe(first());

@@ -131,10 +140,15 @@ }), first());

/* Transaction must be the same for read and write, to avoid concurrency issues */
var /** @type {?} */ transaction$ = this.transaction('readwrite');
var /** @type {?} */ transaction;
/** @type {?} */
var transaction$ = this.transaction('readwrite');
/** @type {?} */
var transaction;
/* Opening a transaction */
return transaction$.pipe(tap(function (value) {
transaction = value;
}), /* Check if the key already exists or not */
}),
/* Check if the key already exists or not */
mergeMap(function () { return _this.getItemFromTransaction(key, transaction); }), map(function (existingData) { return (existingData == null) ? 'add' : 'put'; }), mergeMap(function (method) {
var /** @type {?} */ request;
var _a, _b;
/** @type {?} */
var request;
/* Adding or updating local storage, based on previous checking */

@@ -151,5 +165,4 @@ switch (method) {

/* Merging success (passing true) and error events and autoclosing the observable */
return (/** @type {?} */ (race(_this.toSuccessObservable(request), _this.toErrorObservable(request, "setter"))))
return ((/** @type {?} */ (race(_this.toSuccessObservable(request), _this.toErrorObservable(request, "setter")))))
.pipe(first());
var _a, _b;
}), first());

@@ -185,5 +198,6 @@ };

/* Deleting the item in local storage */
var /** @type {?} */ request = transaction.delete(key);
/** @type {?} */
var request = transaction.delete(key);
/* Merging success (passing true) and error events and autoclosing the observable */
return (/** @type {?} */ (race(_this.toSuccessObservable(request), _this.toErrorObservable(request, "remover"))))
return ((/** @type {?} */ (race(_this.toSuccessObservable(request), _this.toErrorObservable(request, "remover")))))
.pipe(first());

@@ -217,5 +231,6 @@ }));

/* Deleting all items from local storage */
var /** @type {?} */ request = transaction.clear();
/** @type {?} */
var request = transaction.clear();
/* Merging success (passing true) and error events and autoclosing the observable */
return (/** @type {?} */ (race(_this.toSuccessObservable(request), _this.toErrorObservable(request, "clearer"))))
return ((/** @type {?} */ (race(_this.toSuccessObservable(request), _this.toErrorObservable(request, "clearer")))))
.pipe(first());

@@ -240,3 +255,4 @@ }), first());

if (prefix === void 0) { prefix = null; }
var /** @type {?} */ request;
/** @type {?} */
var request;
/* Connecting to IndexedDB */

@@ -246,3 +262,3 @@ try {

}
catch (/** @type {?} */ error) {
catch (error) {
/* Fallback storage if IndexedDb connection is failing */

@@ -253,7 +269,8 @@ this.setFallback(prefix);

/* Listening the event fired on first connection, creating the object store for local storage */
(/** @type {?} */ (fromEvent(request, 'upgradeneeded')))
((/** @type {?} */ (fromEvent(request, 'upgradeneeded'))))
.pipe(first())
.subscribe(function (event) {
/* Getting the database connection */
var /** @type {?} */ database = /** @type {?} */ ((/** @type {?} */ (event.target)).result);
/** @type {?} */
var database = (/** @type {?} */ (((/** @type {?} */ (event.target))).result));
/* Checking if the object store already exists, to avoid error */

@@ -266,13 +283,12 @@ if (!database.objectStoreNames.contains(_this.objectStoreName)) {

/* Listening the success event and converting to an RxJS Observable */
var /** @type {?} */ success = /** @type {?} */ (fromEvent(request, 'success'));
/** @type {?} */
var success = (/** @type {?} */ (fromEvent(request, 'success')));
/* Merging success and errors events */
(/** @type {?} */ (race(success, this.toErrorObservable(request, "connection"))))
((/** @type {?} */ (race(success, this.toErrorObservable(request, "connection")))))
.pipe(first())
.subscribe(function (event) {
/* Storing the database connection for further access */
/* Storing the database connection for further access */
_this.database.next(/** @type {?} */ ((/** @type {?} */ (event.target)).result));
_this.database.next((/** @type {?} */ (((/** @type {?} */ (event.target))).result)));
}, function () {
/* Fallback storage if IndexedDb connection is failing */
/* Fallback storage if IndexedDb connection is failing */
_this.setFallback(prefix);

@@ -320,3 +336,3 @@ });

/* Transforming a IndexedDB success event in an RxJS Observable with true value */
return (/** @type {?} */ (fromEvent(request, 'success')))
return ((/** @type {?} */ (fromEvent(request, 'success'))))
.pipe(map(function () { return true; }));

@@ -345,3 +361,3 @@ };

/* Transforming a IndexedDB error event in an RxJS ErrorObservable */
return (/** @type {?} */ (fromEvent(request, 'error')))
return ((/** @type {?} */ (fromEvent(request, 'error'))))
.pipe(mergeMap(function () { return throwError(new Error("IndexedDB " + error + " issue : " + ((/** @type {?} */ (request.error))).message + ".")); }));

@@ -373,3 +389,3 @@ };

export { IndexedDBDatabase };
function IndexedDBDatabase_tsickle_Closure_declarations() {
if (false) {
/**

@@ -410,3 +426,2 @@ * IndexedDB database name for local storage

}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXhlZGRiLWRhdGFiYXNlLmpzIiwic291cmNlUm9vdCI6Im5nOi8vQG5neC1wd2EvbG9jYWwtc3RvcmFnZS8iLCJzb3VyY2VzIjpbImxpYi9kYXRhYmFzZXMvaW5kZXhlZGRiLWRhdGFiYXNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7QUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDN0QsT0FBTyxFQUFjLGFBQWEsRUFBRSxTQUFTLEVBQUUsRUFBRSxFQUFFLFVBQVUsRUFBRSxJQUFJLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDbEYsT0FBTyxFQUFFLEdBQUcsRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRzNELE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQy9ELE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLFdBQVcsQ0FBQzs7OztJQWtDL0M7O09BRUc7SUFDSCwyQkFBZ0UsTUFBNEI7OENBQUE7UUFBNUIsV0FBTSxHQUFOLE1BQU0sQ0FBc0I7Ozs7c0JBM0J6RSxXQUFXOzs7OytCQUlPLGNBQWM7Ozs7dUJBSXRCLEtBQUs7Ozs7d0JBSUosT0FBTzs7Ozs7d0JBVU0sSUFBSTtRQU83QyxFQUFFLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO1lBRVgsSUFBSSxDQUFDLE1BQU0sR0FBTSxNQUFNLFNBQUksSUFBSSxDQUFDLE1BQVEsQ0FBQztTQUUxQzs7UUFHRCxJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksYUFBYSxFQUFlLENBQUM7O1FBR2pELElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUM7S0FFdEI7SUFFRDs7OztPQUlHOzs7Ozs7O0lBQ0gsbUNBQU87Ozs7OztJQUFQLFVBQWlCLEdBQVc7O1FBRzFCLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FB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V2EsaUJBQWlCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSwgT3B0aW9uYWwsIEluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgUmVwbGF5U3ViamVjdCwgZnJvbUV2ZW50LCBvZiwgdGhyb3dFcnJvciwgcmFjZSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgbWFwLCBtZXJnZU1hcCwgZmlyc3QsIHRhcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuaW1wb3J0IHsgTG9jYWxEYXRhYmFzZSB9IGZyb20gJy4vbG9jYWwtZGF0YWJhc2UnO1xuaW1wb3J0IHsgTG9jYWxTdG9yYWdlRGF0YWJhc2UgfSBmcm9tICcuL2xvY2Fsc3RvcmFnZS1kYXRhYmFzZSc7XG5pbXBvcnQgeyBMT0NBTF9TVE9SQUdFX1BSRUZJWCB9IGZyb20gJy4uL3Rva2Vucyc7XG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXG59KVxuZXhwb3J0IGNsYXNzIEluZGV4ZWREQkRhdGFiYXNlIGltcGxlbWVudHMgTG9jYWxEYXRhYmFzZSB7XG5cbiAgLyoqXG4gICAqIEluZGV4ZWREQiBkYXRhYmFzZSBuYW1lIGZvciBsb2NhbCBzdG9yYWdlXG4gICAqL1xuICBwcm90ZWN0ZWQgZGJOYW1lID0gJ25nU3RvcmFnZSc7XG4gIC8qKlxuICAgKiBJbmRleGVkREIgb2JqZWN0IHN0b3JlIG5hbWUgZm9yIGxvY2FsIHN0b3JhZ2VcbiAgICovXG4gIHByb3RlY3RlZCByZWFkb25seSBvYmplY3RTdG9yZU5hbWUgPSAnbG9jYWxTdG9yYWdlJztcbiAgLyoqXG4gICAqIEluZGV4ZWREQiBrZXkgcGF0aCBuYW1lIGZvciBsb2NhbCBzdG9yYWdlICh3aGVyZSBhbiBpdGVtJ3Mga2V5IHdpbGwgYmUgc3RvcmVkKVxuICAgKi9cbiAgcHJvdGVjdGVkIHJlYWRvbmx5IGtleVBhdGggPSAna2V5JztcbiAgLyoqXG4gICAqIEluZGV4ZWREQiBkYXRhIHBhdGggbmFtZSBmb3IgbG9jYWwgc3RvcmFnZSAod2hlcmUgaXRlbXMnIHZhbHVlIHdpbGwgYmUgc3RvcmVkKVxuICAgKi9cbiAgcHJvdGVjdGVkIHJlYWRvbmx5IGRhdGFQYXRoID0gJ3ZhbHVlJztcbiAgLyoqXG4gICAqIEluZGV4ZWREQiBkYXRhYmFzZSBjb25uZWN0aW9uLCB3cmFwcGVkIGluIGEgUnhKUyBSZXBsYXlTdWJqZWN0IHRvIGJlIGFibGUgdG8gYWNjZXNzIHRoZSBjb25uZWN0aW9uXG4gICAqIGV2ZW4gYWZ0ZXIgdGhlIGNvbm5lY3Rpb24gc3VjY2VzcyBldmVudCBoYXBwZW5lZFxuICAgKi9cbiAgcHJvdGVjdGVkIGRhdGFiYXNlOiBSZXBsYXlTdWJqZWN0PElEQkRhdGFiYXNlPjtcbiAgLyoqXG4gICAqIEluZGV4ZWREQiBpcyBhdmFpbGFibGUgYnV0IGZhaWxpbmcgaW4gc29tZSBzY2VuYXJpb3MgKEZpcmVmb3ggcHJpdmF0ZSBtb2RlLCBTYWZhcmkgY3Jvc3Mtb3JpZ2luIGlmcmFtZXMpLFxuICAgKiBzbyBhIGZhbGxiYWNrIGNhbiBiZSBuZWVkZWQuXG4gICAqL1xuICBwcm90ZWN0ZWQgZmFsbGJhY2s6IExvY2FsRGF0YWJhc2UgfCBudWxsID0gbnVsbDtcblxuICAvKipcbiAgICogQ29ubmVjdHMgdG8gSW5kZXhlZERCXG4gICAqL1xuICBjb25zdHJ1Y3RvcihAT3B0aW9uYWwoKSBASW5qZWN0KExPQ0FMX1NUT1JBR0VfUFJFRklYKSBwcm90ZWN0ZWQgcHJlZml4OiBzdHJpbmcgfCBudWxsID0gbnVsbCkge1xuXG4gICAgaWYgKHByZWZpeCkge1xuXG4gICAgICB0aGlzLmRiTmFtZSA9IGAke3ByZWZpeH1fJHt0aGlzLmRiTmFtZX1gO1xuXG4gICAgfVxuXG4gICAgLyogQ3JlYXRpbmcgdGhlIFJ4SlMgUmVwbGF5U3ViamVjdCAqL1xuICAgIHRoaXMuZGF0YWJhc2UgPSBuZXcgUmVwbGF5U3ViamVjdDxJREJEYXRhYmFzZT4oKTtcblxuICAgIC8qIENvbm5lY3RpbmcgdG8gSW5kZXhlZERCICovXG4gICAgdGhpcy5jb25uZWN0KHByZWZpeCk7XG5cbiAgfVxuXG4gIC8qKlxuICAgKiBHZXRzIGFuIGl0ZW0gdmFsdWUgaW4gbG9jYWwgc3RvcmFnZVxuICAgKiBAcGFyYW0ga2V5IFRoZSBpdGVtJ3Mga2V5XG4gICAqIEByZXR1cm5zIFRoZSBpdGVtJ3MgdmFsdWUgaWYgdGhlIGtleSBleGlzdHMsIG51bGwgb3RoZXJ3aXNlLCB3cmFwcGVkIGluIGFuIFJ4SlMgT2JzZXJ2YWJsZVxuICAgKi9cbiAgZ2V0SXRlbTxUID0gYW55PihrZXk6IHN0cmluZyk6IE9ic2VydmFibGU8VMKgfCBudWxsPiB7XG5cbiAgICAvKiBGYWxsYmFjayBzdG9yYWdlIGlmIHNldCAqL1xuICAgIGlmICh0aGlzLmZhbGxiYWNrKSB7XG4gICAgICByZXR1cm4gdGhpcy5mYWxsYmFjay5nZXRJdGVtPFQ+KGtleSk7XG4gICAgfVxuXG4gICAgLyogT3BlbmluZyBhIHRyYXNhY3Rpb24gYW5kIHJlcXVlc3RpbmcgdGhlIGl0ZW0gaW4gbG9jYWwgc3RvcmFnZSAqL1xuICAgIHJldHVybiB0aGlzLmdldEl0ZW1Gcm9tVHJhbnNhY3Rpb248VD4oa2V5KTtcblxuICB9XG5cbiAgLyoqXG4gICAqIEludGVybmFsIG1ldGhvZCB0byBmYWN0b3JpemUgdGhlIGdldHRlciBmb3IgZ2V0SXRlbSBhbmQgc2V0SXRlbSxcbiAgICogdGhlIGxhc3Qgb25lIG5lZWRpbmcgdG8gYmUgZnJvbSBhIHByZWV4aXN0aW5nIHRyYW5zYWN0aW9uXG4gICAqIEBwYXJhbSBrZXkgVGhlIGl0ZW0ncyBrZXlcbiAgICogQHBhcmFtIHRyYW5zYWN0aW9uUGFyYW0gT3B0aW9uYWwgcHJlLWV4aXN0aW5nIHRyYW5zYWN0aW9uIHRvIHVzZSBmb3IgdGhlIHJlYWQgcmVxdWVzdFxuICAgKiBAcmV0dXJucyBUaGUgaXRlbSdzIHZhbHVlIGlmIHRoZSBrZXkgZXhpc3RzLCBudWxsIG90aGVyd2lzZSwgd3JhcHBlZCBpbiBhbiBSeEpTIE9ic2VydmFibGVcbiAgICovXG4gIHByaXZhdGUgZ2V0SXRlbUZyb21UcmFuc2FjdGlvbjxUID0gYW55PihrZXk6IHN0cmluZywgdHJhbnNhY3Rpb25QYXJhbT86IElEQk9iamVjdFN0b3JlKTogT2JzZXJ2YWJsZTxUwqB8IG51bGw+IHtcblxuICAgIGNvbnN0IHRyYW5zYWN0aW9uJCA9IHRyYW5zYWN0aW9uUGFyYW0gPyBvZih0cmFuc2FjdGlvblBhcmFtKSA6IHRoaXMudHJhbnNhY3Rpb24oKTtcblxuICAgIHJldHVybiB0cmFuc2FjdGlvbiQucGlwZShcbiAgICAgIG1hcCgodHJhbnNhY3Rpb24pID0+IHRyYW5zYWN0aW9uLmdldChrZXkpKSxcbiAgICAgIG1lcmdlTWFwKChyZXF1ZXN0KSA9PiB7XG5cbiAgICAgICAgLyogTGlzdGVuaW5nIHRvIHRoZSBzdWNjZXNzIGV2ZW50LCBhbmQgcGFzc2luZyB0aGUgaXRlbSB2YWx1ZSBpZiBmb3VuZCwgbnVsbCBvdGhlcndpc2UgKi9cbiAgICAgICAgY29uc3Qgc3VjY2VzcyA9IChmcm9tRXZlbnQocmVxdWVzdCwgJ3N1Y2Nlc3MnKSBhcyBPYnNlcnZhYmxlPEV2ZW50PikucGlwZShcbiAgICAgICAgICBtYXAoKGV2ZW50KSA9PiAoZXZlbnQudGFyZ2V0IGFzIElEQlJlcXVlc3QpLnJlc3VsdCksXG4gICAgICAgICAgbWFwKChyZXN1bHQpID0+IHJlc3VsdCAmJiAodGhpcy5kYXRhUGF0aCBpbiByZXN1bHQpID8gKHJlc3VsdFt0aGlzLmRhdGFQYXRoXSBhcyBUKSA6IG51bGwpXG4gICAgICAgICk7XG5cbiAgICAgICAgLyogTWVyZ2luZyBzdWNjZXNzIGFuZCBlcnJvcnMgZXZlbnRzIGFuZCBhdXRvY2xvc2luZyB0aGUgb2JzZXJ2YWJsZSAqL1xuICAgICAgICByZXR1cm4gKHJhY2Uoc3VjY2VzcywgdGhpcy50b0Vycm9yT2JzZXJ2YWJsZShyZXF1ZXN0LCBgZ2V0dGVyYCkpIGFzIE9ic2VydmFibGU8VCB8IG51bGw+KVxuICAgICAgICAgIC5waXBlKGZpcnN0KCkpO1xuICAgICAgfSksXG4gICAgICBmaXJzdCgpXG4gICAgKTtcblxuICB9XG5cbiAgLyoqXG4gICAqIFNldHMgYW4gaXRlbSBpbiBsb2NhbCBzdG9yYWdlXG4gICAqIEBwYXJhbSBrZXkgVGhlIGl0ZW0ncyBrZXlcbiAgICogQHBhcmFtIGRhdGEgVGhlIGl0ZW0ncyB2YWx1ZSwgbXVzdCBOT1QgYmUgbnVsbCBvciB1bmRlZmluZWRcbiAgICogQHJldHVybnMgQW4gUnhKUyBPYnNlcnZhYmxlIHRvIHdhaXQgdGhlIGVuZCBvZiB0aGUgb3BlcmF0aW9uXG4gICAqL1xuICBzZXRJdGVtKGtleTogc3RyaW5nLCBkYXRhOiBhbnkpOiBPYnNlcnZhYmxlPGJvb2xlYW4+IHtcblxuICAgIC8qIEZhbGxiYWNrIHN0b3JhZ2UgaWYgc2V0ICovXG4gICAgaWYgKHRoaXMuZmFsbGJhY2spIHtcbiAgICAgIHJldHVybiB0aGlzLmZhbGxiYWNrLnNldEl0ZW0oa2V5LCBkYXRhKTtcbiAgICB9XG5cbiAgICAvKiBTdG9yaW5nIG51bGwgaXMgbm90IGNvcnJlY3RseSBzdXBwb3J0ZWQgYnkgSW5kZXhlZERCIGFuZCB1bm5lY2Vzc2FyeSBoZXJlICovXG4gICAgaWYgKGRhdGEgPT0gbnVsbCkge1xuXG4gICAgICByZXR1cm4gb2YodHJ1ZSk7XG5cbiAgICB9XG5cbiAgICAvKiBUcmFuc2FjdGlvbiBtdXN0IGJlIHRoZSBzYW1lIGZvciByZWFkIGFuZCB3cml0ZSwgdG8gYXZvaWQgY29uY3VycmVuY3kgaXNzdWVzICovXG4gICAgY29uc3QgdHJhbnNhY3Rpb24kID0gdGhpcy50cmFuc2FjdGlvbigncmVhZHdyaXRlJyk7XG4gICAgbGV0IHRyYW5zYWN0aW9uOiBJREJPYmplY3RTdG9yZTtcblxuICAgICAgICAvKiBPcGVuaW5nIGEgdHJhbnNhY3Rpb24gKi9cbiAgICAgICAgcmV0dXJuIHRyYW5zYWN0aW9uJC5waXBlKFxuICAgICAgICAgIHRhcCgodmFsdWUpID0+IHtcbiAgICAgICAgICAgIHRyYW5zYWN0aW9uID0gdmFsdWU7XG4gICAgICAgICAgfSksXG4gICAgICAgICAgLyogQ2hlY2sgaWYgdGhlIGtleSBhbHJlYWR5IGV4aXN0cyBvciBub3QgKi9cbiAgICAgICAgICBtZXJnZU1hcCgoKSA9PiB0aGlzLmdldEl0ZW1Gcm9tVHJhbnNhY3Rpb24oa2V5LCB0cmFuc2FjdGlvbikpLFxuICAgICAgICAgIG1hcCgoZXhpc3RpbmdEYXRhKSA9PiAoZXhpc3RpbmdEYXRhID09IG51bGwpID8gJ2FkZCcgOiAncHV0JyksXG4gICAgICAgICAgbWVyZ2VNYXAoKG1ldGhvZCkgPT4ge1xuXG4gICAgICAgICAgICBsZXQgcmVxdWVzdDogSURCUmVxdWVzdDtcblxuICAgICAgICAgICAgLyogQWRkaW5nIG9yIHVwZGF0aW5nIGxvY2FsIHN0b3JhZ2UsIGJhc2VkIG9uIHByZXZpb3VzIGNoZWNraW5nICovXG4gICAgICAgICAgICBzd2l0Y2ggKG1ldGhvZCkge1xuICAgICAgICAgICAgICBjYXNlICdhZGQnOlxuICAgICAgICAgICAgICAgIHJlcXVlc3QgPSB0cmFuc2FjdGlvbi5hZGQoeyBbdGhpcy5kYXRhUGF0aF06IGRhdGEgfSwga2V5KTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgY2FzZSAncHV0JzpcbiAgICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICByZXF1ZXN0ID0gdHJhbnNhY3Rpb24ucHV0KHsgW3RoaXMuZGF0YVBhdGhdOiBkYXRhIH0sIGtleSk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC8qIE1lcmdpbmcgc3VjY2VzcyAocGFzc2luZyB0cnVlKSBhbmQgZXJyb3IgZXZlbnRzIGFuZCBhdXRvY2xvc2luZyB0aGUgb2JzZXJ2YWJsZSAqL1xuICAgICAgICAgICAgcmV0dXJuIChyYWNlKHRoaXMudG9TdWNjZXNzT2JzZXJ2YWJsZShyZXF1ZXN0KSwgdGhpcy50b0Vycm9yT2JzZXJ2YWJsZShyZXF1ZXN0LCBgc2V0dGVyYCkpIGFzIE9ic2VydmFibGU8Ym9vbGVhbj4pXG4gICAgICAgICAgICAgIC5waXBlKGZpcnN0KCkpO1xuXG4gICAgICAgIH0pLFxuICAgICAgICBmaXJzdCgpXG4gICAgICApO1xuXG4gIH1cblxuICAvKipcbiAgICogRGVsZXRlcyBhbiBpdGVtIGluIGxvY2FsIHN0b3JhZ2VcbiAgICogQHBhcmFtIGtleSBUaGUgaXRlbSdzIGtleVxuICAgKiBAcmV0dXJucyBBbiBSeEpTIE9ic2VydmFibGUgdG8gd2FpdCB0aGUgZW5kIG9mIHRoZSBvcGVyYXRpb25cbiAgICovXG4gIHJlbW92ZUl0ZW0oa2V5OiBzdHJpbmcpOiBPYnNlcnZhYmxlPGJvb2xlYW4+IHtcblxuICAgIC8qIEZhbGxiYWNrIHN0b3JhZ2UgaWYgc2V0ICovXG4gICAgaWYgKHRoaXMuZmFsbGJhY2spIHtcbiAgICAgIHJldHVybiB0aGlzLmZhbGxiYWNrLnJlbW92ZUl0ZW0oa2V5KTtcbiAgICB9XG5cbiAgICAvKiBPcGVuaW5nIGEgdHJhbnNhY3Rpb24gYW5kIGNoZWNraW5nIGlmIHRoZSBpdGVtIGV4aXN0cyBpbiBsb2NhbCBzdG9yYWdlICovXG4gICAgcmV0dXJuIHRoaXMuZ2V0SXRlbShrZXkpLnBpcGUoXG4gICAgICBtZXJnZU1hcCgoZGF0YSkgPT4ge1xuXG4gICAgICAgIC8qIElmIHRoZSBpdGVtIGV4aXN0cyBpbiBsb2NhbCBzdG9yYWdlICovXG4gICAgICAgIGlmIChkYXRhICE9IG51bGwpIHtcblxuICAgICAgICAgIC8qIE9wZW5pbmcgYSB0cmFuc2FjdGlvbiAqL1xuICAgICAgICAgIHJldHVybiB0aGlzLnRyYW5zYWN0aW9uKCdyZWFkd3JpdGUnKS5waXBlKG1lcmdlTWFwKCh0cmFuc2FjdGlvbikgPT4ge1xuXG4gICAgICAgICAgICAvKiBEZWxldGluZyB0aGUgaXRlbSBpbiBsb2NhbCBzdG9yYWdlICovXG4gICAgICAgICAgICBjb25zdCByZXF1ZXN0ID0gdHJhbnNhY3Rpb24uZGVsZXRlKGtleSk7XG5cbiAgICAgICAgICAgIC8qIE1lcmdpbmcgc3VjY2VzcyAocGFzc2luZyB0cnVlKSBhbmQgZXJyb3IgZXZlbnRzIGFuZCBhdXRvY2xvc2luZyB0aGUgb2JzZXJ2YWJsZSAqL1xuICAgICAgICAgICAgcmV0dXJuIChyYWNlKHRoaXMudG9TdWNjZXNzT2JzZXJ2YWJsZShyZXF1ZXN0KSwgdGhpcy50b0Vycm9yT2JzZXJ2YWJsZShyZXF1ZXN0LCBgcmVtb3ZlcmApKSBhcyBPYnNlcnZhYmxlPGJvb2xlYW4+KVxuICAgICAgICAgICAgICAucGlwZShmaXJzdCgpKTtcblxuICAgICAgICAgIH0pKTtcblxuICAgICAgICB9XG5cbiAgICAgICAgLyogUGFzc2luZyB0cnVlIGlmIHRoZSBpdGVtIGRvZXMgbm90IGV4aXN0IGluIGxvY2FsIHN0b3JhZ2UgKi9cbiAgICAgICAgcmV0dXJuIG9mKHRydWUpO1xuXG4gICAgICB9KSxcbiAgICAgIGZpcnN0KClcbiAgICApO1xuXG4gIH1cblxuICAvKipcbiAgICogRGVsZXRlcyBhbGwgaXRlbXMgZnJvbSBsb2NhbCBzdG9yYWdlXG4gICAqIEByZXR1cm5zIEFuIFJ4SlMgT2JzZXJ2YWJsZSB0byB3YWl0IHRoZSBlbmQgb2YgdGhlIG9wZXJhdGlvblxuICAgKi9cbiAgY2xlYXIoKTogT2JzZXJ2YWJsZTxib29sZWFuPiB7XG5cbiAgICAvKiBGYWxsYmFjayBzdG9yYWdlIGlmIHNldCAqL1xuICAgIGlmICh0aGlzLmZhbGxiYWNrKSB7XG4gICAgICByZXR1cm4gdGhpcy5mYWxsYmFjay5jbGVhcigpO1xuICAgIH1cblxuICAgIC8qIE9wZW5pbmcgYSB0cmFuc2FjdGlvbiAqL1xuICAgIHJldHVybiB0aGlzLnRyYW5zYWN0aW9uKCdyZWFkd3JpdGUnKS5waXBlKFxuICAgICAgbWVyZ2VNYXAoKHRyYW5zYWN0aW9uKSA9PiB7XG5cbiAgICAgICAgLyogRGVsZXRpbmcgYWxsIGl0ZW1zIGZyb20gbG9jYWwgc3RvcmFnZSAqL1xuICAgICAgICBjb25zdCByZXF1ZXN0ID0gdHJhbnNhY3Rpb24uY2xlYXIoKTtcblxuICAgICAgICAvKiBNZXJnaW5nIHN1Y2Nlc3MgKHBhc3NpbmcgdHJ1ZSkgYW5kIGVycm9yIGV2ZW50cyBhbmQgYXV0b2Nsb3NpbmcgdGhlIG9ic2VydmFibGUgKi9cbiAgICAgICAgcmV0dXJuIChyYWNlKHRoaXMudG9TdWNjZXNzT2JzZXJ2YWJsZShyZXF1ZXN0KSwgdGhpcy50b0Vycm9yT2JzZXJ2YWJsZShyZXF1ZXN0LCBgY2xlYXJlcmApKSBhcyBPYnNlcnZhYmxlPGJvb2xlYW4+KVxuICAgICAgICAgIC5waXBlKGZpcnN0KCkpO1xuXG4gICAgICB9KSxcbiAgICAgIGZpcnN0KClcbiAgICApO1xuXG4gIH1cblxuICAvKipcbiAgICogQ29ubmVjdHMgdG8gSW5kZXhlZERCIGFuZCBjcmVhdGVzIHRoZSBvYmplY3Qgc3RvcmUgb24gZmlyc3QgdGltZVxuICAgKi9cbiAgcHJvdGVjdGVkIGNvbm5lY3QocHJlZml4OiBzdHJpbmcgfCBudWxsID0gbnVsbCk6IHZvaWQge1xuXG4gICAgbGV0IHJlcXVlc3Q6IElEQk9wZW5EQlJlcXVlc3Q7XG5cbiAgICAvKiBDb25uZWN0aW5nIHRvIEluZGV4ZWREQiAqL1xuICAgIHRyeSB7XG5cbiAgICAgIHJlcXVlc3QgPSBpbmRleGVkREIub3Blbih0aGlzLmRiTmFtZSk7XG5cbiAgICB9wqBjYXRjaCAoZXJyb3IpIHtcblxuICAgICAgLyogRmFsbGJhY2sgc3RvcmFnZSBpZiBJbmRleGVkRGIgY29ubmVjdGlvbiBpcyBmYWlsaW5nICovXG4gICAgICB0aGlzLnNldEZhbGxiYWNrKHByZWZpeCk7XG5cbiAgICAgIHJldHVybjtcblxuICAgIH1cblxuICAgIC8qIExpc3RlbmluZyB0aGUgZXZlbnQgZmlyZWQgb24gZmlyc3QgY29ubmVjdGlvbiwgY3JlYXRpbmcgdGhlIG9iamVjdCBzdG9yZSBmb3IgbG9jYWwgc3RvcmFnZSAqL1xuICAgIChmcm9tRXZlbnQocmVxdWVzdCwgJ3VwZ3JhZGVuZWVkZWQnKSBhcyBPYnNlcnZhYmxlPEV2ZW50PilcbiAgICAgIC5waXBlKGZpcnN0KCkpXG4gICAgICAuc3Vic2NyaWJlKChldmVudCkgPT4ge1xuXG4gICAgICAgIC8qIEdldHRpbmcgdGhlIGRhdGFiYXNlIGNvbm5lY3Rpb24gKi9cbiAgICAgICAgY29uc3QgZGF0YWJhc2UgPSAoZXZlbnQudGFyZ2V0IGFzIElEQlJlcXVlc3QpLnJlc3VsdCBhcyBJREJEYXRhYmFzZTtcblxuICAgICAgICAvKiBDaGVja2luZyBpZiB0aGUgb2JqZWN0IHN0b3JlIGFscmVhZHkgZXhpc3RzLCB0byBhdm9pZCBlcnJvciAqL1xuICAgICAgICBpZiAoIWRhdGFiYXNlLm9iamVjdFN0b3JlTmFtZXMuY29udGFpbnModGhpcy5vYmplY3RTdG9yZU5hbWUpKSB7XG5cbiAgICAgICAgICAvKiBDcmVhdGluZyB0aGUgb2JqZWN0IHN0b3JlIGZvciBsb2NhbCBzdG9yYWdlICovXG4gICAgICAgICAgZGF0YWJhc2UuY3JlYXRlT2JqZWN0U3RvcmUodGhpcy5vYmplY3RTdG9yZU5hbWUpO1xuXG4gICAgICAgIH1cblxuICAgICAgfSk7XG5cbiAgICAvKiBMaXN0ZW5pbmcgdGhlIHN1Y2Nlc3MgZXZlbnQgYW5kIGNvbnZlcnRpbmcgdG8gYW4gUnhKUyBPYnNlcnZhYmxlICovXG4gICAgY29uc3Qgc3VjY2VzcyA9IGZyb21FdmVudChyZXF1ZXN0LCAnc3VjY2VzcycpIGFzIE9ic2VydmFibGU8RXZlbnQ+O1xuXG4gICAgLyogTWVyZ2luZyBzdWNjZXNzIGFuZCBlcnJvcnMgZXZlbnRzICovXG4gICAgKHJhY2Uoc3VjY2VzcywgdGhpcy50b0Vycm9yT2JzZXJ2YWJsZShyZXF1ZXN0LCBgY29ubmVjdGlvbmApKSBhcyBPYnNlcnZhYmxlPEV2ZW50PilcbiAgICAgIC5waXBlKGZpcnN0KCkpXG4gICAgICAuc3Vic2NyaWJlKChldmVudCkgPT4ge1xuXG4gICAgICAgIC8qIFN0b3JpbmcgdGhlIGRhdGFiYXNlIGNvbm5lY3Rpb24gZm9yIGZ1cnRoZXIgYWNjZXNzICovXG4gICAgICAgIHRoaXMuZGF0YWJhc2UubmV4dCgoZXZlbnQudGFyZ2V0IGFzIElEQlJlcXVlc3QpLnJlc3VsdCBhcyBJREJEYXRhYmFzZSk7XG5cbiAgICAgIH0sICgpID0+IHtcblxuICAgICAgICAvKiBGYWxsYmFjayBzdG9yYWdlIGlmIEluZGV4ZWREYiBjb25uZWN0aW9uIGlzIGZhaWxpbmcgKi9cbiAgICAgICAgdGhpcy5zZXRGYWxsYmFjayhwcmVmaXgpO1xuXG4gICAgICB9KTtcblxuICB9XG5cbiAgLyoqXG4gICAqIE9wZW5zIGFuIEluZGV4ZWREQiB0cmFuc2FjdGlvbiBhbmQgZ2V0cyB0aGUgbG9jYWwgc3RvcmFnZSBvYmplY3Qgc3RvcmVcbiAgICogQHBhcmFtIG1vZGUgRGVmYXVsdCB0byAncmVhZG9ubHknIGZvciByZWFkIG9wZXJhdGlvbnMsIG9yICdyZWFkd3JpdGUnIGZvciB3cml0ZSBvcGVyYXRpb25zXG4gICAqIEByZXR1cm5zIEFuIEluZGV4ZWREQiB0cmFuc2FjdGlvbiBvYmplY3Qgc3RvcmUsIHdyYXBwZWQgaW4gYW4gUnhKUyBPYnNlcnZhYmxlXG4gICAqL1xuICBwcm90ZWN0ZWQgdHJhbnNhY3Rpb24obW9kZTogJ3JlYWRvbmx5JyB8ICdyZWFkd3JpdGUnID0gJ3JlYWRvbmx5Jyk6IE9ic2VydmFibGU8SURCT2JqZWN0U3RvcmU+IHtcblxuICAgIC8qIEZyb20gdGhlIEluZGV4ZWREQiBjb25uZWN0aW9uLCBvcGVuaW5nIGEgdHJhbnNhY3Rpb24gYW5kIGdldHRpbmcgdGhlIGxvY2FsIHN0b3JhZ2Ugb2JqZXQgc3RvcmUgKi9cbiAgICByZXR1cm4gdGhpcy5kYXRhYmFzZVxuICAgICAgLnBpcGUobWFwKChkYXRhYmFzZSkgPT4gZGF0YWJhc2UudHJhbnNhY3Rpb24oW3RoaXMub2JqZWN0U3RvcmVOYW1lXSwgbW9kZSkub2JqZWN0U3RvcmUodGhpcy5vYmplY3RTdG9yZU5hbWUpKSk7XG5cbiAgfVxuXG4gIC8qKlxuICAgKiBUcmFuc2Zvcm1zIGEgSW5kZXhlZERCIHN1Y2Nlc3MgZXZlbnQgaW4gYW4gUnhKUyBPYnNlcnZhYmxlXG4gICAqIEBwYXJhbSByZXF1ZXN0IFRoZSByZXF1ZXN0IHRvIGxpc3RlblxuICAgKiBAcmV0dXJucyBBIFJ4SlMgT2JzZXJ2YWJsZSB3aXRoIHRydWUgdmFsdWVcbiAgICovXG4gIHByb3RlY3RlZCB0b1N1Y2Nlc3NPYnNlcnZhYmxlKHJlcXVlc3Q6IElEQlJlcXVlc3QpOiBPYnNlcnZhYmxlPGJvb2xlYW4+IHtcblxuICAgIC8qIFRyYW5zZm9ybWluZyBhIEluZGV4ZWREQiBzdWNjZXNzIGV2ZW50IGluIGFuIFJ4SlMgT2JzZXJ2YWJsZSB3aXRoIHRydWUgdmFsdWUgKi9cbiAgICByZXR1cm4gKGZyb21FdmVudChyZXF1ZXN0LCAnc3VjY2VzcycpIGFzIE9ic2VydmFibGU8RXZlbnQ+KVxuICAgICAgLnBpcGUobWFwKCgpID0+IHRydWUpKTtcblxuICB9XG5cbiAgLyoqXG4gICAqIFRyYW5zZm9ybXMgYSBJbmRleGVkREIgZXJyb3IgZXZlbnQgaW4gYW4gUnhKUyBFcnJvck9ic2VydmFibGVcbiAgICogQHBhcmFtIHJlcXVlc3QgVGhlIHJlcXVlc3QgdG8gbGlzdGVuXG4gICAqIEBwYXJhbSBlcnJvciBPcHRpb25uYWwgZGV0YWlscyBhYm91dCB0aGUgZXJyb3IncyBvcmlnaW5cbiAgICogQHJldHVybnMgQSBSeEpTIEVycm9yT2JzZXJ2YWJsZVxuICAgKi9cbiAgcHJvdGVjdGVkIHRvRXJyb3JPYnNlcnZhYmxlKHJlcXVlc3Q6IElEQlJlcXVlc3QsIGVycm9yID0gYGApOiBPYnNlcnZhYmxlPG5ldmVyPiB7XG5cbiAgICAvKiBUcmFuc2Zvcm1pbmcgYSBJbmRleGVkREIgZXJyb3IgZXZlbnQgaW4gYW4gUnhKUyBFcnJvck9ic2VydmFibGUgKi9cbiAgICByZXR1cm4gKGZyb21FdmVudChyZXF1ZXN0LCAnZXJyb3InKSBhcyBPYnNlcnZhYmxlPEV2ZW50PilcbiAgICAgIC5waXBlKG1lcmdlTWFwKCgpID0+IHRocm93RXJyb3IobmV3IEVycm9yKGBJbmRleGVkREIgJHtlcnJvcn0gaXNzdWUgOiAkeyhyZXF1ZXN0LmVycm9yIGFzIERPTUV4Y2VwdGlvbikubWVzc2FnZX0uYCkpKSk7XG5cbiAgfVxuXG4gIHByb3RlY3RlZCBzZXRGYWxsYmFjayhwcmVmaXg6IHN0cmluZyB8IG51bGwpOiB2b2lkIHtcbiAgICB0aGlzLmZhbGxiYWNrID0gbmV3IExvY2FsU3RvcmFnZURhdGFiYXNlKHByZWZpeCk7XG4gIH1cblxufVxuIl19
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXhlZGRiLWRhdGFiYXNlLmpzIiwic291cmNlUm9vdCI6Im5nOi8vQG5neC1wd2EvbG9jYWwtc3RvcmFnZS8iLCJzb3VyY2VzIjpbImxpYi9kYXRhYmFzZXMvaW5kZXhlZGRiLWRhdGFiYXNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7QUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDN0QsT0FBTyxFQUFjLGFBQWEsRUFBRSxTQUFTLEVBQUUsRUFBRSxFQUFFLFVBQVUsRUFBRSxJQUFJLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDbEYsT0FBTyxFQUFFLEdBQUcsRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRzNELE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQy9ELE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLFdBQVcsQ0FBQzs7O0FBRWpEO0lBZ0NFOztPQUVHO0lBQ0gsMkJBQWdFLE1BQTRCO1FBQTVCLHVCQUFBLEVBQUEsYUFBNEI7UUFBNUIsV0FBTSxHQUFOLE1BQU0sQ0FBc0I7Ozs7UUEzQmxGLFdBQU0sR0FBRyxXQUFXLENBQUM7Ozs7UUFJWixvQkFBZSxHQUFHLGNBQWMsQ0FBQzs7OztRQUlqQyxZQUFPLEdBQUcsS0FBSyxDQUFDOzs7O1FBSWhCLGFBQVEsR0FBRyxPQUFPLENBQUM7Ozs7O1FBVTVCLGFBQVEsR0FBeUIsSUFBSSxDQUFDO1FBTzlDLElBQUksTUFBTSxFQUFFO1lBRVYsSUFBSSxDQUFDLE1BQU0sR0FBTSxNQUFNLFNBQUksSUFBSSxDQUFDLE1BQVEsQ0FBQztTQUUxQztRQUVELHFDQUFxQztRQUNyQyxJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksYUFBYSxFQUFlLENBQUM7UUFFakQsNkJBQTZCO1FBQzdCLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUM7SUFFdkIsQ0FBQztJQUVEOzs7O09BSUc7Ozs7Ozs7SUFDSCxtQ0FBTzs7Ozs7O0lBQVAsVUFBaUIsR0FBVztRQUUxQiw2QkFBNkI7UUFDN0IsSUFBSSxJQUFJLENBQUMsUUFBUSxFQUFFO1lBQ2pCLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUksR0FBRyxDQUFDLENBQUM7U0FDdEM7UUFFRCxtRUFBbUU7UUFDbkUsT0FBTyxJQUFJLENBQUMsc0JBQXNCLENBQUksR0FBRyxDQUFDLENBQUM7SUFFN0MsQ0FBQztJQUVEOzs7Ozs7T0FNRzs7Ozs7Ozs7O0lBQ0ssa0RBQXNCOzs7Ozs7OztJQUE5QixVQUF3QyxHQUFXLEVBQUUsZ0JBQWlDO1FBQXRGLGlCQXFCQzs7WUFuQk8sWUFBWSxHQUFHLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRTtRQUVqRixPQUFPLFlBQVksQ0FBQyxJQUFJLENBQ3RCLEdBQUcsQ0FBQyxVQUFDLFdBQVcsSUFBSyxPQUFBLFdBQVcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEVBQXBCLENBQW9CLENBQUMsRUFDMUMsUUFBUSxDQUFDLFVBQUMsT0FBTzs7O2dCQUdULE9BQU8sR0FBRyxDQUFDLG1CQUFBLFNBQVMsQ0FBQyxPQUFPLEVBQUUsU0FBUyxDQUFDLEVBQXFCLENBQUMsQ0FBQyxJQUFJLENBQ3ZFLEdBQUcsQ0FBQyxVQUFDLEtBQUssSUFBSyxPQUFBLENBQUMsbUJBQUEsS0FBSyxDQUFDLE1BQU0sRUFBYyxDQUFDLENBQUMsTUFBTSxFQUFuQyxDQUFtQyxDQUFDLEVBQ25ELEdBQUcsQ0FBQyxVQUFDLE1BQU0sSUFBSyxPQUFBLE1BQU0sSUFBSSxDQUFDLEtBQUksQ0FBQyxRQUFRLElBQUksTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsbUJBQUEsTUFBTSxDQUFDLEtBQUksQ0FBQyxRQUFRLENBQUMsRUFBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBekUsQ0FBeUUsQ0FBQyxDQUMzRjtZQUVELHNFQUFzRTtZQUN0RSxPQUFPLENBQUMsbUJBQUEsSUFBSSxDQUFDLE9BQU8sRUFBRSxLQUFJLENBQUMsaUJBQWlCLENBQUMsT0FBTyxFQUFFLFFBQVEsQ0FBQyxDQUFDLEVBQXdCLENBQUM7aUJBQ3RGLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDO1FBQ25CLENBQUMsQ0FBQyxFQUNGLEtBQUssRUFBRSxDQUNSLENBQUM7SUFFSixDQUFDO0lBRUQ7Ozs7O09BS0c7Ozs7Ozs7SUFDSCxtQ0FBTzs7Ozs7O0lBQVAsVUFBUSxHQUFXLEVBQUUsSUFBUztRQUE5QixpQkFpREM7UUEvQ0MsNkJBQTZCO1FBQzdCLElBQUksSUFBSSxDQUFDLFFBQVEsRUFBRTtZQUNqQixPQUFPLElBQUksQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLEdBQUcsRUFBRSxJQUFJLENBQUMsQ0FBQztTQUN6QztRQUVELCtFQUErRTtRQUMvRSxJQUFJLElBQUksSUFBSSxJQUFJLEVBQUU7WUFFaEIsT0FBTyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUM7U0FFakI7OztZQUdLLFlBQVksR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLFdBQVcsQ0FBQzs7WUFDOUMsV0FBMkI7UUFFM0IsMkJBQTJCO1FBQzNCLE9BQU8sWUFBWSxDQUFDLElBQUksQ0FDdEIsR0FBRyxDQUFDLFVBQUMsS0FBSztZQUNSLFdBQVcsR0FBRyxLQUFLLENBQUM7UUFDdEIsQ0FBQyxDQUFDO1FBQ0YsNENBQTRDO1FBQzVDLFFBQVEsQ0FBQyxjQUFNLE9BQUEsS0FBSSxDQUFDLHNCQUFzQixDQUFDLEdBQUcsRUFBRSxXQUFXLENBQUMsRUFBN0MsQ0FBNkMsQ0FBQyxFQUM3RCxHQUFHLENBQUMsVUFBQyxZQUFZLElBQUssT0FBQSxDQUFDLFlBQVksSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxLQUFLLEVBQXRDLENBQXNDLENBQUMsRUFDN0QsUUFBUSxDQUFDLFVBQUMsTUFBTTs7O2dCQUVWLE9BQW1CO1lBRXZCLGtFQUFrRTtZQUNsRSxRQUFRLE1BQU0sRUFBRTtnQkFDZCxLQUFLLEtBQUs7b0JBQ1IsT0FBTyxHQUFHLFdBQVcsQ0FBQyxHQUFHLFdBQUcsR0FBQyxLQUFJLENBQUMsUUFBUSxJQUFHLElBQUksT0FBSSxHQUFHLENBQUMsQ0FBQztvQkFDMUQsTUFBTTtnQkFDUixLQUFLLEtBQUssQ0FBQztnQkFDWDtvQkFDRSxPQUFPLEdBQUcsV0FBVyxDQUFDLEdBQUcsV0FBRyxHQUFDLEtBQUksQ0FBQyxRQUFRLElBQUcsSUFBSSxPQUFJLEdBQUcsQ0FBQyxDQUFDO29CQUMxRCxNQUFNO2FBQ1Q7WUFFRCxvRkFBb0Y7WUFDcEYsT0FBTyxDQUFDLG1CQUFBLElBQUksQ0FBQyxLQUFJLENBQUMsbUJBQW1CLENBQUMsT0FBTyxDQUFDLEVBQUUsS0FBSSxDQUFDLGlCQUFpQixDQUFDLE9BQU8sRUFBRSxRQUFRLENBQUMsQ0FBQyxFQUF1QixDQUFDO2lCQUMvRyxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQztRQUVyQixDQUFDLENBQUMsRUFDRixLQUFLLEVBQUUsQ0FDUixDQUFDO0lBRU4sQ0FBQztJQUVEOzs7O09BSUc7Ozs7OztJQUNILHNDQUFVOzs7OztJQUFWLFVBQVcsR0FBVztRQUF0QixpQkFtQ0M7UUFqQ0MsNkJBQTZCO1FBQzdCLElBQUksSUFBSSxDQUFDLFFBQVEsRUFBRTtZQUNqQixPQUFPLElBQUksQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1NBQ3RDO1FBRUQsNEVBQTRFO1FBQzVFLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQzNCLFFBQVEsQ0FBQyxVQUFDLElBQUk7WUFFWix5Q0FBeUM7WUFDekMsSUFBSSxJQUFJLElBQUksSUFBSSxFQUFFO2dCQUVoQiwyQkFBMkI7Z0JBQzNCLE9BQU8sS0FBSSxDQUFDLFdBQVcsQ0FBQyxXQUFXLENBQUMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLFVBQUMsV0FBVzs7O3dCQUd2RCxPQUFPLEdBQUcsV0FBVyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUM7b0JBRXZDLG9GQUFvRjtvQkFDcEYsT0FBTyxDQUFDLG1CQUFBLElBQUksQ0FBQyxLQUFJLENBQUMsbUJBQW1CLENBQUMsT0FBTyxDQUFDLEVBQUUsS0FBSSxDQUFDLGlCQUFpQixDQUFDLE9BQU8sRUFBRSxTQUFTLENBQUMsQ0FBQyxFQUF1QixDQUFDO3lCQUNoSCxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQztnQkFFbkIsQ0FBQyxDQUFDLENBQUMsQ0FBQzthQUVMO1lBRUQsOERBQThEO1lBQzlELE9BQU8sRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBRWxCLENBQUMsQ0FBQyxFQUNGLEtBQUssRUFBRSxDQUNSLENBQUM7SUFFSixDQUFDO0lBRUQ7OztPQUdHOzs7OztJQUNILGlDQUFLOzs7O0lBQUw7UUFBQSxpQkFzQkM7UUFwQkMsNkJBQTZCO1FBQzdCLElBQUksSUFBSSxDQUFDLFFBQVEsRUFBRTtZQUNqQixPQUFPLElBQUksQ0FBQyxRQUFRLENBQUMsS0FBSyxFQUFFLENBQUM7U0FDOUI7UUFFRCwyQkFBMkI7UUFDM0IsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDLFdBQVcsQ0FBQyxDQUFDLElBQUksQ0FDdkMsUUFBUSxDQUFDLFVBQUMsV0FBVzs7O2dCQUdiLE9BQU8sR0FBRyxXQUFXLENBQUMsS0FBSyxFQUFFO1lBRW5DLG9GQUFvRjtZQUNwRixPQUFPLENBQUMsbUJBQUEsSUFBSSxDQUFDLEtBQUksQ0FBQyxtQkFBbUIsQ0FBQyxPQUFPLENBQUMsRUFBRSxLQUFJLENBQUMsaUJBQWlCLENBQUMsT0FBTyxFQUFFLFNBQVMsQ0FBQyxDQUFDLEVBQXVCLENBQUM7aUJBQ2hILElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDO1FBRW5CLENBQUMsQ0FBQyxFQUNGLEtBQUssRUFBRSxDQUNSLENBQUM7SUFFSixDQUFDO0lBRUQ7O09BRUc7Ozs7OztJQUNPLG1DQUFPOzs7OztJQUFqQixVQUFrQixNQUE0QjtRQUE5QyxpQkFzREM7UUF0RGlCLHVCQUFBLEVBQUEsYUFBNEI7O1lBRXhDLE9BQXlCO1FBRTdCLDZCQUE2QjtRQUM3QixJQUFJO1lBRUYsT0FBTyxHQUFHLFNBQVMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1NBRXZDO1FBQUMsT0FBTyxLQUFLLEVBQUU7WUFFZCx5REFBeUQ7WUFDekQsSUFBSSxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUMsQ0FBQztZQUV6QixPQUFPO1NBRVI7UUFFRCxnR0FBZ0c7UUFDaEcsQ0FBQyxtQkFBQSxTQUFTLENBQUMsT0FBTyxFQUFFLGVBQWUsQ0FBQyxFQUFxQixDQUFDO2FBQ3ZELElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQzthQUNiLFNBQVMsQ0FBQyxVQUFDLEtBQUs7OztnQkFHVCxRQUFRLEdBQUcsbUJBQUEsQ0FBQyxtQkFBQSxLQUFLLENBQUMsTUFBTSxFQUFjLENBQUMsQ0FBQyxNQUFNLEVBQWU7WUFFbkUsaUVBQWlFO1lBQ2pFLElBQUksQ0FBQyxRQUFRLENBQUMsZ0JBQWdCLENBQUMsUUFBUSxDQUFDLEtBQUksQ0FBQyxlQUFlLENBQUMsRUFBRTtnQkFFN0QsaURBQWlEO2dCQUNqRCxRQUFRLENBQUMsaUJBQWlCLENBQUMsS0FBSSxDQUFDLGVBQWUsQ0FBQyxDQUFDO2FBRWxEO1FBRUgsQ0FBQyxDQUFDLENBQUM7OztZQUdDLE9BQU8sR0FBRyxtQkFBQSxTQUFTLENBQUMsT0FBTyxFQUFFLFNBQVMsQ0FBQyxFQUFxQjtRQUVsRSx1Q0FBdUM7UUFDdkMsQ0FBQyxtQkFBQSxJQUFJLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxPQUFPLEVBQUUsWUFBWSxDQUFDLENBQUMsRUFBcUIsQ0FBQzthQUNoRixJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7YUFDYixTQUFTLENBQUMsVUFBQyxLQUFLO1lBRWYsd0RBQXdEO1lBQ3hELEtBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLG1CQUFBLENBQUMsbUJBQUEsS0FBSyxDQUFDLE1BQU0sRUFBYyxDQUFDLENBQUMsTUFBTSxFQUFlLENBQUMsQ0FBQztRQUV6RSxDQUFDLEVBQUU7WUFFRCx5REFBeUQ7WUFDekQsS0FBSSxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUUzQixDQUFDLENBQUMsQ0FBQztJQUVQLENBQUM7SUFFRDs7OztPQUlHOzs7Ozs7SUFDTyx1Q0FBVzs7Ozs7SUFBckIsVUFBc0IsSUFBMkM7UUFBakUsaUJBTUM7UUFOcUIscUJBQUEsRUFBQSxpQkFBMkM7UUFFL0Qsb0dBQW9HO1FBQ3BHLE9BQU8sSUFBSSxDQUFDLFFBQVE7YUFDakIsSUFBSSxDQUFDLEdBQUcsQ0FBQyxVQUFDLFFBQVEsSUFBSyxPQUFBLFFBQVEsQ0FBQyxXQUFXLENBQUMsQ0FBQyxLQUFJLENBQUMsZUFBZSxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUMsV0FBVyxDQUFDLEtBQUksQ0FBQyxlQUFlLENBQUMsRUFBcEYsQ0FBb0YsQ0FBQyxDQUFDLENBQUM7SUFFbkgsQ0FBQztJQUVEOzs7O09BSUc7Ozs7OztJQUNPLCtDQUFtQjs7Ozs7SUFBN0IsVUFBOEIsT0FBbUI7UUFFL0Msa0ZBQWtGO1FBQ2xGLE9BQU8sQ0FBQyxtQkFBQSxTQUFTLENBQUMsT0FBTyxFQUFFLFNBQVMsQ0FBQyxFQUFxQixDQUFDO2FBQ3hELElBQUksQ0FBQyxHQUFHLENBQUMsY0FBTSxPQUFBLElBQUksRUFBSixDQUFJLENBQUMsQ0FBQyxDQUFDO0lBRTNCLENBQUM7SUFFRDs7Ozs7T0FLRzs7Ozs7OztJQUNPLDZDQUFpQjs7Ozs7O0lBQTNCLFVBQTRCLE9BQW1CLEVBQUUsS0FBVTtRQUFWLHNCQUFBLEVBQUEsVUFBVTtRQUV6RCxxRUFBcUU7UUFDckUsT0FBTyxDQUFDLG1CQUFBLFNBQVMsQ0FBQyxPQUFPLEVBQUUsT0FBTyxDQUFDLEVBQXFCLENBQUM7YUFDdEQsSUFBSSxDQUFDLFFBQVEsQ0FBQyxjQUFNLE9BQUEsVUFBVSxDQUFDLElBQUksS0FBSyxDQUFDLGVBQWEsS0FBSyxpQkFBWSxDQUFDLG1CQUFBLE9BQU8sQ0FBQyxLQUFLLEVBQWdCLENBQUMsQ0FBQyxPQUFPLE1BQUcsQ0FBQyxDQUFDLEVBQS9GLENBQStGLENBQUMsQ0FBQyxDQUFDO0lBRTNILENBQUM7Ozs7O0lBRVMsdUNBQVc7Ozs7SUFBckIsVUFBc0IsTUFBcUI7UUFDekMsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLG9CQUFvQixDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ25ELENBQUM7O2dCQXRVRixVQUFVLFNBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25COzs7O2dEQWlDYyxRQUFRLFlBQUksTUFBTSxTQUFDLG9CQUFvQjs7OzRCQTNDdEQ7Q0FnVkMsQUF4VUQsSUF3VUM7U0FyVVksaUJBQWlCOzs7Ozs7SUFLNUIsbUNBQStCOzs7OztJQUkvQiw0Q0FBb0Q7Ozs7O0lBSXBELG9DQUFtQzs7Ozs7SUFJbkMscUNBQXNDOzs7Ozs7SUFLdEMscUNBQStDOzs7Ozs7SUFLL0MscUNBQWdEOztJQUtwQyxtQ0FBZ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlLCBPcHRpb25hbCwgSW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBSZXBsYXlTdWJqZWN0LCBmcm9tRXZlbnQsIG9mLCB0aHJvd0Vycm9yLCByYWNlIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBtYXAsIG1lcmdlTWFwLCBmaXJzdCwgdGFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5pbXBvcnQgeyBMb2NhbERhdGFiYXNlIH0gZnJvbSAnLi9sb2NhbC1kYXRhYmFzZSc7XG5pbXBvcnQgeyBMb2NhbFN0b3JhZ2VEYXRhYmFzZSB9IGZyb20gJy4vbG9jYWxzdG9yYWdlLWRhdGFiYXNlJztcbmltcG9ydCB7IExPQ0FMX1NUT1JBR0VfUFJFRklYIH0gZnJvbSAnLi4vdG9rZW5zJztcblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCdcbn0pXG5leHBvcnQgY2xhc3MgSW5kZXhlZERCRGF0YWJhc2UgaW1wbGVtZW50cyBMb2NhbERhdGFiYXNlIHtcblxuICAvKipcbiAgICogSW5kZXhlZERCIGRhdGFiYXNlIG5hbWUgZm9yIGxvY2FsIHN0b3JhZ2VcbiAgICovXG4gIHByb3RlY3RlZCBkYk5hbWUgPSAnbmdTdG9yYWdlJztcbiAgLyoqXG4gICAqIEluZGV4ZWREQiBvYmplY3Qgc3RvcmUgbmFtZSBmb3IgbG9jYWwgc3RvcmFnZVxuICAgKi9cbiAgcHJvdGVjdGVkIHJlYWRvbmx5IG9iamVjdFN0b3JlTmFtZSA9ICdsb2NhbFN0b3JhZ2UnO1xuICAvKipcbiAgICogSW5kZXhlZERCIGtleSBwYXRoIG5hbWUgZm9yIGxvY2FsIHN0b3JhZ2UgKHdoZXJlIGFuIGl0ZW0ncyBrZXkgd2lsbCBiZSBzdG9yZWQpXG4gICAqL1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkga2V5UGF0aCA9ICdrZXknO1xuICAvKipcbiAgICogSW5kZXhlZERCIGRhdGEgcGF0aCBuYW1lIGZvciBsb2NhbCBzdG9yYWdlICh3aGVyZSBpdGVtcycgdmFsdWUgd2lsbCBiZSBzdG9yZWQpXG4gICAqL1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgZGF0YVBhdGggPSAndmFsdWUnO1xuICAvKipcbiAgICogSW5kZXhlZERCIGRhdGFiYXNlIGNvbm5lY3Rpb24sIHdyYXBwZWQgaW4gYSBSeEpTIFJlcGxheVN1YmplY3QgdG8gYmUgYWJsZSB0byBhY2Nlc3MgdGhlIGNvbm5lY3Rpb25cbiAgICogZXZlbiBhZnRlciB0aGUgY29ubmVjdGlvbiBzdWNjZXNzIGV2ZW50IGhhcHBlbmVkXG4gICAqL1xuICBwcm90ZWN0ZWQgZGF0YWJhc2U6IFJlcGxheVN1YmplY3Q8SURCRGF0YWJhc2U+O1xuICAvKipcbiAgICogSW5kZXhlZERCIGlzIGF2YWlsYWJsZSBidXQgZmFpbGluZyBpbiBzb21lIHNjZW5hcmlvcyAoRmlyZWZveCBwcml2YXRlIG1vZGUsIFNhZmFyaSBjcm9zcy1vcmlnaW4gaWZyYW1lcyksXG4gICAqIHNvIGEgZmFsbGJhY2sgY2FuIGJlIG5lZWRlZC5cbiAgICovXG4gIHByb3RlY3RlZCBmYWxsYmFjazogTG9jYWxEYXRhYmFzZSB8IG51bGwgPSBudWxsO1xuXG4gIC8qKlxuICAgKiBDb25uZWN0cyB0byBJbmRleGVkREJcbiAgICovXG4gIGNvbnN0cnVjdG9yKEBPcHRpb25hbCgpIEBJbmplY3QoTE9DQUxfU1RPUkFHRV9QUkVGSVgpIHByb3RlY3RlZCBwcmVmaXg6IHN0cmluZyB8IG51bGwgPSBudWxsKSB7XG5cbiAgICBpZiAocHJlZml4KSB7XG5cbiAgICAgIHRoaXMuZGJOYW1lID0gYCR7cHJlZml4fV8ke3RoaXMuZGJOYW1lfWA7XG5cbiAgICB9XG5cbiAgICAvKiBDcmVhdGluZyB0aGUgUnhKUyBSZXBsYXlTdWJqZWN0ICovXG4gICAgdGhpcy5kYXRhYmFzZSA9IG5ldyBSZXBsYXlTdWJqZWN0PElEQkRhdGFiYXNlPigpO1xuXG4gICAgLyogQ29ubmVjdGluZyB0byBJbmRleGVkREIgKi9cbiAgICB0aGlzLmNvbm5lY3QocHJlZml4KTtcblxuICB9XG5cbiAgLyoqXG4gICAqIEdldHMgYW4gaXRlbSB2YWx1ZSBpbiBsb2NhbCBzdG9yYWdlXG4gICAqIEBwYXJhbSBrZXkgVGhlIGl0ZW0ncyBrZXlcbiAgICogQHJldHVybnMgVGhlIGl0ZW0ncyB2YWx1ZSBpZiB0aGUga2V5IGV4aXN0cywgbnVsbCBvdGhlcndpc2UsIHdyYXBwZWQgaW4gYW4gUnhKUyBPYnNlcnZhYmxlXG4gICAqL1xuICBnZXRJdGVtPFQgPSBhbnk+KGtleTogc3RyaW5nKTogT2JzZXJ2YWJsZTxUwqB8IG51bGw+IHtcblxuICAgIC8qIEZhbGxiYWNrIHN0b3JhZ2UgaWYgc2V0ICovXG4gICAgaWYgKHRoaXMuZmFsbGJhY2spIHtcbiAgICAgIHJldHVybiB0aGlzLmZhbGxiYWNrLmdldEl0ZW08VD4oa2V5KTtcbiAgICB9XG5cbiAgICAvKiBPcGVuaW5nIGEgdHJhc2FjdGlvbiBhbmQgcmVxdWVzdGluZyB0aGUgaXRlbSBpbiBsb2NhbCBzdG9yYWdlICovXG4gICAgcmV0dXJuIHRoaXMuZ2V0SXRlbUZyb21UcmFuc2FjdGlvbjxUPihrZXkpO1xuXG4gIH1cblxuICAvKipcbiAgICogSW50ZXJuYWwgbWV0aG9kIHRvIGZhY3Rvcml6ZSB0aGUgZ2V0dGVyIGZvciBnZXRJdGVtIGFuZCBzZXRJdGVtLFxuICAgKiB0aGUgbGFzdCBvbmUgbmVlZGluZyB0byBiZSBmcm9tIGEgcHJlZXhpc3RpbmcgdHJhbnNhY3Rpb25cbiAgICogQHBhcmFtIGtleSBUaGUgaXRlbSdzIGtleVxuICAgKiBAcGFyYW0gdHJhbnNhY3Rpb25QYXJhbSBPcHRpb25hbCBwcmUtZXhpc3RpbmcgdHJhbnNhY3Rpb24gdG8gdXNlIGZvciB0aGUgcmVhZCByZXF1ZXN0XG4gICAqIEByZXR1cm5zIFRoZSBpdGVtJ3MgdmFsdWUgaWYgdGhlIGtleSBleGlzdHMsIG51bGwgb3RoZXJ3aXNlLCB3cmFwcGVkIGluIGFuIFJ4SlMgT2JzZXJ2YWJsZVxuICAgKi9cbiAgcHJpdmF0ZSBnZXRJdGVtRnJvbVRyYW5zYWN0aW9uPFQgPSBhbnk+KGtleTogc3RyaW5nLCB0cmFuc2FjdGlvblBhcmFtPzogSURCT2JqZWN0U3RvcmUpOiBPYnNlcnZhYmxlPFTCoHwgbnVsbD4ge1xuXG4gICAgY29uc3QgdHJhbnNhY3Rpb24kID0gdHJhbnNhY3Rpb25QYXJhbSA/IG9mKHRyYW5zYWN0aW9uUGFyYW0pIDogdGhpcy50cmFuc2FjdGlvbigpO1xuXG4gICAgcmV0dXJuIHRyYW5zYWN0aW9uJC5waXBlKFxuICAgICAgbWFwKCh0cmFuc2FjdGlvbikgPT4gdHJhbnNhY3Rpb24uZ2V0KGtleSkpLFxuICAgICAgbWVyZ2VNYXAoKHJlcXVlc3QpID0+IHtcblxuICAgICAgICAvKiBMaXN0ZW5pbmcgdG8gdGhlIHN1Y2Nlc3MgZXZlbnQsIGFuZCBwYXNzaW5nIHRoZSBpdGVtIHZhbHVlIGlmIGZvdW5kLCBudWxsIG90aGVyd2lzZSAqL1xuICAgICAgICBjb25zdCBzdWNjZXNzID0gKGZyb21FdmVudChyZXF1ZXN0LCAnc3VjY2VzcycpIGFzIE9ic2VydmFibGU8RXZlbnQ+KS5waXBlKFxuICAgICAgICAgIG1hcCgoZXZlbnQpID0+IChldmVudC50YXJnZXQgYXMgSURCUmVxdWVzdCkucmVzdWx0KSxcbiAgICAgICAgICBtYXAoKHJlc3VsdCkgPT4gcmVzdWx0ICYmICh0aGlzLmRhdGFQYXRoIGluIHJlc3VsdCkgPyAocmVzdWx0W3RoaXMuZGF0YVBhdGhdIGFzIFQpIDogbnVsbClcbiAgICAgICAgKTtcblxuICAgICAgICAvKiBNZXJnaW5nIHN1Y2Nlc3MgYW5kIGVycm9ycyBldmVudHMgYW5kIGF1dG9jbG9zaW5nIHRoZSBvYnNlcnZhYmxlICovXG4gICAgICAgIHJldHVybiAocmFjZShzdWNjZXNzLCB0aGlzLnRvRXJyb3JPYnNlcnZhYmxlKHJlcXVlc3QsIGBnZXR0ZXJgKSkgYXMgT2JzZXJ2YWJsZTxUIHwgbnVsbD4pXG4gICAgICAgICAgLnBpcGUoZmlyc3QoKSk7XG4gICAgICB9KSxcbiAgICAgIGZpcnN0KClcbiAgICApO1xuXG4gIH1cblxuICAvKipcbiAgICogU2V0cyBhbiBpdGVtIGluIGxvY2FsIHN0b3JhZ2VcbiAgICogQHBhcmFtIGtleSBUaGUgaXRlbSdzIGtleVxuICAgKiBAcGFyYW0gZGF0YSBUaGUgaXRlbSdzIHZhbHVlLCBtdXN0IE5PVCBiZSBudWxsIG9yIHVuZGVmaW5lZFxuICAgKiBAcmV0dXJucyBBbiBSeEpTIE9ic2VydmFibGUgdG8gd2FpdCB0aGUgZW5kIG9mIHRoZSBvcGVyYXRpb25cbiAgICovXG4gIHNldEl0ZW0oa2V5OiBzdHJpbmcsIGRhdGE6IGFueSk6IE9ic2VydmFibGU8Ym9vbGVhbj4ge1xuXG4gICAgLyogRmFsbGJhY2sgc3RvcmFnZSBpZiBzZXQgKi9cbiAgICBpZiAodGhpcy5mYWxsYmFjaykge1xuICAgICAgcmV0dXJuIHRoaXMuZmFsbGJhY2suc2V0SXRlbShrZXksIGRhdGEpO1xuICAgIH1cblxuICAgIC8qIFN0b3JpbmcgbnVsbCBpcyBub3QgY29ycmVjdGx5IHN1cHBvcnRlZCBieSBJbmRleGVkREIgYW5kIHVubmVjZXNzYXJ5IGhlcmUgKi9cbiAgICBpZiAoZGF0YSA9PSBudWxsKSB7XG5cbiAgICAgIHJldHVybiBvZih0cnVlKTtcblxuICAgIH1cblxuICAgIC8qIFRyYW5zYWN0aW9uIG11c3QgYmUgdGhlIHNhbWUgZm9yIHJlYWQgYW5kIHdyaXRlLCB0byBhdm9pZCBjb25jdXJyZW5jeSBpc3N1ZXMgKi9cbiAgICBjb25zdCB0cmFuc2FjdGlvbiQgPSB0aGlzLnRyYW5zYWN0aW9uKCdyZWFkd3JpdGUnKTtcbiAgICBsZXQgdHJhbnNhY3Rpb246IElEQk9iamVjdFN0b3JlO1xuXG4gICAgICAgIC8qIE9wZW5pbmcgYSB0cmFuc2FjdGlvbiAqL1xuICAgICAgICByZXR1cm4gdHJhbnNhY3Rpb24kLnBpcGUoXG4gICAgICAgICAgdGFwKCh2YWx1ZSkgPT4ge1xuICAgICAgICAgICAgdHJhbnNhY3Rpb24gPSB2YWx1ZTtcbiAgICAgICAgICB9KSxcbiAgICAgICAgICAvKiBDaGVjayBpZiB0aGUga2V5IGFscmVhZHkgZXhpc3RzIG9yIG5vdCAqL1xuICAgICAgICAgIG1lcmdlTWFwKCgpID0+IHRoaXMuZ2V0SXRlbUZyb21UcmFuc2FjdGlvbihrZXksIHRyYW5zYWN0aW9uKSksXG4gICAgICAgICAgbWFwKChleGlzdGluZ0RhdGEpID0+IChleGlzdGluZ0RhdGEgPT0gbnVsbCkgPyAnYWRkJyA6ICdwdXQnKSxcbiAgICAgICAgICBtZXJnZU1hcCgobWV0aG9kKSA9PiB7XG5cbiAgICAgICAgICAgIGxldCByZXF1ZXN0OiBJREJSZXF1ZXN0O1xuXG4gICAgICAgICAgICAvKiBBZGRpbmcgb3IgdXBkYXRpbmcgbG9jYWwgc3RvcmFnZSwgYmFzZWQgb24gcHJldmlvdXMgY2hlY2tpbmcgKi9cbiAgICAgICAgICAgIHN3aXRjaCAobWV0aG9kKSB7XG4gICAgICAgICAgICAgIGNhc2UgJ2FkZCc6XG4gICAgICAgICAgICAgICAgcmVxdWVzdCA9IHRyYW5zYWN0aW9uLmFkZCh7IFt0aGlzLmRhdGFQYXRoXTogZGF0YSB9LCBrZXkpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICBjYXNlICdwdXQnOlxuICAgICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgIHJlcXVlc3QgPSB0cmFuc2FjdGlvbi5wdXQoeyBbdGhpcy5kYXRhUGF0aF06IGRhdGEgfSwga2V5KTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLyogTWVyZ2luZyBzdWNjZXNzIChwYXNzaW5nIHRydWUpIGFuZCBlcnJvciBldmVudHMgYW5kIGF1dG9jbG9zaW5nIHRoZSBvYnNlcnZhYmxlICovXG4gICAgICAgICAgICByZXR1cm4gKHJhY2UodGhpcy50b1N1Y2Nlc3NPYnNlcnZhYmxlKHJlcXVlc3QpLCB0aGlzLnRvRXJyb3JPYnNlcnZhYmxlKHJlcXVlc3QsIGBzZXR0ZXJgKSkgYXMgT2JzZXJ2YWJsZTxib29sZWFuPilcbiAgICAgICAgICAgICAgLnBpcGUoZmlyc3QoKSk7XG5cbiAgICAgICAgfSksXG4gICAgICAgIGZpcnN0KClcbiAgICAgICk7XG5cbiAgfVxuXG4gIC8qKlxuICAgKiBEZWxldGVzIGFuIGl0ZW0gaW4gbG9jYWwgc3RvcmFnZVxuICAgKiBAcGFyYW0ga2V5IFRoZSBpdGVtJ3Mga2V5XG4gICAqIEByZXR1cm5zIEFuIFJ4SlMgT2JzZXJ2YWJsZSB0byB3YWl0IHRoZSBlbmQgb2YgdGhlIG9wZXJhdGlvblxuICAgKi9cbiAgcmVtb3ZlSXRlbShrZXk6IHN0cmluZyk6IE9ic2VydmFibGU8Ym9vbGVhbj4ge1xuXG4gICAgLyogRmFsbGJhY2sgc3RvcmFnZSBpZiBzZXQgKi9cbiAgICBpZiAodGhpcy5mYWxsYmFjaykge1xuICAgICAgcmV0dXJuIHRoaXMuZmFsbGJhY2sucmVtb3ZlSXRlbShrZXkpO1xuICAgIH1cblxuICAgIC8qIE9wZW5pbmcgYSB0cmFuc2FjdGlvbiBhbmQgY2hlY2tpbmcgaWYgdGhlIGl0ZW0gZXhpc3RzIGluIGxvY2FsIHN0b3JhZ2UgKi9cbiAgICByZXR1cm4gdGhpcy5nZXRJdGVtKGtleSkucGlwZShcbiAgICAgIG1lcmdlTWFwKChkYXRhKSA9PiB7XG5cbiAgICAgICAgLyogSWYgdGhlIGl0ZW0gZXhpc3RzIGluIGxvY2FsIHN0b3JhZ2UgKi9cbiAgICAgICAgaWYgKGRhdGEgIT0gbnVsbCkge1xuXG4gICAgICAgICAgLyogT3BlbmluZyBhIHRyYW5zYWN0aW9uICovXG4gICAgICAgICAgcmV0dXJuIHRoaXMudHJhbnNhY3Rpb24oJ3JlYWR3cml0ZScpLnBpcGUobWVyZ2VNYXAoKHRyYW5zYWN0aW9uKSA9PiB7XG5cbiAgICAgICAgICAgIC8qIERlbGV0aW5nIHRoZSBpdGVtIGluIGxvY2FsIHN0b3JhZ2UgKi9cbiAgICAgICAgICAgIGNvbnN0IHJlcXVlc3QgPSB0cmFuc2FjdGlvbi5kZWxldGUoa2V5KTtcblxuICAgICAgICAgICAgLyogTWVyZ2luZyBzdWNjZXNzIChwYXNzaW5nIHRydWUpIGFuZCBlcnJvciBldmVudHMgYW5kIGF1dG9jbG9zaW5nIHRoZSBvYnNlcnZhYmxlICovXG4gICAgICAgICAgICByZXR1cm4gKHJhY2UodGhpcy50b1N1Y2Nlc3NPYnNlcnZhYmxlKHJlcXVlc3QpLCB0aGlzLnRvRXJyb3JPYnNlcnZhYmxlKHJlcXVlc3QsIGByZW1vdmVyYCkpIGFzIE9ic2VydmFibGU8Ym9vbGVhbj4pXG4gICAgICAgICAgICAgIC5waXBlKGZpcnN0KCkpO1xuXG4gICAgICAgICAgfSkpO1xuXG4gICAgICAgIH1cblxuICAgICAgICAvKiBQYXNzaW5nIHRydWUgaWYgdGhlIGl0ZW0gZG9lcyBub3QgZXhpc3QgaW4gbG9jYWwgc3RvcmFnZSAqL1xuICAgICAgICByZXR1cm4gb2YodHJ1ZSk7XG5cbiAgICAgIH0pLFxuICAgICAgZmlyc3QoKVxuICAgICk7XG5cbiAgfVxuXG4gIC8qKlxuICAgKiBEZWxldGVzIGFsbCBpdGVtcyBmcm9tIGxvY2FsIHN0b3JhZ2VcbiAgICogQHJldHVybnMgQW4gUnhKUyBPYnNlcnZhYmxlIHRvIHdhaXQgdGhlIGVuZCBvZiB0aGUgb3BlcmF0aW9uXG4gICAqL1xuICBjbGVhcigpOiBPYnNlcnZhYmxlPGJvb2xlYW4+IHtcblxuICAgIC8qIEZhbGxiYWNrIHN0b3JhZ2UgaWYgc2V0ICovXG4gICAgaWYgKHRoaXMuZmFsbGJhY2spIHtcbiAgICAgIHJldHVybiB0aGlzLmZhbGxiYWNrLmNsZWFyKCk7XG4gICAgfVxuXG4gICAgLyogT3BlbmluZyBhIHRyYW5zYWN0aW9uICovXG4gICAgcmV0dXJuIHRoaXMudHJhbnNhY3Rpb24oJ3JlYWR3cml0ZScpLnBpcGUoXG4gICAgICBtZXJnZU1hcCgodHJhbnNhY3Rpb24pID0+IHtcblxuICAgICAgICAvKiBEZWxldGluZyBhbGwgaXRlbXMgZnJvbSBsb2NhbCBzdG9yYWdlICovXG4gICAgICAgIGNvbnN0IHJlcXVlc3QgPSB0cmFuc2FjdGlvbi5jbGVhcigpO1xuXG4gICAgICAgIC8qIE1lcmdpbmcgc3VjY2VzcyAocGFzc2luZyB0cnVlKSBhbmQgZXJyb3IgZXZlbnRzIGFuZCBhdXRvY2xvc2luZyB0aGUgb2JzZXJ2YWJsZSAqL1xuICAgICAgICByZXR1cm4gKHJhY2UodGhpcy50b1N1Y2Nlc3NPYnNlcnZhYmxlKHJlcXVlc3QpLCB0aGlzLnRvRXJyb3JPYnNlcnZhYmxlKHJlcXVlc3QsIGBjbGVhcmVyYCkpIGFzIE9ic2VydmFibGU8Ym9vbGVhbj4pXG4gICAgICAgICAgLnBpcGUoZmlyc3QoKSk7XG5cbiAgICAgIH0pLFxuICAgICAgZmlyc3QoKVxuICAgICk7XG5cbiAgfVxuXG4gIC8qKlxuICAgKiBDb25uZWN0cyB0byBJbmRleGVkREIgYW5kIGNyZWF0ZXMgdGhlIG9iamVjdCBzdG9yZSBvbiBmaXJzdCB0aW1lXG4gICAqL1xuICBwcm90ZWN0ZWQgY29ubmVjdChwcmVmaXg6IHN0cmluZyB8IG51bGwgPSBudWxsKTogdm9pZCB7XG5cbiAgICBsZXQgcmVxdWVzdDogSURCT3BlbkRCUmVxdWVzdDtcblxuICAgIC8qIENvbm5lY3RpbmcgdG8gSW5kZXhlZERCICovXG4gICAgdHJ5IHtcblxuICAgICAgcmVxdWVzdCA9IGluZGV4ZWREQi5vcGVuKHRoaXMuZGJOYW1lKTtcblxuICAgIH3CoGNhdGNoIChlcnJvcikge1xuXG4gICAgICAvKiBGYWxsYmFjayBzdG9yYWdlIGlmIEluZGV4ZWREYiBjb25uZWN0aW9uIGlzIGZhaWxpbmcgKi9cbiAgICAgIHRoaXMuc2V0RmFsbGJhY2socHJlZml4KTtcblxuICAgICAgcmV0dXJuO1xuXG4gICAgfVxuXG4gICAgLyogTGlzdGVuaW5nIHRoZSBldmVudCBmaXJlZCBvbiBmaXJzdCBjb25uZWN0aW9uLCBjcmVhdGluZyB0aGUgb2JqZWN0IHN0b3JlIGZvciBsb2NhbCBzdG9yYWdlICovXG4gICAgKGZyb21FdmVudChyZXF1ZXN0LCAndXBncmFkZW5lZWRlZCcpIGFzIE9ic2VydmFibGU8RXZlbnQ+KVxuICAgICAgLnBpcGUoZmlyc3QoKSlcbiAgICAgIC5zdWJzY3JpYmUoKGV2ZW50KSA9PiB7XG5cbiAgICAgICAgLyogR2V0dGluZyB0aGUgZGF0YWJhc2UgY29ubmVjdGlvbiAqL1xuICAgICAgICBjb25zdCBkYXRhYmFzZSA9IChldmVudC50YXJnZXQgYXMgSURCUmVxdWVzdCkucmVzdWx0IGFzIElEQkRhdGFiYXNlO1xuXG4gICAgICAgIC8qIENoZWNraW5nIGlmIHRoZSBvYmplY3Qgc3RvcmUgYWxyZWFkeSBleGlzdHMsIHRvIGF2b2lkIGVycm9yICovXG4gICAgICAgIGlmICghZGF0YWJhc2Uub2JqZWN0U3RvcmVOYW1lcy5jb250YWlucyh0aGlzLm9iamVjdFN0b3JlTmFtZSkpIHtcblxuICAgICAgICAgIC8qIENyZWF0aW5nIHRoZSBvYmplY3Qgc3RvcmUgZm9yIGxvY2FsIHN0b3JhZ2UgKi9cbiAgICAgICAgICBkYXRhYmFzZS5jcmVhdGVPYmplY3RTdG9yZSh0aGlzLm9iamVjdFN0b3JlTmFtZSk7XG5cbiAgICAgICAgfVxuXG4gICAgICB9KTtcblxuICAgIC8qIExpc3RlbmluZyB0aGUgc3VjY2VzcyBldmVudCBhbmQgY29udmVydGluZyB0byBhbiBSeEpTIE9ic2VydmFibGUgKi9cbiAgICBjb25zdCBzdWNjZXNzID0gZnJvbUV2ZW50KHJlcXVlc3QsICdzdWNjZXNzJykgYXMgT2JzZXJ2YWJsZTxFdmVudD47XG5cbiAgICAvKiBNZXJnaW5nIHN1Y2Nlc3MgYW5kIGVycm9ycyBldmVudHMgKi9cbiAgICAocmFjZShzdWNjZXNzLCB0aGlzLnRvRXJyb3JPYnNlcnZhYmxlKHJlcXVlc3QsIGBjb25uZWN0aW9uYCkpIGFzIE9ic2VydmFibGU8RXZlbnQ+KVxuICAgICAgLnBpcGUoZmlyc3QoKSlcbiAgICAgIC5zdWJzY3JpYmUoKGV2ZW50KSA9PiB7XG5cbiAgICAgICAgLyogU3RvcmluZyB0aGUgZGF0YWJhc2UgY29ubmVjdGlvbiBmb3IgZnVydGhlciBhY2Nlc3MgKi9cbiAgICAgICAgdGhpcy5kYXRhYmFzZS5uZXh0KChldmVudC50YXJnZXQgYXMgSURCUmVxdWVzdCkucmVzdWx0IGFzIElEQkRhdGFiYXNlKTtcblxuICAgICAgfSwgKCkgPT4ge1xuXG4gICAgICAgIC8qIEZhbGxiYWNrIHN0b3JhZ2UgaWYgSW5kZXhlZERiIGNvbm5lY3Rpb24gaXMgZmFpbGluZyAqL1xuICAgICAgICB0aGlzLnNldEZhbGxiYWNrKHByZWZpeCk7XG5cbiAgICAgIH0pO1xuXG4gIH1cblxuICAvKipcbiAgICogT3BlbnMgYW4gSW5kZXhlZERCIHRyYW5zYWN0aW9uIGFuZCBnZXRzIHRoZSBsb2NhbCBzdG9yYWdlIG9iamVjdCBzdG9yZVxuICAgKiBAcGFyYW0gbW9kZSBEZWZhdWx0IHRvICdyZWFkb25seScgZm9yIHJlYWQgb3BlcmF0aW9ucywgb3IgJ3JlYWR3cml0ZScgZm9yIHdyaXRlIG9wZXJhdGlvbnNcbiAgICogQHJldHVybnMgQW4gSW5kZXhlZERCIHRyYW5zYWN0aW9uIG9iamVjdCBzdG9yZSwgd3JhcHBlZCBpbiBhbiBSeEpTIE9ic2VydmFibGVcbiAgICovXG4gIHByb3RlY3RlZCB0cmFuc2FjdGlvbihtb2RlOiAncmVhZG9ubHknIHwgJ3JlYWR3cml0ZScgPSAncmVhZG9ubHknKTogT2JzZXJ2YWJsZTxJREJPYmplY3RTdG9yZT4ge1xuXG4gICAgLyogRnJvbSB0aGUgSW5kZXhlZERCIGNvbm5lY3Rpb24sIG9wZW5pbmcgYSB0cmFuc2FjdGlvbiBhbmQgZ2V0dGluZyB0aGUgbG9jYWwgc3RvcmFnZSBvYmpldCBzdG9yZSAqL1xuICAgIHJldHVybiB0aGlzLmRhdGFiYXNlXG4gICAgICAucGlwZShtYXAoKGRhdGFiYXNlKSA9PiBkYXRhYmFzZS50cmFuc2FjdGlvbihbdGhpcy5vYmplY3RTdG9yZU5hbWVdLCBtb2RlKS5vYmplY3RTdG9yZSh0aGlzLm9iamVjdFN0b3JlTmFtZSkpKTtcblxuICB9XG5cbiAgLyoqXG4gICAqIFRyYW5zZm9ybXMgYSBJbmRleGVkREIgc3VjY2VzcyBldmVudCBpbiBhbiBSeEpTIE9ic2VydmFibGVcbiAgICogQHBhcmFtIHJlcXVlc3QgVGhlIHJlcXVlc3QgdG8gbGlzdGVuXG4gICAqIEByZXR1cm5zIEEgUnhKUyBPYnNlcnZhYmxlIHdpdGggdHJ1ZSB2YWx1ZVxuICAgKi9cbiAgcHJvdGVjdGVkIHRvU3VjY2Vzc09ic2VydmFibGUocmVxdWVzdDogSURCUmVxdWVzdCk6IE9ic2VydmFibGU8Ym9vbGVhbj4ge1xuXG4gICAgLyogVHJhbnNmb3JtaW5nIGEgSW5kZXhlZERCIHN1Y2Nlc3MgZXZlbnQgaW4gYW4gUnhKUyBPYnNlcnZhYmxlIHdpdGggdHJ1ZSB2YWx1ZSAqL1xuICAgIHJldHVybiAoZnJvbUV2ZW50KHJlcXVlc3QsICdzdWNjZXNzJykgYXMgT2JzZXJ2YWJsZTxFdmVudD4pXG4gICAgICAucGlwZShtYXAoKCkgPT4gdHJ1ZSkpO1xuXG4gIH1cblxuICAvKipcbiAgICogVHJhbnNmb3JtcyBhIEluZGV4ZWREQiBlcnJvciBldmVudCBpbiBhbiBSeEpTIEVycm9yT2JzZXJ2YWJsZVxuICAgKiBAcGFyYW0gcmVxdWVzdCBUaGUgcmVxdWVzdCB0byBsaXN0ZW5cbiAgICogQHBhcmFtIGVycm9yIE9wdGlvbm5hbCBkZXRhaWxzIGFib3V0IHRoZSBlcnJvcidzIG9yaWdpblxuICAgKiBAcmV0dXJucyBBIFJ4SlMgRXJyb3JPYnNlcnZhYmxlXG4gICAqL1xuICBwcm90ZWN0ZWQgdG9FcnJvck9ic2VydmFibGUocmVxdWVzdDogSURCUmVxdWVzdCwgZXJyb3IgPSBgYCk6IE9ic2VydmFibGU8bmV2ZXI+IHtcblxuICAgIC8qIFRyYW5zZm9ybWluZyBhIEluZGV4ZWREQiBlcnJvciBldmVudCBpbiBhbiBSeEpTIEVycm9yT2JzZXJ2YWJsZSAqL1xuICAgIHJldHVybiAoZnJvbUV2ZW50KHJlcXVlc3QsICdlcnJvcicpIGFzIE9ic2VydmFibGU8RXZlbnQ+KVxuICAgICAgLnBpcGUobWVyZ2VNYXAoKCkgPT4gdGhyb3dFcnJvcihuZXcgRXJyb3IoYEluZGV4ZWREQiAke2Vycm9yfSBpc3N1ZSA6ICR7KHJlcXVlc3QuZXJyb3IgYXMgRE9NRXhjZXB0aW9uKS5tZXNzYWdlfS5gKSkpKTtcblxuICB9XG5cbiAgcHJvdGVjdGVkIHNldEZhbGxiYWNrKHByZWZpeDogc3RyaW5nIHwgbnVsbCk6IHZvaWQge1xuICAgIHRoaXMuZmFsbGJhY2sgPSBuZXcgTG9jYWxTdG9yYWdlRGF0YWJhc2UocHJlZml4KTtcbiAgfVxuXG59XG4iXX0=
/**
* @fileoverview added by tsickle
* @suppress {checkTypes} checked by tsc
* @suppress {checkTypes,extraRequire,uselessCode} checked by tsc
*/

@@ -52,3 +52,3 @@ import { Injectable, PLATFORM_ID, Optional } from '@angular/core';

export { LocalDatabase };
function LocalDatabase_tsickle_Closure_declarations() {
if (false) {
/**

@@ -80,3 +80,2 @@ * @abstract

}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9jYWwtZGF0YWJhc2UuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9Abmd4LXB3YS9sb2NhbC1zdG9yYWdlLyIsInNvdXJjZXMiOlsibGliL2RhdGFiYXNlcy9sb2NhbC1kYXRhYmFzZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O0FBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxXQUFXLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2xFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBR3BELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ3pELE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQy9ELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQzFELE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLFdBQVcsQ0FBQzs7Ozs7Ozs7QUFFakQsTUFBTSwrQkFBK0IsVUFBa0IsRUFBRSxNQUFxQjtJQUU1RSxFQUFFLENBQUMsQ0FBQyxpQkFBaUIsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLFdBQVcsSUFBSSxNQUFNLENBQUMsSUFBSSxDQUFDLFNBQVMsS0FBSyxTQUFTLENBQUMsSUFBSSxDQUFDLFNBQVMsS0FBSyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7O1FBR2xILE1BQU0sQ0FBQyxJQUFJLGlCQUFpQixDQUFDLE1BQU0sQ0FBQyxDQUFDO0tBRXRDO0lBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLGlCQUFpQixDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsY0FBYyxJQUFJLE1BQU0sQ0FBQyxJQUFJLENBQUMsWUFBWSxLQUFLLFNBQVMsQ0FBQyxJQUFJLENBQUMsWUFBWSxLQUFLLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQzs7UUFHbEksTUFBTSxDQUFDLElBQUksb0JBQW9CLENBQUMsTUFBTSxDQUFDLENBQUM7S0FFekM7SUFBQyxJQUFJLENBQUMsQ0FBQzs7UUFHTixNQUFNLENBQUMsSUFBSSxpQkFBaUIsRUFBRSxDQUFDO0tBRWhDO0NBRUY7Ozs7Ozs7O2dCQUVBLFVBQVUsU0FBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtvQkFDbEIsVUFBVSxFQUFFLG9CQUFvQjtvQkFDaEMsSUFBSSxFQUFFO3dCQUNKLFdBQVc7d0JBQ1gsQ0FBQyxJQUFJLFFBQVEsRUFBRSxFQUFFLG9CQUFvQixDQUFDO3FCQUN2QztpQkFDRjs7O3dCQXJDRDs7U0FzQ3NCLGFBQWEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlLCBQTEFURk9STV9JRCwgT3B0aW9uYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IGlzUGxhdGZvcm1Ccm93c2VyIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcblxuaW1wb3J0IHsgSW5kZXhlZERCRGF0YWJhc2UgfSBmcm9tICcuL2luZGV4ZWRkYi1kYXRhYmFzZSc7XG5pbXBvcnQgeyBMb2NhbFN0b3JhZ2VEYXRhYmFzZSB9IGZyb20gJy4vbG9jYWxzdG9yYWdlLWRhdGFiYXNlJztcbmltcG9ydCB7IE1vY2tMb2NhbERhdGFiYXNlIH0gZnJvbSAnLi9tb2NrLWxvY2FsLWRhdGFiYXNlJztcbmltcG9ydCB7IExPQ0FMX1NUT1JBR0VfUFJFRklYIH0gZnJvbSAnLi4vdG9rZW5zJztcblxuZXhwb3J0IGZ1bmN0aW9uIGxvY2FsRGF0YWJhc2VGYWN0b3J5KHBsYXRmb3JtSWQ6IE9iamVjdCwgcHJlZml4OiBzdHJpbmcgfCBudWxsKSB7XG5cbiAgaWYgKGlzUGxhdGZvcm1Ccm93c2VyKHBsYXRmb3JtSWQpICYmICgnaW5kZXhlZERCJyBpbiB3aW5kb3cpICYmIChpbmRleGVkREIgIT09IHVuZGVmaW5lZCkgJiYgKGluZGV4ZWREQiAhPT0gbnVsbCkpIHtcblxuICAgIC8qIFRyeSB3aXRoIEluZGV4ZWREQiBpbiBtb2Rlcm4gYnJvd3NlcnMgKi9cbiAgICByZXR1cm4gbmV3IEluZGV4ZWREQkRhdGFiYXNlKHByZWZpeCk7XG5cbiAgfSBlbHNlIGlmIChpc1BsYXRmb3JtQnJvd3NlcihwbGF0Zm9ybUlkKSAmJiAoJ2xvY2FsU3RvcmFnZScgaW4gd2luZG93KSAmJiAobG9jYWxTdG9yYWdlICE9PSB1bmRlZmluZWQpICYmIChsb2NhbFN0b3JhZ2UgIT09IG51bGwpKSB7XG5cbiAgICAvKiBUcnkgd2l0aCBsb2NhbFN0b3JhZ2UgaW4gb2xkIGJyb3dzZXJzIChJRTkpICovXG4gICAgcmV0dXJuIG5ldyBMb2NhbFN0b3JhZ2VEYXRhYmFzZShwcmVmaXgpO1xuXG4gIH0gZWxzZSB7XG5cbiAgICAvKiBGYWtlIGRhdGFiYXNlIGZvciBzZXJ2ZXItc2lkZSByZW5kZXJpbmcgKFVuaXZlcnNhbCkgKi9cbiAgICByZXR1cm4gbmV3IE1vY2tMb2NhbERhdGFiYXNlKCk7XG5cbiAgfVxuXG59XG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxuICB1c2VGYWN0b3J5OiBsb2NhbERhdGFiYXNlRmFjdG9yeSxcbiAgZGVwczogW1xuICAgIFBMQVRGT1JNX0lELFxuICAgIFtuZXcgT3B0aW9uYWwoKSwgTE9DQUxfU1RPUkFHRV9QUkVGSVhdXG4gIF1cbn0pXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgTG9jYWxEYXRhYmFzZSB7XG5cbiAgYWJzdHJhY3QgZ2V0SXRlbTxUID0gYW55PihrZXk6IHN0cmluZyk6IE9ic2VydmFibGU8VCB8IG51bGw+O1xuICBhYnN0cmFjdCBzZXRJdGVtKGtleTogc3RyaW5nLCBkYXRhOiBhbnkpOiBPYnNlcnZhYmxlPGJvb2xlYW4+O1xuICBhYnN0cmFjdCByZW1vdmVJdGVtKGtleTogc3RyaW5nKTogT2JzZXJ2YWJsZTxib29sZWFuPjtcbiAgYWJzdHJhY3QgY2xlYXIoKTogT2JzZXJ2YWJsZTxib29sZWFuPjtcblxufVxuIl19
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9jYWwtZGF0YWJhc2UuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9Abmd4LXB3YS9sb2NhbC1zdG9yYWdlLyIsInNvdXJjZXMiOlsibGliL2RhdGFiYXNlcy9sb2NhbC1kYXRhYmFzZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O0FBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxXQUFXLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2xFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBR3BELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ3pELE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQy9ELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQzFELE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLFdBQVcsQ0FBQzs7Ozs7Ozs7QUFFakQsTUFBTSxVQUFVLG9CQUFvQixDQUFDLFVBQWtCLEVBQUUsTUFBcUI7SUFFNUUsSUFBSSxpQkFBaUIsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLFdBQVcsSUFBSSxNQUFNLENBQUMsSUFBSSxDQUFDLFNBQVMsS0FBSyxTQUFTLENBQUMsSUFBSSxDQUFDLFNBQVMsS0FBSyxJQUFJLENBQUMsRUFBRTtRQUVqSCwyQ0FBMkM7UUFDM0MsT0FBTyxJQUFJLGlCQUFpQixDQUFDLE1BQU0sQ0FBQyxDQUFDO0tBRXRDO1NBQU0sSUFBSSxpQkFBaUIsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLGNBQWMsSUFBSSxNQUFNLENBQUMsSUFBSSxDQUFDLFlBQVksS0FBSyxTQUFTLENBQUMsSUFBSSxDQUFDLFlBQVksS0FBSyxJQUFJLENBQUMsRUFBRTtRQUVqSSxpREFBaUQ7UUFDakQsT0FBTyxJQUFJLG9CQUFvQixDQUFDLE1BQU0sQ0FBQyxDQUFDO0tBRXpDO1NBQU07UUFFTCx5REFBeUQ7UUFDekQsT0FBTyxJQUFJLGlCQUFpQixFQUFFLENBQUM7S0FFaEM7QUFFSCxDQUFDOzs7O0FBRUQ7SUFBQTtLQWVDOztnQkFmQSxVQUFVLFNBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07b0JBQ2xCLFVBQVUsRUFBRSxvQkFBb0I7b0JBQ2hDLElBQUksRUFBRTt3QkFDSixXQUFXO3dCQUNYLENBQUMsSUFBSSxRQUFRLEVBQUUsRUFBRSxvQkFBb0IsQ0FBQztxQkFDdkM7aUJBQ0Y7Ozt3QkFyQ0Q7Q0E2Q0MsQUFmRCxJQWVDO1NBUHFCLGFBQWE7Ozs7Ozs7O0lBRWpDLHFEQUE2RDs7Ozs7OztJQUM3RCwyREFBOEQ7Ozs7OztJQUM5RCx3REFBc0Q7Ozs7O0lBQ3RELGdEQUFzQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUsIFBMQVRGT1JNX0lELCBPcHRpb25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgaXNQbGF0Zm9ybUJyb3dzZXIgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQgeyBJbmRleGVkREJEYXRhYmFzZSB9IGZyb20gJy4vaW5kZXhlZGRiLWRhdGFiYXNlJztcbmltcG9ydCB7IExvY2FsU3RvcmFnZURhdGFiYXNlIH0gZnJvbSAnLi9sb2NhbHN0b3JhZ2UtZGF0YWJhc2UnO1xuaW1wb3J0IHsgTW9ja0xvY2FsRGF0YWJhc2UgfSBmcm9tICcuL21vY2stbG9jYWwtZGF0YWJhc2UnO1xuaW1wb3J0IHsgTE9DQUxfU1RPUkFHRV9QUkVGSVggfSBmcm9tICcuLi90b2tlbnMnO1xuXG5leHBvcnQgZnVuY3Rpb24gbG9jYWxEYXRhYmFzZUZhY3RvcnkocGxhdGZvcm1JZDogT2JqZWN0LCBwcmVmaXg6IHN0cmluZyB8IG51bGwpIHtcblxuICBpZiAoaXNQbGF0Zm9ybUJyb3dzZXIocGxhdGZvcm1JZCkgJiYgKCdpbmRleGVkREInIGluIHdpbmRvdykgJiYgKGluZGV4ZWREQiAhPT0gdW5kZWZpbmVkKSAmJiAoaW5kZXhlZERCICE9PSBudWxsKSkge1xuXG4gICAgLyogVHJ5IHdpdGggSW5kZXhlZERCIGluIG1vZGVybiBicm93c2VycyAqL1xuICAgIHJldHVybiBuZXcgSW5kZXhlZERCRGF0YWJhc2UocHJlZml4KTtcblxuICB9IGVsc2UgaWYgKGlzUGxhdGZvcm1Ccm93c2VyKHBsYXRmb3JtSWQpICYmICgnbG9jYWxTdG9yYWdlJyBpbiB3aW5kb3cpICYmIChsb2NhbFN0b3JhZ2UgIT09IHVuZGVmaW5lZCkgJiYgKGxvY2FsU3RvcmFnZSAhPT0gbnVsbCkpIHtcblxuICAgIC8qIFRyeSB3aXRoIGxvY2FsU3RvcmFnZSBpbiBvbGQgYnJvd3NlcnMgKElFOSkgKi9cbiAgICByZXR1cm4gbmV3IExvY2FsU3RvcmFnZURhdGFiYXNlKHByZWZpeCk7XG5cbiAgfSBlbHNlIHtcblxuICAgIC8qIEZha2UgZGF0YWJhc2UgZm9yIHNlcnZlci1zaWRlIHJlbmRlcmluZyAoVW5pdmVyc2FsKSAqL1xuICAgIHJldHVybiBuZXcgTW9ja0xvY2FsRGF0YWJhc2UoKTtcblxuICB9XG5cbn1cblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCcsXG4gIHVzZUZhY3Rvcnk6IGxvY2FsRGF0YWJhc2VGYWN0b3J5LFxuICBkZXBzOiBbXG4gICAgUExBVEZPUk1fSUQsXG4gICAgW25ldyBPcHRpb25hbCgpLCBMT0NBTF9TVE9SQUdFX1BSRUZJWF1cbiAgXVxufSlcbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBMb2NhbERhdGFiYXNlIHtcblxuICBhYnN0cmFjdCBnZXRJdGVtPFQgPSBhbnk+KGtleTogc3RyaW5nKTogT2JzZXJ2YWJsZTxUIHwgbnVsbD47XG4gIGFic3RyYWN0IHNldEl0ZW0oa2V5OiBzdHJpbmcsIGRhdGE6IGFueSk6IE9ic2VydmFibGU8Ym9vbGVhbj47XG4gIGFic3RyYWN0IHJlbW92ZUl0ZW0oa2V5OiBzdHJpbmcpOiBPYnNlcnZhYmxlPGJvb2xlYW4+O1xuICBhYnN0cmFjdCBjbGVhcigpOiBPYnNlcnZhYmxlPGJvb2xlYW4+O1xuXG59XG4iXX0=
/**
* @fileoverview added by tsickle
* @suppress {checkTypes} checked by tsc
* @suppress {checkTypes,extraRequire,uselessCode} checked by tsc
*/

@@ -38,4 +38,6 @@ import { Injectable, Optional, Inject } from '@angular/core';

function (key) {
var /** @type {?} */ unparsedData = localStorage.getItem("" + this.prefix + key);
var /** @type {?} */ parsedData = null;
/** @type {?} */
var unparsedData = localStorage.getItem("" + this.prefix + key);
/** @type {?} */
var parsedData = null;
if (unparsedData != null) {

@@ -45,3 +47,3 @@ try {

}
catch (/** @type {?} */ error) {
catch (error) {
return throwError(new Error("Invalid data in localStorage."));

@@ -122,3 +124,3 @@ }

export { LocalStorageDatabase };
function LocalStorageDatabase_tsickle_Closure_declarations() {
if (false) {
/** @type {?} */

@@ -129,3 +131,2 @@ LocalStorageDatabase.prototype.prefix;

}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9jYWxzdG9yYWdlLWRhdGFiYXNlLmpzIiwic291cmNlUm9vdCI6Im5nOi8vQG5neC1wd2EvbG9jYWwtc3RvcmFnZS8iLCJzb3VyY2VzIjpbImxpYi9kYXRhYmFzZXMvbG9jYWxzdG9yYWdlLWRhdGFiYXNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7QUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDN0QsT0FBTyxFQUFjLEVBQUUsRUFBRSxVQUFVLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFHbEQsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sV0FBVyxDQUFDOzs7O0lBVS9DLDhCQUFnRSxVQUFnQztzREFBQTtRQUFoQyxlQUFVLEdBQVYsVUFBVSxDQUFzQjs7c0JBRjdFLEVBQUU7UUFJbkIsRUFBRSxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQztZQUNmLElBQUksQ0FBQyxNQUFNLEdBQU0sVUFBVSxNQUFHLENBQUM7U0FDaEM7S0FFRjtJQUVEOzs7O09BSUc7Ozs7Ozs7SUFDSCxzQ0FBTzs7Ozs7O0lBQVAsVUFBaUIsR0FBVztRQUUxQixxQkFBTSxZQUFZLEdBQUcsWUFBWSxDQUFDLE9BQU8sQ0FBQyxLQUFHLElBQUksQ0FBQyxNQUFNLEdBQUcsR0FBSyxDQUFDLENBQUM7UUFDbEUscUJBQUksVUFBVSxHQUFhLElBQUksQ0FBQztRQUVoQyxFQUFFLENBQUMsQ0FBQyxZQUFZLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQztZQUV6QixJQUFJLENBQUM7Z0JBQ0gsVUFBVSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsWUFBWSxDQUFDLENBQUM7YUFDdkM7WUFBQyxLQUFLLENBQUMsQ0FBQyxpQkFBQSxLQUFLLEVBQUUsQ0FBQztnQkFDZixNQUFNLENBQUMsVUFBVSxDQUFDLElBQUksS0FBSyxDQUFDLCtCQUErQixDQUFDLENBQUMsQ0FBQzthQUMvRDtTQUVGO1FBRUQsTUFBTSxDQUFDLEVBQUUsQ0FBQyxVQUFVLENBQUMsQ0FBQztLQUV2QjtJQUVEOzs7OztPQUtHOzs7Ozs7O0lBQ0gsc0NBQU87Ozs7OztJQUFQLFVBQVEsR0FBVyxFQUFFLElBQVM7UUFFNUIsWUFBWSxDQUFDLE9BQU8sQ0FBQyxLQUFHLElBQUksQ0FBQyxNQUFNLEdBQUcsR0FBSyxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztRQUVuRSxNQUFNLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDO0tBRWpCO0lBRUQ7Ozs7T0FJRzs7Ozs7O0lBQ0gseUNBQVU7Ozs7O0lBQVYsVUFBVyxHQUFXO1FBRXBCLFlBQVksQ0FBQyxVQUFVLENBQUMsS0FBRyxJQUFJLENBQUMsTUFBTSxHQUFHLEdBQUssQ0FBQyxDQUFDO1FBRWhELE1BQU0sQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUM7S0FFakI7SUFFRDs7O09BR0c7Ozs7O0lBQ0gsb0NBQUs7Ozs7SUFBTDtRQUVFLFlBQVksQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUVyQixNQUFNLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDO0tBRWpCOztnQkE3RUYsVUFBVSxTQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQjs7OztnREFNYyxRQUFRLFlBQUksTUFBTSxTQUFDLG9CQUFvQjs7OytCQWR0RDs7U0FTYSxvQkFBb0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlLCBPcHRpb25hbCwgSW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBvZiwgdGhyb3dFcnJvciB9IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQgeyBMb2NhbERhdGFiYXNlIH0gZnJvbSAnLi9sb2NhbC1kYXRhYmFzZSc7XG5pbXBvcnQgeyBMT0NBTF9TVE9SQUdFX1BSRUZJWCB9IGZyb20gJy4uL3Rva2Vucyc7XG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXG59KVxuZXhwb3J0IGNsYXNzIExvY2FsU3RvcmFnZURhdGFiYXNlIGltcGxlbWVudHMgTG9jYWxEYXRhYmFzZSB7XG5cbiAgLyogSW5pdGlhbGl6aW5nIG5hdGl2ZSBsb2NhbFN0b3JhZ2UgcmlnaHQgbm93IHRvIGJlIGFibGUgdG8gY2hlY2sgaXRzIHN1cHBvcnQgb24gY2xhc3MgaW5zdGFuY2lhdGlvbiAqL1xuICBwcm90ZWN0ZWQgcHJlZml4ID0gJyc7XG5cbiAgY29uc3RydWN0b3IoQE9wdGlvbmFsKCkgQEluamVjdChMT0NBTF9TVE9SQUdFX1BSRUZJWCkgcHJvdGVjdGVkIHVzZXJQcmVmaXg6IHN0cmluZyB8IG51bGwgPSBudWxsKSB7XG5cbiAgICBpZiAodXNlclByZWZpeCkge1xuICAgICAgdGhpcy5wcmVmaXggPSBgJHt1c2VyUHJlZml4fV9gO1xuICAgIH1cblxuICB9XG5cbiAgLyoqXG4gICAqIEdldHMgYW4gaXRlbSB2YWx1ZSBpbiBsb2NhbCBzdG9yYWdlXG4gICAqIEBwYXJhbSBrZXkgVGhlIGl0ZW0ncyBrZXlcbiAgICogQHJldHVybnMgVGhlIGl0ZW0ncyB2YWx1ZSBpZiB0aGUga2V5IGV4aXN0cywgbnVsbCBvdGhlcndpc2UsIHdyYXBwZWQgaW4gYW4gUnhKUyBPYnNlcnZhYmxlXG4gICAqL1xuICBnZXRJdGVtPFQgPSBhbnk+KGtleTogc3RyaW5nKTogT2JzZXJ2YWJsZTxUIHwgbnVsbD4ge1xuXG4gICAgY29uc3QgdW5wYXJzZWREYXRhID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0oYCR7dGhpcy5wcmVmaXh9JHtrZXl9YCk7XG4gICAgbGV0IHBhcnNlZERhdGE6IFQgfCBudWxsID0gbnVsbDtcblxuICAgIGlmICh1bnBhcnNlZERhdGEgIT0gbnVsbCkge1xuXG4gICAgICB0cnkge1xuICAgICAgICBwYXJzZWREYXRhID0gSlNPTi5wYXJzZSh1bnBhcnNlZERhdGEpO1xuICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgcmV0dXJuIHRocm93RXJyb3IobmV3IEVycm9yKGBJbnZhbGlkIGRhdGEgaW4gbG9jYWxTdG9yYWdlLmApKTtcbiAgICAgIH1cblxuICAgIH1cblxuICAgIHJldHVybiBvZihwYXJzZWREYXRhKTtcblxuICB9XG5cbiAgLyoqXG4gICAqIFNldHMgYW4gaXRlbSBpbiBsb2NhbCBzdG9yYWdlXG4gICAqIEBwYXJhbSBrZXkgVGhlIGl0ZW0ncyBrZXlcbiAgICogQHBhcmFtIGRhdGEgVGhlIGl0ZW0ncyB2YWx1ZSwgbXVzdCBOT1QgYmUgbnVsbCBvciB1bmRlZmluZWRcbiAgICogQHJldHVybnMgQW4gUnhKUyBPYnNlcnZhYmxlIHRvIHdhaXQgdGhlIGVuZCBvZiB0aGUgb3BlcmF0aW9uXG4gICAqL1xuICBzZXRJdGVtKGtleTogc3RyaW5nLCBkYXRhOiBhbnkpOiBPYnNlcnZhYmxlPGJvb2xlYW4+IHtcblxuICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKGAke3RoaXMucHJlZml4fSR7a2V5fWAsIEpTT04uc3RyaW5naWZ5KGRhdGEpKTtcblxuICAgIHJldHVybiBvZih0cnVlKTtcblxuICB9XG5cbiAgLyoqXG4gICAqIERlbGV0ZXMgYW4gaXRlbSBpbiBsb2NhbCBzdG9yYWdlXG4gICAqIEBwYXJhbSBrZXkgVGhlIGl0ZW0ncyBrZXlcbiAgICogQHJldHVybnMgQW4gUnhKUyBPYnNlcnZhYmxlIHRvIHdhaXQgdGhlIGVuZCBvZiB0aGUgb3BlcmF0aW9uXG4gICAqL1xuICByZW1vdmVJdGVtKGtleTogc3RyaW5nKTogT2JzZXJ2YWJsZTxib29sZWFuPiB7XG5cbiAgICBsb2NhbFN0b3JhZ2UucmVtb3ZlSXRlbShgJHt0aGlzLnByZWZpeH0ke2tleX1gKTtcblxuICAgIHJldHVybiBvZih0cnVlKTtcblxuICB9XG5cbiAgLyoqXG4gICAqIERlbGV0ZXMgYWxsIGl0ZW1zIGZyb20gbG9jYWwgc3RvcmFnZVxuICAgKiBAcmV0dXJucyBBbiBSeEpTIE9ic2VydmFibGUgdG8gd2FpdCB0aGUgZW5kIG9mIHRoZSBvcGVyYXRpb25cbiAgICovXG4gIGNsZWFyKCk6IE9ic2VydmFibGU8Ym9vbGVhbj4ge1xuXG4gICAgbG9jYWxTdG9yYWdlLmNsZWFyKCk7XG5cbiAgICByZXR1cm4gb2YodHJ1ZSk7XG5cbiAgfVxuXG59XG4iXX0=
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9jYWxzdG9yYWdlLWRhdGFiYXNlLmpzIiwic291cmNlUm9vdCI6Im5nOi8vQG5neC1wd2EvbG9jYWwtc3RvcmFnZS8iLCJzb3VyY2VzIjpbImxpYi9kYXRhYmFzZXMvbG9jYWxzdG9yYWdlLWRhdGFiYXNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7QUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDN0QsT0FBTyxFQUFjLEVBQUUsRUFBRSxVQUFVLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFHbEQsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sV0FBVyxDQUFDOzs7QUFFakQ7SUFRRSw4QkFBZ0UsVUFBZ0M7UUFBaEMsMkJBQUEsRUFBQSxpQkFBZ0M7UUFBaEMsZUFBVSxHQUFWLFVBQVUsQ0FBc0I7O1FBRnRGLFdBQU0sR0FBRyxFQUFFLENBQUM7UUFJcEIsSUFBSSxVQUFVLEVBQUU7WUFDZCxJQUFJLENBQUMsTUFBTSxHQUFNLFVBQVUsTUFBRyxDQUFDO1NBQ2hDO0lBRUgsQ0FBQztJQUVEOzs7O09BSUc7Ozs7Ozs7SUFDSCxzQ0FBTzs7Ozs7O0lBQVAsVUFBaUIsR0FBVzs7WUFFcEIsWUFBWSxHQUFHLFlBQVksQ0FBQyxPQUFPLENBQUMsS0FBRyxJQUFJLENBQUMsTUFBTSxHQUFHLEdBQUssQ0FBQzs7WUFDN0QsVUFBVSxHQUFhLElBQUk7UUFFL0IsSUFBSSxZQUFZLElBQUksSUFBSSxFQUFFO1lBRXhCLElBQUk7Z0JBQ0YsVUFBVSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsWUFBWSxDQUFDLENBQUM7YUFDdkM7WUFBQyxPQUFPLEtBQUssRUFBRTtnQkFDZCxPQUFPLFVBQVUsQ0FBQyxJQUFJLEtBQUssQ0FBQywrQkFBK0IsQ0FBQyxDQUFDLENBQUM7YUFDL0Q7U0FFRjtRQUVELE9BQU8sRUFBRSxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBRXhCLENBQUM7SUFFRDs7Ozs7T0FLRzs7Ozs7OztJQUNILHNDQUFPOzs7Ozs7SUFBUCxVQUFRLEdBQVcsRUFBRSxJQUFTO1FBRTVCLFlBQVksQ0FBQyxPQUFPLENBQUMsS0FBRyxJQUFJLENBQUMsTUFBTSxHQUFHLEdBQUssRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7UUFFbkUsT0FBTyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUM7SUFFbEIsQ0FBQztJQUVEOzs7O09BSUc7Ozs7OztJQUNILHlDQUFVOzs7OztJQUFWLFVBQVcsR0FBVztRQUVwQixZQUFZLENBQUMsVUFBVSxDQUFDLEtBQUcsSUFBSSxDQUFDLE1BQU0sR0FBRyxHQUFLLENBQUMsQ0FBQztRQUVoRCxPQUFPLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUVsQixDQUFDO0lBRUQ7OztPQUdHOzs7OztJQUNILG9DQUFLOzs7O0lBQUw7UUFFRSxZQUFZLENBQUMsS0FBSyxFQUFFLENBQUM7UUFFckIsT0FBTyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUM7SUFFbEIsQ0FBQzs7Z0JBN0VGLFVBQVUsU0FBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkI7Ozs7Z0RBTWMsUUFBUSxZQUFJLE1BQU0sU0FBQyxvQkFBb0I7OzsrQkFkdEQ7Q0FxRkMsQUEvRUQsSUErRUM7U0E1RVksb0JBQW9COzs7SUFHL0Isc0NBQXNCOztJQUVWLDBDQUFvRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUsIE9wdGlvbmFsLCBJbmplY3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE9ic2VydmFibGUsIG9mLCB0aHJvd0Vycm9yIH0gZnJvbSAncnhqcyc7XG5cbmltcG9ydCB7IExvY2FsRGF0YWJhc2UgfSBmcm9tICcuL2xvY2FsLWRhdGFiYXNlJztcbmltcG9ydCB7IExPQ0FMX1NUT1JBR0VfUFJFRklYIH0gZnJvbSAnLi4vdG9rZW5zJztcblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCdcbn0pXG5leHBvcnQgY2xhc3MgTG9jYWxTdG9yYWdlRGF0YWJhc2UgaW1wbGVtZW50cyBMb2NhbERhdGFiYXNlIHtcblxuICAvKiBJbml0aWFsaXppbmcgbmF0aXZlIGxvY2FsU3RvcmFnZSByaWdodCBub3cgdG8gYmUgYWJsZSB0byBjaGVjayBpdHMgc3VwcG9ydCBvbiBjbGFzcyBpbnN0YW5jaWF0aW9uICovXG4gIHByb3RlY3RlZCBwcmVmaXggPSAnJztcblxuICBjb25zdHJ1Y3RvcihAT3B0aW9uYWwoKSBASW5qZWN0KExPQ0FMX1NUT1JBR0VfUFJFRklYKSBwcm90ZWN0ZWQgdXNlclByZWZpeDogc3RyaW5nIHwgbnVsbCA9IG51bGwpIHtcblxuICAgIGlmICh1c2VyUHJlZml4KSB7XG4gICAgICB0aGlzLnByZWZpeCA9IGAke3VzZXJQcmVmaXh9X2A7XG4gICAgfVxuXG4gIH1cblxuICAvKipcbiAgICogR2V0cyBhbiBpdGVtIHZhbHVlIGluIGxvY2FsIHN0b3JhZ2VcbiAgICogQHBhcmFtIGtleSBUaGUgaXRlbSdzIGtleVxuICAgKiBAcmV0dXJucyBUaGUgaXRlbSdzIHZhbHVlIGlmIHRoZSBrZXkgZXhpc3RzLCBudWxsIG90aGVyd2lzZSwgd3JhcHBlZCBpbiBhbiBSeEpTIE9ic2VydmFibGVcbiAgICovXG4gIGdldEl0ZW08VCA9IGFueT4oa2V5OiBzdHJpbmcpOiBPYnNlcnZhYmxlPFQgfCBudWxsPiB7XG5cbiAgICBjb25zdCB1bnBhcnNlZERhdGEgPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbShgJHt0aGlzLnByZWZpeH0ke2tleX1gKTtcbiAgICBsZXQgcGFyc2VkRGF0YTogVCB8IG51bGwgPSBudWxsO1xuXG4gICAgaWYgKHVucGFyc2VkRGF0YSAhPSBudWxsKSB7XG5cbiAgICAgIHRyeSB7XG4gICAgICAgIHBhcnNlZERhdGEgPSBKU09OLnBhcnNlKHVucGFyc2VkRGF0YSk7XG4gICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICByZXR1cm4gdGhyb3dFcnJvcihuZXcgRXJyb3IoYEludmFsaWQgZGF0YSBpbiBsb2NhbFN0b3JhZ2UuYCkpO1xuICAgICAgfVxuXG4gICAgfVxuXG4gICAgcmV0dXJuIG9mKHBhcnNlZERhdGEpO1xuXG4gIH1cblxuICAvKipcbiAgICogU2V0cyBhbiBpdGVtIGluIGxvY2FsIHN0b3JhZ2VcbiAgICogQHBhcmFtIGtleSBUaGUgaXRlbSdzIGtleVxuICAgKiBAcGFyYW0gZGF0YSBUaGUgaXRlbSdzIHZhbHVlLCBtdXN0IE5PVCBiZSBudWxsIG9yIHVuZGVmaW5lZFxuICAgKiBAcmV0dXJucyBBbiBSeEpTIE9ic2VydmFibGUgdG8gd2FpdCB0aGUgZW5kIG9mIHRoZSBvcGVyYXRpb25cbiAgICovXG4gIHNldEl0ZW0oa2V5OiBzdHJpbmcsIGRhdGE6IGFueSk6IE9ic2VydmFibGU8Ym9vbGVhbj4ge1xuXG4gICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oYCR7dGhpcy5wcmVmaXh9JHtrZXl9YCwgSlNPTi5zdHJpbmdpZnkoZGF0YSkpO1xuXG4gICAgcmV0dXJuIG9mKHRydWUpO1xuXG4gIH1cblxuICAvKipcbiAgICogRGVsZXRlcyBhbiBpdGVtIGluIGxvY2FsIHN0b3JhZ2VcbiAgICogQHBhcmFtIGtleSBUaGUgaXRlbSdzIGtleVxuICAgKiBAcmV0dXJucyBBbiBSeEpTIE9ic2VydmFibGUgdG8gd2FpdCB0aGUgZW5kIG9mIHRoZSBvcGVyYXRpb25cbiAgICovXG4gIHJlbW92ZUl0ZW0oa2V5OiBzdHJpbmcpOiBPYnNlcnZhYmxlPGJvb2xlYW4+IHtcblxuICAgIGxvY2FsU3RvcmFnZS5yZW1vdmVJdGVtKGAke3RoaXMucHJlZml4fSR7a2V5fWApO1xuXG4gICAgcmV0dXJuIG9mKHRydWUpO1xuXG4gIH1cblxuICAvKipcbiAgICogRGVsZXRlcyBhbGwgaXRlbXMgZnJvbSBsb2NhbCBzdG9yYWdlXG4gICAqIEByZXR1cm5zIEFuIFJ4SlMgT2JzZXJ2YWJsZSB0byB3YWl0IHRoZSBlbmQgb2YgdGhlIG9wZXJhdGlvblxuICAgKi9cbiAgY2xlYXIoKTogT2JzZXJ2YWJsZTxib29sZWFuPiB7XG5cbiAgICBsb2NhbFN0b3JhZ2UuY2xlYXIoKTtcblxuICAgIHJldHVybiBvZih0cnVlKTtcblxuICB9XG5cbn1cbiJdfQ==
/**
* @fileoverview added by tsickle
* @suppress {checkTypes} checked by tsc
* @suppress {checkTypes,extraRequire,uselessCode} checked by tsc
*/

@@ -30,3 +30,4 @@ import { Injectable } from '@angular/core';

function (key) {
var /** @type {?} */ rawData = this.localStorage.get(key);
/** @type {?} */
var rawData = this.localStorage.get(key);
return of((rawData !== undefined) ? rawData : null);

@@ -100,7 +101,6 @@ };

export { MockLocalDatabase };
function MockLocalDatabase_tsickle_Closure_declarations() {
if (false) {
/** @type {?} */
MockLocalDatabase.prototype.localStorage;
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9jay1sb2NhbC1kYXRhYmFzZS5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BuZ3gtcHdhL2xvY2FsLXN0b3JhZ2UvIiwic291cmNlcyI6WyJsaWIvZGF0YWJhc2VzL21vY2stbG9jYWwtZGF0YWJhc2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUFjLEVBQUUsRUFBRSxNQUFNLE1BQU0sQ0FBQzs7Ozs0QkFTWCxJQUFJLEdBQUcsRUFBZTs7SUFFL0M7Ozs7T0FJRzs7Ozs7OztJQUNGLG1DQUFPOzs7Ozs7SUFBUCxVQUFpQixHQUFXO1FBRTNCLHFCQUFNLE9BQU8sR0FBYSxJQUFJLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUVyRCxNQUFNLENBQUMsRUFBRSxDQUFDLENBQUMsT0FBTyxLQUFLLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDO0tBRXJEO0lBRUQ7Ozs7O09BS0c7Ozs7Ozs7SUFDRixtQ0FBTzs7Ozs7O0lBQVAsVUFBUSxHQUFXLEVBQUUsSUFBUztRQUU3QixJQUFJLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFFakMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQztLQUVqQjtJQUVEOzs7O09BSUc7Ozs7OztJQUNGLHNDQUFVOzs7OztJQUFWLFVBQVcsR0FBVztRQUVyQixJQUFJLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUU5QixNQUFNLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDO0tBRWpCO0lBRUQ7OztPQUdHOzs7OztJQUNGLGlDQUFLOzs7O0lBQUw7UUFFQyxJQUFJLENBQUMsWUFBWSxDQUFDLEtBQUssRUFBRSxDQUFDO1FBRTFCLE1BQU0sQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUM7S0FFakI7O2dCQXpERixVQUFVLFNBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25COzs7NEJBUEQ7O1NBUWEsaUJBQWlCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgb2YgfSBmcm9tICdyeGpzJztcblxuaW1wb3J0IHsgTG9jYWxEYXRhYmFzZSB9IGZyb20gJy4vbG9jYWwtZGF0YWJhc2UnO1xuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290J1xufSlcbmV4cG9ydCBjbGFzcyBNb2NrTG9jYWxEYXRhYmFzZSBpbXBsZW1lbnRzIExvY2FsRGF0YWJhc2Uge1xuXG4gIHByb3RlY3RlZCBsb2NhbFN0b3JhZ2UgPSBuZXcgTWFwPHN0cmluZywgYW55PigpO1xuXG4gIC8qKlxuICAgKiBHZXRzIGFuIGl0ZW0gdmFsdWUgaW4gbG9jYWwgc3RvcmFnZVxuICAgKiBAcGFyYW0ga2V5IFRoZSBpdGVtJ3Mga2V5XG4gICAqIEByZXR1cm5zIFRoZSBpdGVtJ3MgdmFsdWUgaWYgdGhlIGtleSBleGlzdHMsIG51bGwgb3RoZXJ3aXNlLCB3cmFwcGVkIGluIGFuIFJ4SlMgT2JzZXJ2YWJsZVxuICAgKi9cbiAgIGdldEl0ZW08VCA9IGFueT4oa2V5OiBzdHJpbmcpOiBPYnNlcnZhYmxlPFQgfMKgbnVsbD4ge1xuXG4gICAgY29uc3QgcmF3RGF0YTogVCB8IG51bGwgPSB0aGlzLmxvY2FsU3RvcmFnZS5nZXQoa2V5KTtcblxuICAgIHJldHVybiBvZigocmF3RGF0YSAhPT0gdW5kZWZpbmVkKSA/IHJhd0RhdGEgOiBudWxsKTtcblxuICB9XG5cbiAgLyoqXG4gICAqIFNldHMgYW4gaXRlbSBpbiBsb2NhbCBzdG9yYWdlXG4gICAqIEBwYXJhbSBrZXkgVGhlIGl0ZW0ncyBrZXlcbiAgICogQHBhcmFtIGRhdGEgVGhlIGl0ZW0ncyB2YWx1ZSwgbXVzdCBOT1QgYmUgbnVsbCBvciB1bmRlZmluZWRcbiAgICogQHJldHVybnMgQW4gUnhKUyBPYnNlcnZhYmxlIHRvIHdhaXQgdGhlIGVuZCBvZiB0aGUgb3BlcmF0aW9uXG4gICAqL1xuICAgc2V0SXRlbShrZXk6IHN0cmluZywgZGF0YTogYW55KTogT2JzZXJ2YWJsZTxib29sZWFuPiB7XG5cbiAgICB0aGlzLmxvY2FsU3RvcmFnZS5zZXQoa2V5LCBkYXRhKTtcblxuICAgIHJldHVybiBvZih0cnVlKTtcblxuICB9XG5cbiAgLyoqXG4gICAqIERlbGV0ZXMgYW4gaXRlbSBpbiBsb2NhbCBzdG9yYWdlXG4gICAqIEBwYXJhbSBrZXkgVGhlIGl0ZW0ncyBrZXlcbiAgICogQHJldHVybnMgQW4gUnhKUyBPYnNlcnZhYmxlIHRvIHdhaXQgdGhlIGVuZCBvZiB0aGUgb3BlcmF0aW9uXG4gICAqL1xuICAgcmVtb3ZlSXRlbShrZXk6IHN0cmluZyk6IE9ic2VydmFibGU8Ym9vbGVhbj4ge1xuXG4gICAgdGhpcy5sb2NhbFN0b3JhZ2UuZGVsZXRlKGtleSk7XG5cbiAgICByZXR1cm4gb2YodHJ1ZSk7XG5cbiAgfVxuXG4gIC8qKlxuICAgKiBEZWxldGVzIGFsbCBpdGVtcyBmcm9tIGxvY2FsIHN0b3JhZ2VcbiAgICogQHJldHVybnMgQW4gUnhKUyBPYnNlcnZhYmxlIHRvIHdhaXQgdGhlIGVuZCBvZiB0aGUgb3BlcmF0aW9uXG4gICAqL1xuICAgY2xlYXIoKTogT2JzZXJ2YWJsZTxib29sZWFuPiB7XG5cbiAgICB0aGlzLmxvY2FsU3RvcmFnZS5jbGVhcigpO1xuXG4gICAgcmV0dXJuIG9mKHRydWUpO1xuXG4gIH1cblxufVxuIl19
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9jay1sb2NhbC1kYXRhYmFzZS5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BuZ3gtcHdhL2xvY2FsLXN0b3JhZ2UvIiwic291cmNlcyI6WyJsaWIvZGF0YWJhc2VzL21vY2stbG9jYWwtZGF0YWJhc2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUFjLEVBQUUsRUFBRSxNQUFNLE1BQU0sQ0FBQzs7QUFJdEM7SUFBQTtRQUtZLGlCQUFZLEdBQUcsSUFBSSxHQUFHLEVBQWUsQ0FBQztLQXNEakQ7SUFwREM7Ozs7T0FJRzs7Ozs7OztJQUNGLG1DQUFPOzs7Ozs7SUFBUCxVQUFpQixHQUFXOztZQUVyQixPQUFPLEdBQWEsSUFBSSxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDO1FBRXBELE9BQU8sRUFBRSxDQUFDLENBQUMsT0FBTyxLQUFLLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBRXRELENBQUM7SUFFRDs7Ozs7T0FLRzs7Ozs7OztJQUNGLG1DQUFPOzs7Ozs7SUFBUCxVQUFRLEdBQVcsRUFBRSxJQUFTO1FBRTdCLElBQUksQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxJQUFJLENBQUMsQ0FBQztRQUVqQyxPQUFPLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUVsQixDQUFDO0lBRUQ7Ozs7T0FJRzs7Ozs7O0lBQ0Ysc0NBQVU7Ozs7O0lBQVYsVUFBVyxHQUFXO1FBRXJCLElBQUksQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBRTlCLE9BQU8sRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBRWxCLENBQUM7SUFFRDs7O09BR0c7Ozs7O0lBQ0YsaUNBQUs7Ozs7SUFBTDtRQUVDLElBQUksQ0FBQyxZQUFZLENBQUMsS0FBSyxFQUFFLENBQUM7UUFFMUIsT0FBTyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUM7SUFFbEIsQ0FBQzs7Z0JBekRGLFVBQVUsU0FBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkI7Ozs0QkFQRDtDQWdFQyxBQTNERCxJQTJEQztTQXhEWSxpQkFBaUI7OztJQUU1Qix5Q0FBZ0QiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBvZiB9IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQgeyBMb2NhbERhdGFiYXNlIH0gZnJvbSAnLi9sb2NhbC1kYXRhYmFzZSc7XG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXG59KVxuZXhwb3J0IGNsYXNzIE1vY2tMb2NhbERhdGFiYXNlIGltcGxlbWVudHMgTG9jYWxEYXRhYmFzZSB7XG5cbiAgcHJvdGVjdGVkIGxvY2FsU3RvcmFnZSA9IG5ldyBNYXA8c3RyaW5nLCBhbnk+KCk7XG5cbiAgLyoqXG4gICAqIEdldHMgYW4gaXRlbSB2YWx1ZSBpbiBsb2NhbCBzdG9yYWdlXG4gICAqIEBwYXJhbSBrZXkgVGhlIGl0ZW0ncyBrZXlcbiAgICogQHJldHVybnMgVGhlIGl0ZW0ncyB2YWx1ZSBpZiB0aGUga2V5IGV4aXN0cywgbnVsbCBvdGhlcndpc2UsIHdyYXBwZWQgaW4gYW4gUnhKUyBPYnNlcnZhYmxlXG4gICAqL1xuICAgZ2V0SXRlbTxUID0gYW55PihrZXk6IHN0cmluZyk6IE9ic2VydmFibGU8VCB8wqBudWxsPiB7XG5cbiAgICBjb25zdCByYXdEYXRhOiBUIHwgbnVsbCA9IHRoaXMubG9jYWxTdG9yYWdlLmdldChrZXkpO1xuXG4gICAgcmV0dXJuIG9mKChyYXdEYXRhICE9PSB1bmRlZmluZWQpID8gcmF3RGF0YSA6IG51bGwpO1xuXG4gIH1cblxuICAvKipcbiAgICogU2V0cyBhbiBpdGVtIGluIGxvY2FsIHN0b3JhZ2VcbiAgICogQHBhcmFtIGtleSBUaGUgaXRlbSdzIGtleVxuICAgKiBAcGFyYW0gZGF0YSBUaGUgaXRlbSdzIHZhbHVlLCBtdXN0IE5PVCBiZSBudWxsIG9yIHVuZGVmaW5lZFxuICAgKiBAcmV0dXJucyBBbiBSeEpTIE9ic2VydmFibGUgdG8gd2FpdCB0aGUgZW5kIG9mIHRoZSBvcGVyYXRpb25cbiAgICovXG4gICBzZXRJdGVtKGtleTogc3RyaW5nLCBkYXRhOiBhbnkpOiBPYnNlcnZhYmxlPGJvb2xlYW4+IHtcblxuICAgIHRoaXMubG9jYWxTdG9yYWdlLnNldChrZXksIGRhdGEpO1xuXG4gICAgcmV0dXJuIG9mKHRydWUpO1xuXG4gIH1cblxuICAvKipcbiAgICogRGVsZXRlcyBhbiBpdGVtIGluIGxvY2FsIHN0b3JhZ2VcbiAgICogQHBhcmFtIGtleSBUaGUgaXRlbSdzIGtleVxuICAgKiBAcmV0dXJucyBBbiBSeEpTIE9ic2VydmFibGUgdG8gd2FpdCB0aGUgZW5kIG9mIHRoZSBvcGVyYXRpb25cbiAgICovXG4gICByZW1vdmVJdGVtKGtleTogc3RyaW5nKTogT2JzZXJ2YWJsZTxib29sZWFuPiB7XG5cbiAgICB0aGlzLmxvY2FsU3RvcmFnZS5kZWxldGUoa2V5KTtcblxuICAgIHJldHVybiBvZih0cnVlKTtcblxuICB9XG5cbiAgLyoqXG4gICAqIERlbGV0ZXMgYWxsIGl0ZW1zIGZyb20gbG9jYWwgc3RvcmFnZVxuICAgKiBAcmV0dXJucyBBbiBSeEpTIE9ic2VydmFibGUgdG8gd2FpdCB0aGUgZW5kIG9mIHRoZSBvcGVyYXRpb25cbiAgICovXG4gICBjbGVhcigpOiBPYnNlcnZhYmxlPGJvb2xlYW4+IHtcblxuICAgIHRoaXMubG9jYWxTdG9yYWdlLmNsZWFyKCk7XG5cbiAgICByZXR1cm4gb2YodHJ1ZSk7XG5cbiAgfVxuXG59XG4iXX0=
/**
* @fileoverview added by tsickle
* @suppress {checkTypes} checked by tsc
* @suppress {checkTypes,extraRequire,uselessCode} checked by tsc
*/

@@ -17,3 +17,3 @@ import { Injectable } from '@angular/core';

export function LSGetItemOptions() { }
function LSGetItemOptions_tsickle_Closure_declarations() {
if (false) {
/** @type {?|undefined} */

@@ -52,10 +52,12 @@ LSGetItemOptions.prototype.schema;

if (options === void 0) { options = this.getItemOptionsDefault; }
return this.database.getItem(key).pipe(/* Validate data upon a json schema if requested */
return this.database.getItem(key).pipe(
/* Validate data upon a json schema if requested */
mergeMap(function (data) {
if (options.schema && data !== null) {
var /** @type {?} */ validation = true;
/** @type {?} */
var validation = true;
try {
validation = _this.jsonValidator.validate(data, options.schema);
}
catch (/** @type {?} */ error) {
catch (error) {
return throwError(error);

@@ -187,3 +189,3 @@ }

export { LocalStorage };
function LocalStorage_tsickle_Closure_declarations() {
if (false) {
/** @type {?} */

@@ -196,3 +198,2 @@ LocalStorage.prototype.getItemOptionsDefault;

}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGliLnNlcnZpY2UuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9Abmd4LXB3YS9sb2NhbC1zdG9yYWdlLyIsInNvdXJjZXMiOlsibGliL2xpYi5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7QUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBYyxVQUFVLEVBQUUsRUFBRSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ2xELE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUUxQyxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFFM0QsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLDZCQUE2QixDQUFDOzs7Ozs7Ozs7Ozs7O0lBZTFELHNCQUFzQixRQUF1QixFQUFZLGFBQTRCO1FBQS9ELGFBQVEsR0FBUixRQUFRLENBQWU7UUFBWSxrQkFBYSxHQUFiLGFBQWEsQ0FBZTtxQ0FKeEI7WUFDM0QsTUFBTSxFQUFFLElBQUk7U0FDYjtLQUV3RjtJQUV6Rjs7OztPQUlHOzs7Ozs7OztJQUNILDhCQUFPOzs7Ozs7O0lBQVAsVUFBaUIsR0FBVyxFQUFFLE9BQXNEO1FBQXBGLGlCQTJCQztRQTNCNkIsd0JBQUEsRUFBQSxVQUE0QixJQUFJLENBQUMscUJBQXFCO1FBRWxGLE1BQU0sQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBSSxHQUFHLENBQUMsQ0FBQyxJQUFJO1FBR3ZDLFFBQVEsQ0FBQyxVQUFDLElBQUk7WUFFWixFQUFFLENBQUMsQ0FBQyxPQUFPLENBQUMsTUFBTSxJQUFJLElBQUksS0FBSyxJQUFJLENBQUMsQ0FBQyxDQUFDO2dCQUVwQyxxQkFBSSxVQUFVLEdBQUcsSUFBSSxDQUFDO2dCQUV0QixJQUFJLENBQUM7b0JBQ0gsVUFBVSxHQUFHLEtBQUksQ0FBQyxhQUFhLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUM7aUJBQ2hFO2dCQUFDLEtBQUssQ0FBQyxDQUFDLGlCQUFBLEtBQUssRUFBRSxDQUFDO29CQUNmLE1BQU0sQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLENBQUM7aUJBQzFCO2dCQUVELEVBQUUsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQztvQkFDaEIsTUFBTSxDQUFDLFVBQVUsQ0FBQyxJQUFJLEtBQUssQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDO2lCQUM5QzthQUVGO1lBRUQsTUFBTSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQztTQUVqQixDQUFDLENBQUMsQ0FBQztLQUVQO0lBRUQ7Ozs7O09BS0c7Ozs7Ozs7SUFDRiw4QkFBTzs7Ozs7O0lBQVAsVUFBUSxHQUFXLEVBQUUsSUFBUztRQUU3QixNQUFNLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsR0FBRyxFQUFFLElBQUksQ0FBQyxDQUFDO0tBRXpDO0lBRUQ7Ozs7T0FJRzs7Ozs7O0lBQ0YsaUNBQVU7Ozs7O0lBQVYsVUFBVyxHQUFXO1FBRXJCLE1BQU0sQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsQ0FBQztLQUV0QztJQUVEOzs7T0FHRzs7Ozs7SUFDRiw0QkFBSzs7OztJQUFMO1FBRUMsTUFBTSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsS0FBSyxFQUFFLENBQUM7S0FFOUI7SUFFRDs7OztPQUlHOzs7Ozs7O0lBQ0gsdUNBQWdCOzs7Ozs7SUFBaEIsVUFBaUIsR0FBVyxFQUFFLElBQVM7UUFFckMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLEVBQUUsSUFBSSxDQUFDLENBQUMsU0FBUyxDQUFDLGVBQVEsRUFBRSxlQUFRLENBQUMsQ0FBQztLQUV2RDtJQUVEOzs7T0FHRzs7Ozs7O0lBQ0YsMENBQW1COzs7OztJQUFuQixVQUFvQixHQUFXO1FBRTlCLElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLGVBQVEsRUFBRSxlQUFRLENBQUMsQ0FBQztLQUVwRDtJQUVELGdFQUFnRTs7Ozs7SUFDaEUscUNBQWM7Ozs7SUFBZDtRQUVFLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQyxTQUFTLENBQUMsZUFBUSxFQUFFLGVBQVEsQ0FBQyxDQUFDO0tBRTVDOztnQkF4R0YsVUFBVSxTQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQjs7OztnQkFWUSxhQUFhO2dCQUViLGFBQWE7Ozt1QkFOdEI7O1NBZWEsWUFBWSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE9ic2VydmFibGUsIHRocm93RXJyb3IsIG9mIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBtZXJnZU1hcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuaW1wb3J0IHsgTG9jYWxEYXRhYmFzZSB9IGZyb20gJy4vZGF0YWJhc2VzL2xvY2FsLWRhdGFiYXNlJztcbmltcG9ydCB7IEpTT05TY2hlbWEgfSBmcm9tICcuL3ZhbGlkYXRpb24vanNvbi1zY2hlbWEnO1xuaW1wb3J0IHsgSlNPTlZhbGlkYXRvciB9IGZyb20gJy4vdmFsaWRhdGlvbi9qc29uLXZhbGlkYXRvcic7XG5cbmV4cG9ydCBpbnRlcmZhY2UgTFNHZXRJdGVtT3B0aW9ucyB7XG4gIHNjaGVtYT86IEpTT05TY2hlbWEgfCBudWxsO1xufVxuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290J1xufSlcbmV4cG9ydCBjbGFzcyBMb2NhbFN0b3JhZ2Uge1xuXG4gIHByb3RlY3RlZCByZWFkb25seSBnZXRJdGVtT3B0aW9uc0RlZmF1bHQ6IExTR2V0SXRlbU9wdGlvbnMgPSB7XG4gICAgc2NoZW1hOiBudWxsXG4gIH07XG5cbiAgY29uc3RydWN0b3IocHJvdGVjdGVkIGRhdGFiYXNlOiBMb2NhbERhdGFiYXNlLCBwcm90ZWN0ZWQganNvblZhbGlkYXRvcjogSlNPTlZhbGlkYXRvcikge31cblxuICAvKipcbiAgICogR2V0cyBhbiBpdGVtIHZhbHVlIGluIGxvY2FsIHN0b3JhZ2VcbiAgICogQHBhcmFtIGtleSBUaGUgaXRlbSdzIGtleVxuICAgKiBAcmV0dXJucyBUaGUgaXRlbSdzIHZhbHVlIGlmIHRoZSBrZXkgZXhpc3RzLCBudWxsIG90aGVyd2lzZSwgd3JhcHBlZCBpbiBhbiBSeEpTIE9ic2VydmFibGVcbiAgICovXG4gIGdldEl0ZW08VCA9IGFueT4oa2V5OiBzdHJpbmcsIG9wdGlvbnM6IExTR2V0SXRlbU9wdGlvbnMgPSB0aGlzLmdldEl0ZW1PcHRpb25zRGVmYXVsdCk6IE9ic2VydmFibGU8VCB8IG51bGw+IHtcblxuICAgIHJldHVybiB0aGlzLmRhdGFiYXNlLmdldEl0ZW08VD4oa2V5KS5waXBlKFxuXG4gICAgICAvKiBWYWxpZGF0ZSBkYXRhIHVwb24gYSBqc29uIHNjaGVtYSBpZiByZXF1ZXN0ZWQgKi9cbiAgICAgIG1lcmdlTWFwKChkYXRhKSA9PiB7XG5cbiAgICAgICAgaWYgKG9wdGlvbnMuc2NoZW1hICYmIGRhdGEgIT09IG51bGwpIHtcblxuICAgICAgICAgIGxldCB2YWxpZGF0aW9uID0gdHJ1ZTtcblxuICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICB2YWxpZGF0aW9uID0gdGhpcy5qc29uVmFsaWRhdG9yLnZhbGlkYXRlKGRhdGEsIG9wdGlvbnMuc2NoZW1hKTtcbiAgICAgICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoZXJyb3IpO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGlmICghdmFsaWRhdGlvbikge1xuICAgICAgICAgICAgcmV0dXJuIHRocm93RXJyb3IobmV3IEVycm9yKGBKU09OIGludmFsaWRgKSk7XG4gICAgICAgICAgfVxuXG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gb2YoZGF0YSk7XG5cbiAgICAgIH0pKTtcblxuICB9XG5cbiAgLyoqXG4gICAqIFNldHMgYW4gaXRlbSBpbiBsb2NhbCBzdG9yYWdlXG4gICAqIEBwYXJhbSBrZXkgVGhlIGl0ZW0ncyBrZXlcbiAgICogQHBhcmFtIGRhdGEgVGhlIGl0ZW0ncyB2YWx1ZSwgbXVzdCBOT1QgYmUgbnVsbCBvciB1bmRlZmluZWRcbiAgICogQHJldHVybnMgQW4gUnhKUyBPYnNlcnZhYmxlIHRvIHdhaXQgdGhlIGVuZCBvZiB0aGUgb3BlcmF0aW9uXG4gICAqL1xuICAgc2V0SXRlbShrZXk6IHN0cmluZywgZGF0YTogYW55KTogT2JzZXJ2YWJsZTxib29sZWFuPiB7XG5cbiAgICByZXR1cm4gdGhpcy5kYXRhYmFzZS5zZXRJdGVtKGtleSwgZGF0YSk7XG5cbiAgfVxuXG4gIC8qKlxuICAgKiBEZWxldGVzIGFuIGl0ZW0gaW4gbG9jYWwgc3RvcmFnZVxuICAgKiBAcGFyYW0ga2V5IFRoZSBpdGVtJ3Mga2V5XG4gICAqIEByZXR1cm5zIEFuIFJ4SlMgT2JzZXJ2YWJsZSB0byB3YWl0IHRoZSBlbmQgb2YgdGhlIG9wZXJhdGlvblxuICAgKi9cbiAgIHJlbW92ZUl0ZW0oa2V5OiBzdHJpbmcpOiBPYnNlcnZhYmxlPGJvb2xlYW4+IHtcblxuICAgIHJldHVybiB0aGlzLmRhdGFiYXNlLnJlbW92ZUl0ZW0oa2V5KTtcblxuICB9XG5cbiAgLyoqXG4gICAqIERlbGV0ZXMgYWxsIGl0ZW1zIGZyb20gbG9jYWwgc3RvcmFnZVxuICAgKiBAcmV0dXJucyBBbiBSeEpTIE9ic2VydmFibGUgdG8gd2FpdCB0aGUgZW5kIG9mIHRoZSBvcGVyYXRpb25cbiAgICovXG4gICBjbGVhcigpOiBPYnNlcnZhYmxlPGJvb2xlYW4+IHtcblxuICAgIHJldHVybiB0aGlzLmRhdGFiYXNlLmNsZWFyKCk7XG5cbiAgfVxuXG4gIC8qKlxuICAgKiBTZXRzIGFuIGl0ZW0gaW4gbG9jYWwgc3RvcmFnZSwgYW5kIGF1dG8tc3Vic2NyaWJlc1xuICAgKiBAcGFyYW0ga2V5IFRoZSBpdGVtJ3Mga2V5XG4gICAqIEBwYXJhbSBkYXRhIFRoZSBpdGVtJ3MgdmFsdWUsIG11c3QgTk9UIGJlIG51bGwgb3IgdW5kZWZpbmVkXG4gICAqL1xuICBzZXRJdGVtU3Vic2NyaWJlKGtleTogc3RyaW5nLCBkYXRhOiBhbnkpOiB2b2lkIHtcblxuICAgIHRoaXMuc2V0SXRlbShrZXksIGRhdGEpLnN1YnNjcmliZSgoKSA9PiB7fSwgKCkgPT4ge30pO1xuXG4gIH1cblxuICAvKipcbiAgICogRGVsZXRlcyBhbiBpdGVtIGluIGxvY2FsIHN0b3JhZ2UsIGFuZCBhdXRvLXN1YnNjcmliZXNcbiAgICogQHBhcmFtIGtleSBUaGUgaXRlbSdzIGtleVxuICAgKi9cbiAgIHJlbW92ZUl0ZW1TdWJzY3JpYmUoa2V5OiBzdHJpbmcpOiB2b2lkIHtcblxuICAgIHRoaXMucmVtb3ZlSXRlbShrZXkpLnN1YnNjcmliZSgoKSA9PiB7fSwgKCkgPT4ge30pO1xuXG4gIH1cblxuICAvKiogRGVsZXRlcyBhbGwgaXRlbXMgZnJvbSBsb2NhbCBzdG9yYWdlLCBhbmQgYXV0by1zdWJzY3JpYmVzICovXG4gIGNsZWFyU3Vic2NyaWJlKCk6IHZvaWQge1xuXG4gICAgdGhpcy5jbGVhcigpLnN1YnNjcmliZSgoKSA9PiB7fSwgKCkgPT4ge30pO1xuXG4gIH1cblxufVxuIl19
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGliLnNlcnZpY2UuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9Abmd4LXB3YS9sb2NhbC1zdG9yYWdlLyIsInNvdXJjZXMiOlsibGliL2xpYi5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7QUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBYyxVQUFVLEVBQUUsRUFBRSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ2xELE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUUxQyxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFFM0QsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLDZCQUE2QixDQUFDOzs7Ozs7O0FBRTVELHNDQUVDOzs7SUFEQyxrQ0FBMkI7O0FBRzdCO0lBU0Usc0JBQXNCLFFBQXVCLEVBQVksYUFBNEI7UUFBL0QsYUFBUSxHQUFSLFFBQVEsQ0FBZTtRQUFZLGtCQUFhLEdBQWIsYUFBYSxDQUFlO1FBSmxFLDBCQUFxQixHQUFxQjtZQUMzRCxNQUFNLEVBQUUsSUFBSTtTQUNiLENBQUM7SUFFc0YsQ0FBQztJQUV6Rjs7OztPQUlHOzs7Ozs7OztJQUNILDhCQUFPOzs7Ozs7O0lBQVAsVUFBaUIsR0FBVyxFQUFFLE9BQXNEO1FBQXBGLGlCQTJCQztRQTNCNkIsd0JBQUEsRUFBQSxVQUE0QixJQUFJLENBQUMscUJBQXFCO1FBRWxGLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUksR0FBRyxDQUFDLENBQUMsSUFBSTtRQUV2QyxtREFBbUQ7UUFDbkQsUUFBUSxDQUFDLFVBQUMsSUFBSTtZQUVaLElBQUksT0FBTyxDQUFDLE1BQU0sSUFBSSxJQUFJLEtBQUssSUFBSSxFQUFFOztvQkFFL0IsVUFBVSxHQUFHLElBQUk7Z0JBRXJCLElBQUk7b0JBQ0YsVUFBVSxHQUFHLEtBQUksQ0FBQyxhQUFhLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUM7aUJBQ2hFO2dCQUFDLE9BQU8sS0FBSyxFQUFFO29CQUNkLE9BQU8sVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFDO2lCQUMxQjtnQkFFRCxJQUFJLENBQUMsVUFBVSxFQUFFO29CQUNmLE9BQU8sVUFBVSxDQUFDLElBQUksS0FBSyxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUM7aUJBQzlDO2FBRUY7WUFFRCxPQUFPLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUVsQixDQUFDLENBQUMsQ0FBQyxDQUFDO0lBRVIsQ0FBQztJQUVEOzs7OztPQUtHOzs7Ozs7O0lBQ0YsOEJBQU87Ozs7OztJQUFQLFVBQVEsR0FBVyxFQUFFLElBQVM7UUFFN0IsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxHQUFHLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFFMUMsQ0FBQztJQUVEOzs7O09BSUc7Ozs7OztJQUNGLGlDQUFVOzs7OztJQUFWLFVBQVcsR0FBVztRQUVyQixPQUFPLElBQUksQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBRXZDLENBQUM7SUFFRDs7O09BR0c7Ozs7O0lBQ0YsNEJBQUs7Ozs7SUFBTDtRQUVDLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUUvQixDQUFDO0lBRUQ7Ozs7T0FJRzs7Ozs7OztJQUNILHVDQUFnQjs7Ozs7O0lBQWhCLFVBQWlCLEdBQVcsRUFBRSxJQUFTO1FBRXJDLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxFQUFFLElBQUksQ0FBQyxDQUFDLFNBQVMsQ0FBQyxjQUFPLENBQUMsRUFBRSxjQUFPLENBQUMsQ0FBQyxDQUFDO0lBRXhELENBQUM7SUFFRDs7O09BR0c7Ozs7OztJQUNGLDBDQUFtQjs7Ozs7SUFBbkIsVUFBb0IsR0FBVztRQUU5QixJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxjQUFPLENBQUMsRUFBRSxjQUFPLENBQUMsQ0FBQyxDQUFDO0lBRXJELENBQUM7SUFFRCxnRUFBZ0U7Ozs7O0lBQ2hFLHFDQUFjOzs7O0lBQWQ7UUFFRSxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUMsU0FBUyxDQUFDLGNBQU8sQ0FBQyxFQUFFLGNBQU8sQ0FBQyxDQUFDLENBQUM7SUFFN0MsQ0FBQzs7Z0JBeEdGLFVBQVUsU0FBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkI7Ozs7Z0JBVlEsYUFBYTtnQkFFYixhQUFhOzs7dUJBTnRCO0NBc0hDLEFBMUdELElBMEdDO1NBdkdZLFlBQVk7OztJQUV2Qiw2Q0FFRTs7SUFFVSxnQ0FBaUM7O0lBQUUscUNBQXNDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgdGhyb3dFcnJvciwgb2YgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IG1lcmdlTWFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5pbXBvcnQgeyBMb2NhbERhdGFiYXNlIH0gZnJvbSAnLi9kYXRhYmFzZXMvbG9jYWwtZGF0YWJhc2UnO1xuaW1wb3J0IHsgSlNPTlNjaGVtYSB9IGZyb20gJy4vdmFsaWRhdGlvbi9qc29uLXNjaGVtYSc7XG5pbXBvcnQgeyBKU09OVmFsaWRhdG9yIH0gZnJvbSAnLi92YWxpZGF0aW9uL2pzb24tdmFsaWRhdG9yJztcblxuZXhwb3J0IGludGVyZmFjZSBMU0dldEl0ZW1PcHRpb25zIHtcbiAgc2NoZW1hPzogSlNPTlNjaGVtYSB8IG51bGw7XG59XG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXG59KVxuZXhwb3J0IGNsYXNzIExvY2FsU3RvcmFnZSB7XG5cbiAgcHJvdGVjdGVkIHJlYWRvbmx5IGdldEl0ZW1PcHRpb25zRGVmYXVsdDogTFNHZXRJdGVtT3B0aW9ucyA9IHtcbiAgICBzY2hlbWE6IG51bGxcbiAgfTtcblxuICBjb25zdHJ1Y3Rvcihwcm90ZWN0ZWQgZGF0YWJhc2U6IExvY2FsRGF0YWJhc2UsIHByb3RlY3RlZCBqc29uVmFsaWRhdG9yOiBKU09OVmFsaWRhdG9yKSB7fVxuXG4gIC8qKlxuICAgKiBHZXRzIGFuIGl0ZW0gdmFsdWUgaW4gbG9jYWwgc3RvcmFnZVxuICAgKiBAcGFyYW0ga2V5IFRoZSBpdGVtJ3Mga2V5XG4gICAqIEByZXR1cm5zIFRoZSBpdGVtJ3MgdmFsdWUgaWYgdGhlIGtleSBleGlzdHMsIG51bGwgb3RoZXJ3aXNlLCB3cmFwcGVkIGluIGFuIFJ4SlMgT2JzZXJ2YWJsZVxuICAgKi9cbiAgZ2V0SXRlbTxUID0gYW55PihrZXk6IHN0cmluZywgb3B0aW9uczogTFNHZXRJdGVtT3B0aW9ucyA9IHRoaXMuZ2V0SXRlbU9wdGlvbnNEZWZhdWx0KTogT2JzZXJ2YWJsZTxUIHwgbnVsbD4ge1xuXG4gICAgcmV0dXJuIHRoaXMuZGF0YWJhc2UuZ2V0SXRlbTxUPihrZXkpLnBpcGUoXG5cbiAgICAgIC8qIFZhbGlkYXRlIGRhdGEgdXBvbiBhIGpzb24gc2NoZW1hIGlmIHJlcXVlc3RlZCAqL1xuICAgICAgbWVyZ2VNYXAoKGRhdGEpID0+IHtcblxuICAgICAgICBpZiAob3B0aW9ucy5zY2hlbWEgJiYgZGF0YSAhPT0gbnVsbCkge1xuXG4gICAgICAgICAgbGV0IHZhbGlkYXRpb24gPSB0cnVlO1xuXG4gICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIHZhbGlkYXRpb24gPSB0aGlzLmpzb25WYWxpZGF0b3IudmFsaWRhdGUoZGF0YSwgb3B0aW9ucy5zY2hlbWEpO1xuICAgICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhyb3dFcnJvcihlcnJvcik7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgaWYgKCF2YWxpZGF0aW9uKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhyb3dFcnJvcihuZXcgRXJyb3IoYEpTT04gaW52YWxpZGApKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBvZihkYXRhKTtcblxuICAgICAgfSkpO1xuXG4gIH1cblxuICAvKipcbiAgICogU2V0cyBhbiBpdGVtIGluIGxvY2FsIHN0b3JhZ2VcbiAgICogQHBhcmFtIGtleSBUaGUgaXRlbSdzIGtleVxuICAgKiBAcGFyYW0gZGF0YSBUaGUgaXRlbSdzIHZhbHVlLCBtdXN0IE5PVCBiZSBudWxsIG9yIHVuZGVmaW5lZFxuICAgKiBAcmV0dXJucyBBbiBSeEpTIE9ic2VydmFibGUgdG8gd2FpdCB0aGUgZW5kIG9mIHRoZSBvcGVyYXRpb25cbiAgICovXG4gICBzZXRJdGVtKGtleTogc3RyaW5nLCBkYXRhOiBhbnkpOiBPYnNlcnZhYmxlPGJvb2xlYW4+IHtcblxuICAgIHJldHVybiB0aGlzLmRhdGFiYXNlLnNldEl0ZW0oa2V5LCBkYXRhKTtcblxuICB9XG5cbiAgLyoqXG4gICAqIERlbGV0ZXMgYW4gaXRlbSBpbiBsb2NhbCBzdG9yYWdlXG4gICAqIEBwYXJhbSBrZXkgVGhlIGl0ZW0ncyBrZXlcbiAgICogQHJldHVybnMgQW4gUnhKUyBPYnNlcnZhYmxlIHRvIHdhaXQgdGhlIGVuZCBvZiB0aGUgb3BlcmF0aW9uXG4gICAqL1xuICAgcmVtb3ZlSXRlbShrZXk6IHN0cmluZyk6IE9ic2VydmFibGU8Ym9vbGVhbj4ge1xuXG4gICAgcmV0dXJuIHRoaXMuZGF0YWJhc2UucmVtb3ZlSXRlbShrZXkpO1xuXG4gIH1cblxuICAvKipcbiAgICogRGVsZXRlcyBhbGwgaXRlbXMgZnJvbSBsb2NhbCBzdG9yYWdlXG4gICAqIEByZXR1cm5zIEFuIFJ4SlMgT2JzZXJ2YWJsZSB0byB3YWl0IHRoZSBlbmQgb2YgdGhlIG9wZXJhdGlvblxuICAgKi9cbiAgIGNsZWFyKCk6IE9ic2VydmFibGU8Ym9vbGVhbj4ge1xuXG4gICAgcmV0dXJuIHRoaXMuZGF0YWJhc2UuY2xlYXIoKTtcblxuICB9XG5cbiAgLyoqXG4gICAqIFNldHMgYW4gaXRlbSBpbiBsb2NhbCBzdG9yYWdlLCBhbmQgYXV0by1zdWJzY3JpYmVzXG4gICAqIEBwYXJhbSBrZXkgVGhlIGl0ZW0ncyBrZXlcbiAgICogQHBhcmFtIGRhdGEgVGhlIGl0ZW0ncyB2YWx1ZSwgbXVzdCBOT1QgYmUgbnVsbCBvciB1bmRlZmluZWRcbiAgICovXG4gIHNldEl0ZW1TdWJzY3JpYmUoa2V5OiBzdHJpbmcsIGRhdGE6IGFueSk6IHZvaWQge1xuXG4gICAgdGhpcy5zZXRJdGVtKGtleSwgZGF0YSkuc3Vic2NyaWJlKCgpID0+IHt9LCAoKSA9PiB7fSk7XG5cbiAgfVxuXG4gIC8qKlxuICAgKiBEZWxldGVzIGFuIGl0ZW0gaW4gbG9jYWwgc3RvcmFnZSwgYW5kIGF1dG8tc3Vic2NyaWJlc1xuICAgKiBAcGFyYW0ga2V5IFRoZSBpdGVtJ3Mga2V5XG4gICAqL1xuICAgcmVtb3ZlSXRlbVN1YnNjcmliZShrZXk6IHN0cmluZyk6IHZvaWQge1xuXG4gICAgdGhpcy5yZW1vdmVJdGVtKGtleSkuc3Vic2NyaWJlKCgpID0+IHt9LCAoKSA9PiB7fSk7XG5cbiAgfVxuXG4gIC8qKiBEZWxldGVzIGFsbCBpdGVtcyBmcm9tIGxvY2FsIHN0b3JhZ2UsIGFuZCBhdXRvLXN1YnNjcmliZXMgKi9cbiAgY2xlYXJTdWJzY3JpYmUoKTogdm9pZCB7XG5cbiAgICB0aGlzLmNsZWFyKCkuc3Vic2NyaWJlKCgpID0+IHt9LCAoKSA9PiB7fSk7XG5cbiAgfVxuXG59XG4iXX0=
/**
* @fileoverview added by tsickle
* @suppress {checkTypes} checked by tsc
* @suppress {checkTypes,extraRequire,uselessCode} checked by tsc
*/
import { InjectionToken } from '@angular/core';
export var /** @type {?} */ LOCAL_STORAGE_PREFIX = new InjectionToken('localStoragePrefix', { providedIn: 'root', factory: function () { return ''; } });
/** @type {?} */
export var LOCAL_STORAGE_PREFIX = new InjectionToken('localStoragePrefix', { providedIn: 'root', factory: function () { return ''; } });
/**

@@ -11,3 +12,3 @@ * @record

export function LocalStorageProvidersConfig() { }
function LocalStorageProvidersConfig_tsickle_Closure_declarations() {
if (false) {
/**

@@ -28,3 +29,2 @@ * Optional prefix to avoid collision in multiple apps on same subdomain

}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9rZW5zLmpzIiwic291cmNlUm9vdCI6Im5nOi8vQG5neC1wd2EvbG9jYWwtc3RvcmFnZS8iLCJzb3VyY2VzIjpbImxpYi90b2tlbnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQUFBLE9BQU8sRUFBRSxjQUFjLEVBQVksTUFBTSxlQUFlLENBQUM7QUFFekQsTUFBTSxDQUFDLHFCQUFNLG9CQUFvQixHQUFHLElBQUksY0FBYyxDQUFTLG9CQUFvQixFQUFFLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxPQUFPLEVBQUUsY0FBTSxPQUFBLEVBQUUsRUFBRixDQUFFLEVBQUUsQ0FBQyxDQUFDOzs7Ozs7Ozs7Ozs7Ozs7O0FBUWhJLE1BQU0sZ0NBQWdDLE1BQW1DO0lBQ3ZFLE1BQU0sQ0FBQztRQUNMLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsT0FBTyxFQUFFLG9CQUFvQixFQUFFLFFBQVEsRUFBRSxNQUFNLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUU7S0FDaEYsQ0FBQztDQUNIIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0aW9uVG9rZW4sIFByb3ZpZGVyIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmV4cG9ydCBjb25zdCBMT0NBTF9TVE9SQUdFX1BSRUZJWCA9IG5ldyBJbmplY3Rpb25Ub2tlbjxzdHJpbmc+KCdsb2NhbFN0b3JhZ2VQcmVmaXgnLCB7IHByb3ZpZGVkSW46ICdyb290JywgZmFjdG9yeTogKCkgPT4gJycgfSk7XG5cbmV4cG9ydCBpbnRlcmZhY2UgTG9jYWxTdG9yYWdlUHJvdmlkZXJzQ29uZmlnIHtcblxuICAvKiogT3B0aW9uYWwgcHJlZml4IHRvIGF2b2lkIGNvbGxpc2lvbiBpbiBtdWx0aXBsZSBhcHBzIG9uIHNhbWUgc3ViZG9tYWluICovXG4gIHByZWZpeD86IHN0cmluZztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGxvY2FsU3RvcmFnZVByb3ZpZGVycyhjb25maWc6IExvY2FsU3RvcmFnZVByb3ZpZGVyc0NvbmZpZyk6IFByb3ZpZGVyW10ge1xuICByZXR1cm4gW1xuICAgIGNvbmZpZy5wcmVmaXggPyB7IHByb3ZpZGU6IExPQ0FMX1NUT1JBR0VfUFJFRklYLCB1c2VWYWx1ZTogY29uZmlnLnByZWZpeCB9IDogW11cbiAgXTtcbn1cbiJdfQ==
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9rZW5zLmpzIiwic291cmNlUm9vdCI6Im5nOi8vQG5neC1wd2EvbG9jYWwtc3RvcmFnZS8iLCJzb3VyY2VzIjpbImxpYi90b2tlbnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQUFBLE9BQU8sRUFBRSxjQUFjLEVBQVksTUFBTSxlQUFlLENBQUM7O0FBRXpELE1BQU0sS0FBTyxvQkFBb0IsR0FBRyxJQUFJLGNBQWMsQ0FBUyxvQkFBb0IsRUFBRSxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsT0FBTyxFQUFFLGNBQU0sT0FBQSxFQUFFLEVBQUYsQ0FBRSxFQUFFLENBQUM7Ozs7QUFFL0gsaURBSUM7Ozs7OztJQURDLDZDQUFnQjs7Ozs7O0FBR2xCLE1BQU0sVUFBVSxxQkFBcUIsQ0FBQyxNQUFtQztJQUN2RSxPQUFPO1FBQ0wsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsUUFBUSxFQUFFLE1BQU0sQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRTtLQUNoRixDQUFDO0FBQ0osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGlvblRva2VuLCBQcm92aWRlciB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5leHBvcnQgY29uc3QgTE9DQUxfU1RPUkFHRV9QUkVGSVggPSBuZXcgSW5qZWN0aW9uVG9rZW48c3RyaW5nPignbG9jYWxTdG9yYWdlUHJlZml4JywgeyBwcm92aWRlZEluOiAncm9vdCcsIGZhY3Rvcnk6ICgpID0+ICcnIH0pO1xuXG5leHBvcnQgaW50ZXJmYWNlIExvY2FsU3RvcmFnZVByb3ZpZGVyc0NvbmZpZyB7XG5cbiAgLyoqIE9wdGlvbmFsIHByZWZpeCB0byBhdm9pZCBjb2xsaXNpb24gaW4gbXVsdGlwbGUgYXBwcyBvbiBzYW1lIHN1YmRvbWFpbiAqL1xuICBwcmVmaXg/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBsb2NhbFN0b3JhZ2VQcm92aWRlcnMoY29uZmlnOiBMb2NhbFN0b3JhZ2VQcm92aWRlcnNDb25maWcpOiBQcm92aWRlcltdIHtcbiAgcmV0dXJuIFtcbiAgICBjb25maWcucHJlZml4ID8geyBwcm92aWRlOiBMT0NBTF9TVE9SQUdFX1BSRUZJWCwgdXNlVmFsdWU6IGNvbmZpZy5wcmVmaXggfSA6IFtdXG4gIF07XG59XG4iXX0=
/**
* @fileoverview added by tsickle
* @suppress {checkTypes} checked by tsc
* @suppress {checkTypes,extraRequire,uselessCode} checked by tsc
*/

@@ -15,3 +15,3 @@ /**

export function JSONSchema() { }
function JSONSchema_tsickle_Closure_declarations() {
if (false) {
/**

@@ -114,7 +114,4 @@ * Type for a primitive value.

JSONSchema.prototype.uniqueItems;
/* TODO: handle strange member:
[k: string]: any;
*/
/* Skipping unhandled member: [k: string]: any;*/
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoianNvbi1zY2hlbWEuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9Abmd4LXB3YS9sb2NhbC1zdG9yYWdlLyIsInNvdXJjZXMiOlsibGliL3ZhbGlkYXRpb24vanNvbi1zY2hlbWEudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogU3Vic2V0IG9mIHRoZSBKU09OIFNjaGVtYS5cbiAqIFR5cGVzIGFyZSBlbmZvcmNlZCB0byB2YWxpZGF0ZSBldmVyeXRoaW5nOiBlYWNoIHZhbHVlIE1VU1QgaGF2ZSBlaXRoZXIgJ3R5cGUnIG9yICdwcm9wZXJ0aWVzJyBvciAnaXRlbXMnIG9yICdjb25zdCcgb3IgJ2VudW0nLlxuICogVGhlcmVmb3JlLCB1bmxpa2UgdGhlIHNwZWMsIGJvb2xlYW5zIGFyZSBub3QgYWxsb3dlZCBhcyBzY2hlbWFzLlxuICogQHNlZSBodHRwOi8vanNvbi1zY2hlbWEub3JnL2xhdGVzdC9qc29uLXNjaGVtYS12YWxpZGF0aW9uLmh0bWxcbiAqIE5vdCBhbGwgdmFsaWRhdGlvbiBmZWF0dXJlcyBhcmUgc3VwcG9ydGVkOiBqdXN0IGZvbGxvdyB0aGUgaW50ZXJmYWNlLlxuICogQHRvZG8gV2hlbiBUUyAyLjgsIGV4cGxvcmUgaWYgdGhpcyBzY2hlbWFzIGNhbiBiZSBzcGxpdCBmb3Igb2JqZWN0IGFuZCBhcnJheXMgd2l0aCBjb25kaXRpb25hbCB0eXBlcy5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBKU09OU2NoZW1hIHtcblxuICAvKipcbiAgICogVHlwZSBmb3IgYSBwcmltaXRpdmUgdmFsdWUuXG4gICAqIE5vdCByZXF1aXJlZCBmb3Igb2JqZWN0cywganVzdCBzZXQgJ3Byb3BlcnRpZXMnLlxuICAgKiBOb3QgcmVxdWlyZWQgZm9yIGFycmF5cywganVzdCBzZXQgJ2l0ZW1zJy5cbiAgICogTm90IHJlcXVpcmVkIGZvciBjb25zdCBhbmQgZW51bS5cbiAgICovXG4gIHR5cGU/OiAnc3RyaW5nJyB8ICdudW1iZXInIHwgJ2ludGVnZXInIHwgJ2Jvb2xlYW4nIHwgJ2FycmF5JyB8ICdvYmplY3QnIHwgJ251bGwnO1xuXG4gIC8qKlxuICAgKiBMaXN0IG9mIHByb3BlcnRpZXMgc2NoZW1hcyBmb3IgYW4gb2JqZWN0LlxuICAgKi9cbiAgcHJvcGVydGllcz86IHtcbiAgICBbazogc3RyaW5nXTogSlNPTlNjaGVtYTtcbiAgfTtcblxuICAvKipcbiAgICogQXJyYXkgb2YgbmFtZXMgb2YgdGhlIHJlcXVpcmVkIHByb3BlcnRpZXMgZm9yIGFuIG9iamVjdC5cbiAgICogUHJvcGVydGllcyBzZXQgYXMgcmVxdWlyZWQgc2hvdWxkIGJlIHByZXNlbnQgaW4gJ3Byb3BlcnRpZXMnIHRvby5cbiAgICogTm90ZSB0aGF0IGluIHRoZSBsYXN0IHNwZWMsIGJvb2xlYW5zIGFyZSBub3Qgc3VwcG9ydGVkIGFueW1vcmUuXG4gICAqL1xuICByZXF1aXJlZD86IHN0cmluZ1tdO1xuXG4gIC8qKlxuICAgKiBTY2hlbWEgZm9yIHRoZSB2YWx1ZXMgb2YgYW4gYXJyYXkuXG4gICAqICd0eXBlJyBvZiB2YWx1ZXMgc2hvdWxkIGJlIGEgc3RyaW5nIChub3QgYW4gYXJyYXkgb2YgdHlwZSkuXG4gICAqL1xuICBpdGVtcz86IEpTT05TY2hlbWEgfCBKU09OU2NoZW1hW107XG5cbiAgLyoqXG4gICAqIENoZWNrcyBpZiBhIHZhbHVlIGlzIHN0cmljdGx5IGVxdWFsIHRvIHRoaXMuXG4gICAqL1xuICBjb25zdD86IGFueTtcblxuICAvKipcbiAgICogQ2hlY2tzIGlmIGEgdmFsdWUgaXMgc3RyaWN0bHkgZXF1YWwgdG8gb25lIG9mIHRoZSB2YWx1ZSBvZiBlbnVtLlxuICAgKi9cbiAgZW51bT86IGFueVtdO1xuXG4gIC8qKlxuICAgKiBNaW51bXVtIGxlbmdodCBmb3IgYSBzdHJpbmcuXG4gICAqIE11c3QgYmUgYSBub24tbmVnYXRpdmUgaW50ZWdlci5cbiAgICovXG4gIG1heExlbmd0aD86IG51bWJlcjtcblxuICAvKipcbiAgICogTWludW11bSBsZW5naHQgZm9yIGEgc3RyaW5nLlxuICAgKiBNdXN0IGJlIGEgbm9uLW5lZ2F0aXZlIGludGVnZXIuXG4gICAqL1xuICBtaW5MZW5ndGg/OiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIFBhdHRlcm4gdG8gbWF0Y2ggZm9yIGEgc3RyaW5nLlxuICAgKiBNdXN0IGJlIGEgdmFsaWQgcmVndWxhciBleHByZXNzaW9uLCBXSVRIT1VUIHRoZSAvIGRlbGltaXRlcnMuXG4gICAqL1xuICBwYXR0ZXJuPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBDaGVjayBpZiBhIG51bWJlciBpcyBhIG11bHRpcGxlIG9mIHguXG4gICAqIE11c3QgYmUgc3RyaWN0bHkgZ3JlYXRlciB0aGFuIDAuXG4gICAqL1xuICBtdWx0aXBsZU9mPzogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBDaGVjayBpZiBhIG51bWJlciBpcyBsZXNzIG9yIGVxdWFsIHRoYW4gdGhpcyBtYXhpbXVtLlxuICAgKi9cbiAgbWF4aW11bT86IG51bWJlcjtcblxuICAvKipcbiAgICogQ2hlY2sgaWYgYSBudW1iZXIgaXMgc3RyaWN0bHkgbGVzcyB0aGFuIHRoaXMgbWF4aW11bS5cbiAgICovXG4gIGV4Y2x1c2l2ZU1heGltdW0/OiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIENoZWNrIGlmIGEgbnVtYmVyIGlzIGdyZWF0ZXIgb3IgZXF1YWwgdGhhbiB0aGlzIG1pbmltdW0uXG4gICAqL1xuICBtaW5pbXVtPzogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBDaGVjayBpZiBhIG51bWJlciBpcyBzdHJpY3RseSBncmVhdGVyIHRoYW4gdGhpcyBtaW5pbXVtLlxuICAgKi9cbiAgZXhjbHVzaXZlTWluaW11bT86IG51bWJlcjtcblxuICAvKipcbiAgICogQ2hlY2sgaWYgYW4gYXJyYXkgbGVuZ3RoIGlzIGxlc3Mgb3IgZXF1YWwgdG8gdGhpcyB2YWx1ZS5cbiAgICogTXVzdCBiZSBhIG5vbiBuZWdhdGl2ZSBpbnRlZ2VyLlxuICAgKi9cbiAgbWF4SXRlbXM/OiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIENoZWNrIGlmIGFuIGFycmF5IGxlbmd0aCBpcyBncmVhdGVyIG9yIGVxdWFsIHRvIHRoaXMgdmFsdWUuXG4gICAqIE11c3QgYmUgYSBub24gbmVnYXRpdmUgaW50ZWdlci5cbiAgICovXG4gIG1pbkl0ZW1zPzogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBDaGVjayBpZiBhbiBhcnJheSBvbmx5IGhhdmUgdW5pcXVlIHZhbHVlcy5cbiAgICovXG4gIHVuaXF1ZUl0ZW1zPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogQWxsb3cgb3RoZXIgcHJvcGVydGllcywgdG8gbm90IGZhaWwgd2l0aCBleGlzdGluZyBKU09OIHNjaGVtYXMuXG4gICAqL1xuICBbazogc3RyaW5nXTogYW55O1xuXG59XG4iXX0=
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoianNvbi1zY2hlbWEuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9Abmd4LXB3YS9sb2NhbC1zdG9yYWdlLyIsInNvdXJjZXMiOlsibGliL3ZhbGlkYXRpb24vanNvbi1zY2hlbWEudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7OztBQVFBLGdDQTBHQzs7Ozs7Ozs7O0lBbEdDLDBCQUFpRjs7Ozs7SUFLakYsZ0NBRUU7Ozs7Ozs7SUFPRiw4QkFBb0I7Ozs7OztJQU1wQiwyQkFBa0M7Ozs7O0lBS2xDLDJCQUFZOzs7OztJQUtaLDBCQUFhOzs7Ozs7SUFNYiwrQkFBbUI7Ozs7OztJQU1uQiwrQkFBbUI7Ozs7OztJQU1uQiw2QkFBaUI7Ozs7OztJQU1qQixnQ0FBb0I7Ozs7O0lBS3BCLDZCQUFpQjs7Ozs7SUFLakIsc0NBQTBCOzs7OztJQUsxQiw2QkFBaUI7Ozs7O0lBS2pCLHNDQUEwQjs7Ozs7O0lBTTFCLDhCQUFrQjs7Ozs7O0lBTWxCLDhCQUFrQjs7Ozs7SUFLbEIsaUNBQXNCIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBTdWJzZXQgb2YgdGhlIEpTT04gU2NoZW1hLlxuICogVHlwZXMgYXJlIGVuZm9yY2VkIHRvIHZhbGlkYXRlIGV2ZXJ5dGhpbmc6IGVhY2ggdmFsdWUgTVVTVCBoYXZlIGVpdGhlciAndHlwZScgb3IgJ3Byb3BlcnRpZXMnIG9yICdpdGVtcycgb3IgJ2NvbnN0JyBvciAnZW51bScuXG4gKiBUaGVyZWZvcmUsIHVubGlrZSB0aGUgc3BlYywgYm9vbGVhbnMgYXJlIG5vdCBhbGxvd2VkIGFzIHNjaGVtYXMuXG4gKiBAc2VlIGh0dHA6Ly9qc29uLXNjaGVtYS5vcmcvbGF0ZXN0L2pzb24tc2NoZW1hLXZhbGlkYXRpb24uaHRtbFxuICogTm90IGFsbCB2YWxpZGF0aW9uIGZlYXR1cmVzIGFyZSBzdXBwb3J0ZWQ6IGp1c3QgZm9sbG93IHRoZSBpbnRlcmZhY2UuXG4gKiBAdG9kbyBXaGVuIFRTIDIuOCwgZXhwbG9yZSBpZiB0aGlzIHNjaGVtYXMgY2FuIGJlIHNwbGl0IGZvciBvYmplY3QgYW5kIGFycmF5cyB3aXRoIGNvbmRpdGlvbmFsIHR5cGVzLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEpTT05TY2hlbWEge1xuXG4gIC8qKlxuICAgKiBUeXBlIGZvciBhIHByaW1pdGl2ZSB2YWx1ZS5cbiAgICogTm90IHJlcXVpcmVkIGZvciBvYmplY3RzLCBqdXN0IHNldCAncHJvcGVydGllcycuXG4gICAqIE5vdCByZXF1aXJlZCBmb3IgYXJyYXlzLCBqdXN0IHNldCAnaXRlbXMnLlxuICAgKiBOb3QgcmVxdWlyZWQgZm9yIGNvbnN0IGFuZCBlbnVtLlxuICAgKi9cbiAgdHlwZT86ICdzdHJpbmcnIHwgJ251bWJlcicgfCAnaW50ZWdlcicgfCAnYm9vbGVhbicgfCAnYXJyYXknIHwgJ29iamVjdCcgfCAnbnVsbCc7XG5cbiAgLyoqXG4gICAqIExpc3Qgb2YgcHJvcGVydGllcyBzY2hlbWFzIGZvciBhbiBvYmplY3QuXG4gICAqL1xuICBwcm9wZXJ0aWVzPzoge1xuICAgIFtrOiBzdHJpbmddOiBKU09OU2NoZW1hO1xuICB9O1xuXG4gIC8qKlxuICAgKiBBcnJheSBvZiBuYW1lcyBvZiB0aGUgcmVxdWlyZWQgcHJvcGVydGllcyBmb3IgYW4gb2JqZWN0LlxuICAgKiBQcm9wZXJ0aWVzIHNldCBhcyByZXF1aXJlZCBzaG91bGQgYmUgcHJlc2VudCBpbiAncHJvcGVydGllcycgdG9vLlxuICAgKiBOb3RlIHRoYXQgaW4gdGhlIGxhc3Qgc3BlYywgYm9vbGVhbnMgYXJlIG5vdCBzdXBwb3J0ZWQgYW55bW9yZS5cbiAgICovXG4gIHJlcXVpcmVkPzogc3RyaW5nW107XG5cbiAgLyoqXG4gICAqIFNjaGVtYSBmb3IgdGhlIHZhbHVlcyBvZiBhbiBhcnJheS5cbiAgICogJ3R5cGUnIG9mIHZhbHVlcyBzaG91bGQgYmUgYSBzdHJpbmcgKG5vdCBhbiBhcnJheSBvZiB0eXBlKS5cbiAgICovXG4gIGl0ZW1zPzogSlNPTlNjaGVtYSB8IEpTT05TY2hlbWFbXTtcblxuICAvKipcbiAgICogQ2hlY2tzIGlmIGEgdmFsdWUgaXMgc3RyaWN0bHkgZXF1YWwgdG8gdGhpcy5cbiAgICovXG4gIGNvbnN0PzogYW55O1xuXG4gIC8qKlxuICAgKiBDaGVja3MgaWYgYSB2YWx1ZSBpcyBzdHJpY3RseSBlcXVhbCB0byBvbmUgb2YgdGhlIHZhbHVlIG9mIGVudW0uXG4gICAqL1xuICBlbnVtPzogYW55W107XG5cbiAgLyoqXG4gICAqIE1pbnVtdW0gbGVuZ2h0IGZvciBhIHN0cmluZy5cbiAgICogTXVzdCBiZSBhIG5vbi1uZWdhdGl2ZSBpbnRlZ2VyLlxuICAgKi9cbiAgbWF4TGVuZ3RoPzogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBNaW51bXVtIGxlbmdodCBmb3IgYSBzdHJpbmcuXG4gICAqIE11c3QgYmUgYSBub24tbmVnYXRpdmUgaW50ZWdlci5cbiAgICovXG4gIG1pbkxlbmd0aD86IG51bWJlcjtcblxuICAvKipcbiAgICogUGF0dGVybiB0byBtYXRjaCBmb3IgYSBzdHJpbmcuXG4gICAqIE11c3QgYmUgYSB2YWxpZCByZWd1bGFyIGV4cHJlc3Npb24sIFdJVEhPVVQgdGhlIC8gZGVsaW1pdGVycy5cbiAgICovXG4gIHBhdHRlcm4/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIENoZWNrIGlmIGEgbnVtYmVyIGlzIGEgbXVsdGlwbGUgb2YgeC5cbiAgICogTXVzdCBiZSBzdHJpY3RseSBncmVhdGVyIHRoYW4gMC5cbiAgICovXG4gIG11bHRpcGxlT2Y/OiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIENoZWNrIGlmIGEgbnVtYmVyIGlzIGxlc3Mgb3IgZXF1YWwgdGhhbiB0aGlzIG1heGltdW0uXG4gICAqL1xuICBtYXhpbXVtPzogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBDaGVjayBpZiBhIG51bWJlciBpcyBzdHJpY3RseSBsZXNzIHRoYW4gdGhpcyBtYXhpbXVtLlxuICAgKi9cbiAgZXhjbHVzaXZlTWF4aW11bT86IG51bWJlcjtcblxuICAvKipcbiAgICogQ2hlY2sgaWYgYSBudW1iZXIgaXMgZ3JlYXRlciBvciBlcXVhbCB0aGFuIHRoaXMgbWluaW11bS5cbiAgICovXG4gIG1pbmltdW0/OiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIENoZWNrIGlmIGEgbnVtYmVyIGlzIHN0cmljdGx5IGdyZWF0ZXIgdGhhbiB0aGlzIG1pbmltdW0uXG4gICAqL1xuICBleGNsdXNpdmVNaW5pbXVtPzogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBDaGVjayBpZiBhbiBhcnJheSBsZW5ndGggaXMgbGVzcyBvciBlcXVhbCB0byB0aGlzIHZhbHVlLlxuICAgKiBNdXN0IGJlIGEgbm9uIG5lZ2F0aXZlIGludGVnZXIuXG4gICAqL1xuICBtYXhJdGVtcz86IG51bWJlcjtcblxuICAvKipcbiAgICogQ2hlY2sgaWYgYW4gYXJyYXkgbGVuZ3RoIGlzIGdyZWF0ZXIgb3IgZXF1YWwgdG8gdGhpcyB2YWx1ZS5cbiAgICogTXVzdCBiZSBhIG5vbiBuZWdhdGl2ZSBpbnRlZ2VyLlxuICAgKi9cbiAgbWluSXRlbXM/OiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIENoZWNrIGlmIGFuIGFycmF5IG9ubHkgaGF2ZSB1bmlxdWUgdmFsdWVzLlxuICAgKi9cbiAgdW5pcXVlSXRlbXM/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBBbGxvdyBvdGhlciBwcm9wZXJ0aWVzLCB0byBub3QgZmFpbCB3aXRoIGV4aXN0aW5nIEpTT04gc2NoZW1hcy5cbiAgICovXG4gIFtrOiBzdHJpbmddOiBhbnk7XG5cbn1cbiJdfQ==
/**
* @fileoverview added by tsickle
* @suppress {checkTypes} checked by tsc
* @suppress {checkTypes,extraRequire,uselessCode} checked by tsc
*/

@@ -101,5 +101,5 @@ import * as tslib_1 from "tslib";

/**
* Check if the object doesn't have more properties than expected
* Equivalent of additionalProperties: false
*/
* Check if the object doesn't have more properties than expected
* Equivalent of additionalProperties: false
*/
if (Object.keys(schema.properties).length !== Object.keys(data).length) {

@@ -109,3 +109,3 @@ return false;

/* Recursively validate all properties */
for (var /** @type {?} */ property in schema.properties) {
for (var property in schema.properties) {
if (schema.properties.hasOwnProperty(property) && data.hasOwnProperty(property)) {

@@ -130,2 +130,3 @@ if (!this.validate(data[property], schema.properties[property])) {

function (data, schema) {
var e_1, _a;
if (!schema.hasOwnProperty('required') || (schema.required == null)) {

@@ -138,4 +139,4 @@ return true;

try {
for (var _a = tslib_1.__values(schema.required), _b = _a.next(); !_b.done; _b = _a.next()) {
var requiredProp = _b.value;
for (var _b = tslib_1.__values(schema.required), _c = _b.next(); !_c.done; _c = _b.next()) {
var requiredProp = _c.value;
/* Checks if the property is present in the schema 'properties' */

@@ -154,3 +155,3 @@ if (!schema.properties || !schema.properties.hasOwnProperty(requiredProp)) {

try {
if (_b && !_b.done && (_c = _a.return)) _c.call(_a);
if (_c && !_c.done && (_a = _b.return)) _a.call(_b);
}

@@ -160,3 +161,2 @@ finally { if (e_1) throw e_1.error; }

return true;
var e_1, _c;
};

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

function (data, schema) {
var e_2, _a;
if (!schema.hasOwnProperty('items') || (schema.items == null)) {

@@ -246,3 +247,4 @@ return true;

if (schema.uniqueItems) {
var /** @type {?} */ dataSet = new Set(data);
/** @type {?} */
var dataSet = new Set(data);
if (data.length !== dataSet.size) {

@@ -272,3 +274,2 @@ return false;

return true;
var e_2, _a;
};

@@ -286,7 +287,8 @@ /**

function (data, schema) {
var /** @type {?} */ items = /** @type {?} */ (schema.items);
/** @type {?} */
var items = (/** @type {?} */ (schema.items));
if (data.length !== items.length) {
return false;
}
for (var /** @type {?} */ i = 0; i < items.length; i += 1) {
for (var i = 0; i < items.length; i += 1) {
if (!this.validate(data[i], items[i])) {

@@ -329,3 +331,4 @@ return false;

if (schema.hasOwnProperty('pattern') && (schema.pattern != null)) {
var /** @type {?} */ regularExpression = new RegExp(schema.pattern);
/** @type {?} */
var regularExpression = new RegExp(schema.pattern);
if (!regularExpression.test(data)) {

@@ -393,3 +396,2 @@ return false;

export { JSONValidator };
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoianNvbi12YWxpZGF0b3IuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9Abmd4LXB3YS9sb2NhbC1zdG9yYWdlLyIsInNvdXJjZXMiOlsibGliL3ZhbGlkYXRpb24vanNvbi12YWxpZGF0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDOzs7Ozs7OztJQVd6Qzs7Ozs7Ozs7O09BU0c7Ozs7Ozs7Ozs7O0lBQ0gsZ0NBQVE7Ozs7Ozs7Ozs7SUFBUixVQUFTLElBQVMsRUFBRSxNQUFrQjs7UUFHcEMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsY0FBYyxDQUFDLE9BQU8sQ0FBQyxJQUFJLE1BQU0sQ0FBQyxLQUFLLEtBQUssU0FBUyxDQUFDO2VBQ2xFLENBQUMsQ0FBQyxNQUFNLENBQUMsY0FBYyxDQUFDLE1BQU0sQ0FBQyxJQUFJLE1BQU0sQ0FBQyxJQUFJLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLE1BQU0sQ0FBQyxjQUFjLENBQUMsTUFBTSxDQUFDLElBQUksTUFBTSxDQUFDLElBQUksSUFBSSxJQUFJLENBQUMsQ0FBQztlQUNuSCxNQUFNLENBQUMsSUFBSSxLQUFLLE9BQU8sSUFBSSxNQUFNLENBQUMsSUFBSSxLQUFLLFFBQVEsQ0FBQztlQUNwRCxDQUFDLENBQUMsTUFBTSxDQUFDLGNBQWMsQ0FBQyxZQUFZLENBQUMsSUFBSSxNQUFNLENBQUMsVUFBVSxJQUFJLElBQUksQ0FBQyxJQUFLLENBQUMsQ0FBQyxNQUFNLENBQUMsY0FBYyxDQUFDLE9BQU8sQ0FBQyxJQUFJLE1BQU0sQ0FBQyxLQUFLLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBRXJJLE1BQU0sSUFBSSxLQUFLLENBQUMseUdBQXlHLENBQUMsQ0FBQztTQUU1SDtRQUVELEVBQUUsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxjQUFjLENBQUMsT0FBTyxDQUFDLElBQUks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QUFDO2dCQUNwQyxNQUFNLENBQUMsS0FBSyxDQUFDO2FBQ2Q7U0FFRjtRQUVELE1BQU0sQ0FBQyxJQUFJLENBQUM7S0FFYjs7Z0JBclhGLFVBQVUsU0FBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkI7Ozt3QkFSRDs7U0FTYSxhQUFhIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgSlNPTlNjaGVtYSB9IGZyb20gJy4vanNvbi1zY2hlbWEnO1xuXG4vKipcbiAqIEB0b2RvIEFkZCBvdGhlciBKU09OIFNjaGVtYSB2YWxpZGF0aW9uIGZlYXR1cmVzXG4gKi9cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXG59KVxuZXhwb3J0IGNsYXNzIEpTT05WYWxpZGF0b3Ige1xuXG4gIC8qKlxuICAgKiBWYWxpZGF0ZSBhIEpTT04gZGF0YSBhZ2FpbnN0IGEgSlNPTiBTY2hlbWFcbiAgICogQHBhcmFtIGRhdGEgSlNPTiBkYXRhIHRvIHZhbGlkYXRlXG4gICAqIEBwYXJhbSBzY2hlbWEgU3Vic2V0IG9mIEpTT04gU2NoZW1hLlxuICAgKiBUeXBlcyBhcmUgZW5mb3JjZWQgdG8gdmFsaWRhdGUgZXZlcnl0aGluZzpcbiAgICogZWFjaCB2YWx1ZSBNVVNUIGhhdmUgJ3R5cGUnIG9yICdwcm9wZXJ0aWVzJyBvciAnaXRlbXMnIG9yICdjb25zdCcgb3IgJ2VudW0nLlxuICAgKiBUaGVyZWZvcmUsIHVubGlrZSB0aGUgc3BlYywgYm9vbGVhbnMgYXJlIG5vdCBhbGxvd2VkIGFzIHNjaGVtYXMuXG4gICAqIE5vdCBhbGwgdmFsaWRhdGlvbiBmZWF0dXJlcyBhcmUgc3VwcG9ydGVkOiBqdXN0IGZvbGxvdyB0aGUgaW50ZXJmYWNlLlxuICAgKiBAcmV0dXJucyBJZiBkYXRhIGlzIHZhbGlkIDogdHJ1ZSwgaWYgaXQgaXMgaW52YWxpZCA6IGZhbHNlLCBhbmQgdGhyb3dzIGlmIHRoZSBzY2hlbWEgaXMgaW52YWxpZFxuICAgKi9cbiAgdmFsaWRhdGUoZGF0YTogYW55LCBzY2hlbWE6IEpTT05TY2hlbWEpOiBib29sZWFuIHtcblxuICAgIC8qKiBAdG9kbyBXaGVuIFRTIDIuOCwgZXhwbG9yZSBpZiB0aGlzIGlzIHBvc3NpYmxlIHdpdGggY29uZGl0aW9uYWwgdHlwZXMgKi9cbiAgICBpZiAoKCghKHNjaGVtYS5oYXNPd25Qcm9wZXJ0eSgnY29uc3QnKSAmJiBzY2hlbWEuY29uc3QgIT09IHVuZGVmaW5lZClcbiAgICAmJiAhKHNjaGVtYS5oYXNPd25Qcm9wZXJ0eSgnZW51bScpICYmIHNjaGVtYS5lbnVtICE9IG51bGwpICYmICEoc2NoZW1hLmhhc093blByb3BlcnR5KCd0eXBlJykgJiYgc2NoZW1hLnR5cGUgIT0gbnVsbCkpXG4gICAgfHwgc2NoZW1hLnR5cGUgPT09ICdhcnJheScgfHwgc2NoZW1hLnR5cGUgPT09ICdvYmplY3QnKVxuICAgICYmICEoc2NoZW1hLmhhc093blByb3BlcnR5KCdwcm9wZXJ0aWVzJykgJiYgc2NoZW1hLnByb3BlcnRpZXMgIT0gbnVsbCkgICYmICEoc2NoZW1hLmhhc093blByb3BlcnR5KCdpdGVtcycpICYmIHNjaGVtYS5pdGVtcyAhPSBudWxsKSkge1xuXG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYEVhY2ggdmFsdWUgbXVzdCBoYXZlIGEgJ3R5cGUnIG9yICdwcm9wZXJ0aWVzJyBvciAnaXRlbXMnIG9yICdjb25zdCcgb3IgJ2VudW0nLCB0byBlbmZvcmNlIHN0cmljdCB0eXBlcy5gKTtcblxuICAgIH1cblxuICAgIGlmIChzY2hlbWEuaGFzT3duUHJvcGVydHkoJ2NvbnN0JykgJiYgc2NoZW1hLmNvbnN0ICE9PSB1bmRlZmluZWQgJiYgKGRhdGEgIT09IHNjaGVtYS5jb25zdCkpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICBpZiAoIXRoaXMudmFsaWRhdGVFbnVtKGRhdGEsIHNjaGVtYSkpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICBpZiAoIXRoaXMudmFsaWRhdGVUeXBlKGRhdGEsIHNjaGVtYSkpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICBpZiAoIXRoaXMudmFsaWRhdGVJdGVtcyhkYXRhLCBzY2hlbWEpKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgaWYgKCF0aGlzLnZhbGlkYXRlUHJvcGVydGllcyhkYXRhLCBzY2hlbWEpKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgaWYgKCF0aGlzLnZhbGlkYXRlUmVxdWlyZWQoZGF0YSwgc2NoZW1hKSkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIHJldHVybiB0cnVlO1xuXG4gIH1cblxuICBwcm90ZWN0ZWQgaXNPYmplY3ROb3ROdWxsKHZhbHVlOiBhbnkpOiBib29sZWFuIHtcblxuICAgIHJldHVybiAodmFsdWUgIT09IG51bGwpICYmICh0eXBlb2YgdmFsdWUgPT09ICdvYmplY3QnKTtcblxuICB9XG5cbiAgcHJvdGVjdGVkIHZhbGlkYXRlUHJvcGVydGllcyhkYXRhOiB7IFtrOiBzdHJpbmddOiBhbnk7IH0sIHNjaGVtYTogSlNPTlNjaGVtYSk6IGJvb2xlYW4ge1xuXG4gICAgaWYgKCFzY2hlbWEuaGFzT3duUHJvcGVydHkoJ3Byb3BlcnRpZXMnKSB8fCAoc2NoZW1hLnByb3BlcnRpZXMgPT0gbnVsbCkpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIGlmICghdGhpcy5pc09iamVjdE5vdE51bGwoZGF0YSkpIHtcblxuICAgICAgcmV0dXJuIGZhbHNlO1xuXG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2hlY2sgaWYgdGhlIG9iamVjdCBkb2Vzbid0IGhhdmUgbW9yZSBwcm9wZXJ0aWVzIHRoYW4gZXhwZWN0ZWRcbiAgICAgKiBFcXVpdmFsZW50IG9mIGFkZGl0aW9uYWxQcm9wZXJ0aWVzOiBmYWxzZVxuICAgICAqL1xuICAgIGlmIChPYmplY3Qua2V5cyhzY2hlbWEucHJvcGVydGllcykubGVuZ3RoICE9PSBPYmplY3Qua2V5cyhkYXRhKS5sZW5ndGgpIHtcblxuICAgICAgcmV0dXJuIGZhbHNlO1xuXG4gICAgfVxuXG4gICAgLyogUmVjdXJzaXZlbHkgdmFsaWRhdGUgYWxsIHByb3BlcnRpZXMgKi9cbiAgICBmb3IgKGNvbnN0IHByb3BlcnR5IGluIHNjaGVtYS5wcm9wZXJ0aWVzKSB7XG5cbiAgICAgIGlmIChzY2hlbWEucHJvcGVydGllcy5oYXNPd25Qcm9wZXJ0eShwcm9wZXJ0eSkgJiYgZGF0YS5oYXNPd25Qcm9wZXJ0eShwcm9wZXJ0eSkpIHtcblxuICAgICAgICBpZiAoIXRoaXMudmFsaWRhdGUoZGF0YVtwcm9wZXJ0eV0sIHNjaGVtYS5wcm9wZXJ0aWVzW3Byb3BlcnR5XSkpIHtcblxuICAgICAgICAgIHJldHVybiBmYWxzZTtcblxuICAgICAgICB9XG5cbiAgICAgIH1cblxuICAgIH1cblxuICAgIHJldHVybiB0cnVlO1xuXG4gIH1cblxuICBwcm90ZWN0ZWQgdmFsaWRhdGVSZXF1aXJlZChkYXRhOiB7fSwgc2NoZW1hOiBKU09OU2NoZW1hKTogYm9vbGVhbiB7XG5cbiAgICBpZiAoIXNjaGVtYS5oYXNPd25Qcm9wZXJ0eSgncmVxdWlyZWQnKSB8fCAoc2NoZW1hLnJlcXVpcmVkID09IG51bGwpKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG5cbiAgICBpZiAoIXRoaXMuaXNPYmplY3ROb3ROdWxsKGRhdGEpKSB7XG5cbiAgICAgIHJldHVybiBmYWxzZTtcblxuICAgIH1cblxuICAgIGZvciAoY29uc3QgcmVxdWlyZWRQcm9wIG9mIHNjaGVtYS5yZXF1aXJlZCkge1xuXG4gICAgICAvKiBDaGVja3MgaWYgdGhlIHByb3BlcnR5IGlzIHByZXNlbnQgaW4gdGhlIHNjaGVtYSAncHJvcGVydGllcycgKi9cbiAgICAgIGlmICghc2NoZW1hLnByb3BlcnRpZXMgfHwgIXNjaGVtYS5wcm9wZXJ0aWVzLmhhc093blByb3BlcnR5KHJlcXVpcmVkUHJvcCkpIHtcblxuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYCdyZXF1aXJlZCcgcHJvcGVydGllcyBtdXN0IGJlIGRlc2NyaWJlZCBpbiAncHJvcGVydGllcycgdG9vLmApO1xuXG4gICAgICB9XG5cbiAgICAgIC8qIENoZWNrcyBpZiB0aGUgcHJvcGVydHkgaXMgcHJlc2VudCBpbiB0aGUgZGF0YSAqL1xuICAgICAgaWYgKCFkYXRhLmhhc093blByb3BlcnR5KHJlcXVpcmVkUHJvcCkpIHtcblxuICAgICAgICByZXR1cm4gZmFsc2U7XG5cbiAgICAgIH1cblxuICAgIH1cblxuICAgIHJldHVybiB0cnVlO1xuXG4gIH1cblxuICBwcm90ZWN0ZWQgdmFsaWRhdGVFbnVtKGRhdGE6IGFueSwgc2NoZW1hOiBKU09OU2NoZW1hKTogYm9vbGVhbiB7XG5cbiAgICBpZiAoIXNjaGVtYS5oYXNPd25Qcm9wZXJ0eSgnZW51bScpIHx8IChzY2hlbWEuZW51bSA9PSBudWxsKSkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgLyoqIEB0b2RvIE1vdmUgdG8gRVMyMDE2IC5pbmNsdWRlcygpID8gKi9cbiAgICByZXR1cm4gKHNjaGVtYS5lbnVtLmluZGV4T2YoZGF0YSkgIT09IC0xKTtcblxuICB9XG5cbiAgcHJvdGVjdGVkIHZhbGlkYXRlVHlwZShkYXRhOiBhbnksIHNjaGVtYTogSlNPTlNjaGVtYSk6IGJvb2xlYW4ge1xuXG4gICAgaWYgKCFzY2hlbWEuaGFzT3duUHJvcGVydHkoJ3R5cGUnKSB8fCAoc2NoZW1hLnR5cGUgPT0gbnVsbCkpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIHN3aXRjaCAoc2NoZW1hLnR5cGUpIHtcblxuICAgICAgY2FzZSAnbnVsbCc6XG4gICAgICAgIHJldHVybiBkYXRhID09PSBudWxsO1xuICAgICAgY2FzZSAnc3RyaW5nJzpcbiAgICAgICAgcmV0dXJuIHRoaXMudmFsaWRhdGVTdHJpbmcoZGF0YSwgc2NoZW1hKTtcbiAgICAgIGNhc2UgJ251bWJlcic6XG4gICAgICBjYXNlICdpbnRlZ2VyJzpcbiAgICAgICAgcmV0dXJuIHRoaXMudmFsaWRhdGVOdW1iZXIoZGF0YSwgc2NoZW1hKTtcbiAgICAgIGNhc2UgJ2Jvb2xlYW4nOlxuICAgICAgICByZXR1cm4gdHlwZW9mIGRhdGEgPT09ICdib29sZWFuJztcbiAgICAgIGNhc2UgJ29iamVjdCc6XG4gICAgICAgIHJldHVybiB0eXBlb2YgZGF0YSA9PT0gJ29iamVjdCc7XG4gICAgICBjYXNlICdhcnJheSc6XG4gICAgICAgIHJldHVybiBBcnJheS5pc0FycmF5KGRhdGEpO1xuXG4gICAgfVxuXG4gIH1cblxuICBwcm90ZWN0ZWQgdmFsaWRhdGVJdGVtcyhkYXRhOiBhbnlbXSwgc2NoZW1hOiBKU09OU2NoZW1hKTogYm9vbGVhbiB7XG5cbiAgICBpZiAoIXNjaGVtYS5oYXNPd25Qcm9wZXJ0eSgnaXRlbXMnKSB8fCAoc2NoZW1hLml0ZW1zID09IG51bGwpKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG5cbiAgICBpZiAoIUFycmF5LmlzQXJyYXkoZGF0YSkpIHtcblxuICAgICAgcmV0dXJuIGZhbHNlO1xuXG4gICAgfVxuXG4gICAgaWYgKHNjaGVtYS5oYXNPd25Qcm9wZXJ0eSgnbWF4SXRlbXMnKSAmJiAoc2NoZW1hLm1heEl0ZW1zICE9IG51bGwpKSB7XG5cbiAgICAgIGlmICghTnVtYmVyLmlzSW50ZWdlcihzY2hlbWEubWF4SXRlbXMpIHx8IHNjaGVtYS5tYXhJdGVtcyA8IDApIHtcblxuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYCdtYXhJdGVtcycgbXVzdCBiZSBhIG5vbi1uZWdhdGl2ZSBpbnRlZ2VyLmApO1xuXG4gICAgICB9XG5cbiAgICAgIGlmIChkYXRhLmxlbmd0aCA+IHNjaGVtYS5tYXhJdGVtcykge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG5cbiAgICB9XG5cbiAgICBpZiAoc2NoZW1hLmhhc093blByb3BlcnR5KCdtaW5JdGVtcycpICYmIChzY2hlbWEubWluSXRlbXMgIT0gbnVsbCkpIHtcblxuICAgICAgaWYgKCFOdW1iZXIuaXNJbnRlZ2VyKHNjaGVtYS5taW5JdGVtcykgfHwgc2NoZW1hLm1pbkl0ZW1zIDwgMCkge1xuXG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgJ21pbkl0ZW1zJyBtdXN0IGJlIGEgbm9uLW5lZ2F0aXZlIGludGVnZXIuYCk7XG5cbiAgICAgIH1cblxuICAgICAgaWYgKGRhdGEubGVuZ3RoIDwgc2NoZW1hLm1pbkl0ZW1zKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cblxuICAgIH1cblxuICAgIGlmIChzY2hlbWEuaGFzT3duUHJvcGVydHkoJ3VuaXF1ZUl0ZW1zJykgJiYgKHNjaGVtYS51bmlxdWVJdGVtcyAhPSBudWxsKSkge1xuXG4gICAgICBpZiAoc2NoZW1hLnVuaXF1ZUl0ZW1zKSB7XG5cbiAgICAgICAgY29uc3QgZGF0YVNldCA9IG5ldyBTZXQoZGF0YSk7XG5cbiAgICAgICAgaWYgKGRhdGEubGVuZ3RoICE9PSBkYXRhU2V0LnNpemUpIHtcbiAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cblxuICAgICAgfVxuXG4gICAgfVxuXG4gICAgaWYgKEFycmF5LmlzQXJyYXkoc2NoZW1hLml0ZW1zKSkge1xuXG4gICAgICByZXR1cm4gdGhpcy52YWxpZGF0ZUl0ZW1zTGlzdChkYXRhLCBzY2hlbWEpO1xuXG4gICAgfVxuXG4gICAgZm9yIChjb25zdCB2YWx1ZSBvZiBkYXRhKSB7XG5cbiAgICAgIGlmICghdGhpcy52YWxpZGF0ZSh2YWx1ZSwgc2NoZW1hLml0ZW1zKSkge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG5cbiAgICB9XG5cbiAgICByZXR1cm4gdHJ1ZTtcblxuICB9XG5cbiAgcHJvdGVjdGVkIHZhbGlkYXRlSXRlbXNMaXN0KGRhdGE6IGFueSwgc2NoZW1hOiBKU09OU2NoZW1hKTogYm9vbGVhbiB7XG5cbiAgICBjb25zdCBpdGVtcyA9IHNjaGVtYS5pdGVtcyBhcyBKU09OU2NoZW1hW107XG5cbiAgICBpZiAoZGF0YS5sZW5ndGggIT09IGl0ZW1zLmxlbmd0aCkge1xuXG4gICAgICByZXR1cm4gZmFsc2U7XG5cbiAgICB9XG5cbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGl0ZW1zLmxlbmd0aDsgaSArPSAxKSB7XG5cbiAgICAgIGlmICghdGhpcy52YWxpZGF0ZShkYXRhW2ldLCBpdGVtc1tpXSkpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuXG4gICAgfVxuXG4gICAgcmV0dXJuIHRydWU7XG5cbiAgfVxuXG4gIHByb3RlY3RlZCB2YWxpZGF0ZVN0cmluZyhkYXRhOiBhbnksIHNjaGVtYTogSlNPTlNjaGVtYSk6IGJvb2xlYW4ge1xuXG4gICAgaWYgKHR5cGVvZiBkYXRhICE9PSAnc3RyaW5nJykge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIGlmIChzY2hlbWEuaGFzT3duUHJvcGVydHkoJ21heExlbmd0aCcpICYmIChzY2hlbWEubWF4TGVuZ3RoICE9IG51bGwpKSB7XG5cbiAgICAgIGlmICghTnVtYmVyLmlzSW50ZWdlcihzY2hlbWEubWF4TGVuZ3RoKSB8fCBzY2hlbWEubWF4TGVuZ3RoIDwgMCkge1xuXG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgJ21heExlbmd0aCcgbXVzdCBiZSBhIG5vbi1uZWdhdGl2ZSBpbnRlZ2VyLmApO1xuXG4gICAgICB9XG5cbiAgICAgIGlmIChkYXRhLmxlbmd0aCA+IHNjaGVtYS5tYXhMZW5ndGgpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuXG4gICAgfVxuXG4gICAgaWYgKHNjaGVtYS5oYXNPd25Qcm9wZXJ0eSgnbWluTGVuZ3RoJykgJiYgKHNjaGVtYS5taW5MZW5ndGggIT0gbnVsbCkpIHtcblxuICAgICAgaWYgKCFOdW1iZXIuaXNJbnRlZ2VyKHNjaGVtYS5taW5MZW5ndGgpIHx8IHNjaGVtYS5taW5MZW5ndGggPCAwKSB7XG5cbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGAnbWluTGVuZ3RoJyBtdXN0IGJlIGEgbm9uLW5lZ2F0aXZlIGludGVnZXIuYCk7XG5cbiAgICAgIH1cblxuICAgICAgaWYgKGRhdGEubGVuZ3RoIDwgc2NoZW1hLm1pbkxlbmd0aCkge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG5cbiAgICB9XG5cbiAgICBpZiAoc2NoZW1hLmhhc093blByb3BlcnR5KCdwYXR0ZXJuJykgJiYgKHNjaGVtYS5wYXR0ZXJuICE9IG51bGwpKSB7XG5cbiAgICAgIGNvbnN0IHJlZ3VsYXJFeHByZXNzaW9uID0gbmV3IFJlZ0V4cChzY2hlbWEucGF0dGVybik7XG5cbiAgICAgIGlmICghcmVndWxhckV4cHJlc3Npb24udGVzdChkYXRhKSkge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG5cbiAgICB9XG5cbiAgICByZXR1cm4gdHJ1ZTtcblxuICB9XG5cbiAgcHJvdGVjdGVkIHZhbGlkYXRlTnVtYmVyKGRhdGE6IGFueSwgc2NoZW1hOiBKU09OU2NoZW1hKTogYm9vbGVhbiB7XG5cbiAgICBpZiAodHlwZW9mIGRhdGEgIT09ICdudW1iZXInKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgaWYgKChzY2hlbWEudHlwZSA9PT0gJ2ludGVnZXInKSAmJiAhTnVtYmVyLmlzSW50ZWdlcihkYXRhKSkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIGlmIChzY2hlbWEuaGFzT3duUHJvcGVydHkoJ211bHRpcGxlT2YnKSAmJiAoc2NoZW1hLm11bHRpcGxlT2YgIT0gbnVsbCkpIHtcblxuICAgICAgaWYgKHNjaGVtYS5tdWx0aXBsZU9mIDw9IDApIHtcblxuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYCdtdWx0aXBsZU9mJyBtdXN0IGJlIGEgbnVtYmVyIHN0cmljdGx5IGdyZWF0ZXIgdGhhbiAwLmApO1xuXG4gICAgICB9XG5cbiAgICAgIGlmICghTnVtYmVyLmlzSW50ZWdlcihkYXRhIC8gc2NoZW1hLm11bHRpcGxlT2YpKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cblxuICAgIH1cblxuICAgIGlmIChzY2hlbWEuaGFzT3duUHJvcGVydHkoJ21heGltdW0nKSAmJiAoc2NoZW1hLm1heGltdW0gIT0gbnVsbCkpIHtcblxuICAgICAgaWYgKGRhdGEgPiBzY2hlbWEubWF4aW11bSkge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG5cbiAgICB9XG5cbiAgICBpZiAoc2NoZW1hLmhhc093blByb3BlcnR5KCdleGNsdXNpdmVNYXhpbXVtJykgJiYgKHNjaGVtYS5leGNsdXNpdmVNYXhpbXVtICE9IG51bGwpKSB7XG5cbiAgICAgIGlmIChkYXRhID49IHNjaGVtYS5leGNsdXNpdmVNYXhpbXVtKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cblxuICAgIH1cblxuICAgIGlmIChzY2hlbWEuaGFzT3duUHJvcGVydHkoJ21pbmltdW0nKSAmJiAoc2NoZW1hLm1pbmltdW0gIT0gbnVsbCkpIHtcblxuICAgICAgaWYgKGRhdGEgPCBzY2hlbWEubWluaW11bSkge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG5cbiAgICB9XG5cbiAgICBpZiAoc2NoZW1hLmhhc093blByb3BlcnR5KCdleGNsdXNpdmVNaW5pbXVtJykgJiYgKHNjaGVtYS5leGNsdXNpdmVNaW5pbXVtICE9IG51bGwpKSB7XG5cbiAgICAgIGlmIChkYXRhIDw9IHNjaGVtYS5leGNsdXNpdmVNaW5pbXVtKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cblxuICAgIH1cblxuICAgIHJldHVybiB0cnVlO1xuXG4gIH1cblxufVxuIl19
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoianNvbi12YWxpZGF0b3IuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9Abmd4LXB3YS9sb2NhbC1zdG9yYWdlLyIsInNvdXJjZXMiOlsibGliL3ZhbGlkYXRpb24vanNvbi12YWxpZGF0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDOzs7OztBQU0zQztJQUFBO0tBdVhDO0lBbFhDOzs7Ozs7Ozs7T0FTRzs7Ozs7Ozs7Ozs7SUFDSCxnQ0FBUTs7Ozs7Ozs7OztJQUFSLFVBQVMsSUFBUyxFQUFFLE1BQWtCO1FBRXBDLDRFQUE0RTtRQUM1RSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLGNBQWMsQ0FBQyxPQUFPLENBQUMsSUFBSSxNQUFNLENBQUMsS0FBSyxLQUFLLFNBQVMsQ0FBQztlQUNsRSxDQUFDLENBQUMsTUFBTSxDQUFDLGNBQWMsQ0FBQyxNQUFNLENBQUMsSUFBSSxNQUFNLENBQUMsSUFBSSxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxNQUFNLENBQUMsY0FBYyxDQUFDLE1BQU0sQ0FBQyxJQUFJLE1BQU0sQ0FBQyxJQUFJLElBQUksSUFBSSxDQUFDLENBQUM7ZUFDbkgsTUFBTSxDQUFDLElBQUksS0FBSyxPQUFPLElBQUksTUFBTSxDQUFDLElBQUksS0FBSyxRQUFRLENBQUM7ZUFDcEQsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxjQUFjLENBQUMsWUFBWSxDQUFDLElBQUksTUFBTSxDQUFDLFVBQVUsSUFBSSxJQUFJLENBQUMsSUFBSyxDQUFDLENBQUMsTUFBTSxDQUFDLGNBQWMsQ0FBQyxPQUFPLENBQUMsSUFBSSxNQUFNLENBQUMsS0FBSyxJQUFJLElBQUksQ0FBQyxFQUFFO1lBRXBJLE1BQU0sSUFBSSxLQUFLLENBQUMseUdBQXlHLENBQUMsQ0FBQztTQUU1SDtRQUVELElBQUksTUFBTSxDQUFDLGNBQWMsQ0FBQyxPQUFPLENBQUMsSUFBSSxNQUFN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QU0sQ0FBQyxPQUFPLEVBQUU7Z0JBQ3pCLE9BQU8sS0FBSyxDQUFDO2FBQ2Q7U0FFRjtRQUVELElBQUksTUFBTSxDQUFDLGNBQWMsQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLGdCQUFnQixJQUFJLElBQUksQ0FBQyxFQUFFO1lBRWxGLElBQUksSUFBSSxJQUFJLE1BQU0sQ0FBQyxnQkFBZ0IsRUFBRTtnQkFDbkMsT0FBTyxLQUFLLENBQUM7YUFDZDtTQUVGO1FBRUQsSUFBSSxNQUFNLENBQUMsY0FBYyxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sSUFBSSxJQUFJLENBQUMsRUFBRTtZQUVoRSxJQUFJLElBQUksR0FBRyxNQUFNLENBQUMsT0FBTyxFQUFFO2dCQUN6QixPQUFPLEtBQUssQ0FBQzthQUNkO1NBRUY7UUFFRCxJQUFJLE1BQU0sQ0FBQyxjQUFjLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxnQkFBZ0IsSUFBSSxJQUFJLENBQUMsRUFBRTtZQUVsRixJQUFJLElBQUksSUFBSSxNQUFNLENBQUMsZ0JBQWdCLEVBQUU7Z0JBQ25DLE9BQU8sS0FBSyxDQUFDO2FBQ2Q7U0FFRjtRQUVELE9BQU8sSUFBSSxDQUFDO0lBRWQsQ0FBQzs7Z0JBclhGLFVBQVUsU0FBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkI7Ozt3QkFSRDtDQTZYQyxBQXZYRCxJQXVYQztTQXBYWSxhQUFhIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgSlNPTlNjaGVtYSB9IGZyb20gJy4vanNvbi1zY2hlbWEnO1xuXG4vKipcbiAqIEB0b2RvIEFkZCBvdGhlciBKU09OIFNjaGVtYSB2YWxpZGF0aW9uIGZlYXR1cmVzXG4gKi9cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXG59KVxuZXhwb3J0IGNsYXNzIEpTT05WYWxpZGF0b3Ige1xuXG4gIC8qKlxuICAgKiBWYWxpZGF0ZSBhIEpTT04gZGF0YSBhZ2FpbnN0IGEgSlNPTiBTY2hlbWFcbiAgICogQHBhcmFtIGRhdGEgSlNPTiBkYXRhIHRvIHZhbGlkYXRlXG4gICAqIEBwYXJhbSBzY2hlbWEgU3Vic2V0IG9mIEpTT04gU2NoZW1hLlxuICAgKiBUeXBlcyBhcmUgZW5mb3JjZWQgdG8gdmFsaWRhdGUgZXZlcnl0aGluZzpcbiAgICogZWFjaCB2YWx1ZSBNVVNUIGhhdmUgJ3R5cGUnIG9yICdwcm9wZXJ0aWVzJyBvciAnaXRlbXMnIG9yICdjb25zdCcgb3IgJ2VudW0nLlxuICAgKiBUaGVyZWZvcmUsIHVubGlrZSB0aGUgc3BlYywgYm9vbGVhbnMgYXJlIG5vdCBhbGxvd2VkIGFzIHNjaGVtYXMuXG4gICAqIE5vdCBhbGwgdmFsaWRhdGlvbiBmZWF0dXJlcyBhcmUgc3VwcG9ydGVkOiBqdXN0IGZvbGxvdyB0aGUgaW50ZXJmYWNlLlxuICAgKiBAcmV0dXJucyBJZiBkYXRhIGlzIHZhbGlkIDogdHJ1ZSwgaWYgaXQgaXMgaW52YWxpZCA6IGZhbHNlLCBhbmQgdGhyb3dzIGlmIHRoZSBzY2hlbWEgaXMgaW52YWxpZFxuICAgKi9cbiAgdmFsaWRhdGUoZGF0YTogYW55LCBzY2hlbWE6IEpTT05TY2hlbWEpOiBib29sZWFuIHtcblxuICAgIC8qKiBAdG9kbyBXaGVuIFRTIDIuOCwgZXhwbG9yZSBpZiB0aGlzIGlzIHBvc3NpYmxlIHdpdGggY29uZGl0aW9uYWwgdHlwZXMgKi9cbiAgICBpZiAoKCghKHNjaGVtYS5oYXNPd25Qcm9wZXJ0eSgnY29uc3QnKSAmJiBzY2hlbWEuY29uc3QgIT09IHVuZGVmaW5lZClcbiAgICAmJiAhKHNjaGVtYS5oYXNPd25Qcm9wZXJ0eSgnZW51bScpICYmIHNjaGVtYS5lbnVtICE9IG51bGwpICYmICEoc2NoZW1hLmhhc093blByb3BlcnR5KCd0eXBlJykgJiYgc2NoZW1hLnR5cGUgIT0gbnVsbCkpXG4gICAgfHwgc2NoZW1hLnR5cGUgPT09ICdhcnJheScgfHwgc2NoZW1hLnR5cGUgPT09ICdvYmplY3QnKVxuICAgICYmICEoc2NoZW1hLmhhc093blByb3BlcnR5KCdwcm9wZXJ0aWVzJykgJiYgc2NoZW1hLnByb3BlcnRpZXMgIT0gbnVsbCkgICYmICEoc2NoZW1hLmhhc093blByb3BlcnR5KCdpdGVtcycpICYmIHNjaGVtYS5pdGVtcyAhPSBudWxsKSkge1xuXG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYEVhY2ggdmFsdWUgbXVzdCBoYXZlIGEgJ3R5cGUnIG9yICdwcm9wZXJ0aWVzJyBvciAnaXRlbXMnIG9yICdjb25zdCcgb3IgJ2VudW0nLCB0byBlbmZvcmNlIHN0cmljdCB0eXBlcy5gKTtcblxuICAgIH1cblxuICAgIGlmIChzY2hlbWEuaGFzT3duUHJvcGVydHkoJ2NvbnN0JykgJiYgc2NoZW1hLmNvbnN0ICE9PSB1bmRlZmluZWQgJiYgKGRhdGEgIT09IHNjaGVtYS5jb25zdCkpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICBpZiAoIXRoaXMudmFsaWRhdGVFbnVtKGRhdGEsIHNjaGVtYSkpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICBpZiAoIXRoaXMudmFsaWRhdGVUeXBlKGRhdGEsIHNjaGVtYSkpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICBpZiAoIXRoaXMudmFsaWRhdGVJdGVtcyhkYXRhLCBzY2hlbWEpKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgaWYgKCF0aGlzLnZhbGlkYXRlUHJvcGVydGllcyhkYXRhLCBzY2hlbWEpKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgaWYgKCF0aGlzLnZhbGlkYXRlUmVxdWlyZWQoZGF0YSwgc2NoZW1hKSkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIHJldHVybiB0cnVlO1xuXG4gIH1cblxuICBwcm90ZWN0ZWQgaXNPYmplY3ROb3ROdWxsKHZhbHVlOiBhbnkpOiBib29sZWFuIHtcblxuICAgIHJldHVybiAodmFsdWUgIT09IG51bGwpICYmICh0eXBlb2YgdmFsdWUgPT09ICdvYmplY3QnKTtcblxuICB9XG5cbiAgcHJvdGVjdGVkIHZhbGlkYXRlUHJvcGVydGllcyhkYXRhOiB7IFtrOiBzdHJpbmddOiBhbnk7IH0sIHNjaGVtYTogSlNPTlNjaGVtYSk6IGJvb2xlYW4ge1xuXG4gICAgaWYgKCFzY2hlbWEuaGFzT3duUHJvcGVydHkoJ3Byb3BlcnRpZXMnKSB8fCAoc2NoZW1hLnByb3BlcnRpZXMgPT0gbnVsbCkpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIGlmICghdGhpcy5pc09iamVjdE5vdE51bGwoZGF0YSkpIHtcblxuICAgICAgcmV0dXJuIGZhbHNlO1xuXG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2hlY2sgaWYgdGhlIG9iamVjdCBkb2Vzbid0IGhhdmUgbW9yZSBwcm9wZXJ0aWVzIHRoYW4gZXhwZWN0ZWRcbiAgICAgKiBFcXVpdmFsZW50IG9mIGFkZGl0aW9uYWxQcm9wZXJ0aWVzOiBmYWxzZVxuICAgICAqL1xuICAgIGlmIChPYmplY3Qua2V5cyhzY2hlbWEucHJvcGVydGllcykubGVuZ3RoICE9PSBPYmplY3Qua2V5cyhkYXRhKS5sZW5ndGgpIHtcblxuICAgICAgcmV0dXJuIGZhbHNlO1xuXG4gICAgfVxuXG4gICAgLyogUmVjdXJzaXZlbHkgdmFsaWRhdGUgYWxsIHByb3BlcnRpZXMgKi9cbiAgICBmb3IgKGNvbnN0IHByb3BlcnR5IGluIHNjaGVtYS5wcm9wZXJ0aWVzKSB7XG5cbiAgICAgIGlmIChzY2hlbWEucHJvcGVydGllcy5oYXNPd25Qcm9wZXJ0eShwcm9wZXJ0eSkgJiYgZGF0YS5oYXNPd25Qcm9wZXJ0eShwcm9wZXJ0eSkpIHtcblxuICAgICAgICBpZiAoIXRoaXMudmFsaWRhdGUoZGF0YVtwcm9wZXJ0eV0sIHNjaGVtYS5wcm9wZXJ0aWVzW3Byb3BlcnR5XSkpIHtcblxuICAgICAgICAgIHJldHVybiBmYWxzZTtcblxuICAgICAgICB9XG5cbiAgICAgIH1cblxuICAgIH1cblxuICAgIHJldHVybiB0cnVlO1xuXG4gIH1cblxuICBwcm90ZWN0ZWQgdmFsaWRhdGVSZXF1aXJlZChkYXRhOiB7fSwgc2NoZW1hOiBKU09OU2NoZW1hKTogYm9vbGVhbiB7XG5cbiAgICBpZiAoIXNjaGVtYS5oYXNPd25Qcm9wZXJ0eSgncmVxdWlyZWQnKSB8fCAoc2NoZW1hLnJlcXVpcmVkID09IG51bGwpKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG5cbiAgICBpZiAoIXRoaXMuaXNPYmplY3ROb3ROdWxsKGRhdGEpKSB7XG5cbiAgICAgIHJldHVybiBmYWxzZTtcblxuICAgIH1cblxuICAgIGZvciAoY29uc3QgcmVxdWlyZWRQcm9wIG9mIHNjaGVtYS5yZXF1aXJlZCkge1xuXG4gICAgICAvKiBDaGVja3MgaWYgdGhlIHByb3BlcnR5IGlzIHByZXNlbnQgaW4gdGhlIHNjaGVtYSAncHJvcGVydGllcycgKi9cbiAgICAgIGlmICghc2NoZW1hLnByb3BlcnRpZXMgfHwgIXNjaGVtYS5wcm9wZXJ0aWVzLmhhc093blByb3BlcnR5KHJlcXVpcmVkUHJvcCkpIHtcblxuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYCdyZXF1aXJlZCcgcHJvcGVydGllcyBtdXN0IGJlIGRlc2NyaWJlZCBpbiAncHJvcGVydGllcycgdG9vLmApO1xuXG4gICAgICB9XG5cbiAgICAgIC8qIENoZWNrcyBpZiB0aGUgcHJvcGVydHkgaXMgcHJlc2VudCBpbiB0aGUgZGF0YSAqL1xuICAgICAgaWYgKCFkYXRhLmhhc093blByb3BlcnR5KHJlcXVpcmVkUHJvcCkpIHtcblxuICAgICAgICByZXR1cm4gZmFsc2U7XG5cbiAgICAgIH1cblxuICAgIH1cblxuICAgIHJldHVybiB0cnVlO1xuXG4gIH1cblxuICBwcm90ZWN0ZWQgdmFsaWRhdGVFbnVtKGRhdGE6IGFueSwgc2NoZW1hOiBKU09OU2NoZW1hKTogYm9vbGVhbiB7XG5cbiAgICBpZiAoIXNjaGVtYS5oYXNPd25Qcm9wZXJ0eSgnZW51bScpIHx8IChzY2hlbWEuZW51bSA9PSBudWxsKSkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgLyoqIEB0b2RvIE1vdmUgdG8gRVMyMDE2IC5pbmNsdWRlcygpID8gKi9cbiAgICByZXR1cm4gKHNjaGVtYS5lbnVtLmluZGV4T2YoZGF0YSkgIT09IC0xKTtcblxuICB9XG5cbiAgcHJvdGVjdGVkIHZhbGlkYXRlVHlwZShkYXRhOiBhbnksIHNjaGVtYTogSlNPTlNjaGVtYSk6IGJvb2xlYW4ge1xuXG4gICAgaWYgKCFzY2hlbWEuaGFzT3duUHJvcGVydHkoJ3R5cGUnKSB8fCAoc2NoZW1hLnR5cGUgPT0gbnVsbCkpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIHN3aXRjaCAoc2NoZW1hLnR5cGUpIHtcblxuICAgICAgY2FzZSAnbnVsbCc6XG4gICAgICAgIHJldHVybiBkYXRhID09PSBudWxsO1xuICAgICAgY2FzZSAnc3RyaW5nJzpcbiAgICAgICAgcmV0dXJuIHRoaXMudmFsaWRhdGVTdHJpbmcoZGF0YSwgc2NoZW1hKTtcbiAgICAgIGNhc2UgJ251bWJlcic6XG4gICAgICBjYXNlICdpbnRlZ2VyJzpcbiAgICAgICAgcmV0dXJuIHRoaXMudmFsaWRhdGVOdW1iZXIoZGF0YSwgc2NoZW1hKTtcbiAgICAgIGNhc2UgJ2Jvb2xlYW4nOlxuICAgICAgICByZXR1cm4gdHlwZW9mIGRhdGEgPT09ICdib29sZWFuJztcbiAgICAgIGNhc2UgJ29iamVjdCc6XG4gICAgICAgIHJldHVybiB0eXBlb2YgZGF0YSA9PT0gJ29iamVjdCc7XG4gICAgICBjYXNlICdhcnJheSc6XG4gICAgICAgIHJldHVybiBBcnJheS5pc0FycmF5KGRhdGEpO1xuXG4gICAgfVxuXG4gIH1cblxuICBwcm90ZWN0ZWQgdmFsaWRhdGVJdGVtcyhkYXRhOiBhbnlbXSwgc2NoZW1hOiBKU09OU2NoZW1hKTogYm9vbGVhbiB7XG5cbiAgICBpZiAoIXNjaGVtYS5oYXNPd25Qcm9wZXJ0eSgnaXRlbXMnKSB8fCAoc2NoZW1hLml0ZW1zID09IG51bGwpKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG5cbiAgICBpZiAoIUFycmF5LmlzQXJyYXkoZGF0YSkpIHtcblxuICAgICAgcmV0dXJuIGZhbHNlO1xuXG4gICAgfVxuXG4gICAgaWYgKHNjaGVtYS5oYXNPd25Qcm9wZXJ0eSgnbWF4SXRlbXMnKSAmJiAoc2NoZW1hLm1heEl0ZW1zICE9IG51bGwpKSB7XG5cbiAgICAgIGlmICghTnVtYmVyLmlzSW50ZWdlcihzY2hlbWEubWF4SXRlbXMpIHx8IHNjaGVtYS5tYXhJdGVtcyA8IDApIHtcblxuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYCdtYXhJdGVtcycgbXVzdCBiZSBhIG5vbi1uZWdhdGl2ZSBpbnRlZ2VyLmApO1xuXG4gICAgICB9XG5cbiAgICAgIGlmIChkYXRhLmxlbmd0aCA+IHNjaGVtYS5tYXhJdGVtcykge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG5cbiAgICB9XG5cbiAgICBpZiAoc2NoZW1hLmhhc093blByb3BlcnR5KCdtaW5JdGVtcycpICYmIChzY2hlbWEubWluSXRlbXMgIT0gbnVsbCkpIHtcblxuICAgICAgaWYgKCFOdW1iZXIuaXNJbnRlZ2VyKHNjaGVtYS5taW5JdGVtcykgfHwgc2NoZW1hLm1pbkl0ZW1zIDwgMCkge1xuXG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgJ21pbkl0ZW1zJyBtdXN0IGJlIGEgbm9uLW5lZ2F0aXZlIGludGVnZXIuYCk7XG5cbiAgICAgIH1cblxuICAgICAgaWYgKGRhdGEubGVuZ3RoIDwgc2NoZW1hLm1pbkl0ZW1zKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cblxuICAgIH1cblxuICAgIGlmIChzY2hlbWEuaGFzT3duUHJvcGVydHkoJ3VuaXF1ZUl0ZW1zJykgJiYgKHNjaGVtYS51bmlxdWVJdGVtcyAhPSBudWxsKSkge1xuXG4gICAgICBpZiAoc2NoZW1hLnVuaXF1ZUl0ZW1zKSB7XG5cbiAgICAgICAgY29uc3QgZGF0YVNldCA9IG5ldyBTZXQoZGF0YSk7XG5cbiAgICAgICAgaWYgKGRhdGEubGVuZ3RoICE9PSBkYXRhU2V0LnNpemUpIHtcbiAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cblxuICAgICAgfVxuXG4gICAgfVxuXG4gICAgaWYgKEFycmF5LmlzQXJyYXkoc2NoZW1hLml0ZW1zKSkge1xuXG4gICAgICByZXR1cm4gdGhpcy52YWxpZGF0ZUl0ZW1zTGlzdChkYXRhLCBzY2hlbWEpO1xuXG4gICAgfVxuXG4gICAgZm9yIChjb25zdCB2YWx1ZSBvZiBkYXRhKSB7XG5cbiAgICAgIGlmICghdGhpcy52YWxpZGF0ZSh2YWx1ZSwgc2NoZW1hLml0ZW1zKSkge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG5cbiAgICB9XG5cbiAgICByZXR1cm4gdHJ1ZTtcblxuICB9XG5cbiAgcHJvdGVjdGVkIHZhbGlkYXRlSXRlbXNMaXN0KGRhdGE6IGFueSwgc2NoZW1hOiBKU09OU2NoZW1hKTogYm9vbGVhbiB7XG5cbiAgICBjb25zdCBpdGVtcyA9IHNjaGVtYS5pdGVtcyBhcyBKU09OU2NoZW1hW107XG5cbiAgICBpZiAoZGF0YS5sZW5ndGggIT09IGl0ZW1zLmxlbmd0aCkge1xuXG4gICAgICByZXR1cm4gZmFsc2U7XG5cbiAgICB9XG5cbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGl0ZW1zLmxlbmd0aDsgaSArPSAxKSB7XG5cbiAgICAgIGlmICghdGhpcy52YWxpZGF0ZShkYXRhW2ldLCBpdGVtc1tpXSkpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuXG4gICAgfVxuXG4gICAgcmV0dXJuIHRydWU7XG5cbiAgfVxuXG4gIHByb3RlY3RlZCB2YWxpZGF0ZVN0cmluZyhkYXRhOiBhbnksIHNjaGVtYTogSlNPTlNjaGVtYSk6IGJvb2xlYW4ge1xuXG4gICAgaWYgKHR5cGVvZiBkYXRhICE9PSAnc3RyaW5nJykge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIGlmIChzY2hlbWEuaGFzT3duUHJvcGVydHkoJ21heExlbmd0aCcpICYmIChzY2hlbWEubWF4TGVuZ3RoICE9IG51bGwpKSB7XG5cbiAgICAgIGlmICghTnVtYmVyLmlzSW50ZWdlcihzY2hlbWEubWF4TGVuZ3RoKSB8fCBzY2hlbWEubWF4TGVuZ3RoIDwgMCkge1xuXG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgJ21heExlbmd0aCcgbXVzdCBiZSBhIG5vbi1uZWdhdGl2ZSBpbnRlZ2VyLmApO1xuXG4gICAgICB9XG5cbiAgICAgIGlmIChkYXRhLmxlbmd0aCA+IHNjaGVtYS5tYXhMZW5ndGgpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuXG4gICAgfVxuXG4gICAgaWYgKHNjaGVtYS5oYXNPd25Qcm9wZXJ0eSgnbWluTGVuZ3RoJykgJiYgKHNjaGVtYS5taW5MZW5ndGggIT0gbnVsbCkpIHtcblxuICAgICAgaWYgKCFOdW1iZXIuaXNJbnRlZ2VyKHNjaGVtYS5taW5MZW5ndGgpIHx8IHNjaGVtYS5taW5MZW5ndGggPCAwKSB7XG5cbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGAnbWluTGVuZ3RoJyBtdXN0IGJlIGEgbm9uLW5lZ2F0aXZlIGludGVnZXIuYCk7XG5cbiAgICAgIH1cblxuICAgICAgaWYgKGRhdGEubGVuZ3RoIDwgc2NoZW1hLm1pbkxlbmd0aCkge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG5cbiAgICB9XG5cbiAgICBpZiAoc2NoZW1hLmhhc093blByb3BlcnR5KCdwYXR0ZXJuJykgJiYgKHNjaGVtYS5wYXR0ZXJuICE9IG51bGwpKSB7XG5cbiAgICAgIGNvbnN0IHJlZ3VsYXJFeHByZXNzaW9uID0gbmV3IFJlZ0V4cChzY2hlbWEucGF0dGVybik7XG5cbiAgICAgIGlmICghcmVndWxhckV4cHJlc3Npb24udGVzdChkYXRhKSkge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG5cbiAgICB9XG5cbiAgICByZXR1cm4gdHJ1ZTtcblxuICB9XG5cbiAgcHJvdGVjdGVkIHZhbGlkYXRlTnVtYmVyKGRhdGE6IGFueSwgc2NoZW1hOiBKU09OU2NoZW1hKTogYm9vbGVhbiB7XG5cbiAgICBpZiAodHlwZW9mIGRhdGEgIT09ICdudW1iZXInKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgaWYgKChzY2hlbWEudHlwZSA9PT0gJ2ludGVnZXInKSAmJiAhTnVtYmVyLmlzSW50ZWdlcihkYXRhKSkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIGlmIChzY2hlbWEuaGFzT3duUHJvcGVydHkoJ211bHRpcGxlT2YnKSAmJiAoc2NoZW1hLm11bHRpcGxlT2YgIT0gbnVsbCkpIHtcblxuICAgICAgaWYgKHNjaGVtYS5tdWx0aXBsZU9mIDw9IDApIHtcblxuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYCdtdWx0aXBsZU9mJyBtdXN0IGJlIGEgbnVtYmVyIHN0cmljdGx5IGdyZWF0ZXIgdGhhbiAwLmApO1xuXG4gICAgICB9XG5cbiAgICAgIGlmICghTnVtYmVyLmlzSW50ZWdlcihkYXRhIC8gc2NoZW1hLm11bHRpcGxlT2YpKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cblxuICAgIH1cblxuICAgIGlmIChzY2hlbWEuaGFzT3duUHJvcGVydHkoJ21heGltdW0nKSAmJiAoc2NoZW1hLm1heGltdW0gIT0gbnVsbCkpIHtcblxuICAgICAgaWYgKGRhdGEgPiBzY2hlbWEubWF4aW11bSkge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG5cbiAgICB9XG5cbiAgICBpZiAoc2NoZW1hLmhhc093blByb3BlcnR5KCdleGNsdXNpdmVNYXhpbXVtJykgJiYgKHNjaGVtYS5leGNsdXNpdmVNYXhpbXVtICE9IG51bGwpKSB7XG5cbiAgICAgIGlmIChkYXRhID49IHNjaGVtYS5leGNsdXNpdmVNYXhpbXVtKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cblxuICAgIH1cblxuICAgIGlmIChzY2hlbWEuaGFzT3duUHJvcGVydHkoJ21pbmltdW0nKSAmJiAoc2NoZW1hLm1pbmltdW0gIT0gbnVsbCkpIHtcblxuICAgICAgaWYgKGRhdGEgPCBzY2hlbWEubWluaW11bSkge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG5cbiAgICB9XG5cbiAgICBpZiAoc2NoZW1hLmhhc093blByb3BlcnR5KCdleGNsdXNpdmVNaW5pbXVtJykgJiYgKHNjaGVtYS5leGNsdXNpdmVNaW5pbXVtICE9IG51bGwpKSB7XG5cbiAgICAgIGlmIChkYXRhIDw9IHNjaGVtYS5leGNsdXNpdmVNaW5pbXVtKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cblxuICAgIH1cblxuICAgIHJldHVybiB0cnVlO1xuXG4gIH1cblxufVxuIl19
/**
* @fileoverview added by tsickle
* @suppress {checkTypes} checked by tsc
* @suppress {checkTypes,extraRequire,uselessCode} checked by tsc
*/

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

export { localDatabaseFactory as ɵa } from './lib/databases/local-database';
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmd4LXB3YS1sb2NhbC1zdG9yYWdlLmpzIiwic291cmNlUm9vdCI6Im5nOi8vQG5neC1wd2EvbG9jYWwtc3RvcmFnZS8iLCJzb3VyY2VzIjpbIm5neC1wd2EtbG9jYWwtc3RvcmFnZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7O0FBSUEsb0tBQWMsY0FBYyxDQUFDO0FBRTdCLE9BQU8sRUFBQyxvQkFBb0IsSUFBSSxFQUFFLEVBQUMsTUFBTSxnQ0FBZ0MsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogR2VuZXJhdGVkIGJ1bmRsZSBpbmRleC4gRG8gbm90IGVkaXQuXG4gKi9cblxuZXhwb3J0ICogZnJvbSAnLi9wdWJsaWNfYXBpJztcblxuZXhwb3J0IHtsb2NhbERhdGFiYXNlRmFjdG9yeSBhcyDJtWF9IGZyb20gJy4vbGliL2RhdGFiYXNlcy9sb2NhbC1kYXRhYmFzZSc7Il19
/**
* @fileoverview added by tsickle
* @suppress {checkTypes} checked by tsc
* @suppress {checkTypes,extraRequire,uselessCode} checked by tsc
*/

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

export { localStorageProviders, LOCAL_STORAGE_PREFIX } from './lib/tokens';
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljX2FwaS5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BuZ3gtcHdhL2xvY2FsLXN0b3JhZ2UvIiwic291cmNlcyI6WyJwdWJsaWNfYXBpLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFLQSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDL0QsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFDdkUsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sdUNBQXVDLENBQUM7QUFDN0UsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFDeEUsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQ2hFLE9BQU8sRUFBb0IsWUFBWSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDbkUsT0FBTyxFQUFFLHFCQUFxQixFQUErQixvQkFBb0IsRUFBRSxNQUFNLGNBQWMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiBQdWJsaWMgQVBJIFN1cmZhY2Ugb2YgbG9jYWwtc3RvcmFnZVxuICovXG5cbmV4cG9ydCB7IEpTT05TY2hlbWEgfSBmcm9tICcuL2xpYi92YWxpZGF0aW9uL2pzb24tc2NoZW1hJztcbmV4cG9ydCB7IExvY2FsRGF0YWJhc2UgfSBmcm9tICcuL2xpYi9kYXRhYmFzZXMvbG9jYWwtZGF0YWJhc2UnO1xuZXhwb3J0IHsgSW5kZXhlZERCRGF0YWJhc2UgfSBmcm9tICcuL2xpYi9kYXRhYmFzZXMvaW5kZXhlZGRiLWRhdGFiYXNlJztcbmV4cG9ydCB7IExvY2FsU3RvcmFnZURhdGFiYXNlIH0gZnJvbSAnLi9saWIvZGF0YWJhc2VzL2xvY2Fsc3RvcmFnZS1kYXRhYmFzZSc7XG5leHBvcnQgeyBNb2NrTG9jYWxEYXRhYmFzZSB9IGZyb20gJy4vbGliL2RhdGFiYXNlcy9tb2NrLWxvY2FsLWRhdGFiYXNlJztcbmV4cG9ydCB7IEpTT05WYWxpZGF0b3IgfSBmcm9tICcuL2xpYi92YWxpZGF0aW9uL2pzb24tdmFsaWRhdG9yJztcbmV4cG9ydCB7IExTR2V0SXRlbU9wdGlvbnMsIExvY2FsU3RvcmFnZSB9IGZyb20gJy4vbGliL2xpYi5zZXJ2aWNlJztcbmV4cG9ydCB7IGxvY2FsU3RvcmFnZVByb3ZpZGVycywgTG9jYWxTdG9yYWdlUHJvdmlkZXJzQ29uZmlnLCBMT0NBTF9TVE9SQUdFX1BSRUZJWCB9IGZyb20gJy4vbGliL3Rva2Vucyc7XG4iXX0=

@@ -12,11 +12,11 @@ import { Observable, ReplaySubject } from 'rxjs';

*/
protected readonly objectStoreName: string;
protected readonly objectStoreName = "localStorage";
/**
* IndexedDB key path name for local storage (where an item's key will be stored)
*/
protected readonly keyPath: string;
protected readonly keyPath = "key";
/**
* IndexedDB data path name for local storage (where items' value will be stored)
*/
protected readonly dataPath: string;
protected readonly dataPath = "value";
/**

@@ -49,3 +49,3 @@ * IndexedDB database connection, wrapped in a RxJS ReplaySubject to be able to access the connection

*/
private getItemFromTransaction<T>(key, transactionParam?);
private getItemFromTransaction;
/**

@@ -52,0 +52,0 @@ * Sets an item in local storage

{
"name": "@ngx-pwa/local-storage",
"version": "6.1.1",
"version": "7.0.0-beta.0",
"description": "Efficient local storage module for Angular apps and PWA: simple API based on native localStorage API, but internally stored via the asynchronous IndexedDB API for performance, and wrapped in RxJS observables to be homogeneous with other Angular modules.",

@@ -11,4 +11,2 @@ "author": "Cyrille Tuzi",

"angular 2",
"angular4",
"angular 4",
"angular5",

@@ -18,2 +16,4 @@ "angular 5",

"angular 6",
"angular7",
"angular 7",
"localstorage",

@@ -34,4 +34,4 @@ "local storage",

"peerDependencies": {
"@angular/common": "^6.0.0",
"@angular/core": "^6.0.0",
"@angular/common": "^7.0.0 || ^7.0.0-rc.0",
"@angular/core": "^7.0.0 || ^7.0.0-rc.0",
"rxjs": "^6.0.0"

@@ -38,0 +38,0 @@ },

@@ -49,2 +49,5 @@ # Async local storage for Angular

```bash
# For Angular 7:
npm install @ngx-pwa/local-storage@next
# For Angular 6:

@@ -55,8 +58,5 @@ npm install @ngx-pwa/local-storage@6

npm install @ngx-pwa/local-storage@5
# For Angular 4 (and TypeScript >= 2.3):
npm install @ngx-pwa/local-storage@4
```
Then, **for *versions 4 & 5 only*, include the `LocalStorageModule`** in your app root module (just once, do NOT re-import it in your submodules). **Since *version 6*, this step must be skipped, as `LocalStorageModule` is *removed*.**
Then, **for *version 5 only*, include the `LocalStorageModule`** in your app root module (just once, do NOT re-import it in your submodules). **Since *version 6*, this step must be skipped, as `LocalStorageModule` is *removed*.**

@@ -219,7 +219,7 @@ ```typescript

This lib major version is aligned to the major version of Angular. Meaning for Angular 4 you need version 4,
for Angular 5 you need version 5, for Angular 6 you need version 6, and so on.
This lib major version is aligned to the major version of Angular. Meaning for Angular 5 you need version 5,
for Angular 6 you need version 6, for Angular 7 you need version 7, and so on.
We follow [Angular LTS support](https://angular.io/guide/releases),
meaning we support Angular 4 minimum, until October 2018.
meaning we support Angular 5 minimum, until May 2019.

@@ -226,0 +226,0 @@ This module supports [AoT pre-compiling](https://angular.io/guide/aot-compiler).

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