@simpleangularcontrols/sac-common 16.0.0-rc.21 → 16.0.0-rc.22
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/controls/grid/gridcolumnbase.d.ts +5 -1
- package/controls/grid/gridcolumnbase.d.ts.map +1 -1
- package/controls/treeview/treeview.d.ts +2 -2
- package/controls/treeview/treeview.d.ts.map +1 -1
- package/esm2022/common/basedatetimecontrol.mjs +1 -1
- package/esm2022/common/baseinputcontrol.mjs +1 -1
- package/esm2022/common/baselistcontrol.mjs +1 -1
- package/esm2022/common/basemodelcontrol.mjs +1 -1
- package/esm2022/common/baseselectcontrol.mjs +1 -1
- package/esm2022/common/baseuploadcontrol.mjs +1 -1
- package/esm2022/components/browser/browser.mjs +1 -1
- package/esm2022/components/browser/models/browserfiledeleterequest.mjs +1 -1
- package/esm2022/components/browser/models/browserfilerenamerequest.mjs +1 -1
- package/esm2022/components/browser/models/browserfilesaverequest.mjs +1 -1
- package/esm2022/components/browser/models/browsernodedeleterequest.mjs +1 -1
- package/esm2022/components/browser/models/browsernodenewrequest.mjs +1 -1
- package/esm2022/components/browser/models/browsernoderenamerequest.mjs +1 -1
- package/esm2022/components/browser/models/browsernoderequest.mjs +1 -1
- package/esm2022/controls/buttons/button.mjs +1 -1
- package/esm2022/controls/checkbox/checkbox.mjs +1 -1
- package/esm2022/controls/checkbox/radiobutton.mjs +1 -1
- package/esm2022/controls/checkbox/radiobuttons.mjs +1 -1
- package/esm2022/controls/confirm/confirm.button.mjs +1 -1
- package/esm2022/controls/confirm/confirm.mjs +1 -1
- package/esm2022/controls/confirm/confirm.service.mjs +1 -1
- package/esm2022/controls/contextmenu/contextmenu.mjs +1 -1
- package/esm2022/controls/contextmenu/contextmenuanchor.mjs +1 -1
- package/esm2022/controls/contextmenu/contextmenucontainer.mjs +1 -1
- package/esm2022/controls/contextmenu/contextmenuitem.mjs +1 -1
- package/esm2022/controls/contextmenu/contextmenuitembutton.mjs +1 -1
- package/esm2022/controls/datetime/date.mjs +1 -1
- package/esm2022/controls/datetime/dateselector.mjs +1 -1
- package/esm2022/controls/datetime/datetime.mjs +1 -1
- package/esm2022/controls/datetime/time.mjs +1 -1
- package/esm2022/controls/dialog/dialog.mjs +1 -1
- package/esm2022/controls/form/form.mjs +1 -1
- package/esm2022/controls/grid/grid.mjs +1 -1
- package/esm2022/controls/grid/gridbutton.mjs +1 -1
- package/esm2022/controls/grid/gridcolumn.mjs +1 -1
- package/esm2022/controls/grid/gridcolumnaction.mjs +1 -1
- package/esm2022/controls/grid/gridcolumnbase.mjs +16 -14
- package/esm2022/controls/grid/model.mjs +1 -1
- package/esm2022/controls/grid/paging.mjs +1 -1
- package/esm2022/controls/input/input.mjs +1 -1
- package/esm2022/controls/input/inputarea.mjs +1 -1
- package/esm2022/controls/input/inputcurrency.mjs +1 -1
- package/esm2022/controls/input/inputdecimal.mjs +1 -1
- package/esm2022/controls/input/inputemail.mjs +1 -1
- package/esm2022/controls/input/inputinteger.mjs +1 -1
- package/esm2022/controls/input/inputpassword.mjs +1 -1
- package/esm2022/controls/input/inputsearch.mjs +1 -1
- package/esm2022/controls/layout/formlayout.mjs +1 -1
- package/esm2022/controls/list/buildvaluestring.mjs +1 -1
- package/esm2022/controls/list/dropdown.mjs +1 -1
- package/esm2022/controls/list/dropdownoptions.mjs +1 -1
- package/esm2022/controls/list/listbox.mjs +1 -1
- package/esm2022/controls/multilanguage/multilanguageinput.mjs +1 -1
- package/esm2022/controls/multilanguage/multilanguageinputarea.mjs +1 -1
- package/esm2022/controls/static/formcontainer.mjs +1 -1
- package/esm2022/controls/static/staticlabel.mjs +1 -1
- package/esm2022/controls/tabs/tab.mjs +1 -1
- package/esm2022/controls/tabs/tabitem.mjs +1 -1
- package/esm2022/controls/tinymce/tinymce.mjs +1 -1
- package/esm2022/controls/tinymce/tinymcedialogsettings.mjs +1 -1
- package/esm2022/controls/tooltip/tooltip.mjs +1 -1
- package/esm2022/controls/treeview/treeview.mjs +6 -6
- package/esm2022/controls/upload/dropzonemultiple.mjs +1 -1
- package/esm2022/controls/upload/dropzonesingle.mjs +1 -1
- package/esm2022/controls/upload/uploadmultiple.mjs +1 -1
- package/esm2022/controls/upload/uploadsingle.mjs +1 -1
- package/esm2022/controls/validation/validationsummary.mjs +1 -1
- package/esm2022/controls/wizard/wizard.mjs +1 -1
- package/esm2022/controls/wizard/wizarditem.mjs +1 -1
- package/esm2022/enums/ControlHeight.mjs +1 -1
- package/esm2022/enums/IconType.mjs +1 -1
- package/esm2022/models/languagemodel.mjs +1 -1
- package/esm2022/services/sac-configuration.service.mjs +1 -1
- package/esm2022/services/sac-filebrowser.service.mjs +1 -1
- package/esm2022/services/sac-icon.service.mjs +1 -1
- package/esm2022/services/sac-language.service.mjs +1 -1
- package/esm2022/services/sac-localisation.service.mjs +1 -1
- package/esm2022/services/sac-validationkey.service.mjs +1 -1
- package/esm2022/utilities/convertion.mjs +1 -1
- package/esm2022/utilities/datatypes.mjs +1 -1
- package/esm2022/utilities/enums.mjs +1 -1
- package/esm2022/utilities/guid.mjs +1 -1
- package/esm2022/utilities/interpolation.mjs +1 -1
- package/esm2022/utilities/popuphelper.mjs +1 -1
- package/esm2022/utilities/positioning.mjs +1 -1
- package/esm2022/utilities/testingattribute.pipe.mjs +1 -1
- package/esm2022/validation/email.validator.mjs +1 -1
- package/esm2022/validation/equals.validator.mjs +1 -1
- package/esm2022/validation/invaliddate.validator.mjs +1 -1
- package/esm2022/validation/isDateValid.mjs +1 -1
- package/esm2022/validation/maxdate.validator.mjs +1 -1
- package/esm2022/validation/maxtime.validator.mjs +1 -1
- package/esm2022/validation/maxvalue.validator.mjs +1 -1
- package/esm2022/validation/mindate.validator.mjs +1 -1
- package/esm2022/validation/minfiles.validator.mjs +1 -1
- package/esm2022/validation/mintextlength.validator.mjs +1 -1
- package/esm2022/validation/mintime.validator.mjs +1 -1
- package/esm2022/validation/minvalue.validator.mjs +1 -1
- package/esm2022/validation/multilanguagerequired.validator.mjs +1 -1
- package/esm2022/validation/multilanguagerequiredany.validator.mjs +1 -1
- package/esm2022/validation/notequals.validator.mjs +1 -1
- package/esm2022/validation/pattern.validator.mjs +1 -1
- package/esm2022/validation/required.validator.mjs +1 -1
- package/esm2022/validation/validation.mjs +1 -1
- package/esm2022/validation/validationerrorcreator.mjs +1 -1
- package/esm2022/validation/validationerroritem.mjs +1 -1
- package/fesm2022/simpleangularcontrols-sac-common.mjs +668 -666
- package/fesm2022/simpleangularcontrols-sac-common.mjs.map +1 -1
- package/package.json +1 -1
- package/simpleangularcontrols-sac-common-16.0.0-rc.22.tgz +0 -0
- package/simpleangularcontrols-sac-common-16.0.0-rc.21.tgz +0 -0
|
@@ -5,4 +5,4 @@ cov_1aed3li6gc=function(){return actualCoverage;};}return actualCoverage;}cov_1a
|
|
|
5
5
|
*/export function createGuid(){cov_1aed3li6gc().f[0]++;cov_1aed3li6gc().s[0]++;if((cov_1aed3li6gc().b[1][0]++,typeof crypto!==undefined)&&(cov_1aed3li6gc().b[1][1]++,crypto['randomUUID']!==undefined)){cov_1aed3li6gc().b[0][0]++;cov_1aed3li6gc().s[1]++;// return guid without hyphen
|
|
6
6
|
return crypto.randomUUID().replace(/\-/gi,'');}else{cov_1aed3li6gc().b[0][1]++;cov_1aed3li6gc().s[2]++;return'xxxxxxxxxxxx4xxxyxxxxxxxxxxxxxxx'.replace(/[xy]/g,function(c){cov_1aed3li6gc().f[1]++;var r=(cov_1aed3li6gc().s[3]++,Math.random()*16|0),v=(cov_1aed3li6gc().s[4]++,c=='x'?(cov_1aed3li6gc().b[2][0]++,r):(cov_1aed3li6gc().b[2][1]++,r&0x3|0x8));cov_1aed3li6gc().s[5]++;return v.toString(16);});}}// #endregion Functions
|
|
7
7
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3VpZC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL3NhYy1jb21tb24vc3JjL3V0aWxpdGllcy9ndWlkLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLG9CQUFvQjtBQUVwQjs7R0FFRztBQUNILE1BQU0sVUFBVSxVQUFVO0lBQ3hCLElBQUksT0FBTyxNQUFNLEtBQUssU0FBUyxJQUFJLE1BQU0sQ0FBQyxZQUFZLENBQUMsS0FBSyxTQUFTLEVBQUU7UUFDckUsNkJBQTZCO1FBQzdCLE9BQU8sTUFBTSxDQUFDLFVBQVUsRUFBRSxDQUFDLE9BQU8sQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDLENBQUM7S0FDaEQ7U0FBTTtRQUNMLE9BQU8sa0NBQWtDLENBQUMsT0FBTyxDQUFDLE9BQU8sRUFBRSxVQUFVLENBQUM7WUFDcEUsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUM5QixDQUFDLEdBQUcsQ0FBQyxJQUFJLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxHQUFHLENBQUMsR0FBRyxHQUFHLENBQUM7WUFDckMsT0FBTyxDQUFDLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQ3hCLENBQUMsQ0FBQyxDQUFDO0tBQ0o7QUFDSCxDQUFDO0FBRUQsdUJBQXVCIiwic291cmNlc0NvbnRlbnQiOlsiLy8gI3JlZ2lvbiBGdW5jdGlvbnNcblxuLyoqXG4gKiBjcmVhdGUgYSBndWlkIHdpdGggY3J5cHRvIGxpYnJhcnkgaWYgYXZhaWxhYmUgYW5kIGEgZmFsbGJhY2sgdG8gTWF0aC5SYW5kb20gaW1wbGVtZW50YXRpb25cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZUd1aWQoKTogc3RyaW5nIHtcbiAgaWYgKHR5cGVvZiBjcnlwdG8gIT09IHVuZGVmaW5lZCAmJiBjcnlwdG9bJ3JhbmRvbVVVSUQnXSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgLy8gcmV0dXJuIGd1aWQgd2l0aG91dCBoeXBoZW5cbiAgICByZXR1cm4gY3J5cHRvLnJhbmRvbVVVSUQoKS5yZXBsYWNlKC9cXC0vZ2ksICcnKTtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gJ3h4eHh4eHh4eHh4eDR4eHh5eHh4eHh4eHh4eHh4eHh4Jy5yZXBsYWNlKC9beHldL2csIGZ1bmN0aW9uIChjKSB7XG4gICAgICB2YXIgciA9IChNYXRoLnJhbmRvbSgpICogMTYpIHwgMCxcbiAgICAgICAgdiA9IGMgPT0gJ3gnID8gciA6IChyICYgMHgzKSB8IDB4ODtcbiAgICAgIHJldHVybiB2LnRvU3RyaW5nKDE2KTtcbiAgICB9KTtcbiAgfVxufVxuXG4vLyAjZW5kcmVnaW9uIEZ1bmN0aW9uc1xuIl19
|
|
8
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,
|
|
8
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJjb3ZfMWFlZDNsaTZnYyIsImFjdHVhbENvdmVyYWdlIiwiY3JlYXRlR3VpZCIsImYiLCJzIiwiYiIsImNyeXB0byIsInVuZGVmaW5lZCIsInJhbmRvbVVVSUQiLCJyZXBsYWNlIiwiYyIsInIiLCJNYXRoIiwicmFuZG9tIiwidiIsInRvU3RyaW5nIl0sInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvc2FjLWNvbW1vbi9zcmMvdXRpbGl0aWVzL2d1aWQudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gI3JlZ2lvbiBGdW5jdGlvbnNcblxuLyoqXG4gKiBjcmVhdGUgYSBndWlkIHdpdGggY3J5cHRvIGxpYnJhcnkgaWYgYXZhaWxhYmUgYW5kIGEgZmFsbGJhY2sgdG8gTWF0aC5SYW5kb20gaW1wbGVtZW50YXRpb25cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZUd1aWQoKTogc3RyaW5nIHtcbiAgaWYgKHR5cGVvZiBjcnlwdG8gIT09IHVuZGVmaW5lZCAmJiBjcnlwdG9bJ3JhbmRvbVVVSUQnXSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgLy8gcmV0dXJuIGd1aWQgd2l0aG91dCBoeXBoZW5cbiAgICByZXR1cm4gY3J5cHRvLnJhbmRvbVVVSUQoKS5yZXBsYWNlKC9cXC0vZ2ksICcnKTtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gJ3h4eHh4eHh4eHh4eDR4eHh5eHh4eHh4eHh4eHh4eHh4Jy5yZXBsYWNlKC9beHldL2csIGZ1bmN0aW9uIChjKSB7XG4gICAgICB2YXIgciA9IChNYXRoLnJhbmRvbSgpICogMTYpIHwgMCxcbiAgICAgICAgdiA9IGMgPT0gJ3gnID8gciA6IChyICYgMHgzKSB8IDB4ODtcbiAgICAgIHJldHVybiB2LnRvU3RyaW5nKDE2KTtcbiAgICB9KTtcbiAgfVxufVxuXG4vLyAjZW5kcmVnaW9uIEZ1bmN0aW9uc1xuIl0sIm1hcHBpbmdzIjoiMnVHQWdCQztBQUFBQSxjQUFBLFNBQUFBLENBQUEsU0FBQUMsY0FBQSxXQUFBQSxjQUFBLEVBQUFELGNBQUEsR0FoQkQ7QUFFQTs7R0FHQSxNQUFNLFNBQVUsQ0FBQUUsVUFBVUEsQ0FBQSxFQUFBRixjQUFBLEdBQUFHLENBQUEsS0FBQUgsQ0FBQSxpQkFBQUksQ0FBQSxNQUN4QixHQUFJLENBQUFKLGNBQUEsR0FBQUssQ0FBQSxlQUFPLENBQUFDLE1BQU0sR0FBS0MsU0FBUyxJQUFBUCxjQUFBLEdBQUFLLENBQUEsU0FBSUMsTUFBTSxDQUFDLFlBQVksQ0FBQyxHQUFLQyxTQUFTLEVBQUUsQ0FBQVAsY0FBQSxHQUFBSyxDQUFBLFFBQUFMLENBQUEsaUJBQUFJLENBQUEsTUFDckU7QUFDQSxNQUFPLENBQUFFLE1BQU0sQ0FBQ0UsVUFBVSxFQUFFLENBQUNDLE9BQU8sQ0FBQyxNQUFNLENBQUUsRUFBRSxDQUFDLEMsQ0FDL0MsSUFBTSxDQUFBVCxjQUFBLEdBQUFLLENBQUEsUUFBQUwsQ0FBQSxpQkFBQUksQ0FBQSxNQUNMLE1BQU8sa0NBQWtDLENBQUNLLE9BQU8sQ0FBQyxPQUFPLENBQUUsU0FBVUMsQ0FBQyxFQUFBVixjQUFBLEdBQUFHLENBQUEsTUFDcEUsR0FBSSxDQUFBUSxDQUFDLEVBQUFYLGNBQUEsR0FBQUksQ0FBQSxNQUFJUSxJQUFJLENBQUNDLE1BQU0sRUFBRSxDQUFHLEVBQUUsQ0FBSSxDQUFDLEVBQzlCQyxDQUFDLEVBQUFkLGNBQUEsR0FBQUksQ0FBQSxNQUFHTSxDQUFDLEVBQUksR0FBRyxFQUFBVixjQUFBLEdBQUFLLENBQUEsU0FBR00sQ0FBQyxHQUFBWCxjQUFBLEdBQUFLLENBQUEsU0FBSU0sQ0FBQyxDQUFHLEdBQUcsQ0FBSSxHQUFHLEdBQUNYLGNBQUEsR0FBQUksQ0FBQSxNQUNyQyxNQUFPLENBQUFVLENBQUMsQ0FBQ0MsUUFBUSxDQUFDLEVBQUUsQ0FBQyxDQUN2QixDQUFDLENBQUMsQyxDQUVOLENBRUEiLCJpZ25vcmVMaXN0IjpbXX0=
|
|
@@ -12,4 +12,4 @@ cov_skqccrera=function(){return actualCoverage;};}return actualCoverage;}cov_skq
|
|
|
12
12
|
* @param target Objekt das zu parsen ist.
|
|
13
13
|
* @param key Key nach welchem gesucht wird. Navigation in Properties des Objekt mit einem Punkt.
|
|
14
14
|
*/getValue(target,key){cov_skqccrera().f[3]++;const keys=(cov_skqccrera().s[6]++,key.split('.'));cov_skqccrera().s[7]++;key='';cov_skqccrera().s[8]++;do{cov_skqccrera().s[9]++;key+=keys.shift();cov_skqccrera().s[10]++;if((cov_skqccrera().b[3][0]++,isDefined(target))&&(cov_skqccrera().b[3][1]++,isDefined(target[key]))&&((cov_skqccrera().b[3][2]++,typeof target[key]==='object')||(cov_skqccrera().b[3][3]++,!keys.length))){cov_skqccrera().b[2][0]++;cov_skqccrera().s[11]++;target=target[key];cov_skqccrera().s[12]++;key='';}else{cov_skqccrera().b[2][1]++;cov_skqccrera().s[13]++;if(!keys.length){cov_skqccrera().b[4][0]++;cov_skqccrera().s[14]++;target=undefined;}else{cov_skqccrera().b[4][1]++;cov_skqccrera().s[15]++;key+='.';}}}while(keys.length);cov_skqccrera().s[16]++;return target;}}//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW50ZXJwb2xhdGlvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL3NhYy1jb21tb24vc3JjL3V0aWxpdGllcy9pbnRlcnBvbGF0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFFeEM7O0dBRUc7QUFDSCxNQUFNLE9BQU8sYUFBYTtJQUExQjtRQUVFOztXQUVHO1FBQ0ssb0JBQWUsR0FBVyx1QkFBdUIsQ0FBQztJQXlDNUQsQ0FBQztJQXZDQzs7OztPQUlHO0lBQ0ksaUJBQWlCLENBQUMsSUFBWSxFQUFFLE1BQVk7UUFDakQsSUFBSSxDQUFDLE1BQU0sRUFBRTtZQUNYLE9BQU8sSUFBSSxDQUFDO1NBQ2I7UUFFRCxPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDLFNBQWlCLEVBQUUsQ0FBUyxFQUFFLEVBQUU7WUFDekUsTUFBTSxDQUFDLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLENBQUM7WUFDbkMsT0FBTyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDO1FBQ3RDLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVEOzs7O09BSUc7SUFDSyxRQUFRLENBQUMsTUFBVyxFQUFFLEdBQVc7UUFDdkMsTUFBTSxJQUFJLEdBQUcsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUM1QixHQUFHLEdBQUcsRUFBRSxDQUFDO1FBQ1QsR0FBRztZQUNELEdBQUcsSUFBSSxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDcEIsSUFBSSxTQUFTLENBQUMsTUFBTSxDQUFDLElBQUksU0FBUyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxNQUFNLENBQUMsR0FBRyxDQUFDLEtBQUssUUFBUSxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxFQUFFO2dCQUNwRyxNQUFNLEdBQUcsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDO2dCQUNyQixHQUFHLEdBQUcsRUFBRSxDQUFDO2FBQ1Y7aUJBQU0sSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUU7Z0JBQ3ZCLE1BQU0sR0FBRyxTQUFTLENBQUM7YUFDcEI7aUJBQU07Z0JBQ0wsR0FBRyxJQUFJLEdBQUcsQ0FBQzthQUNaO1NBQ0YsUUFBUSxJQUFJLENBQUMsTUFBTSxFQUFFO1FBRXRCLE9BQU8sTUFBTSxDQUFDO0lBQ2hCLENBQUM7Q0FFRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGlzRGVmaW5lZCB9IGZyb20gJy4vZGF0YXR5cGVzJztcblxuLyoqXG4gKiAgS2xhc3NlIHp1bSBlcnNldHplbiB2b24gUGxhdHpoYWx0ZXJuIGluIFN0cmluZ3NcbiAqL1xuZXhwb3J0IGNsYXNzIEludGVycG9sYXRpb24ge1xuXG4gIC8qKlxuICAgKiAgVGVtcGxhdGUgenVtIFBhcnNlbiBkZXIgUGxhdHpoYWx0ZXJcbiAgICovXG4gIHByaXZhdGUgdGVtcGxhdGVNYXRjaGVyOiBSZWdFeHAgPSAve3tcXHM/KFtee31cXHNdKilcXHM/fX0vZztcblxuICAvKipcbiAgICogUGxhdHpoYWx0ZXIgaW4gU3RyaW5nIGVyc2V0emVuXG4gICAqIEBwYXJhbSB0ZXh0IFRleHQgaW4gd2VsY2hlbSBkaWUgUGxhdHpoYWx0ZXIgZXJzZXR6dCB3ZXJkZW5cbiAgICogQHBhcmFtIHBhcmFtcyBPYmpla3QgbWl0IFBhcmFtZXRlci5cbiAgICovXG4gIHB1YmxpYyBpbnRlcnBvbGF0ZVN0cmluZyh0ZXh0OiBzdHJpbmcsIHBhcmFtcz86IGFueSkge1xuICAgIGlmICghcGFyYW1zKSB7XG4gICAgICByZXR1cm4gdGV4dDtcbiAgICB9XG5cbiAgICByZXR1cm4gdGV4dC5yZXBsYWNlKHRoaXMudGVtcGxhdGVNYXRjaGVyLCAoc3Vic3RyaW5nOiBzdHJpbmcsIGI6IHN0cmluZykgPT4ge1xuICAgICAgY29uc3QgciA9IHRoaXMuZ2V0VmFsdWUocGFyYW1zLCBiKTtcbiAgICAgIHJldHVybiBpc0RlZmluZWQocikgPyByIDogc3Vic3RyaW5nO1xuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIFdlcnQgYXVzIE9iamVrdCBpbiBPYmpla3Qgb2RlciBPYmpla3RzdHJ1a3R1ciBsZXNlblxuICAgKiBAcGFyYW0gdGFyZ2V0IE9iamVrdCBkYXMgenUgcGFyc2VuIGlzdC5cbiAgICogQHBhcmFtIGtleSBLZXkgbmFjaCB3ZWxjaGVtIGdlc3VjaHQgd2lyZC4gTmF2aWdhdGlvbiBpbiBQcm9wZXJ0aWVzIGRlcyBPYmpla3QgbWl0IGVpbmVtIFB1bmt0LlxuICAgKi9cbiAgcHJpdmF0ZSBnZXRWYWx1ZSh0YXJnZXQ6IGFueSwga2V5OiBzdHJpbmcpOiBhbnkge1xuICAgIGNvbnN0IGtleXMgPSBrZXkuc3BsaXQoJy4nKTtcbiAgICBrZXkgPSAnJztcbiAgICBkbyB7XG4gICAgICBrZXkgKz0ga2V5cy5zaGlmdCgpO1xuICAgICAgaWYgKGlzRGVmaW5lZCh0YXJnZXQpICYmIGlzRGVmaW5lZCh0YXJnZXRba2V5XSkgJiYgKHR5cGVvZiB0YXJnZXRba2V5XSA9PT0gJ29iamVjdCcgfHwgIWtleXMubGVuZ3RoKSkge1xuICAgICAgICB0YXJnZXQgPSB0YXJnZXRba2V5XTtcbiAgICAgICAga2V5ID0gJyc7XG4gICAgICB9IGVsc2UgaWYgKCFrZXlzLmxlbmd0aCkge1xuICAgICAgICB0YXJnZXQgPSB1bmRlZmluZWQ7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBrZXkgKz0gJy4nO1xuICAgICAgfVxuICAgIH0gd2hpbGUgKGtleXMubGVuZ3RoKTtcblxuICAgIHJldHVybiB0YXJnZXQ7XG4gIH1cblxufVxuIl19
|
|
15
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJjb3Zfc2txY2NyZXJhIiwiYWN0dWFsQ292ZXJhZ2UiLCJpc0RlZmluZWQiLCJJbnRlcnBvbGF0aW9uIiwiY29uc3RydWN0b3IiLCJmIiwicyIsInRlbXBsYXRlTWF0Y2hlciIsImludGVycG9sYXRlU3RyaW5nIiwidGV4dCIsInBhcmFtcyIsImIiLCJyZXBsYWNlIiwic3Vic3RyaW5nIiwiciIsImdldFZhbHVlIiwidGFyZ2V0Iiwia2V5Iiwia2V5cyIsInNwbGl0Iiwic2hpZnQiLCJsZW5ndGgiLCJ1bmRlZmluZWQiXSwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9zYWMtY29tbW9uL3NyYy91dGlsaXRpZXMvaW50ZXJwb2xhdGlvbi50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBpc0RlZmluZWQgfSBmcm9tICcuL2RhdGF0eXBlcyc7XG5cbi8qKlxuICogIEtsYXNzZSB6dW0gZXJzZXR6ZW4gdm9uIFBsYXR6aGFsdGVybiBpbiBTdHJpbmdzXG4gKi9cbmV4cG9ydCBjbGFzcyBJbnRlcnBvbGF0aW9uIHtcblxuICAvKipcbiAgICogIFRlbXBsYXRlIHp1bSBQYXJzZW4gZGVyIFBsYXR6aGFsdGVyXG4gICAqL1xuICBwcml2YXRlIHRlbXBsYXRlTWF0Y2hlcjogUmVnRXhwID0gL3t7XFxzPyhbXnt9XFxzXSopXFxzP319L2c7XG5cbiAgLyoqXG4gICAqIFBsYXR6aGFsdGVyIGluIFN0cmluZyBlcnNldHplblxuICAgKiBAcGFyYW0gdGV4dCBUZXh0IGluIHdlbGNoZW0gZGllIFBsYXR6aGFsdGVyIGVyc2V0enQgd2VyZGVuXG4gICAqIEBwYXJhbSBwYXJhbXMgT2JqZWt0IG1pdCBQYXJhbWV0ZXIuXG4gICAqL1xuICBwdWJsaWMgaW50ZXJwb2xhdGVTdHJpbmcodGV4dDogc3RyaW5nLCBwYXJhbXM/OiBhbnkpIHtcbiAgICBpZiAoIXBhcmFtcykge1xuICAgICAgcmV0dXJuIHRleHQ7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRleHQucmVwbGFjZSh0aGlzLnRlbXBsYXRlTWF0Y2hlciwgKHN1YnN0cmluZzogc3RyaW5nLCBiOiBzdHJpbmcpID0+
|
|
15
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJjb3Zfc2txY2NyZXJhIiwiYWN0dWFsQ292ZXJhZ2UiLCJpc0RlZmluZWQiLCJJbnRlcnBvbGF0aW9uIiwiY29uc3RydWN0b3IiLCJmIiwicyIsInRlbXBsYXRlTWF0Y2hlciIsImludGVycG9sYXRlU3RyaW5nIiwidGV4dCIsInBhcmFtcyIsImIiLCJyZXBsYWNlIiwic3Vic3RyaW5nIiwiciIsImdldFZhbHVlIiwidGFyZ2V0Iiwia2V5Iiwia2V5cyIsInNwbGl0Iiwic2hpZnQiLCJsZW5ndGgiLCJ1bmRlZmluZWQiXSwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9zYWMtY29tbW9uL3NyYy91dGlsaXRpZXMvaW50ZXJwb2xhdGlvbi50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBpc0RlZmluZWQgfSBmcm9tICcuL2RhdGF0eXBlcyc7XG5cbi8qKlxuICogIEtsYXNzZSB6dW0gZXJzZXR6ZW4gdm9uIFBsYXR6aGFsdGVybiBpbiBTdHJpbmdzXG4gKi9cbmV4cG9ydCBjbGFzcyBJbnRlcnBvbGF0aW9uIHtcblxuICAvKipcbiAgICogIFRlbXBsYXRlIHp1bSBQYXJzZW4gZGVyIFBsYXR6aGFsdGVyXG4gICAqL1xuICBwcml2YXRlIHRlbXBsYXRlTWF0Y2hlcjogUmVnRXhwID0gL3t7XFxzPyhbXnt9XFxzXSopXFxzP319L2c7XG5cbiAgLyoqXG4gICAqIFBsYXR6aGFsdGVyIGluIFN0cmluZyBlcnNldHplblxuICAgKiBAcGFyYW0gdGV4dCBUZXh0IGluIHdlbGNoZW0gZGllIFBsYXR6aGFsdGVyIGVyc2V0enQgd2VyZGVuXG4gICAqIEBwYXJhbSBwYXJhbXMgT2JqZWt0IG1pdCBQYXJhbWV0ZXIuXG4gICAqL1xuICBwdWJsaWMgaW50ZXJwb2xhdGVTdHJpbmcodGV4dDogc3RyaW5nLCBwYXJhbXM/OiBhbnkpIHtcbiAgICBpZiAoIXBhcmFtcykge1xuICAgICAgcmV0dXJuIHRleHQ7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRleHQucmVwbGFjZSh0aGlzLnRlbXBsYXRlTWF0Y2hlciwgKHN1YnN0cmluZzogc3RyaW5nLCBiOiBzdHJpbmcpID0+IHtcbiAgICAgIGNvbnN0IHIgPSB0aGlzLmdldFZhbHVlKHBhcmFtcywgYik7XG4gICAgICByZXR1cm4gaXNEZWZpbmVkKHIpID8gciA6IHN1YnN0cmluZztcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBXZXJ0IGF1cyBPYmpla3QgaW4gT2JqZWt0IG9kZXIgT2JqZWt0c3RydWt0dXIgbGVzZW5cbiAgICogQHBhcmFtIHRhcmdldCBPYmpla3QgZGFzIHp1IHBhcnNlbiBpc3QuXG4gICAqIEBwYXJhbSBrZXkgS2V5IG5hY2ggd2VsY2hlbSBnZXN1Y2h0IHdpcmQuIE5hdmlnYXRpb24gaW4gUHJvcGVydGllcyBkZXMgT2JqZWt0IG1pdCBlaW5lbSBQdW5rdC5cbiAgICovXG4gIHByaXZhdGUgZ2V0VmFsdWUodGFyZ2V0OiBhbnksIGtleTogc3RyaW5nKTogYW55IHtcbiAgICBjb25zdCBrZXlzID0ga2V5LnNwbGl0KCcuJyk7XG4gICAga2V5ID0gJyc7XG4gICAgZG8ge1xuICAgICAga2V5ICs9IGtleXMuc2hpZnQoKTtcbiAgICAgIGlmIChpc0RlZmluZWQodGFyZ2V0KSAmJiBpc0RlZmluZWQodGFyZ2V0W2tleV0pICYmICh0eXBlb2YgdGFyZ2V0W2tleV0gPT09ICdvYmplY3QnIHx8ICFrZXlzLmxlbmd0aCkpIHtcbiAgICAgICAgdGFyZ2V0ID0gdGFyZ2V0W2tleV07XG4gICAgICAgIGtleSA9ICcnO1xuICAgICAgfSBlbHNlIGlmICgha2V5cy5sZW5ndGgpIHtcbiAgICAgICAgdGFyZ2V0ID0gdW5kZWZpbmVkO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAga2V5ICs9ICcuJztcbiAgICAgIH1cbiAgICB9IHdoaWxlIChrZXlzLmxlbmd0aCk7XG5cbiAgICByZXR1cm4gdGFyZ2V0O1xuICB9XG5cbn1cbiJdLCJtYXBwaW5ncyI6InNrTUFnQks7QUFBQUEsYUFBQSxTQUFBQSxD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
|
|
@@ -77,4 +77,4 @@ allowedPositions=allowedPositions|TooltipPosition.bottom;}else{cov_27uqywa3nl().
|
|
|
77
77
|
* @returns Scroll top value of element with all childs
|
|
78
78
|
*/getScrollTopParent(element,isFixed=(cov_27uqywa3nl().b[66][0]++,false)){cov_27uqywa3nl().f[12]++;cov_27uqywa3nl().s[124]++;if(element===null){cov_27uqywa3nl().b[67][0]++;cov_27uqywa3nl().s[125]++;return 0;}else{cov_27uqywa3nl().b[67][1]++;}// Body Scroll should not be calculated
|
|
79
79
|
cov_27uqywa3nl().s[126]++;if(!element.parentElement){cov_27uqywa3nl().b[68][0]++;cov_27uqywa3nl().s[127]++;return isFixed?(cov_27uqywa3nl().b[69][0]++,element.scrollTop):(cov_27uqywa3nl().b[69][1]++,0);}else{cov_27uqywa3nl().b[68][1]++;}let isCurrentFixed=(cov_27uqywa3nl().s[128]++,false);cov_27uqywa3nl().s[129]++;if(window.getComputedStyle(element).getPropertyValue('position')==='fixed'){cov_27uqywa3nl().b[70][0]++;cov_27uqywa3nl().s[130]++;isCurrentFixed=true;}else{cov_27uqywa3nl().b[70][1]++;}const parentValue=(cov_27uqywa3nl().s[131]++,this.getScrollTopParent(element.parentElement,(cov_27uqywa3nl().b[71][0]++,isFixed)||(cov_27uqywa3nl().b[71][1]++,isCurrentFixed)));cov_27uqywa3nl().s[132]++;if(isFixed){cov_27uqywa3nl().b[72][0]++;cov_27uqywa3nl().s[133]++;return parentValue+element.scrollTop;}else{cov_27uqywa3nl().b[72][1]++;cov_27uqywa3nl().s[134]++;return parentValue+element.scrollTop*-1;}}}//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG9wdXBoZWxwZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9zYWMtY29tbW9uL3NyYy91dGlsaXRpZXMvcG9wdXBoZWxwZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLFNBQVMsQ0FBQztBQUcxQyxNQUFNLE9BQU8sV0FBVztJQUNwQix5QkFBeUI7SUFFbEIsa0JBQWtCLENBQUMsa0JBQTJDLEVBQUUsb0JBQTZCO1FBQ2hHLElBQUksa0JBQWtCLEVBQUU7WUFDcEIsT0FBTyxvQkFBb0I7Z0JBQ3ZCLENBQUMsQ0FBQyxrQkFBa0IsQ0FBQyxhQUFhLENBQUMsaUJBQWlCLENBQUMsWUFBWTtnQkFDakUsQ0FBQyxDQUFDLGtCQUFrQixDQUFDLGFBQWEsQ0FBQyxZQUFZLENBQUM7U0FDdkQ7YUFBTTtZQUNILE9BQU8sQ0FBQyxDQUFDO1NBQ1o7SUFDTCxDQUFDO0lBRU0saUJBQWlCLENBQUMsa0JBQTJDLEVBQUUsb0JBQTZCO1FBQy9GLElBQUksa0JBQWtCLEVBQUU7WUFDcEIsT0FBTyxvQkFBb0I7Z0JBQ3ZCLENBQUMsQ0FBQyxrQkFBa0IsQ0FBQyxhQUFhLENBQUMsaUJBQWlCLENBQUMsV0FBVztnQkFDaEUsQ0FBQyxDQUFDLGtCQUFrQixDQUFDLGFBQWEsQ0FBQyxXQUFXLENBQUM7U0FDdEQ7YUFBTTtZQUNILE9BQU8sQ0FBQyxDQUFDO1NBQ1o7SUFDTCxDQUFDO0lBRUQ7Ozs7Ozs7O09BUUc7SUFDSSxrQkFBa0IsQ0FDckIsa0JBQTJDLEVBQzNDLHFCQUE4QyxFQUM5QyxVQUFrQixFQUNsQixXQUFtQixFQUNuQixnQkFBd0IsRUFDeEIsb0JBQTZCO1FBRTdCLE1BQU0sY0FBYyxHQUFvQixJQUFJLENBQUMsaUJBQWlCLENBQzFELGtCQUFrQixFQUNsQixxQkFBcUIsRUFDckIsVUFBVSxFQUNWLFdBQVcsRUFDWCxvQkFBb0IsQ0FDdkIsQ0FBQztRQUVG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LElBQUksTUFBTSxHQUFHLE9BQU8sQ0FBQyxTQUFTLENBQUM7UUFDL0IsT0FBTyxXQUFXLEdBQUcsTUFBTSxDQUFDO0lBQ2hDLENBQUM7SUFFRDs7Ozs7T0FLRztJQUNLLGtCQUFrQixDQUFDLE9BQW9CLEVBQUUsT0FBTyxHQUFHLEtBQUs7UUFDNUQsSUFBSSxPQUFPLEtBQUssSUFBSSxFQUFFO1lBQ2xCLE9BQU8sQ0FBQyxDQUFDO1NBQ1o7UUFFRCx1Q0FBdUM7UUFDdkMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxhQUFhLEVBQUU7WUFDeEIsT0FBTyxPQUFPLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztTQUMxQztRQUVELElBQUksY0FBYyxHQUFHLEtBQUssQ0FBQztRQUMzQixJQUFJLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxPQUFPLENBQUMsQ0FBQyxnQkFBZ0IsQ0FBQyxVQUFVLENBQUMsS0FBSyxPQUFPLEVBQUU7WUFDM0UsY0FBYyxHQUFHLElBQUksQ0FBQztTQUN6QjtRQUVELE1BQU0sV0FBVyxHQUFHLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxPQUFPLENBQUMsYUFBYSxFQUFFLE9BQU8sSUFBSSxjQUFjLENBQUMsQ0FBQztRQUU5RixJQUFJLE9BQU8sRUFBRTtZQUNULE9BQU8sV0FBVyxHQUFHLE9BQU8sQ0FBQyxTQUFTLENBQUM7U0FDMUM7YUFBTTtZQUNILE9BQU8sV0FBVyxHQUFHLE9BQU8sQ0FBQyxTQUFTLEdBQUcsQ0FBQyxDQUFDLENBQUM7U0FDL0M7SUFDTCxDQUFDO0NBR0oiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBUb29sdGlwUG9zaXRpb24gfSBmcm9tICcuL2VudW1zJztcbmltcG9ydCB7IEVsZW1lbnRSZWYgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuZXhwb3J0IGNsYXNzIFBvcFVwSGVscGVyIHtcbiAgICAvLyAjcmVnaW9uIFB1YmxpYyBNZXRob2RzXG5cbiAgICBwdWJsaWMgZ2V0Q29udGFpbmVySGVpZ2h0KHJlZmVyZW5jZUNvbnRhaW5lcjogRWxlbWVudFJlZjxIVE1MRWxlbWVudD4sIHJlZmVyZW5jZUlzQ29udGFpbmVyOiBib29sZWFuKTogbnVtYmVyIHtcbiAgICAgICAgaWYgKHJlZmVyZW5jZUNvbnRhaW5lcikge1xuICAgICAgICAgICAgcmV0dXJuIHJlZmVyZW5jZUlzQ29udGFpbmVyXG4gICAgICAgICAgICAgICAgPyByZWZlcmVuY2VDb250YWluZXIubmF0aXZlRWxlbWVudC5maXJzdEVsZW1lbnRDaGlsZC5jbGllbnRIZWlnaHRcbiAgICAgICAgICAgICAgICA6IHJlZmVyZW5jZUNvbnRhaW5lci5uYXRpdmVFbGVtZW50Lm9mZnNldEhlaWdodDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiAwO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIGdldENvbnRhaW5lcldpZHRoKHJlZmVyZW5jZUNvbnRhaW5lcjogRWxlbWVudFJlZjxIVE1MRWxlbWVudD4sIHJlZmVyZW5jZUlzQ29udGFpbmVyOiBib29sZWFuKTogbnVtYmVyIHtcbiAgICAgICAgaWYgKHJlZmVyZW5jZUNvbnRhaW5lcikge1xuICAgICAgICAgICAgcmV0dXJuIHJlZmVyZW5jZUlzQ29udGFpbmVyXG4gICAgICAgICAgICAgICAgPyByZWZlcmVuY2VDb250YWluZXIubmF0aXZlRWxlbWVudC5maXJzdEVsZW1lbnRDaGlsZC5jbGllbnRXaWR0aFxuICAgICAgICAgICAgICAgIDogcmVmZXJlbmNlQ29udGFpbmVyLm5hdGl2ZUVsZW1lbnQub2Zmc2V0V2lkdGg7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gMDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEdldCBQb3NpdGlvbiB3aG8gdGhlIHBvcHVwIHdvdWxkIGJlIHBvc2l0aW9uZWRcbiAgICAgKlxuICAgICAqIEBwYXJhbSByZWZlcmVuY2VDb250YWluZXIgRWxlbWVudCBSZWZlcmVuY2UgdG8gSFRNTCBFbGVtZW50IHdoaWNoIGlzIHRoZSByZWZlcmVuY2UgdG8gcG9zaXRpb25pbmcgdGhlIHBvcHVwXG4gICAgICogQHBhcmFtIHBvcHVwY29udGVudGNvbnRhaW5lciBFbGVtZW50IFJlZmVyZW5jZSB0byBjb250YWluZXIgb2YgcG9wdXBcbiAgICAgKiBAcGFyYW0gcG9wdXBPZmZzZXQgT2Zmc2V0IGZvciBwb3B1cCBwb3NpdGlvbmluZ1xuICAgICAqIEBwYXJhbSBhbGxvd2VkUG9zaXRpb25zIEFsbG93ZWQgUG9zaXRpb25zIGZvciB0aGUgcG9wdXBcbiAgICAgKiBAcmV0dXJucyBSZXR1cm5zIHRoZSBwb3NpdGlvbiB3aGVyZSB0aGUgcG9wdXAgc2hvdWxkIGJlIGRpc3BsYXllZFxuICAgICAqL1xuICAgIHB1YmxpYyBnZXREaXNwbGF5UG9zaXRpb24oXG4gICAgICAgIHJlZmVyZW5jZUNvbnRhaW5lcjogRWxlbWVudFJlZjxIVE1MRWxlbWVudD4sXG4gICAgICAgIHBvcHVwY29udGVudGNvbnRhaW5lcjogRWxlbWVudFJlZjxIVE1MRWxlbWVudD4sXG4gICAgICAgIGFycm93V2lkdGg6IG51bWJlcixcbiAgICAgICAgYXJyb3dIZWlnaHQ6IG51bWJlcixcbiAgICAgICAgYWxsb3dlZFBvc2l0aW9uczogc3RyaW5nLFxuICAgICAgICByZWZlcmVuY2VJc0NvbnRhaW5lcjogYm9vbGVhblxuICAgICk6IFRvb2x0aXBQb3NpdGlvbiB7XG4gICAgICAgIGNvbnN0IHZhbGlkUG9zaXRpb25zOiBUb29sdGlwUG9zaXRpb24gPSB0aGlzLnZhbGlkYXRlUG9zaXRpb25zKFxuICAgICAgICAgICAgcmVmZXJlbmNlQ29udGFpbmVyLFxuICAgICAgICAgICAgcG9wdXBjb250ZW50Y29udGFpbmVyLFxuICAgICAgICAgICAgYXJyb3dXaWR0aCxcbiAgICAgICAgICAgIGFycm93SGVpZ2h0LFxuICAgICAgICAgICAgcmVmZXJlbmNlSXNDb250YWluZXJcbiAgICAgICAgKTtcblxuICAgICAgICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6bm8tYml0d2lzZVxuICAgICAgICBpZiAodGhpcy5oYXNQb3NpdGlvbihhbGxvd2VkUG9zaXRpb25zLCBUb29sdGlwUG9zaXRpb24ucmlnaHQpICYmIHZhbGlkUG9zaXRpb25zICYgVG9vbHRpcFBvc2l0aW9uLnJpZ2h0KSB7XG4gICAgICAgICAgICByZXR1cm4gVG9vbHRpcFBvc2l0aW9uLnJpZ2h0O1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOm5vLWJpdHdpc2VcbiAgICAgICAgaWYgKHRoaXMuaGFzUG9zaXRpb24oYWxsb3dlZFBvc2l0aW9ucywgVG9vbHRpcFBvc2l0aW9uLnRvcCkgJiYgdmFsaWRQb3NpdGlvbnMgJiBUb29sdGlwUG9zaXRpb24udG9wKSB7XG4gICAgICAgICAgICByZXR1cm4gVG9vbHRpcFBvc2l0aW9uLnRvcDtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTpuby1iaXR3aXNlXG4gICAgICAgIGlmICh0aGlzLmhhc1Bvc2l0aW9uKGFsbG93ZWRQb3NpdGlvbnMsIFRvb2x0aXBQb3NpdGlvbi5sZWZ0KSAmJiB2YWxpZFBvc2l0aW9ucyAmIFRvb2x0aXBQb3NpdGlvbi5sZWZ0KSB7XG4gICAgICAgICAgICByZXR1cm4gVG9vbHRpcFBvc2l0aW9uLmxlZnQ7XG4gICAgICAgIH1cblxuICAgICAgICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6bm8tYml0d2lzZVxuICAgICAgICBpZiAodGhpcy5oYXNQb3NpdGlvbihhbGxvd2VkUG9zaXRpb25zLCBUb29sdGlwUG9zaXRpb24uYm90dG9tKSAmJiB2YWxpZFBvc2l0aW9ucyAmIFRvb2x0aXBQb3NpdGlvbi5ib3R0b20pIHtcbiAgICAgICAgICAgIHJldHVybiBUb29sdGlwUG9zaXRpb24uYm90dG9tO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMuaGFzUG9zaXRpb24oYWxsb3dlZFBvc2l0aW9ucywgVG9vbHRpcFBvc2l0aW9uLnRvcGVuZCkgJiYgdmFsaWRQb3NpdGlvbnMgJiBUb29sdGlwUG9zaXRpb24udG9wZW5kKSB7XG4gICAgICAgICAgICByZXR1cm4gVG9vbHRpcFBvc2l0aW9uLnRvcGVuZDtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChcbiAgICAgICAgICAgIHRoaXMuaGFzUG9zaXRpb24oYWxsb3dlZFBvc2l0aW9ucywgVG9vbHRpcFBvc2l0aW9uLmJvdHRvbWVuZCkgJiZcbiAgICAgICAgICAgIHZhbGlkUG9zaXRpb25zICYgVG9vbHRpcFBvc2l0aW9uLmJvdHRvbWVuZFxuICAgICAgICApIHtcbiAgICAgICAgICAgIHJldHVybiBUb29sdGlwUG9zaXRpb24uYm90dG9tZW5kO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gR2V0IEF1dG8gUG9zaXRpb24gb3IgRGVmYXVsdFxuICAgICAgICBpZiAodGhpcy5pc0F1dG9Qb3NpdGlvbihhbGxvd2VkUG9zaXRpb25zKSkge1xuICAgICAgICAgICAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOm5vLWJpdHdpc2VcbiAgICAgICAgICAgIGlmICh2YWxpZFBvc2l0aW9ucyAmIFRvb2x0aXBQb3NpdGlvbi5yaWdodCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBUb29sdGlwUG9zaXRpb24ucmlnaHQ7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTpuby1iaXR3aXNlXG4gICAgICAgICAgICBpZiAodmFsaWRQb3NpdGlvbnMgJiBUb29sdGlwUG9zaXRpb24udG9wKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIFRvb2x0aXBQb3NpdGlvbi50b3A7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTpuby1iaXR3aXNlXG4gICAgICAgICAgICBpZiAodmFsaWRQb3NpdGlvbnMgJiBUb29sdGlwUG9zaXRpb24ubGVmdCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBUb29sdGlwUG9zaXRpb24ubGVmdDtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOm5vLWJpdHdpc2VcbiAgICAgICAgICAgIGlmICh2YWxpZFBvc2l0aW9ucyAmIFRvb2x0aXBQb3NpdGlvbi5ib3R0b20pIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gVG9vbHRpcFBvc2l0aW9uLmJvdHRvbTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmV0dXJuIFRvb2x0aXBQb3NpdGlvbi5yaWdodDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmdldFBvc2l0aW9uKGFsbG93ZWRQb3NpdGlvbnMpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2FsY3VsYXRlcyB0aGUgaGVpZ2h0IG9mIHRoZSBwb3B1cFxuICAgICAqXG4gICAgICogQHBhcmFtIGNvbnRhaW5lciBFbGVtZW50IFJlZmVyZW5jZSB0byBjb250YWluZXIgb2YgcG9wdXBcbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0UG9wdXBIZWlnaHQoY29udGFpbmVyOiBFbGVtZW50UmVmPEhUTUxFbGVtZW50Pik6IG51bWJlciB7XG4gICAgICAgIGlmIChjb250YWluZXIpIHtcbiAgICAgICAgICAgIHJldHVybiBjb250YWluZXIubmF0aXZlRWxlbWVudC5maXJzdEVsZW1lbnRDaGlsZC5jbGllbnRIZWlnaHQgPz8gMDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiAwO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2FsY3VsYXRlcyB0aGUgd2lkdGggb2YgdGhlIHBvcHVwXG4gICAgICpcbiAgICAgKiBAcGFyYW0gY29udGFpbmVyIEVsZW1lbnQgUmVmZXJlbmNlIHRvIGNvbnRhaW5lciBvZiBwb3B1cFxuICAgICAqL1xuICAgIHB1YmxpYyBnZXRQb3B1cFdpZHRoKGNvbnRhaW5lcjogRWxlbWVudFJlZjxIVE1MRWxlbWVudD4pOiBudW1iZXIge1xuICAgICAgICBpZiAoY29udGFpbmVyKSB7XG4gICAgICAgICAgICByZXR1cm4gY29udGFpbmVyLm5hdGl2ZUVsZW1lbnQuZmlyc3RFbGVtZW50Q2hpbGQuY2xpZW50V2lkdGg7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gMDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJldHVybnMgdGhlIGRlZmluZWQgcG9zaXRpb24gZm9yIHRoZSB0b29sdGlwXG4gICAgICpcbiAgICAgKiBAcGFyYW0gYWxsb3dlZFBvc2l0aW9ucyBBbGxvd2VkIHBvc2l0aW9ucyBkZWZpbmVkIGluIG1hcmt1cCBmb3IgcG9wdXBcbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0UG9zaXRpb24oYWxsb3dlZFBvc2l0aW9uczogc3RyaW5nKTogVG9vbHRpcFBvc2l0aW9uIHtcbiAgICAgICAgaWYgKHRoaXMuaGFzUG9zaXRpb24oYWxsb3dlZFBvc2l0aW9ucywgVG9vbHRpcFBvc2l0aW9uLmxlZnQpKSB7XG4gICAgICAgICAgICByZXR1cm4gVG9vbHRpcFBvc2l0aW9uLmxlZnQ7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5oYXNQb3NpdGlvbihhbGxvd2VkUG9zaXRpb25zLCBUb29sdGlwUG9zaXRpb24udG9wKSkge1xuICAgICAgICAgICAgcmV0dXJuIFRvb2x0aXBQb3NpdGlvbi50b3A7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5oYXNQb3NpdGlvbihhbGxvd2VkUG9zaXRpb25zLCBUb29sdGlwUG9zaXRpb24ucmlnaHQpKSB7XG4gICAgICAgICAgICByZXR1cm4gVG9vbHRpcFBvc2l0aW9uLnJpZ2h0O1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMuaGFzUG9zaXRpb24oYWxsb3dlZFBvc2l0aW9ucywgVG9vbHRpcFBvc2l0aW9uLmJvdHRvbSkpIHtcbiAgICAgICAgICAgIHJldHVybiBUb29sdGlwUG9zaXRpb24uYm90dG9tO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMuaGFzUG9zaXRpb24oYWxsb3dlZFBvc2l0aW9ucywgVG9vbHRpcFBvc2l0aW9uLnRvcGVuZCkpIHtcbiAgICAgICAgICAgIHJldHVybiBUb29sdGlwUG9zaXRpb24udG9wZW5kO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMuaGFzUG9zaXRpb24oYWxsb3dlZFBvc2l0aW9ucywgVG9vbHRpcFBvc2l0aW9uLmJvdHRvbWVuZCkpIHtcbiAgICAgICAgICAgIHJldHVybiBUb29sdGlwUG9zaXRpb24uYm90dG9tZW5kO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gRGVmYXVsdCBQb3NpdGlvbiBpZiBlbXB0eVxuICAgICAgICByZXR1cm4gVG9vbHRpcFBvc2l0aW9uLnJpZ2h0O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENhbGN1bGF0ZXMgdGhlIHBvc2l0aW9uIG9mIHRoZSB0b29sdGlwIGZyb20gbGlua3NcbiAgICAgKlxuICAgICAqIEBwYXJhbSBjb250cm9sUmVmZXJlbmNlIEVsZW1lbnQgUmVmZXJlbmNlIHRvIGFuZ3VsYXIgY29tcG9uZW50XG4gICAgICogQHBhcmFtIHBvcHVwQ29udGFpbmVyIEVsZW1lbnQgUmVmZXJlbmNlIHRvIGNvbnRhaW5lciBvZiBwb3B1cFxuICAgICAqIEBwYXJhbSByZWZlcmVuY2VDb250YWluZXIgRWxlbWVudCBSZWZlcmVuY2UgdG8gSFRNTCBFbGVtZW50IHdoaWNoIGlzIHRoZSByZWZlcmVuY2UgdG8gcG9zaXRpb25pbmcgdGhlIHBvcHVwXG4gICAgICogQHBhcmFtIHBvcHVwT2Zmc2V0IE9mZnNldCBmb3IgcG9wdXAgcG9zaXRpb25pbmdcbiAgICAgKiBAcGFyYW0gcmVxdWVzdGVkUG9zaXRpb24gUmVxdWVzdGVkIFBvc2l0aW9uIGJ5IENvbnRyb2xcbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0UG9zaXRpb25MZWZ0KFxuICAgICAgICByZWZlcmVuY2VDb250YWluZXI6IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+LFxuICAgICAgICBwb3B1cENvbnRhaW5lcjogRWxlbWVudFJlZjxIVE1MRWxlbWVudD4sXG4gICAgICAgIGNvbnRyb2xSZWZlcmVuY2U6IEVsZW1lbnRSZWYsXG4gICAgICAgIGFycm93V2lkdGg6IG51bWJlcixcbiAgICAgICAgYXJyb3dIZWlnaHQ6IG51bWJlcixcbiAgICAgICAgcmVxdWVzdGVkUG9zaXRpb246IHN0cmluZyxcbiAgICAgICAgcmVmZXJlbmNlSXNDb250YWluZXI6IGJvb2xlYW5cbiAgICApOiBudW1iZXIge1xuICAgICAgICBpZiAocmVmZXJlbmNlQ29udGFpbmVyICE9PSBudWxsICYmIHJlZmVyZW5jZUNvbnRhaW5lciAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICBjb25zdCBpdGVtID0gcmVmZXJlbmNlQ29udGFpbmVyLm5hdGl2ZUVsZW1lbnQ7XG5cbiAgICAgICAgICAgIGlmIChpdGVtLmNoaWxkcmVuLmxlbmd0aCA+PSAxKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgY2hpbGRJdGVtID0gcmVmZXJlbmNlSXNDb250YWluZXIgPyAoaXRlbS5maXJzdEVsZW1lbnRDaGlsZCBhcyBIVE1MRWxlbWVudCkgOiBpdGVtO1xuICAgICAgICAgICAgICAgIGNvbnN0IGNvbnRlbnRQb3NpdGlvbjogRE9NUmVjdCA9IGNoaWxkSXRlbS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcblxuICAgICAgICAgICAgICAgIHN3aXRjaCAoXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZ2V0RGlzcGxheVBvc2l0aW9uKFxuICAgICAgICAgICAgICAgICAgICAgICAgcmVmZXJlbmNlQ29udGFpbmVyLFxuICAgICAgICAgICAgICAgICAgICAgICAgcG9wdXBDb250YWluZXIsXG4gICAgICAgICAgICAgICAgICAgICAgICBhcnJvd1dpZHRoLFxuICAgICAgICAgICAgICAgICAgICAgICAgYXJyb3dIZWlnaHQsXG4gICAgICAgICAgICAgICAgICAgICAgICByZXF1ZXN0ZWRQb3NpdGlvbixcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlZmVyZW5jZUlzQ29udGFpbmVyXG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICAgICAgY2FzZSBUb29sdGlwUG9zaXRpb24udG9wOlxuICAgICAgICAgICAgICAgICAgICBjYXNlIFRvb2x0aXBQb3NpdGlvbi5ib3R0b206XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRlbnRQb3NpdGlvbi5sZWZ0ICsgY29udGVudFBvc2l0aW9uLndpZHRoIC8gMiAtIHRoaXMuZ2V0UG9wdXBXaWR0aChwb3B1cENvbnRhaW5lcikgLyAyXG4gICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICBjYXNlIFRvb2x0aXBQb3NpdGlvbi50b3BlbmQ6XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgVG9vbHRpcFBvc2l0aW9uLmJvdHRvbWVuZDpcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBjb250ZW50UG9zaXRpb24ubGVmdCArIGNvbnRlbnRQb3NpdGlvbi53aWR0aCAtIHRoaXMuZ2V0UG9wdXBXaWR0aChwb3B1cENvbnRhaW5lcik7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgVG9vbHRpcFBvc2l0aW9uLnJpZ2h0OlxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGNvbnRlbnRQb3NpdGlvbi5sZWZ0ICsgY29udGVudFBvc2l0aW9uLndpZHRoICsgYXJyb3dXaWR0aCAvIDI7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgVG9vbHRpcFBvc2l0aW9uLmxlZnQ6XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gY29udGVudFBvc2l0aW9uLmxlZnQgLSB0aGlzLmdldFBvcHVwV2lkdGgocG9wdXBDb250YWluZXIpICsgKGFycm93V2lkdGggLyAyKSAqIC0xO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHJldHVybiByZWZlcmVuY2VDb250YWluZXIubmF0aXZlRWxlbWVudC5vZmZzZXRUb3A7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiByZWZlcmVuY2VDb250YWluZXIubmF0aXZlRWxlbWVudC5vZmZzZXRUb3A7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gY29udHJvbFJlZmVyZW5jZS5uYXRpdmVFbGVtZW50Lm9mZnNldExlZnQ7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDYWxjdWxhdGVzIHRoZSBwb3NpdGlvbiBvZiB0aGUgdG9vbHRpcCBmcm9tIHRoZSB0b3BcbiAgICAgKlxuICAgICAqIEBwYXJhbSBjb250cm9sUmVmZXJlbmNlIEVsZW1lbnQgUmVmZXJlbmNlIHRvIGFuZ3VsYXIgY29tcG9uZW50XG4gICAgICogQHBhcmFtIHBvcHVwQ29udGFpbmVyIEVsZW1lbnQgUmVmZXJlbmNlIHRvIGNvbnRhaW5lciBvZiBwb3B1cFxuICAgICAqIEBwYXJhbSByZWZlcmVuY2VDb250YWluZXIgRWxlbWVudCBSZWZlcmVuY2UgdG8gSFRNTCBFbGVtZW50IHdoaWNoIGlzIHRoZSByZWZlcmVuY2UgdG8gcG9zaXRpb25pbmcgdGhlIHBvcHVwXG4gICAgICogQHBhcmFtIHBvcHVwT2Zmc2V0IE9mZnNldCBmb3IgcG9wdXAgcG9zaXRpb25pbmdcbiAgICAgKiBAcGFyYW0gcmVxdWVzdGVkUG9zaXRpb24gUmVxdWVzdGVkIFBvc2l0aW9uIGJ5IENvbnRyb2xcbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0UG9zaXRpb25Ub3AoXG4gICAgICAgIHJlZmVyZW5jZUNvbnRhaW5lcjogRWxlbWVudFJlZjxIVE1MRWxlbWVudD4sXG4gICAgICAgIHBvcHVwQ29udGFpbmVyOiBFbGVtZW50UmVmPEhUTUxFbGVtZW50PixcbiAgICAgICAgY29udHJvbFJlZmVyZW5jZTogRWxlbWVudFJlZixcbiAgICAgICAgYXJyb3dXaWR0aDogbnVtYmVyLFxuICAgICAgICBhcnJvd0hlaWdodDogbnVtYmVyLFxuICAgICAgICByZXF1ZXN0ZWRQb3NpdGlvbjogc3RyaW5nLFxuICAgICAgICByZWZlcmVuY2VJc0NvbnRhaW5lcjogYm9vbGVhblxuICAgICk6IG51bWJlciB7XG4gICAgICAgIGlmIChyZWZlcmVuY2VDb250YWluZXIgIT09IG51bGwgJiYgcmVmZXJlbmNlQ29udGFpbmVyICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIGNvbnN0IGl0ZW0gPSByZWZlcmVuY2VDb250YWluZXIubmF0aXZlRWxlbWVudDtcbiAgICAgICAgICAgIGlmIChpdGVtLmNoaWxkcmVuLmxlbmd0aCA+PSAxKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgY2hpbGRJdGVtID0gcmVmZXJlbmNlSXNDb250YWluZXIgPyAoaXRlbS5maXJzdEVsZW1lbnRDaGlsZCBhcyBIVE1MRWxlbWVudCkgOiBpdGVtO1xuICAgICAgICAgICAgICAgIGNvbnN0IGNvbnRlbnRQb3NpdGlvbjogRE9NUmVjdCA9IGNoaWxkSXRlbS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcblxuICAgICAgICAgICAgICAgIC8vIEdldCBQb3NpdGlvbiB3aXRoIFNjcm9sbCAoU2Nyb2xsYmFycyBpbnNpZGUgcGFnZSBzaG91bGQgYmUgc3Vic3RyYWN0ZWQpXG4gICAgICAgICAgICAgICAgY29uc3QgY29udGVudFBvc2l0aW9uVG9wID1cbiAgICAgICAgICAgICAgICAgICAgY2hpbGRJdGVtLm9mZnNldFRvcCArXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZ2V0T2Zmc2V0VG9wUGFyZW50KGNoaWxkSXRlbS5vZmZzZXRQYXJlbnQgYXMgSFRNTEVsZW1lbnQpICtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5nZXRTY3JvbGxUb3BQYXJlbnQoY2hpbGRJdGVtLnBhcmVudEVsZW1lbnQpO1xuXG4gICAgICAgICAgICAgICAgc3dpdGNoIChcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5nZXREaXNwbGF5UG9zaXRpb24oXG4gICAgICAgICAgICAgICAgICAgICAgICByZWZlcmVuY2VDb250YWluZXIsXG4gICAgICAgICAgICAgICAgICAgICAgICBwb3B1cENvbnRhaW5lcixcbiAgICAgICAgICAgICAgICAgICAgICAgIGFycm93V2lkdGgsXG4gICAgICAgICAgICAgICAgICAgICAgICBhcnJvd0hlaWdodCxcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVlc3RlZFBvc2l0aW9uLFxuICAgICAgICAgICAgICAgICAgICAgICAgcmVmZXJlbmNlSXNDb250YWluZXJcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgICAgICBjYXNlIFRvb2x0aXBQb3NpdGlvbi50b3A6XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgVG9vbHRpcFBvc2l0aW9uLnRvcGVuZDpcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBjb250ZW50UG9zaXRpb25Ub3AgLSB0aGlzLmdldFBvcHVwSGVpZ2h0KHBvcHVwQ29udGFpbmVyKSArIChhcnJvd0hlaWdodCAvIDIpICogLTE7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgVG9vbHRpcFBvc2l0aW9uLnJpZ2h0OlxuICAgICAgICAgICAgICAgICAgICBjYXNlIFRvb2x0aXBQb3NpdGlvbi5sZWZ0OlxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZW50UG9zaXRpb25Ub3AgKyBjb250ZW50UG9zaXRpb24uaGVpZ2h0IC8gMiAtIHRoaXMuZ2V0UG9wdXBIZWlnaHQocG9wdXBDb250YWluZXIpIC8gMlxuICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgY2FzZSBUb29sdGlwUG9zaXRpb24uYm90dG9tOlxuICAgICAgICAgICAgICAgICAgICBjYXNlIFRvb2x0aXBQb3NpdGlvbi5ib3R0b21lbmQ6XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gY29udGVudFBvc2l0aW9uVG9wICsgY29udGVudFBvc2l0aW9uLmhlaWdodCArIGFycm93SGVpZ2h0IC8gMjtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAgICAgICBjaGlsZEl0ZW0uY2xpZW50VG9wICtcbiAgICAgICAgICAgICAgICAgICAgY2hpbGRJdGVtLm9mZnNldFRvcCAtXG4gICAgICAgICAgICAgICAgICAgICh0aGlzLmdldFBvcHVwSGVpZ2h0KHBvcHVwQ29udGFpbmVyKSAvIDIgLSBjaGlsZEl0ZW0ub2Zmc2V0SGVpZ2h0IC8gMilcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gcmVmZXJlbmNlQ29udGFpbmVyLm5hdGl2ZUVsZW1lbnQub2Zmc2V0VG9wO1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIGNvbnRyb2xSZWZlcmVuY2UubmF0aXZlRWxlbWVudC5vZmZzZXRUb3A7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZXR1cm5zIHdoZXRoZXIgdGhlIHBvc2l0aW9uIGhhcyBiZWVuIGNvbmZpZ3VyZWRcbiAgICAgKlxuICAgICAqIEBwYXJhbSBhbGxvd2VkUG9zaXRpb25zIFBvc2l0aW9ucyB0aGF0IGFsbG93ZWQgYnkgY29udHJvbFxuICAgICAqIEBwYXJhbSByZXF1ZXN0ZWRQb3NpdGlvbiBQb3NpdGlvbiB0byBiZSBjaGVja2VkXG4gICAgICovXG4gICAgcHVibGljIGhhc1Bvc2l0aW9uKGFsbG93ZWRQb3NpdGlvbnM6IHN0cmluZywgcmVxdWVzdGVkUG9zaXRpb246IFRvb2x0aXBQb3NpdGlvbik6IGJvb2xlYW4ge1xuICAgICAgICBjb25zdCBwb3NpdGlvbnMgPSBhbGxvd2VkUG9zaXRpb25zLnNwbGl0KCd8Jyk7XG5cbiAgICAgICAgaWYgKHJlcXVlc3RlZFBvc2l0aW9uID09PSBUb29sdGlwUG9zaXRpb24ucmlnaHQgJiYgcG9zaXRpb25zLmluZGV4T2YoJ3JpZ2h0JykgPj0gMCkge1xuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAocmVxdWVzdGVkUG9zaXRpb24gPT09IFRvb2x0aXBQb3NpdGlvbi50b3AgJiYgcG9zaXRpb25zLmluZGV4T2YoJ3RvcCcpID49IDApIHtcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHJlcXVlc3RlZFBvc2l0aW9uID09PSBUb29sdGlwUG9zaXRpb24ubGVmdCAmJiBwb3NpdGlvbnMuaW5kZXhPZignbGVmdCcpID49IDApIHtcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHJlcXVlc3RlZFBvc2l0aW9uID09PSBUb29sdGlwUG9zaXRpb24uYm90dG9tICYmIHBvc2l0aW9ucy5pbmRleE9mKCdib3R0b20nKSA+PSAwKSB7XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChyZXF1ZXN0ZWRQb3NpdGlvbiA9PT0gVG9vbHRpcFBvc2l0aW9uLnRvcGVuZCAmJiBwb3NpdGlvbnMuaW5kZXhPZigndG9wZW5kJykgPj0gMCkge1xuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHJlcXVlc3RlZFBvc2l0aW9uID09PSBUb29sdGlwUG9zaXRpb24uYm90dG9tZW5kICYmIHBvc2l0aW9ucy5pbmRleE9mKCdib3R0b21lbmQnKSA+PSAwKSB7XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBEZWZpbmVzIHdoZXRoZXIgQXV0b1Bvc2l0aW9uIGlzIGFjdGl2ZVxuICAgICAqIEBwYXJhbSBwb3NpdGlvblByb3BlcnR5IExpc3Qgb2YgYWxsb3dlZCBwb3NpdGlvbnNcbiAgICAgKi9cbiAgICBwdWJsaWMgaXNBdXRvUG9zaXRpb24ocG9zaXRpb25Qcm9wZXJ0eTogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgICAgIGNvbnN0IHBvc2l0aW9ucyA9IHBvc2l0aW9uUHJvcGVydHkuc3BsaXQoJ3wnKTtcbiAgICAgICAgcmV0dXJuIHBvc2l0aW9ucy5pbmRleE9mKCdhdXRvJykgPj0gMDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDaGVja3Mgd2hldGhlciB0aGUgcG9zaXRpb24gaXMgdmFsaWQgb3Igd2hldGhlciB0aGUgdG9vbHRpcCBvbiB0aGUgcG9zaXRpb24gaGFzIHNwYWNlXG4gICAgICovXG4gICAgcHVibGljIHZhbGlkYXRlUG9zaXRpb25zKFxuICAgICAgICByZWZlcmVuY2VDb250YWluZXI6IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+LFxuICAgICAgICBwb3B1cGNvbnRlbnRjb250YWluZXI6IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+LFxuICAgICAgICBhcnJvd1dpZHRoOiBudW1iZXIsXG4gICAgICAgIGFycm93SGVpZ2h0OiBudW1iZXIsXG4gICAgICAgIHJlZmVyZW5jZUlzQ29udGFpbmVyOiBib29sZWFuXG4gICAgKTogVG9vbHRpcFBvc2l0aW9uIHtcbiAgICAgICAgLy8gQ2hlY2sgaWYgQ29udGFpbmVyIGlzIGZhbHNlXG4gICAgICAgIGlmIChwb3B1cGNvbnRlbnRjb250YWluZXIgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgcmV0dXJuIFRvb2x0aXBQb3NpdGlvbi5yaWdodDtcbiAgICAgICAgfVxuXG4gICAgICAgIGxldCBhbGxvd2VkUG9zaXRpb25zOiBUb29sdGlwUG9zaXRpb24gPSBUb29sdGlwUG9zaXRpb24ubm9uZTtcbiAgICAgICAgY29uc3QgYmFzZVBvc2l0aW9uOiBET01SZWN0ID0gcmVmZXJlbmNlSXNDb250YWluZXJcbiAgICAgICAgICAgID8gcmVmZXJlbmNlQ29udGFpbmVyLm5hdGl2ZUVsZW1lbnQuZmlyc3RFbGVtZW50Q2hpbGQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KClcbiAgICAgICAgICAgIDogcmVmZXJlbmNlQ29udGFpbmVyLm5hdGl2ZUVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gICAgICAgIGNvbnN0IHRvb2x0aXBSZWN0OiBET01SZWN0ID0gcG9wdXBjb250ZW50Y29udGFpbmVyLm5hdGl2ZUVsZW1lbnQuZmlyc3RFbGVtZW50Q2hpbGQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG5cbiAgICAgICAgY29uc3QgbGVmdFBvc09rOiBib29sZWFuID0gYmFzZVBvc2l0aW9uLmxlZnQgLSAodG9vbHRpcFJlY3Qud2lkdGggKyBhcnJvd1dpZHRoICogLTEpID4gMDtcbiAgICAgICAgY29uc3QgcmlnaHRQb3NPazogYm9vbGVhbiA9IGJhc2VQb3NpdGlvbi5yaWdodCArIHRvb2x0aXBSZWN0LndpZHRoICsgYXJyb3dXaWR0aCA8IHdpbmRvdy5pbm5lcldpZHRoO1xuICAgICAgICBjb25zdCB0b3BQb3NPazogYm9vbGVhbiA9IGJhc2VQb3NpdGlvbi50b3AgLSAodG9vbHRpcFJlY3QuaGVpZ2h0ICsgYXJyb3dIZWlnaHQpID4gMDtcbiAgICAgICAgY29uc3QgYm90dG9tUG9zT2s6IGJvb2xlYW4gPSBiYXNlUG9zaXRpb24uYm90dG9tICsgdG9vbHRpcFJlY3QuaGVpZ2h0ICsgYXJyb3dIZWlnaHQgPCB3aW5kb3cuaW5uZXJIZWlnaHQ7XG5cbiAgICAgICAgY29uc3QgbGVmdEhhbGZQb3NPazogYm9vbGVhbiA9IGJhc2VQb3NpdGlvbi5sZWZ0IC0gdG9vbHRpcFJlY3Qud2lkdGggLyAyID4gMDtcbiAgICAgICAgY29uc3QgcmlnaHRIYWxmUG9zT2s6IGJvb2xlYW4gPSBiYXNlUG9zaXRpb24ucmlnaHQgKyB0b29sdGlwUmVjdC53aWR0aCAvIDIgPCB3aW5kb3cuaW5uZXJXaWR0aDtcbiAgICAgICAgY29uc3QgdG9wSGFsZlBvc09rOiBib29sZWFuID0gYmFzZVBvc2l0aW9uLnRvcCAtIHRvb2x0aXBSZWN0LmhlaWdodCAvIDIgPiAwO1xuICAgICAgICBjb25zdCBib3R0b21IYWxmUG9zT2s6IGJvb2xlYW4gPSBiYXNlUG9zaXRpb24uYm90dG9tICsgdG9vbHRpcFJlY3QuaGVpZ2h0IC8gMiA8IHdpbmRvdy5pbm5lckhlaWdodDtcblxuICAgICAgICBpZiAodG9wUG9zT2spIHtcbiAgICAgICAgICAgIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTpuby1iaXR3aXNlXG4gICAgICAgICAgICBhbGxvd2VkUG9zaXRpb25zID0gYWxsb3dlZFBvc2l0aW9ucyB8IFRvb2x0aXBQb3NpdGlvbi50b3BlbmQ7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoYm90dG9tUG9zT2spIHtcbiAgICAgICAgICAgIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTpuby1iaXR3aXNlXG4gICAgICAgICAgICBhbGxvd2VkUG9zaXRpb25zID0gYWxsb3dlZFBvc2l0aW9ucyB8IFRvb2x0aXBQb3NpdGlvbi5ib3R0b21lbmQ7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAobGVmdFBvc09rICYmIHRvcEhhbGZQb3NPayAmJiBib3R0b21IYWxmUG9zT2spIHtcbiAgICAgICAgICAgIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTpuby1iaXR3aXNlXG4gICAgICAgICAgICBhbGxvd2VkUG9zaXRpb25zID0gYWxsb3dlZFBvc2l0aW9ucyB8IFRvb2x0aXBQb3NpdGlvbi5sZWZ0O1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHJpZ2h0UG9zT2sgJiYgdG9wSGFsZlBvc09rICYmIGJvdHRvbUhhbGZQb3NPaykge1xuICAgICAgICAgICAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOm5vLWJpdHdpc2VcbiAgICAgICAgICAgIGFsbG93ZWRQb3NpdGlvbnMgPSBhbGxvd2VkUG9zaXRpb25zIHwgVG9vbHRpcFBvc2l0aW9uLnJpZ2h0O1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRvcFBvc09rICYmIGxlZnRIYWxmUG9zT2sgJiYgcmlnaHRIYWxmUG9zT2spIHtcbiAgICAgICAgICAgIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTpuby1iaXR3aXNlXG4gICAgICAgICAgICBhbGxvd2VkUG9zaXRpb25zID0gYWxsb3dlZFBvc2l0aW9ucyB8IFRvb2x0aXBQb3NpdGlvbi50b3A7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoYm90dG9tUG9zT2sgJiYgbGVmdEhhbGZQb3NPayAmJiByaWdodEhhbGZQb3NPaykge1xuICAgICAgICAgICAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOm5vLWJpdHdpc2VcbiAgICAgICAgICAgIGFsbG93ZWRQb3NpdGlvbnMgPSBhbGxvd2VkUG9zaXRpb25zIHwgVG9vbHRpcFBvc2l0aW9uLmJvdHRvbTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBhbGxvd2VkUG9zaXRpb25zO1xuICAgIH1cblxuICAgIC8vICNlbmRyZWdpb24gUHVibGljIE1ldGhvZHNcblxuICAgIC8vICNyZWdpb24gUHJpdmF0ZSBNZXRob2RzXG5cbiAgICAvKipcbiAgICAgKiBDYWxjdWxhdGVzIHRoZSB0b3Agb2YgdGhlIHBhZ2UgaW5zaWRlIGFsbCBlbGVtZW50c1xuICAgICAqIEBwYXJhbSBlbGVtZW50IEhUTUwgRWxlbWVudFxuICAgICAqIEByZXR1cm5zIHN1bW1hcml6ZWQgdG9wIHZhbHVlIGZvciBhYnNvbHV0ZSBwb3NpdGlvblxuICAgICAqL1xuICAgIHByaXZhdGUgZ2V0T2Zmc2V0VG9wUGFyZW50KGVsZW1lbnQ6IEhUTUxFbGVtZW50KTogbnVtYmVyIHtcbiAgICAgICAgaWYgKGVsZW1lbnQgPT09IG51bGwpIHtcbiAgICAgICAgICAgIHJldHVybiAwO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKCFlbGVtZW50Lm9mZnNldFBhcmVudCkge1xuICAgICAgICAgICAgcmV0dXJuIGVsZW1lbnQub2Zmc2V0VG9wO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgcGFyZW50VmFsdWUgPSB0aGlzLmdldE9mZnNldFRvcFBhcmVudChlbGVtZW50Lm9mZnNldFBhcmVudCBhcyBIVE1MRWxlbWVudCk7XG4gICAgICAgIGxldCBvZmZzZXQgPSBlbGVtZW50Lm9mZnNldFRvcDtcbiAgICAgICAgcmV0dXJuIHBhcmVudFZhbHVlICsgb2Zmc2V0O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENhY2x1bGF0ZSBTY3JvbGxiYXJzIGluc2lkZSB0cmVlXG4gICAgICogQHBhcmFtIGVsZW1lbnQgSFRNTCBFbGVtZW50XG4gICAgICogQHBhcmFtIFtpc0ZpeGVkPWZhbHNlXSBJbnZlcnQgU2Nyb2xsIFBvc2l0aW9uIHZhbHVlIHdoZW4gc3R5bGUgaXMgZml4ZWQgdG8gcHJlc2VydmUgbmVnYXRpdmUgdmFsdWVzXG4gICAgICogQHJldHVybnMgU2Nyb2xsIHRvcCB2YWx1ZSBvZiBlbGVtZW50IHdpdGggYWxsIGNoaWxkc1xuICAgICAqL1xuICAgIHByaXZhdGUgZ2V0U2Nyb2xsVG9wUGFyZW50KGVsZW1lbnQ6IEhUTUxFbGVtZW50LCBpc0ZpeGVkID0gZmFsc2UpOiBudW1iZXIge1xuICAgICAgICBpZiAoZWxlbWVudCA9PT0gbnVsbCkge1xuICAgICAgICAgICAgcmV0dXJuIDA7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBCb2R5IFNjcm9sbCBzaG91bGQgbm90IGJlIGNhbGN1bGF0ZWRcbiAgICAgICAgaWYgKCFlbGVtZW50LnBhcmVudEVsZW1lbnQpIHtcbiAgICAgICAgICAgIHJldHVybiBpc0ZpeGVkID8gZWxlbWVudC5zY3JvbGxUb3AgOiAwO1xuICAgICAgICB9XG5cbiAgICAgICAgbGV0IGlzQ3VycmVudEZpeGVkID0gZmFsc2U7XG4gICAgICAgIGlmICh3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZShlbGVtZW50KS5nZXRQcm9wZXJ0eVZhbHVlKCdwb3NpdGlvbicpID09PSAnZml4ZWQnKSB7XG4gICAgICAgICAgICBpc0N1cnJlbnRGaXhlZCA9IHRydWU7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBwYXJlbnRWYWx1ZSA9IHRoaXMuZ2V0U2Nyb2xsVG9wUGFyZW50KGVsZW1lbnQucGFyZW50RWxlbWVudCwgaXNGaXhlZCB8fCBpc0N1cnJlbnRGaXhlZCk7XG5cbiAgICAgICAgaWYgKGlzRml4ZWQpIHtcbiAgICAgICAgICAgIHJldHVybiBwYXJlbnRWYWx1ZSArIGVsZW1lbnQuc2Nyb2xsVG9wO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIHBhcmVudFZhbHVlICsgZWxlbWVudC5zY3JvbGxUb3AgKiAtMTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8vICNlbmRyZWdpb24gUHJpdmF0ZSBNZXRob2RzXG59XG4iXX0=
|
|
80
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJjb3ZfMjd1cXl3YTNubCIsImFjdHVhbENvdmVyYWdlIiwiVG9vbHRpcFBvc2l0aW9uIiwiUG9wVXBIZWxwZXIiLCJnZXRDb250YWluZXJIZWlnaHQiLCJyZWZlcmVuY2VDb250YWluZXIiLCJyZWZlcmVuY2VJc0NvbnRhaW5lciIsImYiLCJzIiwiYiIsIm5hdGl2ZUVsZW1lbnQiLCJmaXJzdEVsZW1lbnRDaGlsZCIsImNsaWVudEhlaWdodCIsIm9mZnNldEhlaWdodCIsImdldENvbnRhaW5lcldpZHRoIiwiY2xpZW50V2lkdGgiLCJvZmZzZXRXaWR0aCIsImdldERpc3BsYXlQb3NpdGlvbiIsInBvcHVwY29udGVudGNvbnRhaW5lciIsImFycm93V2lkdGgiLCJhcnJvd0hlaWdodCIsImFsbG93ZWRQb3NpdGlvbnMiLCJ2YWxpZFBvc2l0aW9ucyIsInZhbGlkYXRlUG9zaXRpb25zIiwiaGFzUG9zaXRpb24iLCJyaWdodCIsInRvcCIsImxlZnQiLCJib3R0b20iLCJ0b3BlbmQiLCJib3R0b21lbmQiLCJpc0F1dG9Qb3NpdGlvbiIsImdldFBvc2l0aW9uIiwiZ2V0UG9wdXBIZWlnaHQiLCJjb250YWluZXIiLCJnZXRQb3B1cFdpZHRoIiwiZ2V0UG9zaXRpb25MZWZ0IiwicG9wdXBDb250YWluZXIiLCJjb250cm9sUmVmZXJlbmNlIiwicmVxdWVzdGVkUG9zaXRpb24iLCJ1bmRlZmluZWQiLCJpdGVtIiwiY2hpbGRyZW4iLCJsZW5ndGgiLCJjaGlsZEl0ZW0iLCJjb250ZW50UG9zaXRpb24iLCJnZXRCb3VuZGluZ0NsaWVudFJlY3QiLCJ3aWR0aCIsIm9mZnNldFRvcCIsIm9mZnNldExlZnQiLCJnZXRQb3NpdGlvblRvcCIsImNvbnRlbnRQb3NpdGlvblRvcCIsImdldE9mZnNldFRvcFBhcmVudCIsIm9mZnNldFBhcmVudCIsImdldFNjcm9sbFRvcFBhcmVudCIsInBhcmVudEVsZW1lbnQiLCJoZWlnaHQiLCJjbGllbnRUb3AiLCJwb3NpdGlvbnMiLCJzcGxpdCIsImluZGV4T2YiLCJwb3NpdGlvblByb3BlcnR5Iiwibm9uZSIsImJhc2VQb3NpdGlvbiIsInRvb2x0aXBSZWN0IiwibGVmdFBvc09rIiwicmlnaHRQb3NPayIsIndpbmRvdyIsImlubmVyV2lkdGgiLCJ0b3BQb3NPayIsImJvdHRvbVBvc09rIiwiaW5uZXJIZWlnaHQiLCJsZWZ0SGFsZlBvc09rIiwicmlnaHRIYWxmUG9zT2siLCJ0b3BIYWxmUG9zT2siLCJib3R0b21IYWxmUG9zT2siLCJlbGVtZW50IiwicGFyZW50VmFsdWUiLCJvZmZzZXQiLCJpc0ZpeGVkIiwic2Nyb2xsVG9wIiwiaXNDdXJyZW50Rml4ZWQiLCJnZXRDb21wdXRlZFN0eWxlIiwiZ2V0UHJvcGVydHlWYWx1ZSJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL3NhYy1jb21tb24vc3JjL3V0aWxpdGllcy9wb3B1cGhlbHBlci50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBUb29sdGlwUG9zaXRpb24gfSBmcm9tICcuL2VudW1zJztcbmltcG9ydCB7IEVsZW1lbnRSZWYgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuZXhwb3J0IGNsYXNzIFBvcFVwSGVscGVyIHtcbiAgICAvLyAjcmVnaW9uIFB1YmxpYyBNZXRob2RzXG5cbiAgICBwdWJsaWMgZ2V0Q29udGFpbmVySGVpZ2h0KHJlZmVyZW5jZUNvbnRhaW5lcjogRWxlbWVudFJlZjxIVE1MRWxlbWVudD4sIHJlZmVyZW5jZUlzQ29udGFpbmVyOiBib29sZWFuKTogbnVtYmVyIHtcbiAgICAgICAgaWYgKHJlZmVyZW5jZUNvbnRhaW5lcikge1xuICAgICAgICAgICAgcmV0dXJuIHJlZmVyZW5jZUlzQ29udGFpbmVyXG4gICAgICAgICAgICAgICAgPyByZWZlcmVuY2VDb250YWluZXIubmF0aXZlRWxlbWVudC5maXJzdEVsZW1lbnRDaGlsZC5jbGllbnRIZWlnaHRcbiAgICAgICAgICAgICAgICA6IHJlZmVyZW5jZUNvbnRhaW5lci5uYXRpdmVFbGVtZW50Lm9mZnNldEhlaWdodDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiAwO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIGdldENvbnRhaW5lcldpZHRoKHJlZmVyZW5jZUNvbnRhaW5lcjogRWxlbWVudFJlZjxIVE1MRWxlbWVudD4sIHJlZmVyZW5jZUlzQ29udGFpbmVyOiBib29sZWFuKTogbnVtYmVyIHtcbiAgICAgICAgaWYgKHJlZmVyZW5jZUNvbnRhaW5lcikge1xuICAgICAgICAgICAgcmV0dXJuIHJlZmVyZW5jZUlzQ29udGFpbmVyXG4gICAgICAgICAgICAgICAgPyByZWZlcmVuY2VDb250YWluZXIubmF0aXZlRWxlbWVudC5maXJzdEVsZW1lbnRDaGlsZC5jbGllbnRXaWR0aFxuICAgICAgICAgICAgICAgIDogcmVmZXJlbmNlQ29udGFpbmVyLm5hdGl2ZUVsZW1lbnQub2Zmc2V0V2lkdGg7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gMDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEdldCBQb3NpdGlvbiB3aG8gdGhlIHBvcHVwIHdvdWxkIGJlIHBvc2l0aW9uZWRcbiAgICAgKlxuICAgICAqIEBwYXJhbSByZWZlcmVuY2VDb250YWluZXIgRWxlbWVudCBSZWZlcmVuY2UgdG8gSFRNTCBFbGVtZW50IHdoaWNoIGlzIHRoZSByZWZlcmVuY2UgdG8gcG9zaXRpb25pbmcgdGhlIHBvcHVwXG4gICAgICogQHBhcmFtIHBvcHVwY29udGVudGNvbnRhaW5lciBFbGVtZW50IFJlZmVyZW5jZSB0byBjb250YWluZXIgb2YgcG9wdXBcbiAgICAgKiBAcGFyYW0gcG9wdXBPZmZzZXQgT2Zmc2V0IGZvciBwb3B1cCBwb3NpdGlvbmluZ1xuICAgICAqIEBwYXJhbSBhbGxvd2VkUG9zaXRpb25zIEFsbG93ZWQgUG9zaXRpb25zIGZvciB0aGUgcG9wdXBcbiAgICAgKiBAcmV0dXJucyBSZXR1cm5zIHRoZSBwb3NpdGlvbiB3aGVyZSB0aGUgcG9wdXAgc2hvdWxkIGJlIGRpc3BsYXllZFxuICAgICAqL1xuICAgIHB1YmxpYyBnZXREaXNwbGF5UG9zaXRpb24oXG4gICAgICAgIHJlZmVyZW5jZUNvbnRhaW5lcjogRWxlbWVudFJlZjxIVE1MRWxlbWVudD4sXG4gICAgICAgIHBvcHVwY29udGVudGNvbnRhaW5lcjogRWxlbWVudFJlZjxIVE1MRWxlbWVudD4sXG4gICAgICAgIGFycm93V2lkdGg6IG51bWJlcixcbiAgICAgICAgYXJyb3dIZWlnaHQ6IG51bWJlcixcbiAgICAgICAgYWxsb3dlZFBvc2l0aW9uczogc3RyaW5nLFxuICAgICAgICByZWZlcmVuY2VJc0NvbnRhaW5lcjogYm9vbGVhblxuICAgICk6IFRvb2x0aXBQb3NpdGlvbiB7XG4gICAgICAgIGNvbnN0IHZhbGlkUG9zaXRpb25zOiBUb29sdGlwUG9zaXRpb24gPSB0aGlzLnZhbGlkYXRlUG9zaXRpb25zKFxuICAgICAgICAgICAgcmVmZXJlbmNlQ29udGFpbmVyLFxuICAgICAgICAgICAgcG9wdXBjb250ZW50Y29udGFpbmVyLFxuICAgICAgICAgICAgYXJyb3dXaWR0aCxcbiAgICAgICAgICAgIGFycm93SGVpZ2h0LFxuICAgICAgICAgICAgcmVmZXJlbmNlSXNDb250YWluZXJcbiAgICAgICAgKTtcblxuICAgICAgICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6bm8tYml0d2lzZVxuICAgICAgICBpZiAodGhpcy5oYXNQb3NpdGlvbihhbGxvd2VkUG9zaXRpb25zLCBUb29sdGlwUG9zaXRpb24ucmlnaHQpICYmIHZhbGlkUG9zaXRpb25zICYgVG9vbHRpcFBvc2l0aW9uLnJpZ2h0KSB7XG4gICAgICAgICAgICByZXR1cm4gVG9vbHRpcFBvc2l0aW9uLnJpZ2h0O1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOm5vLWJpdHdpc2VcbiAgICAgICAgaWYgKHRoaXMuaGFzUG9zaXRpb24oYWxsb3dlZFBvc2l0aW9ucywgVG9vbHRpcFBvc2l0aW9uLnRvcCkgJiYgdmFsaWRQb3NpdGlvbnMgJiBUb29sdGlwUG9zaXRpb24udG9wKSB7XG4gICAgICAgICAgICByZXR1cm4gVG9vbHRpcFBvc2l0aW9uLnRvcDtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTpuby1iaXR3aXNlXG4gICAgICAgIGlmICh0aGlzLmhhc1Bvc2l0aW9uKGFsbG93ZWRQb3NpdGlvbnMsIFRvb2x0aXBQb3NpdGlvbi5sZWZ0KSAmJiB2YWxpZFBvc2l0aW9ucyAmIFRvb2x0aXBQb3NpdGlvbi5sZWZ0KSB7XG4gICAgICAgICAgICByZXR1cm4gVG9vbHRpcFBvc2l0aW9uLmxlZnQ7XG4gICAgICAgIH1cblxuICAgICAgICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6bm8tYml0d2lzZVxuICAgICAgICBpZiAodGhpcy5oYXNQb3NpdGlvbihhbGxvd2VkUG9zaXRpb25zLCBUb29sdGlwUG9zaXRpb24uYm90dG9tKSAmJiB2YWxpZFBvc2l0aW9ucyAmIFRvb2x0aXBQb3NpdGlvbi5ib3R0b20pIHtcbiAgICAgICAgICAgIHJldHVybiBUb29sdGlwUG9zaXRpb24uYm90dG9tO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMuaGFzUG9zaXRpb24oYWxsb3dlZFBvc2l0aW9ucywgVG9vbHRpcFBvc2l0aW9uLnRvcGVuZCkgJiYgdmFsaWRQb3NpdGlvbnMgJiBUb29sdGlwUG9zaXRpb24udG9wZW5kKSB7XG4gICAgICAgICAgICByZXR1cm4gVG9vbHRpcFBvc2l0aW9uLnRvcGVuZDtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChcbiAgICAgICAgICAgIHRoaXMuaGFzUG9zaXRpb24oYWxsb3dlZFBvc2l0aW9ucywgVG9vbHRpcFBvc2l0aW9uLmJvdHRvbWVuZCkgJiZcbiAgICAgICAgICAgIHZhbGlkUG9zaXRpb25zICYgVG9vbHRpcFBvc2l0aW9uLmJvdHRvbWVuZFxuICAgICAgICApIHtcbiAgICAgICAgICAgIHJldHVybiBUb29sdGlwUG9zaXRpb24uYm90dG9tZW5kO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gR2V0IEF1dG8gUG9zaXRpb24gb3IgRGVmYXVsdFxuICAgICAgICBpZiAodGhpcy5pc0F1dG9Qb3NpdGlvbihhbGxvd2VkUG9zaXRpb25zKSkge1xuICAgICAgICAgICAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOm5vLWJpdHdpc2VcbiAgICAgICAgICAgIGlmICh2YWxpZFBvc2l0aW9ucyAmIFRvb2x0aXBQb3NpdGlvbi5yaWdodCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBUb29sdGlwUG9zaXRpb24ucmlnaHQ7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTpuby1iaXR3aXNlXG4gICAgICAgICAgICBpZiAodmFsaWRQb3NpdGlvbnMgJiBUb29sdGlwUG9zaXRpb24udG9wKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIFRvb2x0aXBQb3NpdGlvbi50b3A7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTpuby1iaXR3aXNlXG4gICAgICAgICAgICBpZiAodmFsaWRQb3NpdGlvbnMgJiBUb29sdGlwUG9zaXRpb24ubGVmdCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBUb29sdGlwUG9zaXRpb24ubGVmdDtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOm5vLWJpdHdpc2VcbiAgICAgICAgICAgIGlmICh2YWxpZFBvc2l0aW9ucyAmIFRvb2x0aXBQb3NpdGlvbi5ib3R0b20pIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gVG9vbHRpcFBvc2l0aW9uLmJvdHRvbTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmV0dXJuIFRvb2x0aXBQb3NpdGlvbi5yaWdodDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmdldFBvc2l0aW9uKGFsbG93ZWRQb3NpdGlvbnMpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2FsY3VsYXRlcyB0aGUgaGVpZ2h0IG9mIHRoZSBwb3B1cFxuICAgICAqXG4gICAgICogQHBhcmFtIGNvbnRhaW5lciBFbGVtZW50IFJlZmVyZW5jZSB0byBjb250YWluZXIgb2YgcG9wdXBcbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0UG9wdXBIZWlnaHQoY29udGFpbmVyOiBFbGVtZW50UmVmPEhUTUxFbGVtZW50Pik6IG51bWJlciB7XG4gICAgICAgIGlmIChjb250YWluZXIpIHtcbiAgICAgICAgICAgIHJldHVybiBjb250YWluZXIubmF0aXZlRWxlbWVudC5maXJzdEVsZW1lbnRDaGlsZC5jbGllbnRIZWlnaHQgPz8gMDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiAwO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2FsY3VsYXRlcyB0aGUgd2lkdGggb2YgdGhlIHBvcHVwXG4gICAgICpcbiAgICAgKiBAcGFyYW0gY29udGFpbmVyIEVsZW1lbnQgUmVmZXJlbmNlIHRvIGNvbnRhaW5lciBvZiBwb3B1cFxuICAgICAqL1xuICAgIHB1YmxpYyBnZXRQb3B1cFdpZHRoKGNvbnRhaW5lcjogRWxlbWVudFJlZjxIVE1MRWxlbWVudD4pOiBudW1iZXIge1xuICAgICAgICBpZiAoY29udGFpbmVyKSB7XG4gICAgICAgICAgICByZXR1cm4gY29udGFpbmVyLm5hdGl2ZUVsZW1lbnQuZmlyc3RFbGVtZW50Q2hpbGQuY2xpZW50V2lkdGg7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gMDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJldHVybnMgdGhlIGRlZmluZWQgcG9zaXRpb24gZm9yIHRoZSB0b29sdGlwXG4gICAgICpcbiAgICAgKiBAcGFyYW0gYWxsb3dlZFBvc2l0aW9ucyBBbGxvd2VkIHBvc2l0aW9ucyBkZWZpbmVkIGluIG1hcmt1cCBmb3IgcG9wdXBcbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0UG9zaXRpb24oYWxsb3dlZFBvc2l0aW9uczogc3RyaW5nKTogVG9vbHRpcFBvc2l0aW9uIHtcbiAgICAgICAgaWYgKHRoaXMuaGFzUG9zaXRpb24oYWxsb3dlZFBvc2l0aW9ucywgVG9vbHRpcFBvc2l0aW9uLmxlZnQpKSB7XG4gICAgICAgICAgICByZXR1cm4gVG9vbHRpcFBvc2l0aW9uLmxlZnQ7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5oYXNQb3NpdGlvbihhbGxvd2VkUG9zaXRpb25zLCBUb29sdGlwUG9zaXRpb24udG9wKSkge1xuICAgICAgICAgICAgcmV0dXJuIFRvb2x0aXBQb3NpdGlvbi50b3A7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5oYXNQb3NpdGlvbihhbGxvd2VkUG9zaXRpb25zLCBUb29sdGlwUG9zaXRpb24ucmlnaHQpKSB7XG4gICAgICAgICAgICByZXR1cm4gVG9vbHRpcFBvc2l0aW9uLnJpZ2h0O1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMuaGFzUG9zaXRpb24oYWxsb3dlZFBvc2l0aW9ucywgVG9vbHRpcFBvc2l0aW9uLmJvdHRvbSkpIHtcbiAgICAgICAgICAgIHJldHVybiBUb29sdGlwUG9zaXRpb24uYm90dG9tO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMuaGFzUG9zaXRpb24oYWxsb3dlZFBvc2l0aW9ucywgVG9vbHRpcFBvc2l0aW9uLnRvcGVuZCkpIHtcbiAgICAgICAgICAgIHJldHVybiBUb29sdGlwUG9zaXRpb24udG9wZW5kO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMuaGFzUG9zaXRpb24oYWxsb3dlZFBvc2l0aW9ucywgVG9vbHRpcFBvc2l0aW9uLmJvdHRvbWVuZCkpIHtcbiAgICAgICAgICAgIHJldHVybiBUb29sdGlwUG9zaXRpb24uYm90dG9tZW5kO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gRGVmYXVsdCBQb3NpdGlvbiBpZiBlbXB0eVxuICAgICAgICByZXR1cm4gVG9vbHRpcFBvc2l0aW9uLnJpZ2h0O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENhbGN1bGF0ZXMgdGhlIHBvc2l0aW9uIG9mIHRoZSB0b29sdGlwIGZyb20gbGlua3NcbiAgICAgKlxuICAgICAqIEBwYXJhbSBjb250cm9sUmVmZXJlbmNlIEVsZW1lbnQgUmVmZXJlbmNlIHRvIGFuZ3VsYXIgY29tcG9uZW50XG4gICAgICogQHBhcmFtIHBvcHVwQ29udGFpbmVyIEVsZW1lbnQgUmVmZXJlbmNlIHRvIGNvbnRhaW5lciBvZiBwb3B1cFxuICAgICAqIEBwYXJhbSByZWZlcmVuY2VDb250YWluZXIgRWxlbWVudCBSZWZlcmVuY2UgdG8gSFRNTCBFbGVtZW50IHdoaWNoIGlzIHRoZSByZWZlcmVuY2UgdG8gcG9zaXRpb25pbmcgdGhlIHBvcHVwXG4gICAgICogQHBhcmFtIHBvcHVwT2Zmc2V0IE9mZnNldCBmb3IgcG9wdXAgcG9zaXRpb25pbmdcbiAgICAgKiBAcGFyYW0gcmVxdWVzdGVkUG9zaXRpb24gUmVxdWVzdGVkIFBvc2l0aW9uIGJ5IENvbnRyb2xcbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0UG9zaXRpb25MZWZ0KFxuICAgICAgICByZWZlcmVuY2VDb250YWluZXI6IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+LFxuICAgICAgICBwb3B1cENvbnRhaW5lcjogRWxlbWVudFJlZjxIVE1MRWxlbWVudD4sXG4gICAgICAgIGNvbnRyb2xSZWZlcmVuY2U6IEVsZW1lbnRSZWYsXG4gICAgICAgIGFycm93V2lkdGg6IG51bWJlcixcbiAgICAgICAgYXJyb3dIZWlnaHQ6IG51bWJlcixcbiAgICAgICAgcmVxdWVzdGVkUG9zaXRpb246IHN0cmluZyxcbiAgICAgICAgcmVmZXJlbmNlSXNDb250YWluZXI6IGJvb2xlYW5cbiAgICApOiBudW1iZXIge1xuICAgICAgICBpZiAocmVmZXJlbmNlQ29udGFpbmVyICE9PSBudWxsICYmIHJlZmVyZW5jZUNvbnRhaW5lciAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICBjb25zdCBpdGVtID0gcmVmZXJlbmNlQ29udGFpbmVyLm5hdGl2ZUVsZW1lbnQ7XG5cbiAgICAgICAgICAgIGlmIChpdGVtLmNoaWxkcmVuLmxlbmd0aCA+PSAxKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgY2hpbGRJdGVtID0gcmVmZXJlbmNlSXNDb250YWluZXIgPyAoaXRlbS5maXJzdEVsZW1lbnRDaGlsZCBhcyBIVE1MRWxlbWVudCkgOiBpdGVtO1xuICAgICAgICAgICAgICAgIGNvbnN0IGNvbnRlbnRQb3NpdGlvbjogRE9NUmVjdCA9IGNoaWxkSXRlbS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcblxuICAgICAgICAgICAgICAgIHN3aXRjaCAoXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZ2V0RGlzcGxheVBvc2l0aW9uKFxuICAgICAgICAgICAgICAgICAgICAgICAgcmVmZXJlbmNlQ29udGFpbmVyLFxuICAgICAgICAgICAgICAgICAgICAgICAgcG9wdXBDb250YWluZXIsXG4gICAgICAgICAgICAgICAgICAgICAgICBhcnJvd1dpZHRoLFxuICAgICAgICAgICAgICAgICAgICAgICAgYXJyb3dIZWlnaHQsXG4gICAgICAgICAgICAgICAgICAgICAgICByZXF1ZXN0ZWRQb3NpdGlvbixcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlZmVyZW5jZUlzQ29udGFpbmVyXG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICAgICAgY2FzZSBUb29sdGlwUG9zaXRpb24udG9wOlxuICAgICAgICAgICAgICAgICAgICBjYXNlIFRvb2x0aXBQb3NpdGlvbi5ib3R0b206XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRlbnRQb3NpdGlvbi5sZWZ0ICsgY29udGVudFBvc2l0aW9uLndpZHRoIC8gMiAtIHRoaXMuZ2V0UG9wdXBXaWR0aChwb3B1cENvbnRhaW5lcikgLyAyXG4gICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICBjYXNlIFRvb2x0aXBQb3NpdGlvbi50b3BlbmQ6XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgVG9vbHRpcFBvc2l0aW9uLmJvdHRvbWVuZDpcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBjb250ZW50UG9zaXRpb24ubGVmdCArIGNvbnRlbnRQb3NpdGlvbi53aWR0aCAtIHRoaXMuZ2V0UG9wdXBXaWR0aChwb3B1cENvbnRhaW5lcik7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgVG9vbHRpcFBvc2l0aW9uLnJpZ2h0OlxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGNvbnRlbnRQb3NpdGlvbi5sZWZ0ICsgY29udGVudFBvc2l0aW9uLndpZHRoICsgYXJyb3dXaWR0aCAvIDI7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgVG9vbHRpcFBvc2l0aW9uLmxlZnQ6XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gY29udGVudFBvc2l0aW9uLmxlZnQgLSB0aGlzLmdldFBvcHVwV2lkdGgocG9wdXBDb250YWluZXIpICsgKGFycm93V2lkdGggLyAyKSAqIC0xO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHJldHVybiByZWZlcmVuY2VDb250YWluZXIubmF0aXZlRWxlbWVudC5vZmZzZXRUb3A7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiByZWZlcmVuY2VDb250YWluZXIubmF0aXZlRWxlbWVudC5vZmZzZXRUb3A7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gY29udHJvbFJlZmVyZW5jZS5uYXRpdmVFbGVtZW50Lm9mZnNldExlZnQ7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDYWxjdWxhdGVzIHRoZSBwb3NpdGlvbiBvZiB0aGUgdG9vbHRpcCBmcm9tIHRoZSB0b3BcbiAgICAgKlxuICAgICAqIEBwYXJhbSBjb250cm9sUmVmZXJlbmNlIEVsZW1lbnQgUmVmZXJlbmNlIHRvIGFuZ3VsYXIgY29tcG9uZW50XG4gICAgICogQHBhcmFtIHBvcHVwQ29udGFpbmVyIEVsZW1lbnQgUmVmZXJlbmNlIHRvIGNvbnRhaW5lciBvZiBwb3B1cFxuICAgICAqIEBwYXJhbSByZWZlcmVuY2VDb250YWluZXIgRWxlbWVudCBSZWZlcmVuY2UgdG8gSFRNTCBFbGVtZW50IHdoaWNoIGlzIHRoZSByZWZlcmVuY2UgdG8gcG9zaXRpb25pbmcgdGhlIHBvcHVwXG4gICAgICogQHBhcmFtIHBvcHVwT2Zmc2V0IE9mZnNldCBmb3IgcG9wdXAgcG9zaXRpb25pbmdcbiAgICAgKiBAcGFyYW0gcmVxdWVzdGVkUG9zaXRpb24gUmVxdWVzdGVkIFBvc2l0aW9uIGJ5IENvbnRyb2xcbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0UG9zaXRpb25Ub3AoXG4gICAgICAgIHJlZmVyZW5jZUNvbnRhaW5lcjogRWxlbWVudFJlZjxIVE1MRWxlbWVudD4sXG4gICAgICAgIHBvcHVwQ29udGFpbmVyOiBFbGVtZW50UmVmPEhUTUxFbGVtZW50PixcbiAgICAgICAgY29udHJvbFJlZmVyZW5jZTogRWxlbWVudFJlZixcbiAgICAgICAgYXJyb3dXaWR0aDogbnVtYmVyLFxuICAgICAgICBhcnJvd0hlaWdodDogbnVtYmVyLFxuICAgICAgICByZXF1ZXN0ZWRQb3NpdGlvbjogc3RyaW5nLFxuICAgICAgICByZWZlcmVuY2VJc0NvbnRhaW5lcjogYm9vbGVhblxuICAgICk6IG51bWJlciB7XG4gICAgICAgIGlmIChyZWZlcmVuY2VDb250YWluZXIgIT09IG51bGwgJiYgcmVmZXJlbmNlQ29udGFpbmVyICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIGNvbnN0IGl0ZW0gPSByZWZlcmVuY2VDb250YWluZXIubmF0aXZlRWxlbWVudDtcbiAgICAgICAgICAgIGlmIChpdGVtLmNoaWxkcmVuLmxlbmd0aCA+PSAxKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgY2hpbGRJdGVtID0gcmVmZXJlbmNlSXNDb250YWluZXIgPyAoaXRlbS5maXJzdEVsZW1lbnRDaGlsZCBhcyBIVE1MRWxlbWVudCkgOiBpdGVtO1xuICAgICAgICAgICAgICAgIGNvbnN0IGNvbnRlbnRQb3NpdGlvbjogRE9NUmVjdCA9IGNoaWxkSXRlbS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcblxuICAgICAgICAgICAgICAgIC8vIEdldCBQb3NpdGlvbiB3aXRoIFNjcm9sbCAoU2Nyb2xsYmFycyBpbnNpZGUgcGFnZSBzaG91bGQgYmUgc3Vic3RyYWN0ZWQpXG4gICAgICAgICAgICAgICAgY29uc3QgY29udGVudFBvc2l0aW9uVG9wID1cbiAgICAgICAgICAgICAgICAgICAgY2hpbGRJdGVtLm9mZnNldFRvcCArXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZ2V0T2Zmc2V0VG9wUGFyZW50KGNoaWxkSXRlbS5vZmZzZXRQYXJlbnQgYXMgSFRNTEVsZW1lbnQpICtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5nZXRTY3JvbGxUb3BQYXJlbnQoY2hpbGRJdGVtLnBhcmVudEVsZW1lbnQpO1xuXG4gICAgICAgICAgICAgICAgc3dpdGNoIChcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5nZXREaXNwbGF5UG9zaXRpb24oXG4gICAgICAgICAgICAgICAgICAgICAgICByZWZlcmVuY2VDb250YWluZXIsXG4gICAgICAgICAgICAgICAgICAgICAgICBwb3B1cENvbnRhaW5lcixcbiAgICAgICAgICAgICAgICAgICAgICAgIGFycm93V2lkdGgsXG4gICAgICAgICAgICAgICAgICAgICAgICBhcnJvd0hlaWdodCxcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVlc3RlZFBvc2l0aW9uLFxuICAgICAgICAgICAgICAgICAgICAgICAgcmVmZXJlbmNlSXNDb250YWluZXJcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgICAgICBjYXNlIFRvb2x0aXBQb3NpdGlvbi50b3A6XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgVG9vbHRpcFBvc2l0aW9uLnRvcGVuZDpcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBjb250ZW50UG9zaXRpb25Ub3AgLSB0aGlzLmdldFBvcHVwSGVpZ2h0KHBvcHVwQ29udGFpbmVyKSArIChhcnJvd0hlaWdodCAvIDIpICogLTE7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgVG9vbHRpcFBvc2l0aW9uLnJpZ2h0OlxuICAgICAgICAgICAgICAgICAgICBjYXNlIFRvb2x0aXBQb3NpdGlvbi5sZWZ0OlxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZW50UG9zaXRpb25Ub3AgKyBjb250ZW50UG9zaXRpb24uaGVpZ2h0IC8gMiAtIHRoaXMuZ2V0UG9wdXBIZWlnaHQocG9wdXBDb250YWluZXIpIC8gMlxuICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgY2FzZSBUb29sdGlwUG9zaXRpb24uYm90dG9tOlxuICAgICAgICAgICAgICAgICAgICBjYXNlIFRvb2x0aXBQb3NpdGlvbi5ib3R0b21lbmQ6XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gY29udGVudFBvc2l0aW9uVG9wICsgY29udGVudFBvc2l0aW9uLmhlaWdodCArIGFycm93SGVpZ2h0IC8gMjtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAgICAgICBjaGlsZEl0ZW0uY2xpZW50VG9wICtcbiAgICAgICAgICAgICAgICAgICAgY2hpbGRJdGVtLm9mZnNldFRvcCAtXG4gICAgICAgICAgICAgICAgICAgICh0aGlzLmdldFBvcHVwSGVpZ2h0KHBvcHVwQ29udGFpbmVyKSAvIDIgLSBjaGlsZEl0ZW0ub2Zmc2V0SGVpZ2h0IC8gMilcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gcmVmZXJlbmNlQ29udGFpbmVyLm5hdGl2ZUVsZW1lbnQub2Zmc2V0VG9wO1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIGNvbnRyb2xSZWZlcmVuY2UubmF0aXZlRWxlbWVudC5vZmZzZXRUb3A7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZXR1cm5zIHdoZXRoZXIgdGhlIHBvc2l0aW9uIGhhcyBiZWVuIGNvbmZpZ3VyZWRcbiAgICAgKlxuICAgICAqIEBwYXJhbSBhbGxvd2VkUG9zaXRpb25zIFBvc2l0aW9ucyB0aGF0IGFsbG93ZWQgYnkgY29udHJvbFxuICAgICAqIEBwYXJhbSByZXF1ZXN0ZWRQb3NpdGlvbiBQb3NpdGlvbiB0byBiZSBjaGVja2VkXG4gICAgICovXG4gICAgcHVibGljIGhhc1Bvc2l0aW9uKGFsbG93ZWRQb3NpdGlvbnM6IHN0cmluZywgcmVxdWVzdGVkUG9zaXRpb246IFRvb2x0aXBQb3NpdGlvbik6IGJvb2xlYW4ge1xuICAgICAgICBjb25zdCBwb3NpdGlvbnMgPSBhbGxvd2VkUG9zaXRpb25zLnNwbGl0KCd8Jyk7XG5cbiAgICAgICAgaWYgKHJlcXVlc3RlZFBvc2l0aW9uID09PSBUb29sdGlwUG9zaXRpb24ucmlnaHQgJiYgcG9zaXRpb25zLmluZGV4T2YoJ3JpZ2h0JykgPj0gMCkge1xuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAocmVxdWVzdGVkUG9zaXRpb24gPT09IFRvb2x0aXBQb3NpdGlvbi50b3AgJiYgcG9zaXRpb25zLmluZGV4T2YoJ3RvcCcpID49IDApIHtcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHJlcXVlc3RlZFBvc2l0aW9uID09PSBUb29sdGlwUG9zaXRpb24ubGVmdCAmJiBwb3NpdGlvbnMuaW5kZXhPZignbGVmdCcpID49IDApIHtcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHJlcXVlc3RlZFBvc2l0aW9uID09PSBUb29sdGlwUG9zaXRpb24uYm90dG9tICYmIHBvc2l0aW9ucy5pbmRleE9mKCdib3R0b20nKSA+PSAwKSB7XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChyZXF1ZXN0ZWRQb3NpdGlvbiA9PT0gVG9vbHRpcFBvc2l0aW9uLnRvcGVuZCAmJiBwb3NpdGlvbnMuaW5kZXhPZigndG9wZW5kJykgPj0gMCkge1xuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHJlcXVlc3RlZFBvc2l0aW9uID09PSBUb29sdGlwUG9zaXRpb24uYm90dG9tZW5kICYmIHBvc2l0aW9ucy5pbmRleE9mKCdib3R0b21lbmQnKSA+PSAwKSB7XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBEZWZpbmVzIHdoZXRoZXIgQXV0b1Bvc2l0aW9uIGlzIGFjdGl2ZVxuICAgICAqIEBwYXJhbSBwb3NpdGlvblByb3BlcnR5IExpc3Qgb2YgYWxsb3dlZCBwb3NpdGlvbnNcbiAgICAgKi9cbiAgICBwdWJsaWMgaXNBdXRvUG9zaXRpb24ocG9zaXRpb25Qcm9wZXJ0eTogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgICAgIGNvbnN0IHBvc2l0aW9ucyA9IHBvc2l0aW9uUHJvcGVydHkuc3BsaXQoJ3wnKTtcbiAgICAgICAgcmV0dXJuIHBvc2l0aW9ucy5pbmRleE9mKCdhdXRvJykgPj0gMDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDaGVja3Mgd2hldGhlciB0aGUgcG9zaXRpb24gaXMgdmFsaWQgb3Igd2hldGhlciB0aGUgdG9vbHRpcCBvbiB0aGUgcG9zaXRpb24gaGFzIHNwYWNlXG4gICAgICovXG4gICAgcHVibGljIHZhbGlkYXRlUG9zaXRpb25zKFxuICAgICAgICByZWZlcmVuY2VDb250YWluZXI6IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+LFxuICAgICAgICBwb3B1cGNvbnRlbnRjb250YWluZXI6IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+LFxuICAgICAgICBhcnJvd1dpZHRoOiBudW1iZXIsXG4gICAgICAgIGFycm93SGVpZ2h0OiBudW1iZXIsXG4gICAgICAgIHJlZmVyZW5jZUlzQ29udGFpbmVyOiBib29sZWFuXG4gICAgKTogVG9vbHRpcFBvc2l0aW9uIHtcbiAgICAgICAgLy8gQ2hlY2sgaWYgQ29udGFpbmVyIGlzIGZhbHNlXG4gICAgICAgIGlmIChwb3B1cGNvbnRlbnRjb250YWluZXIgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgcmV0dXJuIFRvb2x0aXBQb3NpdGlvbi5yaWdodDtcbiAgICAgICAgfVxuXG4gICAgICAgIGxldCBhbGxvd2VkUG9zaXRpb25zOiBUb29sdGlwUG9zaXRpb24gPSBUb29sdGlwUG9zaXRpb24ubm9uZTtcbiAgICAgICAgY29uc3QgYmFzZVBvc2l0aW9uOiBET01SZWN0ID0gcmVmZXJlbmNlSXNDb250YWluZXJcbiAgICAgICAgICAgID8gcmVmZXJlbmNlQ29udGFpbmVyLm5hdGl2ZUVsZW1lbnQuZmlyc3RFbGVtZW50Q2hpbGQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KClcbiAgICAgICAgICAgIDogcmVmZXJlbmNlQ29udGFpbmVyLm5hdGl2ZUVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gICAgICAgIGNvbnN0IHRvb2x0aXBSZWN0OiBET01SZWN0ID0gcG9wdXBjb250ZW50Y29udGFpbmVyLm5hdGl2ZUVsZW1lbnQuZmlyc3RFbGVtZW50Q2hpbGQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG5cbiAgICAgICAgY29uc3QgbGVmdFBvc09rOiBib29sZWFuID0gYmFzZVBvc2l0aW9uLmxlZnQgLSAodG9vbHRpcFJlY3Qud2lkdGggKyBhcnJvd1dpZHRoICogLTEpID4gMDtcbiAgICAgICAgY29uc3QgcmlnaHRQb3NPazogYm9vbGVhbiA9IGJhc2VQb3NpdGlvbi5yaWdodCArIHRvb2x0aXBSZWN0LndpZHRoICsgYXJyb3dXaWR0aCA8IHdpbmRvdy5pbm5lcldpZHRoO1xuICAgICAgICBjb25zdCB0b3BQb3NPazogYm9vbGVhbiA9IGJhc2VQb3NpdGlvbi50b3AgLSAodG9vbHRpcFJlY3QuaGVpZ2h0ICsgYXJyb3dIZWlnaHQpID4gMDtcbiAgICAgICAgY29uc3QgYm90dG9tUG9zT2s6IGJvb2xlYW4gPSBiYXNlUG9zaXRpb24uYm90dG9tICsgdG9vbHRpcFJlY3QuaGVpZ2h0ICsgYXJyb3dIZWlnaHQgPCB3aW5kb3cuaW5uZXJIZWlnaHQ7XG5cbiAgICAgICAgY29uc3QgbGVmdEhhbGZQb3NPazogYm9vbGVhbiA9IGJhc2VQb3NpdGlvbi5sZWZ0IC0gdG9vbHRpcFJlY3Qud2lkdGggLyAyID4gMDtcbiAgICAgICAgY29uc3QgcmlnaHRIYWxmUG9zT2s6IGJvb2xlYW4gPSBiYXNlUG9zaXRpb24ucmlnaHQgKyB0b29sdGlwUmVjdC53aWR0aCAvIDIgPCB3aW5kb3cuaW5uZXJXaWR0aDtcbiAgICAgICAgY29uc3QgdG9wSGFsZlBvc09rOiBib29sZWFuID0gYmFzZVBvc2l0aW9uLnRvcCAtIHRvb2x0aXBSZWN0LmhlaWdodCAvIDIgPiAwO1xuICAgICAgICBjb25zdCBib3R0b21IYWxmUG9zT2s6IGJvb2xlYW4gPSBiYXNlUG9zaXRpb24uYm90dG9tICsgdG9vbHRpcFJlY3QuaGVpZ2h0IC8gMiA8IHdpbmRvdy5pbm5lckhlaWdodDtcblxuICAgICAgICBpZiAodG9wUG9zT2spIHtcbiAgICAgICAgICAgIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTpuby1iaXR3aXNlXG4gICAgICAgICAgICBhbGxvd2VkUG9zaXRpb25zID0gYWxsb3dlZFBvc2l0aW9ucyB8IFRvb2x0aXBQb3NpdGlvbi50b3BlbmQ7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoYm90dG9tUG9zT2spIHtcbiAgICAgICAgICAgIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTpuby1iaXR3aXNlXG4gICAgICAgICAgICBhbGxvd2VkUG9zaXRpb25zID0gYWxsb3dlZFBvc2l0aW9ucyB8IFRvb2x0aXBQb3NpdGlvbi5ib3R0b21lbmQ7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAobGVmdFBvc09rICYmIHRvcEhhbGZQb3NPayAmJiBib3R0b21IYWxmUG9zT2spIHtcbiAgICAgICAgICAgIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTpuby1iaXR3aXNlXG4gICAgICAgICAgICBhbGxvd2VkUG9zaXRpb25zID0gYWxsb3dlZFBvc2l0aW9ucyB8IFRvb2x0aXBQb3NpdGlvbi5sZWZ0O1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHJpZ2h0UG9zT2sgJiYgdG9wSGFsZlBvc09rICYmIGJvdHRvbUhhbGZQb3NPaykge1xuICAgICAgICAgICAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOm5vLWJpdHdpc2VcbiAgICAgICAgICAgIGFsbG93ZWRQb3NpdGlvbnMgPSBhbGxvd2VkUG9zaXRpb25zIHwgVG9vbHRpcFBvc2l0aW9uLnJpZ2h0O1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRvcFBvc09rICYmIGxlZnRIYWxmUG9zT2sgJiYgcmlnaHRIYWxmUG9zT2spIHtcbiAgICAgICAgICAgIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTpuby1iaXR3aXNlXG4gICAgICAgICAgICBhbGxvd2VkUG9zaXRpb25zID0gYWxsb3dlZFBvc2l0aW9ucyB8IFRvb2x0aXBQb3NpdGlvbi50b3A7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoYm90dG9tUG9zT2sgJiYgbGVmdEhhbGZQb3NPayAmJiByaWdodEhhbGZQb3NPaykge1xuICAgICAgICAgICAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOm5vLWJpdHdpc2VcbiAgICAgICAgICAgIGFsbG93ZWRQb3NpdGlvbnMgPSBhbGxvd2VkUG9zaXRpb25zIHwgVG9vbHRpcFBvc2l0aW9uLmJvdHRvbTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBhbGxvd2VkUG9zaXRpb25zO1xuICAgIH1cblxuICAgIC8vICNlbmRyZWdpb24gUHVibGljIE1ldGhvZHNcblxuICAgIC8vICNyZWdpb24gUHJpdmF0ZSBNZXRob2RzXG5cbiAgICAvKipcbiAgICAgKiBDYWxjdWxhdGVzIHRoZSB0b3Agb2YgdGhlIHBhZ2UgaW5zaWRlIGFsbCBlbGVtZW50c1xuICAgICAqIEBwYXJhbSBlbGVtZW50IEhUTUwgRWxlbWVudFxuICAgICAqIEByZXR1cm5zIHN1bW1hcml6ZWQgdG9wIHZhbHVlIGZvciBhYnNvbHV0ZSBwb3NpdGlvblxuICAgICAqL1xuICAgIHByaXZhdGUgZ2V0T2Zmc2V0VG9wUGFyZW50KGVsZW1lbnQ6IEhUTUxFbGVtZW50KTogbnVtYmVyIHtcbiAgICAgICAgaWYgKGVsZW1lbnQgPT09IG51bGwpIHtcbiAgICAgICAgICAgIHJldHVybiAwO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKCFlbGVtZW50Lm9mZnNldFBhcmVudCkge1xuICAgICAgICAgICAgcmV0dXJuIGVsZW1lbnQub2Zmc2V0VG9wO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgcGFyZW50VmFsdWUgPSB0aGlzLmdldE9mZnNldFRvcFBhcmVudChlbGVtZW50Lm9mZnNldFBhcmVudCBhcyBIVE1MRWxlbWVudCk7XG4gICAgICAgIGxldCBvZmZzZXQgPSBlbGVtZW50Lm9mZnNldFRvcDtcbiAgICAgICAgcmV0dXJuIHBhcmVudFZhbHVlICsgb2Zmc2V0O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENhY2x1bGF0ZSBTY3JvbGxiYXJzIGluc2lkZSB0cmVlXG4gICAgICogQHBhcmFtIGVsZW1lbnQgSFRNTCBFbGVtZW50XG4gICAgICogQHBhcmFtIFtpc0ZpeGVkPWZhbHNlXSBJbnZlcnQgU2Nyb2xsIFBvc2l0aW9uIHZhbHVlIHdoZW4gc3R5bGUgaXMgZml4ZWQgdG8gcHJlc2VydmUgbmVnYXRpdmUgdmFsdWVzXG4gICAgICogQHJldHVybnMgU2Nyb2xsIHRvcCB2YWx1ZSBvZiBlbGVtZW50IHdpdGggYWxsIGNoaWxkc1xuICAgICAqL1xuICAgIHByaXZhdGUgZ2V0U2Nyb2xsVG9wUGFyZW50KGVsZW1lbnQ6IEhUTUxFbGVtZW50LCBpc0ZpeGVkID0gZmFsc2UpOiBudW1iZXIge1xuICAgICAgICBpZiAoZWxlbWVudCA9PT0gbnVsbCkge1xuICAgICAgICAgICAgcmV0dXJuIDA7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBCb2R5IFNjcm9sbCBzaG91bGQgbm90IGJlIGNhbGN1bGF0ZWRcbiAgICAgICAgaWYgKCFlbGVtZW50LnBhcmVudEVsZW1lbnQpIHtcbiAgICAgICAgICAgIHJldHVybiBpc0ZpeGVkID8gZWxlbWVudC5zY3JvbGxUb3AgOiAwO1xuICAgICAgICB9XG5cbiAgICAgICAgbGV0IGlzQ3VycmVudEZpeGVkID0gZmFsc2U7XG4gICAgICAgIGlmICh3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZShlbGVtZW50KS5nZXRQcm9wZXJ0eVZhbHVlKCdwb3NpdGlvbicpID09PSAnZml4ZWQnKSB7XG4gICAgICAgICAgICBpc0N1cnJlbnRGaXhlZCA9IHRydWU7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBwYXJlbnRWYWx1ZSA9IHRoaXMuZ2V0U2Nyb2xsVG9wUGFyZW50KGVsZW1lbnQucGFyZW50RWxlbWVudCwgaXNGaXhlZCB8fCBpc0N1cnJlbnRGaXhlZCk7XG5cbiAgICAgICAgaWYgKGlzRml4ZWQpIHtcbiAgICAgICAgICAgIHJldHVybiBwYXJlbnRWYWx1ZSArIGVsZW1lbnQuc2Nyb2xsVG9wO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIHBhcmVudFZhbHVlICsgZWxlbWVudC5zY3JvbGxUb3AgKiAtMTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8vICNlbmRyZWdpb24gUHJpdmF0ZSBNZXRob2RzXG59XG4iXSwibWFwcGluZ3MiOiJ5OHJEQWtCWTtBQUFBQSxjQUFBLFNBQUFBLENBQUEsU0FBQUMsY0FBQSxXQUFBQSxjQUFBLEVBQUFELGNBQUEsR0FsQlosT0FBU0UsZUFBZSxLQUFRLFNBQVMsQ0FHekMsTUFBTSxNQUFPLENBQUFDLFdBQVcsQ0FDcEI7QUFFT0Msa0JBQWtCQSxDQUFDQyxrQkFBMkMsQ0FBRUMsb0JBQTZCLEVBQUFOLGNBQUEsR0FBQU8sQ0FBQSxNQUFBUCxjQUFBLEdBQUFRLENBQUEsTUFDaEcsR0FBSUgsa0JBQWtCLENBQUUsQ0FBQUwsY0FBQSxHQUFBUyxDQUFBLFNBQUFULGNBQUEsR0FBQVEsQ0FBQSxNQUNwQixNQUFPLENBQUFGLG9CQUFvQixFQUFBTixjQUFBLEdBQUFTLENBQUEsU0FDckJKLGtCQUFrQixDQUFDSyxhQUFhLENBQUNDLGlCQUFpQixDQUFDQyxZQUFZLEdBQUFaLGNBQUEsR0FBQVMsQ0FBQSxTQUMvREosa0JBQWtCLENBQUNLLGFBQWEsQ0FBQ0csWUFBWSxFLENBQ3RELElBQU0sQ0FBQWIsY0FBQSxHQUFBUyxDQUFBLFNBQUFULGNBQUEsR0FBQVEsQ0FBQSxNQUNILE1BQU8sRUFBQyxDLENBRWhCLENBRU9NLGlCQUFpQkEsQ0FBQ1Qsa0JBQTJDLENBQUVDLG9CQUE2QixFQUFBTixjQUFBLEdBQUFPLENBQUEsTUFBQVAsY0FBQSxHQUFBUSxDQUFBLE1BQy9GLEdBQUlILGtCQUFrQixDQUFFLENBQUFMLGNBQUEsR0FBQVMsQ0FBQSxTQUFBVCxjQUFBLEdBQUFRLENBQUEsTUFDcEIsTUFBTyxDQUFBRixvQkFBb0IsRUFBQU4s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
|
|
80
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJjb3ZfMjd1cXl3YTNubCIsImFjdHVhbENvdmVyYWdlIiwiVG9vbHRpcFBvc2l0aW9uIiwiUG9wVXBIZWxwZXIiLCJnZXRDb250YWluZXJIZWlnaHQiLCJyZWZlcmVuY2VDb250YWluZXIiLCJyZWZlcmVuY2VJc0NvbnRhaW5lciIsImYiLCJzIiwiYiIsIm5hdGl2ZUVsZW1lbnQiLCJmaXJzdEVsZW1lbnRDaGlsZCIsImNsaWVudEhlaWdodCIsIm9mZnNldEhlaWdodCIsImdldENvbnRhaW5lcldpZHRoIiwiY2xpZW50V2lkdGgiLCJvZmZzZXRXaWR0aCIsImdldERpc3BsYXlQb3NpdGlvbiIsInBvcHVwY29udGVudGNvbnRhaW5lciIsImFycm93V2lkdGgiLCJhcnJvd0hlaWdodCIsImFsbG93ZWRQb3NpdGlvbnMiLCJ2YWxpZFBvc2l0aW9ucyIsInZhbGlkYXRlUG9zaXRpb25zIiwiaGFzUG9zaXRpb24iLCJyaWdodCIsInRvcCIsImxlZnQiLCJib3R0b20iLCJ0b3BlbmQiLCJib3R0b21lbmQiLCJpc0F1dG9Qb3NpdGlvbiIsImdldFBvc2l0aW9uIiwiZ2V0UG9wdXBIZWlnaHQiLCJjb250YWluZXIiLCJnZXRQb3B1cFdpZHRoIiwiZ2V0UG9zaXRpb25MZWZ0IiwicG9wdXBDb250YWluZXIiLCJjb250cm9sUmVmZXJlbmNlIiwicmVxdWVzdGVkUG9zaXRpb24iLCJ1bmRlZmluZWQiLCJpdGVtIiwiY2hpbGRyZW4iLCJsZW5ndGgiLCJjaGlsZEl0ZW0iLCJjb250ZW50UG9zaXRpb24iLCJnZXRCb3VuZGluZ0NsaWVudFJlY3QiLCJ3aWR0aCIsIm9mZnNldFRvcCIsIm9mZnNldExlZnQiLCJnZXRQb3NpdGlvblRvcCIsImNvbnRlbnRQb3NpdGlvblRvcCIsImdldE9mZnNldFRvcFBhcmVudCIsIm9mZnNldFBhcmVudCIsImdldFNjcm9sbFRvcFBhcmVudCIsInBhcmVudEVsZW1lbnQiLCJoZWlnaHQiLCJjbGllbnRUb3AiLCJwb3NpdGlvbnMiLCJzcGxpdCIsImluZGV4T2YiLCJwb3NpdGlvblByb3BlcnR5Iiwibm9uZSIsImJhc2VQb3NpdGlvbiIsInRvb2x0aXBSZWN0IiwibGVmdFBvc09rIiwicmlnaHRQb3NPayIsIndpbmRvdyIsImlubmVyV2lkdGgiLCJ0b3BQb3NPayIsImJvdHRvbVBvc09rIiwiaW5uZXJIZWlnaHQiLCJsZWZ0SGFsZlBvc09rIiwicmlnaHRIYWxmUG9zT2siLCJ0b3BIYWxmUG9zT2siLCJib3R0b21IYWxmUG9zT2siLCJlbGVtZW50IiwicGFyZW50VmFsdWUiLCJvZmZzZXQiLCJpc0ZpeGVkIiwic2Nyb2xsVG9wIiwiaXNDdXJyZW50Rml4ZWQiLCJnZXRDb21wdXRlZFN0eWxlIiwiZ2V0UHJvcGVydHlWYWx1ZSJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL3NhYy1jb21tb24vc3JjL3V0aWxpdGllcy9wb3B1cGhlbHBlci50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBUb29sdGlwUG9zaXRpb24gfSBmcm9tICcuL2VudW1zJztcbmltcG9ydCB7IEVsZW1lbnRSZWYgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuZXhwb3J0IGNsYXNzIFBvcFVwSGVscGVyIHtcbiAgICAvLyAjcmVnaW9uIFB1YmxpYyBNZXRob2RzXG5cbiAgICBwdWJsaWMgZ2V0Q29udGFpbmVySGVpZ2h0KHJlZmVyZW5jZUNvbnRhaW5lcjogRWxlbWVudFJlZjxIVE1MRWxlbWVudD4sIHJlZmVyZW5jZUlzQ29udGFpbmVyOiBib29sZWFuKTogbnVtYmVyIHtcbiAgICAgICAgaWYgKHJlZmVyZW5jZUNvbnRhaW5lcikge1xuICAgICAgICAgICAgcmV0dXJuIHJlZmVyZW5jZUlzQ29udGFpbmVyXG4gICAgICAgICAgICAgICAgPyByZWZlcmVuY2VDb250YWluZXIubmF0aXZlRWxlbWVudC5maXJzdEVsZW1lbnRDaGlsZC5jbGllbnRIZWlnaHRcbiAgICAgICAgICAgICAgICA6IHJlZmVyZW5jZUNvbnRhaW5lci5uYXRpdmVFbGVtZW50Lm9mZnNldEhlaWdodDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiAwO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIGdldENvbnRhaW5lcldpZHRoKHJlZmVyZW5jZUNvbnRhaW5lcjogRWxlbWVudFJlZjxIVE1MRWxlbWVudD4sIHJlZmVyZW5jZUlzQ29udGFpbmVyOiBib29sZWFuKTogbnVtYmVyIHtcbiAgICAgICAgaWYgKHJlZmVyZW5jZUNvbnRhaW5lcikge1xuICAgICAgICAgICAgcmV0dXJuIHJlZmVyZW5jZUlzQ29udGFpbmVyXG4gICAgICAgICAgICAgICAgPyByZWZlcmVuY2VDb250YWluZXIubmF0aXZlRWxlbWVudC5maXJzdEVsZW1lbnRDaGlsZC5jbGllbnRXaWR0aFxuICAgICAgICAgICAgICAgIDogcmVmZXJlbmNlQ29udGFpbmVyLm5hdGl2ZUVsZW1lbnQub2Zmc2V0V2lkdGg7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gMDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEdldCBQb3NpdGlvbiB3aG8gdGhlIHBvcHVwIHdvdWxkIGJlIHBvc2l0aW9uZWRcbiAgICAgKlxuICAgICAqIEBwYXJhbSByZWZlcmVuY2VDb250YWluZXIgRWxlbWVudCBSZWZlcmVuY2UgdG8gSFRNTCBFbGVtZW50IHdoaWNoIGlzIHRoZSByZWZlcmVuY2UgdG8gcG9zaXRpb25pbmcgdGhlIHBvcHVwXG4gICAgICogQHBhcmFtIHBvcHVwY29udGVudGNvbnRhaW5lciBFbGVtZW50IFJlZmVyZW5jZSB0byBjb250YWluZXIgb2YgcG9wdXBcbiAgICAgKiBAcGFyYW0gcG9wdXBPZmZzZXQgT2Zmc2V0IGZvciBwb3B1cCBwb3NpdGlvbmluZ1xuICAgICAqIEBwYXJhbSBhbGxvd2VkUG9zaXRpb25zIEFsbG93ZWQgUG9zaXRpb25zIGZvciB0aGUgcG9wdXBcbiAgICAgKiBAcmV0dXJucyBSZXR1cm5zIHRoZSBwb3NpdGlvbiB3aGVyZSB0aGUgcG9wdXAgc2hvdWxkIGJlIGRpc3BsYXllZFxuICAgICAqL1xuICAgIHB1YmxpYyBnZXREaXNwbGF5UG9zaXRpb24oXG4gICAgICAgIHJlZmVyZW5jZUNvbnRhaW5lcjogRWxlbWVudFJlZjxIVE1MRWxlbWVudD4sXG4gICAgICAgIHBvcHVwY29udGVudGNvbnRhaW5lcjogRWxlbWVudFJlZjxIVE1MRWxlbWVudD4sXG4gICAgICAgIGFycm93V2lkdGg6IG51bWJlcixcbiAgICAgICAgYXJyb3dIZWlnaHQ6IG51bWJlcixcbiAgICAgICAgYWxsb3dlZFBvc2l0aW9uczogc3RyaW5nLFxuICAgICAgICByZWZlcmVuY2VJc0NvbnRhaW5lcjogYm9vbGVhblxuICAgICk6IFRvb2x0aXBQb3NpdGlvbiB7XG4gICAgICAgIGNvbnN0IHZhbGlkUG9zaXRpb25zOiBUb29sdGlwUG9zaXRpb24gPSB0aGlzLnZhbGlkYXRlUG9zaXRpb25zKFxuICAgICAgICAgICAgcmVmZXJlbmNlQ29udGFpbmVyLFxuICAgICAgICAgICAgcG9wdXBjb250ZW50Y29udGFpbmVyLFxuICAgICAgICAgICAgYXJyb3dXaWR0aCxcbiAgICAgICAgICAgIGFycm93SGVpZ2h0LFxuICAgICAgICAgICAgcmVmZXJlbmNlSXNDb250YWluZXJcbiAgICAgICAgKTtcblxuICAgICAgICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6bm8tYml0d2lzZVxuICAgICAgICBpZiAodGhpcy5oYXNQb3NpdGlvbihhbGxvd2VkUG9zaXRpb25zLCBUb29sdGlwUG9zaXRpb24ucmlnaHQpICYmIHZhbGlkUG9zaXRpb25zICYgVG9vbHRpcFBvc2l0aW9uLnJpZ2h0KSB7XG4gICAgICAgICAgICByZXR1cm4gVG9vbHRpcFBvc2l0aW9uLnJpZ2h0O1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOm5vLWJpdHdpc2VcbiAgICAgICAgaWYgKHRoaXMuaGFzUG9zaXRpb24oYWxsb3dlZFBvc2l0aW9ucywgVG9vbHRpcFBvc2l0aW9uLnRvcCkgJiYgdmFsaWRQb3NpdGlvbnMgJiBUb29sdGlwUG9zaXRpb24udG9wKSB7XG4gICAgICAgICAgICByZXR1cm4gVG9vbHRpcFBvc2l0aW9uLnRvcDtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTpuby1iaXR3aXNlXG4gICAgICAgIGlmICh0aGlzLmhhc1Bvc2l0aW9uKGFsbG93ZWRQb3NpdGlvbnMsIFRvb2x0aXBQb3NpdGlvbi5sZWZ0KSAmJiB2YWxpZFBvc2l0aW9ucyAmIFRvb2x0aXBQb3NpdGlvbi5sZWZ0KSB7XG4gICAgICAgICAgICByZXR1cm4gVG9vbHRpcFBvc2l0aW9uLmxlZnQ7XG4gICAgICAgIH1cblxuICAgICAgICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6bm8tYml0d2lzZVxuICAgICAgICBpZiAodGhpcy5oYXNQb3NpdGlvbihhbGxvd2VkUG9zaXRpb25zLCBUb29sdGlwUG9zaXRpb24uYm90dG9tKSAmJiB2YWxpZFBvc2l0aW9ucyAmIFRvb2x0aXBQb3NpdGlvbi5ib3R0b20pIHtcbiAgICAgICAgICAgIHJldHVybiBUb29sdGlwUG9zaXRpb24uYm90dG9tO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMuaGFzUG9zaXRpb24oYWxsb3dlZFBvc2l0aW9ucywgVG9vbHRpcFBvc2l0aW9uLnRvcGVuZCkgJiYgdmFsaWRQb3NpdGlvbnMgJiBUb29sdGlwUG9zaXRpb24udG9wZW5kKSB7XG4gICAgICAgICAgICByZXR1cm4gVG9vbHRpcFBvc2l0aW9uLnRvcGVuZDtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChcbiAgICAgICAgICAgIHRoaXMuaGFzUG9zaXRpb24oYWxsb3dlZFBvc2l0aW9ucywgVG9vbHRpcFBvc2l0aW9uLmJvdHRvbWVuZCkgJiZcbiAgICAgICAgICAgIHZhbGlkUG9zaXRpb25zICYgVG9vbHRpcFBvc2l0aW9uLmJvdHRvbWVuZFxuICAgICAgICApIHtcbiAgICAgICAgICAgIHJldHVybiBUb29sdGlwUG9zaXRpb24uYm90dG9tZW5kO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gR2V0IEF1dG8gUG9zaXRpb24gb3IgRGVmYXVsdFxuICAgICAgICBpZiAodGhpcy5pc0F1dG9Qb3NpdGlvbihhbGxvd2VkUG9zaXRpb25zKSkge1xuICAgICAgICAgICAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOm5vLWJpdHdpc2VcbiAgICAgICAgICAgIGlmICh2YWxpZFBvc2l0aW9ucyAmIFRvb2x0aXBQb3NpdGlvbi5yaWdodCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBUb29sdGlwUG9zaXRpb24ucmlnaHQ7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTpuby1iaXR3aXNlXG4gICAgICAgICAgICBpZiAodmFsaWRQb3NpdGlvbnMgJiBUb29sdGlwUG9zaXRpb24udG9wKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIFRvb2x0aXBQb3NpdGlvbi50b3A7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTpuby1iaXR3aXNlXG4gICAgICAgICAgICBpZiAodmFsaWRQb3NpdGlvbnMgJiBUb29sdGlwUG9zaXRpb24ubGVmdCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBUb29sdGlwUG9zaXRpb24ubGVmdDtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOm5vLWJpdHdpc2VcbiAgICAgICAgICAgIGlmICh2YWxpZFBvc2l0aW9ucyAmIFRvb2x0aXBQb3NpdGlvbi5ib3R0b20pIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gVG9vbHRpcFBvc2l0aW9uLmJvdHRvbTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmV0dXJuIFRvb2x0aXBQb3NpdGlvbi5yaWdodDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmdldFBvc2l0aW9uKGFsbG93ZWRQb3NpdGlvbnMpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2FsY3VsYXRlcyB0aGUgaGVpZ2h0IG9mIHRoZSBwb3B1cFxuICAgICAqXG4gICAgICogQHBhcmFtIGNvbnRhaW5lciBFbGVtZW50IFJlZmVyZW5jZSB0byBjb250YWluZXIgb2YgcG9wdXBcbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0UG9wdXBIZWlnaHQoY29udGFpbmVyOiBFbGVtZW50UmVmPEhUTUxFbGVtZW50Pik6IG51bWJlciB7XG4gICAgICAgIGlmIChjb250YWluZXIpIHtcbiAgICAgICAgICAgIHJldHVybiBjb250YWluZXIubmF0aXZlRWxlbWVudC5maXJzdEVsZW1lbnRDaGlsZC5jbGllbnRIZWlnaHQgPz8gMDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiAwO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2FsY3VsYXRlcyB0aGUgd2lkdGggb2YgdGhlIHBvcHVwXG4gICAgICpcbiAgICAgKiBAcGFyYW0gY29udGFpbmVyIEVsZW1lbnQgUmVmZXJlbmNlIHRvIGNvbnRhaW5lciBvZiBwb3B1cFxuICAgICAqL1xuICAgIHB1YmxpYyBnZXRQb3B1cFdpZHRoKGNvbnRhaW5lcjogRWxlbWVudFJlZjxIVE1MRWxlbWVudD4pOiBudW1iZXIge1xuICAgICAgICBpZiAoY29udGFpbmVyKSB7XG4gICAgICAgICAgICByZXR1cm4gY29udGFpbmVyLm5hdGl2ZUVsZW1lbnQuZmlyc3RFbGVtZW50Q2hpbGQuY2xpZW50V2lkdGg7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gMDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJldHVybnMgdGhlIGRlZmluZWQgcG9zaXRpb24gZm9yIHRoZSB0b29sdGlwXG4gICAgICpcbiAgICAgKiBAcGFyYW0gYWxsb3dlZFBvc2l0aW9ucyBBbGxvd2VkIHBvc2l0aW9ucyBkZWZpbmVkIGluIG1hcmt1cCBmb3IgcG9wdXBcbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0UG9zaXRpb24oYWxsb3dlZFBvc2l0aW9uczogc3RyaW5nKTogVG9vbHRpcFBvc2l0aW9uIHtcbiAgICAgICAgaWYgKHRoaXMuaGFzUG9zaXRpb24oYWxsb3dlZFBvc2l0aW9ucywgVG9vbHRpcFBvc2l0aW9uLmxlZnQpKSB7XG4gICAgICAgICAgICByZXR1cm4gVG9vbHRpcFBvc2l0aW9uLmxlZnQ7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5oYXNQb3NpdGlvbihhbGxvd2VkUG9zaXRpb25zLCBUb29sdGlwUG9zaXRpb24udG9wKSkge1xuICAgICAgICAgICAgcmV0dXJuIFRvb2x0aXBQb3NpdGlvbi50b3A7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5oYXNQb3NpdGlvbihhbGxvd2VkUG9zaXRpb25zLCBUb29sdGlwUG9zaXRpb24ucmlnaHQpKSB7XG4gICAgICAgICAgICByZXR1cm4gVG9vbHRpcFBvc2l0aW9uLnJpZ2h0O1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMuaGFzUG9zaXRpb24oYWxsb3dlZFBvc2l0aW9ucywgVG9vbHRpcFBvc2l0aW9uLmJvdHRvbSkpIHtcbiAgICAgICAgICAgIHJldHVybiBUb29sdGlwUG9zaXRpb24uYm90dG9tO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMuaGFzUG9zaXRpb24oYWxsb3dlZFBvc2l0aW9ucywgVG9vbHRpcFBvc2l0aW9uLnRvcGVuZCkpIHtcbiAgICAgICAgICAgIHJldHVybiBUb29sdGlwUG9zaXRpb24udG9wZW5kO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMuaGFzUG9zaXRpb24oYWxsb3dlZFBvc2l0aW9ucywgVG9vbHRpcFBvc2l0aW9uLmJvdHRvbWVuZCkpIHtcbiAgICAgICAgICAgIHJldHVybiBUb29sdGlwUG9zaXRpb24uYm90dG9tZW5kO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gRGVmYXVsdCBQb3NpdGlvbiBpZiBlbXB0eVxuICAgICAgICByZXR1cm4gVG9vbHRpcFBvc2l0aW9uLnJpZ2h0O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENhbGN1bGF0ZXMgdGhlIHBvc2l0aW9uIG9mIHRoZSB0b29sdGlwIGZyb20gbGlua3NcbiAgICAgKlxuICAgICAqIEBwYXJhbSBjb250cm9sUmVmZXJlbmNlIEVsZW1lbnQgUmVmZXJlbmNlIHRvIGFuZ3VsYXIgY29tcG9uZW50XG4gICAgICogQHBhcmFtIHBvcHVwQ29udGFpbmVyIEVsZW1lbnQgUmVmZXJlbmNlIHRvIGNvbnRhaW5lciBvZiBwb3B1cFxuICAgICAqIEBwYXJhbSByZWZlcmVuY2VDb250YWluZXIgRWxlbWVudCBSZWZlcmVuY2UgdG8gSFRNTCBFbGVtZW50IHdoaWNoIGlzIHRoZSByZWZlcmVuY2UgdG8gcG9zaXRpb25pbmcgdGhlIHBvcHVwXG4gICAgICogQHBhcmFtIHBvcHVwT2Zmc2V0IE9mZnNldCBmb3IgcG9wdXAgcG9zaXRpb25pbmdcbiAgICAgKiBAcGFyYW0gcmVxdWVzdGVkUG9zaXRpb24gUmVxdWVzdGVkIFBvc2l0aW9uIGJ5IENvbnRyb2xcbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0UG9zaXRpb25MZWZ0KFxuICAgICAgICByZWZlcmVuY2VDb250YWluZXI6IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+LFxuICAgICAgICBwb3B1cENvbnRhaW5lcjogRWxlbWVudFJlZjxIVE1MRWxlbWVudD4sXG4gICAgICAgIGNvbnRyb2xSZWZlcmVuY2U6IEVsZW1lbnRSZWYsXG4gICAgICAgIGFycm93V2lkdGg6IG51bWJlcixcbiAgICAgICAgYXJyb3dIZWlnaHQ6IG51bWJlcixcbiAgICAgICAgcmVxdWVzdGVkUG9zaXRpb246IHN0cmluZyxcbiAgICAgICAgcmVmZXJlbmNlSXNDb250YWluZXI6IGJvb2xlYW5cbiAgICApOiBudW1iZXIge1xuICAgICAgICBpZiAocmVmZXJlbmNlQ29udGFpbmVyICE9PSBudWxsICYmIHJlZmVyZW5jZUNvbnRhaW5lciAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICBjb25zdCBpdGVtID0gcmVmZXJlbmNlQ29udGFpbmVyLm5hdGl2ZUVsZW1lbnQ7XG5cbiAgICAgICAgICAgIGlmIChpdGVtLmNoaWxkcmVuLmxlbmd0aCA+PSAxKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgY2hpbGRJdGVtID0gcmVmZXJlbmNlSXNDb250YWluZXIgPyAoaXRlbS5maXJzdEVsZW1lbnRDaGlsZCBhcyBIVE1MRWxlbWVudCkgOiBpdGVtO1xuICAgICAgICAgICAgICAgIGNvbnN0IGNvbnRlbnRQb3NpdGlvbjogRE9NUmVjdCA9IGNoaWxkSXRlbS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcblxuICAgICAgICAgICAgICAgIHN3aXRjaCAoXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZ2V0RGlzcGxheVBvc2l0aW9uKFxuICAgICAgICAgICAgICAgICAgICAgICAgcmVmZXJlbmNlQ29udGFpbmVyLFxuICAgICAgICAgICAgICAgICAgICAgICAgcG9wdXBDb250YWluZXIsXG4gICAgICAgICAgICAgICAgICAgICAgICBhcnJvd1dpZHRoLFxuICAgICAgICAgICAgICAgICAgICAgICAgYXJyb3dIZWlnaHQsXG4gICAgICAgICAgICAgICAgICAgICAgICByZXF1ZXN0ZWRQb3NpdGlvbixcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlZmVyZW5jZUlzQ29udGFpbmVyXG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICAgICAgY2FzZSBUb29sdGlwUG9zaXRpb24udG9wOlxuICAgICAgICAgICAgICAgICAgICBjYXNlIFRvb2x0aXBQb3NpdGlvbi5ib3R0b206XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRlbnRQb3NpdGlvbi5sZWZ0ICsgY29udGVudFBvc2l0aW9uLndpZHRoIC8gMiAtIHRoaXMuZ2V0UG9wdXBXaWR0aChwb3B1cENvbnRhaW5lcikgLyAyXG4gICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICBjYXNlIFRvb2x0aXBQb3NpdGlvbi50b3BlbmQ6XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgVG9vbHRpcFBvc2l0aW9uLmJvdHRvbWVuZDpcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBjb250ZW50UG9zaXRpb24ubGVmdCArIGNvbnRlbnRQb3NpdGlvbi53aWR0aCAtIHRoaXMuZ2V0UG9wdXBXaWR0aChwb3B1cENvbnRhaW5lcik7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgVG9vbHRpcFBvc2l0aW9uLnJpZ2h0OlxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGNvbnRlbnRQb3NpdGlvbi5sZWZ0ICsgY29udGVudFBvc2l0aW9uLndpZHRoICsgYXJyb3dXaWR0aCAvIDI7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgVG9vbHRpcFBvc2l0aW9uLmxlZnQ6XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gY29udGVudFBvc2l0aW9uLmxlZnQgLSB0aGlzLmdldFBvcHVwV2lkdGgocG9wdXBDb250YWluZXIpICsgKGFycm93V2lkdGggLyAyKSAqIC0xO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHJldHVybiByZWZlcmVuY2VDb250YWluZXIubmF0aXZlRWxlbWVudC5vZmZzZXRUb3A7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiByZWZlcmVuY2VDb250YWluZXIubmF0aXZlRWxlbWVudC5vZmZzZXRUb3A7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gY29udHJvbFJlZmVyZW5jZS5uYXRpdmVFbGVtZW50Lm9mZnNldExlZnQ7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDYWxjdWxhdGVzIHRoZSBwb3NpdGlvbiBvZiB0aGUgdG9vbHRpcCBmcm9tIHRoZSB0b3BcbiAgICAgKlxuICAgICAqIEBwYXJhbSBjb250cm9sUmVmZXJlbmNlIEVsZW1lbnQgUmVmZXJlbmNlIHRvIGFuZ3VsYXIgY29tcG9uZW50XG4gICAgICogQHBhcmFtIHBvcHVwQ29udGFpbmVyIEVsZW1lbnQgUmVmZXJlbmNlIHRvIGNvbnRhaW5lciBvZiBwb3B1cFxuICAgICAqIEBwYXJhbSByZWZlcmVuY2VDb250YWluZXIgRWxlbWVudCBSZWZlcmVuY2UgdG8gSFRNTCBFbGVtZW50IHdoaWNoIGlzIHRoZSByZWZlcmVuY2UgdG8gcG9zaXRpb25pbmcgdGhlIHBvcHVwXG4gICAgICogQHBhcmFtIHBvcHVwT2Zmc2V0IE9mZnNldCBmb3IgcG9wdXAgcG9zaXRpb25pbmdcbiAgICAgKiBAcGFyYW0gcmVxdWVzdGVkUG9zaXRpb24gUmVxdWVzdGVkIFBvc2l0aW9uIGJ5IENvbnRyb2xcbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0UG9zaXRpb25Ub3AoXG4gICAgICAgIHJlZmVyZW5jZUNvbnRhaW5lcjogRWxlbWVudFJlZjxIVE1MRWxlbWVudD4sXG4gICAgICAgIHBvcHVwQ29udGFpbmVyOiBFbGVtZW50UmVmPEhUTUxFbGVtZW50PixcbiAgICAgICAgY29udHJvbFJlZmVyZW5jZTogRWxlbWVudFJlZixcbiAgICAgICAgYXJyb3dXaWR0aDogbnVtYmVyLFxuICAgICAgICBhcnJvd0hlaWdodDogbnVtYmVyLFxuICAgICAgICByZXF1ZXN0ZWRQb3NpdGlvbjogc3RyaW5nLFxuICAgICAgICByZWZlcmVuY2VJc0NvbnRhaW5lcjogYm9vbGVhblxuICAgICk6IG51bWJlciB7XG4gICAgICAgIGlmIChyZWZlcmVuY2VDb250YWluZXIgIT09IG51bGwgJiYgcmVmZXJlbmNlQ29udGFpbmVyICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIGNvbnN0IGl0ZW0gPSByZWZlcmVuY2VDb250YWluZXIubmF0aXZlRWxlbWVudDtcbiAgICAgICAgICAgIGlmIChpdGVtLmNoaWxkcmVuLmxlbmd0aCA+PSAxKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgY2hpbGRJdGVtID0gcmVmZXJlbmNlSXNDb250YWluZXIgPyAoaXRlbS5maXJzdEVsZW1lbnRDaGlsZCBhcyBIVE1MRWxlbWVudCkgOiBpdGVtO1xuICAgICAgICAgICAgICAgIGNvbnN0IGNvbnRlbnRQb3NpdGlvbjogRE9NUmVjdCA9IGNoaWxkSXRlbS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcblxuICAgICAgICAgICAgICAgIC8vIEdldCBQb3NpdGlvbiB3aXRoIFNjcm9sbCAoU2Nyb2xsYmFycyBpbnNpZGUgcGFnZSBzaG91bGQgYmUgc3Vic3RyYWN0ZWQpXG4gICAgICAgICAgICAgICAgY29uc3QgY29udGVudFBvc2l0aW9uVG9wID1cbiAgICAgICAgICAgICAgICAgICAgY2hpbGRJdGVtLm9mZnNldFRvcCArXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZ2V0T2Zmc2V0VG9wUGFyZW50KGNoaWxkSXRlbS5vZmZzZXRQYXJlbnQgYXMgSFRNTEVsZW1lbnQpICtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5nZXRTY3JvbGxUb3BQYXJlbnQoY2hpbGRJdGVtLnBhcmVudEVsZW1lbnQpO1xuXG4gICAgICAgICAgICAgICAgc3dpdGNoIChcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5nZXREaXNwbGF5UG9zaXRpb24oXG4gICAgICAgICAgICAgICAgICAgICAgICByZWZlcmVuY2VDb250YWluZXIsXG4gICAgICAgICAgICAgICAgICAgICAgICBwb3B1cENvbnRhaW5lcixcbiAgICAgICAgICAgICAgICAgICAgICAgIGFycm93V2lkdGgsXG4gICAgICAgICAgICAgICAgICAgICAgICBhcnJvd0hlaWdodCxcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVlc3RlZFBvc2l0aW9uLFxuICAgICAgICAgICAgICAgICAgICAgICAgcmVmZXJlbmNlSXNDb250YWluZXJcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgICAgICBjYXNlIFRvb2x0aXBQb3NpdGlvbi50b3A6XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgVG9vbHRpcFBvc2l0aW9uLnRvcGVuZDpcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBjb250ZW50UG9zaXRpb25Ub3AgLSB0aGlzLmdldFBvcHVwSGVpZ2h0KHBvcHVwQ29udGFpbmVyKSArIChhcnJvd0hlaWdodCAvIDIpICogLTE7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgVG9vbHRpcFBvc2l0aW9uLnJpZ2h0OlxuICAgICAgICAgICAgICAgICAgICBjYXNlIFRvb2x0aXBQb3NpdGlvbi5sZWZ0OlxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZW50UG9zaXRpb25Ub3AgKyBjb250ZW50UG9zaXRpb24uaGVpZ2h0IC8gMiAtIHRoaXMuZ2V0UG9wdXBIZWlnaHQocG9wdXBDb250YWluZXIpIC8gMlxuICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgY2FzZSBUb29sdGlwUG9zaXRpb24uYm90dG9tOlxuICAgICAgICAgICAgICAgICAgICBjYXNlIFRvb2x0aXBQb3NpdGlvbi5ib3R0b21lbmQ6XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gY29udGVudFBvc2l0aW9uVG9wICsgY29udGVudFBvc2l0aW9uLmhlaWdodCArIGFycm93SGVpZ2h0IC8gMjtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAgICAgICBjaGlsZEl0ZW0uY2xpZW50VG9wICtcbiAgICAgICAgICAgICAgICAgICAgY2hpbGRJdGVtLm9mZnNldFRvcCAtXG4gICAgICAgICAgICAgICAgICAgICh0aGlzLmdldFBvcHVwSGVpZ2h0KHBvcHVwQ29udGFpbmVyKSAvIDIgLSBjaGlsZEl0ZW0ub2Zmc2V0SGVpZ2h0IC8gMilcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gcmVmZXJlbmNlQ29udGFpbmVyLm5hdGl2ZUVsZW1lbnQub2Zmc2V0VG9wO1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIGNvbnRyb2xSZWZlcmVuY2UubmF0aXZlRWxlbWVudC5vZmZzZXRUb3A7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZXR1cm5zIHdoZXRoZXIgdGhlIHBvc2l0aW9uIGhhcyBiZWVuIGNvbmZpZ3VyZWRcbiAgICAgKlxuICAgICAqIEBwYXJhbSBhbGxvd2VkUG9zaXRpb25zIFBvc2l0aW9ucyB0aGF0IGFsbG93ZWQgYnkgY29udHJvbFxuICAgICAqIEBwYXJhbSByZXF1ZXN0ZWRQb3NpdGlvbiBQb3NpdGlvbiB0byBiZSBjaGVja2VkXG4gICAgICovXG4gICAgcHVibGljIGhhc1Bvc2l0aW9uKGFsbG93ZWRQb3NpdGlvbnM6IHN0cmluZywgcmVxdWVzdGVkUG9zaXRpb246IFRvb2x0aXBQb3NpdGlvbik6IGJvb2xlYW4ge1xuICAgICAgICBjb25zdCBwb3NpdGlvbnMgPSBhbGxvd2VkUG9zaXRpb25zLnNwbGl0KCd8Jyk7XG5cbiAgICAgICAgaWYgKHJlcXVlc3RlZFBvc2l0aW9uID09PSBUb29sdGlwUG9zaXRpb24ucmlnaHQgJiYgcG9zaXRpb25zLmluZGV4T2YoJ3JpZ2h0JykgPj0gMCkge1xuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAocmVxdWVzdGVkUG9zaXRpb24gPT09IFRvb2x0aXBQb3NpdGlvbi50b3AgJiYgcG9zaXRpb25zLmluZGV4T2YoJ3RvcCcpID49IDApIHtcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHJlcXVlc3RlZFBvc2l0aW9uID09PSBUb29sdGlwUG9zaXRpb24ubGVmdCAmJiBwb3NpdGlvbnMuaW5kZXhPZignbGVmdCcpID49IDApIHtcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHJlcXVlc3RlZFBvc2l0aW9uID09PSBUb29sdGlwUG9zaXRpb24uYm90dG9tICYmIHBvc2l0aW9ucy5pbmRleE9mKCdib3R0b20nKSA+PSAwKSB7XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChyZXF1ZXN0ZWRQb3NpdGlvbiA9PT0gVG9vbHRpcFBvc2l0aW9uLnRvcGVuZCAmJiBwb3NpdGlvbnMuaW5kZXhPZigndG9wZW5kJykgPj0gMCkge1xuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHJlcXVlc3RlZFBvc2l0aW9uID09PSBUb29sdGlwUG9zaXRpb24uYm90dG9tZW5kICYmIHBvc2l0aW9ucy5pbmRleE9mKCdib3R0b21lbmQnKSA+PSAwKSB7XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBEZWZpbmVzIHdoZXRoZXIgQXV0b1Bvc2l0aW9uIGlzIGFjdGl2ZVxuICAgICAqIEBwYXJhbSBwb3NpdGlvblByb3BlcnR5IExpc3Qgb2YgYWxsb3dlZCBwb3NpdGlvbnNcbiAgICAgKi9cbiAgICBwdWJsaWMgaXNBdXRvUG9zaXRpb24ocG9zaXRpb25Qcm9wZXJ0eTogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgICAgIGNvbnN0IHBvc2l0aW9ucyA9IHBvc2l0aW9uUHJvcGVydHkuc3BsaXQoJ3wnKTtcbiAgICAgICAgcmV0dXJuIHBvc2l0aW9ucy5pbmRleE9mKCdhdXRvJykgPj0gMDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDaGVja3Mgd2hldGhlciB0aGUgcG9zaXRpb24gaXMgdmFsaWQgb3Igd2hldGhlciB0aGUgdG9vbHRpcCBvbiB0aGUgcG9zaXRpb24gaGFzIHNwYWNlXG4gICAgICovXG4gICAgcHVibGljIHZhbGlkYXRlUG9zaXRpb25zKFxuICAgICAgICByZWZlcmVuY2VDb250YWluZXI6IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+LFxuICAgICAgICBwb3B1cGNvbnRlbnRjb250YWluZXI6IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+LFxuICAgICAgICBhcnJvd1dpZHRoOiBudW1iZXIsXG4gICAgICAgIGFycm93SGVpZ2h0OiBudW1iZXIsXG4gICAgICAgIHJlZmVyZW5jZUlzQ29udGFpbmVyOiBib29sZWFuXG4gICAgKTogVG9vbHRpcFBvc2l0aW9uIHtcbiAgICAgICAgLy8gQ2hlY2sgaWYgQ29udGFpbmVyIGlzIGZhbHNlXG4gICAgICAgIGlmIChwb3B1cGNvbnRlbnRjb250YWluZXIgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgcmV0dXJuIFRvb2x0aXBQb3NpdGlvbi5yaWdodDtcbiAgICAgICAgfVxuXG4gICAgICAgIGxldCBhbGxvd2VkUG9zaXRpb25zOiBUb29sdGlwUG9zaXRpb24gPSBUb29sdGlwUG9zaXRpb24ubm9uZTtcbiAgICAgICAgY29uc3QgYmFzZVBvc2l0aW9uOiBET01SZWN0ID0gcmVmZXJlbmNlSXNDb250YWluZXJcbiAgICAgICAgICAgID8gcmVmZXJlbmNlQ29udGFpbmVyLm5hdGl2ZUVsZW1lbnQuZmlyc3RFbGVtZW50Q2hpbGQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KClcbiAgICAgICAgICAgIDogcmVmZXJlbmNlQ29udGFpbmVyLm5hdGl2ZUVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gICAgICAgIGNvbnN0IHRvb2x0aXBSZWN0OiBET01SZWN0ID0gcG9wdXBjb250ZW50Y29udGFpbmVyLm5hdGl2ZUVsZW1lbnQuZmlyc3RFbGVtZW50Q2hpbGQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG5cbiAgICAgICAgY29uc3QgbGVmdFBvc09rOiBib29sZWFuID0gYmFzZVBvc2l0aW9uLmxlZnQgLSAodG9vbHRpcFJlY3Qud2lkdGggKyBhcnJvd1dpZHRoICogLTEpID4gMDtcbiAgICAgICAgY29uc3QgcmlnaHRQb3NPazogYm9vbGVhbiA9IGJhc2VQb3NpdGlvbi5yaWdodCArIHRvb2x0aXBSZWN0LndpZHRoICsgYXJyb3dXaWR0aCA8IHdpbmRvdy5pbm5lcldpZHRoO1xuICAgICAgICBjb25zdCB0b3BQb3NPazogYm9vbGVhbiA9IGJhc2VQb3NpdGlvbi50b3AgLSAodG9vbHRpcFJlY3QuaGVpZ2h0ICsgYXJyb3dIZWlnaHQpID4gMDtcbiAgICAgICAgY29uc3QgYm90dG9tUG9zT2s6IGJvb2xlYW4gPSBiYXNlUG9zaXRpb24uYm90dG9tICsgdG9vbHRpcFJlY3QuaGVpZ2h0ICsgYXJyb3dIZWlnaHQgPCB3aW5kb3cuaW5uZXJIZWlnaHQ7XG5cbiAgICAgICAgY29uc3QgbGVmdEhhbGZQb3NPazogYm9vbGVhbiA9IGJhc2VQb3NpdGlvbi5sZWZ0IC0gdG9vbHRpcFJlY3Qud2lkdGggLyAyID4gMDtcbiAgICAgICAgY29uc3QgcmlnaHRIYWxmUG9zT2s6IGJvb2xlYW4gPSBiYXNlUG9zaXRpb24ucmlnaHQgKyB0b29sdGlwUmVjdC53aWR0aCAvIDIgPCB3aW5kb3cuaW5uZXJXaWR0aDtcbiAgICAgICAgY29uc3QgdG9wSGFsZlBvc09rOiBib29sZWFuID0gYmFzZVBvc2l0aW9uLnRvcCAtIHRvb2x0aXBSZWN0LmhlaWdodCAvIDIgPiAwO1xuICAgICAgICBjb25zdCBib3R0b21IYWxmUG9zT2s6IGJvb2xlYW4gPSBiYXNlUG9zaXRpb24uYm90dG9tICsgdG9vbHRpcFJlY3QuaGVpZ2h0IC8gMiA8IHdpbmRvdy5pbm5lckhlaWdodDtcblxuICAgICAgICBpZiAodG9wUG9zT2spIHtcbiAgICAgICAgICAgIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTpuby1iaXR3aXNlXG4gICAgICAgICAgICBhbGxvd2VkUG9zaXRpb25zID0gYWxsb3dlZFBvc2l0aW9ucyB8IFRvb2x0aXBQb3NpdGlvbi50b3BlbmQ7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoYm90dG9tUG9zT2spIHtcbiAgICAgICAgICAgIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTpuby1iaXR3aXNlXG4gICAgICAgICAgICBhbGxvd2VkUG9zaXRpb25zID0gYWxsb3dlZFBvc2l0aW9ucyB8IFRvb2x0aXBQb3NpdGlvbi5ib3R0b21lbmQ7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAobGVmdFBvc09rICYmIHRvcEhhbGZQb3NPayAmJiBib3R0b21IYWxmUG9zT2spIHtcbiAgICAgICAgICAgIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTpuby1iaXR3aXNlXG4gICAgICAgICAgICBhbGxvd2VkUG9zaXRpb25zID0gYWxsb3dlZFBvc2l0aW9ucyB8IFRvb2x0aXBQb3NpdGlvbi5sZWZ0O1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHJpZ2h0UG9zT2sgJiYgdG9wSGFsZlBvc09rICYmIGJvdHRvbUhhbGZQb3NPaykge1xuICAgICAgICAgICAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOm5vLWJpdHdpc2VcbiAgICAgICAgICAgIGFsbG93ZWRQb3NpdGlvbnMgPSBhbGxvd2VkUG9zaXRpb25zIHwgVG9vbHRpcFBvc2l0aW9uLnJpZ2h0O1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRvcFBvc09rICYmIGxlZnRIYWxmUG9zT2sgJiYgcmlnaHRIYWxmUG9zT2spIHtcbiAgICAgICAgICAgIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTpuby1iaXR3aXNlXG4gICAgICAgICAgICBhbGxvd2VkUG9zaXRpb25zID0gYWxsb3dlZFBvc2l0aW9ucyB8IFRvb2x0aXBQb3NpdGlvbi50b3A7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoYm90dG9tUG9zT2sgJiYgbGVmdEhhbGZQb3NPayAmJiByaWdodEhhbGZQb3NPaykge1xuICAgICAgICAgICAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOm5vLWJpdHdpc2VcbiAgICAgICAgICAgIGFsbG93ZWRQb3NpdGlvbnMgPSBhbGxvd2VkUG9zaXRpb25zIHwgVG9vbHRpcFBvc2l0aW9uLmJvdHRvbTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBhbGxvd2VkUG9zaXRpb25zO1xuICAgIH1cblxuICAgIC8vICNlbmRyZWdpb24gUHVibGljIE1ldGhvZHNcblxuICAgIC8vICNyZWdpb24gUHJpdmF0ZSBNZXRob2RzXG5cbiAgICAvKipcbiAgICAgKiBDYWxjdWxhdGVzIHRoZSB0b3Agb2YgdGhlIHBhZ2UgaW5zaWRlIGFsbCBlbGVtZW50c1xuICAgICAqIEBwYXJhbSBlbGVtZW50IEhUTUwgRWxlbWVudFxuICAgICAqIEByZXR1cm5zIHN1bW1hcml6ZWQgdG9wIHZhbHVlIGZvciBhYnNvbHV0ZSBwb3NpdGlvblxuICAgICAqL1xuICAgIHByaXZhdGUgZ2V0T2Zmc2V0VG9wUGFyZW50KGVsZW1lbnQ6IEhUTUxFbGVtZW50KTogbnVtYmVyIHtcbiAgICAgICAgaWYgKGVsZW1lbnQgPT09IG51bGwpIHtcbiAgICAgICAgICAgIHJldHVybiAwO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKCFlbGVtZW50Lm9mZnNldFBhcmVudCkge1xuICAgICAgICAgICAgcmV0dXJuIGVsZW1lbnQub2Zmc2V0VG9wO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgcGFyZW50VmFsdWUgPSB0aGlzLmdldE9mZnNldFRvcFBhcmVudChlbGVtZW50Lm9mZnNldFBhcmVudCBhcyBIVE1MRWxlbWVudCk7XG4gICAgICAgIGxldCBvZmZzZXQgPSBlbGVtZW50Lm9mZnNldFRvcDtcbiAgICAgICAgcmV0dXJuIHBhcmVudFZhbHVlICsgb2Zmc2V0O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENhY2x1bGF0ZSBTY3JvbGxiYXJzIGluc2lkZSB0cmVlXG4gICAgICogQHBhcmFtIGVsZW1lbnQgSFRNTCBFbGVtZW50XG4gICAgICogQHBhcmFtIFtpc0ZpeGVkPWZhbHNlXSBJbnZlcnQgU2Nyb2xsIFBvc2l0aW9uIHZhbHVlIHdoZW4gc3R5bGUgaXMgZml4ZWQgdG8gcHJlc2VydmUgbmVnYXRpdmUgdmFsdWVzXG4gICAgICogQHJldHVybnMgU2Nyb2xsIHRvcCB2YWx1ZSBvZiBlbGVtZW50IHdpdGggYWxsIGNoaWxkc1xuICAgICAqL1xuICAgIHByaXZhdGUgZ2V0U2Nyb2xsVG9wUGFyZW50KGVsZW1lbnQ6IEhUTUxFbGVtZW50LCBpc0ZpeGVkID0gZmFsc2UpOiBudW1iZXIge1xuICAgICAgICBpZiAoZWxlbWVudCA9PT0gbnVsbCkge1xuICAgICAgICAgICAgcmV0dXJuIDA7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBCb2R5IFNjcm9sbCBzaG91bGQgbm90IGJlIGNhbGN1bGF0ZWRcbiAgICAgICAgaWYgKCFlbGVtZW50LnBhcmVudEVsZW1lbnQpIHtcbiAgICAgICAgICAgIHJldHVybiBpc0ZpeGVkID8gZWxlbWVudC5zY3JvbGxUb3AgOiAwO1xuICAgICAgICB9XG5cbiAgICAgICAgbGV0IGlzQ3VycmVudEZpeGVkID0gZmFsc2U7XG4gICAgICAgIGlmICh3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZShlbGVtZW50KS5nZXRQcm9wZXJ0eVZhbHVlKCdwb3NpdGlvbicpID09PSAnZml4ZWQnKSB7XG4gICAgICAgICAgICBpc0N1cnJlbnRGaXhlZCA9IHRydWU7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBwYXJlbnRWYWx1ZSA9IHRoaXMuZ2V0U2Nyb2xsVG9wUGFyZW50KGVsZW1lbnQucGFyZW50RWxlbWVudCwgaXNGaXhlZCB8fCBpc0N1cnJlbnRGaXhlZCk7XG5cbiAgICAgICAgaWYgKGlzRml4ZWQpIHtcbiAgICAgICAgICAgIHJldHVybiBwYXJlbnRWYWx1ZSArIGVsZW1lbnQuc2Nyb2xsVG9wO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIHBhcmVudFZhbHVlICsgZWxlbWVudC5zY3JvbGxUb3AgKiAtMTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8vICNlbmRyZWdpb24gUHJpdmF0ZSBNZXRob2RzXG59XG4iXSwibWFwcGluZ3MiOiJ5OHJEQWtCWTtBQUFBQSxjQUFBLFNBQUFBLENBQUEsU0FBQUMsY0FBQSxXQUFBQSxjQUFBLEVBQUFELGNBQUEsR0FsQlosT0FBU0UsZUFBZSxLQUFRLFNBQVMsQ0FHekMsTUFBTSxNQUFPLENBQUFDLFdBQVcsQ0FDcEI7QUFFT0Msa0JBQWtCQSxDQUFDQyxrQkFBMkMsQ0FBRUMsb0JBQTZCLEVBQUFOLGNBQUEsR0FBQU8sQ0FBQSxLQUFBUCxDQUFBLGlCQUFBUSxDQUFBLE1BQ2hHLEdBQUlILGtCQUFrQixDQUFFLENBQUFMLGNBQUEsR0FBQVMsQ0FBQSxRQUFBVCxDQUFBLGlCQUFBUSxDQUFBLE1BQ3BCLE1BQU8sQ0FBQUYsb0JBQW9CLEVBQUFOLGNBQUEsR0FBQVMsQ0FBQSxTQUNyQkosa0JBQWtCLENBQUNLLGFBQWEsQ0FBQ0MsaUJBQWlCLENBQUNDLFlBQVksR0FBQVosY0FBQSxHQUFBUyxDQUFBLFNBQy9ESixrQkFBa0IsQ0FBQ0ssYUFBYSxDQUFDRyxZQUFZLEUsQ0FDdEQsSUFBTSxDQUFBYixjQUFBLEdBQUFTLENBQUEsUUFBQVQsQ0FBQSxpQkFBQVEsQ0FBQSxNQUNILE1BQU8sRUFBQyxDLENBRWhCLENBRU9NLGlCQUFpQkEsQ0FBQ1Qsa0JBQTJDLENBQUVDLG9CQUE2QixFQUFBTixjQUFBLEdBQUFPLENBQUEsS0FBQVAsQ0FBQSxpQkFBQVEsQ0FBQSxNQUMvRixHQUFJSCxrQkFBa0IsQ0FBRSxDQUFBTCxjQUFBLEdBQUFTLENBQUEsUUFBQVQsQ0FBQSxpQkFBQVEsQ0FBQSxNQUNwQixNQUFPLENBQUFGLG9CQUFvQixF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
|