diff options
author | Christopher Ng <chrng8@gmail.com> | 2024-05-17 10:15:46 -0700 |
---|---|---|
committer | Christopher Ng <chrng8@gmail.com> | 2024-05-17 10:15:46 -0700 |
commit | 9f3b892f0c97f23ecac42818442eec1bde1e651e (patch) | |
tree | 2ffdc28a14901a75cc4ad7d2cc03c19319e35462 /dist | |
parent | 6815d5b8aa06bde8b1ab4fc26630f7c471b4a2d4 (diff) | |
download | nextcloud-server-9f3b892f0c97f23ecac42818442eec1bde1e651e.tar.gz nextcloud-server-9f3b892f0c97f23ecac42818442eec1bde1e651e.zip |
chore: compile assets
Signed-off-by: Christopher Ng <chrng8@gmail.com>
Diffstat (limited to 'dist')
-rw-r--r-- | dist/core-login.js | 6 | ||||
-rw-r--r-- | dist/core-login.js.map | 2 | ||||
-rw-r--r-- | dist/settings-users-3239.js | 6 | ||||
-rw-r--r-- | dist/settings-users-3239.js.map | 2 | ||||
-rw-r--r-- | dist/settings-vue-settings-admin-sharing.js | 6 | ||||
-rw-r--r-- | dist/settings-vue-settings-admin-sharing.js.map | 2 | ||||
-rw-r--r-- | dist/settings-vue-settings-apps-users-management.js | 6 | ||||
-rw-r--r-- | dist/settings-vue-settings-apps-users-management.js.map | 2 |
8 files changed, 16 insertions, 16 deletions
diff --git a/dist/core-login.js b/dist/core-login.js index e6a3d28998d..1fbb0277594 100644 --- a/dist/core-login.js +++ b/dist/core-login.js @@ -1,3 +1,3 @@ -/*! For license information please see core-login.js.license?v=7b850c77098ac1082311 */ -(()=>{var e,r,i,s={92933:(e,r,i)=>{"use strict";var s={};i.r(s),i.d(s,{exclude:()=>Wt,extract:()=>Mt,parse:()=>zt,parseUrl:()=>Ht,pick:()=>Vt,stringify:()=>$t,stringifyUrl:()=>qt});var o=i(85471),a=i(61338),l=i(4523),c=i(74692),u=i.n(c),d=i(85168),h=i(96763);const f={updatableNotification:null,getDefaultNotificationFunction:null,setDefault(t){this.getDefaultNotificationFunction=t},hide(t,e){l.default.isFunction(t)&&(e=t,t=void 0),t?(t.each((function(){u()(this)[0].toastify?u()(this)[0].toastify.hideToast():h.error("cannot hide toast because object is not set"),this===this.updatableNotification&&(this.updatableNotification=null)})),e&&e.call(),this.getDefaultNotificationFunction&&this.getDefaultNotificationFunction()):h.error("Missing argument $row in OC.Notification.hide() call, caller needs to be adjusted to only dismiss its own notification")},showHtml(t,e){(e=e||{}).isHTML=!0,e.timeout=e.timeout?e.timeout:d.DH;const n=(0,d.rG)(t,e);return n.toastElement.toastify=n,u()(n.toastElement)},show(t,e){(e=e||{}).timeout=e.timeout?e.timeout:d.DH;const n=(0,d.rG)(function(t){return t.toString().split("&").join("&").split("<").join("<").split(">").join(">").split('"').join(""").split("'").join("'")}(t),e);return n.toastElement.toastify=n,u()(n.toastElement)},showUpdate(t){return this.updatableNotification&&this.updatableNotification.hideToast(),this.updatableNotification=(0,d.rG)(t,{timeout:d.DH}),this.updatableNotification.toastElement.toastify=this.updatableNotification,u()(this.updatableNotification.toastElement)},showTemporary(t,e){(e=e||{}).timeout=e.timeout||d.aR;const n=(0,d.rG)(t,e);return n.toastElement.toastify=n,u()(n.toastElement)},isHidden:()=>!u()("#content").find(".toastify").length},p=l.default.throttle((()=>{f.showTemporary(t("core","Connection to server lost"))}),7e3,{trailing:!1});let m=!1;const g={enableDynamicSlideToggle(){m=!0},showAppSidebar:function(t){(t||u()("#app-sidebar")).removeClass("disappear").show(),u()("#app-content").trigger(new(u().Event)("appresized"))},hideAppSidebar:function(t){(t||u()("#app-sidebar")).hide().addClass("disappear"),u()("#app-content").trigger(new(u().Event)("appresized"))}};var v=i(63814);function y(t,e,n){"post"!==t&&"delete"!==t||!At.PasswordConfirmation.requiresPasswordConfirmation()?(n=n||{},u().ajax({type:t.toUpperCase(),url:(0,v.KT)("apps/provisioning_api/api/v1/config/apps")+e,data:n.data||{},success:n.success,error:n.error})):At.PasswordConfirmation.requirePasswordConfirmation(_.bind(y,this,t,e,n))}const b=window.oc_appconfig||{},w={getValue:function(t,e,n,r){!function(t,e,n,r){(r=r||{}).data={defaultValue:n},y("get","/"+t+"/"+e,r)}(t,e,n,{success:r})},setValue:function(t,e,n){!function(t,e,n,r){(r=r||{}).data={value:n},y("post","/"+t+"/"+e,r)}(t,e,n)},getApps:function(t){!function(t){y("get","",t)}({success:t})},getKeys:function(t,e){!function(t,e){y("get","/"+t,e)}(t,{success:e})},deleteKey:function(t,e){!function(t,e,n){y("delete","/"+t+"/"+e,void 0)}(t,e)}},A=void 0!==window._oc_appswebroots&&window._oc_appswebroots;var x=i(21391),C=i.n(x),k=i(78112),N=i(96763);const E={create:"POST",update:"PROPPATCH",patch:"PROPPATCH",delete:"DELETE",read:"PROPFIND"};function P(t,e){if(l.default.isArray(t))return l.default.map(t,(function(t){return P(t,e)}));var n={href:t.href};return l.default.each(t.propStat,(function(t){if("HTTP/1.1 200 OK"===t.status)for(var r in t.properties){var i=r;r in e&&(i=e[r]),n[i]=t.properties[r]}})),n.id||(n.id=T(n.href)),n}function T(t){var e=t.indexOf("?");e>0&&(t=t.substr(0,e));var n,r=t.split("/");do{n=r[r.length-1],r.pop()}while(!n&&r.length>0);return n}function j(t){return t>=200&&t<=299}function S(t,e,n,r){return t.propPatch(e.url,function(t,e){var n,r={};for(n in t){var i=e[n],s=t[n];i||(N.warn('No matching DAV property for property "'+n),i=n),(l.default.isBoolean(s)||l.default.isNumber(s))&&(s=""+s),r[i]=s}return r}(n.changed,e.davProperties),r).then((function(t){j(t.status)?l.default.isFunction(e.success)&&e.success(n.toJSON()):l.default.isFunction(e.error)&&e.error(t)}))}const O=C().noConflict();Object.assign(O,{davCall:(t,e)=>{var n=new k.dav.Client({baseUrl:t.url,xmlNamespaces:l.default.extend({"DAV:":"d","http://owncloud.org/ns":"oc"},t.xmlNamespaces||{})});n.resolveUrl=function(){return t.url};var r=l.default.extend({"X-Requested-With":"XMLHttpRequest",requesttoken:OC.requestToken},t.headers);return"PROPFIND"===t.type?function(t,e,n,r){return t.propFind(e.url,l.default.values(e.davProperties)||[],e.depth,r).then((function(t){if(j(t.status)){if(l.default.isFunction(e.success)){var n=l.default.invert(e.davProperties),r=P(t.body,n);e.depth>0&&r.shift(),e.success(r)}}else l.default.isFunction(e.error)&&e.error(t)}))}(n,t,0,r):"PROPPATCH"===t.type?S(n,t,e,r):"MKCOL"===t.type?function(t,e,n,r){return t.request(e.type,e.url,r,null).then((function(i){j(i.status)?S(t,e,n,r):l.default.isFunction(e.error)&&e.error(i)}))}(n,t,e,r):function(t,e,n,r){return r["Content-Type"]="application/json",t.request(e.type,e.url,r,e.data).then((function(t){if(j(t.status)){if(l.default.isFunction(e.success)){if("PUT"===e.type||"POST"===e.type||"MKCOL"===e.type){var r=t.body||n.toJSON(),i=t.xhr.getResponseHeader("Content-Location");return"POST"===e.type&&i&&(r.id=T(i)),void e.success(r)}if(207===t.status){var s=l.default.invert(e.davProperties);e.success(P(t.body,s))}else e.success(t.body)}}else l.default.isFunction(e.error)&&e.error(t)}))}(n,t,e,r)},davSync:(t=>(e,n,r)=>{var i={type:E[e]||e},s=n instanceof t.Collection;if("update"===e&&(n.hasInnerCollection?i.type="MKCOL":(n.usePUT||n.collection&&n.collection.usePUT)&&(i.type="PUT")),r.url||(i.url=l.default.result(n,"url")||function(){throw new Error('A "url" property or function must be specified')}()),null!=r.data||!n||"create"!==e&&"update"!==e&&"patch"!==e||(i.data=JSON.stringify(r.attrs||n.toJSON(r))),"PROPFIND"!==i.type&&(i.processData=!1),"PROPFIND"===i.type||"PROPPATCH"===i.type){var o=n.davProperties;!o&&n.model&&(o=n.model.prototype.davProperties),o&&(l.default.isFunction(o)?i.davProperties=o.call(n):i.davProperties=o),i.davProperties=l.default.extend(i.davProperties||{},r.davProperties),l.default.isUndefined(r.depth)&&(r.depth=s?1:0)}var a=r.error;r.error=function(t,e,n){r.textStatus=e,r.errorThrown=n,a&&a.call(r.context,t,e,n)};var c=r.xhr=t.davCall(l.default.extend(i,r),n);return n.trigger("request",n,c,r),c})(O)});const I=O;var R=i(71089);const L=window._oc_config||{},F=document.getElementsByTagName("head")[0].getAttribute("data-user"),B=document.getElementsByTagName("head")[0].getAttribute("data-user-displayname"),U=void 0!==F&&F;var D=i(39285),M=i(36882),z=i(53334),$=i(43627),H=i(96763);const q={YES_NO_BUTTONS:70,OK_BUTTONS:71,FILEPICKER_TYPE_CHOOSE:1,FILEPICKER_TYPE_MOVE:2,FILEPICKER_TYPE_COPY:3,FILEPICKER_TYPE_COPY_MOVE:4,FILEPICKER_TYPE_CUSTOM:5,alert:function(t,e,n,r){this.message(t,e,"alert",q.OK_BUTTON,n,r)},info:function(t,e,n,r){this.message(t,e,"info",q.OK_BUTTON,n,r)},confirm:function(t,e,n,r){return this.message(t,e,"notice",q.YES_NO_BUTTONS,n,r)},confirmDestructive:function(t,e){let n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:q.OK_BUTTONS,r=arguments.length>3&&void 0!==arguments[3]?arguments[3]:()=>{};return(new d.ik).setName(e).setText(t).setButtons(n===q.OK_BUTTONS?[{label:(0,z.Tl)("core","Yes"),type:"error",callback:()=>{r.clicked=!0,r(!0)}}]:q._getLegacyButtons(n,r)).build().show().then((()=>{r.clicked||r(!1)}))},confirmHtml:function(t,e,n,r){return(new d.ik).setName(e).setText("").setButtons([{label:(0,z.Tl)("core","No"),callback:()=>{}},{label:(0,z.Tl)("core","Yes"),type:"primary",callback:()=>{n.clicked=!0,n(!0)}}]).build().setHTML(t).show().then((()=>{n.clicked||n(!1)}))},prompt:function(t,e,n,r,s,a){return new Promise((r=>{(0,d.Ss)((0,o.$V)((()=>i.e(1642).then(i.bind(i,71642)))),{text:t,name:e,callback:n,inputName:s,isPassword:!!a},(function(){n(...arguments),r()}))}))},filepicker(t,e){let n=arguments.length>2&&void 0!==arguments[2]&&arguments[2],r=arguments.length>3&&void 0!==arguments[3]?arguments[3]:void 0,i=arguments.length>5&&void 0!==arguments[5]?arguments[5]:d.bh.Choose,s=arguments.length>6&&void 0!==arguments[6]?arguments[6]:void 0,o=arguments.length>7&&void 0!==arguments[7]?arguments[7]:void 0;const a=(t,e)=>{const r=t=>{const e=(null==t?void 0:t.root)||"";let n=(null==t?void 0:t.path)||"";return n.startsWith(e)&&(n=n.slice(e.length)||"/"),n};return n?n=>t(n.map(r),e):n=>t(r(n[0]),e)},l=(0,d.a1)(t);i===this.FILEPICKER_TYPE_CUSTOM?(o.buttons||[]).forEach((t=>{l.addButton({callback:a(e,t.type),label:t.text,type:t.defaultButton?"primary":"secondary"})})):l.setButtonFactory(((t,n)=>{var r,s;const o=[],l=(null==t||null===(r=t[0])||void 0===r||null===(r=r.attributes)||void 0===r?void 0:r.displayName)||(null==t||null===(s=t[0])||void 0===s?void 0:s.basename),c=l||(0,$.basename)(n);return i===d.bh.Choose&&o.push({callback:a(e,d.bh.Choose),label:l&&!this.multiSelect?(0,z.Tl)("core","Choose {file}",{file:l}):(0,z.Tl)("core","Choose"),type:"primary"}),i!==d.bh.CopyMove&&i!==d.bh.Copy||o.push({callback:a(e,d.bh.Copy),label:c?(0,z.Tl)("core","Copy to {target}",{target:c}):(0,z.Tl)("core","Copy"),type:"primary",icon:M}),i!==d.bh.Move&&i!==d.bh.CopyMove||o.push({callback:a(e,d.bh.Move),label:c?(0,z.Tl)("core","Move to {target}",{target:c}):(0,z.Tl)("core","Move"),type:i===d.bh.Move?"primary":"secondary",icon:D}),o})),r&&l.setMimeTypeFilter("string"==typeof r?[r]:r||[]),"function"==typeof(null==o?void 0:o.filter)&&l.setFilter((t=>o.filter((t=>{var e,n,r,i,s,o;return{id:t.fileid||null,path:t.path,mimetype:t.mime||null,mtime:(null===(e=t.mtime)||void 0===e?void 0:e.getTime())||null,permissions:t.permissions,name:(null===(n=t.attributes)||void 0===n?void 0:n.displayName)||t.basename,etag:(null===(r=t.attributes)||void 0===r?void 0:r.etag)||null,hasPreview:(null===(i=t.attributes)||void 0===i?void 0:i.hasPreview)||null,mountType:(null===(s=t.attributes)||void 0===s?void 0:s.mountType)||null,quotaAvailableBytes:(null===(o=t.attributes)||void 0===o?void 0:o.quotaAvailableBytes)||null,icon:null,sharePermissions:null}})(t)))),l.allowDirectories(!0===(null==o?void 0:o.allowDirectoryChooser)||(null==r?void 0:r.includes("httpd/unix-directory"))||!1).setMultiSelect(n).startAt(s).build().pick()},message:function(t,e,n,r){let i=arguments.length>4&&void 0!==arguments[4]?arguments[4]:()=>{},s=arguments.length>6?arguments[6]:void 0;const o=(new d.ik).setName(e).setText(s?"":t).setButtons(q._getLegacyButtons(r,i));switch(n){case"alert":o.setSeverity("warning");break;case"notice":o.setSeverity("info")}const a=o.build();return s&&a.setHTML(t),a.show().then((()=>{i._clicked||i(!1)}))},_getLegacyButtons(t,e){var n,r,i;const s=[];switch("object"==typeof t?t.type:t){case q.YES_NO_BUTTONS:s.push({label:null!==(n=null==t?void 0:t.cancel)&&void 0!==n?n:(0,z.Tl)("core","No"),callback:()=>{e._clicked=!0,e(!1)}}),s.push({label:null!==(r=null==t?void 0:t.confirm)&&void 0!==r?r:(0,z.Tl)("core","Yes"),type:"primary",callback:()=>{e._clicked=!0,e(!0)}});break;case q.OK_BUTTONS:s.push({label:null!==(i=null==t?void 0:t.confirm)&&void 0!==i?i:(0,z.Tl)("core","OK"),type:"primary",callback:()=>{e._clicked=!0,e(!0)}});break;default:H.error("Invalid call to OC.dialogs")}return s},_fileexistsshown:!1,fileexists:function(t,e,r,i){var s=this,o=new(u().Deferred),a=function(t,e,n,r,i){r=Math.round(r),i=Math.round(i);for(var s=t.getContext("2d").getImageData(0,0,e,n),o=t.getContext("2d").getImageData(0,0,r,i),a=s.data,l=o.data,c=e/r,u=n/i,d=Math.ceil(c/2),h=Math.ceil(u/2),f=0;f<i;f++)for(var p=0;p<r;p++){for(var m=4*(p+f*r),g=0,v=0,y=0,b=0,w=0,A=0,_=0,x=(f+.5)*u,C=Math.floor(f*u);C<(f+1)*u;C++)for(var k=Math.abs(x-(C+.5))/h,N=(p+.5)*c,E=k*k,P=Math.floor(p*c);P<(p+1)*c;P++){var T=Math.abs(N-(P+.5))/d,j=Math.sqrt(E+T*T);j>=-1&&j<=1&&(g=2*j*j*j-3*j*j+1)>0&&(_+=g*a[3+(T=4*(P+C*e))],y+=g,a[T+3]<255&&(g=g*a[T+3]/250),b+=g*a[T],w+=g*a[T+1],A+=g*a[T+2],v+=g)}l[m]=b/v,l[m+1]=w/v,l[m+2]=A/v,l[m+3]=_/y}t.getContext("2d").clearRect(0,0,Math.max(e,r),Math.max(n,i)),t.width=r,t.height=i,t.getContext("2d").putImageData(o,0,0)},l=function(e,n,r){var i=e.find(".template").clone().removeClass("template").addClass("conflict"),s=i.find(".original"),o=i.find(".replacement");i.data("data",t),i.find(".filename").text(n.name),s.find(".size").text(At.Util.humanFileSize(n.size)),s.find(".mtime").text(At.Util.formatDate(n.mtime)),r.size&&r.lastModified&&(o.find(".size").text(At.Util.humanFileSize(r.size)),o.find(".mtime").text(At.Util.formatDate(r.lastModified)));var l=n.directory+"/"+n.name,c={file:l,x:96,y:96,c:n.etag,forceIcon:0},d=Files.generatePreviewUrl(c);d=d.replace(/'/g,"%27"),s.find(".icon").css({"background-image":"url('"+d+"')"}),function(t){var e=new(u().Deferred),n=t.type&&t.type.split("/").shift();if(window.FileReader&&"image"===n){var r=new FileReader;r.onload=function(t){var n=new Blob([t.target.result]);window.URL=window.URL||window.webkitURL;var r=window.URL.createObjectURL(n),i=new Image;i.src=r,i.onload=function(){var t,n,r,s,o,l,c,u=(t=i,o=document.createElement("canvas"),l=t.width,c=t.height,l>c?(r=0,n=(l-c)/2):(r=(c-l)/2,n=0),s=Math.min(l,c),o.width=s,o.height=s,o.getContext("2d").drawImage(t,n,r,s,s,0,0,s,s),a(o,s,s,96,96),o.toDataURL("image/png",.7));e.resolve(u)}},r.readAsArrayBuffer(t)}else e.reject();return e}(r).then((function(t){o.find(".icon").css("background-image","url("+t+")")}),(function(){l=At.MimeType.getIconUrl(r.type),o.find(".icon").css("background-image","url("+l+")")}));var h=e.find(".conflict").length;s.find("input:checkbox").attr("id","checkbox_original_"+h),o.find("input:checkbox").attr("id","checkbox_replacement_"+h),e.append(i),r.lastModified>n.mtime?o.find(".mtime").css("font-weight","bold"):r.lastModified<n.mtime&&s.find(".mtime").css("font-weight","bold"),r.size&&r.size>n.size?o.find(".size").css("font-weight","bold"):r.size&&r.size<n.size&&s.find(".size").css("font-weight","bold"),"readonly"===n.status&&(s.addClass("readonly").find('input[type="checkbox"]').prop("checked",!0).prop("disabled",!0),s.find(".message").text((0,z.Tl)("core","read-only")))},c="oc-dialog-fileexists-content",d="#"+c;if(this._fileexistsshown){var h=u()(d+" .conflicts");l(h,e,r);var f=u()(d+" .conflict").length,p=n("core","{count} file conflict","{count} file conflicts",f,{count:f});u()(d).parent().children(".oc-dialog-title").text(p),u()(window).trigger("resize"),o.resolve()}else this._fileexistsshown=!0,u().when(this._getFileExistsTemplate()).then((function(n){var a=(0,z.Tl)("core","One file conflict"),h=n.octemplate({dialog_name:c,title:a,type:"fileexists",allnewfiles:(0,z.Tl)("core","New Files"),allexistingfiles:(0,z.Tl)("core","Already existing files"),why:(0,z.Tl)("core","Which files do you want to keep?"),what:(0,z.Tl)("core","If you select both versions, the copied file will have a number added to its name.")});if(u()("body").append(h),e&&r){var f=h.find(".conflicts");l(f,e,r)}var p=[{text:(0,z.Tl)("core","Cancel"),classes:"cancel",click:function(){void 0!==i.onCancel&&i.onCancel(t),u()(d).ocdialog("close")}},{text:(0,z.Tl)("core","Continue"),classes:"continue",click:function(){void 0!==i.onContinue&&i.onContinue(u()(d+" .conflict")),u()(d).ocdialog("close")}}];u()(d).ocdialog({width:500,closeOnEscape:!0,modal:!0,buttons:p,closeButton:null,close:function(){s._fileexistsshown=!1;try{u()(this).ocdialog("destroy").remove()}catch(t){}}}),u()(d).css("height","auto");var m=h.closest(".oc-dialog").find("button.continue");function g(){var t=h.find(".conflicts .checkbox:checked").length;m.prop("disabled",0===t)}m.prop("disabled",!0),u()(d).find(".allnewfiles").on("click",(function(){u()(d).find('.conflict .replacement input[type="checkbox"]').prop("checked",u()(this).prop("checked"))})),u()(d).find(".allexistingfiles").on("click",(function(){u()(d).find('.conflict .original:not(.readonly) input[type="checkbox"]').prop("checked",u()(this).prop("checked"))})),u()(d).find(".conflicts").on("click",".replacement,.original:not(.readonly)",(function(){var t=u()(this).find('input[type="checkbox"]');t.prop("checked",!t.prop("checked"))})),u()(d).find(".conflicts").on("click",'.replacement input[type="checkbox"],.original:not(.readonly) input[type="checkbox"]',(function(){var t=u()(this);t.prop("checked",!t.prop("checked"))})),u()(d).on("click",".replacement,.allnewfiles",(function(){var t=u()(d).find('.conflict .replacement input[type="checkbox"]:checked').length;t===u()(d+" .conflict").length?(u()(d).find(".allnewfiles").prop("checked",!0),u()(d).find(".allnewfiles + .count").text((0,z.Tl)("core","(all selected)"))):t>0?(u()(d).find(".allnewfiles").prop("checked",!1),u()(d).find(".allnewfiles + .count").text((0,z.Tl)("core","({count} selected)",{count:t}))):(u()(d).find(".allnewfiles").prop("checked",!1),u()(d).find(".allnewfiles + .count").text("")),g()})),u()(d).on("click",".original,.allexistingfiles",(function(){var t=u()(d).find('.conflict .original input[type="checkbox"]:checked').length;t===u()(d+" .conflict").length?(u()(d).find(".allexistingfiles").prop("checked",!0),u()(d).find(".allexistingfiles + .count").text((0,z.Tl)("core","(all selected)"))):t>0?(u()(d).find(".allexistingfiles").prop("checked",!1),u()(d).find(".allexistingfiles + .count").text((0,z.Tl)("core","({count} selected)",{count:t}))):(u()(d).find(".allexistingfiles").prop("checked",!1),u()(d).find(".allexistingfiles + .count").text("")),g()})),o.resolve()})).fail((function(){o.reject(),alert((0,z.Tl)("core","Error loading file exists template"))}));return o.promise()},_getFileExistsTemplate:function(){var t=u().Deferred();if(this.$fileexistsTemplate)t.resolve(this.$fileexistsTemplate);else{var e=this;u().get(At.filePath("files","templates","fileexists.html"),(function(n){e.$fileexistsTemplate=u()(n),t.resolve(e.$fileexistsTemplate)})).fail((function(){t.reject()}))}return t.promise()}},V=q,W=((t,e)=>{let n=t.getElementsByTagName("head")[0].getAttribute("data-requesttoken");return{getToken:()=>n,setToken:t=>{n=t,e("csrf-token-update",{token:n})}}})(document,a.Ic),K=W.getToken,Y=(W.setToken,function(t,e){var n,r,i="";if(this.typelessListeners=[],this.closed=!1,this.listeners={},e)for(n in e)i+=n+"="+encodeURIComponent(e[n])+"&";if(i+="requesttoken="+encodeURIComponent(K()),this.useFallBack||"undefined"==typeof EventSource){var s="oc_eventsource_iframe_"+Y.iframeCount;Y.fallBackSources[Y.iframeCount]=this,this.iframe=u()("<iframe></iframe>"),this.iframe.attr("id",s),this.iframe.hide(),r="&",-1===t.indexOf("?")&&(r="?"),this.iframe.attr("src",t+r+"fallback=true&fallback_id="+Y.iframeCount+"&"+i),u()("body").append(this.iframe),this.useFallBack=!0,Y.iframeCount++}else r="&",-1===t.indexOf("?")&&(r="?"),this.source=new EventSource(t+r+i),this.source.onmessage=function(t){for(var e=0;e<this.typelessListeners.length;e++)this.typelessListeners[e](JSON.parse(t.data))}.bind(this);this.listen("__internal__",function(t){"close"===t&&this.close()}.bind(this))});Y.fallBackSources=[],Y.iframeCount=0,Y.fallBackCallBack=function(t,e,n){Y.fallBackSources[t].fallBackCallBack(e,n)},Y.prototype={typelessListeners:[],iframe:null,listeners:{},useFallBack:!1,fallBackCallBack:function(t,e){var n;if(!this.closed)if(t){if(void 0!==this.listeners.done)for(n=0;n<this.listeners[t].length;n++)this.listeners[t][n](e)}else for(n=0;n<this.typelessListeners.length;n++)this.typelessListeners[n](e)},lastLength:0,listen:function(t,e){e&&e.call&&(t?this.useFallBack?(this.listeners[t]||(this.listeners[t]=[]),this.listeners[t].push(e)):this.source.addEventListener(t,(function(t){void 0!==t.data?e(JSON.parse(t.data)):e("")}),!1):this.typelessListeners.push(e))},close:function(){this.closed=!0,void 0!==this.source&&this.source.close()}};const G=Y;var J=i(87485),X=i(96763);let Q=null,Z=null;const tt=function(t){if(Q){const e=Q;Q.trigger(new(u().Event)("beforeHide")),Q.slideUp(50,(function(){e.trigger(new(u().Event)("afterHide")),t&&t.apply(this,arguments)}))}u()(".menutoggle").attr("aria-expanded",!1),Z&&Z.attr("aria-expanded",!1),u()(".openedMenu").removeClass("openedMenu"),Q=null,Z=null},et=!!window._oc_isadmin;var nt=i(93633),rt=i.n(nt);const it={load:z.Zi,register:z.kz,_unregister:z.ht,translate:z.Tl,translatePlural:z.zw};rt().registerHelper("t",(function(t,e){return(0,z.Tl)(t,e)}));const st={startSaving(e){this.startAction(e,t("core","Saving …"))},startAction(t,e){u()(t).text(e).removeClass("success").removeClass("error").stop(!0,!0).show()},finishedSaving(t,e){this.finishedAction(t,e)},finishedAction(t,e){"success"===e.status?this.finishedSuccess(t,e.data.message):this.finishedError(t,e.data.message)},finishedSuccess(t,e){u()(t).text(e).addClass("success").removeClass("error").stop(!0,!0).delay(3e3).fadeOut(900).show()},finishedError(t,e){u()(t).text(e).addClass("error").removeClass("success").show()}};var ot=i(56760);i(51257);const at={requiresPasswordConfirmation:()=>(0,ot.o)(),requirePasswordConfirmation(t,e,n){(0,ot.C)().then(t,n)}},lt={_plugins:{},register(t,e){let n=this._plugins[t];n||(n=this._plugins[t]=[]),n.push(e)},getPlugins(t){return this._plugins[t]||[]},attach(t,e,n){const r=this.getPlugins(t);for(let t=0;t<r.length;t++)r[t].attach&&r[t].attach(e,n)},detach(t,e,n){const r=this.getPlugins(t);for(let t=0;t<r.length;t++)r[t].detach&&r[t].detach(e,n)}},ct=window._theme||{};var ut=i(95093),dt=i.n(ut);const ht={_handlers:[],_pushState(t,e,n){let r;if(r="string"==typeof t?t:At.buildQueryString(t),window.history.pushState){if(e=e||location.pathname+"?"+r,navigator.userAgent.toLowerCase().indexOf("firefox")>-1&&parseInt(navigator.userAgent.split("/").pop())<51){const t=document.querySelectorAll('[fill^="url(#"], [stroke^="url(#"], [filter^="url(#invert"]');for(let e,n=0,r=t.length;n<r;n++)e=t[n],e.style.fill=e.style.fill,e.style.stroke=e.style.stroke,e.removeAttribute("filter"),e.setAttribute("filter","url(#invert)")}n?window.history.replaceState(t,"",e):window.history.pushState(t,"",e)}else window.location.hash="?"+r,this._cancelPop=!0},pushState(t,e){this._pushState(t,e,!1)},replaceState(t,e){this._pushState(t,e,!0)},addOnPopStateHandler(t){this._handlers.push(t)},_parseHashQuery(){const t=window.location.hash,e=t.indexOf("?");return e>=0?t.substr(e+1):t.length?t.substr(1):""},_decodeQuery:t=>t.replace(/\+/g," "),parseUrlQuery(){const t=this._parseHashQuery();let e;return t&&(e=At.parseQueryString(this._decodeQuery(t))),e=l.default.extend(e||{},At.parseQueryString(this._decodeQuery(location.search))),e||{}},_onPopState(t){if(this._cancelPop)return void(this._cancelPop=!1);let e;if(this._handlers.length){e=t&&t.state,l.default.isString(e)?e=At.parseQueryString(e):e||(e=this.parseUrlQuery()||{});for(let t=0;t<this._handlers.length;t++)this._handlers[t](e)}}};var ft=i(35810),pt=i(96763);function mt(t){const e=[];let n,r=0,i=-1,s=0;for(;r<t.length;){n=t.charAt(r);const o=!s&&"."===n||n>="0"&&n<="9";o!==s&&(i++,e[i]="",s=o),e[i]+=n,r++}return e}const gt={History:ht,humanFileSize:ft.v7,computerFileSize(t){if("string"!=typeof t)return null;const e=t.toLowerCase().trim();let n=null;const r=e.match(/^[\s+]?([0-9]*)(\.([0-9]+))?( +)?([kmgtp]?b?)$/i);return null===r?null:(n=parseFloat(e),isFinite(n)?(r[5]&&(n*={b:1,k:1024,kb:1024,mb:1048576,m:1048576,gb:1073741824,g:1073741824,tb:1099511627776,t:1099511627776,pb:0x4000000000000,p:0x4000000000000}[r[5]]),n=Math.round(n),n):null)},formatDate:(t,e)=>(void 0===window.TESTING&&At.debug&&pt.warn("OC.Util.formatDate is deprecated and will be removed in Nextcloud 21. See @nextcloud/moment"),e=e||"LLL",dt()(t).format(e)),relativeModifiedDate(e){void 0===window.TESTING&&At.debug&&pt.warn("OC.Util.relativeModifiedDate is deprecated and will be removed in Nextcloud 21. See @nextcloud/moment");const n=dt()().diff(dt()(e));return n>=0&&n<45e3?t("core","seconds ago"):dt()(e).fromNow()},getScrollBarWidth(){if(this._scrollBarWidth)return this._scrollBarWidth;const t=document.createElement("p");t.style.width="100%",t.style.height="200px";const e=document.createElement("div");e.style.position="absolute",e.style.top="0px",e.style.left="0px",e.style.visibility="hidden",e.style.width="200px",e.style.height="150px",e.style.overflow="hidden",e.appendChild(t),document.body.appendChild(e);const n=t.offsetWidth;e.style.overflow="scroll";let r=t.offsetWidth;return n===r&&(r=e.clientWidth),document.body.removeChild(e),this._scrollBarWidth=n-r,this._scrollBarWidth},stripTime:t=>new Date(t.getFullYear(),t.getMonth(),t.getDate()),naturalSortCompare(t,e){let n;const r=mt(t),i=mt(e);for(n=0;r[n]&&i[n];n++)if(r[n]!==i[n]){const t=Number(r[n]),e=Number(i[n]);return t==r[n]&&e==i[n]?t-e:r[n].localeCompare(i[n],At.getLanguage())}return r.length-i.length},waitFor(t,e){const n=function(){!0!==t()&&setTimeout(n,e)};n()},isCookieSetToValue(t,e){const n=document.cookie.split(";");for(let r=0;r<n.length;r++){const i=n[r].split("=");if(i[0].trim()===t&&i[1].trim()===e)return!0}return!1}},vt=window._oc_debug;let yt=window._oc_webroot;if(void 0===yt){yt=location.pathname;const t=yt.indexOf("/index.php/");yt=-1!==t?yt.substr(0,t):yt.substr(0,yt.lastIndexOf("/"))}const bt=yt;var wt=i(96763);const At={coreApps:["","admin","log","core/search","core","3rdparty"],menuSpeed:50,PERMISSION_ALL:31,PERMISSION_CREATE:4,PERMISSION_DELETE:8,PERMISSION_NONE:0,PERMISSION_READ:1,PERMISSION_SHARE:16,PERMISSION_UPDATE:2,TAG_FAVORITE:"_$!<Favorite>!$_",fileIsBlacklisted:t=>!!t.match(L.blacklist_files_regex),Apps:g,AppConfig:w,appConfig:b,appswebroots:A,Backbone:I,config:L,currentUser:U,dialogs:V,EventSource:G,getCurrentUser:()=>({uid:U,displayName:B}),isUserAdmin:()=>et,L10N:it,_ajaxConnectionLostHandler:p,_processAjaxError:t=>{(0!==t.status||"abort"!==t.statusText&&"timeout"!==t.statusText&&!At._reloadCalled)&&(l.default.contains([302,303,307,401],t.status)&&At.currentUser?setTimeout((function(){if(!At._userIsNavigatingAway&&!At._reloadCalled){let t=0;const e=5,r=setInterval((function(){f.showUpdate(n("core","Problem loading page, reloading in %n second","Problem loading page, reloading in %n seconds",e-t)),t>=e&&(clearInterval(r),At.reload()),t++}),1e3);At._reloadCalled=!0}}),100):0===t.status&&setTimeout((function(){At._userIsNavigatingAway||At._reloadCalled||At._ajaxConnectionLostHandler()}),100))},registerXHRForErrorProcessing:t=>{t.addEventListener&&(t.addEventListener("load",(()=>{4===t.readyState&&(t.status>=200&&t.status<300||304===t.status||u()(document).trigger(new(u().Event)("ajaxError"),t))})),t.addEventListener("error",(()=>{u()(document).trigger(new(u().Event)("ajaxError"),t)})))},getCapabilities:()=>(OC.debug&&X.warn("OC.getCapabilities is deprecated and will be removed in Nextcloud 21. See @nextcloud/capabilities"),(0,J.F)()),hideMenus:tt,registerMenu:function(t,e,n,r){e.addClass("menu");const i="A"===t.prop("tagName")||"BUTTON"===t.prop("tagName");t.on(i?"click.menu":"click.menu keyup.menu",(function(i){i.preventDefault(),i.key&&"Enter"!==i.key||(e.is(Q)?tt():(Q&&tt(),!0===r&&e.parent().addClass("openedMenu"),t.attr("aria-expanded",!0),e.slideToggle(50,n),Q=e,Z=t))}))},showMenu:(t,e,n)=>{e.is(Q)||(tt(),Q=e,Z=t,e.trigger(new(u().Event)("beforeShow")),e.show(),e.trigger(new(u().Event)("afterShow")),l.default.isFunction(n)&&n())},unregisterMenu:(t,e)=>{e.is(Q)&&tt(),t.off("click.menu").removeClass("menutoggle"),e.removeClass("menu")},basename:R.P8,encodePath:R.O0,dirname:R.pD,isSamePath:R.ys,joinPaths:R.HS,getHost:()=>window.location.host,getHostName:()=>window.location.hostname,getPort:()=>window.location.port,getProtocol:()=>window.location.protocol.split(":")[0],getCanonicalLocale:z.lO,getLocale:z.JK,getLanguage:z.Z0,buildQueryString:t=>t?u().map(t,(function(t,e){let n=encodeURIComponent(e);return null!=t&&(n+="="+encodeURIComponent(t)),n})).join("&"):"",parseQueryString:t=>{let e,n;const r={};let i;if(!t)return null;e=t.indexOf("?"),e>=0&&(t=t.substr(e+1));const s=t.replace(/\+/g,"%20").split("&");for(let t=0;t<s.length;t++){const o=s[t];e=o.indexOf("="),n=e>=0?[o.substr(0,e),o.substr(e+1)]:[o],n.length&&(i=decodeURIComponent(n[0]),i&&(r[i]=n.length>1?decodeURIComponent(n[1]):null))}return r},msg:st,Notification:f,PasswordConfirmation:at,Plugins:lt,theme:ct,Util:gt,debug:vt,filePath:v.fg,generateUrl:v.Jv,get:(_t=window,t=>{const e=t.split("."),n=e.pop();for(let t=0;t<e.length;t++)if(!(_t=_t[e[t]]))return!1;return _t[n]}),set:(t=>(e,n)=>{const r=e.split("."),i=r.pop();for(let e=0;e<r.length;e++)t[r[e]]||(t[r[e]]={}),t=t[r[e]];return t[i]=n,n})(window),getRootPath:v.aU,imagePath:v.d0,redirect:t=>{window.location=t},reload:()=>{window.location.reload()},requestToken:K(),linkTo:v.uM,linkToOCS:(t,e)=>(0,v.KT)(t,{},{ocsVersion:e||1})+"/",linkToRemote:v.dC,linkToRemoteBase:t=>(0,v.aU)()+"/remote.php/"+t,webroot:bt};var _t;(0,a.B1)("csrf-token-update",(t=>{OC.requestToken=t.token,wt.info("OC.requestToken changed",t.token)}));var xt=i(38613);const Ct="%[a-f0-9]{2}",kt=new RegExp("("+Ct+")|([^%]+?)","gi"),Nt=new RegExp("("+Ct+")+","gi");function Et(t,e){try{return[decodeURIComponent(t.join(""))]}catch{}if(1===t.length)return t;e=e||1;const n=t.slice(0,e),r=t.slice(e);return Array.prototype.concat.call([],Et(n),Et(r))}function Pt(t){try{return decodeURIComponent(t)}catch{let e=t.match(kt)||[];for(let n=1;n<e.length;n++)e=(t=Et(e,n).join("")).match(kt)||[];return t}}function Tt(t,e){if("string"!=typeof t||"string"!=typeof e)throw new TypeError("Expected the arguments to be of type `string`");if(""===t||""===e)return[];const n=t.indexOf(e);return-1===n?[]:[t.slice(0,n),t.slice(n+e.length)]}function jt(t,e){const n={};if(Array.isArray(e))for(const r of e){const e=Object.getOwnPropertyDescriptor(t,r);e?.enumerable&&Object.defineProperty(n,r,e)}else for(const r of Reflect.ownKeys(t)){const i=Object.getOwnPropertyDescriptor(t,r);i.enumerable&&e(r,t[r],t)&&Object.defineProperty(n,r,i)}return n}const St=t=>null==t,Ot=t=>encodeURIComponent(t).replaceAll(/[!'()*]/g,(t=>`%${t.charCodeAt(0).toString(16).toUpperCase()}`)),It=Symbol("encodeFragmentIdentifier");function Rt(t){if("string"!=typeof t||1!==t.length)throw new TypeError("arrayFormatSeparator must be single character string")}function Lt(t,e){return e.encode?e.strict?Ot(t):encodeURIComponent(t):t}function Ft(t,e){return e.decode?function(t){if("string"!=typeof t)throw new TypeError("Expected `encodedURI` to be of type `string`, got `"+typeof t+"`");try{return decodeURIComponent(t)}catch{return function(t){const e={"%FE%FF":"��","%FF%FE":"��"};let n=Nt.exec(t);for(;n;){try{e[n[0]]=decodeURIComponent(n[0])}catch{const t=Pt(n[0]);t!==n[0]&&(e[n[0]]=t)}n=Nt.exec(t)}e["%C2"]="�";const r=Object.keys(e);for(const n of r)t=t.replace(new RegExp(n,"g"),e[n]);return t}(t)}}(t):t}function Bt(t){return Array.isArray(t)?t.sort():"object"==typeof t?Bt(Object.keys(t)).sort(((t,e)=>Number(t)-Number(e))).map((e=>t[e])):t}function Ut(t){const e=t.indexOf("#");return-1!==e&&(t=t.slice(0,e)),t}function Dt(t,e){return e.parseNumbers&&!Number.isNaN(Number(t))&&"string"==typeof t&&""!==t.trim()?t=Number(t):!e.parseBooleans||null===t||"true"!==t.toLowerCase()&&"false"!==t.toLowerCase()||(t="true"===t.toLowerCase()),t}function Mt(t){const e=(t=Ut(t)).indexOf("?");return-1===e?"":t.slice(e+1)}function zt(t,e){Rt((e={decode:!0,sort:!0,arrayFormat:"none",arrayFormatSeparator:",",parseNumbers:!1,parseBooleans:!1,...e}).arrayFormatSeparator);const n=function(t){let e;switch(t.arrayFormat){case"index":return(t,n,r)=>{e=/\[(\d*)]$/.exec(t),t=t.replace(/\[\d*]$/,""),e?(void 0===r[t]&&(r[t]={}),r[t][e[1]]=n):r[t]=n};case"bracket":return(t,n,r)=>{e=/(\[])$/.exec(t),t=t.replace(/\[]$/,""),e?void 0!==r[t]?r[t]=[...r[t],n]:r[t]=[n]:r[t]=n};case"colon-list-separator":return(t,n,r)=>{e=/(:list)$/.exec(t),t=t.replace(/:list$/,""),e?void 0!==r[t]?r[t]=[...r[t],n]:r[t]=[n]:r[t]=n};case"comma":case"separator":return(e,n,r)=>{const i="string"==typeof n&&n.includes(t.arrayFormatSeparator),s="string"==typeof n&&!i&&Ft(n,t).includes(t.arrayFormatSeparator);n=s?Ft(n,t):n;const o=i||s?n.split(t.arrayFormatSeparator).map((e=>Ft(e,t))):null===n?n:Ft(n,t);r[e]=o};case"bracket-separator":return(e,n,r)=>{const i=/(\[])$/.test(e);if(e=e.replace(/\[]$/,""),!i)return void(r[e]=n?Ft(n,t):n);const s=null===n?[]:n.split(t.arrayFormatSeparator).map((e=>Ft(e,t)));void 0!==r[e]?r[e]=[...r[e],...s]:r[e]=s};default:return(t,e,n)=>{void 0!==n[t]?n[t]=[...[n[t]].flat(),e]:n[t]=e}}}(e),r=Object.create(null);if("string"!=typeof t)return r;if(!(t=t.trim().replace(/^[?#&]/,"")))return r;for(const i of t.split("&")){if(""===i)continue;const t=e.decode?i.replaceAll("+"," "):i;let[s,o]=Tt(t,"=");void 0===s&&(s=t),o=void 0===o?null:["comma","separator","bracket-separator"].includes(e.arrayFormat)?o:Ft(o,e),n(Ft(s,e),o,r)}for(const[t,n]of Object.entries(r))if("object"==typeof n&&null!==n)for(const[t,r]of Object.entries(n))n[t]=Dt(r,e);else r[t]=Dt(n,e);return!1===e.sort?r:(!0===e.sort?Object.keys(r).sort():Object.keys(r).sort(e.sort)).reduce(((t,e)=>{const n=r[e];return t[e]=Boolean(n)&&"object"==typeof n&&!Array.isArray(n)?Bt(n):n,t}),Object.create(null))}function $t(t,e){if(!t)return"";Rt((e={encode:!0,strict:!0,arrayFormat:"none",arrayFormatSeparator:",",...e}).arrayFormatSeparator);const n=n=>e.skipNull&&St(t[n])||e.skipEmptyString&&""===t[n],r=function(t){switch(t.arrayFormat){case"index":return e=>(n,r)=>{const i=n.length;return void 0===r||t.skipNull&&null===r||t.skipEmptyString&&""===r?n:null===r?[...n,[Lt(e,t),"[",i,"]"].join("")]:[...n,[Lt(e,t),"[",Lt(i,t),"]=",Lt(r,t)].join("")]};case"bracket":return e=>(n,r)=>void 0===r||t.skipNull&&null===r||t.skipEmptyString&&""===r?n:null===r?[...n,[Lt(e,t),"[]"].join("")]:[...n,[Lt(e,t),"[]=",Lt(r,t)].join("")];case"colon-list-separator":return e=>(n,r)=>void 0===r||t.skipNull&&null===r||t.skipEmptyString&&""===r?n:null===r?[...n,[Lt(e,t),":list="].join("")]:[...n,[Lt(e,t),":list=",Lt(r,t)].join("")];case"comma":case"separator":case"bracket-separator":{const e="bracket-separator"===t.arrayFormat?"[]=":"=";return n=>(r,i)=>void 0===i||t.skipNull&&null===i||t.skipEmptyString&&""===i?r:(i=null===i?"":i,0===r.length?[[Lt(n,t),e,Lt(i,t)].join("")]:[[r,Lt(i,t)].join(t.arrayFormatSeparator)])}default:return e=>(n,r)=>void 0===r||t.skipNull&&null===r||t.skipEmptyString&&""===r?n:null===r?[...n,Lt(e,t)]:[...n,[Lt(e,t),"=",Lt(r,t)].join("")]}}(e),i={};for(const[e,r]of Object.entries(t))n(e)||(i[e]=r);const s=Object.keys(i);return!1!==e.sort&&s.sort(e.sort),s.map((n=>{const i=t[n];return void 0===i?"":null===i?Lt(n,e):Array.isArray(i)?0===i.length&&"bracket-separator"===e.arrayFormat?Lt(n,e)+"[]":i.reduce(r(n),[]).join("&"):Lt(n,e)+"="+Lt(i,e)})).filter((t=>t.length>0)).join("&")}function Ht(t,e){e={decode:!0,...e};let[n,r]=Tt(t,"#");return void 0===n&&(n=t),{url:n?.split("?")?.[0]??"",query:zt(Mt(t),e),...e&&e.parseFragmentIdentifier&&r?{fragmentIdentifier:Ft(r,e)}:{}}}function qt(t,e){e={encode:!0,strict:!0,[It]:!0,...e};const n=Ut(t.url).split("?")[0]||"";let r=$t({...zt(Mt(t.url),{sort:!1}),...t.query},e);r&&=`?${r}`;let i=function(t){let e="";const n=t.indexOf("#");return-1!==n&&(e=t.slice(n)),e}(t.url);if("string"==typeof t.fragmentIdentifier){const r=new URL(n);r.hash=t.fragmentIdentifier,i=e[It]?r.hash:`#${t.fragmentIdentifier}`}return`${n}${r}${i}`}function Vt(t,e,n){n={parseFragmentIdentifier:!0,[It]:!1,...n};const{url:r,query:i,fragmentIdentifier:s}=Ht(t,n);return qt({url:r,query:jt(i,e),fragmentIdentifier:s},n)}function Wt(t,e,n){return Vt(t,Array.isArray(e)?t=>!e.includes(t):(t,n)=>!e(t,n),n)}const Kt=s;var Yt=i(17334),Gt=i(16044),Jt=i(82182),Xt=i(48934);const Qt={computed:{userNameInputLengthIs255(){return this.user.length>=255},userInputHelperText(){if(this.userNameInputLengthIs255)return t("core","Email length is at max (255)")}}};var Zt=i(9518);const te={name:"LoginButton",components:{ArrowRight:i(9191).A,NcButton:Zt.A},props:{value:{type:String,default:(0,z.Tl)("core","Log in")},valueLoading:{type:String,default:(0,z.Tl)("core","Logging in …")},loading:{type:Boolean,required:!0},invertedColors:{type:Boolean,default:!1}}};var ee=i(85072),ne=i.n(ee),re=i(97825),ie=i.n(re),se=i(77659),oe=i.n(se),ae=i(55056),le=i.n(ae),ce=i(10540),ue=i.n(ce),de=i(41113),he=i.n(de),fe=i(13020),pe={};pe.styleTagTransform=he(),pe.setAttributes=le(),pe.insert=oe().bind(null,"head"),pe.domAPI=ie(),pe.insertStyleElement=ue(),ne()(fe.A,pe),fe.A&&fe.A.locals&&fe.A.locals;var me=i(14486);const ge=(0,me.A)(te,(function(){var t=this,e=t._self._c;return e("NcButton",{attrs:{type:"primary","native-type":"submit",wide:!0},on:{click:function(e){return t.$emit("click")}},scopedSlots:t._u([{key:"icon",fn:function(){return[t.loading?e("div",{staticClass:"submit-wrapper__icon icon-loading-small-dark"}):e("ArrowRight",{staticClass:"submit-wrapper__icon"})]},proxy:!0}])},[t._v("\n\t"+t._s(t.loading?t.valueLoading:t.value)+"\n\t")])}),[],!1,null,"d2cd6448",null).exports,ve={name:"LoginForm",components:{LoginButton:ge,NcPasswordField:Gt.A,NcTextField:Jt.A,NcNoteCard:Xt.A},mixins:[Qt],props:{username:{type:String,default:""},redirectUrl:{type:[String,Boolean],default:!1},errors:{type:Array,default:()=>[]},messages:{type:Array,default:()=>[]},throttleDelay:{type:Number,default:0},autoCompleteAllowed:{type:Boolean,default:!0},directLogin:{type:Boolean,default:!1},emailStates:{type:Array,default:()=>[]}},setup(){var t;return{t:z.Tl,headlineText:(0,z.Tl)("core","Log in to {productName}",{productName:OC.theme.name},void 0,{sanitize:!1,escape:!1}),loginTimeout:(0,xt.C)("core","loginTimeout",300),requestToken:window.OC.requestToken,timezone:null===(t=new Intl.DateTimeFormat)||void 0===t||null===(t=t.resolvedOptions())||void 0===t?void 0:t.timeZone,timezoneOffset:-(new Date).getTimezoneOffset()/60}},data:()=>({loading:!1,user:"",password:""}),computed:{resetFormTimeout(){return this.loginTimeout<=0?()=>{}:(0,Yt.debounce)(this.handleResetForm,1e3*this.loginTimeout)},isError(){return this.invalidPassword||this.userDisabled||this.throttleDelay>5e3},errorLabel(){return this.invalidPassword?(0,z.Tl)("core","Wrong login or password."):this.userDisabled?(0,z.Tl)("core","This account is disabled"):this.throttleDelay>5e3?(0,z.Tl)("core","We have detected multiple invalid login attempts from your IP. Therefore your next login is throttled up to 30 seconds."):void 0},apacheAuthFailed(){return-1!==this.errors.indexOf("apacheAuthFailed")},csrfCheckFailed(){return-1!==this.errors.indexOf("csrfCheckFailed")},internalException(){return-1!==this.errors.indexOf("internalexception")},invalidPassword(){return-1!==this.errors.indexOf("invalidpassword")},userDisabled(){return-1!==this.errors.indexOf("userdisabled")},loadingIcon:()=>(0,v.d0)("core","loading-dark.gif"),loginActionUrl:()=>(0,v.Jv)("login"),emailEnabled(){return this.emailStates?this.emailStates.every((t=>"1"===t)):1},loginText(){return this.emailEnabled?(0,z.Tl)("core","Login with username or email"):(0,z.Tl)("core","Login with username")}},watch:{password(){this.resetFormTimeout()}},mounted(){""===this.username?this.$refs.user.$refs.inputField.$refs.input.focus():(this.user=this.username,this.$refs.password.$refs.inputField.$refs.input.focus())},methods:{handleResetForm(){this.password=""},updateUsername(){this.$emit("update:username",this.user)},submit(){this.loading=!0,this.$emit("submit")}}};var ye=i(82992),be={};be.styleTagTransform=he(),be.setAttributes=le(),be.insert=oe().bind(null,"head"),be.domAPI=ie(),be.insertStyleElement=ue(),ne()(ye.A,be),ye.A&&ye.A.locals&&ye.A.locals;const we=(0,me.A)(ve,(function(){var t=this,e=t._self._c;return e("form",{ref:"loginForm",staticClass:"login-form",attrs:{method:"post",name:"login",action:t.loginActionUrl},on:{submit:t.submit}},[e("fieldset",{staticClass:"login-form__fieldset",attrs:{"data-login-form":""}},[t.apacheAuthFailed?e("NcNoteCard",{attrs:{title:t.t("core","Server side authentication failed!"),type:"warning"}},[t._v("\n\t\t\t"+t._s(t.t("core","Please contact your administrator."))+"\n\t\t")]):t._e(),t._v(" "),t.csrfCheckFailed?e("NcNoteCard",{attrs:{heading:t.t("core","Temporary error"),type:"error"}},[t._v("\n\t\t\t"+t._s(t.t("core","Please try again."))+"\n\t\t")]):t._e(),t._v(" "),t.messages.length>0?e("NcNoteCard",t._l(t.messages,(function(n,r){return e("div",{key:r},[t._v("\n\t\t\t\t"+t._s(n)),e("br")])})),0):t._e(),t._v(" "),t.internalException?e("NcNoteCard",{class:t.t("core","An internal error occurred."),attrs:{type:"warning"}},[t._v("\n\t\t\t"+t._s(t.t("core","Please try again or contact your administrator."))+"\n\t\t")]):t._e(),t._v(" "),e("div",{staticClass:"hidden",attrs:{id:"message"}},[e("img",{staticClass:"float-spinner",attrs:{alt:"",src:t.loadingIcon}}),t._v(" "),e("span",{attrs:{id:"messageText"}}),t._v(" "),e("div",{staticStyle:{clear:"both"}})]),t._v(" "),e("h2",{staticClass:"login-form__headline",attrs:{"data-login-form-headline":""}},[t._v("\n\t\t\t"+t._s(t.headlineText)+"\n\t\t")]),t._v(" "),e("NcTextField",{ref:"user",class:{shake:t.invalidPassword},attrs:{id:"user",label:t.loginText,name:"user",maxlength:255,value:t.user,autocapitalize:"none",spellchecking:!1,autocomplete:t.autoCompleteAllowed?"username":"off",required:"",error:t.userNameInputLengthIs255,"helper-text":t.userInputHelperText,"data-login-form-input-user":""},on:{"update:value":function(e){t.user=e},change:t.updateUsername}}),t._v(" "),e("NcPasswordField",{ref:"password",class:{shake:t.invalidPassword},attrs:{id:"password",name:"password",value:t.password,spellchecking:!1,autocapitalize:"none",autocomplete:t.autoCompleteAllowed?"current-password":"off",label:t.t("core","Password"),"helper-text":t.errorLabel,error:t.isError,"data-login-form-input-password":"",required:""},on:{"update:value":function(e){t.password=e}}}),t._v(" "),e("LoginButton",{attrs:{"data-login-form-submit":"",loading:t.loading}}),t._v(" "),t.redirectUrl?e("input",{attrs:{type:"hidden",name:"redirect_url"},domProps:{value:t.redirectUrl}}):t._e(),t._v(" "),e("input",{attrs:{type:"hidden",name:"timezone"},domProps:{value:t.timezone}}),t._v(" "),e("input",{attrs:{type:"hidden",name:"timezone_offset"},domProps:{value:t.timezoneOffset}}),t._v(" "),e("input",{attrs:{type:"hidden",name:"requesttoken"},domProps:{value:t.requestToken}}),t._v(" "),t.directLogin?e("input",{attrs:{type:"hidden",name:"direct",value:"1"}}):t._e()],1)])}),[],!1,null,"563906d0",null).exports;function Ae(t){const e=new Uint8Array(t);let n="";for(const t of e)n+=String.fromCharCode(t);return btoa(n).replace(/\+/g,"-").replace(/\//g,"_").replace(/=/g,"")}function _e(t){const e=t.replace(/-/g,"+").replace(/_/g,"/"),n=(4-e.length%4)%4,r=e.padEnd(e.length+n,"="),i=atob(r),s=new ArrayBuffer(i.length),o=new Uint8Array(s);for(let t=0;t<i.length;t++)o[t]=i.charCodeAt(t);return s}function xe(){return void 0!==window?.PublicKeyCredential&&"function"==typeof window.PublicKeyCredential}function Ce(t){const{id:e}=t;return{...t,id:_e(e),transports:t.transports}}i(96763);class ke extends Error{constructor({message:t,code:e,cause:n,name:r}){super(t,{cause:n}),this.name=r??n.name,this.code=e}}const Ne=new class{createNewAbortSignal(){if(this.controller){const t=new Error("Cancelling existing WebAuthn API call for new one");t.name="AbortError",this.controller.abort(t)}const t=new AbortController;return this.controller=t,t.signal}cancelCeremony(){if(this.controller){const t=new Error("Manually cancelling existing WebAuthn API call");t.name="AbortError",this.controller.abort(t),this.controller=void 0}}},Ee=["cross-platform","platform"];function Pe(t){if(t&&!(Ee.indexOf(t)<0))return t}var Te=i(26287),je=i(92457),Se=i(53529);const Oe=null===(Ie=(0,je.HW)())?(0,Se.YK)().setApp("core").build():(0,Se.YK)().setApp("core").setUid(Ie.uid).build();var Ie;class Re extends Error{}const Le={name:"InformationIcon",emits:["click"],props:{title:{type:String},fillColor:{type:String,default:"currentColor"},size:{type:Number,default:24}}},Fe=(0,me.A)(Le,(function(){var t=this,e=t._self._c;return e("span",t._b({staticClass:"material-design-icon information-icon",attrs:{"aria-hidden":!t.title||null,"aria-label":t.title,role:"img"},on:{click:function(e){return t.$emit("click",e)}}},"span",t.$attrs,!1),[e("svg",{staticClass:"material-design-icon__svg",attrs:{fill:t.fillColor,width:t.size,height:t.size,viewBox:"0 0 24 24"}},[e("path",{attrs:{d:"M13,9H11V7H13M13,17H11V11H13M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2Z"}},[t.title?e("title",[t._v(t._s(t.title))]):t._e()])])])}),[],!1,null,null,null).exports,Be={name:"LockOpenIcon",emits:["click"],props:{title:{type:String},fillColor:{type:String,default:"currentColor"},size:{type:Number,default:24}}},Ue=(0,me.A)(Be,(function(){var t=this,e=t._self._c;return e("span",t._b({staticClass:"material-design-icon lock-open-icon",attrs:{"aria-hidden":!t.title||null,"aria-label":t.title,role:"img"},on:{click:function(e){return t.$emit("click",e)}}},"span",t.$attrs,!1),[e("svg",{staticClass:"material-design-icon__svg",attrs:{fill:t.fillColor,width:t.size,height:t.size,viewBox:"0 0 24 24"}},[e("path",{attrs:{d:"M18,8A2,2 0 0,1 20,10V20A2,2 0 0,1 18,22H6C4.89,22 4,21.1 4,20V10A2,2 0 0,1 6,8H15V6A3,3 0 0,0 12,3A3,3 0 0,0 9,6H7A5,5 0 0,1 12,1A5,5 0 0,1 17,6V8H18M12,17A2,2 0 0,0 14,15A2,2 0 0,0 12,13A2,2 0 0,0 10,15A2,2 0 0,0 12,17Z"}},[t.title?e("title",[t._v(t._s(t.title))]):t._e()])])])}),[],!1,null,null,null).exports;var De=i(96763);const Me={name:"PasswordLessLoginForm",components:{LoginButton:ge,InformationIcon:Fe,LockOpenIcon:Ue,NcTextField:Jt.A},props:{username:{type:String,default:""},redirectUrl:{type:[String,Boolean],default:!1},autoCompleteAllowed:{type:Boolean,default:!0},isHttps:{type:Boolean,default:!1},isLocalhost:{type:Boolean,default:!1}},setup:()=>({supportsWebauthn:xe()}),data(){return{user:this.username,loading:!1,validCredentials:!0}},methods:{async authenticate(){if(this.$refs.loginForm.checkValidity()){De.debug("passwordless login initiated");try{const t=await async function(t){const e=(0,v.Jv)("/login/webauthn/start"),{data:n}=await Te.A.post(e,{loginName:t});if(!n.allowCredentials||0===n.allowCredentials.length)throw Oe.error("No valid credentials returned for webauthn"),new Re;return await async function(t,e=!1){if(!xe())throw new Error("WebAuthn is not supported in this browser");let n;0!==t.allowCredentials?.length&&(n=t.allowCredentials?.map(Ce));const r={...t,challenge:_e(t.challenge),allowCredentials:n},i={};if(e){if(!await function(){if(!xe())return new Promise((t=>t(!1)));const t=window.PublicKeyCredential;return void 0===t.isConditionalMediationAvailable?new Promise((t=>t(!1))):t.isConditionalMediationAvailable()}())throw Error("Browser does not support WebAuthn autofill");if(document.querySelectorAll("input[autocomplete$='webauthn']").length<1)throw Error('No <input> with "webauthn" as the only or last value in its `autocomplete` attribute was detected');i.mediation="conditional",r.allowCredentials=[]}let s;i.publicKey=r,i.signal=Ne.createNewAbortSignal();try{s=await navigator.credentials.get(i)}catch(t){throw function({error:t,options:e}){const{publicKey:n}=e;if(!n)throw Error("options was missing required publicKey property");if("AbortError"===t.name){if(e.signal instanceof AbortSignal)return new ke({message:"Authentication ceremony was sent an abort signal",code:"ERROR_CEREMONY_ABORTED",cause:t})}else{if("NotAllowedError"===t.name)return new ke({message:t.message,code:"ERROR_PASSTHROUGH_SEE_CAUSE_PROPERTY",cause:t});if("SecurityError"===t.name){const e=window.location.hostname;if("localhost"!==(r=e)&&!/^([a-z0-9]+(-[a-z0-9]+)*\.)+[a-z]{2,}$/i.test(r))return new ke({message:`${window.location.hostname} is an invalid domain`,code:"ERROR_INVALID_DOMAIN",cause:t});if(n.rpId!==e)return new ke({message:`The RP ID "${n.rpId}" is invalid for this domain`,code:"ERROR_INVALID_RP_ID",cause:t})}else if("UnknownError"===t.name)return new ke({message:"The authenticator was unable to process the specified options, or could not create a new assertion signature",code:"ERROR_AUTHENTICATOR_GENERAL_ERROR",cause:t})}var r;return t}({error:t,options:i})}if(!s)throw new Error("Authentication was not completed");const{id:o,rawId:a,response:l,type:c}=s;let u;return l.userHandle&&(u=Ae(l.userHandle)),{id:o,rawId:Ae(a),response:{authenticatorData:Ae(l.authenticatorData),clientDataJSON:Ae(l.clientDataJSON),signature:Ae(l.signature),userHandle:u},type:c,clientExtensionResults:s.getClientExtensionResults(),authenticatorAttachment:Pe(s.authenticatorAttachment)}}(n)}(this.user);await this.completeAuthentication(t)}catch(t){if(t instanceof NoValidCredentials)return void(this.validCredentials=!1);Oe.debug(t)}}},changeUsername(t){this.user=t,this.$emit("update:username",this.user)},completeAuthentication(t){const e=this.redirectUrl;return async function(t){const e=(0,v.Jv)("/login/webauthn/finish"),{data:n}=await Te.A.post(e,{data:JSON.stringify(t)});return n}(t).then((t=>{let{defaultRedirectUrl:n}=t;De.debug("Logged in redirecting"),window.location.href=e||n})).catch((t=>{De.debug("GOT AN ERROR WHILE SUBMITTING CHALLENGE!"),De.debug(t)}))},submit(){}}};var ze=i(87511),$e={};$e.styleTagTransform=he(),$e.setAttributes=le(),$e.insert=oe().bind(null,"head"),$e.domAPI=ie(),$e.insertStyleElement=ue(),ne()(ze.A,$e),ze.A&&ze.A.locals&&ze.A.locals;const He=(0,me.A)(Me,(function(){var t=this,e=t._self._c;return(t.isHttps||t.isLocalhost)&&t.supportsWebauthn?e("form",{ref:"loginForm",attrs:{method:"post",name:"login"},on:{submit:function(e){return e.preventDefault(),t.submit.apply(null,arguments)}}},[e("h2",[t._v(t._s(t.t("core","Log in with a device")))]),t._v(" "),e("fieldset",[e("NcTextField",{attrs:{required:"",value:t.user,autocomplete:t.autoCompleteAllowed?"on":"off",error:!t.validCredentials,label:t.t("core","Login or email"),placeholder:t.t("core","Login or email"),"helper-text":t.validCredentials?"":t.t("core","Your account is not setup for passwordless login.")},on:{"update:value":t.changeUsername}}),t._v(" "),t.validCredentials?e("LoginButton",{attrs:{loading:t.loading},on:{click:t.authenticate}}):t._e()],1)]):t.supportsWebauthn?t.isHttps||t.isLocalhost?t._e():e("div",{staticClass:"update"},[e("LockOpenIcon",{attrs:{size:"70"}}),t._v(" "),e("h2",[t._v(t._s(t.t("core","Your connection is not secure")))]),t._v(" "),e("p",{staticClass:"infogroup"},[t._v("\n\t\t"+t._s(t.t("core","Passwordless authentication is only available over a secure connection."))+"\n\t")])],1):e("div",{staticClass:"update"},[e("InformationIcon",{attrs:{size:"70"}}),t._v(" "),e("h2",[t._v(t._s(t.t("core","Browser not supported")))]),t._v(" "),e("p",{staticClass:"infogroup"},[t._v("\n\t\t"+t._s(t.t("core","Passwordless authentication is not supported in your browser."))+"\n\t")])],1)}),[],!1,null,"4a6bfc86",null).exports;var qe=i(96763);const Ve={name:"ResetPassword",components:{LoginButton:ge,NcNoteCard:Xt.A,NcTextField:Jt.A},mixins:[Qt],props:{username:{type:String,required:!0},resetPasswordLink:{type:String,required:!0}},data(){return{error:!1,loading:!1,message:void 0,user:this.username}},watch:{username(t){this.user=t}},methods:{updateUsername(){this.$emit("update:username",this.user)},submit(){this.loading=!0,this.error=!1,this.message="";const t=(0,v.Jv)("/lostpassword/email"),e={user:this.user};return Te.A.post(t,e).then((t=>t.data)).then((t=>{if("success"!==t.status)throw new Error("got status ".concat(t.status));this.message="send-success"})).catch((t=>{qe.error("could not send reset email request",t),this.error=!0,this.message="send-error"})).then((()=>{this.loading=!1}))}}};var We=i(87600),Ke={};Ke.styleTagTransform=he(),Ke.setAttributes=le(),Ke.insert=oe().bind(null,"head"),Ke.domAPI=ie(),Ke.insertStyleElement=ue(),ne()(We.A,Ke),We.A&&We.A.locals&&We.A.locals;const Ye=(0,me.A)(Ve,(function(){var t=this,e=t._self._c;return e("form",{staticClass:"login-form",on:{submit:function(e){return e.preventDefault(),t.submit.apply(null,arguments)}}},[e("fieldset",{staticClass:"login-form__fieldset"},[e("NcTextField",{attrs:{id:"user",value:t.user,name:"user",maxlength:255,autocapitalize:"off",label:t.t("core","Login or email"),error:t.userNameInputLengthIs255,"helper-text":t.userInputHelperText,required:""},on:{"update:value":function(e){t.user=e},change:t.updateUsername}}),t._v(" "),e("LoginButton",{attrs:{value:t.t("core","Reset password")}}),t._v(" "),"send-success"===t.message?e("NcNoteCard",{attrs:{type:"success"}},[t._v("\n\t\t\t"+t._s(t.t("core","If this account exists, a password reset message has been sent to its email address. If you do not receive it, verify your email address and/or Login, check your spam/junk folders or ask your local administration for help."))+"\n\t\t")]):"send-error"===t.message?e("NcNoteCard",{attrs:{type:"error"}},[t._v("\n\t\t\t"+t._s(t.t("core","Couldn't send reset email. Please contact your administrator."))+"\n\t\t")]):"reset-error"===t.message?e("NcNoteCard",{attrs:{type:"error"}},[t._v("\n\t\t\t"+t._s(t.t("core","Password cannot be changed. Please contact your administrator."))+"\n\t\t")]):t._e(),t._v(" "),e("a",{staticClass:"login-form__link",attrs:{href:"#"},on:{click:function(e){return e.preventDefault(),t.$emit("abort")}}},[t._v("\n\t\t\t"+t._s(t.t("core","Back to login"))+"\n\t\t")])],1)])}),[],!1,null,"cd5425c6",null).exports,Ge={name:"UpdatePassword",components:{LoginButton:ge},props:{username:{type:String,required:!0},resetPasswordTarget:{type:String,required:!0}},data(){return{error:!1,loading:!1,message:void 0,user:this.username,password:"",encrypted:!1,proceed:!1}},watch:{username(t){this.user=t}},methods:{async submit(){this.loading=!0,this.error=!1,this.message="";try{const{data:t}=await Te.A.post(this.resetPasswordTarget,{password:this.password,proceed:this.proceed});if(t&&"success"===t.status)this.message="send-success",this.$emit("update:username",this.user),this.$emit("done");else{if(!t||!t.encryption)throw t&&t.msg?new Error(t.msg):new Error;this.encrypted=!0}}catch(e){this.error=!0,this.message=e.message?e.message:t("core","Password cannot be changed. Please contact your administrator.")}finally{this.loading=!1}}}};var Je=i(37861),Xe={};Xe.styleTagTransform=he(),Xe.setAttributes=le(),Xe.insert=oe().bind(null,"head"),Xe.domAPI=ie(),Xe.insertStyleElement=ue(),ne()(Je.A,Xe),Je.A&&Je.A.locals&&Je.A.locals;const Qe=(0,me.A)(Ge,(function(){var t=this,e=t._self._c;return e("form",{on:{submit:function(e){return e.preventDefault(),t.submit.apply(null,arguments)}}},[e("fieldset",[e("p",[e("label",{staticClass:"infield",attrs:{for:"password"}},[t._v(t._s(t.t("core","New password")))]),t._v(" "),e("input",{directives:[{name:"model",rawName:"v-model",value:t.password,expression:"password"}],attrs:{id:"password",type:"password",name:"password",autocomplete:"new-password",autocapitalize:"none",spellcheck:"false",required:"",placeholder:t.t("core","New password")},domProps:{value:t.password},on:{input:function(e){e.target.composing||(t.password=e.target.value)}}})]),t._v(" "),t.encrypted?e("div",{staticClass:"update"},[e("p",[t._v("\n\t\t\t\t"+t._s(t.t("core","Your files are encrypted. There will be no way to get your data back after your password is reset. If you are not sure what to do, please contact your administrator before you continue. Do you really want to continue?"))+"\n\t\t\t")]),t._v(" "),e("input",{directives:[{name:"model",rawName:"v-model",value:t.proceed,expression:"proceed"}],staticClass:"checkbox",attrs:{id:"encrypted-continue",type:"checkbox"},domProps:{checked:Array.isArray(t.proceed)?t._i(t.proceed,null)>-1:t.proceed},on:{change:function(e){var n=t.proceed,r=e.target,i=!!r.checked;if(Array.isArray(n)){var s=t._i(n,null);r.checked?s<0&&(t.proceed=n.concat([null])):s>-1&&(t.proceed=n.slice(0,s).concat(n.slice(s+1)))}else t.proceed=i}}}),t._v(" "),e("label",{attrs:{for:"encrypted-continue"}},[t._v("\n\t\t\t\t"+t._s(t.t("core","I know what I'm doing"))+"\n\t\t\t")])]):t._e(),t._v(" "),e("LoginButton",{attrs:{loading:t.loading,value:t.t("core","Reset password"),"value-loading":t.t("core","Resetting password")}}),t._v(" "),t.error&&t.message?e("p",{class:{warning:t.error}},[t._v("\n\t\t\t"+t._s(t.message)+"\n\t\t")]):t._e()],1)])}),[],!1,null,"6bdd5975",null).exports;var Ze=i(96763);const tn=Kt.parse(location.search);if("1"===tn.clear)try{window.localStorage.clear(),window.sessionStorage.clear(),Ze.debug("Browser storage cleared")}catch(t){Ze.error("Could not clear browser storage",t)}const en={name:"Login",components:{LoginForm:we,PasswordLessLoginForm:He,ResetPassword:Ye,UpdatePassword:Qe,NcButton:Zt.A,NcNoteCard:Xt.A},data:()=>({loading:!1,user:(0,xt.C)("core","loginUsername",""),passwordlessLogin:!1,resetPassword:!1,errors:(0,xt.C)("core","loginErrors",[]),messages:(0,xt.C)("core","loginMessages",[]),redirectUrl:(0,xt.C)("core","loginRedirectUrl",!1),throttleDelay:(0,xt.C)("core","loginThrottleDelay",0),canResetPassword:(0,xt.C)("core","loginCanResetPassword",!1),resetPasswordLink:(0,xt.C)("core","loginResetPasswordLink",""),autoCompleteAllowed:(0,xt.C)("core","loginAutocomplete",!0),resetPasswordTarget:(0,xt.C)("core","resetPasswordTarget",""),resetPasswordUser:(0,xt.C)("core","resetPasswordUser",""),directLogin:"1"===tn.direct,hasPasswordless:(0,xt.C)("core","webauthn-available",!1),countAlternativeLogins:(0,xt.C)("core","countAlternativeLogins",!1),alternativeLogins:(0,xt.C)("core","alternativeLogins",[]),isHttps:"https:"===window.location.protocol,isLocalhost:"localhost"===window.location.hostname,hideLoginForm:(0,xt.C)("core","hideLoginForm",!1),emailStates:(0,xt.C)("core","emailStates",[])}),methods:{passwordResetFinished(){this.resetPasswordTarget="",this.directLogin=!0}}};var nn=i(30638),rn={};rn.styleTagTransform=he(),rn.setAttributes=le(),rn.insert=oe().bind(null,"head"),rn.domAPI=ie(),rn.insertStyleElement=ue(),ne()(nn.A,rn),nn.A&&nn.A.locals&&nn.A.locals;const sn=(0,me.A)(en,(function(){var t=this,e=t._self._c;return e("div",{staticClass:"guest-box login-box"},[!t.hideLoginForm||t.directLogin?[e("transition",{attrs:{name:"fade",mode:"out-in"}},[t.passwordlessLogin||t.resetPassword||""!==t.resetPasswordTarget?!t.loading&&t.passwordlessLogin?e("div",{key:"reset-pw-less",staticClass:"login-additional login-passwordless"},[e("PasswordLessLoginForm",{attrs:{username:t.user,"redirect-url":t.redirectUrl,"auto-complete-allowed":t.autoCompleteAllowed,"is-https":t.isHttps,"is-localhost":t.isLocalhost},on:{"update:username":function(e){t.user=e},submit:function(e){t.loading=!0}}}),t._v(" "),e("NcButton",{attrs:{type:"tertiary","aria-label":t.t("core","Back to login form"),wide:!0},on:{click:function(e){t.passwordlessLogin=!1}}},[t._v("\n\t\t\t\t\t"+t._s(t.t("core","Back"))+"\n\t\t\t\t")])],1):!t.loading&&t.canResetPassword?e("div",{key:"reset-can-reset",staticClass:"login-additional"},[e("div",{staticClass:"lost-password-container"},[t.resetPassword?e("ResetPassword",{attrs:{username:t.user,"reset-password-link":t.resetPasswordLink},on:{"update:username":function(e){t.user=e},abort:function(e){t.resetPassword=!1}}}):t._e()],1)]):""!==t.resetPasswordTarget?e("div",[e("UpdatePassword",{attrs:{username:t.user,"reset-password-target":t.resetPasswordTarget},on:{"update:username":function(e){t.user=e},done:t.passwordResetFinished}})],1):t._e():e("div",[e("LoginForm",{attrs:{username:t.user,"redirect-url":t.redirectUrl,"direct-login":t.directLogin,messages:t.messages,errors:t.errors,"throttle-delay":t.throttleDelay,"auto-complete-allowed":t.autoCompleteAllowed,"email-states":t.emailStates},on:{"update:username":function(e){t.user=e},submit:function(e){t.loading=!0}}}),t._v(" "),t.canResetPassword&&""!==t.resetPasswordLink?e("a",{staticClass:"login-box__link",attrs:{id:"lost-password",href:t.resetPasswordLink}},[t._v("\n\t\t\t\t\t"+t._s(t.t("core","Forgot password?"))+"\n\t\t\t\t")]):t.canResetPassword&&!t.resetPassword?e("a",{staticClass:"login-box__link",attrs:{id:"lost-password",href:t.resetPasswordLink},on:{click:function(e){e.preventDefault(),t.resetPassword=!0}}},[t._v("\n\t\t\t\t\t"+t._s(t.t("core","Forgot password?"))+"\n\t\t\t\t")]):t._e(),t._v(" "),t.hasPasswordless?[t.countAlternativeLogins?e("div",{staticClass:"alternative-logins"},[t.hasPasswordless?e("a",{staticClass:"button",class:{"single-alt-login-option":t.countAlternativeLogins},attrs:{href:"#"},on:{click:function(e){e.preventDefault(),t.passwordlessLogin=!0}}},[t._v("\n\t\t\t\t\t\t\t"+t._s(t.t("core","Log in with a device"))+"\n\t\t\t\t\t\t")]):t._e()]):e("a",{attrs:{href:"#"},on:{click:function(e){e.preventDefault(),t.passwordlessLogin=!0}}},[t._v("\n\t\t\t\t\t\t"+t._s(t.t("core","Log in with a device"))+"\n\t\t\t\t\t")])]:t._e()],2)])]:[e("transition",{attrs:{name:"fade",mode:"out-in"}},[e("NcNoteCard",{attrs:{type:"info",title:t.t("core","Login form is disabled.")}},[t._v("\n\t\t\t\t"+t._s(t.t("core","The Nextcloud login form is disabled. Use another login option if available or contact your administration."))+"\n\t\t\t")])],1)],t._v(" "),e("div",{staticClass:"alternative-logins",attrs:{id:"alternative-logins"}},t._l(t.alternativeLogins,(function(n,r){return e("NcButton",{key:r,class:[n.class],attrs:{type:"secondary",wide:!0,role:"link",href:n.href}},[t._v("\n\t\t\t"+t._s(n.name)+"\n\t\t")])})),1)],2)}),[],!1,null,null,null).exports,on={data:()=>({OC:At}),methods:{t:it.translate.bind(it),n:it.translatePlural.bind(it)}};o.Ay.mixin(on),(new(o.Ay.extend(sn))).$mount("#login")},21391:(t,e,n)=>{var r,i,s;s="object"==typeof self&&self.self===self&&self||"object"==typeof n.g&&n.g.global===n.g&&n.g,r=[n(4523),n(74692),e],i=function(t,e,n){s.Backbone=function(t,e,n,r){var i=t.Backbone,s=Array.prototype.slice;e.VERSION="1.6.0",e.$=r,e.noConflict=function(){return t.Backbone=i,this},e.emulateHTTP=!1,e.emulateJSON=!1;var o,a=e.Events={},l=/\s+/,c=function(t,e,r,i,s){var o,a=0;if(r&&"object"==typeof r){void 0!==i&&"context"in s&&void 0===s.context&&(s.context=i);for(o=n.keys(r);a<o.length;a++)e=c(t,e,o[a],r[o[a]],s)}else if(r&&l.test(r))for(o=r.split(l);a<o.length;a++)e=t(e,o[a],i,s);else e=t(e,r,i,s);return e};a.on=function(t,e,n){return this._events=c(u,this._events||{},t,e,{context:n,ctx:this,listening:o}),o&&((this._listeners||(this._listeners={}))[o.id]=o,o.interop=!1),this},a.listenTo=function(t,e,r){if(!t)return this;var i=t._listenId||(t._listenId=n.uniqueId("l")),s=this._listeningTo||(this._listeningTo={}),a=o=s[i];a||(this._listenId||(this._listenId=n.uniqueId("l")),a=o=s[i]=new g(this,t));var l=d(t,e,r,this);if(o=void 0,l)throw l;return a.interop&&a.on(e,r),this};var u=function(t,e,n,r){if(n){var i=t[e]||(t[e]=[]),s=r.context,o=r.ctx,a=r.listening;a&&a.count++,i.push({callback:n,context:s,ctx:s||o,listening:a})}return t},d=function(t,e,n,r){try{t.on(e,n,r)}catch(t){return t}};a.off=function(t,e,n){return this._events?(this._events=c(h,this._events,t,e,{context:n,listeners:this._listeners}),this):this},a.stopListening=function(t,e,r){var i=this._listeningTo;if(!i)return this;for(var s=t?[t._listenId]:n.keys(i),o=0;o<s.length;o++){var a=i[s[o]];if(!a)break;a.obj.off(e,r,this),a.interop&&a.off(e,r)}return n.isEmpty(i)&&(this._listeningTo=void 0),this};var h=function(t,e,r,i){if(t){var s,o=i.context,a=i.listeners,l=0;if(e||o||r){for(s=e?[e]:n.keys(t);l<s.length;l++){var c=t[e=s[l]];if(!c)break;for(var u=[],d=0;d<c.length;d++){var h=c[d];if(r&&r!==h.callback&&r!==h.callback._callback||o&&o!==h.context)u.push(h);else{var f=h.listening;f&&f.off(e,r)}}u.length?t[e]=u:delete t[e]}return t}for(s=n.keys(a);l<s.length;l++)a[s[l]].cleanup()}};a.once=function(t,e,n){var r=c(f,{},t,e,this.off.bind(this));return"string"==typeof t&&null==n&&(e=void 0),this.on(r,e,n)},a.listenToOnce=function(t,e,n){var r=c(f,{},e,n,this.stopListening.bind(this,t));return this.listenTo(t,r)};var f=function(t,e,r,i){if(r){var s=t[e]=n.once((function(){i(e,s),r.apply(this,arguments)}));s._callback=r}return t};a.trigger=function(t){if(!this._events)return this;for(var e=Math.max(0,arguments.length-1),n=Array(e),r=0;r<e;r++)n[r]=arguments[r+1];return c(p,this._events,t,void 0,n),this};var p=function(t,e,n,r){if(t){var i=t[e],s=t.all;i&&s&&(s=s.slice()),i&&m(i,r),s&&m(s,[e].concat(r))}return t},m=function(t,e){var n,r=-1,i=t.length,s=e[0],o=e[1],a=e[2];switch(e.length){case 0:for(;++r<i;)(n=t[r]).callback.call(n.ctx);return;case 1:for(;++r<i;)(n=t[r]).callback.call(n.ctx,s);return;case 2:for(;++r<i;)(n=t[r]).callback.call(n.ctx,s,o);return;case 3:for(;++r<i;)(n=t[r]).callback.call(n.ctx,s,o,a);return;default:for(;++r<i;)(n=t[r]).callback.apply(n.ctx,e);return}},g=function(t,e){this.id=t._listenId,this.listener=t,this.obj=e,this.interop=!0,this.count=0,this._events=void 0};g.prototype.on=a.on,g.prototype.off=function(t,e){var n;this.interop?(this._events=c(h,this._events,t,e,{context:void 0,listeners:void 0}),n=!this._events):(this.count--,n=0===this.count),n&&this.cleanup()},g.prototype.cleanup=function(){delete this.listener._listeningTo[this.obj._listenId],this.interop||delete this.obj._listeners[this.id]},a.bind=a.on,a.unbind=a.off,n.extend(e,a);var v=e.Model=function(t,e){var r=t||{};e||(e={}),this.preinitialize.apply(this,arguments),this.cid=n.uniqueId(this.cidPrefix),this.attributes={},e.collection&&(this.collection=e.collection),e.parse&&(r=this.parse(r,e)||{});var i=n.result(this,"defaults");r=n.defaults(n.extend({},i,r),i),this.set(r,e),this.changed={},this.initialize.apply(this,arguments)};n.extend(v.prototype,a,{changed:null,validationError:null,idAttribute:"id",cidPrefix:"c",preinitialize:function(){},initialize:function(){},toJSON:function(t){return n.clone(this.attributes)},sync:function(){return e.sync.apply(this,arguments)},get:function(t){return this.attributes[t]},escape:function(t){return n.escape(this.get(t))},has:function(t){return null!=this.get(t)},matches:function(t){return!!n.iteratee(t,this)(this.attributes)},set:function(t,e,r){if(null==t)return this;var i;if("object"==typeof t?(i=t,r=e):(i={})[t]=e,r||(r={}),!this._validate(i,r))return!1;var s=r.unset,o=r.silent,a=[],l=this._changing;this._changing=!0,l||(this._previousAttributes=n.clone(this.attributes),this.changed={});var c=this.attributes,u=this.changed,d=this._previousAttributes;for(var h in i)e=i[h],n.isEqual(c[h],e)||a.push(h),n.isEqual(d[h],e)?delete u[h]:u[h]=e,s?delete c[h]:c[h]=e;if(this.idAttribute in i){var f=this.id;this.id=this.get(this.idAttribute),this.trigger("changeId",this,f,r)}if(!o){a.length&&(this._pending=r);for(var p=0;p<a.length;p++)this.trigger("change:"+a[p],this,c[a[p]],r)}if(l)return this;if(!o)for(;this._pending;)r=this._pending,this._pending=!1,this.trigger("change",this,r);return this._pending=!1,this._changing=!1,this},unset:function(t,e){return this.set(t,void 0,n.extend({},e,{unset:!0}))},clear:function(t){var e={};for(var r in this.attributes)e[r]=void 0;return this.set(e,n.extend({},t,{unset:!0}))},hasChanged:function(t){return null==t?!n.isEmpty(this.changed):n.has(this.changed,t)},changedAttributes:function(t){if(!t)return!!this.hasChanged()&&n.clone(this.changed);var e,r=this._changing?this._previousAttributes:this.attributes,i={};for(var s in t){var o=t[s];n.isEqual(r[s],o)||(i[s]=o,e=!0)}return!!e&&i},previous:function(t){return null!=t&&this._previousAttributes?this._previousAttributes[t]:null},previousAttributes:function(){return n.clone(this._previousAttributes)},fetch:function(t){t=n.extend({parse:!0},t);var e=this,r=t.success;return t.success=function(n){var i=t.parse?e.parse(n,t):n;if(!e.set(i,t))return!1;r&&r.call(t.context,e,n,t),e.trigger("sync",e,n,t)},q(this,t),this.sync("read",this,t)},save:function(t,e,r){var i;null==t||"object"==typeof t?(i=t,r=e):(i={})[t]=e;var s=(r=n.extend({validate:!0,parse:!0},r)).wait;if(i&&!s){if(!this.set(i,r))return!1}else if(!this._validate(i,r))return!1;var o=this,a=r.success,l=this.attributes;r.success=function(t){o.attributes=l;var e=r.parse?o.parse(t,r):t;if(s&&(e=n.extend({},i,e)),e&&!o.set(e,r))return!1;a&&a.call(r.context,o,t,r),o.trigger("sync",o,t,r)},q(this,r),i&&s&&(this.attributes=n.extend({},l,i));var c=this.isNew()?"create":r.patch?"patch":"update";"patch"!==c||r.attrs||(r.attrs=i);var u=this.sync(c,this,r);return this.attributes=l,u},destroy:function(t){t=t?n.clone(t):{};var e=this,r=t.success,i=t.wait,s=function(){e.stopListening(),e.trigger("destroy",e,e.collection,t)};t.success=function(n){i&&s(),r&&r.call(t.context,e,n,t),e.isNew()||e.trigger("sync",e,n,t)};var o=!1;return this.isNew()?n.defer(t.success):(q(this,t),o=this.sync("delete",this,t)),i||s(),o},url:function(){var t=n.result(this,"urlRoot")||n.result(this.collection,"url")||H();if(this.isNew())return t;var e=this.get(this.idAttribute);return t.replace(/[^\/]$/,"$&/")+encodeURIComponent(e)},parse:function(t,e){return t},clone:function(){return new this.constructor(this.attributes)},isNew:function(){return!this.has(this.idAttribute)},isValid:function(t){return this._validate({},n.extend({},t,{validate:!0}))},_validate:function(t,e){if(!e.validate||!this.validate)return!0;t=n.extend({},this.attributes,t);var r=this.validationError=this.validate(t,e)||null;return!r||(this.trigger("invalid",this,r,n.extend(e,{validationError:r})),!1)}});var y=e.Collection=function(t,e){e||(e={}),this.preinitialize.apply(this,arguments),e.model&&(this.model=e.model),void 0!==e.comparator&&(this.comparator=e.comparator),this._reset(),this.initialize.apply(this,arguments),t&&this.reset(t,n.extend({silent:!0},e))},b={add:!0,remove:!0,merge:!0},w={add:!0,remove:!1},A=function(t,e,n){n=Math.min(Math.max(n,0),t.length);var r,i=Array(t.length-n),s=e.length;for(r=0;r<i.length;r++)i[r]=t[r+n];for(r=0;r<s;r++)t[r+n]=e[r];for(r=0;r<i.length;r++)t[r+s+n]=i[r]};n.extend(y.prototype,a,{model:v,preinitialize:function(){},initialize:function(){},toJSON:function(t){return this.map((function(e){return e.toJSON(t)}))},sync:function(){return e.sync.apply(this,arguments)},add:function(t,e){return this.set(t,n.extend({merge:!1},e,w))},remove:function(t,e){e=n.extend({},e);var r=!n.isArray(t);t=r?[t]:t.slice();var i=this._removeModels(t,e);return!e.silent&&i.length&&(e.changes={added:[],merged:[],removed:i},this.trigger("update",this,e)),r?i[0]:i},set:function(t,e){if(null!=t){(e=n.extend({},b,e)).parse&&!this._isModel(t)&&(t=this.parse(t,e)||[]);var r=!n.isArray(t);t=r?[t]:t.slice();var i=e.at;null!=i&&(i=+i),i>this.length&&(i=this.length),i<0&&(i+=this.length+1);var s,o,a=[],l=[],c=[],u=[],d={},h=e.add,f=e.merge,p=e.remove,m=!1,g=this.comparator&&null==i&&!1!==e.sort,v=n.isString(this.comparator)?this.comparator:null;for(o=0;o<t.length;o++){s=t[o];var y=this.get(s);if(y){if(f&&s!==y){var w=this._isModel(s)?s.attributes:s;e.parse&&(w=y.parse(w,e)),y.set(w,e),c.push(y),g&&!m&&(m=y.hasChanged(v))}d[y.cid]||(d[y.cid]=!0,a.push(y)),t[o]=y}else h&&(s=t[o]=this._prepareModel(s,e))&&(l.push(s),this._addReference(s,e),d[s.cid]=!0,a.push(s))}if(p){for(o=0;o<this.length;o++)d[(s=this.models[o]).cid]||u.push(s);u.length&&this._removeModels(u,e)}var _=!1,x=!g&&h&&p;if(a.length&&x?(_=this.length!==a.length||n.some(this.models,(function(t,e){return t!==a[e]})),this.models.length=0,A(this.models,a,0),this.length=this.models.length):l.length&&(g&&(m=!0),A(this.models,l,null==i?this.length:i),this.length=this.models.length),m&&this.sort({silent:!0}),!e.silent){for(o=0;o<l.length;o++)null!=i&&(e.index=i+o),(s=l[o]).trigger("add",s,this,e);(m||_)&&this.trigger("sort",this,e),(l.length||u.length||c.length)&&(e.changes={added:l,removed:u,merged:c},this.trigger("update",this,e))}return r?t[0]:t}},reset:function(t,e){e=e?n.clone(e):{};for(var r=0;r<this.models.length;r++)this._removeReference(this.models[r],e);return e.previousModels=this.models,this._reset(),t=this.add(t,n.extend({silent:!0},e)),e.silent||this.trigger("reset",this,e),t},push:function(t,e){return this.add(t,n.extend({at:this.length},e))},pop:function(t){var e=this.at(this.length-1);return this.remove(e,t)},unshift:function(t,e){return this.add(t,n.extend({at:0},e))},shift:function(t){var e=this.at(0);return this.remove(e,t)},slice:function(){return s.apply(this.models,arguments)},get:function(t){if(null!=t)return this._byId[t]||this._byId[this.modelId(this._isModel(t)?t.attributes:t,t.idAttribute)]||t.cid&&this._byId[t.cid]},has:function(t){return null!=this.get(t)},at:function(t){return t<0&&(t+=this.length),this.models[t]},where:function(t,e){return this[e?"find":"filter"](t)},findWhere:function(t){return this.where(t,!0)},sort:function(t){var e=this.comparator;if(!e)throw new Error("Cannot sort a set without a comparator");t||(t={});var r=e.length;return n.isFunction(e)&&(e=e.bind(this)),1===r||n.isString(e)?this.models=this.sortBy(e):this.models.sort(e),t.silent||this.trigger("sort",this,t),this},pluck:function(t){return this.map(t+"")},fetch:function(t){var e=(t=n.extend({parse:!0},t)).success,r=this;return t.success=function(n){var i=t.reset?"reset":"set";r[i](n,t),e&&e.call(t.context,r,n,t),r.trigger("sync",r,n,t)},q(this,t),this.sync("read",this,t)},create:function(t,e){var r=(e=e?n.clone(e):{}).wait;if(!(t=this._prepareModel(t,e)))return!1;r||this.add(t,e);var i=this,s=e.success;return e.success=function(t,e,n){r&&(t.off("error",i._forwardPristineError,i),i.add(t,n)),s&&s.call(n.context,t,e,n)},r&&t.once("error",this._forwardPristineError,this),t.save(null,e),t},parse:function(t,e){return t},clone:function(){return new this.constructor(this.models,{model:this.model,comparator:this.comparator})},modelId:function(t,e){return t[e||this.model.prototype.idAttribute||"id"]},values:function(){return new x(this,C)},keys:function(){return new x(this,k)},entries:function(){return new x(this,N)},_reset:function(){this.length=0,this.models=[],this._byId={}},_prepareModel:function(t,e){return this._isModel(t)?(t.collection||(t.collection=this),t):((e=e?n.clone(e):{}).collection=this,(r=this.model.prototype?new this.model(t,e):this.model(t,e)).validationError?(this.trigger("invalid",this,r.validationError,e),!1):r);var r},_removeModels:function(t,e){for(var n=[],r=0;r<t.length;r++){var i=this.get(t[r]);if(i){var s=this.indexOf(i);this.models.splice(s,1),this.length--,delete this._byId[i.cid];var o=this.modelId(i.attributes,i.idAttribute);null!=o&&delete this._byId[o],e.silent||(e.index=s,i.trigger("remove",i,this,e)),n.push(i),this._removeReference(i,e)}}return t.length>0&&!e.silent&&delete e.index,n},_isModel:function(t){return t instanceof v},_addReference:function(t,e){this._byId[t.cid]=t;var n=this.modelId(t.attributes,t.idAttribute);null!=n&&(this._byId[n]=t),t.on("all",this._onModelEvent,this)},_removeReference:function(t,e){delete this._byId[t.cid];var n=this.modelId(t.attributes,t.idAttribute);null!=n&&delete this._byId[n],this===t.collection&&delete t.collection,t.off("all",this._onModelEvent,this)},_onModelEvent:function(t,e,n,r){if(e){if(("add"===t||"remove"===t)&&n!==this)return;if("destroy"===t&&this.remove(e,r),"changeId"===t){var i=this.modelId(e.previousAttributes(),e.idAttribute),s=this.modelId(e.attributes,e.idAttribute);null!=i&&delete this._byId[i],null!=s&&(this._byId[s]=e)}}this.trigger.apply(this,arguments)},_forwardPristineError:function(t,e,n){this.has(t)||this._onModelEvent("error",t,e,n)}});var _="function"==typeof Symbol&&Symbol.iterator;_&&(y.prototype[_]=y.prototype.values);var x=function(t,e){this._collection=t,this._kind=e,this._index=0},C=1,k=2,N=3;_&&(x.prototype[_]=function(){return this}),x.prototype.next=function(){if(this._collection){if(this._index<this._collection.length){var t,e=this._collection.at(this._index);if(this._index++,this._kind===C)t=e;else{var n=this._collection.modelId(e.attributes,e.idAttribute);t=this._kind===k?n:[n,e]}return{value:t,done:!1}}this._collection=void 0}return{value:void 0,done:!0}};var E=e.View=function(t){this.cid=n.uniqueId("view"),this.preinitialize.apply(this,arguments),n.extend(this,n.pick(t,T)),this._ensureElement(),this.initialize.apply(this,arguments)},P=/^(\S+)\s*(.*)$/,T=["model","collection","el","id","attributes","className","tagName","events"];n.extend(E.prototype,a,{tagName:"div",$:function(t){return this.$el.find(t)},preinitialize:function(){},initialize:function(){},render:function(){return this},remove:function(){return this._removeElement(),this.stopListening(),this},_removeElement:function(){this.$el.remove()},setElement:function(t){return this.undelegateEvents(),this._setElement(t),this.delegateEvents(),this},_setElement:function(t){this.$el=t instanceof e.$?t:e.$(t),this.el=this.$el[0]},delegateEvents:function(t){if(t||(t=n.result(this,"events")),!t)return this;for(var e in this.undelegateEvents(),t){var r=t[e];if(n.isFunction(r)||(r=this[r]),r){var i=e.match(P);this.delegate(i[1],i[2],r.bind(this))}}return this},delegate:function(t,e,n){return this.$el.on(t+".delegateEvents"+this.cid,e,n),this},undelegateEvents:function(){return this.$el&&this.$el.off(".delegateEvents"+this.cid),this},undelegate:function(t,e,n){return this.$el.off(t+".delegateEvents"+this.cid,e,n),this},_createElement:function(t){return document.createElement(t)},_ensureElement:function(){if(this.el)this.setElement(n.result(this,"el"));else{var t=n.extend({},n.result(this,"attributes"));this.id&&(t.id=n.result(this,"id")),this.className&&(t.class=n.result(this,"className")),this.setElement(this._createElement(n.result(this,"tagName"))),this._setAttributes(t)}},_setAttributes:function(t){this.$el.attr(t)}});var j=function(t,e,r,i){n.each(r,(function(n,r){e[r]&&(t.prototype[r]=function(t,e,n,r){switch(e){case 1:return function(){return t[n](this[r])};case 2:return function(e){return t[n](this[r],e)};case 3:return function(e,i){return t[n](this[r],S(e,this),i)};case 4:return function(e,i,s){return t[n](this[r],S(e,this),i,s)};default:return function(){var e=s.call(arguments);return e.unshift(this[r]),t[n].apply(t,e)}}}(e,n,r,i))}))},S=function(t,e){return n.isFunction(t)?t:n.isObject(t)&&!e._isModel(t)?O(t):n.isString(t)?function(e){return e.get(t)}:t},O=function(t){var e=n.matches(t);return function(t){return e(t.attributes)}};n.each([[y,{forEach:3,each:3,map:3,collect:3,reduce:0,foldl:0,inject:0,reduceRight:0,foldr:0,find:3,detect:3,filter:3,select:3,reject:3,every:3,all:3,some:3,any:3,include:3,includes:3,contains:3,invoke:0,max:3,min:3,toArray:1,size:1,first:3,head:3,take:3,initial:3,rest:3,tail:3,drop:3,last:3,without:0,difference:0,indexOf:3,shuffle:1,lastIndexOf:3,isEmpty:1,chain:1,sample:3,partition:3,groupBy:3,countBy:3,sortBy:3,indexBy:3,findIndex:3,findLastIndex:3},"models"],[v,{keys:1,values:1,pairs:1,invert:1,pick:0,omit:0,chain:1,isEmpty:1},"attributes"]],(function(t){var e=t[0],r=t[1],i=t[2];e.mixin=function(t){var r=n.reduce(n.functions(t),(function(t,e){return t[e]=0,t}),{});j(e,t,r,i)},j(e,n,r,i)})),e.sync=function(t,r,i){var s=I[t];n.defaults(i||(i={}),{emulateHTTP:e.emulateHTTP,emulateJSON:e.emulateJSON});var o={type:s,dataType:"json"};if(i.url||(o.url=n.result(r,"url")||H()),null!=i.data||!r||"create"!==t&&"update"!==t&&"patch"!==t||(o.contentType="application/json",o.data=JSON.stringify(i.attrs||r.toJSON(i))),i.emulateJSON&&(o.contentType="application/x-www-form-urlencoded",o.data=o.data?{model:o.data}:{}),i.emulateHTTP&&("PUT"===s||"DELETE"===s||"PATCH"===s)){o.type="POST",i.emulateJSON&&(o.data._method=s);var a=i.beforeSend;i.beforeSend=function(t){if(t.setRequestHeader("X-HTTP-Method-Override",s),a)return a.apply(this,arguments)}}"GET"===o.type||i.emulateJSON||(o.processData=!1);var l=i.error;i.error=function(t,e,n){i.textStatus=e,i.errorThrown=n,l&&l.call(i.context,t,e,n)};var c=i.xhr=e.ajax(n.extend(o,i));return r.trigger("request",r,c,i),c};var I={create:"POST",update:"PUT",patch:"PATCH",delete:"DELETE",read:"GET"};e.ajax=function(){return e.$.ajax.apply(e.$,arguments)};var R=e.Router=function(t){t||(t={}),this.preinitialize.apply(this,arguments),t.routes&&(this.routes=t.routes),this._bindRoutes(),this.initialize.apply(this,arguments)},L=/\((.*?)\)/g,F=/(\(\?)?:\w+/g,B=/\*\w+/g,U=/[\-{}\[\]+?.,\\\^$|#\s]/g;n.extend(R.prototype,a,{preinitialize:function(){},initialize:function(){},route:function(t,r,i){n.isRegExp(t)||(t=this._routeToRegExp(t)),n.isFunction(r)&&(i=r,r=""),i||(i=this[r]);var s=this;return e.history.route(t,(function(n){var o=s._extractParameters(t,n);!1!==s.execute(i,o,r)&&(s.trigger.apply(s,["route:"+r].concat(o)),s.trigger("route",r,o),e.history.trigger("route",s,r,o))})),this},execute:function(t,e,n){t&&t.apply(this,e)},navigate:function(t,n){return e.history.navigate(t,n),this},_bindRoutes:function(){if(this.routes){this.routes=n.result(this,"routes");for(var t,e=n.keys(this.routes);null!=(t=e.pop());)this.route(t,this.routes[t])}},_routeToRegExp:function(t){return t=t.replace(U,"\\$&").replace(L,"(?:$1)?").replace(F,(function(t,e){return e?t:"([^/?]+)"})).replace(B,"([^?]*?)"),new RegExp("^"+t+"(?:\\?([\\s\\S]*))?$")},_extractParameters:function(t,e){var r=t.exec(e).slice(1);return n.map(r,(function(t,e){return e===r.length-1?t||null:t?decodeURIComponent(t):null}))}});var D=e.History=function(){this.handlers=[],this.checkUrl=this.checkUrl.bind(this),"undefined"!=typeof window&&(this.location=window.location,this.history=window.history)},M=/^[#\/]|\s+$/g,z=/^\/+|\/+$/g,$=/#.*$/;D.started=!1,n.extend(D.prototype,a,{interval:50,atRoot:function(){return this.location.pathname.replace(/[^\/]$/,"$&/")===this.root&&!this.getSearch()},matchRoot:function(){return this.decodeFragment(this.location.pathname).slice(0,this.root.length-1)+"/"===this.root},decodeFragment:function(t){return decodeURI(t.replace(/%25/g,"%2525"))},getSearch:function(){var t=this.location.href.replace(/#.*/,"").match(/\?.+/);return t?t[0]:""},getHash:function(t){var e=(t||this).location.href.match(/#(.*)$/);return e?e[1]:""},getPath:function(){var t=this.decodeFragment(this.location.pathname+this.getSearch()).slice(this.root.length-1);return"/"===t.charAt(0)?t.slice(1):t},getFragment:function(t){return null==t&&(t=this._usePushState||!this._wantsHashChange?this.getPath():this.getHash()),t.replace(M,"")},start:function(t){if(D.started)throw new Error("Backbone.history has already been started");if(D.started=!0,this.options=n.extend({root:"/"},this.options,t),this.root=this.options.root,this._trailingSlash=this.options.trailingSlash,this._wantsHashChange=!1!==this.options.hashChange,this._hasHashChange="onhashchange"in window&&(void 0===document.documentMode||document.documentMode>7),this._useHashChange=this._wantsHashChange&&this._hasHashChange,this._wantsPushState=!!this.options.pushState,this._hasPushState=!(!this.history||!this.history.pushState),this._usePushState=this._wantsPushState&&this._hasPushState,this.fragment=this.getFragment(),this.root=("/"+this.root+"/").replace(z,"/"),this._wantsHashChange&&this._wantsPushState){if(!this._hasPushState&&!this.atRoot()){var e=this.root.slice(0,-1)||"/";return this.location.replace(e+"#"+this.getPath()),!0}this._hasPushState&&this.atRoot()&&this.navigate(this.getHash(),{replace:!0})}if(!this._hasHashChange&&this._wantsHashChange&&!this._usePushState){this.iframe=document.createElement("iframe"),this.iframe.src="javascript:0",this.iframe.style.display="none",this.iframe.tabIndex=-1;var r=document.body,i=r.insertBefore(this.iframe,r.firstChild).contentWindow;i.document.open(),i.document.close(),i.location.hash="#"+this.fragment}var s=window.addEventListener||function(t,e){return attachEvent("on"+t,e)};if(this._usePushState?s("popstate",this.checkUrl,!1):this._useHashChange&&!this.iframe?s("hashchange",this.checkUrl,!1):this._wantsHashChange&&(this._checkUrlInterval=setInterval(this.checkUrl,this.interval)),!this.options.silent)return this.loadUrl()},stop:function(){var t=window.removeEventListener||function(t,e){return detachEvent("on"+t,e)};this._usePushState?t("popstate",this.checkUrl,!1):this._useHashChange&&!this.iframe&&t("hashchange",this.checkUrl,!1),this.iframe&&(document.body.removeChild(this.iframe),this.iframe=null),this._checkUrlInterval&&clearInterval(this._checkUrlInterval),D.started=!1},route:function(t,e){this.handlers.unshift({route:t,callback:e})},checkUrl:function(t){var e=this.getFragment();if(e===this.fragment&&this.iframe&&(e=this.getHash(this.iframe.contentWindow)),e===this.fragment)return!this.matchRoot()&&this.notfound();this.iframe&&this.navigate(e),this.loadUrl()},loadUrl:function(t){return this.matchRoot()?(t=this.fragment=this.getFragment(t),n.some(this.handlers,(function(e){if(e.route.test(t))return e.callback(t),!0}))||this.notfound()):this.notfound()},notfound:function(){return this.trigger("notfound"),!1},navigate:function(t,e){if(!D.started)return!1;e&&!0!==e||(e={trigger:!!e}),t=this.getFragment(t||"");var n=this.root;this._trailingSlash||""!==t&&"?"!==t.charAt(0)||(n=n.slice(0,-1)||"/");var r=n+t;t=t.replace($,"");var i=this.decodeFragment(t);if(this.fragment!==i){if(this.fragment=i,this._usePushState)this.history[e.replace?"replaceState":"pushState"]({},document.title,r);else{if(!this._wantsHashChange)return this.location.assign(r);if(this._updateHash(this.location,t,e.replace),this.iframe&&t!==this.getHash(this.iframe.contentWindow)){var s=this.iframe.contentWindow;e.replace||(s.document.open(),s.document.close()),this._updateHash(s.location,t,e.replace)}}return e.trigger?this.loadUrl(t):void 0}},_updateHash:function(t,e,n){if(n){var r=t.href.replace(/(javascript:|#).*$/,"");t.replace(r+"#"+e)}else t.hash="#"+e}}),e.history=new D;v.extend=y.extend=R.extend=E.extend=D.extend=function(t,e){var r,i=this;return r=t&&n.has(t,"constructor")?t.constructor:function(){return i.apply(this,arguments)},n.extend(r,i,e),r.prototype=n.create(i.prototype,t),r.prototype.constructor=r,r.__super__=i.prototype,r};var H=function(){throw new Error('A "url" property or function must be specified')},q=function(t,e){var n=e.error;e.error=function(r){n&&n.call(e.context,t,r,e),t.trigger("error",t,r,e)}};return e._debug=function(){return{root:t,_:n}},e}(s,n,t,e)}.apply(e,r),void 0===i||(t.exports=i)},13020:(t,e,n)=>{"use strict";n.d(e,{A:()=>a});var r=n(71354),i=n.n(r),s=n(76314),o=n.n(s)()(i());o.push([t.id,".button-vue[data-v-d2cd6448]{margin-top:.5rem}","",{version:3,sources:["webpack://./core/src/components/login/LoginButton.vue"],names:[],mappings:"AACA,6BACC,gBAAA",sourcesContent:["\n.button-vue {\n\tmargin-top: .5rem;\n}\n"],sourceRoot:""}]);const a=o},82992:(t,e,n)=>{"use strict";n.d(e,{A:()=>a});var r=n(71354),i=n.n(r),s=n(76314),o=n.n(s)()(i());o.push([t.id,".login-form[data-v-563906d0]{text-align:left;font-size:1rem}.login-form__fieldset[data-v-563906d0]{width:100%;display:flex;flex-direction:column;gap:.5rem}.login-form__headline[data-v-563906d0]{text-align:center;overflow-wrap:anywhere}","",{version:3,sources:["webpack://./core/src/components/login/LoginForm.vue"],names:[],mappings:"AACA,6BACC,eAAA,CACA,cAAA,CAEA,uCACC,UAAA,CACA,YAAA,CACA,qBAAA,CACA,SAAA,CAGD,uCACC,iBAAA,CACA,sBAAA",sourcesContent:["\n.login-form {\n\ttext-align: left;\n\tfont-size: 1rem;\n\n\t&__fieldset {\n\t\twidth: 100%;\n\t\tdisplay: flex;\n\t\tflex-direction: column;\n\t\tgap: .5rem;\n\t}\n\n\t&__headline {\n\t\ttext-align: center;\n\t\toverflow-wrap: anywhere;\n\t}\n}\n"],sourceRoot:""}]);const a=o},87511:(t,e,n)=>{"use strict";n.d(e,{A:()=>a});var r=n(71354),i=n.n(r),s=n(76314),o=n.n(s)()(i());o.push([t.id,"fieldset[data-v-4a6bfc86]{display:flex;flex-direction:column;gap:.5rem}fieldset[data-v-4a6bfc86] label{text-align:initial}.update[data-v-4a6bfc86]{margin:0 auto}","",{version:3,sources:["webpack://./core/src/components/login/PasswordLessLoginForm.vue"],names:[],mappings:"AACA,0BACC,YAAA,CACA,qBAAA,CACA,SAAA,CAEA,gCACC,kBAAA,CAIF,yBACC,aAAA",sourcesContent:["\nfieldset {\n\tdisplay: flex;\n\tflex-direction: column;\n\tgap: 0.5rem;\n\n\t:deep(label) {\n\t\ttext-align: initial;\n\t}\n}\n\n.update {\n\tmargin: 0 auto;\n}\n"],sourceRoot:""}]);const a=o},87600:(t,e,n)=>{"use strict";n.d(e,{A:()=>a});var r=n(71354),i=n.n(r),s=n(76314),o=n.n(s)()(i());o.push([t.id,".login-form[data-v-cd5425c6]{text-align:left;font-size:1rem}.login-form__fieldset[data-v-cd5425c6]{width:100%;display:flex;flex-direction:column;gap:.5rem}.login-form__link[data-v-cd5425c6]{display:block;font-weight:normal !important;padding-bottom:1rem;cursor:pointer;font-size:var(--default-font-size);text-align:center;padding:.5rem 1rem 1rem 1rem}","",{version:3,sources:["webpack://./core/src/components/login/ResetPassword.vue"],names:[],mappings:"AACA,6BACC,eAAA,CACA,cAAA,CAEA,uCACC,UAAA,CACA,YAAA,CACA,qBAAA,CACA,SAAA,CAGD,mCACC,aAAA,CACA,6BAAA,CACA,mBAAA,CACA,cAAA,CACA,kCAAA,CACA,iBAAA,CACA,4BAAA",sourcesContent:["\n.login-form {\n\ttext-align: left;\n\tfont-size: 1rem;\n\n\t&__fieldset {\n\t\twidth: 100%;\n\t\tdisplay: flex;\n\t\tflex-direction: column;\n\t\tgap: .5rem;\n\t}\n\n\t&__link {\n\t\tdisplay: block;\n\t\tfont-weight: normal !important;\n\t\tpadding-bottom: 1rem;\n\t\tcursor: pointer;\n\t\tfont-size: var(--default-font-size);\n\t\ttext-align: center;\n\t\tpadding: .5rem 1rem 1rem 1rem;\n\t}\n}\n"],sourceRoot:""}]);const a=o},30638:(t,e,n)=>{"use strict";n.d(e,{A:()=>a});var r=n(71354),i=n.n(r),s=n(76314),o=n.n(s)()(i());o.push([t.id,"body{font-size:var(--default-font-size)}.login-box{width:320px;box-sizing:border-box}.login-box__link{display:block;padding:1rem;font-size:var(--default-font-size);text-align:center;font-weight:normal !important}.fade-enter-active,.fade-leave-active{transition:opacity .3s}.fade-enter,.fade-leave-to{opacity:0}.alternative-logins{display:flex;flex-direction:column;gap:.75rem}.alternative-logins .button-vue{box-sizing:border-box}.login-passwordless .button-vue{margin-top:.5rem}","",{version:3,sources:["webpack://./core/src/views/Login.vue"],names:[],mappings:"AACA,KACC,kCAAA,CAGD,WAEC,WAAA,CACA,qBAAA,CAEA,iBACC,aAAA,CACA,YAAA,CACA,kCAAA,CACA,iBAAA,CACA,6BAAA,CAIF,sCACC,sBAAA,CAED,2BACC,SAAA,CAGD,oBACC,YAAA,CACA,qBAAA,CACA,UAAA,CAEA,gCACC,qBAAA,CAKD,gCACC,gBAAA",sourcesContent:["\nbody {\n\tfont-size: var(--default-font-size);\n}\n\n.login-box {\n\t// Same size as dashboard panels\n\twidth: 320px;\n\tbox-sizing: border-box;\n\n\t&__link {\n\t\tdisplay: block;\n\t\tpadding: 1rem;\n\t\tfont-size: var(--default-font-size);\n\t\ttext-align: center;\n\t\tfont-weight: normal !important;\n\t}\n}\n\n.fade-enter-active, .fade-leave-active {\n\ttransition: opacity .3s;\n}\n.fade-enter, .fade-leave-to /* .fade-leave-active below version 2.1.8 */ {\n\topacity: 0;\n}\n\n.alternative-logins {\n\tdisplay: flex;\n\tflex-direction: column;\n\tgap: 0.75rem;\n\n\t.button-vue {\n\t\tbox-sizing: border-box;\n\t}\n}\n\n.login-passwordless {\n\t.button-vue {\n\t\tmargin-top: 0.5rem;\n\t}\n}\n"],sourceRoot:""}]);const a=o},37861:(t,e,n)=>{"use strict";n.d(e,{A:()=>a});var r=n(71354),i=n.n(r),s=n(76314),o=n.n(s)()(i());o.push([t.id,"\nfieldset[data-v-6bdd5975] {\n\ttext-align: center;\n}\ninput[type=submit][data-v-6bdd5975] {\n\tmargin-top: 20px;\n}\n","",{version:3,sources:["webpack://./core/src/components/login/UpdatePassword.vue"],names:[],mappings:";AA2HA;CACA,kBAAA;AACA;AAEA;CACA,gBAAA;AACA",sourcesContent:["\x3c!--\n - SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\n - SPDX-License-Identifier: AGPL-3.0-or-later\n--\x3e\n\n<template>\n\t<form @submit.prevent=\"submit\">\n\t\t<fieldset>\n\t\t\t<p>\n\t\t\t\t<label for=\"password\" class=\"infield\">{{ t('core', 'New password') }}</label>\n\t\t\t\t<input id=\"password\"\n\t\t\t\t\tv-model=\"password\"\n\t\t\t\t\ttype=\"password\"\n\t\t\t\t\tname=\"password\"\n\t\t\t\t\tautocomplete=\"new-password\"\n\t\t\t\t\tautocapitalize=\"none\"\n\t\t\t\t\tspellcheck=\"false\"\n\t\t\t\t\trequired\n\t\t\t\t\t:placeholder=\"t('core', 'New password')\">\n\t\t\t</p>\n\n\t\t\t<div v-if=\"encrypted\" class=\"update\">\n\t\t\t\t<p>\n\t\t\t\t\t{{ t('core', 'Your files are encrypted. There will be no way to get your data back after your password is reset. If you are not sure what to do, please contact your administrator before you continue. Do you really want to continue?') }}\n\t\t\t\t</p>\n\t\t\t\t<input id=\"encrypted-continue\"\n\t\t\t\t\tv-model=\"proceed\"\n\t\t\t\t\ttype=\"checkbox\"\n\t\t\t\t\tclass=\"checkbox\">\n\t\t\t\t<label for=\"encrypted-continue\">\n\t\t\t\t\t{{ t('core', 'I know what I\\'m doing') }}\n\t\t\t\t</label>\n\t\t\t</div>\n\n\t\t\t<LoginButton :loading=\"loading\"\n\t\t\t\t:value=\"t('core', 'Reset password')\"\n\t\t\t\t:value-loading=\"t('core', 'Resetting password')\" />\n\n\t\t\t<p v-if=\"error && message\" :class=\"{warning: error}\">\n\t\t\t\t{{ message }}\n\t\t\t</p>\n\t\t</fieldset>\n\t</form>\n</template>\n\n<script>\nimport Axios from '@nextcloud/axios'\nimport LoginButton from './LoginButton.vue'\n\nexport default {\n\tname: 'UpdatePassword',\n\tcomponents: {\n\t\tLoginButton,\n\t},\n\tprops: {\n\t\tusername: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t\tresetPasswordTarget: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t},\n\tdata() {\n\t\treturn {\n\t\t\terror: false,\n\t\t\tloading: false,\n\t\t\tmessage: undefined,\n\t\t\tuser: this.username,\n\t\t\tpassword: '',\n\t\t\tencrypted: false,\n\t\t\tproceed: false,\n\t\t}\n\t},\n\twatch: {\n\t\tusername(value) {\n\t\t\tthis.user = value\n\t\t},\n\t},\n\tmethods: {\n\t\tasync submit() {\n\t\t\tthis.loading = true\n\t\t\tthis.error = false\n\t\t\tthis.message = ''\n\n\t\t\ttry {\n\t\t\t\tconst { data } = await Axios.post(this.resetPasswordTarget, {\n\t\t\t\t\tpassword: this.password,\n\t\t\t\t\tproceed: this.proceed,\n\t\t\t\t})\n\t\t\t\tif (data && data.status === 'success') {\n\t\t\t\t\tthis.message = 'send-success'\n\t\t\t\t\tthis.$emit('update:username', this.user)\n\t\t\t\t\tthis.$emit('done')\n\t\t\t\t} else if (data && data.encryption) {\n\t\t\t\t\tthis.encrypted = true\n\t\t\t\t} else if (data && data.msg) {\n\t\t\t\t\tthrow new Error(data.msg)\n\t\t\t\t} else {\n\t\t\t\t\tthrow new Error()\n\t\t\t\t}\n\t\t\t} catch (e) {\n\t\t\t\tthis.error = true\n\t\t\t\tthis.message = e.message ? e.message : t('core', 'Password cannot be changed. Please contact your administrator.')\n\t\t\t} finally {\n\t\t\t\tthis.loading = false\n\t\t\t}\n\t\t},\n\t},\n}\n<\/script>\n\n<style scoped>\n\tfieldset {\n\t\ttext-align: center;\n\t}\n\n\tinput[type=submit] {\n\t\tmargin-top: 20px;\n\t}\n</style>\n"],sourceRoot:""}]);const a=o},78112:t=>{"undefined"==typeof dav&&(dav={}),dav._XML_CHAR_MAP={"<":"<",">":">","&":"&",'"':""","'":"'"},dav._escapeXml=function(t){return t.replace(/[<>&"']/g,(function(t){return dav._XML_CHAR_MAP[t]}))},dav.Client=function(t){var e;for(e in t)this[e]=t[e]},dav.Client.prototype={baseUrl:null,userName:null,password:null,xmlNamespaces:{"DAV:":"d"},propFind:function(t,e,n,r){void 0===n&&(n="0"),n=""+n,(r=r||{}).Depth=n,r["Content-Type"]="application/xml; charset=utf-8";var i,s='<?xml version="1.0"?>\n<d:propfind ';for(i in this.xmlNamespaces)s+=" xmlns:"+this.xmlNamespaces[i]+'="'+i+'"';for(var o in s+=">\n <d:prop>\n",e)if(e.hasOwnProperty(o)){var a=this.parseClarkNotation(e[o]);this.xmlNamespaces[a.namespace]?s+=" <"+this.xmlNamespaces[a.namespace]+":"+a.name+" />\n":s+=" <x:"+a.name+' xmlns:x="'+a.namespace+'" />\n'}return s+=" </d:prop>\n",s+="</d:propfind>",this.request("PROPFIND",t,r,s).then(function(t){return"0"===n?{status:t.status,body:t.body[0],xhr:t.xhr}:{status:t.status,body:t.body,xhr:t.xhr}}.bind(this))},_renderPropSet:function(t){var e=" <d:set>\n <d:prop>\n";for(var n in t)if(t.hasOwnProperty(n)){var r,i=this.parseClarkNotation(n),s=t[n];"d:resourcetype"!=(r=this.xmlNamespaces[i.namespace]?this.xmlNamespaces[i.namespace]+":"+i.name:"x:"+i.name+' xmlns:x="'+i.namespace+'"')&&(s=dav._escapeXml(s)),e+=" <"+r+">"+s+"</"+r+">\n"}return(e+=" </d:prop>\n")+" </d:set>\n"},propPatch:function(t,e,n){(n=n||{})["Content-Type"]="application/xml; charset=utf-8";var r,i='<?xml version="1.0"?>\n<d:propertyupdate ';for(r in this.xmlNamespaces)i+=" xmlns:"+this.xmlNamespaces[r]+'="'+r+'"';return i+=">\n"+this._renderPropSet(e),i+="</d:propertyupdate>",this.request("PROPPATCH",t,n,i).then(function(t){return{status:t.status,body:t.body,xhr:t.xhr}}.bind(this))},mkcol:function(t,e,n){var r="";if((n=n||{})["Content-Type"]="application/xml; charset=utf-8",e){var i;for(i in r='<?xml version="1.0"?>\n<d:mkcol',this.xmlNamespaces)r+=" xmlns:"+this.xmlNamespaces[i]+'="'+i+'"';r+=">\n"+this._renderPropSet(e),r+="</d:mkcol>"}return this.request("MKCOL",t,n,r).then(function(t){return{status:t.status,body:t.body,xhr:t.xhr}}.bind(this))},request:function(t,e,n,r,i,s){var o,a=this,l=this.xhrProvider();for(o in n=n||{},i=i||"",this.userName&&(n.Authorization="Basic "+btoa(this.userName+":"+this.password)),l.open(t,this.resolveUrl(e),!0),n)l.setRequestHeader(o,n[o]);return l.responseType=i,s&&"function"==typeof s.onProgress&&("PUT"===t||"POST"===t?l.upload.addEventListener("progress",(function(t){s.onProgress(t)}),!1):l.addEventListener("progress",(function(t){s.onProgress(t)}),!1)),void 0===r?l.send():l.send(r),new Promise((function(t,e){l.onreadystatechange=function(){if(4===l.readyState){var e=l.response;207===l.status&&(e=a.parseMultiStatus(l.response)),t({body:e,status:l.status,xhr:l})}},l.ontimeout=function(){e(new Error("Timeout exceeded"))}}))},xhrProvider:function(){return new XMLHttpRequest},_parsePropNode:function(t){var e=null;if(t.childNodes&&t.childNodes.length>0){for(var n=[],r=0;r<t.childNodes.length;r++){var i=t.childNodes[r];1===i.nodeType&&n.push(i)}n.length&&(e=n)}return e||t.textContent||t.text||""},parseMultiStatus:function(t){for(var e=(new DOMParser).parseFromString(t,"application/xml"),n=function(t){var e;for(e in this.xmlNamespaces)if(this.xmlNamespaces[e]===t)return e}.bind(this),r=e.evaluate("/d:multistatus/d:response",e,n,XPathResult.ANY_TYPE,null),i=[],s=r.iterateNext();s;){var o={href:null,propStat:[]};o.href=e.evaluate("string(d:href)",s,n,XPathResult.ANY_TYPE,null).stringValue;for(var a=e.evaluate("d:propstat",s,n,XPathResult.ANY_TYPE,null),l=a.iterateNext();l;){for(var c={status:e.evaluate("string(d:status)",l,n,XPathResult.ANY_TYPE,null).stringValue,properties:{}},u=e.evaluate("d:prop/*",l,n,XPathResult.ANY_TYPE,null),d=u.iterateNext();d;){var h=this._parsePropNode(d);c.properties["{"+d.namespaceURI+"}"+d.localName]=h,d=u.iterateNext()}o.propStat.push(c),l=a.iterateNext()}i.push(o),s=r.iterateNext()}return i},resolveUrl:function(t){if(/^https?:\/\//i.test(t))return t;var e=this.parseUrl(this.baseUrl);return t.charAt("/")?e.root+t:(e.root,-1!==e.path.lastIndexOf("/")&&e.path.subString(0,e.path.lastIndexOf("/")),t)},parseUrl:function(t){var e=t.match(/^(?:([A-Za-z]+):)?(\/{0,3})([0-9.\-A-Za-z]+)(?::(\d+))?(?:\/([^?#]*))?(?:\?([^#]*))?(?:#(.*))?$/),n={url:e[0],scheme:e[1],host:e[3],port:e[4],path:e[5],query:e[6],fragment:e[7]};return n.root=n.scheme+"://"+n.host+(n.port?":"+n.port:""),n},parseClarkNotation:function(t){var e=t.match(/^{([^}]+)}(.*)$/);if(e)return{name:e[2],namespace:e[1]}}},void 0!==t.exports&&(t.exports.Client=dav.Client),t.exports={dav}},35358:(t,e,n)=>{var r={"./af":25177,"./af.js":25177,"./ar":61509,"./ar-dz":41488,"./ar-dz.js":41488,"./ar-kw":58676,"./ar-kw.js":58676,"./ar-ly":42353,"./ar-ly.js":42353,"./ar-ma":24496,"./ar-ma.js":24496,"./ar-ps":6947,"./ar-ps.js":6947,"./ar-sa":60301,"./ar-sa.js":60301,"./ar-tn":89756,"./ar-tn.js":89756,"./ar.js":61509,"./az":95533,"./az.js":95533,"./be":28959,"./be.js":28959,"./bg":47777,"./bg.js":47777,"./bm":54903,"./bm.js":54903,"./bn":61290,"./bn-bd":17357,"./bn-bd.js":17357,"./bn.js":61290,"./bo":31545,"./bo.js":31545,"./br":11470,"./br.js":11470,"./bs":44429,"./bs.js":44429,"./ca":7306,"./ca.js":7306,"./cs":56464,"./cs.js":56464,"./cv":73635,"./cv.js":73635,"./cy":64226,"./cy.js":64226,"./da":93601,"./da.js":93601,"./de":77853,"./de-at":26111,"./de-at.js":26111,"./de-ch":54697,"./de-ch.js":54697,"./de.js":77853,"./dv":60708,"./dv.js":60708,"./el":54691,"./el.js":54691,"./en-au":53872,"./en-au.js":53872,"./en-ca":28298,"./en-ca.js":28298,"./en-gb":56195,"./en-gb.js":56195,"./en-ie":66584,"./en-ie.js":66584,"./en-il":65543,"./en-il.js":65543,"./en-in":9033,"./en-in.js":9033,"./en-nz":79402,"./en-nz.js":79402,"./en-sg":43004,"./en-sg.js":43004,"./eo":32934,"./eo.js":32934,"./es":97650,"./es-do":20838,"./es-do.js":20838,"./es-mx":17730,"./es-mx.js":17730,"./es-us":56575,"./es-us.js":56575,"./es.js":97650,"./et":3035,"./et.js":3035,"./eu":3508,"./eu.js":3508,"./fa":119,"./fa.js":119,"./fi":90527,"./fi.js":90527,"./fil":95995,"./fil.js":95995,"./fo":52477,"./fo.js":52477,"./fr":85498,"./fr-ca":26435,"./fr-ca.js":26435,"./fr-ch":37892,"./fr-ch.js":37892,"./fr.js":85498,"./fy":37071,"./fy.js":37071,"./ga":41734,"./ga.js":41734,"./gd":70217,"./gd.js":70217,"./gl":77329,"./gl.js":77329,"./gom-deva":32124,"./gom-deva.js":32124,"./gom-latn":93383,"./gom-latn.js":93383,"./gu":95050,"./gu.js":95050,"./he":11713,"./he.js":11713,"./hi":43861,"./hi.js":43861,"./hr":26308,"./hr.js":26308,"./hu":90609,"./hu.js":90609,"./hy-am":17160,"./hy-am.js":17160,"./id":74063,"./id.js":74063,"./is":89374,"./is.js":89374,"./it":88383,"./it-ch":21827,"./it-ch.js":21827,"./it.js":88383,"./ja":23827,"./ja.js":23827,"./jv":89722,"./jv.js":89722,"./ka":41794,"./ka.js":41794,"./kk":27088,"./kk.js":27088,"./km":96870,"./km.js":96870,"./kn":84451,"./kn.js":84451,"./ko":63164,"./ko.js":63164,"./ku":98174,"./ku-kmr":6181,"./ku-kmr.js":6181,"./ku.js":98174,"./ky":78474,"./ky.js":78474,"./lb":79680,"./lb.js":79680,"./lo":15867,"./lo.js":15867,"./lt":45766,"./lt.js":45766,"./lv":69532,"./lv.js":69532,"./me":58076,"./me.js":58076,"./mi":41848,"./mi.js":41848,"./mk":30306,"./mk.js":30306,"./ml":73739,"./ml.js":73739,"./mn":99053,"./mn.js":99053,"./mr":86169,"./mr.js":86169,"./ms":73386,"./ms-my":92297,"./ms-my.js":92297,"./ms.js":73386,"./mt":77075,"./mt.js":77075,"./my":72264,"./my.js":72264,"./nb":22274,"./nb.js":22274,"./ne":8235,"./ne.js":8235,"./nl":92572,"./nl-be":43784,"./nl-be.js":43784,"./nl.js":92572,"./nn":54566,"./nn.js":54566,"./oc-lnc":69330,"./oc-lnc.js":69330,"./pa-in":29849,"./pa-in.js":29849,"./pl":94418,"./pl.js":94418,"./pt":79834,"./pt-br":48303,"./pt-br.js":48303,"./pt.js":79834,"./ro":24457,"./ro.js":24457,"./ru":82271,"./ru.js":82271,"./sd":1221,"./sd.js":1221,"./se":33478,"./se.js":33478,"./si":17538,"./si.js":17538,"./sk":5784,"./sk.js":5784,"./sl":46637,"./sl.js":46637,"./sq":86794,"./sq.js":86794,"./sr":45719,"./sr-cyrl":3322,"./sr-cyrl.js":3322,"./sr.js":45719,"./ss":56e3,"./ss.js":56e3,"./sv":41011,"./sv.js":41011,"./sw":40748,"./sw.js":40748,"./ta":11025,"./ta.js":11025,"./te":11885,"./te.js":11885,"./tet":28861,"./tet.js":28861,"./tg":86571,"./tg.js":86571,"./th":55802,"./th.js":55802,"./tk":59527,"./tk.js":59527,"./tl-ph":29231,"./tl-ph.js":29231,"./tlh":31052,"./tlh.js":31052,"./tr":85096,"./tr.js":85096,"./tzl":79846,"./tzl.js":79846,"./tzm":81765,"./tzm-latn":97711,"./tzm-latn.js":97711,"./tzm.js":81765,"./ug-cn":48414,"./ug-cn.js":48414,"./uk":16618,"./uk.js":16618,"./ur":57777,"./ur.js":57777,"./uz":57609,"./uz-latn":72475,"./uz-latn.js":72475,"./uz.js":57609,"./vi":21135,"./vi.js":21135,"./x-pseudo":64051,"./x-pseudo.js":64051,"./yo":82218,"./yo.js":82218,"./zh-cn":52648,"./zh-cn.js":52648,"./zh-hk":1632,"./zh-hk.js":1632,"./zh-mo":31541,"./zh-mo.js":31541,"./zh-tw":50304,"./zh-tw.js":50304};function i(t){var e=s(t);return n(e)}function s(t){if(!n.o(r,t)){var e=new Error("Cannot find module '"+t+"'");throw e.code="MODULE_NOT_FOUND",e}return r[t]}i.keys=function(){return Object.keys(r)},i.resolve=s,t.exports=i,i.id=35358},35810:(t,e,n)=>{"use strict";n.d(e,{Al:()=>I,H4:()=>S,PY:()=>j,Q$:()=>O,R3:()=>A,VL:()=>w,lJ:()=>T,pt:()=>_,v7:()=>p});var r,i=n(92457),s=n(53529),o=n(53334),a=n(43627),l=n(71089),c=n(63814),u=n(44719),d=n(36117);null===(r=(0,i.HW)())?(0,s.YK)().setApp("files").build():(0,s.YK)().setApp("files").setUid(r.uid).build();const h=["B","KB","MB","GB","TB","PB"],f=["B","KiB","MiB","GiB","TiB","PiB"];function p(t,e=!1,n=!1,r=!1){n=n&&!r,"string"==typeof t&&(t=Number(t));let i=t>0?Math.floor(Math.log(t)/Math.log(r?1e3:1024)):0;i=Math.min((n?f.length:h.length)-1,i);const s=n?f[i]:h[i];let a=(t/Math.pow(r?1e3:1024,i)).toFixed(1);return!0===e&&0===i?("0.0"!==a?"< 1 ":"0 ")+(n?f[1]:h[1]):(a=i<2?parseFloat(a).toFixed(0):parseFloat(a).toLocaleString((0,o.lO)()),a+" "+s)}var m=(t=>(t[t.NONE=0]="NONE",t[t.CREATE=4]="CREATE",t[t.READ=1]="READ",t[t.UPDATE=2]="UPDATE",t[t.DELETE=8]="DELETE",t[t.SHARE=16]="SHARE",t[t.ALL=31]="ALL",t))(m||{});const g=["d:getcontentlength","d:getcontenttype","d:getetag","d:getlastmodified","d:quota-available-bytes","d:resourcetype","nc:has-preview","nc:is-encrypted","nc:mount-type","oc:comments-unread","oc:favorite","oc:fileid","oc:owner-display-name","oc:owner-id","oc:permissions","oc:size"],v={d:"DAV:",nc:"http://nextcloud.org/ns",oc:"http://owncloud.org/ns",ocs:"http://open-collaboration-services.org/ns"},y=function(){return typeof window._nc_dav_properties>"u"&&(window._nc_dav_properties=[...g]),window._nc_dav_properties.map((t=>`<${t} />`)).join(" ")},b=function(){return typeof window._nc_dav_namespaces>"u"&&(window._nc_dav_namespaces={...v}),Object.keys(window._nc_dav_namespaces).map((t=>`xmlns:${t}="${window._nc_dav_namespaces?.[t]}"`)).join(" ")},w=function(){return`<?xml version="1.0"?>\n\t\t<d:propfind ${b()}>\n\t\t\t<d:prop>\n\t\t\t\t${y()}\n\t\t\t</d:prop>\n\t\t</d:propfind>`},A=function(t){return`<?xml version="1.0" encoding="UTF-8"?>\n<d:searchrequest ${b()}\n\txmlns:ns="https://github.com/icewind1991/SearchDAV/ns">\n\t<d:basicsearch>\n\t\t<d:select>\n\t\t\t<d:prop>\n\t\t\t\t${y()}\n\t\t\t</d:prop>\n\t\t</d:select>\n\t\t<d:from>\n\t\t\t<d:scope>\n\t\t\t\t<d:href>/files/${(0,i.HW)()?.uid}/</d:href>\n\t\t\t\t<d:depth>infinity</d:depth>\n\t\t\t</d:scope>\n\t\t</d:from>\n\t\t<d:where>\n\t\t\t<d:and>\n\t\t\t\t<d:or>\n\t\t\t\t\t<d:not>\n\t\t\t\t\t\t<d:eq>\n\t\t\t\t\t\t\t<d:prop>\n\t\t\t\t\t\t\t\t<d:getcontenttype/>\n\t\t\t\t\t\t\t</d:prop>\n\t\t\t\t\t\t\t<d:literal>httpd/unix-directory</d:literal>\n\t\t\t\t\t\t</d:eq>\n\t\t\t\t\t</d:not>\n\t\t\t\t\t<d:eq>\n\t\t\t\t\t\t<d:prop>\n\t\t\t\t\t\t\t<oc:size/>\n\t\t\t\t\t\t</d:prop>\n\t\t\t\t\t\t<d:literal>0</d:literal>\n\t\t\t\t\t</d:eq>\n\t\t\t\t</d:or>\n\t\t\t\t<d:gt>\n\t\t\t\t\t<d:prop>\n\t\t\t\t\t\t<d:getlastmodified/>\n\t\t\t\t\t</d:prop>\n\t\t\t\t\t<d:literal>${t}</d:literal>\n\t\t\t\t</d:gt>\n\t\t\t</d:and>\n\t\t</d:where>\n\t\t<d:orderby>\n\t\t\t<d:order>\n\t\t\t\t<d:prop>\n\t\t\t\t\t<d:getlastmodified/>\n\t\t\t\t</d:prop>\n\t\t\t\t<d:descending/>\n\t\t\t</d:order>\n\t\t</d:orderby>\n\t\t<d:limit>\n\t\t\t<d:nresults>100</d:nresults>\n\t\t\t<ns:firstresult>0</ns:firstresult>\n\t\t</d:limit>\n\t</d:basicsearch>\n</d:searchrequest>`};var _=(t=>(t.Folder="folder",t.File="file",t))(_||{});const x=function(t,e){return null!==t.match(e)},C=(t,e)=>{if(t.id&&"number"!=typeof t.id)throw new Error("Invalid id type of value");if(!t.source)throw new Error("Missing mandatory source");try{new URL(t.source)}catch{throw new Error("Invalid source format, source must be a valid URL")}if(!t.source.startsWith("http"))throw new Error("Invalid source format, only http(s) is supported");if(t.mtime&&!(t.mtime instanceof Date))throw new Error("Invalid mtime type");if(t.crtime&&!(t.crtime instanceof Date))throw new Error("Invalid crtime type");if(!t.mime||"string"!=typeof t.mime||!t.mime.match(/^[-\w.]+\/[-+\w.]+$/gi))throw new Error("Missing or invalid mandatory mime");if("size"in t&&"number"!=typeof t.size&&void 0!==t.size)throw new Error("Invalid size type");if("permissions"in t&&void 0!==t.permissions&&!("number"==typeof t.permissions&&t.permissions>=m.NONE&&t.permissions<=m.ALL))throw new Error("Invalid permissions");if(t.owner&&null!==t.owner&&"string"!=typeof t.owner)throw new Error("Invalid owner type");if(t.attributes&&"object"!=typeof t.attributes)throw new Error("Invalid attributes type");if(t.root&&"string"!=typeof t.root)throw new Error("Invalid root type");if(t.root&&!t.root.startsWith("/"))throw new Error("Root must start with a leading slash");if(t.root&&!t.source.includes(t.root))throw new Error("Root must be part of the source");if(t.root&&x(t.source,e)){const n=t.source.match(e)[0];if(!t.source.includes((0,a.join)(n,t.root)))throw new Error("The root must be relative to the service. e.g /files/emma")}if(t.status&&!Object.values(k).includes(t.status))throw new Error("Status must be a valid NodeStatus")};var k=(t=>(t.NEW="new",t.FAILED="failed",t.LOADING="loading",t.LOCKED="locked",t))(k||{});class N{_data;_attributes;_knownDavService=/(remote|public)\.php\/(web)?dav/i;constructor(t,e){C(t,e||this._knownDavService),this._data=t;const n={set:(t,e,n)=>(this.updateMtime(),Reflect.set(t,e,n)),deleteProperty:(t,e)=>(this.updateMtime(),Reflect.deleteProperty(t,e))};this._attributes=new Proxy(t.attributes||{},n),delete this._data.attributes,e&&(this._knownDavService=e)}get source(){return this._data.source.replace(/\/$/i,"")}get encodedSource(){const{origin:t}=new URL(this.source);return t+(0,l.O0)(this.source.slice(t.length))}get basename(){return(0,a.basename)(this.source)}get extension(){return(0,a.extname)(this.source)}get dirname(){if(this.root){let t=this.source;this.isDavRessource&&(t=t.split(this._knownDavService).pop());const e=t.indexOf(this.root),n=this.root.replace(/\/$/,"");return(0,a.dirname)(t.slice(e+n.length)||"/")}const t=new URL(this.source);return(0,a.dirname)(t.pathname)}get mime(){return this._data.mime}get mtime(){return this._data.mtime}get crtime(){return this._data.crtime}get size(){return this._data.size}get attributes(){return this._attributes}get permissions(){return null!==this.owner||this.isDavRessource?void 0!==this._data.permissions?this._data.permissions:m.NONE:m.READ}get owner(){return this.isDavRessource?this._data.owner:null}get isDavRessource(){return x(this.source,this._knownDavService)}get root(){return this._data.root?this._data.root.replace(/^(.+)\/$/,"$1"):this.isDavRessource&&(0,a.dirname)(this.source).split(this._knownDavService).pop()||null}get path(){if(this.root){let t=this.source;this.isDavRessource&&(t=t.split(this._knownDavService).pop());const e=t.indexOf(this.root),n=this.root.replace(/\/$/,"");return t.slice(e+n.length)||"/"}return(this.dirname+"/"+this.basename).replace(/\/\//g,"/")}get fileid(){return this._data?.id||this.attributes?.fileid}get status(){return this._data?.status}set status(t){this._data.status=t}move(t){C({...this._data,source:t},this._knownDavService),this._data.source=t,this.updateMtime()}rename(t){if(t.includes("/"))throw new Error("Invalid basename");this.move((0,a.dirname)(this.source)+"/"+t)}updateMtime(){this._data.mtime&&(this._data.mtime=new Date)}}class E extends N{get type(){return _.File}}class P extends N{constructor(t){super({...t,mime:"httpd/unix-directory"})}get type(){return _.Folder}get extension(){return null}get mime(){return"httpd/unix-directory"}}const T=`/files/${(0,i.HW)()?.uid}`,j=(0,c.dC)("dav"),S=function(t=j,e={}){const n=(0,u.UU)(t,{headers:e});function r(t){n.setHeaders({...e,"X-Requested-With":"XMLHttpRequest",requesttoken:t??""})}return(0,i.zo)(r),r((0,i.do)()),(0,u.Gu)().patch("fetch",((t,e)=>{const n=e.headers;return n?.method&&(e.method=n.method,delete n.method),fetch(t,e)})),n},O=(t,e="/",n=T)=>{const r=new AbortController;return new d.CancelablePromise((async(i,s,o)=>{o((()=>r.abort()));try{i((await t.getDirectoryContents(`${n}${e}`,{signal:r.signal,details:!0,data:`<?xml version="1.0"?>\n\t\t<oc:filter-files ${b()}>\n\t\t\t<d:prop>\n\t\t\t\t${y()}\n\t\t\t</d:prop>\n\t\t\t<oc:filter-rules>\n\t\t\t\t<oc:favorite>1</oc:favorite>\n\t\t\t</oc:filter-rules>\n\t\t</oc:filter-files>`,headers:{method:"REPORT"},includeSelf:!0})).data.filter((t=>t.filename!==e)).map((t=>I(t,n))))}catch(t){s(t)}}))},I=function(t,e=T,n=j){const r=(0,i.HW)()?.uid;if(!r)throw new Error("No user id found");const s=t.props,o=function(t=""){let e=m.NONE;return t&&((t.includes("C")||t.includes("K"))&&(e|=m.CREATE),t.includes("G")&&(e|=m.READ),(t.includes("W")||t.includes("N")||t.includes("V"))&&(e|=m.UPDATE),t.includes("D")&&(e|=m.DELETE),t.includes("R")&&(e|=m.SHARE)),e}(s?.permissions),a=(s?.["owner-id"]||r).toString(),l={id:s?.fileid||0,source:`${n}${t.filename}`,mtime:new Date(Date.parse(t.lastmod)),mime:t.mime||"application/octet-stream",size:s?.size||Number.parseInt(s.getcontentlength||"0"),permissions:o,owner:a,root:e,attributes:{...t,...s,hasPreview:s?.["has-preview"]}};return delete l.attributes?.props,"file"===t.type?new E(l):new P(l)};var R={};!function(t){const e=":A-Za-z_\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD",n="["+e+"]["+e+"\\-.\\d\\u00B7\\u0300-\\u036F\\u203F-\\u2040]*",r=new RegExp("^"+n+"$");t.isExist=function(t){return typeof t<"u"},t.isEmptyObject=function(t){return 0===Object.keys(t).length},t.merge=function(t,e,n){if(e){const r=Object.keys(e),i=r.length;for(let s=0;s<i;s++)t[r[s]]="strict"===n?[e[r[s]]]:e[r[s]]}},t.getValue=function(e){return t.isExist(e)?e:""},t.isName=function(t){const e=r.exec(t);return!(null===e||typeof e>"u")},t.getAllMatches=function(t,e){const n=[];let r=e.exec(t);for(;r;){const i=[];i.startIndex=e.lastIndex-r[0].length;const s=r.length;for(let t=0;t<s;t++)i.push(r[t]);n.push(i),r=e.exec(t)}return n},t.nameRegexp=n}(R);new RegExp("(\\s*)([^\\s=]+)(\\s*=)?(\\s*(['\"])(([\\s\\S])*?)\\5)?","g");var L={};const F={preserveOrder:!1,attributeNamePrefix:"@_",attributesGroupName:!1,textNodeName:"#text",ignoreAttributes:!0,removeNSPrefix:!1,allowBooleanAttributes:!1,parseTagValue:!0,parseAttributeValue:!1,trimValues:!0,cdataPropName:!1,numberParseOptions:{hex:!0,leadingZeros:!0,eNotation:!0},tagValueProcessor:function(t,e){return e},attributeValueProcessor:function(t,e){return e},stopNodes:[],alwaysCreateTextNode:!1,isArray:()=>!1,commentPropName:!1,unpairedTags:[],processEntities:!0,htmlEntities:!1,ignoreDeclaration:!1,ignorePiTags:!1,transformTagName:!1,transformAttributeName:!1,updateTag:function(t,e,n){return t}};L.buildOptions=function(t){return Object.assign({},F,t)},L.defaultOptions=F,!Number.parseInt&&window.parseInt&&(Number.parseInt=window.parseInt),!Number.parseFloat&&window.parseFloat&&(Number.parseFloat=window.parseFloat),new RegExp("([^\\s=]+)\\s*(=\\s*(['\"])([\\s\\S]*?)\\3)?","gm");var B={};function U(t,e,n){let r;const i={};for(let s=0;s<t.length;s++){const o=t[s],a=D(o);let l="";if(l=void 0===n?a:n+"."+a,a===e.textNodeName)void 0===r?r=o[a]:r+=""+o[a];else{if(void 0===a)continue;if(o[a]){let t=U(o[a],e,l);const n=z(t,e);o[":@"]?M(t,o[":@"],l,e):1!==Object.keys(t).length||void 0===t[e.textNodeName]||e.alwaysCreateTextNode?0===Object.keys(t).length&&(e.alwaysCreateTextNode?t[e.textNodeName]="":t=""):t=t[e.textNodeName],void 0!==i[a]&&i.hasOwnProperty(a)?(Array.isArray(i[a])||(i[a]=[i[a]]),i[a].push(t)):e.isArray(a,l,n)?i[a]=[t]:i[a]=t}}}return"string"==typeof r?r.length>0&&(i[e.textNodeName]=r):void 0!==r&&(i[e.textNodeName]=r),i}function D(t){const e=Object.keys(t);for(let t=0;t<e.length;t++){const n=e[t];if(":@"!==n)return n}}function M(t,e,n,r){if(e){const i=Object.keys(e),s=i.length;for(let o=0;o<s;o++){const s=i[o];r.isArray(s,n+"."+s,!0,!0)?t[s]=[e[s]]:t[s]=e[s]}}}function z(t,e){const{textNodeName:n}=e,r=Object.keys(t).length;return!(0!==r&&(1!==r||!t[n]&&"boolean"!=typeof t[n]&&0!==t[n]))}B.prettify=function(t,e){return U(t,e)};const{buildOptions:$}=L,{prettify:H}=B;function q(t,e,n,r){let i="",s=!1;for(let o=0;o<t.length;o++){const a=t[o],l=V(a);if(void 0===l)continue;let c="";if(c=0===n.length?l:`${n}.${l}`,l===e.textNodeName){let t=a[l];K(c,e)||(t=e.tagValueProcessor(l,t),t=Y(t,e)),s&&(i+=r),i+=t,s=!1;continue}if(l===e.cdataPropName){s&&(i+=r),i+=`<![CDATA[${a[l][0][e.textNodeName]}]]>`,s=!1;continue}if(l===e.commentPropName){i+=r+`\x3c!--${a[l][0][e.textNodeName]}--\x3e`,s=!0;continue}if("?"===l[0]){const t=W(a[":@"],e),n="?xml"===l?"":r;let o=a[l][0][e.textNodeName];o=0!==o.length?" "+o:"",i+=n+`<${l}${o}${t}?>`,s=!0;continue}let u=r;""!==u&&(u+=e.indentBy);const d=r+`<${l}${W(a[":@"],e)}`,h=q(a[l],e,c,u);-1!==e.unpairedTags.indexOf(l)?e.suppressUnpairedNode?i+=d+">":i+=d+"/>":h&&0!==h.length||!e.suppressEmptyNode?h&&h.endsWith(">")?i+=d+`>${h}${r}</${l}>`:(i+=d+">",h&&""!==r&&(h.includes("/>")||h.includes("</"))?i+=r+e.indentBy+h+r:i+=h,i+=`</${l}>`):i+=d+"/>",s=!0}return i}function V(t){const e=Object.keys(t);for(let n=0;n<e.length;n++){const r=e[n];if(t.hasOwnProperty(r)&&":@"!==r)return r}}function W(t,e){let n="";if(t&&!e.ignoreAttributes)for(let r in t){if(!t.hasOwnProperty(r))continue;let i=e.attributeValueProcessor(r,t[r]);i=Y(i,e),!0===i&&e.suppressBooleanAttributes?n+=` ${r.substr(e.attributeNamePrefix.length)}`:n+=` ${r.substr(e.attributeNamePrefix.length)}="${i}"`}return n}function K(t,e){let n=(t=t.substr(0,t.length-e.textNodeName.length-1)).substr(t.lastIndexOf(".")+1);for(let r in e.stopNodes)if(e.stopNodes[r]===t||e.stopNodes[r]==="*."+n)return!0;return!1}function Y(t,e){if(t&&t.length>0&&e.processEntities)for(let n=0;n<e.entities.length;n++){const r=e.entities[n];t=t.replace(r.regex,r.val)}return t}const G=function(t,e){let n="";return e.format&&e.indentBy.length>0&&(n="\n"),q(t,e,"",n)},J={attributeNamePrefix:"@_",attributesGroupName:!1,textNodeName:"#text",ignoreAttributes:!0,cdataPropName:!1,format:!1,indentBy:" ",suppressEmptyNode:!1,suppressUnpairedNode:!0,suppressBooleanAttributes:!0,tagValueProcessor:function(t,e){return e},attributeValueProcessor:function(t,e){return e},preserveOrder:!1,commentPropName:!1,unpairedTags:[],entities:[{regex:new RegExp("&","g"),val:"&"},{regex:new RegExp(">","g"),val:">"},{regex:new RegExp("<","g"),val:"<"},{regex:new RegExp("'","g"),val:"'"},{regex:new RegExp('"',"g"),val:"""}],processEntities:!0,stopNodes:[],oneListGroup:!1};function X(t){this.options=Object.assign({},J,t),this.options.ignoreAttributes||this.options.attributesGroupName?this.isAttribute=function(){return!1}:(this.attrPrefixLen=this.options.attributeNamePrefix.length,this.isAttribute=tt),this.processTextOrObjNode=Q,this.options.format?(this.indentate=Z,this.tagEndChar=">\n",this.newLine="\n"):(this.indentate=function(){return""},this.tagEndChar=">",this.newLine="")}function Q(t,e,n){const r=this.j2x(t,n+1);return void 0!==t[this.options.textNodeName]&&1===Object.keys(t).length?this.buildTextValNode(t[this.options.textNodeName],e,r.attrStr,n):this.buildObjectNode(r.val,e,r.attrStr,n)}function Z(t){return this.options.indentBy.repeat(t)}function tt(t){return!(!t.startsWith(this.options.attributeNamePrefix)||t===this.options.textNodeName)&&t.substr(this.attrPrefixLen)}X.prototype.build=function(t){return this.options.preserveOrder?G(t,this.options):(Array.isArray(t)&&this.options.arrayNodeName&&this.options.arrayNodeName.length>1&&(t={[this.options.arrayNodeName]:t}),this.j2x(t,0).val)},X.prototype.j2x=function(t,e){let n="",r="";for(let i in t)if(Object.prototype.hasOwnProperty.call(t,i))if(typeof t[i]>"u")this.isAttribute(i)&&(r+="");else if(null===t[i])this.isAttribute(i)?r+="":"?"===i[0]?r+=this.indentate(e)+"<"+i+"?"+this.tagEndChar:r+=this.indentate(e)+"<"+i+"/"+this.tagEndChar;else if(t[i]instanceof Date)r+=this.buildTextValNode(t[i],i,"",e);else if("object"!=typeof t[i]){const s=this.isAttribute(i);if(s)n+=this.buildAttrPairStr(s,""+t[i]);else if(i===this.options.textNodeName){let e=this.options.tagValueProcessor(i,""+t[i]);r+=this.replaceEntitiesValue(e)}else r+=this.buildTextValNode(t[i],i,"",e)}else if(Array.isArray(t[i])){const n=t[i].length;let s="";for(let o=0;o<n;o++){const n=t[i][o];typeof n>"u"||(null===n?"?"===i[0]?r+=this.indentate(e)+"<"+i+"?"+this.tagEndChar:r+=this.indentate(e)+"<"+i+"/"+this.tagEndChar:"object"==typeof n?this.options.oneListGroup?s+=this.j2x(n,e+1).val:s+=this.processTextOrObjNode(n,i,e):s+=this.buildTextValNode(n,i,"",e))}this.options.oneListGroup&&(s=this.buildObjectNode(s,i,"",e)),r+=s}else if(this.options.attributesGroupName&&i===this.options.attributesGroupName){const e=Object.keys(t[i]),r=e.length;for(let s=0;s<r;s++)n+=this.buildAttrPairStr(e[s],""+t[i][e[s]])}else r+=this.processTextOrObjNode(t[i],i,e);return{attrStr:n,val:r}},X.prototype.buildAttrPairStr=function(t,e){return e=this.options.attributeValueProcessor(t,""+e),e=this.replaceEntitiesValue(e),this.options.suppressBooleanAttributes&&"true"===e?" "+t:" "+t+'="'+e+'"'},X.prototype.buildObjectNode=function(t,e,n,r){if(""===t)return"?"===e[0]?this.indentate(r)+"<"+e+n+"?"+this.tagEndChar:this.indentate(r)+"<"+e+n+this.closeTag(e)+this.tagEndChar;{let i="</"+e+this.tagEndChar,s="";return"?"===e[0]&&(s="?",i=""),!n&&""!==n||-1!==t.indexOf("<")?!1!==this.options.commentPropName&&e===this.options.commentPropName&&0===s.length?this.indentate(r)+`\x3c!--${t}--\x3e`+this.newLine:this.indentate(r)+"<"+e+n+s+this.tagEndChar+t+this.indentate(r)+i:this.indentate(r)+"<"+e+n+s+">"+t+i}},X.prototype.closeTag=function(t){let e="";return-1!==this.options.unpairedTags.indexOf(t)?this.options.suppressUnpairedNode||(e="/"):e=this.options.suppressEmptyNode?"/":`></${t}`,e},X.prototype.buildTextValNode=function(t,e,n,r){if(!1!==this.options.cdataPropName&&e===this.options.cdataPropName)return this.indentate(r)+`<![CDATA[${t}]]>`+this.newLine;if(!1!==this.options.commentPropName&&e===this.options.commentPropName)return this.indentate(r)+`\x3c!--${t}--\x3e`+this.newLine;if("?"===e[0])return this.indentate(r)+"<"+e+n+"?"+this.tagEndChar;{let i=this.options.tagValueProcessor(e,t);return i=this.replaceEntitiesValue(i),""===i?this.indentate(r)+"<"+e+n+this.closeTag(e)+this.tagEndChar:this.indentate(r)+"<"+e+n+">"+i+"</"+e+this.tagEndChar}},X.prototype.replaceEntitiesValue=function(t){if(t&&t.length>0&&this.options.processEntities)for(let e=0;e<this.options.entities.length;e++){const n=this.options.entities[e];t=t.replace(n.regex,n.val)}return t}},4523:(t,e,n)=>{"use strict";n.r(e),n.d(e,{VERSION:()=>i,after:()=>Re,all:()=>tn,allKeys:()=>gt,any:()=>en,assign:()=>Rt,before:()=>Le,bind:()=>_e,bindAll:()=>ke,chain:()=>ye,chunk:()=>Un,clone:()=>Ut,collect:()=>Ye,compact:()=>En,compose:()=>Ie,constant:()=>Q,contains:()=>nn,countBy:()=>vn,create:()=>Bt,debounce:()=>je,default:()=>Hn,defaults:()=>Lt,defer:()=>Pe,delay:()=>Ee,detect:()=>Ve,difference:()=>Tn,drop:()=>kn,each:()=>Ke,escape:()=>oe,every:()=>tn,extend:()=>It,extendOwn:()=>Rt,filter:()=>Qe,find:()=>Ve,findIndex:()=>De,findKey:()=>Be,findLastIndex:()=>Me,findWhere:()=>We,first:()=>Cn,flatten:()=>Pn,foldl:()=>Je,foldr:()=>Xe,forEach:()=>Ke,functions:()=>St,get:()=>Ht,groupBy:()=>mn,has:()=>qt,head:()=>Cn,identity:()=>Vt,include:()=>nn,includes:()=>nn,indexBy:()=>gn,indexOf:()=>He,initial:()=>xn,inject:()=>Je,intersection:()=>In,invert:()=>jt,invoke:()=>rn,isArguments:()=>G,isArray:()=>W,isArrayBuffer:()=>B,isBoolean:()=>P,isDataView:()=>V,isDate:()=>I,isElement:()=>T,isEmpty:()=>lt,isEqual:()=>mt,isError:()=>L,isFinite:()=>J,isFunction:()=>M,isMap:()=>Ct,isMatch:()=>ct,isNaN:()=>X,isNull:()=>N,isNumber:()=>O,isObject:()=>k,isRegExp:()=>R,isSet:()=>Nt,isString:()=>S,isSymbol:()=>F,isTypedArray:()=>it,isUndefined:()=>E,isWeakMap:()=>kt,isWeakSet:()=>Et,iteratee:()=>Jt,keys:()=>at,last:()=>Nn,lastIndexOf:()=>qe,map:()=>Ye,mapObject:()=>Qt,matcher:()=>Wt,matches:()=>Wt,max:()=>an,memoize:()=>Ne,methods:()=>St,min:()=>ln,mixin:()=>Mn,negate:()=>Oe,noop:()=>Zt,now:()=>re,object:()=>Fn,omit:()=>_n,once:()=>Fe,pairs:()=>Tt,partial:()=>Ae,partition:()=>yn,pick:()=>An,pluck:()=>sn,property:()=>Kt,propertyOf:()=>te,random:()=>ne,range:()=>Bn,reduce:()=>Je,reduceRight:()=>Xe,reject:()=>Ze,rest:()=>kn,restArguments:()=>C,result:()=>me,sample:()=>dn,select:()=>Qe,shuffle:()=>hn,size:()=>bn,some:()=>en,sortBy:()=>fn,sortedIndex:()=>ze,tail:()=>kn,take:()=>Cn,tap:()=>Dt,template:()=>pe,templateSettings:()=>le,throttle:()=>Te,times:()=>ee,toArray:()=>un,toPath:()=>Mt,transpose:()=>Rn,unescape:()=>ae,union:()=>On,uniq:()=>Sn,unique:()=>Sn,uniqueId:()=>ve,unzip:()=>Rn,values:()=>Pt,where:()=>on,without:()=>jn,wrap:()=>Se,zip:()=>Ln});var r={};n.r(r),n.d(r,{VERSION:()=>i,after:()=>Re,all:()=>tn,allKeys:()=>gt,any:()=>en,assign:()=>Rt,before:()=>Le,bind:()=>_e,bindAll:()=>ke,chain:()=>ye,chunk:()=>Un,clone:()=>Ut,collect:()=>Ye,compact:()=>En,compose:()=>Ie,constant:()=>Q,contains:()=>nn,countBy:()=>vn,create:()=>Bt,debounce:()=>je,default:()=>zn,defaults:()=>Lt,defer:()=>Pe,delay:()=>Ee,detect:()=>Ve,difference:()=>Tn,drop:()=>kn,each:()=>Ke,escape:()=>oe,every:()=>tn,extend:()=>It,extendOwn:()=>Rt,filter:()=>Qe,find:()=>Ve,findIndex:()=>De,findKey:()=>Be,findLastIndex:()=>Me,findWhere:()=>We,first:()=>Cn,flatten:()=>Pn,foldl:()=>Je,foldr:()=>Xe,forEach:()=>Ke,functions:()=>St,get:()=>Ht,groupBy:()=>mn,has:()=>qt,head:()=>Cn,identity:()=>Vt,include:()=>nn,includes:()=>nn,indexBy:()=>gn,indexOf:()=>He,initial:()=>xn,inject:()=>Je,intersection:()=>In,invert:()=>jt,invoke:()=>rn,isArguments:()=>G,isArray:()=>W,isArrayBuffer:()=>B,isBoolean:()=>P,isDataView:()=>V,isDate:()=>I,isElement:()=>T,isEmpty:()=>lt,isEqual:()=>mt,isError:()=>L,isFinite:()=>J,isFunction:()=>M,isMap:()=>Ct,isMatch:()=>ct,isNaN:()=>X,isNull:()=>N,isNumber:()=>O,isObject:()=>k,isRegExp:()=>R,isSet:()=>Nt,isString:()=>S,isSymbol:()=>F,isTypedArray:()=>it,isUndefined:()=>E,isWeakMap:()=>kt,isWeakSet:()=>Et,iteratee:()=>Jt,keys:()=>at,last:()=>Nn,lastIndexOf:()=>qe,map:()=>Ye,mapObject:()=>Qt,matcher:()=>Wt,matches:()=>Wt,max:()=>an,memoize:()=>Ne,methods:()=>St,min:()=>ln,mixin:()=>Mn,negate:()=>Oe,noop:()=>Zt,now:()=>re,object:()=>Fn,omit:()=>_n,once:()=>Fe,pairs:()=>Tt,partial:()=>Ae,partition:()=>yn,pick:()=>An,pluck:()=>sn,property:()=>Kt,propertyOf:()=>te,random:()=>ne,range:()=>Bn,reduce:()=>Je,reduceRight:()=>Xe,reject:()=>Ze,rest:()=>kn,restArguments:()=>C,result:()=>me,sample:()=>dn,select:()=>Qe,shuffle:()=>hn,size:()=>bn,some:()=>en,sortBy:()=>fn,sortedIndex:()=>ze,tail:()=>kn,take:()=>Cn,tap:()=>Dt,template:()=>pe,templateSettings:()=>le,throttle:()=>Te,times:()=>ee,toArray:()=>un,toPath:()=>Mt,transpose:()=>Rn,unescape:()=>ae,union:()=>On,uniq:()=>Sn,unique:()=>Sn,uniqueId:()=>ve,unzip:()=>Rn,values:()=>Pt,where:()=>on,without:()=>jn,wrap:()=>Se,zip:()=>Ln});var i="1.13.6",s="object"==typeof self&&self.self===self&&self||"object"==typeof global&&global.global===global&&global||Function("return this")()||{},o=Array.prototype,a=Object.prototype,l="undefined"!=typeof Symbol?Symbol.prototype:null,c=o.push,u=o.slice,d=a.toString,h=a.hasOwnProperty,f="undefined"!=typeof ArrayBuffer,p="undefined"!=typeof DataView,m=Array.isArray,g=Object.keys,v=Object.create,y=f&&ArrayBuffer.isView,b=isNaN,w=isFinite,A=!{toString:null}.propertyIsEnumerable("toString"),_=["valueOf","isPrototypeOf","toString","propertyIsEnumerable","hasOwnProperty","toLocaleString"],x=Math.pow(2,53)-1;function C(t,e){return e=null==e?t.length-1:+e,function(){for(var n=Math.max(arguments.length-e,0),r=Array(n),i=0;i<n;i++)r[i]=arguments[i+e];switch(e){case 0:return t.call(this,r);case 1:return t.call(this,arguments[0],r);case 2:return t.call(this,arguments[0],arguments[1],r)}var s=Array(e+1);for(i=0;i<e;i++)s[i]=arguments[i];return s[e]=r,t.apply(this,s)}}function k(t){var e=typeof t;return"function"===e||"object"===e&&!!t}function N(t){return null===t}function E(t){return void 0===t}function P(t){return!0===t||!1===t||"[object Boolean]"===d.call(t)}function T(t){return!(!t||1!==t.nodeType)}function j(t){var e="[object "+t+"]";return function(t){return d.call(t)===e}}const S=j("String"),O=j("Number"),I=j("Date"),R=j("RegExp"),L=j("Error"),F=j("Symbol"),B=j("ArrayBuffer");var U=j("Function"),D=s.document&&s.document.childNodes;"object"!=typeof Int8Array&&"function"!=typeof D&&(U=function(t){return"function"==typeof t||!1});const M=U,z=j("Object");var $=p&&z(new DataView(new ArrayBuffer(8))),H="undefined"!=typeof Map&&z(new Map),q=j("DataView");const V=$?function(t){return null!=t&&M(t.getInt8)&&B(t.buffer)}:q,W=m||j("Array");function K(t,e){return null!=t&&h.call(t,e)}var Y=j("Arguments");!function(){Y(arguments)||(Y=function(t){return K(t,"callee")})}();const G=Y;function J(t){return!F(t)&&w(t)&&!isNaN(parseFloat(t))}function X(t){return O(t)&&b(t)}function Q(t){return function(){return t}}function Z(t){return function(e){var n=t(e);return"number"==typeof n&&n>=0&&n<=x}}function tt(t){return function(e){return null==e?void 0:e[t]}}const et=tt("byteLength"),nt=Z(et);var rt=/\[object ((I|Ui)nt(8|16|32)|Float(32|64)|Uint8Clamped|Big(I|Ui)nt64)Array\]/;const it=f?function(t){return y?y(t)&&!V(t):nt(t)&&rt.test(d.call(t))}:Q(!1),st=tt("length");function ot(t,e){e=function(t){for(var e={},n=t.length,r=0;r<n;++r)e[t[r]]=!0;return{contains:function(t){return!0===e[t]},push:function(n){return e[n]=!0,t.push(n)}}}(e);var n=_.length,r=t.constructor,i=M(r)&&r.prototype||a,s="constructor";for(K(t,s)&&!e.contains(s)&&e.push(s);n--;)(s=_[n])in t&&t[s]!==i[s]&&!e.contains(s)&&e.push(s)}function at(t){if(!k(t))return[];if(g)return g(t);var e=[];for(var n in t)K(t,n)&&e.push(n);return A&&ot(t,e),e}function lt(t){if(null==t)return!0;var e=st(t);return"number"==typeof e&&(W(t)||S(t)||G(t))?0===e:0===st(at(t))}function ct(t,e){var n=at(e),r=n.length;if(null==t)return!r;for(var i=Object(t),s=0;s<r;s++){var o=n[s];if(e[o]!==i[o]||!(o in i))return!1}return!0}function ut(t){return t instanceof ut?t:this instanceof ut?void(this._wrapped=t):new ut(t)}function dt(t){return new Uint8Array(t.buffer||t,t.byteOffset||0,et(t))}ut.VERSION=i,ut.prototype.value=function(){return this._wrapped},ut.prototype.valueOf=ut.prototype.toJSON=ut.prototype.value,ut.prototype.toString=function(){return String(this._wrapped)};var ht="[object DataView]";function ft(t,e,n,r){if(t===e)return 0!==t||1/t==1/e;if(null==t||null==e)return!1;if(t!=t)return e!=e;var i=typeof t;return("function"===i||"object"===i||"object"==typeof e)&&pt(t,e,n,r)}function pt(t,e,n,r){t instanceof ut&&(t=t._wrapped),e instanceof ut&&(e=e._wrapped);var i=d.call(t);if(i!==d.call(e))return!1;if($&&"[object Object]"==i&&V(t)){if(!V(e))return!1;i=ht}switch(i){case"[object RegExp]":case"[object String]":return""+t==""+e;case"[object Number]":return+t!=+t?+e!=+e:0==+t?1/+t==1/e:+t==+e;case"[object Date]":case"[object Boolean]":return+t==+e;case"[object Symbol]":return l.valueOf.call(t)===l.valueOf.call(e);case"[object ArrayBuffer]":case ht:return pt(dt(t),dt(e),n,r)}var s="[object Array]"===i;if(!s&&it(t)){if(et(t)!==et(e))return!1;if(t.buffer===e.buffer&&t.byteOffset===e.byteOffset)return!0;s=!0}if(!s){if("object"!=typeof t||"object"!=typeof e)return!1;var o=t.constructor,a=e.constructor;if(o!==a&&!(M(o)&&o instanceof o&&M(a)&&a instanceof a)&&"constructor"in t&&"constructor"in e)return!1}r=r||[];for(var c=(n=n||[]).length;c--;)if(n[c]===t)return r[c]===e;if(n.push(t),r.push(e),s){if((c=t.length)!==e.length)return!1;for(;c--;)if(!ft(t[c],e[c],n,r))return!1}else{var u,h=at(t);if(c=h.length,at(e).length!==c)return!1;for(;c--;)if(!K(e,u=h[c])||!ft(t[u],e[u],n,r))return!1}return n.pop(),r.pop(),!0}function mt(t,e){return ft(t,e)}function gt(t){if(!k(t))return[];var e=[];for(var n in t)e.push(n);return A&&ot(t,e),e}function vt(t){var e=st(t);return function(n){if(null==n)return!1;var r=gt(n);if(st(r))return!1;for(var i=0;i<e;i++)if(!M(n[t[i]]))return!1;return t!==_t||!M(n[yt])}}var yt="forEach",bt=["clear","delete"],wt=["get","has","set"],At=bt.concat(yt,wt),_t=bt.concat(wt),xt=["add"].concat(bt,yt,"has");const Ct=H?vt(At):j("Map"),kt=H?vt(_t):j("WeakMap"),Nt=H?vt(xt):j("Set"),Et=j("WeakSet");function Pt(t){for(var e=at(t),n=e.length,r=Array(n),i=0;i<n;i++)r[i]=t[e[i]];return r}function Tt(t){for(var e=at(t),n=e.length,r=Array(n),i=0;i<n;i++)r[i]=[e[i],t[e[i]]];return r}function jt(t){for(var e={},n=at(t),r=0,i=n.length;r<i;r++)e[t[n[r]]]=n[r];return e}function St(t){var e=[];for(var n in t)M(t[n])&&e.push(n);return e.sort()}function Ot(t,e){return function(n){var r=arguments.length;if(e&&(n=Object(n)),r<2||null==n)return n;for(var i=1;i<r;i++)for(var s=arguments[i],o=t(s),a=o.length,l=0;l<a;l++){var c=o[l];e&&void 0!==n[c]||(n[c]=s[c])}return n}}const It=Ot(gt),Rt=Ot(at),Lt=Ot(gt,!0);function Ft(t){if(!k(t))return{};if(v)return v(t);var e=function(){};e.prototype=t;var n=new e;return e.prototype=null,n}function Bt(t,e){var n=Ft(t);return e&&Rt(n,e),n}function Ut(t){return k(t)?W(t)?t.slice():It({},t):t}function Dt(t,e){return e(t),t}function Mt(t){return W(t)?t:[t]}function zt(t){return ut.toPath(t)}function $t(t,e){for(var n=e.length,r=0;r<n;r++){if(null==t)return;t=t[e[r]]}return n?t:void 0}function Ht(t,e,n){var r=$t(t,zt(e));return E(r)?n:r}function qt(t,e){for(var n=(e=zt(e)).length,r=0;r<n;r++){var i=e[r];if(!K(t,i))return!1;t=t[i]}return!!n}function Vt(t){return t}function Wt(t){return t=Rt({},t),function(e){return ct(e,t)}}function Kt(t){return t=zt(t),function(e){return $t(e,t)}}function Yt(t,e,n){if(void 0===e)return t;switch(null==n?3:n){case 1:return function(n){return t.call(e,n)};case 3:return function(n,r,i){return t.call(e,n,r,i)};case 4:return function(n,r,i,s){return t.call(e,n,r,i,s)}}return function(){return t.apply(e,arguments)}}function Gt(t,e,n){return null==t?Vt:M(t)?Yt(t,e,n):k(t)&&!W(t)?Wt(t):Kt(t)}function Jt(t,e){return Gt(t,e,1/0)}function Xt(t,e,n){return ut.iteratee!==Jt?ut.iteratee(t,e):Gt(t,e,n)}function Qt(t,e,n){e=Xt(e,n);for(var r=at(t),i=r.length,s={},o=0;o<i;o++){var a=r[o];s[a]=e(t[a],a,t)}return s}function Zt(){}function te(t){return null==t?Zt:function(e){return Ht(t,e)}}function ee(t,e,n){var r=Array(Math.max(0,t));e=Yt(e,n,1);for(var i=0;i<t;i++)r[i]=e(i);return r}function ne(t,e){return null==e&&(e=t,t=0),t+Math.floor(Math.random()*(e-t+1))}ut.toPath=Mt,ut.iteratee=Jt;const re=Date.now||function(){return(new Date).getTime()};function ie(t){var e=function(e){return t[e]},n="(?:"+at(t).join("|")+")",r=RegExp(n),i=RegExp(n,"g");return function(t){return t=null==t?"":""+t,r.test(t)?t.replace(i,e):t}}const se={"&":"&","<":"<",">":">",'"':""","'":"'","`":"`"},oe=ie(se),ae=ie(jt(se)),le=ut.templateSettings={evaluate:/<%([\s\S]+?)%>/g,interpolate:/<%=([\s\S]+?)%>/g,escape:/<%-([\s\S]+?)%>/g};var ce=/(.)^/,ue={"'":"'","\\":"\\","\r":"r","\n":"n","\u2028":"u2028","\u2029":"u2029"},de=/\\|'|\r|\n|\u2028|\u2029/g;function he(t){return"\\"+ue[t]}var fe=/^\s*(\w|\$)+\s*$/;function pe(t,e,n){!e&&n&&(e=n),e=Lt({},e,ut.templateSettings);var r=RegExp([(e.escape||ce).source,(e.interpolate||ce).source,(e.evaluate||ce).source].join("|")+"|$","g"),i=0,s="__p+='";t.replace(r,(function(e,n,r,o,a){return s+=t.slice(i,a).replace(de,he),i=a+e.length,n?s+="'+\n((__t=("+n+"))==null?'':_.escape(__t))+\n'":r?s+="'+\n((__t=("+r+"))==null?'':__t)+\n'":o&&(s+="';\n"+o+"\n__p+='"),e})),s+="';\n";var o,a=e.variable;if(a){if(!fe.test(a))throw new Error("variable is not a bare identifier: "+a)}else s="with(obj||{}){\n"+s+"}\n",a="obj";s="var __t,__p='',__j=Array.prototype.join,print=function(){__p+=__j.call(arguments,'');};\n"+s+"return __p;\n";try{o=new Function(a,"_",s)}catch(t){throw t.source=s,t}var l=function(t){return o.call(this,t,ut)};return l.source="function("+a+"){\n"+s+"}",l}function me(t,e,n){var r=(e=zt(e)).length;if(!r)return M(n)?n.call(t):n;for(var i=0;i<r;i++){var s=null==t?void 0:t[e[i]];void 0===s&&(s=n,i=r),t=M(s)?s.call(t):s}return t}var ge=0;function ve(t){var e=++ge+"";return t?t+e:e}function ye(t){var e=ut(t);return e._chain=!0,e}function be(t,e,n,r,i){if(!(r instanceof e))return t.apply(n,i);var s=Ft(t.prototype),o=t.apply(s,i);return k(o)?o:s}var we=C((function(t,e){var n=we.placeholder,r=function(){for(var i=0,s=e.length,o=Array(s),a=0;a<s;a++)o[a]=e[a]===n?arguments[i++]:e[a];for(;i<arguments.length;)o.push(arguments[i++]);return be(t,r,this,this,o)};return r}));we.placeholder=ut;const Ae=we,_e=C((function(t,e,n){if(!M(t))throw new TypeError("Bind must be called on a function");var r=C((function(i){return be(t,r,e,this,n.concat(i))}));return r})),xe=Z(st);function Ce(t,e,n,r){if(r=r||[],e||0===e){if(e<=0)return r.concat(t)}else e=1/0;for(var i=r.length,s=0,o=st(t);s<o;s++){var a=t[s];if(xe(a)&&(W(a)||G(a)))if(e>1)Ce(a,e-1,n,r),i=r.length;else for(var l=0,c=a.length;l<c;)r[i++]=a[l++];else n||(r[i++]=a)}return r}const ke=C((function(t,e){var n=(e=Ce(e,!1,!1)).length;if(n<1)throw new Error("bindAll must be passed function names");for(;n--;){var r=e[n];t[r]=_e(t[r],t)}return t}));function Ne(t,e){var n=function(r){var i=n.cache,s=""+(e?e.apply(this,arguments):r);return K(i,s)||(i[s]=t.apply(this,arguments)),i[s]};return n.cache={},n}const Ee=C((function(t,e,n){return setTimeout((function(){return t.apply(null,n)}),e)})),Pe=Ae(Ee,ut,1);function Te(t,e,n){var r,i,s,o,a=0;n||(n={});var l=function(){a=!1===n.leading?0:re(),r=null,o=t.apply(i,s),r||(i=s=null)},c=function(){var c=re();a||!1!==n.leading||(a=c);var u=e-(c-a);return i=this,s=arguments,u<=0||u>e?(r&&(clearTimeout(r),r=null),a=c,o=t.apply(i,s),r||(i=s=null)):r||!1===n.trailing||(r=setTimeout(l,u)),o};return c.cancel=function(){clearTimeout(r),a=0,r=i=s=null},c}function je(t,e,n){var r,i,s,o,a,l=function(){var c=re()-i;e>c?r=setTimeout(l,e-c):(r=null,n||(o=t.apply(a,s)),r||(s=a=null))},c=C((function(c){return a=this,s=c,i=re(),r||(r=setTimeout(l,e),n&&(o=t.apply(a,s))),o}));return c.cancel=function(){clearTimeout(r),r=s=a=null},c}function Se(t,e){return Ae(e,t)}function Oe(t){return function(){return!t.apply(this,arguments)}}function Ie(){var t=arguments,e=t.length-1;return function(){for(var n=e,r=t[e].apply(this,arguments);n--;)r=t[n].call(this,r);return r}}function Re(t,e){return function(){if(--t<1)return e.apply(this,arguments)}}function Le(t,e){var n;return function(){return--t>0&&(n=e.apply(this,arguments)),t<=1&&(e=null),n}}const Fe=Ae(Le,2);function Be(t,e,n){e=Xt(e,n);for(var r,i=at(t),s=0,o=i.length;s<o;s++)if(e(t[r=i[s]],r,t))return r}function Ue(t){return function(e,n,r){n=Xt(n,r);for(var i=st(e),s=t>0?0:i-1;s>=0&&s<i;s+=t)if(n(e[s],s,e))return s;return-1}}const De=Ue(1),Me=Ue(-1);function ze(t,e,n,r){for(var i=(n=Xt(n,r,1))(e),s=0,o=st(t);s<o;){var a=Math.floor((s+o)/2);n(t[a])<i?s=a+1:o=a}return s}function $e(t,e,n){return function(r,i,s){var o=0,a=st(r);if("number"==typeof s)t>0?o=s>=0?s:Math.max(s+a,o):a=s>=0?Math.min(s+1,a):s+a+1;else if(n&&s&&a)return r[s=n(r,i)]===i?s:-1;if(i!=i)return(s=e(u.call(r,o,a),X))>=0?s+o:-1;for(s=t>0?o:a-1;s>=0&&s<a;s+=t)if(r[s]===i)return s;return-1}}const He=$e(1,De,ze),qe=$e(-1,Me);function Ve(t,e,n){var r=(xe(t)?De:Be)(t,e,n);if(void 0!==r&&-1!==r)return t[r]}function We(t,e){return Ve(t,Wt(e))}function Ke(t,e,n){var r,i;if(e=Yt(e,n),xe(t))for(r=0,i=t.length;r<i;r++)e(t[r],r,t);else{var s=at(t);for(r=0,i=s.length;r<i;r++)e(t[s[r]],s[r],t)}return t}function Ye(t,e,n){e=Xt(e,n);for(var r=!xe(t)&&at(t),i=(r||t).length,s=Array(i),o=0;o<i;o++){var a=r?r[o]:o;s[o]=e(t[a],a,t)}return s}function Ge(t){return function(e,n,r,i){var s=arguments.length>=3;return function(e,n,r,i){var s=!xe(e)&&at(e),o=(s||e).length,a=t>0?0:o-1;for(i||(r=e[s?s[a]:a],a+=t);a>=0&&a<o;a+=t){var l=s?s[a]:a;r=n(r,e[l],l,e)}return r}(e,Yt(n,i,4),r,s)}}const Je=Ge(1),Xe=Ge(-1);function Qe(t,e,n){var r=[];return e=Xt(e,n),Ke(t,(function(t,n,i){e(t,n,i)&&r.push(t)})),r}function Ze(t,e,n){return Qe(t,Oe(Xt(e)),n)}function tn(t,e,n){e=Xt(e,n);for(var r=!xe(t)&&at(t),i=(r||t).length,s=0;s<i;s++){var o=r?r[s]:s;if(!e(t[o],o,t))return!1}return!0}function en(t,e,n){e=Xt(e,n);for(var r=!xe(t)&&at(t),i=(r||t).length,s=0;s<i;s++){var o=r?r[s]:s;if(e(t[o],o,t))return!0}return!1}function nn(t,e,n,r){return xe(t)||(t=Pt(t)),("number"!=typeof n||r)&&(n=0),He(t,e,n)>=0}const rn=C((function(t,e,n){var r,i;return M(e)?i=e:(e=zt(e),r=e.slice(0,-1),e=e[e.length-1]),Ye(t,(function(t){var s=i;if(!s){if(r&&r.length&&(t=$t(t,r)),null==t)return;s=t[e]}return null==s?s:s.apply(t,n)}))}));function sn(t,e){return Ye(t,Kt(e))}function on(t,e){return Qe(t,Wt(e))}function an(t,e,n){var r,i,s=-1/0,o=-1/0;if(null==e||"number"==typeof e&&"object"!=typeof t[0]&&null!=t)for(var a=0,l=(t=xe(t)?t:Pt(t)).length;a<l;a++)null!=(r=t[a])&&r>s&&(s=r);else e=Xt(e,n),Ke(t,(function(t,n,r){((i=e(t,n,r))>o||i===-1/0&&s===-1/0)&&(s=t,o=i)}));return s}function ln(t,e,n){var r,i,s=1/0,o=1/0;if(null==e||"number"==typeof e&&"object"!=typeof t[0]&&null!=t)for(var a=0,l=(t=xe(t)?t:Pt(t)).length;a<l;a++)null!=(r=t[a])&&r<s&&(s=r);else e=Xt(e,n),Ke(t,(function(t,n,r){((i=e(t,n,r))<o||i===1/0&&s===1/0)&&(s=t,o=i)}));return s}var cn=/[^\ud800-\udfff]|[\ud800-\udbff][\udc00-\udfff]|[\ud800-\udfff]/g;function un(t){return t?W(t)?u.call(t):S(t)?t.match(cn):xe(t)?Ye(t,Vt):Pt(t):[]}function dn(t,e,n){if(null==e||n)return xe(t)||(t=Pt(t)),t[ne(t.length-1)];var r=un(t),i=st(r);e=Math.max(Math.min(e,i),0);for(var s=i-1,o=0;o<e;o++){var a=ne(o,s),l=r[o];r[o]=r[a],r[a]=l}return r.slice(0,e)}function hn(t){return dn(t,1/0)}function fn(t,e,n){var r=0;return e=Xt(e,n),sn(Ye(t,(function(t,n,i){return{value:t,index:r++,criteria:e(t,n,i)}})).sort((function(t,e){var n=t.criteria,r=e.criteria;if(n!==r){if(n>r||void 0===n)return 1;if(n<r||void 0===r)return-1}return t.index-e.index})),"value")}function pn(t,e){return function(n,r,i){var s=e?[[],[]]:{};return r=Xt(r,i),Ke(n,(function(e,i){var o=r(e,i,n);t(s,e,o)})),s}}const mn=pn((function(t,e,n){K(t,n)?t[n].push(e):t[n]=[e]})),gn=pn((function(t,e,n){t[n]=e})),vn=pn((function(t,e,n){K(t,n)?t[n]++:t[n]=1})),yn=pn((function(t,e,n){t[n?0:1].push(e)}),!0);function bn(t){return null==t?0:xe(t)?t.length:at(t).length}function wn(t,e,n){return e in n}const An=C((function(t,e){var n={},r=e[0];if(null==t)return n;M(r)?(e.length>1&&(r=Yt(r,e[1])),e=gt(t)):(r=wn,e=Ce(e,!1,!1),t=Object(t));for(var i=0,s=e.length;i<s;i++){var o=e[i],a=t[o];r(a,o,t)&&(n[o]=a)}return n})),_n=C((function(t,e){var n,r=e[0];return M(r)?(r=Oe(r),e.length>1&&(n=e[1])):(e=Ye(Ce(e,!1,!1),String),r=function(t,n){return!nn(e,n)}),An(t,r,n)}));function xn(t,e,n){return u.call(t,0,Math.max(0,t.length-(null==e||n?1:e)))}function Cn(t,e,n){return null==t||t.length<1?null==e||n?void 0:[]:null==e||n?t[0]:xn(t,t.length-e)}function kn(t,e,n){return u.call(t,null==e||n?1:e)}function Nn(t,e,n){return null==t||t.length<1?null==e||n?void 0:[]:null==e||n?t[t.length-1]:kn(t,Math.max(0,t.length-e))}function En(t){return Qe(t,Boolean)}function Pn(t,e){return Ce(t,e,!1)}const Tn=C((function(t,e){return e=Ce(e,!0,!0),Qe(t,(function(t){return!nn(e,t)}))})),jn=C((function(t,e){return Tn(t,e)}));function Sn(t,e,n,r){P(e)||(r=n,n=e,e=!1),null!=n&&(n=Xt(n,r));for(var i=[],s=[],o=0,a=st(t);o<a;o++){var l=t[o],c=n?n(l,o,t):l;e&&!n?(o&&s===c||i.push(l),s=c):n?nn(s,c)||(s.push(c),i.push(l)):nn(i,l)||i.push(l)}return i}const On=C((function(t){return Sn(Ce(t,!0,!0))}));function In(t){for(var e=[],n=arguments.length,r=0,i=st(t);r<i;r++){var s=t[r];if(!nn(e,s)){var o;for(o=1;o<n&&nn(arguments[o],s);o++);o===n&&e.push(s)}}return e}function Rn(t){for(var e=t&&an(t,st).length||0,n=Array(e),r=0;r<e;r++)n[r]=sn(t,r);return n}const Ln=C(Rn);function Fn(t,e){for(var n={},r=0,i=st(t);r<i;r++)e?n[t[r]]=e[r]:n[t[r][0]]=t[r][1];return n}function Bn(t,e,n){null==e&&(e=t||0,t=0),n||(n=e<t?-1:1);for(var r=Math.max(Math.ceil((e-t)/n),0),i=Array(r),s=0;s<r;s++,t+=n)i[s]=t;return i}function Un(t,e){if(null==e||e<1)return[];for(var n=[],r=0,i=t.length;r<i;)n.push(u.call(t,r,r+=e));return n}function Dn(t,e){return t._chain?ut(e).chain():e}function Mn(t){return Ke(St(t),(function(e){var n=ut[e]=t[e];ut.prototype[e]=function(){var t=[this._wrapped];return c.apply(t,arguments),Dn(this,n.apply(ut,t))}})),ut}Ke(["pop","push","reverse","shift","sort","splice","unshift"],(function(t){var e=o[t];ut.prototype[t]=function(){var n=this._wrapped;return null!=n&&(e.apply(n,arguments),"shift"!==t&&"splice"!==t||0!==n.length||delete n[0]),Dn(this,n)}})),Ke(["concat","join","slice"],(function(t){var e=o[t];ut.prototype[t]=function(){var t=this._wrapped;return null!=t&&(t=e.apply(t,arguments)),Dn(this,t)}}));const zn=ut;var $n=Mn(r);$n._=$n;const Hn=$n}},o={};function a(t){var e=o[t];if(void 0!==e)return e.exports;var n=o[t]={id:t,loaded:!1,exports:{}};return s[t].call(n.exports,n,n.exports,a),n.loaded=!0,n.exports}a.m=s,e=[],a.O=(t,n,r,i)=>{if(!n){var s=1/0;for(u=0;u<e.length;u++){n=e[u][0],r=e[u][1],i=e[u][2];for(var o=!0,l=0;l<n.length;l++)(!1&i||s>=i)&&Object.keys(a.O).every((t=>a.O[t](n[l])))?n.splice(l--,1):(o=!1,i<s&&(s=i));if(o){e.splice(u--,1);var c=r();void 0!==c&&(t=c)}}return t}i=i||0;for(var u=e.length;u>0&&e[u-1][2]>i;u--)e[u]=e[u-1];e[u]=[n,r,i]},a.n=t=>{var e=t&&t.__esModule?()=>t.default:()=>t;return a.d(e,{a:e}),e},a.d=(t,e)=>{for(var n in e)a.o(e,n)&&!a.o(t,n)&&Object.defineProperty(t,n,{enumerable:!0,get:e[n]})},a.f={},a.e=t=>Promise.all(Object.keys(a.f).reduce(((e,n)=>(a.f[n](t,e),e)),[])),a.u=t=>t+"-"+t+".js?v="+{1110:"a5d6e6f59aa058840a1e",1642:"00f437770241bf2f3a71",5455:"8915a218db5b7bc90f34"}[t],a.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(t){if("object"==typeof window)return window}}(),a.o=(t,e)=>Object.prototype.hasOwnProperty.call(t,e),r={},i="nextcloud:",a.l=(t,e,n,s)=>{if(r[t])r[t].push(e);else{var o,l;if(void 0!==n)for(var c=document.getElementsByTagName("script"),u=0;u<c.length;u++){var d=c[u];if(d.getAttribute("src")==t||d.getAttribute("data-webpack")==i+n){o=d;break}}o||(l=!0,(o=document.createElement("script")).charset="utf-8",o.timeout=120,a.nc&&o.setAttribute("nonce",a.nc),o.setAttribute("data-webpack",i+n),o.src=t),r[t]=[e];var h=(e,n)=>{o.onerror=o.onload=null,clearTimeout(f);var i=r[t];if(delete r[t],o.parentNode&&o.parentNode.removeChild(o),i&&i.forEach((t=>t(n))),e)return e(n)},f=setTimeout(h.bind(null,void 0,{type:"timeout",target:o}),12e4);o.onerror=h.bind(null,o.onerror),o.onload=h.bind(null,o.onload),l&&document.head.appendChild(o)}},a.r=t=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},a.nmd=t=>(t.paths=[],t.children||(t.children=[]),t),a.j=1418,(()=>{var t;a.g.importScripts&&(t=a.g.location+"");var e=a.g.document;if(!t&&e&&(e.currentScript&&(t=e.currentScript.src),!t)){var n=e.getElementsByTagName("script");if(n.length)for(var r=n.length-1;r>-1&&(!t||!/^http(s?):/.test(t));)t=n[r--].src}if(!t)throw new Error("Automatic publicPath is not supported in this browser");t=t.replace(/#.*$/,"").replace(/\?.*$/,"").replace(/\/[^\/]+$/,"/"),a.p=t})(),(()=>{a.b=document.baseURI||self.location.href;var t={1418:0};a.f.j=(e,n)=>{var r=a.o(t,e)?t[e]:void 0;if(0!==r)if(r)n.push(r[2]);else{var i=new Promise(((n,i)=>r=t[e]=[n,i]));n.push(r[2]=i);var s=a.p+a.u(e),o=new Error;a.l(s,(n=>{if(a.o(t,e)&&(0!==(r=t[e])&&(t[e]=void 0),r)){var i=n&&("load"===n.type?"missing":n.type),s=n&&n.target&&n.target.src;o.message="Loading chunk "+e+" failed.\n("+i+": "+s+")",o.name="ChunkLoadError",o.type=i,o.request=s,r[1](o)}}),"chunk-"+e,e)}},a.O.j=e=>0===t[e];var e=(e,n)=>{var r,i,s=n[0],o=n[1],l=n[2],c=0;if(s.some((e=>0!==t[e]))){for(r in o)a.o(o,r)&&(a.m[r]=o[r]);if(l)var u=l(a)}for(e&&e(n);c<s.length;c++)i=s[c],a.o(t,i)&&t[i]&&t[i][0](),t[i]=0;return a.O(u)},n=self.webpackChunknextcloud=self.webpackChunknextcloud||[];n.forEach(e.bind(null,0)),n.push=e.bind(null,n.push.bind(n))})(),a.nc=void 0;var l=a.O(void 0,[4208],(()=>a(92933)));l=a.O(l)})(); -//# sourceMappingURL=core-login.js.map?v=7b850c77098ac1082311
\ No newline at end of file +/*! For license information please see core-login.js.license?v=15bcaad545abcd0293c8 */ +(()=>{var e,r,i,s={33693:(e,r,i)=>{"use strict";var s={};i.r(s),i.d(s,{exclude:()=>Wt,extract:()=>Mt,parse:()=>zt,parseUrl:()=>Ht,pick:()=>Vt,stringify:()=>$t,stringifyUrl:()=>qt});var o=i(85471),a=i(61338),l=i(4523),c=i(74692),u=i.n(c),d=i(85168),h=i(96763);const f={updatableNotification:null,getDefaultNotificationFunction:null,setDefault(t){this.getDefaultNotificationFunction=t},hide(t,e){l.default.isFunction(t)&&(e=t,t=void 0),t?(t.each((function(){u()(this)[0].toastify?u()(this)[0].toastify.hideToast():h.error("cannot hide toast because object is not set"),this===this.updatableNotification&&(this.updatableNotification=null)})),e&&e.call(),this.getDefaultNotificationFunction&&this.getDefaultNotificationFunction()):h.error("Missing argument $row in OC.Notification.hide() call, caller needs to be adjusted to only dismiss its own notification")},showHtml(t,e){(e=e||{}).isHTML=!0,e.timeout=e.timeout?e.timeout:d.DH;const n=(0,d.rG)(t,e);return n.toastElement.toastify=n,u()(n.toastElement)},show(t,e){(e=e||{}).timeout=e.timeout?e.timeout:d.DH;const n=(0,d.rG)(function(t){return t.toString().split("&").join("&").split("<").join("<").split(">").join(">").split('"').join(""").split("'").join("'")}(t),e);return n.toastElement.toastify=n,u()(n.toastElement)},showUpdate(t){return this.updatableNotification&&this.updatableNotification.hideToast(),this.updatableNotification=(0,d.rG)(t,{timeout:d.DH}),this.updatableNotification.toastElement.toastify=this.updatableNotification,u()(this.updatableNotification.toastElement)},showTemporary(t,e){(e=e||{}).timeout=e.timeout||d.aR;const n=(0,d.rG)(t,e);return n.toastElement.toastify=n,u()(n.toastElement)},isHidden:()=>!u()("#content").find(".toastify").length},p=l.default.throttle((()=>{f.showTemporary(t("core","Connection to server lost"))}),7e3,{trailing:!1});let m=!1;const g={enableDynamicSlideToggle(){m=!0},showAppSidebar:function(t){(t||u()("#app-sidebar")).removeClass("disappear").show(),u()("#app-content").trigger(new(u().Event)("appresized"))},hideAppSidebar:function(t){(t||u()("#app-sidebar")).hide().addClass("disappear"),u()("#app-content").trigger(new(u().Event)("appresized"))}};var v=i(63814);function y(t,e,n){"post"!==t&&"delete"!==t||!At.PasswordConfirmation.requiresPasswordConfirmation()?(n=n||{},u().ajax({type:t.toUpperCase(),url:(0,v.KT)("apps/provisioning_api/api/v1/config/apps")+e,data:n.data||{},success:n.success,error:n.error})):At.PasswordConfirmation.requirePasswordConfirmation(_.bind(y,this,t,e,n))}const b=window.oc_appconfig||{},w={getValue:function(t,e,n,r){!function(t,e,n,r){(r=r||{}).data={defaultValue:n},y("get","/"+t+"/"+e,r)}(t,e,n,{success:r})},setValue:function(t,e,n){!function(t,e,n,r){(r=r||{}).data={value:n},y("post","/"+t+"/"+e,r)}(t,e,n)},getApps:function(t){!function(t){y("get","",t)}({success:t})},getKeys:function(t,e){!function(t,e){y("get","/"+t,e)}(t,{success:e})},deleteKey:function(t,e){!function(t,e,n){y("delete","/"+t+"/"+e,void 0)}(t,e)}},A=void 0!==window._oc_appswebroots&&window._oc_appswebroots;var x=i(21391),C=i.n(x),k=i(78112),N=i(96763);const E={create:"POST",update:"PROPPATCH",patch:"PROPPATCH",delete:"DELETE",read:"PROPFIND"};function P(t,e){if(l.default.isArray(t))return l.default.map(t,(function(t){return P(t,e)}));var n={href:t.href};return l.default.each(t.propStat,(function(t){if("HTTP/1.1 200 OK"===t.status)for(var r in t.properties){var i=r;r in e&&(i=e[r]),n[i]=t.properties[r]}})),n.id||(n.id=T(n.href)),n}function T(t){var e=t.indexOf("?");e>0&&(t=t.substr(0,e));var n,r=t.split("/");do{n=r[r.length-1],r.pop()}while(!n&&r.length>0);return n}function j(t){return t>=200&&t<=299}function S(t,e,n,r){return t.propPatch(e.url,function(t,e){var n,r={};for(n in t){var i=e[n],s=t[n];i||(N.warn('No matching DAV property for property "'+n),i=n),(l.default.isBoolean(s)||l.default.isNumber(s))&&(s=""+s),r[i]=s}return r}(n.changed,e.davProperties),r).then((function(t){j(t.status)?l.default.isFunction(e.success)&&e.success(n.toJSON()):l.default.isFunction(e.error)&&e.error(t)}))}const O=C().noConflict();Object.assign(O,{davCall:(t,e)=>{var n=new k.dav.Client({baseUrl:t.url,xmlNamespaces:l.default.extend({"DAV:":"d","http://owncloud.org/ns":"oc"},t.xmlNamespaces||{})});n.resolveUrl=function(){return t.url};var r=l.default.extend({"X-Requested-With":"XMLHttpRequest",requesttoken:OC.requestToken},t.headers);return"PROPFIND"===t.type?function(t,e,n,r){return t.propFind(e.url,l.default.values(e.davProperties)||[],e.depth,r).then((function(t){if(j(t.status)){if(l.default.isFunction(e.success)){var n=l.default.invert(e.davProperties),r=P(t.body,n);e.depth>0&&r.shift(),e.success(r)}}else l.default.isFunction(e.error)&&e.error(t)}))}(n,t,0,r):"PROPPATCH"===t.type?S(n,t,e,r):"MKCOL"===t.type?function(t,e,n,r){return t.request(e.type,e.url,r,null).then((function(i){j(i.status)?S(t,e,n,r):l.default.isFunction(e.error)&&e.error(i)}))}(n,t,e,r):function(t,e,n,r){return r["Content-Type"]="application/json",t.request(e.type,e.url,r,e.data).then((function(t){if(j(t.status)){if(l.default.isFunction(e.success)){if("PUT"===e.type||"POST"===e.type||"MKCOL"===e.type){var r=t.body||n.toJSON(),i=t.xhr.getResponseHeader("Content-Location");return"POST"===e.type&&i&&(r.id=T(i)),void e.success(r)}if(207===t.status){var s=l.default.invert(e.davProperties);e.success(P(t.body,s))}else e.success(t.body)}}else l.default.isFunction(e.error)&&e.error(t)}))}(n,t,e,r)},davSync:(t=>(e,n,r)=>{var i={type:E[e]||e},s=n instanceof t.Collection;if("update"===e&&(n.hasInnerCollection?i.type="MKCOL":(n.usePUT||n.collection&&n.collection.usePUT)&&(i.type="PUT")),r.url||(i.url=l.default.result(n,"url")||function(){throw new Error('A "url" property or function must be specified')}()),null!=r.data||!n||"create"!==e&&"update"!==e&&"patch"!==e||(i.data=JSON.stringify(r.attrs||n.toJSON(r))),"PROPFIND"!==i.type&&(i.processData=!1),"PROPFIND"===i.type||"PROPPATCH"===i.type){var o=n.davProperties;!o&&n.model&&(o=n.model.prototype.davProperties),o&&(l.default.isFunction(o)?i.davProperties=o.call(n):i.davProperties=o),i.davProperties=l.default.extend(i.davProperties||{},r.davProperties),l.default.isUndefined(r.depth)&&(r.depth=s?1:0)}var a=r.error;r.error=function(t,e,n){r.textStatus=e,r.errorThrown=n,a&&a.call(r.context,t,e,n)};var c=r.xhr=t.davCall(l.default.extend(i,r),n);return n.trigger("request",n,c,r),c})(O)});const I=O;var R=i(71089);const L=window._oc_config||{},F=document.getElementsByTagName("head")[0].getAttribute("data-user"),B=document.getElementsByTagName("head")[0].getAttribute("data-user-displayname"),U=void 0!==F&&F;var D=i(39285),M=i(36882),z=i(53334),$=i(43627),H=i(96763);const q={YES_NO_BUTTONS:70,OK_BUTTONS:71,FILEPICKER_TYPE_CHOOSE:1,FILEPICKER_TYPE_MOVE:2,FILEPICKER_TYPE_COPY:3,FILEPICKER_TYPE_COPY_MOVE:4,FILEPICKER_TYPE_CUSTOM:5,alert:function(t,e,n,r){this.message(t,e,"alert",q.OK_BUTTON,n,r)},info:function(t,e,n,r){this.message(t,e,"info",q.OK_BUTTON,n,r)},confirm:function(t,e,n,r){return this.message(t,e,"notice",q.YES_NO_BUTTONS,n,r)},confirmDestructive:function(t,e){let n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:q.OK_BUTTONS,r=arguments.length>3&&void 0!==arguments[3]?arguments[3]:()=>{};return(new d.ik).setName(e).setText(t).setButtons(n===q.OK_BUTTONS?[{label:(0,z.Tl)("core","Yes"),type:"error",callback:()=>{r.clicked=!0,r(!0)}}]:q._getLegacyButtons(n,r)).build().show().then((()=>{r.clicked||r(!1)}))},confirmHtml:function(t,e,n,r){return(new d.ik).setName(e).setText("").setButtons([{label:(0,z.Tl)("core","No"),callback:()=>{}},{label:(0,z.Tl)("core","Yes"),type:"primary",callback:()=>{n.clicked=!0,n(!0)}}]).build().setHTML(t).show().then((()=>{n.clicked||n(!1)}))},prompt:function(t,e,n,r,s,a){return new Promise((r=>{(0,d.Ss)((0,o.$V)((()=>i.e(1642).then(i.bind(i,71642)))),{text:t,name:e,callback:n,inputName:s,isPassword:!!a},(function(){n(...arguments),r()}))}))},filepicker(t,e){let n=arguments.length>2&&void 0!==arguments[2]&&arguments[2],r=arguments.length>3&&void 0!==arguments[3]?arguments[3]:void 0,i=arguments.length>5&&void 0!==arguments[5]?arguments[5]:d.bh.Choose,s=arguments.length>6&&void 0!==arguments[6]?arguments[6]:void 0,o=arguments.length>7&&void 0!==arguments[7]?arguments[7]:void 0;const a=(t,e)=>{const r=t=>{const e=(null==t?void 0:t.root)||"";let n=(null==t?void 0:t.path)||"";return n.startsWith(e)&&(n=n.slice(e.length)||"/"),n};return n?n=>t(n.map(r),e):n=>t(r(n[0]),e)},l=(0,d.a1)(t);i===this.FILEPICKER_TYPE_CUSTOM?(o.buttons||[]).forEach((t=>{l.addButton({callback:a(e,t.type),label:t.text,type:t.defaultButton?"primary":"secondary"})})):l.setButtonFactory(((t,n)=>{var r,s;const o=[],l=(null==t||null===(r=t[0])||void 0===r||null===(r=r.attributes)||void 0===r?void 0:r.displayName)||(null==t||null===(s=t[0])||void 0===s?void 0:s.basename),c=l||(0,$.basename)(n);return i===d.bh.Choose&&o.push({callback:a(e,d.bh.Choose),label:l&&!this.multiSelect?(0,z.Tl)("core","Choose {file}",{file:l}):(0,z.Tl)("core","Choose"),type:"primary"}),i!==d.bh.CopyMove&&i!==d.bh.Copy||o.push({callback:a(e,d.bh.Copy),label:c?(0,z.Tl)("core","Copy to {target}",{target:c}):(0,z.Tl)("core","Copy"),type:"primary",icon:M}),i!==d.bh.Move&&i!==d.bh.CopyMove||o.push({callback:a(e,d.bh.Move),label:c?(0,z.Tl)("core","Move to {target}",{target:c}):(0,z.Tl)("core","Move"),type:i===d.bh.Move?"primary":"secondary",icon:D}),o})),r&&l.setMimeTypeFilter("string"==typeof r?[r]:r||[]),"function"==typeof(null==o?void 0:o.filter)&&l.setFilter((t=>o.filter((t=>{var e,n,r,i,s,o;return{id:t.fileid||null,path:t.path,mimetype:t.mime||null,mtime:(null===(e=t.mtime)||void 0===e?void 0:e.getTime())||null,permissions:t.permissions,name:(null===(n=t.attributes)||void 0===n?void 0:n.displayName)||t.basename,etag:(null===(r=t.attributes)||void 0===r?void 0:r.etag)||null,hasPreview:(null===(i=t.attributes)||void 0===i?void 0:i.hasPreview)||null,mountType:(null===(s=t.attributes)||void 0===s?void 0:s.mountType)||null,quotaAvailableBytes:(null===(o=t.attributes)||void 0===o?void 0:o.quotaAvailableBytes)||null,icon:null,sharePermissions:null}})(t)))),l.allowDirectories(!0===(null==o?void 0:o.allowDirectoryChooser)||(null==r?void 0:r.includes("httpd/unix-directory"))||!1).setMultiSelect(n).startAt(s).build().pick()},message:function(t,e,n,r){let i=arguments.length>4&&void 0!==arguments[4]?arguments[4]:()=>{},s=arguments.length>6?arguments[6]:void 0;const o=(new d.ik).setName(e).setText(s?"":t).setButtons(q._getLegacyButtons(r,i));switch(n){case"alert":o.setSeverity("warning");break;case"notice":o.setSeverity("info")}const a=o.build();return s&&a.setHTML(t),a.show().then((()=>{i._clicked||i(!1)}))},_getLegacyButtons(t,e){var n,r,i;const s=[];switch("object"==typeof t?t.type:t){case q.YES_NO_BUTTONS:s.push({label:null!==(n=null==t?void 0:t.cancel)&&void 0!==n?n:(0,z.Tl)("core","No"),callback:()=>{e._clicked=!0,e(!1)}}),s.push({label:null!==(r=null==t?void 0:t.confirm)&&void 0!==r?r:(0,z.Tl)("core","Yes"),type:"primary",callback:()=>{e._clicked=!0,e(!0)}});break;case q.OK_BUTTONS:s.push({label:null!==(i=null==t?void 0:t.confirm)&&void 0!==i?i:(0,z.Tl)("core","OK"),type:"primary",callback:()=>{e._clicked=!0,e(!0)}});break;default:H.error("Invalid call to OC.dialogs")}return s},_fileexistsshown:!1,fileexists:function(t,e,r,i){var s=this,o=new(u().Deferred),a=function(t,e,n,r,i){r=Math.round(r),i=Math.round(i);for(var s=t.getContext("2d").getImageData(0,0,e,n),o=t.getContext("2d").getImageData(0,0,r,i),a=s.data,l=o.data,c=e/r,u=n/i,d=Math.ceil(c/2),h=Math.ceil(u/2),f=0;f<i;f++)for(var p=0;p<r;p++){for(var m=4*(p+f*r),g=0,v=0,y=0,b=0,w=0,A=0,_=0,x=(f+.5)*u,C=Math.floor(f*u);C<(f+1)*u;C++)for(var k=Math.abs(x-(C+.5))/h,N=(p+.5)*c,E=k*k,P=Math.floor(p*c);P<(p+1)*c;P++){var T=Math.abs(N-(P+.5))/d,j=Math.sqrt(E+T*T);j>=-1&&j<=1&&(g=2*j*j*j-3*j*j+1)>0&&(_+=g*a[3+(T=4*(P+C*e))],y+=g,a[T+3]<255&&(g=g*a[T+3]/250),b+=g*a[T],w+=g*a[T+1],A+=g*a[T+2],v+=g)}l[m]=b/v,l[m+1]=w/v,l[m+2]=A/v,l[m+3]=_/y}t.getContext("2d").clearRect(0,0,Math.max(e,r),Math.max(n,i)),t.width=r,t.height=i,t.getContext("2d").putImageData(o,0,0)},l=function(e,n,r){var i=e.find(".template").clone().removeClass("template").addClass("conflict"),s=i.find(".original"),o=i.find(".replacement");i.data("data",t),i.find(".filename").text(n.name),s.find(".size").text(At.Util.humanFileSize(n.size)),s.find(".mtime").text(At.Util.formatDate(n.mtime)),r.size&&r.lastModified&&(o.find(".size").text(At.Util.humanFileSize(r.size)),o.find(".mtime").text(At.Util.formatDate(r.lastModified)));var l=n.directory+"/"+n.name,c={file:l,x:96,y:96,c:n.etag,forceIcon:0},d=Files.generatePreviewUrl(c);d=d.replace(/'/g,"%27"),s.find(".icon").css({"background-image":"url('"+d+"')"}),function(t){var e=new(u().Deferred),n=t.type&&t.type.split("/").shift();if(window.FileReader&&"image"===n){var r=new FileReader;r.onload=function(t){var n=new Blob([t.target.result]);window.URL=window.URL||window.webkitURL;var r=window.URL.createObjectURL(n),i=new Image;i.src=r,i.onload=function(){var t,n,r,s,o,l,c,u=(t=i,o=document.createElement("canvas"),l=t.width,c=t.height,l>c?(r=0,n=(l-c)/2):(r=(c-l)/2,n=0),s=Math.min(l,c),o.width=s,o.height=s,o.getContext("2d").drawImage(t,n,r,s,s,0,0,s,s),a(o,s,s,96,96),o.toDataURL("image/png",.7));e.resolve(u)}},r.readAsArrayBuffer(t)}else e.reject();return e}(r).then((function(t){o.find(".icon").css("background-image","url("+t+")")}),(function(){l=At.MimeType.getIconUrl(r.type),o.find(".icon").css("background-image","url("+l+")")}));var h=e.find(".conflict").length;s.find("input:checkbox").attr("id","checkbox_original_"+h),o.find("input:checkbox").attr("id","checkbox_replacement_"+h),e.append(i),r.lastModified>n.mtime?o.find(".mtime").css("font-weight","bold"):r.lastModified<n.mtime&&s.find(".mtime").css("font-weight","bold"),r.size&&r.size>n.size?o.find(".size").css("font-weight","bold"):r.size&&r.size<n.size&&s.find(".size").css("font-weight","bold"),"readonly"===n.status&&(s.addClass("readonly").find('input[type="checkbox"]').prop("checked",!0).prop("disabled",!0),s.find(".message").text((0,z.Tl)("core","read-only")))},c="oc-dialog-fileexists-content",d="#"+c;if(this._fileexistsshown){var h=u()(d+" .conflicts");l(h,e,r);var f=u()(d+" .conflict").length,p=n("core","{count} file conflict","{count} file conflicts",f,{count:f});u()(d).parent().children(".oc-dialog-title").text(p),u()(window).trigger("resize"),o.resolve()}else this._fileexistsshown=!0,u().when(this._getFileExistsTemplate()).then((function(n){var a=(0,z.Tl)("core","One file conflict"),h=n.octemplate({dialog_name:c,title:a,type:"fileexists",allnewfiles:(0,z.Tl)("core","New Files"),allexistingfiles:(0,z.Tl)("core","Already existing files"),why:(0,z.Tl)("core","Which files do you want to keep?"),what:(0,z.Tl)("core","If you select both versions, the copied file will have a number added to its name.")});if(u()("body").append(h),e&&r){var f=h.find(".conflicts");l(f,e,r)}var p=[{text:(0,z.Tl)("core","Cancel"),classes:"cancel",click:function(){void 0!==i.onCancel&&i.onCancel(t),u()(d).ocdialog("close")}},{text:(0,z.Tl)("core","Continue"),classes:"continue",click:function(){void 0!==i.onContinue&&i.onContinue(u()(d+" .conflict")),u()(d).ocdialog("close")}}];u()(d).ocdialog({width:500,closeOnEscape:!0,modal:!0,buttons:p,closeButton:null,close:function(){s._fileexistsshown=!1;try{u()(this).ocdialog("destroy").remove()}catch(t){}}}),u()(d).css("height","auto");var m=h.closest(".oc-dialog").find("button.continue");function g(){var t=h.find(".conflicts .checkbox:checked").length;m.prop("disabled",0===t)}m.prop("disabled",!0),u()(d).find(".allnewfiles").on("click",(function(){u()(d).find('.conflict .replacement input[type="checkbox"]').prop("checked",u()(this).prop("checked"))})),u()(d).find(".allexistingfiles").on("click",(function(){u()(d).find('.conflict .original:not(.readonly) input[type="checkbox"]').prop("checked",u()(this).prop("checked"))})),u()(d).find(".conflicts").on("click",".replacement,.original:not(.readonly)",(function(){var t=u()(this).find('input[type="checkbox"]');t.prop("checked",!t.prop("checked"))})),u()(d).find(".conflicts").on("click",'.replacement input[type="checkbox"],.original:not(.readonly) input[type="checkbox"]',(function(){var t=u()(this);t.prop("checked",!t.prop("checked"))})),u()(d).on("click",".replacement,.allnewfiles",(function(){var t=u()(d).find('.conflict .replacement input[type="checkbox"]:checked').length;t===u()(d+" .conflict").length?(u()(d).find(".allnewfiles").prop("checked",!0),u()(d).find(".allnewfiles + .count").text((0,z.Tl)("core","(all selected)"))):t>0?(u()(d).find(".allnewfiles").prop("checked",!1),u()(d).find(".allnewfiles + .count").text((0,z.Tl)("core","({count} selected)",{count:t}))):(u()(d).find(".allnewfiles").prop("checked",!1),u()(d).find(".allnewfiles + .count").text("")),g()})),u()(d).on("click",".original,.allexistingfiles",(function(){var t=u()(d).find('.conflict .original input[type="checkbox"]:checked').length;t===u()(d+" .conflict").length?(u()(d).find(".allexistingfiles").prop("checked",!0),u()(d).find(".allexistingfiles + .count").text((0,z.Tl)("core","(all selected)"))):t>0?(u()(d).find(".allexistingfiles").prop("checked",!1),u()(d).find(".allexistingfiles + .count").text((0,z.Tl)("core","({count} selected)",{count:t}))):(u()(d).find(".allexistingfiles").prop("checked",!1),u()(d).find(".allexistingfiles + .count").text("")),g()})),o.resolve()})).fail((function(){o.reject(),alert((0,z.Tl)("core","Error loading file exists template"))}));return o.promise()},_getFileExistsTemplate:function(){var t=u().Deferred();if(this.$fileexistsTemplate)t.resolve(this.$fileexistsTemplate);else{var e=this;u().get(At.filePath("files","templates","fileexists.html"),(function(n){e.$fileexistsTemplate=u()(n),t.resolve(e.$fileexistsTemplate)})).fail((function(){t.reject()}))}return t.promise()}},V=q,W=((t,e)=>{let n=t.getElementsByTagName("head")[0].getAttribute("data-requesttoken");return{getToken:()=>n,setToken:t=>{n=t,e("csrf-token-update",{token:n})}}})(document,a.Ic),K=W.getToken,Y=(W.setToken,function(t,e){var n,r,i="";if(this.typelessListeners=[],this.closed=!1,this.listeners={},e)for(n in e)i+=n+"="+encodeURIComponent(e[n])+"&";if(i+="requesttoken="+encodeURIComponent(K()),this.useFallBack||"undefined"==typeof EventSource){var s="oc_eventsource_iframe_"+Y.iframeCount;Y.fallBackSources[Y.iframeCount]=this,this.iframe=u()("<iframe></iframe>"),this.iframe.attr("id",s),this.iframe.hide(),r="&",-1===t.indexOf("?")&&(r="?"),this.iframe.attr("src",t+r+"fallback=true&fallback_id="+Y.iframeCount+"&"+i),u()("body").append(this.iframe),this.useFallBack=!0,Y.iframeCount++}else r="&",-1===t.indexOf("?")&&(r="?"),this.source=new EventSource(t+r+i),this.source.onmessage=function(t){for(var e=0;e<this.typelessListeners.length;e++)this.typelessListeners[e](JSON.parse(t.data))}.bind(this);this.listen("__internal__",function(t){"close"===t&&this.close()}.bind(this))});Y.fallBackSources=[],Y.iframeCount=0,Y.fallBackCallBack=function(t,e,n){Y.fallBackSources[t].fallBackCallBack(e,n)},Y.prototype={typelessListeners:[],iframe:null,listeners:{},useFallBack:!1,fallBackCallBack:function(t,e){var n;if(!this.closed)if(t){if(void 0!==this.listeners.done)for(n=0;n<this.listeners[t].length;n++)this.listeners[t][n](e)}else for(n=0;n<this.typelessListeners.length;n++)this.typelessListeners[n](e)},lastLength:0,listen:function(t,e){e&&e.call&&(t?this.useFallBack?(this.listeners[t]||(this.listeners[t]=[]),this.listeners[t].push(e)):this.source.addEventListener(t,(function(t){void 0!==t.data?e(JSON.parse(t.data)):e("")}),!1):this.typelessListeners.push(e))},close:function(){this.closed=!0,void 0!==this.source&&this.source.close()}};const G=Y;var J=i(87485),X=i(96763);let Q=null,Z=null;const tt=function(t){if(Q){const e=Q;Q.trigger(new(u().Event)("beforeHide")),Q.slideUp(50,(function(){e.trigger(new(u().Event)("afterHide")),t&&t.apply(this,arguments)}))}u()(".menutoggle").attr("aria-expanded",!1),Z&&Z.attr("aria-expanded",!1),u()(".openedMenu").removeClass("openedMenu"),Q=null,Z=null},et=!!window._oc_isadmin;var nt=i(93633),rt=i.n(nt);const it={load:z.Zi,register:z.kz,_unregister:z.ht,translate:z.Tl,translatePlural:z.zw};rt().registerHelper("t",(function(t,e){return(0,z.Tl)(t,e)}));const st={startSaving(e){this.startAction(e,t("core","Saving …"))},startAction(t,e){u()(t).text(e).removeClass("success").removeClass("error").stop(!0,!0).show()},finishedSaving(t,e){this.finishedAction(t,e)},finishedAction(t,e){"success"===e.status?this.finishedSuccess(t,e.data.message):this.finishedError(t,e.data.message)},finishedSuccess(t,e){u()(t).text(e).addClass("success").removeClass("error").stop(!0,!0).delay(3e3).fadeOut(900).show()},finishedError(t,e){u()(t).text(e).addClass("error").removeClass("success").show()}};var ot=i(56760);i(51257);const at={requiresPasswordConfirmation:()=>(0,ot.o)(),requirePasswordConfirmation(t,e,n){(0,ot.C)().then(t,n)}},lt={_plugins:{},register(t,e){let n=this._plugins[t];n||(n=this._plugins[t]=[]),n.push(e)},getPlugins(t){return this._plugins[t]||[]},attach(t,e,n){const r=this.getPlugins(t);for(let t=0;t<r.length;t++)r[t].attach&&r[t].attach(e,n)},detach(t,e,n){const r=this.getPlugins(t);for(let t=0;t<r.length;t++)r[t].detach&&r[t].detach(e,n)}},ct=window._theme||{};var ut=i(95093),dt=i.n(ut);const ht={_handlers:[],_pushState(t,e,n){let r;if(r="string"==typeof t?t:At.buildQueryString(t),window.history.pushState){if(e=e||location.pathname+"?"+r,navigator.userAgent.toLowerCase().indexOf("firefox")>-1&&parseInt(navigator.userAgent.split("/").pop())<51){const t=document.querySelectorAll('[fill^="url(#"], [stroke^="url(#"], [filter^="url(#invert"]');for(let e,n=0,r=t.length;n<r;n++)e=t[n],e.style.fill=e.style.fill,e.style.stroke=e.style.stroke,e.removeAttribute("filter"),e.setAttribute("filter","url(#invert)")}n?window.history.replaceState(t,"",e):window.history.pushState(t,"",e)}else window.location.hash="?"+r,this._cancelPop=!0},pushState(t,e){this._pushState(t,e,!1)},replaceState(t,e){this._pushState(t,e,!0)},addOnPopStateHandler(t){this._handlers.push(t)},_parseHashQuery(){const t=window.location.hash,e=t.indexOf("?");return e>=0?t.substr(e+1):t.length?t.substr(1):""},_decodeQuery:t=>t.replace(/\+/g," "),parseUrlQuery(){const t=this._parseHashQuery();let e;return t&&(e=At.parseQueryString(this._decodeQuery(t))),e=l.default.extend(e||{},At.parseQueryString(this._decodeQuery(location.search))),e||{}},_onPopState(t){if(this._cancelPop)return void(this._cancelPop=!1);let e;if(this._handlers.length){e=t&&t.state,l.default.isString(e)?e=At.parseQueryString(e):e||(e=this.parseUrlQuery()||{});for(let t=0;t<this._handlers.length;t++)this._handlers[t](e)}}};var ft=i(35810),pt=i(96763);function mt(t){const e=[];let n,r=0,i=-1,s=0;for(;r<t.length;){n=t.charAt(r);const o=!s&&"."===n||n>="0"&&n<="9";o!==s&&(i++,e[i]="",s=o),e[i]+=n,r++}return e}const gt={History:ht,humanFileSize:ft.v7,computerFileSize(t){if("string"!=typeof t)return null;const e=t.toLowerCase().trim();let n=null;const r=e.match(/^[\s+]?([0-9]*)(\.([0-9]+))?( +)?([kmgtp]?b?)$/i);return null===r?null:(n=parseFloat(e),isFinite(n)?(r[5]&&(n*={b:1,k:1024,kb:1024,mb:1048576,m:1048576,gb:1073741824,g:1073741824,tb:1099511627776,t:1099511627776,pb:0x4000000000000,p:0x4000000000000}[r[5]]),n=Math.round(n),n):null)},formatDate:(t,e)=>(void 0===window.TESTING&&At.debug&&pt.warn("OC.Util.formatDate is deprecated and will be removed in Nextcloud 21. See @nextcloud/moment"),e=e||"LLL",dt()(t).format(e)),relativeModifiedDate(e){void 0===window.TESTING&&At.debug&&pt.warn("OC.Util.relativeModifiedDate is deprecated and will be removed in Nextcloud 21. See @nextcloud/moment");const n=dt()().diff(dt()(e));return n>=0&&n<45e3?t("core","seconds ago"):dt()(e).fromNow()},getScrollBarWidth(){if(this._scrollBarWidth)return this._scrollBarWidth;const t=document.createElement("p");t.style.width="100%",t.style.height="200px";const e=document.createElement("div");e.style.position="absolute",e.style.top="0px",e.style.left="0px",e.style.visibility="hidden",e.style.width="200px",e.style.height="150px",e.style.overflow="hidden",e.appendChild(t),document.body.appendChild(e);const n=t.offsetWidth;e.style.overflow="scroll";let r=t.offsetWidth;return n===r&&(r=e.clientWidth),document.body.removeChild(e),this._scrollBarWidth=n-r,this._scrollBarWidth},stripTime:t=>new Date(t.getFullYear(),t.getMonth(),t.getDate()),naturalSortCompare(t,e){let n;const r=mt(t),i=mt(e);for(n=0;r[n]&&i[n];n++)if(r[n]!==i[n]){const t=Number(r[n]),e=Number(i[n]);return t==r[n]&&e==i[n]?t-e:r[n].localeCompare(i[n],At.getLanguage())}return r.length-i.length},waitFor(t,e){const n=function(){!0!==t()&&setTimeout(n,e)};n()},isCookieSetToValue(t,e){const n=document.cookie.split(";");for(let r=0;r<n.length;r++){const i=n[r].split("=");if(i[0].trim()===t&&i[1].trim()===e)return!0}return!1}},vt=window._oc_debug;let yt=window._oc_webroot;if(void 0===yt){yt=location.pathname;const t=yt.indexOf("/index.php/");yt=-1!==t?yt.substr(0,t):yt.substr(0,yt.lastIndexOf("/"))}const bt=yt;var wt=i(96763);const At={coreApps:["","admin","log","core/search","core","3rdparty"],menuSpeed:50,PERMISSION_ALL:31,PERMISSION_CREATE:4,PERMISSION_DELETE:8,PERMISSION_NONE:0,PERMISSION_READ:1,PERMISSION_SHARE:16,PERMISSION_UPDATE:2,TAG_FAVORITE:"_$!<Favorite>!$_",fileIsBlacklisted:t=>!!t.match(L.blacklist_files_regex),Apps:g,AppConfig:w,appConfig:b,appswebroots:A,Backbone:I,config:L,currentUser:U,dialogs:V,EventSource:G,getCurrentUser:()=>({uid:U,displayName:B}),isUserAdmin:()=>et,L10N:it,_ajaxConnectionLostHandler:p,_processAjaxError:t=>{(0!==t.status||"abort"!==t.statusText&&"timeout"!==t.statusText&&!At._reloadCalled)&&(l.default.contains([302,303,307,401],t.status)&&At.currentUser?setTimeout((function(){if(!At._userIsNavigatingAway&&!At._reloadCalled){let t=0;const e=5,r=setInterval((function(){f.showUpdate(n("core","Problem loading page, reloading in %n second","Problem loading page, reloading in %n seconds",e-t)),t>=e&&(clearInterval(r),At.reload()),t++}),1e3);At._reloadCalled=!0}}),100):0===t.status&&setTimeout((function(){At._userIsNavigatingAway||At._reloadCalled||At._ajaxConnectionLostHandler()}),100))},registerXHRForErrorProcessing:t=>{t.addEventListener&&(t.addEventListener("load",(()=>{4===t.readyState&&(t.status>=200&&t.status<300||304===t.status||u()(document).trigger(new(u().Event)("ajaxError"),t))})),t.addEventListener("error",(()=>{u()(document).trigger(new(u().Event)("ajaxError"),t)})))},getCapabilities:()=>(OC.debug&&X.warn("OC.getCapabilities is deprecated and will be removed in Nextcloud 21. See @nextcloud/capabilities"),(0,J.F)()),hideMenus:tt,registerMenu:function(t,e,n,r){e.addClass("menu");const i="A"===t.prop("tagName")||"BUTTON"===t.prop("tagName");t.on(i?"click.menu":"click.menu keyup.menu",(function(i){i.preventDefault(),i.key&&"Enter"!==i.key||(e.is(Q)?tt():(Q&&tt(),!0===r&&e.parent().addClass("openedMenu"),t.attr("aria-expanded",!0),e.slideToggle(50,n),Q=e,Z=t))}))},showMenu:(t,e,n)=>{e.is(Q)||(tt(),Q=e,Z=t,e.trigger(new(u().Event)("beforeShow")),e.show(),e.trigger(new(u().Event)("afterShow")),l.default.isFunction(n)&&n())},unregisterMenu:(t,e)=>{e.is(Q)&&tt(),t.off("click.menu").removeClass("menutoggle"),e.removeClass("menu")},basename:R.P8,encodePath:R.O0,dirname:R.pD,isSamePath:R.ys,joinPaths:R.HS,getHost:()=>window.location.host,getHostName:()=>window.location.hostname,getPort:()=>window.location.port,getProtocol:()=>window.location.protocol.split(":")[0],getCanonicalLocale:z.lO,getLocale:z.JK,getLanguage:z.Z0,buildQueryString:t=>t?u().map(t,(function(t,e){let n=encodeURIComponent(e);return null!=t&&(n+="="+encodeURIComponent(t)),n})).join("&"):"",parseQueryString:t=>{let e,n;const r={};let i;if(!t)return null;e=t.indexOf("?"),e>=0&&(t=t.substr(e+1));const s=t.replace(/\+/g,"%20").split("&");for(let t=0;t<s.length;t++){const o=s[t];e=o.indexOf("="),n=e>=0?[o.substr(0,e),o.substr(e+1)]:[o],n.length&&(i=decodeURIComponent(n[0]),i&&(r[i]=n.length>1?decodeURIComponent(n[1]):null))}return r},msg:st,Notification:f,PasswordConfirmation:at,Plugins:lt,theme:ct,Util:gt,debug:vt,filePath:v.fg,generateUrl:v.Jv,get:(_t=window,t=>{const e=t.split("."),n=e.pop();for(let t=0;t<e.length;t++)if(!(_t=_t[e[t]]))return!1;return _t[n]}),set:(t=>(e,n)=>{const r=e.split("."),i=r.pop();for(let e=0;e<r.length;e++)t[r[e]]||(t[r[e]]={}),t=t[r[e]];return t[i]=n,n})(window),getRootPath:v.aU,imagePath:v.d0,redirect:t=>{window.location=t},reload:()=>{window.location.reload()},requestToken:K(),linkTo:v.uM,linkToOCS:(t,e)=>(0,v.KT)(t,{},{ocsVersion:e||1})+"/",linkToRemote:v.dC,linkToRemoteBase:t=>(0,v.aU)()+"/remote.php/"+t,webroot:bt};var _t;(0,a.B1)("csrf-token-update",(t=>{OC.requestToken=t.token,wt.info("OC.requestToken changed",t.token)}));var xt=i(38613);const Ct="%[a-f0-9]{2}",kt=new RegExp("("+Ct+")|([^%]+?)","gi"),Nt=new RegExp("("+Ct+")+","gi");function Et(t,e){try{return[decodeURIComponent(t.join(""))]}catch{}if(1===t.length)return t;e=e||1;const n=t.slice(0,e),r=t.slice(e);return Array.prototype.concat.call([],Et(n),Et(r))}function Pt(t){try{return decodeURIComponent(t)}catch{let e=t.match(kt)||[];for(let n=1;n<e.length;n++)e=(t=Et(e,n).join("")).match(kt)||[];return t}}function Tt(t,e){if("string"!=typeof t||"string"!=typeof e)throw new TypeError("Expected the arguments to be of type `string`");if(""===t||""===e)return[];const n=t.indexOf(e);return-1===n?[]:[t.slice(0,n),t.slice(n+e.length)]}function jt(t,e){const n={};if(Array.isArray(e))for(const r of e){const e=Object.getOwnPropertyDescriptor(t,r);e?.enumerable&&Object.defineProperty(n,r,e)}else for(const r of Reflect.ownKeys(t)){const i=Object.getOwnPropertyDescriptor(t,r);i.enumerable&&e(r,t[r],t)&&Object.defineProperty(n,r,i)}return n}const St=t=>null==t,Ot=t=>encodeURIComponent(t).replaceAll(/[!'()*]/g,(t=>`%${t.charCodeAt(0).toString(16).toUpperCase()}`)),It=Symbol("encodeFragmentIdentifier");function Rt(t){if("string"!=typeof t||1!==t.length)throw new TypeError("arrayFormatSeparator must be single character string")}function Lt(t,e){return e.encode?e.strict?Ot(t):encodeURIComponent(t):t}function Ft(t,e){return e.decode?function(t){if("string"!=typeof t)throw new TypeError("Expected `encodedURI` to be of type `string`, got `"+typeof t+"`");try{return decodeURIComponent(t)}catch{return function(t){const e={"%FE%FF":"��","%FF%FE":"��"};let n=Nt.exec(t);for(;n;){try{e[n[0]]=decodeURIComponent(n[0])}catch{const t=Pt(n[0]);t!==n[0]&&(e[n[0]]=t)}n=Nt.exec(t)}e["%C2"]="�";const r=Object.keys(e);for(const n of r)t=t.replace(new RegExp(n,"g"),e[n]);return t}(t)}}(t):t}function Bt(t){return Array.isArray(t)?t.sort():"object"==typeof t?Bt(Object.keys(t)).sort(((t,e)=>Number(t)-Number(e))).map((e=>t[e])):t}function Ut(t){const e=t.indexOf("#");return-1!==e&&(t=t.slice(0,e)),t}function Dt(t,e){return e.parseNumbers&&!Number.isNaN(Number(t))&&"string"==typeof t&&""!==t.trim()?t=Number(t):!e.parseBooleans||null===t||"true"!==t.toLowerCase()&&"false"!==t.toLowerCase()||(t="true"===t.toLowerCase()),t}function Mt(t){const e=(t=Ut(t)).indexOf("?");return-1===e?"":t.slice(e+1)}function zt(t,e){Rt((e={decode:!0,sort:!0,arrayFormat:"none",arrayFormatSeparator:",",parseNumbers:!1,parseBooleans:!1,...e}).arrayFormatSeparator);const n=function(t){let e;switch(t.arrayFormat){case"index":return(t,n,r)=>{e=/\[(\d*)]$/.exec(t),t=t.replace(/\[\d*]$/,""),e?(void 0===r[t]&&(r[t]={}),r[t][e[1]]=n):r[t]=n};case"bracket":return(t,n,r)=>{e=/(\[])$/.exec(t),t=t.replace(/\[]$/,""),e?void 0!==r[t]?r[t]=[...r[t],n]:r[t]=[n]:r[t]=n};case"colon-list-separator":return(t,n,r)=>{e=/(:list)$/.exec(t),t=t.replace(/:list$/,""),e?void 0!==r[t]?r[t]=[...r[t],n]:r[t]=[n]:r[t]=n};case"comma":case"separator":return(e,n,r)=>{const i="string"==typeof n&&n.includes(t.arrayFormatSeparator),s="string"==typeof n&&!i&&Ft(n,t).includes(t.arrayFormatSeparator);n=s?Ft(n,t):n;const o=i||s?n.split(t.arrayFormatSeparator).map((e=>Ft(e,t))):null===n?n:Ft(n,t);r[e]=o};case"bracket-separator":return(e,n,r)=>{const i=/(\[])$/.test(e);if(e=e.replace(/\[]$/,""),!i)return void(r[e]=n?Ft(n,t):n);const s=null===n?[]:n.split(t.arrayFormatSeparator).map((e=>Ft(e,t)));void 0!==r[e]?r[e]=[...r[e],...s]:r[e]=s};default:return(t,e,n)=>{void 0!==n[t]?n[t]=[...[n[t]].flat(),e]:n[t]=e}}}(e),r=Object.create(null);if("string"!=typeof t)return r;if(!(t=t.trim().replace(/^[?#&]/,"")))return r;for(const i of t.split("&")){if(""===i)continue;const t=e.decode?i.replaceAll("+"," "):i;let[s,o]=Tt(t,"=");void 0===s&&(s=t),o=void 0===o?null:["comma","separator","bracket-separator"].includes(e.arrayFormat)?o:Ft(o,e),n(Ft(s,e),o,r)}for(const[t,n]of Object.entries(r))if("object"==typeof n&&null!==n)for(const[t,r]of Object.entries(n))n[t]=Dt(r,e);else r[t]=Dt(n,e);return!1===e.sort?r:(!0===e.sort?Object.keys(r).sort():Object.keys(r).sort(e.sort)).reduce(((t,e)=>{const n=r[e];return t[e]=Boolean(n)&&"object"==typeof n&&!Array.isArray(n)?Bt(n):n,t}),Object.create(null))}function $t(t,e){if(!t)return"";Rt((e={encode:!0,strict:!0,arrayFormat:"none",arrayFormatSeparator:",",...e}).arrayFormatSeparator);const n=n=>e.skipNull&&St(t[n])||e.skipEmptyString&&""===t[n],r=function(t){switch(t.arrayFormat){case"index":return e=>(n,r)=>{const i=n.length;return void 0===r||t.skipNull&&null===r||t.skipEmptyString&&""===r?n:null===r?[...n,[Lt(e,t),"[",i,"]"].join("")]:[...n,[Lt(e,t),"[",Lt(i,t),"]=",Lt(r,t)].join("")]};case"bracket":return e=>(n,r)=>void 0===r||t.skipNull&&null===r||t.skipEmptyString&&""===r?n:null===r?[...n,[Lt(e,t),"[]"].join("")]:[...n,[Lt(e,t),"[]=",Lt(r,t)].join("")];case"colon-list-separator":return e=>(n,r)=>void 0===r||t.skipNull&&null===r||t.skipEmptyString&&""===r?n:null===r?[...n,[Lt(e,t),":list="].join("")]:[...n,[Lt(e,t),":list=",Lt(r,t)].join("")];case"comma":case"separator":case"bracket-separator":{const e="bracket-separator"===t.arrayFormat?"[]=":"=";return n=>(r,i)=>void 0===i||t.skipNull&&null===i||t.skipEmptyString&&""===i?r:(i=null===i?"":i,0===r.length?[[Lt(n,t),e,Lt(i,t)].join("")]:[[r,Lt(i,t)].join(t.arrayFormatSeparator)])}default:return e=>(n,r)=>void 0===r||t.skipNull&&null===r||t.skipEmptyString&&""===r?n:null===r?[...n,Lt(e,t)]:[...n,[Lt(e,t),"=",Lt(r,t)].join("")]}}(e),i={};for(const[e,r]of Object.entries(t))n(e)||(i[e]=r);const s=Object.keys(i);return!1!==e.sort&&s.sort(e.sort),s.map((n=>{const i=t[n];return void 0===i?"":null===i?Lt(n,e):Array.isArray(i)?0===i.length&&"bracket-separator"===e.arrayFormat?Lt(n,e)+"[]":i.reduce(r(n),[]).join("&"):Lt(n,e)+"="+Lt(i,e)})).filter((t=>t.length>0)).join("&")}function Ht(t,e){e={decode:!0,...e};let[n,r]=Tt(t,"#");return void 0===n&&(n=t),{url:n?.split("?")?.[0]??"",query:zt(Mt(t),e),...e&&e.parseFragmentIdentifier&&r?{fragmentIdentifier:Ft(r,e)}:{}}}function qt(t,e){e={encode:!0,strict:!0,[It]:!0,...e};const n=Ut(t.url).split("?")[0]||"";let r=$t({...zt(Mt(t.url),{sort:!1}),...t.query},e);r&&=`?${r}`;let i=function(t){let e="";const n=t.indexOf("#");return-1!==n&&(e=t.slice(n)),e}(t.url);if("string"==typeof t.fragmentIdentifier){const r=new URL(n);r.hash=t.fragmentIdentifier,i=e[It]?r.hash:`#${t.fragmentIdentifier}`}return`${n}${r}${i}`}function Vt(t,e,n){n={parseFragmentIdentifier:!0,[It]:!1,...n};const{url:r,query:i,fragmentIdentifier:s}=Ht(t,n);return qt({url:r,query:jt(i,e),fragmentIdentifier:s},n)}function Wt(t,e,n){return Vt(t,Array.isArray(e)?t=>!e.includes(t):(t,n)=>!e(t,n),n)}const Kt=s;var Yt=i(17334),Gt=i(16044),Jt=i(82182),Xt=i(48934);const Qt={computed:{userNameInputLengthIs255(){return this.user.length>=255},userInputHelperText(){if(this.userNameInputLengthIs255)return t("core","Email length is at max (255)")}}};var Zt=i(9518);const te={name:"LoginButton",components:{ArrowRight:i(9191).A,NcButton:Zt.A},props:{value:{type:String,default:(0,z.Tl)("core","Log in")},valueLoading:{type:String,default:(0,z.Tl)("core","Logging in …")},loading:{type:Boolean,required:!0},invertedColors:{type:Boolean,default:!1}}};var ee=i(85072),ne=i.n(ee),re=i(97825),ie=i.n(re),se=i(77659),oe=i.n(se),ae=i(55056),le=i.n(ae),ce=i(10540),ue=i.n(ce),de=i(41113),he=i.n(de),fe=i(13020),pe={};pe.styleTagTransform=he(),pe.setAttributes=le(),pe.insert=oe().bind(null,"head"),pe.domAPI=ie(),pe.insertStyleElement=ue(),ne()(fe.A,pe),fe.A&&fe.A.locals&&fe.A.locals;var me=i(14486);const ge=(0,me.A)(te,(function(){var t=this,e=t._self._c;return e("NcButton",{attrs:{type:"primary","native-type":"submit",wide:!0},on:{click:function(e){return t.$emit("click")}},scopedSlots:t._u([{key:"icon",fn:function(){return[t.loading?e("div",{staticClass:"submit-wrapper__icon icon-loading-small-dark"}):e("ArrowRight",{staticClass:"submit-wrapper__icon"})]},proxy:!0}])},[t._v("\n\t"+t._s(t.loading?t.valueLoading:t.value)+"\n\t")])}),[],!1,null,"d2cd6448",null).exports,ve={name:"LoginForm",components:{LoginButton:ge,NcPasswordField:Gt.A,NcTextField:Jt.A,NcNoteCard:Xt.A},mixins:[Qt],props:{username:{type:String,default:""},redirectUrl:{type:[String,Boolean],default:!1},errors:{type:Array,default:()=>[]},messages:{type:Array,default:()=>[]},throttleDelay:{type:Number,default:0},autoCompleteAllowed:{type:Boolean,default:!0},directLogin:{type:Boolean,default:!1},emailStates:{type:Array,default:()=>[]}},setup(){var t;return{t:z.Tl,headlineText:(0,z.Tl)("core","Log in to {productName}",{productName:OC.theme.name},void 0,{sanitize:!1,escape:!1}),loginTimeout:(0,xt.C)("core","loginTimeout",300),requestToken:window.OC.requestToken,timezone:null===(t=new Intl.DateTimeFormat)||void 0===t||null===(t=t.resolvedOptions())||void 0===t?void 0:t.timeZone,timezoneOffset:-(new Date).getTimezoneOffset()/60}},data:()=>({loading:!1,user:"",password:""}),computed:{resetFormTimeout(){return this.loginTimeout<=0?()=>{}:(0,Yt.debounce)(this.handleResetForm,1e3*this.loginTimeout)},isError(){return this.invalidPassword||this.userDisabled||this.throttleDelay>5e3},errorLabel(){return this.invalidPassword?(0,z.Tl)("core","Wrong login or password."):this.userDisabled?(0,z.Tl)("core","This account is disabled"):this.throttleDelay>5e3?(0,z.Tl)("core","We have detected multiple invalid login attempts from your IP. Therefore your next login is throttled up to 30 seconds."):void 0},apacheAuthFailed(){return-1!==this.errors.indexOf("apacheAuthFailed")},csrfCheckFailed(){return-1!==this.errors.indexOf("csrfCheckFailed")},internalException(){return-1!==this.errors.indexOf("internalexception")},invalidPassword(){return-1!==this.errors.indexOf("invalidpassword")},userDisabled(){return-1!==this.errors.indexOf("userdisabled")},loadingIcon:()=>(0,v.d0)("core","loading-dark.gif"),loginActionUrl:()=>(0,v.Jv)("login"),emailEnabled(){return this.emailStates?this.emailStates.every((t=>"1"===t)):1},loginText(){return this.emailEnabled?(0,z.Tl)("core","Login with account name or email"):(0,z.Tl)("core","Login with account name")}},watch:{password(){this.resetFormTimeout()}},mounted(){""===this.username?this.$refs.user.$refs.inputField.$refs.input.focus():(this.user=this.username,this.$refs.password.$refs.inputField.$refs.input.focus())},methods:{handleResetForm(){this.password=""},updateUsername(){this.$emit("update:username",this.user)},submit(){this.loading=!0,this.$emit("submit")}}};var ye=i(31286),be={};be.styleTagTransform=he(),be.setAttributes=le(),be.insert=oe().bind(null,"head"),be.domAPI=ie(),be.insertStyleElement=ue(),ne()(ye.A,be),ye.A&&ye.A.locals&&ye.A.locals;const we=(0,me.A)(ve,(function(){var t=this,e=t._self._c;return e("form",{ref:"loginForm",staticClass:"login-form",attrs:{method:"post",name:"login",action:t.loginActionUrl},on:{submit:t.submit}},[e("fieldset",{staticClass:"login-form__fieldset",attrs:{"data-login-form":""}},[t.apacheAuthFailed?e("NcNoteCard",{attrs:{title:t.t("core","Server side authentication failed!"),type:"warning"}},[t._v("\n\t\t\t"+t._s(t.t("core","Please contact your administrator."))+"\n\t\t")]):t._e(),t._v(" "),t.csrfCheckFailed?e("NcNoteCard",{attrs:{heading:t.t("core","Temporary error"),type:"error"}},[t._v("\n\t\t\t"+t._s(t.t("core","Please try again."))+"\n\t\t")]):t._e(),t._v(" "),t.messages.length>0?e("NcNoteCard",t._l(t.messages,(function(n,r){return e("div",{key:r},[t._v("\n\t\t\t\t"+t._s(n)),e("br")])})),0):t._e(),t._v(" "),t.internalException?e("NcNoteCard",{class:t.t("core","An internal error occurred."),attrs:{type:"warning"}},[t._v("\n\t\t\t"+t._s(t.t("core","Please try again or contact your administrator."))+"\n\t\t")]):t._e(),t._v(" "),e("div",{staticClass:"hidden",attrs:{id:"message"}},[e("img",{staticClass:"float-spinner",attrs:{alt:"",src:t.loadingIcon}}),t._v(" "),e("span",{attrs:{id:"messageText"}}),t._v(" "),e("div",{staticStyle:{clear:"both"}})]),t._v(" "),e("h2",{staticClass:"login-form__headline",attrs:{"data-login-form-headline":""}},[t._v("\n\t\t\t"+t._s(t.headlineText)+"\n\t\t")]),t._v(" "),e("NcTextField",{ref:"user",class:{shake:t.invalidPassword},attrs:{id:"user",label:t.loginText,name:"user",maxlength:255,value:t.user,autocapitalize:"none",spellchecking:!1,autocomplete:t.autoCompleteAllowed?"username":"off",required:"",error:t.userNameInputLengthIs255,"helper-text":t.userInputHelperText,"data-login-form-input-user":""},on:{"update:value":function(e){t.user=e},change:t.updateUsername}}),t._v(" "),e("NcPasswordField",{ref:"password",class:{shake:t.invalidPassword},attrs:{id:"password",name:"password",value:t.password,spellchecking:!1,autocapitalize:"none",autocomplete:t.autoCompleteAllowed?"current-password":"off",label:t.t("core","Password"),"helper-text":t.errorLabel,error:t.isError,"data-login-form-input-password":"",required:""},on:{"update:value":function(e){t.password=e}}}),t._v(" "),e("LoginButton",{attrs:{"data-login-form-submit":"",loading:t.loading}}),t._v(" "),t.redirectUrl?e("input",{attrs:{type:"hidden",name:"redirect_url"},domProps:{value:t.redirectUrl}}):t._e(),t._v(" "),e("input",{attrs:{type:"hidden",name:"timezone"},domProps:{value:t.timezone}}),t._v(" "),e("input",{attrs:{type:"hidden",name:"timezone_offset"},domProps:{value:t.timezoneOffset}}),t._v(" "),e("input",{attrs:{type:"hidden",name:"requesttoken"},domProps:{value:t.requestToken}}),t._v(" "),t.directLogin?e("input",{attrs:{type:"hidden",name:"direct",value:"1"}}):t._e()],1)])}),[],!1,null,"7d917450",null).exports;function Ae(t){const e=new Uint8Array(t);let n="";for(const t of e)n+=String.fromCharCode(t);return btoa(n).replace(/\+/g,"-").replace(/\//g,"_").replace(/=/g,"")}function _e(t){const e=t.replace(/-/g,"+").replace(/_/g,"/"),n=(4-e.length%4)%4,r=e.padEnd(e.length+n,"="),i=atob(r),s=new ArrayBuffer(i.length),o=new Uint8Array(s);for(let t=0;t<i.length;t++)o[t]=i.charCodeAt(t);return s}function xe(){return void 0!==window?.PublicKeyCredential&&"function"==typeof window.PublicKeyCredential}function Ce(t){const{id:e}=t;return{...t,id:_e(e),transports:t.transports}}i(96763);class ke extends Error{constructor({message:t,code:e,cause:n,name:r}){super(t,{cause:n}),this.name=r??n.name,this.code=e}}const Ne=new class{createNewAbortSignal(){if(this.controller){const t=new Error("Cancelling existing WebAuthn API call for new one");t.name="AbortError",this.controller.abort(t)}const t=new AbortController;return this.controller=t,t.signal}cancelCeremony(){if(this.controller){const t=new Error("Manually cancelling existing WebAuthn API call");t.name="AbortError",this.controller.abort(t),this.controller=void 0}}},Ee=["cross-platform","platform"];function Pe(t){if(t&&!(Ee.indexOf(t)<0))return t}var Te=i(26287),je=i(92457),Se=i(53529);const Oe=null===(Ie=(0,je.HW)())?(0,Se.YK)().setApp("core").build():(0,Se.YK)().setApp("core").setUid(Ie.uid).build();var Ie;class Re extends Error{}const Le={name:"InformationIcon",emits:["click"],props:{title:{type:String},fillColor:{type:String,default:"currentColor"},size:{type:Number,default:24}}},Fe=(0,me.A)(Le,(function(){var t=this,e=t._self._c;return e("span",t._b({staticClass:"material-design-icon information-icon",attrs:{"aria-hidden":!t.title||null,"aria-label":t.title,role:"img"},on:{click:function(e){return t.$emit("click",e)}}},"span",t.$attrs,!1),[e("svg",{staticClass:"material-design-icon__svg",attrs:{fill:t.fillColor,width:t.size,height:t.size,viewBox:"0 0 24 24"}},[e("path",{attrs:{d:"M13,9H11V7H13M13,17H11V11H13M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2Z"}},[t.title?e("title",[t._v(t._s(t.title))]):t._e()])])])}),[],!1,null,null,null).exports,Be={name:"LockOpenIcon",emits:["click"],props:{title:{type:String},fillColor:{type:String,default:"currentColor"},size:{type:Number,default:24}}},Ue=(0,me.A)(Be,(function(){var t=this,e=t._self._c;return e("span",t._b({staticClass:"material-design-icon lock-open-icon",attrs:{"aria-hidden":!t.title||null,"aria-label":t.title,role:"img"},on:{click:function(e){return t.$emit("click",e)}}},"span",t.$attrs,!1),[e("svg",{staticClass:"material-design-icon__svg",attrs:{fill:t.fillColor,width:t.size,height:t.size,viewBox:"0 0 24 24"}},[e("path",{attrs:{d:"M18,8A2,2 0 0,1 20,10V20A2,2 0 0,1 18,22H6C4.89,22 4,21.1 4,20V10A2,2 0 0,1 6,8H15V6A3,3 0 0,0 12,3A3,3 0 0,0 9,6H7A5,5 0 0,1 12,1A5,5 0 0,1 17,6V8H18M12,17A2,2 0 0,0 14,15A2,2 0 0,0 12,13A2,2 0 0,0 10,15A2,2 0 0,0 12,17Z"}},[t.title?e("title",[t._v(t._s(t.title))]):t._e()])])])}),[],!1,null,null,null).exports;var De=i(96763);const Me={name:"PasswordLessLoginForm",components:{LoginButton:ge,InformationIcon:Fe,LockOpenIcon:Ue,NcTextField:Jt.A},props:{username:{type:String,default:""},redirectUrl:{type:[String,Boolean],default:!1},autoCompleteAllowed:{type:Boolean,default:!0},isHttps:{type:Boolean,default:!1},isLocalhost:{type:Boolean,default:!1}},setup:()=>({supportsWebauthn:xe()}),data(){return{user:this.username,loading:!1,validCredentials:!0}},methods:{async authenticate(){if(this.$refs.loginForm.checkValidity()){De.debug("passwordless login initiated");try{const t=await async function(t){const e=(0,v.Jv)("/login/webauthn/start"),{data:n}=await Te.A.post(e,{loginName:t});if(!n.allowCredentials||0===n.allowCredentials.length)throw Oe.error("No valid credentials returned for webauthn"),new Re;return await async function(t,e=!1){if(!xe())throw new Error("WebAuthn is not supported in this browser");let n;0!==t.allowCredentials?.length&&(n=t.allowCredentials?.map(Ce));const r={...t,challenge:_e(t.challenge),allowCredentials:n},i={};if(e){if(!await function(){if(!xe())return new Promise((t=>t(!1)));const t=window.PublicKeyCredential;return void 0===t.isConditionalMediationAvailable?new Promise((t=>t(!1))):t.isConditionalMediationAvailable()}())throw Error("Browser does not support WebAuthn autofill");if(document.querySelectorAll("input[autocomplete$='webauthn']").length<1)throw Error('No <input> with "webauthn" as the only or last value in its `autocomplete` attribute was detected');i.mediation="conditional",r.allowCredentials=[]}let s;i.publicKey=r,i.signal=Ne.createNewAbortSignal();try{s=await navigator.credentials.get(i)}catch(t){throw function({error:t,options:e}){const{publicKey:n}=e;if(!n)throw Error("options was missing required publicKey property");if("AbortError"===t.name){if(e.signal instanceof AbortSignal)return new ke({message:"Authentication ceremony was sent an abort signal",code:"ERROR_CEREMONY_ABORTED",cause:t})}else{if("NotAllowedError"===t.name)return new ke({message:t.message,code:"ERROR_PASSTHROUGH_SEE_CAUSE_PROPERTY",cause:t});if("SecurityError"===t.name){const e=window.location.hostname;if("localhost"!==(r=e)&&!/^([a-z0-9]+(-[a-z0-9]+)*\.)+[a-z]{2,}$/i.test(r))return new ke({message:`${window.location.hostname} is an invalid domain`,code:"ERROR_INVALID_DOMAIN",cause:t});if(n.rpId!==e)return new ke({message:`The RP ID "${n.rpId}" is invalid for this domain`,code:"ERROR_INVALID_RP_ID",cause:t})}else if("UnknownError"===t.name)return new ke({message:"The authenticator was unable to process the specified options, or could not create a new assertion signature",code:"ERROR_AUTHENTICATOR_GENERAL_ERROR",cause:t})}var r;return t}({error:t,options:i})}if(!s)throw new Error("Authentication was not completed");const{id:o,rawId:a,response:l,type:c}=s;let u;return l.userHandle&&(u=Ae(l.userHandle)),{id:o,rawId:Ae(a),response:{authenticatorData:Ae(l.authenticatorData),clientDataJSON:Ae(l.clientDataJSON),signature:Ae(l.signature),userHandle:u},type:c,clientExtensionResults:s.getClientExtensionResults(),authenticatorAttachment:Pe(s.authenticatorAttachment)}}(n)}(this.user);await this.completeAuthentication(t)}catch(t){if(t instanceof NoValidCredentials)return void(this.validCredentials=!1);Oe.debug(t)}}},changeUsername(t){this.user=t,this.$emit("update:username",this.user)},completeAuthentication(t){const e=this.redirectUrl;return async function(t){const e=(0,v.Jv)("/login/webauthn/finish"),{data:n}=await Te.A.post(e,{data:JSON.stringify(t)});return n}(t).then((t=>{let{defaultRedirectUrl:n}=t;De.debug("Logged in redirecting"),window.location.href=e||n})).catch((t=>{De.debug("GOT AN ERROR WHILE SUBMITTING CHALLENGE!"),De.debug(t)}))},submit(){}}};var ze=i(87511),$e={};$e.styleTagTransform=he(),$e.setAttributes=le(),$e.insert=oe().bind(null,"head"),$e.domAPI=ie(),$e.insertStyleElement=ue(),ne()(ze.A,$e),ze.A&&ze.A.locals&&ze.A.locals;const He=(0,me.A)(Me,(function(){var t=this,e=t._self._c;return(t.isHttps||t.isLocalhost)&&t.supportsWebauthn?e("form",{ref:"loginForm",attrs:{method:"post",name:"login"},on:{submit:function(e){return e.preventDefault(),t.submit.apply(null,arguments)}}},[e("h2",[t._v(t._s(t.t("core","Log in with a device")))]),t._v(" "),e("fieldset",[e("NcTextField",{attrs:{required:"",value:t.user,autocomplete:t.autoCompleteAllowed?"on":"off",error:!t.validCredentials,label:t.t("core","Login or email"),placeholder:t.t("core","Login or email"),"helper-text":t.validCredentials?"":t.t("core","Your account is not setup for passwordless login.")},on:{"update:value":t.changeUsername}}),t._v(" "),t.validCredentials?e("LoginButton",{attrs:{loading:t.loading},on:{click:t.authenticate}}):t._e()],1)]):t.supportsWebauthn?t.isHttps||t.isLocalhost?t._e():e("div",{staticClass:"update"},[e("LockOpenIcon",{attrs:{size:"70"}}),t._v(" "),e("h2",[t._v(t._s(t.t("core","Your connection is not secure")))]),t._v(" "),e("p",{staticClass:"infogroup"},[t._v("\n\t\t"+t._s(t.t("core","Passwordless authentication is only available over a secure connection."))+"\n\t")])],1):e("div",{staticClass:"update"},[e("InformationIcon",{attrs:{size:"70"}}),t._v(" "),e("h2",[t._v(t._s(t.t("core","Browser not supported")))]),t._v(" "),e("p",{staticClass:"infogroup"},[t._v("\n\t\t"+t._s(t.t("core","Passwordless authentication is not supported in your browser."))+"\n\t")])],1)}),[],!1,null,"4a6bfc86",null).exports;var qe=i(96763);const Ve={name:"ResetPassword",components:{LoginButton:ge,NcNoteCard:Xt.A,NcTextField:Jt.A},mixins:[Qt],props:{username:{type:String,required:!0},resetPasswordLink:{type:String,required:!0}},data(){return{error:!1,loading:!1,message:void 0,user:this.username}},watch:{username(t){this.user=t}},methods:{updateUsername(){this.$emit("update:username",this.user)},submit(){this.loading=!0,this.error=!1,this.message="";const t=(0,v.Jv)("/lostpassword/email"),e={user:this.user};return Te.A.post(t,e).then((t=>t.data)).then((t=>{if("success"!==t.status)throw new Error("got status ".concat(t.status));this.message="send-success"})).catch((t=>{qe.error("could not send reset email request",t),this.error=!0,this.message="send-error"})).then((()=>{this.loading=!1}))}}};var We=i(87600),Ke={};Ke.styleTagTransform=he(),Ke.setAttributes=le(),Ke.insert=oe().bind(null,"head"),Ke.domAPI=ie(),Ke.insertStyleElement=ue(),ne()(We.A,Ke),We.A&&We.A.locals&&We.A.locals;const Ye=(0,me.A)(Ve,(function(){var t=this,e=t._self._c;return e("form",{staticClass:"login-form",on:{submit:function(e){return e.preventDefault(),t.submit.apply(null,arguments)}}},[e("fieldset",{staticClass:"login-form__fieldset"},[e("NcTextField",{attrs:{id:"user",value:t.user,name:"user",maxlength:255,autocapitalize:"off",label:t.t("core","Login or email"),error:t.userNameInputLengthIs255,"helper-text":t.userInputHelperText,required:""},on:{"update:value":function(e){t.user=e},change:t.updateUsername}}),t._v(" "),e("LoginButton",{attrs:{value:t.t("core","Reset password")}}),t._v(" "),"send-success"===t.message?e("NcNoteCard",{attrs:{type:"success"}},[t._v("\n\t\t\t"+t._s(t.t("core","If this account exists, a password reset message has been sent to its email address. If you do not receive it, verify your email address and/or Login, check your spam/junk folders or ask your local administration for help."))+"\n\t\t")]):"send-error"===t.message?e("NcNoteCard",{attrs:{type:"error"}},[t._v("\n\t\t\t"+t._s(t.t("core","Couldn't send reset email. Please contact your administrator."))+"\n\t\t")]):"reset-error"===t.message?e("NcNoteCard",{attrs:{type:"error"}},[t._v("\n\t\t\t"+t._s(t.t("core","Password cannot be changed. Please contact your administrator."))+"\n\t\t")]):t._e(),t._v(" "),e("a",{staticClass:"login-form__link",attrs:{href:"#"},on:{click:function(e){return e.preventDefault(),t.$emit("abort")}}},[t._v("\n\t\t\t"+t._s(t.t("core","Back to login"))+"\n\t\t")])],1)])}),[],!1,null,"cd5425c6",null).exports,Ge={name:"UpdatePassword",components:{LoginButton:ge},props:{username:{type:String,required:!0},resetPasswordTarget:{type:String,required:!0}},data(){return{error:!1,loading:!1,message:void 0,user:this.username,password:"",encrypted:!1,proceed:!1}},watch:{username(t){this.user=t}},methods:{async submit(){this.loading=!0,this.error=!1,this.message="";try{const{data:t}=await Te.A.post(this.resetPasswordTarget,{password:this.password,proceed:this.proceed});if(t&&"success"===t.status)this.message="send-success",this.$emit("update:username",this.user),this.$emit("done");else{if(!t||!t.encryption)throw t&&t.msg?new Error(t.msg):new Error;this.encrypted=!0}}catch(e){this.error=!0,this.message=e.message?e.message:t("core","Password cannot be changed. Please contact your administrator.")}finally{this.loading=!1}}}};var Je=i(37861),Xe={};Xe.styleTagTransform=he(),Xe.setAttributes=le(),Xe.insert=oe().bind(null,"head"),Xe.domAPI=ie(),Xe.insertStyleElement=ue(),ne()(Je.A,Xe),Je.A&&Je.A.locals&&Je.A.locals;const Qe=(0,me.A)(Ge,(function(){var t=this,e=t._self._c;return e("form",{on:{submit:function(e){return e.preventDefault(),t.submit.apply(null,arguments)}}},[e("fieldset",[e("p",[e("label",{staticClass:"infield",attrs:{for:"password"}},[t._v(t._s(t.t("core","New password")))]),t._v(" "),e("input",{directives:[{name:"model",rawName:"v-model",value:t.password,expression:"password"}],attrs:{id:"password",type:"password",name:"password",autocomplete:"new-password",autocapitalize:"none",spellcheck:"false",required:"",placeholder:t.t("core","New password")},domProps:{value:t.password},on:{input:function(e){e.target.composing||(t.password=e.target.value)}}})]),t._v(" "),t.encrypted?e("div",{staticClass:"update"},[e("p",[t._v("\n\t\t\t\t"+t._s(t.t("core","Your files are encrypted. There will be no way to get your data back after your password is reset. If you are not sure what to do, please contact your administrator before you continue. Do you really want to continue?"))+"\n\t\t\t")]),t._v(" "),e("input",{directives:[{name:"model",rawName:"v-model",value:t.proceed,expression:"proceed"}],staticClass:"checkbox",attrs:{id:"encrypted-continue",type:"checkbox"},domProps:{checked:Array.isArray(t.proceed)?t._i(t.proceed,null)>-1:t.proceed},on:{change:function(e){var n=t.proceed,r=e.target,i=!!r.checked;if(Array.isArray(n)){var s=t._i(n,null);r.checked?s<0&&(t.proceed=n.concat([null])):s>-1&&(t.proceed=n.slice(0,s).concat(n.slice(s+1)))}else t.proceed=i}}}),t._v(" "),e("label",{attrs:{for:"encrypted-continue"}},[t._v("\n\t\t\t\t"+t._s(t.t("core","I know what I'm doing"))+"\n\t\t\t")])]):t._e(),t._v(" "),e("LoginButton",{attrs:{loading:t.loading,value:t.t("core","Reset password"),"value-loading":t.t("core","Resetting password")}}),t._v(" "),t.error&&t.message?e("p",{class:{warning:t.error}},[t._v("\n\t\t\t"+t._s(t.message)+"\n\t\t")]):t._e()],1)])}),[],!1,null,"6bdd5975",null).exports;var Ze=i(96763);const tn=Kt.parse(location.search);if("1"===tn.clear)try{window.localStorage.clear(),window.sessionStorage.clear(),Ze.debug("Browser storage cleared")}catch(t){Ze.error("Could not clear browser storage",t)}const en={name:"Login",components:{LoginForm:we,PasswordLessLoginForm:He,ResetPassword:Ye,UpdatePassword:Qe,NcButton:Zt.A,NcNoteCard:Xt.A},data:()=>({loading:!1,user:(0,xt.C)("core","loginUsername",""),passwordlessLogin:!1,resetPassword:!1,errors:(0,xt.C)("core","loginErrors",[]),messages:(0,xt.C)("core","loginMessages",[]),redirectUrl:(0,xt.C)("core","loginRedirectUrl",!1),throttleDelay:(0,xt.C)("core","loginThrottleDelay",0),canResetPassword:(0,xt.C)("core","loginCanResetPassword",!1),resetPasswordLink:(0,xt.C)("core","loginResetPasswordLink",""),autoCompleteAllowed:(0,xt.C)("core","loginAutocomplete",!0),resetPasswordTarget:(0,xt.C)("core","resetPasswordTarget",""),resetPasswordUser:(0,xt.C)("core","resetPasswordUser",""),directLogin:"1"===tn.direct,hasPasswordless:(0,xt.C)("core","webauthn-available",!1),countAlternativeLogins:(0,xt.C)("core","countAlternativeLogins",!1),alternativeLogins:(0,xt.C)("core","alternativeLogins",[]),isHttps:"https:"===window.location.protocol,isLocalhost:"localhost"===window.location.hostname,hideLoginForm:(0,xt.C)("core","hideLoginForm",!1),emailStates:(0,xt.C)("core","emailStates",[])}),methods:{passwordResetFinished(){this.resetPasswordTarget="",this.directLogin=!0}}};var nn=i(30638),rn={};rn.styleTagTransform=he(),rn.setAttributes=le(),rn.insert=oe().bind(null,"head"),rn.domAPI=ie(),rn.insertStyleElement=ue(),ne()(nn.A,rn),nn.A&&nn.A.locals&&nn.A.locals;const sn=(0,me.A)(en,(function(){var t=this,e=t._self._c;return e("div",{staticClass:"guest-box login-box"},[!t.hideLoginForm||t.directLogin?[e("transition",{attrs:{name:"fade",mode:"out-in"}},[t.passwordlessLogin||t.resetPassword||""!==t.resetPasswordTarget?!t.loading&&t.passwordlessLogin?e("div",{key:"reset-pw-less",staticClass:"login-additional login-passwordless"},[e("PasswordLessLoginForm",{attrs:{username:t.user,"redirect-url":t.redirectUrl,"auto-complete-allowed":t.autoCompleteAllowed,"is-https":t.isHttps,"is-localhost":t.isLocalhost},on:{"update:username":function(e){t.user=e},submit:function(e){t.loading=!0}}}),t._v(" "),e("NcButton",{attrs:{type:"tertiary","aria-label":t.t("core","Back to login form"),wide:!0},on:{click:function(e){t.passwordlessLogin=!1}}},[t._v("\n\t\t\t\t\t"+t._s(t.t("core","Back"))+"\n\t\t\t\t")])],1):!t.loading&&t.canResetPassword?e("div",{key:"reset-can-reset",staticClass:"login-additional"},[e("div",{staticClass:"lost-password-container"},[t.resetPassword?e("ResetPassword",{attrs:{username:t.user,"reset-password-link":t.resetPasswordLink},on:{"update:username":function(e){t.user=e},abort:function(e){t.resetPassword=!1}}}):t._e()],1)]):""!==t.resetPasswordTarget?e("div",[e("UpdatePassword",{attrs:{username:t.user,"reset-password-target":t.resetPasswordTarget},on:{"update:username":function(e){t.user=e},done:t.passwordResetFinished}})],1):t._e():e("div",[e("LoginForm",{attrs:{username:t.user,"redirect-url":t.redirectUrl,"direct-login":t.directLogin,messages:t.messages,errors:t.errors,"throttle-delay":t.throttleDelay,"auto-complete-allowed":t.autoCompleteAllowed,"email-states":t.emailStates},on:{"update:username":function(e){t.user=e},submit:function(e){t.loading=!0}}}),t._v(" "),t.canResetPassword&&""!==t.resetPasswordLink?e("a",{staticClass:"login-box__link",attrs:{id:"lost-password",href:t.resetPasswordLink}},[t._v("\n\t\t\t\t\t"+t._s(t.t("core","Forgot password?"))+"\n\t\t\t\t")]):t.canResetPassword&&!t.resetPassword?e("a",{staticClass:"login-box__link",attrs:{id:"lost-password",href:t.resetPasswordLink},on:{click:function(e){e.preventDefault(),t.resetPassword=!0}}},[t._v("\n\t\t\t\t\t"+t._s(t.t("core","Forgot password?"))+"\n\t\t\t\t")]):t._e(),t._v(" "),t.hasPasswordless?[t.countAlternativeLogins?e("div",{staticClass:"alternative-logins"},[t.hasPasswordless?e("a",{staticClass:"button",class:{"single-alt-login-option":t.countAlternativeLogins},attrs:{href:"#"},on:{click:function(e){e.preventDefault(),t.passwordlessLogin=!0}}},[t._v("\n\t\t\t\t\t\t\t"+t._s(t.t("core","Log in with a device"))+"\n\t\t\t\t\t\t")]):t._e()]):e("a",{attrs:{href:"#"},on:{click:function(e){e.preventDefault(),t.passwordlessLogin=!0}}},[t._v("\n\t\t\t\t\t\t"+t._s(t.t("core","Log in with a device"))+"\n\t\t\t\t\t")])]:t._e()],2)])]:[e("transition",{attrs:{name:"fade",mode:"out-in"}},[e("NcNoteCard",{attrs:{type:"info",title:t.t("core","Login form is disabled.")}},[t._v("\n\t\t\t\t"+t._s(t.t("core","The Nextcloud login form is disabled. Use another login option if available or contact your administration."))+"\n\t\t\t")])],1)],t._v(" "),e("div",{staticClass:"alternative-logins",attrs:{id:"alternative-logins"}},t._l(t.alternativeLogins,(function(n,r){return e("NcButton",{key:r,class:[n.class],attrs:{type:"secondary",wide:!0,role:"link",href:n.href}},[t._v("\n\t\t\t"+t._s(n.name)+"\n\t\t")])})),1)],2)}),[],!1,null,null,null).exports,on={data:()=>({OC:At}),methods:{t:it.translate.bind(it),n:it.translatePlural.bind(it)}};o.Ay.mixin(on),(new(o.Ay.extend(sn))).$mount("#login")},21391:(t,e,n)=>{var r,i,s;s="object"==typeof self&&self.self===self&&self||"object"==typeof n.g&&n.g.global===n.g&&n.g,r=[n(4523),n(74692),e],i=function(t,e,n){s.Backbone=function(t,e,n,r){var i=t.Backbone,s=Array.prototype.slice;e.VERSION="1.6.0",e.$=r,e.noConflict=function(){return t.Backbone=i,this},e.emulateHTTP=!1,e.emulateJSON=!1;var o,a=e.Events={},l=/\s+/,c=function(t,e,r,i,s){var o,a=0;if(r&&"object"==typeof r){void 0!==i&&"context"in s&&void 0===s.context&&(s.context=i);for(o=n.keys(r);a<o.length;a++)e=c(t,e,o[a],r[o[a]],s)}else if(r&&l.test(r))for(o=r.split(l);a<o.length;a++)e=t(e,o[a],i,s);else e=t(e,r,i,s);return e};a.on=function(t,e,n){return this._events=c(u,this._events||{},t,e,{context:n,ctx:this,listening:o}),o&&((this._listeners||(this._listeners={}))[o.id]=o,o.interop=!1),this},a.listenTo=function(t,e,r){if(!t)return this;var i=t._listenId||(t._listenId=n.uniqueId("l")),s=this._listeningTo||(this._listeningTo={}),a=o=s[i];a||(this._listenId||(this._listenId=n.uniqueId("l")),a=o=s[i]=new g(this,t));var l=d(t,e,r,this);if(o=void 0,l)throw l;return a.interop&&a.on(e,r),this};var u=function(t,e,n,r){if(n){var i=t[e]||(t[e]=[]),s=r.context,o=r.ctx,a=r.listening;a&&a.count++,i.push({callback:n,context:s,ctx:s||o,listening:a})}return t},d=function(t,e,n,r){try{t.on(e,n,r)}catch(t){return t}};a.off=function(t,e,n){return this._events?(this._events=c(h,this._events,t,e,{context:n,listeners:this._listeners}),this):this},a.stopListening=function(t,e,r){var i=this._listeningTo;if(!i)return this;for(var s=t?[t._listenId]:n.keys(i),o=0;o<s.length;o++){var a=i[s[o]];if(!a)break;a.obj.off(e,r,this),a.interop&&a.off(e,r)}return n.isEmpty(i)&&(this._listeningTo=void 0),this};var h=function(t,e,r,i){if(t){var s,o=i.context,a=i.listeners,l=0;if(e||o||r){for(s=e?[e]:n.keys(t);l<s.length;l++){var c=t[e=s[l]];if(!c)break;for(var u=[],d=0;d<c.length;d++){var h=c[d];if(r&&r!==h.callback&&r!==h.callback._callback||o&&o!==h.context)u.push(h);else{var f=h.listening;f&&f.off(e,r)}}u.length?t[e]=u:delete t[e]}return t}for(s=n.keys(a);l<s.length;l++)a[s[l]].cleanup()}};a.once=function(t,e,n){var r=c(f,{},t,e,this.off.bind(this));return"string"==typeof t&&null==n&&(e=void 0),this.on(r,e,n)},a.listenToOnce=function(t,e,n){var r=c(f,{},e,n,this.stopListening.bind(this,t));return this.listenTo(t,r)};var f=function(t,e,r,i){if(r){var s=t[e]=n.once((function(){i(e,s),r.apply(this,arguments)}));s._callback=r}return t};a.trigger=function(t){if(!this._events)return this;for(var e=Math.max(0,arguments.length-1),n=Array(e),r=0;r<e;r++)n[r]=arguments[r+1];return c(p,this._events,t,void 0,n),this};var p=function(t,e,n,r){if(t){var i=t[e],s=t.all;i&&s&&(s=s.slice()),i&&m(i,r),s&&m(s,[e].concat(r))}return t},m=function(t,e){var n,r=-1,i=t.length,s=e[0],o=e[1],a=e[2];switch(e.length){case 0:for(;++r<i;)(n=t[r]).callback.call(n.ctx);return;case 1:for(;++r<i;)(n=t[r]).callback.call(n.ctx,s);return;case 2:for(;++r<i;)(n=t[r]).callback.call(n.ctx,s,o);return;case 3:for(;++r<i;)(n=t[r]).callback.call(n.ctx,s,o,a);return;default:for(;++r<i;)(n=t[r]).callback.apply(n.ctx,e);return}},g=function(t,e){this.id=t._listenId,this.listener=t,this.obj=e,this.interop=!0,this.count=0,this._events=void 0};g.prototype.on=a.on,g.prototype.off=function(t,e){var n;this.interop?(this._events=c(h,this._events,t,e,{context:void 0,listeners:void 0}),n=!this._events):(this.count--,n=0===this.count),n&&this.cleanup()},g.prototype.cleanup=function(){delete this.listener._listeningTo[this.obj._listenId],this.interop||delete this.obj._listeners[this.id]},a.bind=a.on,a.unbind=a.off,n.extend(e,a);var v=e.Model=function(t,e){var r=t||{};e||(e={}),this.preinitialize.apply(this,arguments),this.cid=n.uniqueId(this.cidPrefix),this.attributes={},e.collection&&(this.collection=e.collection),e.parse&&(r=this.parse(r,e)||{});var i=n.result(this,"defaults");r=n.defaults(n.extend({},i,r),i),this.set(r,e),this.changed={},this.initialize.apply(this,arguments)};n.extend(v.prototype,a,{changed:null,validationError:null,idAttribute:"id",cidPrefix:"c",preinitialize:function(){},initialize:function(){},toJSON:function(t){return n.clone(this.attributes)},sync:function(){return e.sync.apply(this,arguments)},get:function(t){return this.attributes[t]},escape:function(t){return n.escape(this.get(t))},has:function(t){return null!=this.get(t)},matches:function(t){return!!n.iteratee(t,this)(this.attributes)},set:function(t,e,r){if(null==t)return this;var i;if("object"==typeof t?(i=t,r=e):(i={})[t]=e,r||(r={}),!this._validate(i,r))return!1;var s=r.unset,o=r.silent,a=[],l=this._changing;this._changing=!0,l||(this._previousAttributes=n.clone(this.attributes),this.changed={});var c=this.attributes,u=this.changed,d=this._previousAttributes;for(var h in i)e=i[h],n.isEqual(c[h],e)||a.push(h),n.isEqual(d[h],e)?delete u[h]:u[h]=e,s?delete c[h]:c[h]=e;if(this.idAttribute in i){var f=this.id;this.id=this.get(this.idAttribute),this.trigger("changeId",this,f,r)}if(!o){a.length&&(this._pending=r);for(var p=0;p<a.length;p++)this.trigger("change:"+a[p],this,c[a[p]],r)}if(l)return this;if(!o)for(;this._pending;)r=this._pending,this._pending=!1,this.trigger("change",this,r);return this._pending=!1,this._changing=!1,this},unset:function(t,e){return this.set(t,void 0,n.extend({},e,{unset:!0}))},clear:function(t){var e={};for(var r in this.attributes)e[r]=void 0;return this.set(e,n.extend({},t,{unset:!0}))},hasChanged:function(t){return null==t?!n.isEmpty(this.changed):n.has(this.changed,t)},changedAttributes:function(t){if(!t)return!!this.hasChanged()&&n.clone(this.changed);var e,r=this._changing?this._previousAttributes:this.attributes,i={};for(var s in t){var o=t[s];n.isEqual(r[s],o)||(i[s]=o,e=!0)}return!!e&&i},previous:function(t){return null!=t&&this._previousAttributes?this._previousAttributes[t]:null},previousAttributes:function(){return n.clone(this._previousAttributes)},fetch:function(t){t=n.extend({parse:!0},t);var e=this,r=t.success;return t.success=function(n){var i=t.parse?e.parse(n,t):n;if(!e.set(i,t))return!1;r&&r.call(t.context,e,n,t),e.trigger("sync",e,n,t)},q(this,t),this.sync("read",this,t)},save:function(t,e,r){var i;null==t||"object"==typeof t?(i=t,r=e):(i={})[t]=e;var s=(r=n.extend({validate:!0,parse:!0},r)).wait;if(i&&!s){if(!this.set(i,r))return!1}else if(!this._validate(i,r))return!1;var o=this,a=r.success,l=this.attributes;r.success=function(t){o.attributes=l;var e=r.parse?o.parse(t,r):t;if(s&&(e=n.extend({},i,e)),e&&!o.set(e,r))return!1;a&&a.call(r.context,o,t,r),o.trigger("sync",o,t,r)},q(this,r),i&&s&&(this.attributes=n.extend({},l,i));var c=this.isNew()?"create":r.patch?"patch":"update";"patch"!==c||r.attrs||(r.attrs=i);var u=this.sync(c,this,r);return this.attributes=l,u},destroy:function(t){t=t?n.clone(t):{};var e=this,r=t.success,i=t.wait,s=function(){e.stopListening(),e.trigger("destroy",e,e.collection,t)};t.success=function(n){i&&s(),r&&r.call(t.context,e,n,t),e.isNew()||e.trigger("sync",e,n,t)};var o=!1;return this.isNew()?n.defer(t.success):(q(this,t),o=this.sync("delete",this,t)),i||s(),o},url:function(){var t=n.result(this,"urlRoot")||n.result(this.collection,"url")||H();if(this.isNew())return t;var e=this.get(this.idAttribute);return t.replace(/[^\/]$/,"$&/")+encodeURIComponent(e)},parse:function(t,e){return t},clone:function(){return new this.constructor(this.attributes)},isNew:function(){return!this.has(this.idAttribute)},isValid:function(t){return this._validate({},n.extend({},t,{validate:!0}))},_validate:function(t,e){if(!e.validate||!this.validate)return!0;t=n.extend({},this.attributes,t);var r=this.validationError=this.validate(t,e)||null;return!r||(this.trigger("invalid",this,r,n.extend(e,{validationError:r})),!1)}});var y=e.Collection=function(t,e){e||(e={}),this.preinitialize.apply(this,arguments),e.model&&(this.model=e.model),void 0!==e.comparator&&(this.comparator=e.comparator),this._reset(),this.initialize.apply(this,arguments),t&&this.reset(t,n.extend({silent:!0},e))},b={add:!0,remove:!0,merge:!0},w={add:!0,remove:!1},A=function(t,e,n){n=Math.min(Math.max(n,0),t.length);var r,i=Array(t.length-n),s=e.length;for(r=0;r<i.length;r++)i[r]=t[r+n];for(r=0;r<s;r++)t[r+n]=e[r];for(r=0;r<i.length;r++)t[r+s+n]=i[r]};n.extend(y.prototype,a,{model:v,preinitialize:function(){},initialize:function(){},toJSON:function(t){return this.map((function(e){return e.toJSON(t)}))},sync:function(){return e.sync.apply(this,arguments)},add:function(t,e){return this.set(t,n.extend({merge:!1},e,w))},remove:function(t,e){e=n.extend({},e);var r=!n.isArray(t);t=r?[t]:t.slice();var i=this._removeModels(t,e);return!e.silent&&i.length&&(e.changes={added:[],merged:[],removed:i},this.trigger("update",this,e)),r?i[0]:i},set:function(t,e){if(null!=t){(e=n.extend({},b,e)).parse&&!this._isModel(t)&&(t=this.parse(t,e)||[]);var r=!n.isArray(t);t=r?[t]:t.slice();var i=e.at;null!=i&&(i=+i),i>this.length&&(i=this.length),i<0&&(i+=this.length+1);var s,o,a=[],l=[],c=[],u=[],d={},h=e.add,f=e.merge,p=e.remove,m=!1,g=this.comparator&&null==i&&!1!==e.sort,v=n.isString(this.comparator)?this.comparator:null;for(o=0;o<t.length;o++){s=t[o];var y=this.get(s);if(y){if(f&&s!==y){var w=this._isModel(s)?s.attributes:s;e.parse&&(w=y.parse(w,e)),y.set(w,e),c.push(y),g&&!m&&(m=y.hasChanged(v))}d[y.cid]||(d[y.cid]=!0,a.push(y)),t[o]=y}else h&&(s=t[o]=this._prepareModel(s,e))&&(l.push(s),this._addReference(s,e),d[s.cid]=!0,a.push(s))}if(p){for(o=0;o<this.length;o++)d[(s=this.models[o]).cid]||u.push(s);u.length&&this._removeModels(u,e)}var _=!1,x=!g&&h&&p;if(a.length&&x?(_=this.length!==a.length||n.some(this.models,(function(t,e){return t!==a[e]})),this.models.length=0,A(this.models,a,0),this.length=this.models.length):l.length&&(g&&(m=!0),A(this.models,l,null==i?this.length:i),this.length=this.models.length),m&&this.sort({silent:!0}),!e.silent){for(o=0;o<l.length;o++)null!=i&&(e.index=i+o),(s=l[o]).trigger("add",s,this,e);(m||_)&&this.trigger("sort",this,e),(l.length||u.length||c.length)&&(e.changes={added:l,removed:u,merged:c},this.trigger("update",this,e))}return r?t[0]:t}},reset:function(t,e){e=e?n.clone(e):{};for(var r=0;r<this.models.length;r++)this._removeReference(this.models[r],e);return e.previousModels=this.models,this._reset(),t=this.add(t,n.extend({silent:!0},e)),e.silent||this.trigger("reset",this,e),t},push:function(t,e){return this.add(t,n.extend({at:this.length},e))},pop:function(t){var e=this.at(this.length-1);return this.remove(e,t)},unshift:function(t,e){return this.add(t,n.extend({at:0},e))},shift:function(t){var e=this.at(0);return this.remove(e,t)},slice:function(){return s.apply(this.models,arguments)},get:function(t){if(null!=t)return this._byId[t]||this._byId[this.modelId(this._isModel(t)?t.attributes:t,t.idAttribute)]||t.cid&&this._byId[t.cid]},has:function(t){return null!=this.get(t)},at:function(t){return t<0&&(t+=this.length),this.models[t]},where:function(t,e){return this[e?"find":"filter"](t)},findWhere:function(t){return this.where(t,!0)},sort:function(t){var e=this.comparator;if(!e)throw new Error("Cannot sort a set without a comparator");t||(t={});var r=e.length;return n.isFunction(e)&&(e=e.bind(this)),1===r||n.isString(e)?this.models=this.sortBy(e):this.models.sort(e),t.silent||this.trigger("sort",this,t),this},pluck:function(t){return this.map(t+"")},fetch:function(t){var e=(t=n.extend({parse:!0},t)).success,r=this;return t.success=function(n){var i=t.reset?"reset":"set";r[i](n,t),e&&e.call(t.context,r,n,t),r.trigger("sync",r,n,t)},q(this,t),this.sync("read",this,t)},create:function(t,e){var r=(e=e?n.clone(e):{}).wait;if(!(t=this._prepareModel(t,e)))return!1;r||this.add(t,e);var i=this,s=e.success;return e.success=function(t,e,n){r&&(t.off("error",i._forwardPristineError,i),i.add(t,n)),s&&s.call(n.context,t,e,n)},r&&t.once("error",this._forwardPristineError,this),t.save(null,e),t},parse:function(t,e){return t},clone:function(){return new this.constructor(this.models,{model:this.model,comparator:this.comparator})},modelId:function(t,e){return t[e||this.model.prototype.idAttribute||"id"]},values:function(){return new x(this,C)},keys:function(){return new x(this,k)},entries:function(){return new x(this,N)},_reset:function(){this.length=0,this.models=[],this._byId={}},_prepareModel:function(t,e){return this._isModel(t)?(t.collection||(t.collection=this),t):((e=e?n.clone(e):{}).collection=this,(r=this.model.prototype?new this.model(t,e):this.model(t,e)).validationError?(this.trigger("invalid",this,r.validationError,e),!1):r);var r},_removeModels:function(t,e){for(var n=[],r=0;r<t.length;r++){var i=this.get(t[r]);if(i){var s=this.indexOf(i);this.models.splice(s,1),this.length--,delete this._byId[i.cid];var o=this.modelId(i.attributes,i.idAttribute);null!=o&&delete this._byId[o],e.silent||(e.index=s,i.trigger("remove",i,this,e)),n.push(i),this._removeReference(i,e)}}return t.length>0&&!e.silent&&delete e.index,n},_isModel:function(t){return t instanceof v},_addReference:function(t,e){this._byId[t.cid]=t;var n=this.modelId(t.attributes,t.idAttribute);null!=n&&(this._byId[n]=t),t.on("all",this._onModelEvent,this)},_removeReference:function(t,e){delete this._byId[t.cid];var n=this.modelId(t.attributes,t.idAttribute);null!=n&&delete this._byId[n],this===t.collection&&delete t.collection,t.off("all",this._onModelEvent,this)},_onModelEvent:function(t,e,n,r){if(e){if(("add"===t||"remove"===t)&&n!==this)return;if("destroy"===t&&this.remove(e,r),"changeId"===t){var i=this.modelId(e.previousAttributes(),e.idAttribute),s=this.modelId(e.attributes,e.idAttribute);null!=i&&delete this._byId[i],null!=s&&(this._byId[s]=e)}}this.trigger.apply(this,arguments)},_forwardPristineError:function(t,e,n){this.has(t)||this._onModelEvent("error",t,e,n)}});var _="function"==typeof Symbol&&Symbol.iterator;_&&(y.prototype[_]=y.prototype.values);var x=function(t,e){this._collection=t,this._kind=e,this._index=0},C=1,k=2,N=3;_&&(x.prototype[_]=function(){return this}),x.prototype.next=function(){if(this._collection){if(this._index<this._collection.length){var t,e=this._collection.at(this._index);if(this._index++,this._kind===C)t=e;else{var n=this._collection.modelId(e.attributes,e.idAttribute);t=this._kind===k?n:[n,e]}return{value:t,done:!1}}this._collection=void 0}return{value:void 0,done:!0}};var E=e.View=function(t){this.cid=n.uniqueId("view"),this.preinitialize.apply(this,arguments),n.extend(this,n.pick(t,T)),this._ensureElement(),this.initialize.apply(this,arguments)},P=/^(\S+)\s*(.*)$/,T=["model","collection","el","id","attributes","className","tagName","events"];n.extend(E.prototype,a,{tagName:"div",$:function(t){return this.$el.find(t)},preinitialize:function(){},initialize:function(){},render:function(){return this},remove:function(){return this._removeElement(),this.stopListening(),this},_removeElement:function(){this.$el.remove()},setElement:function(t){return this.undelegateEvents(),this._setElement(t),this.delegateEvents(),this},_setElement:function(t){this.$el=t instanceof e.$?t:e.$(t),this.el=this.$el[0]},delegateEvents:function(t){if(t||(t=n.result(this,"events")),!t)return this;for(var e in this.undelegateEvents(),t){var r=t[e];if(n.isFunction(r)||(r=this[r]),r){var i=e.match(P);this.delegate(i[1],i[2],r.bind(this))}}return this},delegate:function(t,e,n){return this.$el.on(t+".delegateEvents"+this.cid,e,n),this},undelegateEvents:function(){return this.$el&&this.$el.off(".delegateEvents"+this.cid),this},undelegate:function(t,e,n){return this.$el.off(t+".delegateEvents"+this.cid,e,n),this},_createElement:function(t){return document.createElement(t)},_ensureElement:function(){if(this.el)this.setElement(n.result(this,"el"));else{var t=n.extend({},n.result(this,"attributes"));this.id&&(t.id=n.result(this,"id")),this.className&&(t.class=n.result(this,"className")),this.setElement(this._createElement(n.result(this,"tagName"))),this._setAttributes(t)}},_setAttributes:function(t){this.$el.attr(t)}});var j=function(t,e,r,i){n.each(r,(function(n,r){e[r]&&(t.prototype[r]=function(t,e,n,r){switch(e){case 1:return function(){return t[n](this[r])};case 2:return function(e){return t[n](this[r],e)};case 3:return function(e,i){return t[n](this[r],S(e,this),i)};case 4:return function(e,i,s){return t[n](this[r],S(e,this),i,s)};default:return function(){var e=s.call(arguments);return e.unshift(this[r]),t[n].apply(t,e)}}}(e,n,r,i))}))},S=function(t,e){return n.isFunction(t)?t:n.isObject(t)&&!e._isModel(t)?O(t):n.isString(t)?function(e){return e.get(t)}:t},O=function(t){var e=n.matches(t);return function(t){return e(t.attributes)}};n.each([[y,{forEach:3,each:3,map:3,collect:3,reduce:0,foldl:0,inject:0,reduceRight:0,foldr:0,find:3,detect:3,filter:3,select:3,reject:3,every:3,all:3,some:3,any:3,include:3,includes:3,contains:3,invoke:0,max:3,min:3,toArray:1,size:1,first:3,head:3,take:3,initial:3,rest:3,tail:3,drop:3,last:3,without:0,difference:0,indexOf:3,shuffle:1,lastIndexOf:3,isEmpty:1,chain:1,sample:3,partition:3,groupBy:3,countBy:3,sortBy:3,indexBy:3,findIndex:3,findLastIndex:3},"models"],[v,{keys:1,values:1,pairs:1,invert:1,pick:0,omit:0,chain:1,isEmpty:1},"attributes"]],(function(t){var e=t[0],r=t[1],i=t[2];e.mixin=function(t){var r=n.reduce(n.functions(t),(function(t,e){return t[e]=0,t}),{});j(e,t,r,i)},j(e,n,r,i)})),e.sync=function(t,r,i){var s=I[t];n.defaults(i||(i={}),{emulateHTTP:e.emulateHTTP,emulateJSON:e.emulateJSON});var o={type:s,dataType:"json"};if(i.url||(o.url=n.result(r,"url")||H()),null!=i.data||!r||"create"!==t&&"update"!==t&&"patch"!==t||(o.contentType="application/json",o.data=JSON.stringify(i.attrs||r.toJSON(i))),i.emulateJSON&&(o.contentType="application/x-www-form-urlencoded",o.data=o.data?{model:o.data}:{}),i.emulateHTTP&&("PUT"===s||"DELETE"===s||"PATCH"===s)){o.type="POST",i.emulateJSON&&(o.data._method=s);var a=i.beforeSend;i.beforeSend=function(t){if(t.setRequestHeader("X-HTTP-Method-Override",s),a)return a.apply(this,arguments)}}"GET"===o.type||i.emulateJSON||(o.processData=!1);var l=i.error;i.error=function(t,e,n){i.textStatus=e,i.errorThrown=n,l&&l.call(i.context,t,e,n)};var c=i.xhr=e.ajax(n.extend(o,i));return r.trigger("request",r,c,i),c};var I={create:"POST",update:"PUT",patch:"PATCH",delete:"DELETE",read:"GET"};e.ajax=function(){return e.$.ajax.apply(e.$,arguments)};var R=e.Router=function(t){t||(t={}),this.preinitialize.apply(this,arguments),t.routes&&(this.routes=t.routes),this._bindRoutes(),this.initialize.apply(this,arguments)},L=/\((.*?)\)/g,F=/(\(\?)?:\w+/g,B=/\*\w+/g,U=/[\-{}\[\]+?.,\\\^$|#\s]/g;n.extend(R.prototype,a,{preinitialize:function(){},initialize:function(){},route:function(t,r,i){n.isRegExp(t)||(t=this._routeToRegExp(t)),n.isFunction(r)&&(i=r,r=""),i||(i=this[r]);var s=this;return e.history.route(t,(function(n){var o=s._extractParameters(t,n);!1!==s.execute(i,o,r)&&(s.trigger.apply(s,["route:"+r].concat(o)),s.trigger("route",r,o),e.history.trigger("route",s,r,o))})),this},execute:function(t,e,n){t&&t.apply(this,e)},navigate:function(t,n){return e.history.navigate(t,n),this},_bindRoutes:function(){if(this.routes){this.routes=n.result(this,"routes");for(var t,e=n.keys(this.routes);null!=(t=e.pop());)this.route(t,this.routes[t])}},_routeToRegExp:function(t){return t=t.replace(U,"\\$&").replace(L,"(?:$1)?").replace(F,(function(t,e){return e?t:"([^/?]+)"})).replace(B,"([^?]*?)"),new RegExp("^"+t+"(?:\\?([\\s\\S]*))?$")},_extractParameters:function(t,e){var r=t.exec(e).slice(1);return n.map(r,(function(t,e){return e===r.length-1?t||null:t?decodeURIComponent(t):null}))}});var D=e.History=function(){this.handlers=[],this.checkUrl=this.checkUrl.bind(this),"undefined"!=typeof window&&(this.location=window.location,this.history=window.history)},M=/^[#\/]|\s+$/g,z=/^\/+|\/+$/g,$=/#.*$/;D.started=!1,n.extend(D.prototype,a,{interval:50,atRoot:function(){return this.location.pathname.replace(/[^\/]$/,"$&/")===this.root&&!this.getSearch()},matchRoot:function(){return this.decodeFragment(this.location.pathname).slice(0,this.root.length-1)+"/"===this.root},decodeFragment:function(t){return decodeURI(t.replace(/%25/g,"%2525"))},getSearch:function(){var t=this.location.href.replace(/#.*/,"").match(/\?.+/);return t?t[0]:""},getHash:function(t){var e=(t||this).location.href.match(/#(.*)$/);return e?e[1]:""},getPath:function(){var t=this.decodeFragment(this.location.pathname+this.getSearch()).slice(this.root.length-1);return"/"===t.charAt(0)?t.slice(1):t},getFragment:function(t){return null==t&&(t=this._usePushState||!this._wantsHashChange?this.getPath():this.getHash()),t.replace(M,"")},start:function(t){if(D.started)throw new Error("Backbone.history has already been started");if(D.started=!0,this.options=n.extend({root:"/"},this.options,t),this.root=this.options.root,this._trailingSlash=this.options.trailingSlash,this._wantsHashChange=!1!==this.options.hashChange,this._hasHashChange="onhashchange"in window&&(void 0===document.documentMode||document.documentMode>7),this._useHashChange=this._wantsHashChange&&this._hasHashChange,this._wantsPushState=!!this.options.pushState,this._hasPushState=!(!this.history||!this.history.pushState),this._usePushState=this._wantsPushState&&this._hasPushState,this.fragment=this.getFragment(),this.root=("/"+this.root+"/").replace(z,"/"),this._wantsHashChange&&this._wantsPushState){if(!this._hasPushState&&!this.atRoot()){var e=this.root.slice(0,-1)||"/";return this.location.replace(e+"#"+this.getPath()),!0}this._hasPushState&&this.atRoot()&&this.navigate(this.getHash(),{replace:!0})}if(!this._hasHashChange&&this._wantsHashChange&&!this._usePushState){this.iframe=document.createElement("iframe"),this.iframe.src="javascript:0",this.iframe.style.display="none",this.iframe.tabIndex=-1;var r=document.body,i=r.insertBefore(this.iframe,r.firstChild).contentWindow;i.document.open(),i.document.close(),i.location.hash="#"+this.fragment}var s=window.addEventListener||function(t,e){return attachEvent("on"+t,e)};if(this._usePushState?s("popstate",this.checkUrl,!1):this._useHashChange&&!this.iframe?s("hashchange",this.checkUrl,!1):this._wantsHashChange&&(this._checkUrlInterval=setInterval(this.checkUrl,this.interval)),!this.options.silent)return this.loadUrl()},stop:function(){var t=window.removeEventListener||function(t,e){return detachEvent("on"+t,e)};this._usePushState?t("popstate",this.checkUrl,!1):this._useHashChange&&!this.iframe&&t("hashchange",this.checkUrl,!1),this.iframe&&(document.body.removeChild(this.iframe),this.iframe=null),this._checkUrlInterval&&clearInterval(this._checkUrlInterval),D.started=!1},route:function(t,e){this.handlers.unshift({route:t,callback:e})},checkUrl:function(t){var e=this.getFragment();if(e===this.fragment&&this.iframe&&(e=this.getHash(this.iframe.contentWindow)),e===this.fragment)return!this.matchRoot()&&this.notfound();this.iframe&&this.navigate(e),this.loadUrl()},loadUrl:function(t){return this.matchRoot()?(t=this.fragment=this.getFragment(t),n.some(this.handlers,(function(e){if(e.route.test(t))return e.callback(t),!0}))||this.notfound()):this.notfound()},notfound:function(){return this.trigger("notfound"),!1},navigate:function(t,e){if(!D.started)return!1;e&&!0!==e||(e={trigger:!!e}),t=this.getFragment(t||"");var n=this.root;this._trailingSlash||""!==t&&"?"!==t.charAt(0)||(n=n.slice(0,-1)||"/");var r=n+t;t=t.replace($,"");var i=this.decodeFragment(t);if(this.fragment!==i){if(this.fragment=i,this._usePushState)this.history[e.replace?"replaceState":"pushState"]({},document.title,r);else{if(!this._wantsHashChange)return this.location.assign(r);if(this._updateHash(this.location,t,e.replace),this.iframe&&t!==this.getHash(this.iframe.contentWindow)){var s=this.iframe.contentWindow;e.replace||(s.document.open(),s.document.close()),this._updateHash(s.location,t,e.replace)}}return e.trigger?this.loadUrl(t):void 0}},_updateHash:function(t,e,n){if(n){var r=t.href.replace(/(javascript:|#).*$/,"");t.replace(r+"#"+e)}else t.hash="#"+e}}),e.history=new D;v.extend=y.extend=R.extend=E.extend=D.extend=function(t,e){var r,i=this;return r=t&&n.has(t,"constructor")?t.constructor:function(){return i.apply(this,arguments)},n.extend(r,i,e),r.prototype=n.create(i.prototype,t),r.prototype.constructor=r,r.__super__=i.prototype,r};var H=function(){throw new Error('A "url" property or function must be specified')},q=function(t,e){var n=e.error;e.error=function(r){n&&n.call(e.context,t,r,e),t.trigger("error",t,r,e)}};return e._debug=function(){return{root:t,_:n}},e}(s,n,t,e)}.apply(e,r),void 0===i||(t.exports=i)},13020:(t,e,n)=>{"use strict";n.d(e,{A:()=>a});var r=n(71354),i=n.n(r),s=n(76314),o=n.n(s)()(i());o.push([t.id,".button-vue[data-v-d2cd6448]{margin-top:.5rem}","",{version:3,sources:["webpack://./core/src/components/login/LoginButton.vue"],names:[],mappings:"AACA,6BACC,gBAAA",sourcesContent:["\n.button-vue {\n\tmargin-top: .5rem;\n}\n"],sourceRoot:""}]);const a=o},31286:(t,e,n)=>{"use strict";n.d(e,{A:()=>a});var r=n(71354),i=n.n(r),s=n(76314),o=n.n(s)()(i());o.push([t.id,".login-form[data-v-7d917450]{text-align:left;font-size:1rem}.login-form__fieldset[data-v-7d917450]{width:100%;display:flex;flex-direction:column;gap:.5rem}.login-form__headline[data-v-7d917450]{text-align:center;overflow-wrap:anywhere}","",{version:3,sources:["webpack://./core/src/components/login/LoginForm.vue"],names:[],mappings:"AACA,6BACC,eAAA,CACA,cAAA,CAEA,uCACC,UAAA,CACA,YAAA,CACA,qBAAA,CACA,SAAA,CAGD,uCACC,iBAAA,CACA,sBAAA",sourcesContent:["\n.login-form {\n\ttext-align: left;\n\tfont-size: 1rem;\n\n\t&__fieldset {\n\t\twidth: 100%;\n\t\tdisplay: flex;\n\t\tflex-direction: column;\n\t\tgap: .5rem;\n\t}\n\n\t&__headline {\n\t\ttext-align: center;\n\t\toverflow-wrap: anywhere;\n\t}\n}\n"],sourceRoot:""}]);const a=o},87511:(t,e,n)=>{"use strict";n.d(e,{A:()=>a});var r=n(71354),i=n.n(r),s=n(76314),o=n.n(s)()(i());o.push([t.id,"fieldset[data-v-4a6bfc86]{display:flex;flex-direction:column;gap:.5rem}fieldset[data-v-4a6bfc86] label{text-align:initial}.update[data-v-4a6bfc86]{margin:0 auto}","",{version:3,sources:["webpack://./core/src/components/login/PasswordLessLoginForm.vue"],names:[],mappings:"AACA,0BACC,YAAA,CACA,qBAAA,CACA,SAAA,CAEA,gCACC,kBAAA,CAIF,yBACC,aAAA",sourcesContent:["\nfieldset {\n\tdisplay: flex;\n\tflex-direction: column;\n\tgap: 0.5rem;\n\n\t:deep(label) {\n\t\ttext-align: initial;\n\t}\n}\n\n.update {\n\tmargin: 0 auto;\n}\n"],sourceRoot:""}]);const a=o},87600:(t,e,n)=>{"use strict";n.d(e,{A:()=>a});var r=n(71354),i=n.n(r),s=n(76314),o=n.n(s)()(i());o.push([t.id,".login-form[data-v-cd5425c6]{text-align:left;font-size:1rem}.login-form__fieldset[data-v-cd5425c6]{width:100%;display:flex;flex-direction:column;gap:.5rem}.login-form__link[data-v-cd5425c6]{display:block;font-weight:normal !important;padding-bottom:1rem;cursor:pointer;font-size:var(--default-font-size);text-align:center;padding:.5rem 1rem 1rem 1rem}","",{version:3,sources:["webpack://./core/src/components/login/ResetPassword.vue"],names:[],mappings:"AACA,6BACC,eAAA,CACA,cAAA,CAEA,uCACC,UAAA,CACA,YAAA,CACA,qBAAA,CACA,SAAA,CAGD,mCACC,aAAA,CACA,6BAAA,CACA,mBAAA,CACA,cAAA,CACA,kCAAA,CACA,iBAAA,CACA,4BAAA",sourcesContent:["\n.login-form {\n\ttext-align: left;\n\tfont-size: 1rem;\n\n\t&__fieldset {\n\t\twidth: 100%;\n\t\tdisplay: flex;\n\t\tflex-direction: column;\n\t\tgap: .5rem;\n\t}\n\n\t&__link {\n\t\tdisplay: block;\n\t\tfont-weight: normal !important;\n\t\tpadding-bottom: 1rem;\n\t\tcursor: pointer;\n\t\tfont-size: var(--default-font-size);\n\t\ttext-align: center;\n\t\tpadding: .5rem 1rem 1rem 1rem;\n\t}\n}\n"],sourceRoot:""}]);const a=o},30638:(t,e,n)=>{"use strict";n.d(e,{A:()=>a});var r=n(71354),i=n.n(r),s=n(76314),o=n.n(s)()(i());o.push([t.id,"body{font-size:var(--default-font-size)}.login-box{width:320px;box-sizing:border-box}.login-box__link{display:block;padding:1rem;font-size:var(--default-font-size);text-align:center;font-weight:normal !important}.fade-enter-active,.fade-leave-active{transition:opacity .3s}.fade-enter,.fade-leave-to{opacity:0}.alternative-logins{display:flex;flex-direction:column;gap:.75rem}.alternative-logins .button-vue{box-sizing:border-box}.login-passwordless .button-vue{margin-top:.5rem}","",{version:3,sources:["webpack://./core/src/views/Login.vue"],names:[],mappings:"AACA,KACC,kCAAA,CAGD,WAEC,WAAA,CACA,qBAAA,CAEA,iBACC,aAAA,CACA,YAAA,CACA,kCAAA,CACA,iBAAA,CACA,6BAAA,CAIF,sCACC,sBAAA,CAED,2BACC,SAAA,CAGD,oBACC,YAAA,CACA,qBAAA,CACA,UAAA,CAEA,gCACC,qBAAA,CAKD,gCACC,gBAAA",sourcesContent:["\nbody {\n\tfont-size: var(--default-font-size);\n}\n\n.login-box {\n\t// Same size as dashboard panels\n\twidth: 320px;\n\tbox-sizing: border-box;\n\n\t&__link {\n\t\tdisplay: block;\n\t\tpadding: 1rem;\n\t\tfont-size: var(--default-font-size);\n\t\ttext-align: center;\n\t\tfont-weight: normal !important;\n\t}\n}\n\n.fade-enter-active, .fade-leave-active {\n\ttransition: opacity .3s;\n}\n.fade-enter, .fade-leave-to /* .fade-leave-active below version 2.1.8 */ {\n\topacity: 0;\n}\n\n.alternative-logins {\n\tdisplay: flex;\n\tflex-direction: column;\n\tgap: 0.75rem;\n\n\t.button-vue {\n\t\tbox-sizing: border-box;\n\t}\n}\n\n.login-passwordless {\n\t.button-vue {\n\t\tmargin-top: 0.5rem;\n\t}\n}\n"],sourceRoot:""}]);const a=o},37861:(t,e,n)=>{"use strict";n.d(e,{A:()=>a});var r=n(71354),i=n.n(r),s=n(76314),o=n.n(s)()(i());o.push([t.id,"\nfieldset[data-v-6bdd5975] {\n\ttext-align: center;\n}\ninput[type=submit][data-v-6bdd5975] {\n\tmargin-top: 20px;\n}\n","",{version:3,sources:["webpack://./core/src/components/login/UpdatePassword.vue"],names:[],mappings:";AA2HA;CACA,kBAAA;AACA;AAEA;CACA,gBAAA;AACA",sourcesContent:["\x3c!--\n - SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\n - SPDX-License-Identifier: AGPL-3.0-or-later\n--\x3e\n\n<template>\n\t<form @submit.prevent=\"submit\">\n\t\t<fieldset>\n\t\t\t<p>\n\t\t\t\t<label for=\"password\" class=\"infield\">{{ t('core', 'New password') }}</label>\n\t\t\t\t<input id=\"password\"\n\t\t\t\t\tv-model=\"password\"\n\t\t\t\t\ttype=\"password\"\n\t\t\t\t\tname=\"password\"\n\t\t\t\t\tautocomplete=\"new-password\"\n\t\t\t\t\tautocapitalize=\"none\"\n\t\t\t\t\tspellcheck=\"false\"\n\t\t\t\t\trequired\n\t\t\t\t\t:placeholder=\"t('core', 'New password')\">\n\t\t\t</p>\n\n\t\t\t<div v-if=\"encrypted\" class=\"update\">\n\t\t\t\t<p>\n\t\t\t\t\t{{ t('core', 'Your files are encrypted. There will be no way to get your data back after your password is reset. If you are not sure what to do, please contact your administrator before you continue. Do you really want to continue?') }}\n\t\t\t\t</p>\n\t\t\t\t<input id=\"encrypted-continue\"\n\t\t\t\t\tv-model=\"proceed\"\n\t\t\t\t\ttype=\"checkbox\"\n\t\t\t\t\tclass=\"checkbox\">\n\t\t\t\t<label for=\"encrypted-continue\">\n\t\t\t\t\t{{ t('core', 'I know what I\\'m doing') }}\n\t\t\t\t</label>\n\t\t\t</div>\n\n\t\t\t<LoginButton :loading=\"loading\"\n\t\t\t\t:value=\"t('core', 'Reset password')\"\n\t\t\t\t:value-loading=\"t('core', 'Resetting password')\" />\n\n\t\t\t<p v-if=\"error && message\" :class=\"{warning: error}\">\n\t\t\t\t{{ message }}\n\t\t\t</p>\n\t\t</fieldset>\n\t</form>\n</template>\n\n<script>\nimport Axios from '@nextcloud/axios'\nimport LoginButton from './LoginButton.vue'\n\nexport default {\n\tname: 'UpdatePassword',\n\tcomponents: {\n\t\tLoginButton,\n\t},\n\tprops: {\n\t\tusername: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t\tresetPasswordTarget: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t},\n\tdata() {\n\t\treturn {\n\t\t\terror: false,\n\t\t\tloading: false,\n\t\t\tmessage: undefined,\n\t\t\tuser: this.username,\n\t\t\tpassword: '',\n\t\t\tencrypted: false,\n\t\t\tproceed: false,\n\t\t}\n\t},\n\twatch: {\n\t\tusername(value) {\n\t\t\tthis.user = value\n\t\t},\n\t},\n\tmethods: {\n\t\tasync submit() {\n\t\t\tthis.loading = true\n\t\t\tthis.error = false\n\t\t\tthis.message = ''\n\n\t\t\ttry {\n\t\t\t\tconst { data } = await Axios.post(this.resetPasswordTarget, {\n\t\t\t\t\tpassword: this.password,\n\t\t\t\t\tproceed: this.proceed,\n\t\t\t\t})\n\t\t\t\tif (data && data.status === 'success') {\n\t\t\t\t\tthis.message = 'send-success'\n\t\t\t\t\tthis.$emit('update:username', this.user)\n\t\t\t\t\tthis.$emit('done')\n\t\t\t\t} else if (data && data.encryption) {\n\t\t\t\t\tthis.encrypted = true\n\t\t\t\t} else if (data && data.msg) {\n\t\t\t\t\tthrow new Error(data.msg)\n\t\t\t\t} else {\n\t\t\t\t\tthrow new Error()\n\t\t\t\t}\n\t\t\t} catch (e) {\n\t\t\t\tthis.error = true\n\t\t\t\tthis.message = e.message ? e.message : t('core', 'Password cannot be changed. Please contact your administrator.')\n\t\t\t} finally {\n\t\t\t\tthis.loading = false\n\t\t\t}\n\t\t},\n\t},\n}\n<\/script>\n\n<style scoped>\n\tfieldset {\n\t\ttext-align: center;\n\t}\n\n\tinput[type=submit] {\n\t\tmargin-top: 20px;\n\t}\n</style>\n"],sourceRoot:""}]);const a=o},78112:t=>{"undefined"==typeof dav&&(dav={}),dav._XML_CHAR_MAP={"<":"<",">":">","&":"&",'"':""","'":"'"},dav._escapeXml=function(t){return t.replace(/[<>&"']/g,(function(t){return dav._XML_CHAR_MAP[t]}))},dav.Client=function(t){var e;for(e in t)this[e]=t[e]},dav.Client.prototype={baseUrl:null,userName:null,password:null,xmlNamespaces:{"DAV:":"d"},propFind:function(t,e,n,r){void 0===n&&(n="0"),n=""+n,(r=r||{}).Depth=n,r["Content-Type"]="application/xml; charset=utf-8";var i,s='<?xml version="1.0"?>\n<d:propfind ';for(i in this.xmlNamespaces)s+=" xmlns:"+this.xmlNamespaces[i]+'="'+i+'"';for(var o in s+=">\n <d:prop>\n",e)if(e.hasOwnProperty(o)){var a=this.parseClarkNotation(e[o]);this.xmlNamespaces[a.namespace]?s+=" <"+this.xmlNamespaces[a.namespace]+":"+a.name+" />\n":s+=" <x:"+a.name+' xmlns:x="'+a.namespace+'" />\n'}return s+=" </d:prop>\n",s+="</d:propfind>",this.request("PROPFIND",t,r,s).then(function(t){return"0"===n?{status:t.status,body:t.body[0],xhr:t.xhr}:{status:t.status,body:t.body,xhr:t.xhr}}.bind(this))},_renderPropSet:function(t){var e=" <d:set>\n <d:prop>\n";for(var n in t)if(t.hasOwnProperty(n)){var r,i=this.parseClarkNotation(n),s=t[n];"d:resourcetype"!=(r=this.xmlNamespaces[i.namespace]?this.xmlNamespaces[i.namespace]+":"+i.name:"x:"+i.name+' xmlns:x="'+i.namespace+'"')&&(s=dav._escapeXml(s)),e+=" <"+r+">"+s+"</"+r+">\n"}return(e+=" </d:prop>\n")+" </d:set>\n"},propPatch:function(t,e,n){(n=n||{})["Content-Type"]="application/xml; charset=utf-8";var r,i='<?xml version="1.0"?>\n<d:propertyupdate ';for(r in this.xmlNamespaces)i+=" xmlns:"+this.xmlNamespaces[r]+'="'+r+'"';return i+=">\n"+this._renderPropSet(e),i+="</d:propertyupdate>",this.request("PROPPATCH",t,n,i).then(function(t){return{status:t.status,body:t.body,xhr:t.xhr}}.bind(this))},mkcol:function(t,e,n){var r="";if((n=n||{})["Content-Type"]="application/xml; charset=utf-8",e){var i;for(i in r='<?xml version="1.0"?>\n<d:mkcol',this.xmlNamespaces)r+=" xmlns:"+this.xmlNamespaces[i]+'="'+i+'"';r+=">\n"+this._renderPropSet(e),r+="</d:mkcol>"}return this.request("MKCOL",t,n,r).then(function(t){return{status:t.status,body:t.body,xhr:t.xhr}}.bind(this))},request:function(t,e,n,r,i,s){var o,a=this,l=this.xhrProvider();for(o in n=n||{},i=i||"",this.userName&&(n.Authorization="Basic "+btoa(this.userName+":"+this.password)),l.open(t,this.resolveUrl(e),!0),n)l.setRequestHeader(o,n[o]);return l.responseType=i,s&&"function"==typeof s.onProgress&&("PUT"===t||"POST"===t?l.upload.addEventListener("progress",(function(t){s.onProgress(t)}),!1):l.addEventListener("progress",(function(t){s.onProgress(t)}),!1)),void 0===r?l.send():l.send(r),new Promise((function(t,e){l.onreadystatechange=function(){if(4===l.readyState){var e=l.response;207===l.status&&(e=a.parseMultiStatus(l.response)),t({body:e,status:l.status,xhr:l})}},l.ontimeout=function(){e(new Error("Timeout exceeded"))}}))},xhrProvider:function(){return new XMLHttpRequest},_parsePropNode:function(t){var e=null;if(t.childNodes&&t.childNodes.length>0){for(var n=[],r=0;r<t.childNodes.length;r++){var i=t.childNodes[r];1===i.nodeType&&n.push(i)}n.length&&(e=n)}return e||t.textContent||t.text||""},parseMultiStatus:function(t){for(var e=(new DOMParser).parseFromString(t,"application/xml"),n=function(t){var e;for(e in this.xmlNamespaces)if(this.xmlNamespaces[e]===t)return e}.bind(this),r=e.evaluate("/d:multistatus/d:response",e,n,XPathResult.ANY_TYPE,null),i=[],s=r.iterateNext();s;){var o={href:null,propStat:[]};o.href=e.evaluate("string(d:href)",s,n,XPathResult.ANY_TYPE,null).stringValue;for(var a=e.evaluate("d:propstat",s,n,XPathResult.ANY_TYPE,null),l=a.iterateNext();l;){for(var c={status:e.evaluate("string(d:status)",l,n,XPathResult.ANY_TYPE,null).stringValue,properties:{}},u=e.evaluate("d:prop/*",l,n,XPathResult.ANY_TYPE,null),d=u.iterateNext();d;){var h=this._parsePropNode(d);c.properties["{"+d.namespaceURI+"}"+d.localName]=h,d=u.iterateNext()}o.propStat.push(c),l=a.iterateNext()}i.push(o),s=r.iterateNext()}return i},resolveUrl:function(t){if(/^https?:\/\//i.test(t))return t;var e=this.parseUrl(this.baseUrl);return t.charAt("/")?e.root+t:(e.root,-1!==e.path.lastIndexOf("/")&&e.path.subString(0,e.path.lastIndexOf("/")),t)},parseUrl:function(t){var e=t.match(/^(?:([A-Za-z]+):)?(\/{0,3})([0-9.\-A-Za-z]+)(?::(\d+))?(?:\/([^?#]*))?(?:\?([^#]*))?(?:#(.*))?$/),n={url:e[0],scheme:e[1],host:e[3],port:e[4],path:e[5],query:e[6],fragment:e[7]};return n.root=n.scheme+"://"+n.host+(n.port?":"+n.port:""),n},parseClarkNotation:function(t){var e=t.match(/^{([^}]+)}(.*)$/);if(e)return{name:e[2],namespace:e[1]}}},void 0!==t.exports&&(t.exports.Client=dav.Client),t.exports={dav}},35358:(t,e,n)=>{var r={"./af":25177,"./af.js":25177,"./ar":61509,"./ar-dz":41488,"./ar-dz.js":41488,"./ar-kw":58676,"./ar-kw.js":58676,"./ar-ly":42353,"./ar-ly.js":42353,"./ar-ma":24496,"./ar-ma.js":24496,"./ar-ps":6947,"./ar-ps.js":6947,"./ar-sa":60301,"./ar-sa.js":60301,"./ar-tn":89756,"./ar-tn.js":89756,"./ar.js":61509,"./az":95533,"./az.js":95533,"./be":28959,"./be.js":28959,"./bg":47777,"./bg.js":47777,"./bm":54903,"./bm.js":54903,"./bn":61290,"./bn-bd":17357,"./bn-bd.js":17357,"./bn.js":61290,"./bo":31545,"./bo.js":31545,"./br":11470,"./br.js":11470,"./bs":44429,"./bs.js":44429,"./ca":7306,"./ca.js":7306,"./cs":56464,"./cs.js":56464,"./cv":73635,"./cv.js":73635,"./cy":64226,"./cy.js":64226,"./da":93601,"./da.js":93601,"./de":77853,"./de-at":26111,"./de-at.js":26111,"./de-ch":54697,"./de-ch.js":54697,"./de.js":77853,"./dv":60708,"./dv.js":60708,"./el":54691,"./el.js":54691,"./en-au":53872,"./en-au.js":53872,"./en-ca":28298,"./en-ca.js":28298,"./en-gb":56195,"./en-gb.js":56195,"./en-ie":66584,"./en-ie.js":66584,"./en-il":65543,"./en-il.js":65543,"./en-in":9033,"./en-in.js":9033,"./en-nz":79402,"./en-nz.js":79402,"./en-sg":43004,"./en-sg.js":43004,"./eo":32934,"./eo.js":32934,"./es":97650,"./es-do":20838,"./es-do.js":20838,"./es-mx":17730,"./es-mx.js":17730,"./es-us":56575,"./es-us.js":56575,"./es.js":97650,"./et":3035,"./et.js":3035,"./eu":3508,"./eu.js":3508,"./fa":119,"./fa.js":119,"./fi":90527,"./fi.js":90527,"./fil":95995,"./fil.js":95995,"./fo":52477,"./fo.js":52477,"./fr":85498,"./fr-ca":26435,"./fr-ca.js":26435,"./fr-ch":37892,"./fr-ch.js":37892,"./fr.js":85498,"./fy":37071,"./fy.js":37071,"./ga":41734,"./ga.js":41734,"./gd":70217,"./gd.js":70217,"./gl":77329,"./gl.js":77329,"./gom-deva":32124,"./gom-deva.js":32124,"./gom-latn":93383,"./gom-latn.js":93383,"./gu":95050,"./gu.js":95050,"./he":11713,"./he.js":11713,"./hi":43861,"./hi.js":43861,"./hr":26308,"./hr.js":26308,"./hu":90609,"./hu.js":90609,"./hy-am":17160,"./hy-am.js":17160,"./id":74063,"./id.js":74063,"./is":89374,"./is.js":89374,"./it":88383,"./it-ch":21827,"./it-ch.js":21827,"./it.js":88383,"./ja":23827,"./ja.js":23827,"./jv":89722,"./jv.js":89722,"./ka":41794,"./ka.js":41794,"./kk":27088,"./kk.js":27088,"./km":96870,"./km.js":96870,"./kn":84451,"./kn.js":84451,"./ko":63164,"./ko.js":63164,"./ku":98174,"./ku-kmr":6181,"./ku-kmr.js":6181,"./ku.js":98174,"./ky":78474,"./ky.js":78474,"./lb":79680,"./lb.js":79680,"./lo":15867,"./lo.js":15867,"./lt":45766,"./lt.js":45766,"./lv":69532,"./lv.js":69532,"./me":58076,"./me.js":58076,"./mi":41848,"./mi.js":41848,"./mk":30306,"./mk.js":30306,"./ml":73739,"./ml.js":73739,"./mn":99053,"./mn.js":99053,"./mr":86169,"./mr.js":86169,"./ms":73386,"./ms-my":92297,"./ms-my.js":92297,"./ms.js":73386,"./mt":77075,"./mt.js":77075,"./my":72264,"./my.js":72264,"./nb":22274,"./nb.js":22274,"./ne":8235,"./ne.js":8235,"./nl":92572,"./nl-be":43784,"./nl-be.js":43784,"./nl.js":92572,"./nn":54566,"./nn.js":54566,"./oc-lnc":69330,"./oc-lnc.js":69330,"./pa-in":29849,"./pa-in.js":29849,"./pl":94418,"./pl.js":94418,"./pt":79834,"./pt-br":48303,"./pt-br.js":48303,"./pt.js":79834,"./ro":24457,"./ro.js":24457,"./ru":82271,"./ru.js":82271,"./sd":1221,"./sd.js":1221,"./se":33478,"./se.js":33478,"./si":17538,"./si.js":17538,"./sk":5784,"./sk.js":5784,"./sl":46637,"./sl.js":46637,"./sq":86794,"./sq.js":86794,"./sr":45719,"./sr-cyrl":3322,"./sr-cyrl.js":3322,"./sr.js":45719,"./ss":56e3,"./ss.js":56e3,"./sv":41011,"./sv.js":41011,"./sw":40748,"./sw.js":40748,"./ta":11025,"./ta.js":11025,"./te":11885,"./te.js":11885,"./tet":28861,"./tet.js":28861,"./tg":86571,"./tg.js":86571,"./th":55802,"./th.js":55802,"./tk":59527,"./tk.js":59527,"./tl-ph":29231,"./tl-ph.js":29231,"./tlh":31052,"./tlh.js":31052,"./tr":85096,"./tr.js":85096,"./tzl":79846,"./tzl.js":79846,"./tzm":81765,"./tzm-latn":97711,"./tzm-latn.js":97711,"./tzm.js":81765,"./ug-cn":48414,"./ug-cn.js":48414,"./uk":16618,"./uk.js":16618,"./ur":57777,"./ur.js":57777,"./uz":57609,"./uz-latn":72475,"./uz-latn.js":72475,"./uz.js":57609,"./vi":21135,"./vi.js":21135,"./x-pseudo":64051,"./x-pseudo.js":64051,"./yo":82218,"./yo.js":82218,"./zh-cn":52648,"./zh-cn.js":52648,"./zh-hk":1632,"./zh-hk.js":1632,"./zh-mo":31541,"./zh-mo.js":31541,"./zh-tw":50304,"./zh-tw.js":50304};function i(t){var e=s(t);return n(e)}function s(t){if(!n.o(r,t)){var e=new Error("Cannot find module '"+t+"'");throw e.code="MODULE_NOT_FOUND",e}return r[t]}i.keys=function(){return Object.keys(r)},i.resolve=s,t.exports=i,i.id=35358},35810:(t,e,n)=>{"use strict";n.d(e,{Al:()=>I,H4:()=>S,PY:()=>j,Q$:()=>O,R3:()=>A,VL:()=>w,lJ:()=>T,pt:()=>_,v7:()=>p});var r,i=n(92457),s=n(53529),o=n(53334),a=n(43627),l=n(71089),c=n(63814),u=n(44719),d=n(36117);null===(r=(0,i.HW)())?(0,s.YK)().setApp("files").build():(0,s.YK)().setApp("files").setUid(r.uid).build();const h=["B","KB","MB","GB","TB","PB"],f=["B","KiB","MiB","GiB","TiB","PiB"];function p(t,e=!1,n=!1,r=!1){n=n&&!r,"string"==typeof t&&(t=Number(t));let i=t>0?Math.floor(Math.log(t)/Math.log(r?1e3:1024)):0;i=Math.min((n?f.length:h.length)-1,i);const s=n?f[i]:h[i];let a=(t/Math.pow(r?1e3:1024,i)).toFixed(1);return!0===e&&0===i?("0.0"!==a?"< 1 ":"0 ")+(n?f[1]:h[1]):(a=i<2?parseFloat(a).toFixed(0):parseFloat(a).toLocaleString((0,o.lO)()),a+" "+s)}var m=(t=>(t[t.NONE=0]="NONE",t[t.CREATE=4]="CREATE",t[t.READ=1]="READ",t[t.UPDATE=2]="UPDATE",t[t.DELETE=8]="DELETE",t[t.SHARE=16]="SHARE",t[t.ALL=31]="ALL",t))(m||{});const g=["d:getcontentlength","d:getcontenttype","d:getetag","d:getlastmodified","d:quota-available-bytes","d:resourcetype","nc:has-preview","nc:is-encrypted","nc:mount-type","oc:comments-unread","oc:favorite","oc:fileid","oc:owner-display-name","oc:owner-id","oc:permissions","oc:size"],v={d:"DAV:",nc:"http://nextcloud.org/ns",oc:"http://owncloud.org/ns",ocs:"http://open-collaboration-services.org/ns"},y=function(){return typeof window._nc_dav_properties>"u"&&(window._nc_dav_properties=[...g]),window._nc_dav_properties.map((t=>`<${t} />`)).join(" ")},b=function(){return typeof window._nc_dav_namespaces>"u"&&(window._nc_dav_namespaces={...v}),Object.keys(window._nc_dav_namespaces).map((t=>`xmlns:${t}="${window._nc_dav_namespaces?.[t]}"`)).join(" ")},w=function(){return`<?xml version="1.0"?>\n\t\t<d:propfind ${b()}>\n\t\t\t<d:prop>\n\t\t\t\t${y()}\n\t\t\t</d:prop>\n\t\t</d:propfind>`},A=function(t){return`<?xml version="1.0" encoding="UTF-8"?>\n<d:searchrequest ${b()}\n\txmlns:ns="https://github.com/icewind1991/SearchDAV/ns">\n\t<d:basicsearch>\n\t\t<d:select>\n\t\t\t<d:prop>\n\t\t\t\t${y()}\n\t\t\t</d:prop>\n\t\t</d:select>\n\t\t<d:from>\n\t\t\t<d:scope>\n\t\t\t\t<d:href>/files/${(0,i.HW)()?.uid}/</d:href>\n\t\t\t\t<d:depth>infinity</d:depth>\n\t\t\t</d:scope>\n\t\t</d:from>\n\t\t<d:where>\n\t\t\t<d:and>\n\t\t\t\t<d:or>\n\t\t\t\t\t<d:not>\n\t\t\t\t\t\t<d:eq>\n\t\t\t\t\t\t\t<d:prop>\n\t\t\t\t\t\t\t\t<d:getcontenttype/>\n\t\t\t\t\t\t\t</d:prop>\n\t\t\t\t\t\t\t<d:literal>httpd/unix-directory</d:literal>\n\t\t\t\t\t\t</d:eq>\n\t\t\t\t\t</d:not>\n\t\t\t\t\t<d:eq>\n\t\t\t\t\t\t<d:prop>\n\t\t\t\t\t\t\t<oc:size/>\n\t\t\t\t\t\t</d:prop>\n\t\t\t\t\t\t<d:literal>0</d:literal>\n\t\t\t\t\t</d:eq>\n\t\t\t\t</d:or>\n\t\t\t\t<d:gt>\n\t\t\t\t\t<d:prop>\n\t\t\t\t\t\t<d:getlastmodified/>\n\t\t\t\t\t</d:prop>\n\t\t\t\t\t<d:literal>${t}</d:literal>\n\t\t\t\t</d:gt>\n\t\t\t</d:and>\n\t\t</d:where>\n\t\t<d:orderby>\n\t\t\t<d:order>\n\t\t\t\t<d:prop>\n\t\t\t\t\t<d:getlastmodified/>\n\t\t\t\t</d:prop>\n\t\t\t\t<d:descending/>\n\t\t\t</d:order>\n\t\t</d:orderby>\n\t\t<d:limit>\n\t\t\t<d:nresults>100</d:nresults>\n\t\t\t<ns:firstresult>0</ns:firstresult>\n\t\t</d:limit>\n\t</d:basicsearch>\n</d:searchrequest>`};var _=(t=>(t.Folder="folder",t.File="file",t))(_||{});const x=function(t,e){return null!==t.match(e)},C=(t,e)=>{if(t.id&&"number"!=typeof t.id)throw new Error("Invalid id type of value");if(!t.source)throw new Error("Missing mandatory source");try{new URL(t.source)}catch{throw new Error("Invalid source format, source must be a valid URL")}if(!t.source.startsWith("http"))throw new Error("Invalid source format, only http(s) is supported");if(t.mtime&&!(t.mtime instanceof Date))throw new Error("Invalid mtime type");if(t.crtime&&!(t.crtime instanceof Date))throw new Error("Invalid crtime type");if(!t.mime||"string"!=typeof t.mime||!t.mime.match(/^[-\w.]+\/[-+\w.]+$/gi))throw new Error("Missing or invalid mandatory mime");if("size"in t&&"number"!=typeof t.size&&void 0!==t.size)throw new Error("Invalid size type");if("permissions"in t&&void 0!==t.permissions&&!("number"==typeof t.permissions&&t.permissions>=m.NONE&&t.permissions<=m.ALL))throw new Error("Invalid permissions");if(t.owner&&null!==t.owner&&"string"!=typeof t.owner)throw new Error("Invalid owner type");if(t.attributes&&"object"!=typeof t.attributes)throw new Error("Invalid attributes type");if(t.root&&"string"!=typeof t.root)throw new Error("Invalid root type");if(t.root&&!t.root.startsWith("/"))throw new Error("Root must start with a leading slash");if(t.root&&!t.source.includes(t.root))throw new Error("Root must be part of the source");if(t.root&&x(t.source,e)){const n=t.source.match(e)[0];if(!t.source.includes((0,a.join)(n,t.root)))throw new Error("The root must be relative to the service. e.g /files/emma")}if(t.status&&!Object.values(k).includes(t.status))throw new Error("Status must be a valid NodeStatus")};var k=(t=>(t.NEW="new",t.FAILED="failed",t.LOADING="loading",t.LOCKED="locked",t))(k||{});class N{_data;_attributes;_knownDavService=/(remote|public)\.php\/(web)?dav/i;constructor(t,e){C(t,e||this._knownDavService),this._data=t;const n={set:(t,e,n)=>(this.updateMtime(),Reflect.set(t,e,n)),deleteProperty:(t,e)=>(this.updateMtime(),Reflect.deleteProperty(t,e))};this._attributes=new Proxy(t.attributes||{},n),delete this._data.attributes,e&&(this._knownDavService=e)}get source(){return this._data.source.replace(/\/$/i,"")}get encodedSource(){const{origin:t}=new URL(this.source);return t+(0,l.O0)(this.source.slice(t.length))}get basename(){return(0,a.basename)(this.source)}get extension(){return(0,a.extname)(this.source)}get dirname(){if(this.root){let t=this.source;this.isDavRessource&&(t=t.split(this._knownDavService).pop());const e=t.indexOf(this.root),n=this.root.replace(/\/$/,"");return(0,a.dirname)(t.slice(e+n.length)||"/")}const t=new URL(this.source);return(0,a.dirname)(t.pathname)}get mime(){return this._data.mime}get mtime(){return this._data.mtime}get crtime(){return this._data.crtime}get size(){return this._data.size}get attributes(){return this._attributes}get permissions(){return null!==this.owner||this.isDavRessource?void 0!==this._data.permissions?this._data.permissions:m.NONE:m.READ}get owner(){return this.isDavRessource?this._data.owner:null}get isDavRessource(){return x(this.source,this._knownDavService)}get root(){return this._data.root?this._data.root.replace(/^(.+)\/$/,"$1"):this.isDavRessource&&(0,a.dirname)(this.source).split(this._knownDavService).pop()||null}get path(){if(this.root){let t=this.source;this.isDavRessource&&(t=t.split(this._knownDavService).pop());const e=t.indexOf(this.root),n=this.root.replace(/\/$/,"");return t.slice(e+n.length)||"/"}return(this.dirname+"/"+this.basename).replace(/\/\//g,"/")}get fileid(){return this._data?.id||this.attributes?.fileid}get status(){return this._data?.status}set status(t){this._data.status=t}move(t){C({...this._data,source:t},this._knownDavService),this._data.source=t,this.updateMtime()}rename(t){if(t.includes("/"))throw new Error("Invalid basename");this.move((0,a.dirname)(this.source)+"/"+t)}updateMtime(){this._data.mtime&&(this._data.mtime=new Date)}}class E extends N{get type(){return _.File}}class P extends N{constructor(t){super({...t,mime:"httpd/unix-directory"})}get type(){return _.Folder}get extension(){return null}get mime(){return"httpd/unix-directory"}}const T=`/files/${(0,i.HW)()?.uid}`,j=(0,c.dC)("dav"),S=function(t=j,e={}){const n=(0,u.UU)(t,{headers:e});function r(t){n.setHeaders({...e,"X-Requested-With":"XMLHttpRequest",requesttoken:t??""})}return(0,i.zo)(r),r((0,i.do)()),(0,u.Gu)().patch("fetch",((t,e)=>{const n=e.headers;return n?.method&&(e.method=n.method,delete n.method),fetch(t,e)})),n},O=(t,e="/",n=T)=>{const r=new AbortController;return new d.CancelablePromise((async(i,s,o)=>{o((()=>r.abort()));try{i((await t.getDirectoryContents(`${n}${e}`,{signal:r.signal,details:!0,data:`<?xml version="1.0"?>\n\t\t<oc:filter-files ${b()}>\n\t\t\t<d:prop>\n\t\t\t\t${y()}\n\t\t\t</d:prop>\n\t\t\t<oc:filter-rules>\n\t\t\t\t<oc:favorite>1</oc:favorite>\n\t\t\t</oc:filter-rules>\n\t\t</oc:filter-files>`,headers:{method:"REPORT"},includeSelf:!0})).data.filter((t=>t.filename!==e)).map((t=>I(t,n))))}catch(t){s(t)}}))},I=function(t,e=T,n=j){const r=(0,i.HW)()?.uid;if(!r)throw new Error("No user id found");const s=t.props,o=function(t=""){let e=m.NONE;return t&&((t.includes("C")||t.includes("K"))&&(e|=m.CREATE),t.includes("G")&&(e|=m.READ),(t.includes("W")||t.includes("N")||t.includes("V"))&&(e|=m.UPDATE),t.includes("D")&&(e|=m.DELETE),t.includes("R")&&(e|=m.SHARE)),e}(s?.permissions),a=(s?.["owner-id"]||r).toString(),l={id:s?.fileid||0,source:`${n}${t.filename}`,mtime:new Date(Date.parse(t.lastmod)),mime:t.mime||"application/octet-stream",size:s?.size||Number.parseInt(s.getcontentlength||"0"),permissions:o,owner:a,root:e,attributes:{...t,...s,hasPreview:s?.["has-preview"]}};return delete l.attributes?.props,"file"===t.type?new E(l):new P(l)};var R={};!function(t){const e=":A-Za-z_\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD",n="["+e+"]["+e+"\\-.\\d\\u00B7\\u0300-\\u036F\\u203F-\\u2040]*",r=new RegExp("^"+n+"$");t.isExist=function(t){return typeof t<"u"},t.isEmptyObject=function(t){return 0===Object.keys(t).length},t.merge=function(t,e,n){if(e){const r=Object.keys(e),i=r.length;for(let s=0;s<i;s++)t[r[s]]="strict"===n?[e[r[s]]]:e[r[s]]}},t.getValue=function(e){return t.isExist(e)?e:""},t.isName=function(t){const e=r.exec(t);return!(null===e||typeof e>"u")},t.getAllMatches=function(t,e){const n=[];let r=e.exec(t);for(;r;){const i=[];i.startIndex=e.lastIndex-r[0].length;const s=r.length;for(let t=0;t<s;t++)i.push(r[t]);n.push(i),r=e.exec(t)}return n},t.nameRegexp=n}(R);new RegExp("(\\s*)([^\\s=]+)(\\s*=)?(\\s*(['\"])(([\\s\\S])*?)\\5)?","g");var L={};const F={preserveOrder:!1,attributeNamePrefix:"@_",attributesGroupName:!1,textNodeName:"#text",ignoreAttributes:!0,removeNSPrefix:!1,allowBooleanAttributes:!1,parseTagValue:!0,parseAttributeValue:!1,trimValues:!0,cdataPropName:!1,numberParseOptions:{hex:!0,leadingZeros:!0,eNotation:!0},tagValueProcessor:function(t,e){return e},attributeValueProcessor:function(t,e){return e},stopNodes:[],alwaysCreateTextNode:!1,isArray:()=>!1,commentPropName:!1,unpairedTags:[],processEntities:!0,htmlEntities:!1,ignoreDeclaration:!1,ignorePiTags:!1,transformTagName:!1,transformAttributeName:!1,updateTag:function(t,e,n){return t}};L.buildOptions=function(t){return Object.assign({},F,t)},L.defaultOptions=F,!Number.parseInt&&window.parseInt&&(Number.parseInt=window.parseInt),!Number.parseFloat&&window.parseFloat&&(Number.parseFloat=window.parseFloat),new RegExp("([^\\s=]+)\\s*(=\\s*(['\"])([\\s\\S]*?)\\3)?","gm");var B={};function U(t,e,n){let r;const i={};for(let s=0;s<t.length;s++){const o=t[s],a=D(o);let l="";if(l=void 0===n?a:n+"."+a,a===e.textNodeName)void 0===r?r=o[a]:r+=""+o[a];else{if(void 0===a)continue;if(o[a]){let t=U(o[a],e,l);const n=z(t,e);o[":@"]?M(t,o[":@"],l,e):1!==Object.keys(t).length||void 0===t[e.textNodeName]||e.alwaysCreateTextNode?0===Object.keys(t).length&&(e.alwaysCreateTextNode?t[e.textNodeName]="":t=""):t=t[e.textNodeName],void 0!==i[a]&&i.hasOwnProperty(a)?(Array.isArray(i[a])||(i[a]=[i[a]]),i[a].push(t)):e.isArray(a,l,n)?i[a]=[t]:i[a]=t}}}return"string"==typeof r?r.length>0&&(i[e.textNodeName]=r):void 0!==r&&(i[e.textNodeName]=r),i}function D(t){const e=Object.keys(t);for(let t=0;t<e.length;t++){const n=e[t];if(":@"!==n)return n}}function M(t,e,n,r){if(e){const i=Object.keys(e),s=i.length;for(let o=0;o<s;o++){const s=i[o];r.isArray(s,n+"."+s,!0,!0)?t[s]=[e[s]]:t[s]=e[s]}}}function z(t,e){const{textNodeName:n}=e,r=Object.keys(t).length;return!(0!==r&&(1!==r||!t[n]&&"boolean"!=typeof t[n]&&0!==t[n]))}B.prettify=function(t,e){return U(t,e)};const{buildOptions:$}=L,{prettify:H}=B;function q(t,e,n,r){let i="",s=!1;for(let o=0;o<t.length;o++){const a=t[o],l=V(a);if(void 0===l)continue;let c="";if(c=0===n.length?l:`${n}.${l}`,l===e.textNodeName){let t=a[l];K(c,e)||(t=e.tagValueProcessor(l,t),t=Y(t,e)),s&&(i+=r),i+=t,s=!1;continue}if(l===e.cdataPropName){s&&(i+=r),i+=`<![CDATA[${a[l][0][e.textNodeName]}]]>`,s=!1;continue}if(l===e.commentPropName){i+=r+`\x3c!--${a[l][0][e.textNodeName]}--\x3e`,s=!0;continue}if("?"===l[0]){const t=W(a[":@"],e),n="?xml"===l?"":r;let o=a[l][0][e.textNodeName];o=0!==o.length?" "+o:"",i+=n+`<${l}${o}${t}?>`,s=!0;continue}let u=r;""!==u&&(u+=e.indentBy);const d=r+`<${l}${W(a[":@"],e)}`,h=q(a[l],e,c,u);-1!==e.unpairedTags.indexOf(l)?e.suppressUnpairedNode?i+=d+">":i+=d+"/>":h&&0!==h.length||!e.suppressEmptyNode?h&&h.endsWith(">")?i+=d+`>${h}${r}</${l}>`:(i+=d+">",h&&""!==r&&(h.includes("/>")||h.includes("</"))?i+=r+e.indentBy+h+r:i+=h,i+=`</${l}>`):i+=d+"/>",s=!0}return i}function V(t){const e=Object.keys(t);for(let n=0;n<e.length;n++){const r=e[n];if(t.hasOwnProperty(r)&&":@"!==r)return r}}function W(t,e){let n="";if(t&&!e.ignoreAttributes)for(let r in t){if(!t.hasOwnProperty(r))continue;let i=e.attributeValueProcessor(r,t[r]);i=Y(i,e),!0===i&&e.suppressBooleanAttributes?n+=` ${r.substr(e.attributeNamePrefix.length)}`:n+=` ${r.substr(e.attributeNamePrefix.length)}="${i}"`}return n}function K(t,e){let n=(t=t.substr(0,t.length-e.textNodeName.length-1)).substr(t.lastIndexOf(".")+1);for(let r in e.stopNodes)if(e.stopNodes[r]===t||e.stopNodes[r]==="*."+n)return!0;return!1}function Y(t,e){if(t&&t.length>0&&e.processEntities)for(let n=0;n<e.entities.length;n++){const r=e.entities[n];t=t.replace(r.regex,r.val)}return t}const G=function(t,e){let n="";return e.format&&e.indentBy.length>0&&(n="\n"),q(t,e,"",n)},J={attributeNamePrefix:"@_",attributesGroupName:!1,textNodeName:"#text",ignoreAttributes:!0,cdataPropName:!1,format:!1,indentBy:" ",suppressEmptyNode:!1,suppressUnpairedNode:!0,suppressBooleanAttributes:!0,tagValueProcessor:function(t,e){return e},attributeValueProcessor:function(t,e){return e},preserveOrder:!1,commentPropName:!1,unpairedTags:[],entities:[{regex:new RegExp("&","g"),val:"&"},{regex:new RegExp(">","g"),val:">"},{regex:new RegExp("<","g"),val:"<"},{regex:new RegExp("'","g"),val:"'"},{regex:new RegExp('"',"g"),val:"""}],processEntities:!0,stopNodes:[],oneListGroup:!1};function X(t){this.options=Object.assign({},J,t),this.options.ignoreAttributes||this.options.attributesGroupName?this.isAttribute=function(){return!1}:(this.attrPrefixLen=this.options.attributeNamePrefix.length,this.isAttribute=tt),this.processTextOrObjNode=Q,this.options.format?(this.indentate=Z,this.tagEndChar=">\n",this.newLine="\n"):(this.indentate=function(){return""},this.tagEndChar=">",this.newLine="")}function Q(t,e,n){const r=this.j2x(t,n+1);return void 0!==t[this.options.textNodeName]&&1===Object.keys(t).length?this.buildTextValNode(t[this.options.textNodeName],e,r.attrStr,n):this.buildObjectNode(r.val,e,r.attrStr,n)}function Z(t){return this.options.indentBy.repeat(t)}function tt(t){return!(!t.startsWith(this.options.attributeNamePrefix)||t===this.options.textNodeName)&&t.substr(this.attrPrefixLen)}X.prototype.build=function(t){return this.options.preserveOrder?G(t,this.options):(Array.isArray(t)&&this.options.arrayNodeName&&this.options.arrayNodeName.length>1&&(t={[this.options.arrayNodeName]:t}),this.j2x(t,0).val)},X.prototype.j2x=function(t,e){let n="",r="";for(let i in t)if(Object.prototype.hasOwnProperty.call(t,i))if(typeof t[i]>"u")this.isAttribute(i)&&(r+="");else if(null===t[i])this.isAttribute(i)?r+="":"?"===i[0]?r+=this.indentate(e)+"<"+i+"?"+this.tagEndChar:r+=this.indentate(e)+"<"+i+"/"+this.tagEndChar;else if(t[i]instanceof Date)r+=this.buildTextValNode(t[i],i,"",e);else if("object"!=typeof t[i]){const s=this.isAttribute(i);if(s)n+=this.buildAttrPairStr(s,""+t[i]);else if(i===this.options.textNodeName){let e=this.options.tagValueProcessor(i,""+t[i]);r+=this.replaceEntitiesValue(e)}else r+=this.buildTextValNode(t[i],i,"",e)}else if(Array.isArray(t[i])){const n=t[i].length;let s="";for(let o=0;o<n;o++){const n=t[i][o];typeof n>"u"||(null===n?"?"===i[0]?r+=this.indentate(e)+"<"+i+"?"+this.tagEndChar:r+=this.indentate(e)+"<"+i+"/"+this.tagEndChar:"object"==typeof n?this.options.oneListGroup?s+=this.j2x(n,e+1).val:s+=this.processTextOrObjNode(n,i,e):s+=this.buildTextValNode(n,i,"",e))}this.options.oneListGroup&&(s=this.buildObjectNode(s,i,"",e)),r+=s}else if(this.options.attributesGroupName&&i===this.options.attributesGroupName){const e=Object.keys(t[i]),r=e.length;for(let s=0;s<r;s++)n+=this.buildAttrPairStr(e[s],""+t[i][e[s]])}else r+=this.processTextOrObjNode(t[i],i,e);return{attrStr:n,val:r}},X.prototype.buildAttrPairStr=function(t,e){return e=this.options.attributeValueProcessor(t,""+e),e=this.replaceEntitiesValue(e),this.options.suppressBooleanAttributes&&"true"===e?" "+t:" "+t+'="'+e+'"'},X.prototype.buildObjectNode=function(t,e,n,r){if(""===t)return"?"===e[0]?this.indentate(r)+"<"+e+n+"?"+this.tagEndChar:this.indentate(r)+"<"+e+n+this.closeTag(e)+this.tagEndChar;{let i="</"+e+this.tagEndChar,s="";return"?"===e[0]&&(s="?",i=""),!n&&""!==n||-1!==t.indexOf("<")?!1!==this.options.commentPropName&&e===this.options.commentPropName&&0===s.length?this.indentate(r)+`\x3c!--${t}--\x3e`+this.newLine:this.indentate(r)+"<"+e+n+s+this.tagEndChar+t+this.indentate(r)+i:this.indentate(r)+"<"+e+n+s+">"+t+i}},X.prototype.closeTag=function(t){let e="";return-1!==this.options.unpairedTags.indexOf(t)?this.options.suppressUnpairedNode||(e="/"):e=this.options.suppressEmptyNode?"/":`></${t}`,e},X.prototype.buildTextValNode=function(t,e,n,r){if(!1!==this.options.cdataPropName&&e===this.options.cdataPropName)return this.indentate(r)+`<![CDATA[${t}]]>`+this.newLine;if(!1!==this.options.commentPropName&&e===this.options.commentPropName)return this.indentate(r)+`\x3c!--${t}--\x3e`+this.newLine;if("?"===e[0])return this.indentate(r)+"<"+e+n+"?"+this.tagEndChar;{let i=this.options.tagValueProcessor(e,t);return i=this.replaceEntitiesValue(i),""===i?this.indentate(r)+"<"+e+n+this.closeTag(e)+this.tagEndChar:this.indentate(r)+"<"+e+n+">"+i+"</"+e+this.tagEndChar}},X.prototype.replaceEntitiesValue=function(t){if(t&&t.length>0&&this.options.processEntities)for(let e=0;e<this.options.entities.length;e++){const n=this.options.entities[e];t=t.replace(n.regex,n.val)}return t}},4523:(t,e,n)=>{"use strict";n.r(e),n.d(e,{VERSION:()=>i,after:()=>Re,all:()=>tn,allKeys:()=>gt,any:()=>en,assign:()=>Rt,before:()=>Le,bind:()=>_e,bindAll:()=>ke,chain:()=>ye,chunk:()=>Un,clone:()=>Ut,collect:()=>Ye,compact:()=>En,compose:()=>Ie,constant:()=>Q,contains:()=>nn,countBy:()=>vn,create:()=>Bt,debounce:()=>je,default:()=>Hn,defaults:()=>Lt,defer:()=>Pe,delay:()=>Ee,detect:()=>Ve,difference:()=>Tn,drop:()=>kn,each:()=>Ke,escape:()=>oe,every:()=>tn,extend:()=>It,extendOwn:()=>Rt,filter:()=>Qe,find:()=>Ve,findIndex:()=>De,findKey:()=>Be,findLastIndex:()=>Me,findWhere:()=>We,first:()=>Cn,flatten:()=>Pn,foldl:()=>Je,foldr:()=>Xe,forEach:()=>Ke,functions:()=>St,get:()=>Ht,groupBy:()=>mn,has:()=>qt,head:()=>Cn,identity:()=>Vt,include:()=>nn,includes:()=>nn,indexBy:()=>gn,indexOf:()=>He,initial:()=>xn,inject:()=>Je,intersection:()=>In,invert:()=>jt,invoke:()=>rn,isArguments:()=>G,isArray:()=>W,isArrayBuffer:()=>B,isBoolean:()=>P,isDataView:()=>V,isDate:()=>I,isElement:()=>T,isEmpty:()=>lt,isEqual:()=>mt,isError:()=>L,isFinite:()=>J,isFunction:()=>M,isMap:()=>Ct,isMatch:()=>ct,isNaN:()=>X,isNull:()=>N,isNumber:()=>O,isObject:()=>k,isRegExp:()=>R,isSet:()=>Nt,isString:()=>S,isSymbol:()=>F,isTypedArray:()=>it,isUndefined:()=>E,isWeakMap:()=>kt,isWeakSet:()=>Et,iteratee:()=>Jt,keys:()=>at,last:()=>Nn,lastIndexOf:()=>qe,map:()=>Ye,mapObject:()=>Qt,matcher:()=>Wt,matches:()=>Wt,max:()=>an,memoize:()=>Ne,methods:()=>St,min:()=>ln,mixin:()=>Mn,negate:()=>Oe,noop:()=>Zt,now:()=>re,object:()=>Fn,omit:()=>_n,once:()=>Fe,pairs:()=>Tt,partial:()=>Ae,partition:()=>yn,pick:()=>An,pluck:()=>sn,property:()=>Kt,propertyOf:()=>te,random:()=>ne,range:()=>Bn,reduce:()=>Je,reduceRight:()=>Xe,reject:()=>Ze,rest:()=>kn,restArguments:()=>C,result:()=>me,sample:()=>dn,select:()=>Qe,shuffle:()=>hn,size:()=>bn,some:()=>en,sortBy:()=>fn,sortedIndex:()=>ze,tail:()=>kn,take:()=>Cn,tap:()=>Dt,template:()=>pe,templateSettings:()=>le,throttle:()=>Te,times:()=>ee,toArray:()=>un,toPath:()=>Mt,transpose:()=>Rn,unescape:()=>ae,union:()=>On,uniq:()=>Sn,unique:()=>Sn,uniqueId:()=>ve,unzip:()=>Rn,values:()=>Pt,where:()=>on,without:()=>jn,wrap:()=>Se,zip:()=>Ln});var r={};n.r(r),n.d(r,{VERSION:()=>i,after:()=>Re,all:()=>tn,allKeys:()=>gt,any:()=>en,assign:()=>Rt,before:()=>Le,bind:()=>_e,bindAll:()=>ke,chain:()=>ye,chunk:()=>Un,clone:()=>Ut,collect:()=>Ye,compact:()=>En,compose:()=>Ie,constant:()=>Q,contains:()=>nn,countBy:()=>vn,create:()=>Bt,debounce:()=>je,default:()=>zn,defaults:()=>Lt,defer:()=>Pe,delay:()=>Ee,detect:()=>Ve,difference:()=>Tn,drop:()=>kn,each:()=>Ke,escape:()=>oe,every:()=>tn,extend:()=>It,extendOwn:()=>Rt,filter:()=>Qe,find:()=>Ve,findIndex:()=>De,findKey:()=>Be,findLastIndex:()=>Me,findWhere:()=>We,first:()=>Cn,flatten:()=>Pn,foldl:()=>Je,foldr:()=>Xe,forEach:()=>Ke,functions:()=>St,get:()=>Ht,groupBy:()=>mn,has:()=>qt,head:()=>Cn,identity:()=>Vt,include:()=>nn,includes:()=>nn,indexBy:()=>gn,indexOf:()=>He,initial:()=>xn,inject:()=>Je,intersection:()=>In,invert:()=>jt,invoke:()=>rn,isArguments:()=>G,isArray:()=>W,isArrayBuffer:()=>B,isBoolean:()=>P,isDataView:()=>V,isDate:()=>I,isElement:()=>T,isEmpty:()=>lt,isEqual:()=>mt,isError:()=>L,isFinite:()=>J,isFunction:()=>M,isMap:()=>Ct,isMatch:()=>ct,isNaN:()=>X,isNull:()=>N,isNumber:()=>O,isObject:()=>k,isRegExp:()=>R,isSet:()=>Nt,isString:()=>S,isSymbol:()=>F,isTypedArray:()=>it,isUndefined:()=>E,isWeakMap:()=>kt,isWeakSet:()=>Et,iteratee:()=>Jt,keys:()=>at,last:()=>Nn,lastIndexOf:()=>qe,map:()=>Ye,mapObject:()=>Qt,matcher:()=>Wt,matches:()=>Wt,max:()=>an,memoize:()=>Ne,methods:()=>St,min:()=>ln,mixin:()=>Mn,negate:()=>Oe,noop:()=>Zt,now:()=>re,object:()=>Fn,omit:()=>_n,once:()=>Fe,pairs:()=>Tt,partial:()=>Ae,partition:()=>yn,pick:()=>An,pluck:()=>sn,property:()=>Kt,propertyOf:()=>te,random:()=>ne,range:()=>Bn,reduce:()=>Je,reduceRight:()=>Xe,reject:()=>Ze,rest:()=>kn,restArguments:()=>C,result:()=>me,sample:()=>dn,select:()=>Qe,shuffle:()=>hn,size:()=>bn,some:()=>en,sortBy:()=>fn,sortedIndex:()=>ze,tail:()=>kn,take:()=>Cn,tap:()=>Dt,template:()=>pe,templateSettings:()=>le,throttle:()=>Te,times:()=>ee,toArray:()=>un,toPath:()=>Mt,transpose:()=>Rn,unescape:()=>ae,union:()=>On,uniq:()=>Sn,unique:()=>Sn,uniqueId:()=>ve,unzip:()=>Rn,values:()=>Pt,where:()=>on,without:()=>jn,wrap:()=>Se,zip:()=>Ln});var i="1.13.6",s="object"==typeof self&&self.self===self&&self||"object"==typeof global&&global.global===global&&global||Function("return this")()||{},o=Array.prototype,a=Object.prototype,l="undefined"!=typeof Symbol?Symbol.prototype:null,c=o.push,u=o.slice,d=a.toString,h=a.hasOwnProperty,f="undefined"!=typeof ArrayBuffer,p="undefined"!=typeof DataView,m=Array.isArray,g=Object.keys,v=Object.create,y=f&&ArrayBuffer.isView,b=isNaN,w=isFinite,A=!{toString:null}.propertyIsEnumerable("toString"),_=["valueOf","isPrototypeOf","toString","propertyIsEnumerable","hasOwnProperty","toLocaleString"],x=Math.pow(2,53)-1;function C(t,e){return e=null==e?t.length-1:+e,function(){for(var n=Math.max(arguments.length-e,0),r=Array(n),i=0;i<n;i++)r[i]=arguments[i+e];switch(e){case 0:return t.call(this,r);case 1:return t.call(this,arguments[0],r);case 2:return t.call(this,arguments[0],arguments[1],r)}var s=Array(e+1);for(i=0;i<e;i++)s[i]=arguments[i];return s[e]=r,t.apply(this,s)}}function k(t){var e=typeof t;return"function"===e||"object"===e&&!!t}function N(t){return null===t}function E(t){return void 0===t}function P(t){return!0===t||!1===t||"[object Boolean]"===d.call(t)}function T(t){return!(!t||1!==t.nodeType)}function j(t){var e="[object "+t+"]";return function(t){return d.call(t)===e}}const S=j("String"),O=j("Number"),I=j("Date"),R=j("RegExp"),L=j("Error"),F=j("Symbol"),B=j("ArrayBuffer");var U=j("Function"),D=s.document&&s.document.childNodes;"object"!=typeof Int8Array&&"function"!=typeof D&&(U=function(t){return"function"==typeof t||!1});const M=U,z=j("Object");var $=p&&z(new DataView(new ArrayBuffer(8))),H="undefined"!=typeof Map&&z(new Map),q=j("DataView");const V=$?function(t){return null!=t&&M(t.getInt8)&&B(t.buffer)}:q,W=m||j("Array");function K(t,e){return null!=t&&h.call(t,e)}var Y=j("Arguments");!function(){Y(arguments)||(Y=function(t){return K(t,"callee")})}();const G=Y;function J(t){return!F(t)&&w(t)&&!isNaN(parseFloat(t))}function X(t){return O(t)&&b(t)}function Q(t){return function(){return t}}function Z(t){return function(e){var n=t(e);return"number"==typeof n&&n>=0&&n<=x}}function tt(t){return function(e){return null==e?void 0:e[t]}}const et=tt("byteLength"),nt=Z(et);var rt=/\[object ((I|Ui)nt(8|16|32)|Float(32|64)|Uint8Clamped|Big(I|Ui)nt64)Array\]/;const it=f?function(t){return y?y(t)&&!V(t):nt(t)&&rt.test(d.call(t))}:Q(!1),st=tt("length");function ot(t,e){e=function(t){for(var e={},n=t.length,r=0;r<n;++r)e[t[r]]=!0;return{contains:function(t){return!0===e[t]},push:function(n){return e[n]=!0,t.push(n)}}}(e);var n=_.length,r=t.constructor,i=M(r)&&r.prototype||a,s="constructor";for(K(t,s)&&!e.contains(s)&&e.push(s);n--;)(s=_[n])in t&&t[s]!==i[s]&&!e.contains(s)&&e.push(s)}function at(t){if(!k(t))return[];if(g)return g(t);var e=[];for(var n in t)K(t,n)&&e.push(n);return A&&ot(t,e),e}function lt(t){if(null==t)return!0;var e=st(t);return"number"==typeof e&&(W(t)||S(t)||G(t))?0===e:0===st(at(t))}function ct(t,e){var n=at(e),r=n.length;if(null==t)return!r;for(var i=Object(t),s=0;s<r;s++){var o=n[s];if(e[o]!==i[o]||!(o in i))return!1}return!0}function ut(t){return t instanceof ut?t:this instanceof ut?void(this._wrapped=t):new ut(t)}function dt(t){return new Uint8Array(t.buffer||t,t.byteOffset||0,et(t))}ut.VERSION=i,ut.prototype.value=function(){return this._wrapped},ut.prototype.valueOf=ut.prototype.toJSON=ut.prototype.value,ut.prototype.toString=function(){return String(this._wrapped)};var ht="[object DataView]";function ft(t,e,n,r){if(t===e)return 0!==t||1/t==1/e;if(null==t||null==e)return!1;if(t!=t)return e!=e;var i=typeof t;return("function"===i||"object"===i||"object"==typeof e)&&pt(t,e,n,r)}function pt(t,e,n,r){t instanceof ut&&(t=t._wrapped),e instanceof ut&&(e=e._wrapped);var i=d.call(t);if(i!==d.call(e))return!1;if($&&"[object Object]"==i&&V(t)){if(!V(e))return!1;i=ht}switch(i){case"[object RegExp]":case"[object String]":return""+t==""+e;case"[object Number]":return+t!=+t?+e!=+e:0==+t?1/+t==1/e:+t==+e;case"[object Date]":case"[object Boolean]":return+t==+e;case"[object Symbol]":return l.valueOf.call(t)===l.valueOf.call(e);case"[object ArrayBuffer]":case ht:return pt(dt(t),dt(e),n,r)}var s="[object Array]"===i;if(!s&&it(t)){if(et(t)!==et(e))return!1;if(t.buffer===e.buffer&&t.byteOffset===e.byteOffset)return!0;s=!0}if(!s){if("object"!=typeof t||"object"!=typeof e)return!1;var o=t.constructor,a=e.constructor;if(o!==a&&!(M(o)&&o instanceof o&&M(a)&&a instanceof a)&&"constructor"in t&&"constructor"in e)return!1}r=r||[];for(var c=(n=n||[]).length;c--;)if(n[c]===t)return r[c]===e;if(n.push(t),r.push(e),s){if((c=t.length)!==e.length)return!1;for(;c--;)if(!ft(t[c],e[c],n,r))return!1}else{var u,h=at(t);if(c=h.length,at(e).length!==c)return!1;for(;c--;)if(!K(e,u=h[c])||!ft(t[u],e[u],n,r))return!1}return n.pop(),r.pop(),!0}function mt(t,e){return ft(t,e)}function gt(t){if(!k(t))return[];var e=[];for(var n in t)e.push(n);return A&&ot(t,e),e}function vt(t){var e=st(t);return function(n){if(null==n)return!1;var r=gt(n);if(st(r))return!1;for(var i=0;i<e;i++)if(!M(n[t[i]]))return!1;return t!==_t||!M(n[yt])}}var yt="forEach",bt=["clear","delete"],wt=["get","has","set"],At=bt.concat(yt,wt),_t=bt.concat(wt),xt=["add"].concat(bt,yt,"has");const Ct=H?vt(At):j("Map"),kt=H?vt(_t):j("WeakMap"),Nt=H?vt(xt):j("Set"),Et=j("WeakSet");function Pt(t){for(var e=at(t),n=e.length,r=Array(n),i=0;i<n;i++)r[i]=t[e[i]];return r}function Tt(t){for(var e=at(t),n=e.length,r=Array(n),i=0;i<n;i++)r[i]=[e[i],t[e[i]]];return r}function jt(t){for(var e={},n=at(t),r=0,i=n.length;r<i;r++)e[t[n[r]]]=n[r];return e}function St(t){var e=[];for(var n in t)M(t[n])&&e.push(n);return e.sort()}function Ot(t,e){return function(n){var r=arguments.length;if(e&&(n=Object(n)),r<2||null==n)return n;for(var i=1;i<r;i++)for(var s=arguments[i],o=t(s),a=o.length,l=0;l<a;l++){var c=o[l];e&&void 0!==n[c]||(n[c]=s[c])}return n}}const It=Ot(gt),Rt=Ot(at),Lt=Ot(gt,!0);function Ft(t){if(!k(t))return{};if(v)return v(t);var e=function(){};e.prototype=t;var n=new e;return e.prototype=null,n}function Bt(t,e){var n=Ft(t);return e&&Rt(n,e),n}function Ut(t){return k(t)?W(t)?t.slice():It({},t):t}function Dt(t,e){return e(t),t}function Mt(t){return W(t)?t:[t]}function zt(t){return ut.toPath(t)}function $t(t,e){for(var n=e.length,r=0;r<n;r++){if(null==t)return;t=t[e[r]]}return n?t:void 0}function Ht(t,e,n){var r=$t(t,zt(e));return E(r)?n:r}function qt(t,e){for(var n=(e=zt(e)).length,r=0;r<n;r++){var i=e[r];if(!K(t,i))return!1;t=t[i]}return!!n}function Vt(t){return t}function Wt(t){return t=Rt({},t),function(e){return ct(e,t)}}function Kt(t){return t=zt(t),function(e){return $t(e,t)}}function Yt(t,e,n){if(void 0===e)return t;switch(null==n?3:n){case 1:return function(n){return t.call(e,n)};case 3:return function(n,r,i){return t.call(e,n,r,i)};case 4:return function(n,r,i,s){return t.call(e,n,r,i,s)}}return function(){return t.apply(e,arguments)}}function Gt(t,e,n){return null==t?Vt:M(t)?Yt(t,e,n):k(t)&&!W(t)?Wt(t):Kt(t)}function Jt(t,e){return Gt(t,e,1/0)}function Xt(t,e,n){return ut.iteratee!==Jt?ut.iteratee(t,e):Gt(t,e,n)}function Qt(t,e,n){e=Xt(e,n);for(var r=at(t),i=r.length,s={},o=0;o<i;o++){var a=r[o];s[a]=e(t[a],a,t)}return s}function Zt(){}function te(t){return null==t?Zt:function(e){return Ht(t,e)}}function ee(t,e,n){var r=Array(Math.max(0,t));e=Yt(e,n,1);for(var i=0;i<t;i++)r[i]=e(i);return r}function ne(t,e){return null==e&&(e=t,t=0),t+Math.floor(Math.random()*(e-t+1))}ut.toPath=Mt,ut.iteratee=Jt;const re=Date.now||function(){return(new Date).getTime()};function ie(t){var e=function(e){return t[e]},n="(?:"+at(t).join("|")+")",r=RegExp(n),i=RegExp(n,"g");return function(t){return t=null==t?"":""+t,r.test(t)?t.replace(i,e):t}}const se={"&":"&","<":"<",">":">",'"':""","'":"'","`":"`"},oe=ie(se),ae=ie(jt(se)),le=ut.templateSettings={evaluate:/<%([\s\S]+?)%>/g,interpolate:/<%=([\s\S]+?)%>/g,escape:/<%-([\s\S]+?)%>/g};var ce=/(.)^/,ue={"'":"'","\\":"\\","\r":"r","\n":"n","\u2028":"u2028","\u2029":"u2029"},de=/\\|'|\r|\n|\u2028|\u2029/g;function he(t){return"\\"+ue[t]}var fe=/^\s*(\w|\$)+\s*$/;function pe(t,e,n){!e&&n&&(e=n),e=Lt({},e,ut.templateSettings);var r=RegExp([(e.escape||ce).source,(e.interpolate||ce).source,(e.evaluate||ce).source].join("|")+"|$","g"),i=0,s="__p+='";t.replace(r,(function(e,n,r,o,a){return s+=t.slice(i,a).replace(de,he),i=a+e.length,n?s+="'+\n((__t=("+n+"))==null?'':_.escape(__t))+\n'":r?s+="'+\n((__t=("+r+"))==null?'':__t)+\n'":o&&(s+="';\n"+o+"\n__p+='"),e})),s+="';\n";var o,a=e.variable;if(a){if(!fe.test(a))throw new Error("variable is not a bare identifier: "+a)}else s="with(obj||{}){\n"+s+"}\n",a="obj";s="var __t,__p='',__j=Array.prototype.join,print=function(){__p+=__j.call(arguments,'');};\n"+s+"return __p;\n";try{o=new Function(a,"_",s)}catch(t){throw t.source=s,t}var l=function(t){return o.call(this,t,ut)};return l.source="function("+a+"){\n"+s+"}",l}function me(t,e,n){var r=(e=zt(e)).length;if(!r)return M(n)?n.call(t):n;for(var i=0;i<r;i++){var s=null==t?void 0:t[e[i]];void 0===s&&(s=n,i=r),t=M(s)?s.call(t):s}return t}var ge=0;function ve(t){var e=++ge+"";return t?t+e:e}function ye(t){var e=ut(t);return e._chain=!0,e}function be(t,e,n,r,i){if(!(r instanceof e))return t.apply(n,i);var s=Ft(t.prototype),o=t.apply(s,i);return k(o)?o:s}var we=C((function(t,e){var n=we.placeholder,r=function(){for(var i=0,s=e.length,o=Array(s),a=0;a<s;a++)o[a]=e[a]===n?arguments[i++]:e[a];for(;i<arguments.length;)o.push(arguments[i++]);return be(t,r,this,this,o)};return r}));we.placeholder=ut;const Ae=we,_e=C((function(t,e,n){if(!M(t))throw new TypeError("Bind must be called on a function");var r=C((function(i){return be(t,r,e,this,n.concat(i))}));return r})),xe=Z(st);function Ce(t,e,n,r){if(r=r||[],e||0===e){if(e<=0)return r.concat(t)}else e=1/0;for(var i=r.length,s=0,o=st(t);s<o;s++){var a=t[s];if(xe(a)&&(W(a)||G(a)))if(e>1)Ce(a,e-1,n,r),i=r.length;else for(var l=0,c=a.length;l<c;)r[i++]=a[l++];else n||(r[i++]=a)}return r}const ke=C((function(t,e){var n=(e=Ce(e,!1,!1)).length;if(n<1)throw new Error("bindAll must be passed function names");for(;n--;){var r=e[n];t[r]=_e(t[r],t)}return t}));function Ne(t,e){var n=function(r){var i=n.cache,s=""+(e?e.apply(this,arguments):r);return K(i,s)||(i[s]=t.apply(this,arguments)),i[s]};return n.cache={},n}const Ee=C((function(t,e,n){return setTimeout((function(){return t.apply(null,n)}),e)})),Pe=Ae(Ee,ut,1);function Te(t,e,n){var r,i,s,o,a=0;n||(n={});var l=function(){a=!1===n.leading?0:re(),r=null,o=t.apply(i,s),r||(i=s=null)},c=function(){var c=re();a||!1!==n.leading||(a=c);var u=e-(c-a);return i=this,s=arguments,u<=0||u>e?(r&&(clearTimeout(r),r=null),a=c,o=t.apply(i,s),r||(i=s=null)):r||!1===n.trailing||(r=setTimeout(l,u)),o};return c.cancel=function(){clearTimeout(r),a=0,r=i=s=null},c}function je(t,e,n){var r,i,s,o,a,l=function(){var c=re()-i;e>c?r=setTimeout(l,e-c):(r=null,n||(o=t.apply(a,s)),r||(s=a=null))},c=C((function(c){return a=this,s=c,i=re(),r||(r=setTimeout(l,e),n&&(o=t.apply(a,s))),o}));return c.cancel=function(){clearTimeout(r),r=s=a=null},c}function Se(t,e){return Ae(e,t)}function Oe(t){return function(){return!t.apply(this,arguments)}}function Ie(){var t=arguments,e=t.length-1;return function(){for(var n=e,r=t[e].apply(this,arguments);n--;)r=t[n].call(this,r);return r}}function Re(t,e){return function(){if(--t<1)return e.apply(this,arguments)}}function Le(t,e){var n;return function(){return--t>0&&(n=e.apply(this,arguments)),t<=1&&(e=null),n}}const Fe=Ae(Le,2);function Be(t,e,n){e=Xt(e,n);for(var r,i=at(t),s=0,o=i.length;s<o;s++)if(e(t[r=i[s]],r,t))return r}function Ue(t){return function(e,n,r){n=Xt(n,r);for(var i=st(e),s=t>0?0:i-1;s>=0&&s<i;s+=t)if(n(e[s],s,e))return s;return-1}}const De=Ue(1),Me=Ue(-1);function ze(t,e,n,r){for(var i=(n=Xt(n,r,1))(e),s=0,o=st(t);s<o;){var a=Math.floor((s+o)/2);n(t[a])<i?s=a+1:o=a}return s}function $e(t,e,n){return function(r,i,s){var o=0,a=st(r);if("number"==typeof s)t>0?o=s>=0?s:Math.max(s+a,o):a=s>=0?Math.min(s+1,a):s+a+1;else if(n&&s&&a)return r[s=n(r,i)]===i?s:-1;if(i!=i)return(s=e(u.call(r,o,a),X))>=0?s+o:-1;for(s=t>0?o:a-1;s>=0&&s<a;s+=t)if(r[s]===i)return s;return-1}}const He=$e(1,De,ze),qe=$e(-1,Me);function Ve(t,e,n){var r=(xe(t)?De:Be)(t,e,n);if(void 0!==r&&-1!==r)return t[r]}function We(t,e){return Ve(t,Wt(e))}function Ke(t,e,n){var r,i;if(e=Yt(e,n),xe(t))for(r=0,i=t.length;r<i;r++)e(t[r],r,t);else{var s=at(t);for(r=0,i=s.length;r<i;r++)e(t[s[r]],s[r],t)}return t}function Ye(t,e,n){e=Xt(e,n);for(var r=!xe(t)&&at(t),i=(r||t).length,s=Array(i),o=0;o<i;o++){var a=r?r[o]:o;s[o]=e(t[a],a,t)}return s}function Ge(t){return function(e,n,r,i){var s=arguments.length>=3;return function(e,n,r,i){var s=!xe(e)&&at(e),o=(s||e).length,a=t>0?0:o-1;for(i||(r=e[s?s[a]:a],a+=t);a>=0&&a<o;a+=t){var l=s?s[a]:a;r=n(r,e[l],l,e)}return r}(e,Yt(n,i,4),r,s)}}const Je=Ge(1),Xe=Ge(-1);function Qe(t,e,n){var r=[];return e=Xt(e,n),Ke(t,(function(t,n,i){e(t,n,i)&&r.push(t)})),r}function Ze(t,e,n){return Qe(t,Oe(Xt(e)),n)}function tn(t,e,n){e=Xt(e,n);for(var r=!xe(t)&&at(t),i=(r||t).length,s=0;s<i;s++){var o=r?r[s]:s;if(!e(t[o],o,t))return!1}return!0}function en(t,e,n){e=Xt(e,n);for(var r=!xe(t)&&at(t),i=(r||t).length,s=0;s<i;s++){var o=r?r[s]:s;if(e(t[o],o,t))return!0}return!1}function nn(t,e,n,r){return xe(t)||(t=Pt(t)),("number"!=typeof n||r)&&(n=0),He(t,e,n)>=0}const rn=C((function(t,e,n){var r,i;return M(e)?i=e:(e=zt(e),r=e.slice(0,-1),e=e[e.length-1]),Ye(t,(function(t){var s=i;if(!s){if(r&&r.length&&(t=$t(t,r)),null==t)return;s=t[e]}return null==s?s:s.apply(t,n)}))}));function sn(t,e){return Ye(t,Kt(e))}function on(t,e){return Qe(t,Wt(e))}function an(t,e,n){var r,i,s=-1/0,o=-1/0;if(null==e||"number"==typeof e&&"object"!=typeof t[0]&&null!=t)for(var a=0,l=(t=xe(t)?t:Pt(t)).length;a<l;a++)null!=(r=t[a])&&r>s&&(s=r);else e=Xt(e,n),Ke(t,(function(t,n,r){((i=e(t,n,r))>o||i===-1/0&&s===-1/0)&&(s=t,o=i)}));return s}function ln(t,e,n){var r,i,s=1/0,o=1/0;if(null==e||"number"==typeof e&&"object"!=typeof t[0]&&null!=t)for(var a=0,l=(t=xe(t)?t:Pt(t)).length;a<l;a++)null!=(r=t[a])&&r<s&&(s=r);else e=Xt(e,n),Ke(t,(function(t,n,r){((i=e(t,n,r))<o||i===1/0&&s===1/0)&&(s=t,o=i)}));return s}var cn=/[^\ud800-\udfff]|[\ud800-\udbff][\udc00-\udfff]|[\ud800-\udfff]/g;function un(t){return t?W(t)?u.call(t):S(t)?t.match(cn):xe(t)?Ye(t,Vt):Pt(t):[]}function dn(t,e,n){if(null==e||n)return xe(t)||(t=Pt(t)),t[ne(t.length-1)];var r=un(t),i=st(r);e=Math.max(Math.min(e,i),0);for(var s=i-1,o=0;o<e;o++){var a=ne(o,s),l=r[o];r[o]=r[a],r[a]=l}return r.slice(0,e)}function hn(t){return dn(t,1/0)}function fn(t,e,n){var r=0;return e=Xt(e,n),sn(Ye(t,(function(t,n,i){return{value:t,index:r++,criteria:e(t,n,i)}})).sort((function(t,e){var n=t.criteria,r=e.criteria;if(n!==r){if(n>r||void 0===n)return 1;if(n<r||void 0===r)return-1}return t.index-e.index})),"value")}function pn(t,e){return function(n,r,i){var s=e?[[],[]]:{};return r=Xt(r,i),Ke(n,(function(e,i){var o=r(e,i,n);t(s,e,o)})),s}}const mn=pn((function(t,e,n){K(t,n)?t[n].push(e):t[n]=[e]})),gn=pn((function(t,e,n){t[n]=e})),vn=pn((function(t,e,n){K(t,n)?t[n]++:t[n]=1})),yn=pn((function(t,e,n){t[n?0:1].push(e)}),!0);function bn(t){return null==t?0:xe(t)?t.length:at(t).length}function wn(t,e,n){return e in n}const An=C((function(t,e){var n={},r=e[0];if(null==t)return n;M(r)?(e.length>1&&(r=Yt(r,e[1])),e=gt(t)):(r=wn,e=Ce(e,!1,!1),t=Object(t));for(var i=0,s=e.length;i<s;i++){var o=e[i],a=t[o];r(a,o,t)&&(n[o]=a)}return n})),_n=C((function(t,e){var n,r=e[0];return M(r)?(r=Oe(r),e.length>1&&(n=e[1])):(e=Ye(Ce(e,!1,!1),String),r=function(t,n){return!nn(e,n)}),An(t,r,n)}));function xn(t,e,n){return u.call(t,0,Math.max(0,t.length-(null==e||n?1:e)))}function Cn(t,e,n){return null==t||t.length<1?null==e||n?void 0:[]:null==e||n?t[0]:xn(t,t.length-e)}function kn(t,e,n){return u.call(t,null==e||n?1:e)}function Nn(t,e,n){return null==t||t.length<1?null==e||n?void 0:[]:null==e||n?t[t.length-1]:kn(t,Math.max(0,t.length-e))}function En(t){return Qe(t,Boolean)}function Pn(t,e){return Ce(t,e,!1)}const Tn=C((function(t,e){return e=Ce(e,!0,!0),Qe(t,(function(t){return!nn(e,t)}))})),jn=C((function(t,e){return Tn(t,e)}));function Sn(t,e,n,r){P(e)||(r=n,n=e,e=!1),null!=n&&(n=Xt(n,r));for(var i=[],s=[],o=0,a=st(t);o<a;o++){var l=t[o],c=n?n(l,o,t):l;e&&!n?(o&&s===c||i.push(l),s=c):n?nn(s,c)||(s.push(c),i.push(l)):nn(i,l)||i.push(l)}return i}const On=C((function(t){return Sn(Ce(t,!0,!0))}));function In(t){for(var e=[],n=arguments.length,r=0,i=st(t);r<i;r++){var s=t[r];if(!nn(e,s)){var o;for(o=1;o<n&&nn(arguments[o],s);o++);o===n&&e.push(s)}}return e}function Rn(t){for(var e=t&&an(t,st).length||0,n=Array(e),r=0;r<e;r++)n[r]=sn(t,r);return n}const Ln=C(Rn);function Fn(t,e){for(var n={},r=0,i=st(t);r<i;r++)e?n[t[r]]=e[r]:n[t[r][0]]=t[r][1];return n}function Bn(t,e,n){null==e&&(e=t||0,t=0),n||(n=e<t?-1:1);for(var r=Math.max(Math.ceil((e-t)/n),0),i=Array(r),s=0;s<r;s++,t+=n)i[s]=t;return i}function Un(t,e){if(null==e||e<1)return[];for(var n=[],r=0,i=t.length;r<i;)n.push(u.call(t,r,r+=e));return n}function Dn(t,e){return t._chain?ut(e).chain():e}function Mn(t){return Ke(St(t),(function(e){var n=ut[e]=t[e];ut.prototype[e]=function(){var t=[this._wrapped];return c.apply(t,arguments),Dn(this,n.apply(ut,t))}})),ut}Ke(["pop","push","reverse","shift","sort","splice","unshift"],(function(t){var e=o[t];ut.prototype[t]=function(){var n=this._wrapped;return null!=n&&(e.apply(n,arguments),"shift"!==t&&"splice"!==t||0!==n.length||delete n[0]),Dn(this,n)}})),Ke(["concat","join","slice"],(function(t){var e=o[t];ut.prototype[t]=function(){var t=this._wrapped;return null!=t&&(t=e.apply(t,arguments)),Dn(this,t)}}));const zn=ut;var $n=Mn(r);$n._=$n;const Hn=$n}},o={};function a(t){var e=o[t];if(void 0!==e)return e.exports;var n=o[t]={id:t,loaded:!1,exports:{}};return s[t].call(n.exports,n,n.exports,a),n.loaded=!0,n.exports}a.m=s,e=[],a.O=(t,n,r,i)=>{if(!n){var s=1/0;for(u=0;u<e.length;u++){n=e[u][0],r=e[u][1],i=e[u][2];for(var o=!0,l=0;l<n.length;l++)(!1&i||s>=i)&&Object.keys(a.O).every((t=>a.O[t](n[l])))?n.splice(l--,1):(o=!1,i<s&&(s=i));if(o){e.splice(u--,1);var c=r();void 0!==c&&(t=c)}}return t}i=i||0;for(var u=e.length;u>0&&e[u-1][2]>i;u--)e[u]=e[u-1];e[u]=[n,r,i]},a.n=t=>{var e=t&&t.__esModule?()=>t.default:()=>t;return a.d(e,{a:e}),e},a.d=(t,e)=>{for(var n in e)a.o(e,n)&&!a.o(t,n)&&Object.defineProperty(t,n,{enumerable:!0,get:e[n]})},a.f={},a.e=t=>Promise.all(Object.keys(a.f).reduce(((e,n)=>(a.f[n](t,e),e)),[])),a.u=t=>t+"-"+t+".js?v="+{1110:"a5d6e6f59aa058840a1e",1642:"00f437770241bf2f3a71",5455:"8915a218db5b7bc90f34"}[t],a.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(t){if("object"==typeof window)return window}}(),a.o=(t,e)=>Object.prototype.hasOwnProperty.call(t,e),r={},i="nextcloud:",a.l=(t,e,n,s)=>{if(r[t])r[t].push(e);else{var o,l;if(void 0!==n)for(var c=document.getElementsByTagName("script"),u=0;u<c.length;u++){var d=c[u];if(d.getAttribute("src")==t||d.getAttribute("data-webpack")==i+n){o=d;break}}o||(l=!0,(o=document.createElement("script")).charset="utf-8",o.timeout=120,a.nc&&o.setAttribute("nonce",a.nc),o.setAttribute("data-webpack",i+n),o.src=t),r[t]=[e];var h=(e,n)=>{o.onerror=o.onload=null,clearTimeout(f);var i=r[t];if(delete r[t],o.parentNode&&o.parentNode.removeChild(o),i&&i.forEach((t=>t(n))),e)return e(n)},f=setTimeout(h.bind(null,void 0,{type:"timeout",target:o}),12e4);o.onerror=h.bind(null,o.onerror),o.onload=h.bind(null,o.onload),l&&document.head.appendChild(o)}},a.r=t=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},a.nmd=t=>(t.paths=[],t.children||(t.children=[]),t),a.j=1418,(()=>{var t;a.g.importScripts&&(t=a.g.location+"");var e=a.g.document;if(!t&&e&&(e.currentScript&&(t=e.currentScript.src),!t)){var n=e.getElementsByTagName("script");if(n.length)for(var r=n.length-1;r>-1&&(!t||!/^http(s?):/.test(t));)t=n[r--].src}if(!t)throw new Error("Automatic publicPath is not supported in this browser");t=t.replace(/#.*$/,"").replace(/\?.*$/,"").replace(/\/[^\/]+$/,"/"),a.p=t})(),(()=>{a.b=document.baseURI||self.location.href;var t={1418:0};a.f.j=(e,n)=>{var r=a.o(t,e)?t[e]:void 0;if(0!==r)if(r)n.push(r[2]);else{var i=new Promise(((n,i)=>r=t[e]=[n,i]));n.push(r[2]=i);var s=a.p+a.u(e),o=new Error;a.l(s,(n=>{if(a.o(t,e)&&(0!==(r=t[e])&&(t[e]=void 0),r)){var i=n&&("load"===n.type?"missing":n.type),s=n&&n.target&&n.target.src;o.message="Loading chunk "+e+" failed.\n("+i+": "+s+")",o.name="ChunkLoadError",o.type=i,o.request=s,r[1](o)}}),"chunk-"+e,e)}},a.O.j=e=>0===t[e];var e=(e,n)=>{var r,i,s=n[0],o=n[1],l=n[2],c=0;if(s.some((e=>0!==t[e]))){for(r in o)a.o(o,r)&&(a.m[r]=o[r]);if(l)var u=l(a)}for(e&&e(n);c<s.length;c++)i=s[c],a.o(t,i)&&t[i]&&t[i][0](),t[i]=0;return a.O(u)},n=self.webpackChunknextcloud=self.webpackChunknextcloud||[];n.forEach(e.bind(null,0)),n.push=e.bind(null,n.push.bind(n))})(),a.nc=void 0;var l=a.O(void 0,[4208],(()=>a(33693)));l=a.O(l)})(); +//# sourceMappingURL=core-login.js.map?v=15bcaad545abcd0293c8
\ No newline at end of file diff --git a/dist/core-login.js.map b/dist/core-login.js.map index 96beee117b5..d200ce468d8 100644 --- a/dist/core-login.js.map +++ b/dist/core-login.js.map @@ -1 +1 @@ -{"version":3,"file":"core-login.js?v=7b850c77098ac1082311","mappings":"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","sources":["webpack:///nextcloud/webpack/runtime/chunk loaded","webpack:///nextcloud/webpack/runtime/load script","webpack:///nextcloud/core/src/OC/notification.js","webpack:///nextcloud/core/src/OC/xhr-error.js","webpack:///nextcloud/core/src/OC/apps.js","webpack:///nextcloud/core/src/OCP/appconfig.js","webpack:///nextcloud/core/src/OC/appconfig.js","webpack:///nextcloud/core/src/OC/appswebroots.js","webpack:///nextcloud/core/src/OC/backbone-webdav.js","webpack:///nextcloud/core/src/OC/backbone.js","webpack:///nextcloud/core/src/OC/query-string.js","webpack:///nextcloud/core/src/OC/config.js","webpack:///nextcloud/core/src/OC/currentuser.js","webpack:///nextcloud/core/src/OC/dialogs.js","webpack:///nextcloud/core/src/OC/requesttoken.js","webpack:///nextcloud/core/src/OC/eventsource.js","webpack:///nextcloud/core/src/OC/menu.js","webpack:///nextcloud/core/src/OC/constants.js","webpack:///nextcloud/core/src/OC/admin.js","webpack:///nextcloud/core/src/OC/l10n.js","webpack:///nextcloud/core/src/OC/routing.js","webpack:///nextcloud/core/src/OC/msg.js","webpack:///nextcloud/core/src/OC/password-confirmation.js","webpack:///nextcloud/core/src/OC/plugins.js","webpack:///nextcloud/core/src/OC/theme.js","webpack:///nextcloud/core/src/OC/util-history.js","webpack:///nextcloud/core/src/OC/util.js","webpack:///nextcloud/core/src/OC/debug.js","webpack:///nextcloud/core/src/OC/webroot.js","webpack:///nextcloud/core/src/OC/index.js","webpack:///nextcloud/core/src/OC/capabilities.js","webpack:///nextcloud/core/src/OC/host.js","webpack:///nextcloud/core/src/OC/get_set.js","webpack:///nextcloud/core/src/OC/navigation.js","webpack://nextcloud/./core/src/views/Login.vue?ae59","webpack:///nextcloud/node_modules/decode-uri-component/index.js","webpack:///nextcloud/node_modules/split-on-first/index.js","webpack:///nextcloud/node_modules/query-string/node_modules/filter-obj/index.js","webpack:///nextcloud/node_modules/query-string/base.js","webpack:///nextcloud/node_modules/query-string/index.js","webpack://nextcloud/./core/src/components/login/LoginForm.vue?4366","webpack:///nextcloud/core/src/mixins/auth.js","webpack://nextcloud/./core/src/components/login/LoginButton.vue?82aa","webpack:///nextcloud/core/src/components/login/LoginButton.vue","webpack:///nextcloud/core/src/components/login/LoginButton.vue?vue&type=script&lang=js","webpack://nextcloud/./core/src/components/login/LoginButton.vue?9f29","webpack://nextcloud/./core/src/components/login/LoginButton.vue?14f0","webpack:///nextcloud/core/src/components/login/LoginForm.vue?vue&type=script&lang=js","webpack:///nextcloud/core/src/components/login/LoginForm.vue","webpack://nextcloud/./core/src/components/login/LoginForm.vue?e8ab","webpack://nextcloud/./core/src/components/login/LoginForm.vue?a678","webpack:///nextcloud/node_modules/@simplewebauthn/browser/dist/bundle/index.js","webpack:///nextcloud/core/src/logger.js","webpack:///nextcloud/core/src/services/WebAuthnAuthenticationService.ts","webpack:///nextcloud/node_modules/vue-material-design-icons/Information.vue","webpack:///nextcloud/node_modules/vue-material-design-icons/Information.vue?vue&type=script&lang=js","webpack://nextcloud/./node_modules/vue-material-design-icons/Information.vue?8a14","webpack:///nextcloud/node_modules/vue-material-design-icons/Information.vue?vue&type=template&id=70e6f3ef","webpack:///nextcloud/node_modules/vue-material-design-icons/LockOpen.vue?vue&type=script&lang=js","webpack:///nextcloud/node_modules/vue-material-design-icons/LockOpen.vue","webpack://nextcloud/./node_modules/vue-material-design-icons/LockOpen.vue?104d","webpack:///nextcloud/node_modules/vue-material-design-icons/LockOpen.vue?vue&type=template&id=1b7ea4e7","webpack:///nextcloud/core/src/components/login/PasswordLessLoginForm.vue","webpack:///nextcloud/core/src/components/login/PasswordLessLoginForm.vue?vue&type=script&lang=js","webpack://nextcloud/./core/src/components/login/PasswordLessLoginForm.vue?5774","webpack://nextcloud/./core/src/components/login/PasswordLessLoginForm.vue?09eb","webpack://nextcloud/./core/src/components/login/PasswordLessLoginForm.vue?16ec","webpack://nextcloud/./core/src/components/login/ResetPassword.vue?7cf3","webpack:///nextcloud/core/src/components/login/ResetPassword.vue","webpack:///nextcloud/core/src/components/login/ResetPassword.vue?vue&type=script&lang=js","webpack://nextcloud/./core/src/components/login/ResetPassword.vue?e272","webpack://nextcloud/./core/src/components/login/ResetPassword.vue?9d75","webpack:///nextcloud/core/src/components/login/UpdatePassword.vue?vue&type=script&lang=js","webpack:///nextcloud/core/src/components/login/UpdatePassword.vue","webpack://nextcloud/./core/src/components/login/UpdatePassword.vue?6d61","webpack://nextcloud/./core/src/components/login/UpdatePassword.vue?30ca","webpack://nextcloud/./core/src/components/login/UpdatePassword.vue?1c8f","webpack:///nextcloud/core/src/views/Login.vue","webpack:///nextcloud/core/src/views/Login.vue?vue&type=script&lang=js","webpack://nextcloud/./core/src/views/Login.vue?f290","webpack://nextcloud/./core/src/views/Login.vue?3468","webpack:///nextcloud/core/src/mixins/Nextcloud.js","webpack:///nextcloud/core/src/login.js","webpack:///nextcloud/node_modules/backbone/backbone.js","webpack:///nextcloud/core/src/components/login/LoginButton.vue?vue&type=style&index=0&id=d2cd6448&prod&lang=scss&scoped=true","webpack:///nextcloud/core/src/components/login/LoginForm.vue?vue&type=style&index=0&id=563906d0&prod&lang=scss&scoped=true","webpack:///nextcloud/core/src/components/login/PasswordLessLoginForm.vue?vue&type=style&index=0&id=4a6bfc86&prod&lang=scss&scoped=true","webpack:///nextcloud/core/src/components/login/ResetPassword.vue?vue&type=style&index=0&id=cd5425c6&prod&lang=scss&scoped=true","webpack:///nextcloud/core/src/views/Login.vue?vue&type=style&index=0&id=6adceba0&prod&lang=scss","webpack:///nextcloud/core/src/components/login/UpdatePassword.vue?vue&type=style&index=0&id=6bdd5975&prod&scoped=true&lang=css","webpack:///nextcloud/node_modules/davclient.js/lib/client.js","webpack:///nextcloud/node_modules/moment/locale|sync|/^\\.\\/.*$","webpack:///nextcloud/node_modules/@nextcloud/files/dist/index.mjs","webpack:///nextcloud/node_modules/underscore/modules/_setup.js","webpack:///nextcloud/node_modules/underscore/modules/restArguments.js","webpack:///nextcloud/node_modules/underscore/modules/isObject.js","webpack:///nextcloud/node_modules/underscore/modules/isNull.js","webpack:///nextcloud/node_modules/underscore/modules/isUndefined.js","webpack:///nextcloud/node_modules/underscore/modules/isBoolean.js","webpack:///nextcloud/node_modules/underscore/modules/isElement.js","webpack:///nextcloud/node_modules/underscore/modules/_tagTester.js","webpack:///nextcloud/node_modules/underscore/modules/isString.js","webpack:///nextcloud/node_modules/underscore/modules/isNumber.js","webpack:///nextcloud/node_modules/underscore/modules/isDate.js","webpack:///nextcloud/node_modules/underscore/modules/isRegExp.js","webpack:///nextcloud/node_modules/underscore/modules/isError.js","webpack:///nextcloud/node_modules/underscore/modules/isSymbol.js","webpack:///nextcloud/node_modules/underscore/modules/isArrayBuffer.js","webpack:///nextcloud/node_modules/underscore/modules/isFunction.js","webpack:///nextcloud/node_modules/underscore/modules/_hasObjectTag.js","webpack:///nextcloud/node_modules/underscore/modules/_stringTagBug.js","webpack:///nextcloud/node_modules/underscore/modules/isDataView.js","webpack:///nextcloud/node_modules/underscore/modules/isArray.js","webpack:///nextcloud/node_modules/underscore/modules/_has.js","webpack:///nextcloud/node_modules/underscore/modules/isArguments.js","webpack:///nextcloud/node_modules/underscore/modules/isFinite.js","webpack:///nextcloud/node_modules/underscore/modules/isNaN.js","webpack:///nextcloud/node_modules/underscore/modules/constant.js","webpack:///nextcloud/node_modules/underscore/modules/_createSizePropertyCheck.js","webpack:///nextcloud/node_modules/underscore/modules/_shallowProperty.js","webpack:///nextcloud/node_modules/underscore/modules/_getByteLength.js","webpack:///nextcloud/node_modules/underscore/modules/_isBufferLike.js","webpack:///nextcloud/node_modules/underscore/modules/isTypedArray.js","webpack:///nextcloud/node_modules/underscore/modules/_getLength.js","webpack:///nextcloud/node_modules/underscore/modules/_collectNonEnumProps.js","webpack:///nextcloud/node_modules/underscore/modules/keys.js","webpack:///nextcloud/node_modules/underscore/modules/isEmpty.js","webpack:///nextcloud/node_modules/underscore/modules/isMatch.js","webpack:///nextcloud/node_modules/underscore/modules/underscore.js","webpack:///nextcloud/node_modules/underscore/modules/_toBufferView.js","webpack:///nextcloud/node_modules/underscore/modules/isEqual.js","webpack:///nextcloud/node_modules/underscore/modules/allKeys.js","webpack:///nextcloud/node_modules/underscore/modules/_methodFingerprint.js","webpack:///nextcloud/node_modules/underscore/modules/isMap.js","webpack:///nextcloud/node_modules/underscore/modules/isWeakMap.js","webpack:///nextcloud/node_modules/underscore/modules/isSet.js","webpack:///nextcloud/node_modules/underscore/modules/isWeakSet.js","webpack:///nextcloud/node_modules/underscore/modules/values.js","webpack:///nextcloud/node_modules/underscore/modules/pairs.js","webpack:///nextcloud/node_modules/underscore/modules/invert.js","webpack:///nextcloud/node_modules/underscore/modules/functions.js","webpack:///nextcloud/node_modules/underscore/modules/_createAssigner.js","webpack:///nextcloud/node_modules/underscore/modules/extend.js","webpack:///nextcloud/node_modules/underscore/modules/extendOwn.js","webpack:///nextcloud/node_modules/underscore/modules/defaults.js","webpack:///nextcloud/node_modules/underscore/modules/_baseCreate.js","webpack:///nextcloud/node_modules/underscore/modules/create.js","webpack:///nextcloud/node_modules/underscore/modules/clone.js","webpack:///nextcloud/node_modules/underscore/modules/tap.js","webpack:///nextcloud/node_modules/underscore/modules/toPath.js","webpack:///nextcloud/node_modules/underscore/modules/_toPath.js","webpack:///nextcloud/node_modules/underscore/modules/_deepGet.js","webpack:///nextcloud/node_modules/underscore/modules/get.js","webpack:///nextcloud/node_modules/underscore/modules/has.js","webpack:///nextcloud/node_modules/underscore/modules/identity.js","webpack:///nextcloud/node_modules/underscore/modules/matcher.js","webpack:///nextcloud/node_modules/underscore/modules/property.js","webpack:///nextcloud/node_modules/underscore/modules/_optimizeCb.js","webpack:///nextcloud/node_modules/underscore/modules/_baseIteratee.js","webpack:///nextcloud/node_modules/underscore/modules/iteratee.js","webpack:///nextcloud/node_modules/underscore/modules/_cb.js","webpack:///nextcloud/node_modules/underscore/modules/mapObject.js","webpack:///nextcloud/node_modules/underscore/modules/noop.js","webpack:///nextcloud/node_modules/underscore/modules/propertyOf.js","webpack:///nextcloud/node_modules/underscore/modules/times.js","webpack:///nextcloud/node_modules/underscore/modules/random.js","webpack:///nextcloud/node_modules/underscore/modules/now.js","webpack:///nextcloud/node_modules/underscore/modules/_createEscaper.js","webpack:///nextcloud/node_modules/underscore/modules/_escapeMap.js","webpack:///nextcloud/node_modules/underscore/modules/escape.js","webpack:///nextcloud/node_modules/underscore/modules/unescape.js","webpack:///nextcloud/node_modules/underscore/modules/_unescapeMap.js","webpack:///nextcloud/node_modules/underscore/modules/templateSettings.js","webpack:///nextcloud/node_modules/underscore/modules/template.js","webpack:///nextcloud/node_modules/underscore/modules/result.js","webpack:///nextcloud/node_modules/underscore/modules/uniqueId.js","webpack:///nextcloud/node_modules/underscore/modules/chain.js","webpack:///nextcloud/node_modules/underscore/modules/_executeBound.js","webpack:///nextcloud/node_modules/underscore/modules/partial.js","webpack:///nextcloud/node_modules/underscore/modules/bind.js","webpack:///nextcloud/node_modules/underscore/modules/_isArrayLike.js","webpack:///nextcloud/node_modules/underscore/modules/_flatten.js","webpack:///nextcloud/node_modules/underscore/modules/bindAll.js","webpack:///nextcloud/node_modules/underscore/modules/memoize.js","webpack:///nextcloud/node_modules/underscore/modules/delay.js","webpack:///nextcloud/node_modules/underscore/modules/defer.js","webpack:///nextcloud/node_modules/underscore/modules/throttle.js","webpack:///nextcloud/node_modules/underscore/modules/debounce.js","webpack:///nextcloud/node_modules/underscore/modules/wrap.js","webpack:///nextcloud/node_modules/underscore/modules/negate.js","webpack:///nextcloud/node_modules/underscore/modules/compose.js","webpack:///nextcloud/node_modules/underscore/modules/after.js","webpack:///nextcloud/node_modules/underscore/modules/before.js","webpack:///nextcloud/node_modules/underscore/modules/once.js","webpack:///nextcloud/node_modules/underscore/modules/findKey.js","webpack:///nextcloud/node_modules/underscore/modules/_createPredicateIndexFinder.js","webpack:///nextcloud/node_modules/underscore/modules/findIndex.js","webpack:///nextcloud/node_modules/underscore/modules/findLastIndex.js","webpack:///nextcloud/node_modules/underscore/modules/sortedIndex.js","webpack:///nextcloud/node_modules/underscore/modules/_createIndexFinder.js","webpack:///nextcloud/node_modules/underscore/modules/indexOf.js","webpack:///nextcloud/node_modules/underscore/modules/lastIndexOf.js","webpack:///nextcloud/node_modules/underscore/modules/find.js","webpack:///nextcloud/node_modules/underscore/modules/findWhere.js","webpack:///nextcloud/node_modules/underscore/modules/each.js","webpack:///nextcloud/node_modules/underscore/modules/map.js","webpack:///nextcloud/node_modules/underscore/modules/_createReduce.js","webpack:///nextcloud/node_modules/underscore/modules/reduce.js","webpack:///nextcloud/node_modules/underscore/modules/reduceRight.js","webpack:///nextcloud/node_modules/underscore/modules/filter.js","webpack:///nextcloud/node_modules/underscore/modules/reject.js","webpack:///nextcloud/node_modules/underscore/modules/every.js","webpack:///nextcloud/node_modules/underscore/modules/some.js","webpack:///nextcloud/node_modules/underscore/modules/contains.js","webpack:///nextcloud/node_modules/underscore/modules/invoke.js","webpack:///nextcloud/node_modules/underscore/modules/pluck.js","webpack:///nextcloud/node_modules/underscore/modules/where.js","webpack:///nextcloud/node_modules/underscore/modules/max.js","webpack:///nextcloud/node_modules/underscore/modules/min.js","webpack:///nextcloud/node_modules/underscore/modules/toArray.js","webpack:///nextcloud/node_modules/underscore/modules/sample.js","webpack:///nextcloud/node_modules/underscore/modules/shuffle.js","webpack:///nextcloud/node_modules/underscore/modules/sortBy.js","webpack:///nextcloud/node_modules/underscore/modules/_group.js","webpack:///nextcloud/node_modules/underscore/modules/groupBy.js","webpack:///nextcloud/node_modules/underscore/modules/indexBy.js","webpack:///nextcloud/node_modules/underscore/modules/countBy.js","webpack:///nextcloud/node_modules/underscore/modules/partition.js","webpack:///nextcloud/node_modules/underscore/modules/size.js","webpack:///nextcloud/node_modules/underscore/modules/_keyInObj.js","webpack:///nextcloud/node_modules/underscore/modules/pick.js","webpack:///nextcloud/node_modules/underscore/modules/omit.js","webpack:///nextcloud/node_modules/underscore/modules/initial.js","webpack:///nextcloud/node_modules/underscore/modules/first.js","webpack:///nextcloud/node_modules/underscore/modules/rest.js","webpack:///nextcloud/node_modules/underscore/modules/last.js","webpack:///nextcloud/node_modules/underscore/modules/compact.js","webpack:///nextcloud/node_modules/underscore/modules/flatten.js","webpack:///nextcloud/node_modules/underscore/modules/difference.js","webpack:///nextcloud/node_modules/underscore/modules/without.js","webpack:///nextcloud/node_modules/underscore/modules/uniq.js","webpack:///nextcloud/node_modules/underscore/modules/union.js","webpack:///nextcloud/node_modules/underscore/modules/intersection.js","webpack:///nextcloud/node_modules/underscore/modules/unzip.js","webpack:///nextcloud/node_modules/underscore/modules/zip.js","webpack:///nextcloud/node_modules/underscore/modules/object.js","webpack:///nextcloud/node_modules/underscore/modules/range.js","webpack:///nextcloud/node_modules/underscore/modules/chunk.js","webpack:///nextcloud/node_modules/underscore/modules/_chainResult.js","webpack:///nextcloud/node_modules/underscore/modules/mixin.js","webpack:///nextcloud/node_modules/underscore/modules/underscore-array-methods.js","webpack:///nextcloud/node_modules/underscore/modules/index-default.js","webpack:///nextcloud/webpack/bootstrap","webpack:///nextcloud/webpack/runtime/compat get default export","webpack:///nextcloud/webpack/runtime/define property getters","webpack:///nextcloud/webpack/runtime/ensure chunk","webpack:///nextcloud/webpack/runtime/get javascript chunk filename","webpack:///nextcloud/webpack/runtime/global","webpack:///nextcloud/webpack/runtime/hasOwnProperty shorthand","webpack:///nextcloud/webpack/runtime/make namespace object","webpack:///nextcloud/webpack/runtime/node module decorator","webpack:///nextcloud/webpack/runtime/runtimeId","webpack:///nextcloud/webpack/runtime/publicPath","webpack:///nextcloud/webpack/runtime/jsonp chunk loading","webpack:///nextcloud/webpack/runtime/nonce","webpack:///nextcloud/webpack/startup"],"sourcesContent":["var deferred = [];\n__webpack_require__.O = (result, chunkIds, fn, priority) => {\n\tif(chunkIds) {\n\t\tpriority = priority || 0;\n\t\tfor(var i = deferred.length; i > 0 && deferred[i - 1][2] > priority; i--) deferred[i] = deferred[i - 1];\n\t\tdeferred[i] = [chunkIds, fn, priority];\n\t\treturn;\n\t}\n\tvar notFulfilled = Infinity;\n\tfor (var i = 0; i < deferred.length; i++) {\n\t\tvar chunkIds = deferred[i][0];\n\t\tvar fn = deferred[i][1];\n\t\tvar priority = deferred[i][2];\n\t\tvar fulfilled = true;\n\t\tfor (var j = 0; j < chunkIds.length; j++) {\n\t\t\tif ((priority & 1 === 0 || notFulfilled >= priority) && Object.keys(__webpack_require__.O).every((key) => (__webpack_require__.O[key](chunkIds[j])))) {\n\t\t\t\tchunkIds.splice(j--, 1);\n\t\t\t} else {\n\t\t\t\tfulfilled = false;\n\t\t\t\tif(priority < notFulfilled) notFulfilled = priority;\n\t\t\t}\n\t\t}\n\t\tif(fulfilled) {\n\t\t\tdeferred.splice(i--, 1)\n\t\t\tvar r = fn();\n\t\t\tif (r !== undefined) result = r;\n\t\t}\n\t}\n\treturn result;\n};","var inProgress = {};\nvar dataWebpackPrefix = \"nextcloud:\";\n// loadScript function to load a script via script tag\n__webpack_require__.l = (url, done, key, chunkId) => {\n\tif(inProgress[url]) { inProgress[url].push(done); return; }\n\tvar script, needAttach;\n\tif(key !== undefined) {\n\t\tvar scripts = document.getElementsByTagName(\"script\");\n\t\tfor(var i = 0; i < scripts.length; i++) {\n\t\t\tvar s = scripts[i];\n\t\t\tif(s.getAttribute(\"src\") == url || s.getAttribute(\"data-webpack\") == dataWebpackPrefix + key) { script = s; break; }\n\t\t}\n\t}\n\tif(!script) {\n\t\tneedAttach = true;\n\t\tscript = document.createElement('script');\n\n\t\tscript.charset = 'utf-8';\n\t\tscript.timeout = 120;\n\t\tif (__webpack_require__.nc) {\n\t\t\tscript.setAttribute(\"nonce\", __webpack_require__.nc);\n\t\t}\n\t\tscript.setAttribute(\"data-webpack\", dataWebpackPrefix + key);\n\n\t\tscript.src = url;\n\t}\n\tinProgress[url] = [done];\n\tvar onScriptComplete = (prev, event) => {\n\t\t// avoid mem leaks in IE.\n\t\tscript.onerror = script.onload = null;\n\t\tclearTimeout(timeout);\n\t\tvar doneFns = inProgress[url];\n\t\tdelete inProgress[url];\n\t\tscript.parentNode && script.parentNode.removeChild(script);\n\t\tdoneFns && doneFns.forEach((fn) => (fn(event)));\n\t\tif(prev) return prev(event);\n\t}\n\tvar timeout = setTimeout(onScriptComplete.bind(null, undefined, { type: 'timeout', target: script }), 120000);\n\tscript.onerror = onScriptComplete.bind(null, script.onerror);\n\tscript.onload = onScriptComplete.bind(null, script.onload);\n\tneedAttach && document.head.appendChild(script);\n};","/**\n * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport _ from 'underscore'\n/** @typedef {import('jquery')} jQuery */\nimport $ from 'jquery'\nimport { showMessage, TOAST_DEFAULT_TIMEOUT, TOAST_PERMANENT_TIMEOUT } from '@nextcloud/dialogs'\n\n/**\n * @todo Write documentation\n * @deprecated 17.0.0 use the `@nextcloud/dialogs` package instead\n * @namespace OC.Notification\n */\nexport default {\n\n\tupdatableNotification: null,\n\n\tgetDefaultNotificationFunction: null,\n\n\t/**\n\t * @param {Function} callback callback function\n\t * @deprecated 17.0.0 use the `@nextcloud/dialogs` package\n\t */\n\tsetDefault(callback) {\n\t\tthis.getDefaultNotificationFunction = callback\n\t},\n\n\t/**\n\t * Hides a notification.\n\t *\n\t * If a row is given, only hide that one.\n\t * If no row is given, hide all notifications.\n\t *\n\t * @param {jQuery} [$row] notification row\n\t * @param {Function} [callback] callback\n\t * @deprecated 17.0.0 use the `@nextcloud/dialogs` package\n\t */\n\thide($row, callback) {\n\t\tif (_.isFunction($row)) {\n\t\t\t// first arg is the callback\n\t\t\tcallback = $row\n\t\t\t$row = undefined\n\t\t}\n\n\t\tif (!$row) {\n\t\t\tconsole.error('Missing argument $row in OC.Notification.hide() call, caller needs to be adjusted to only dismiss its own notification')\n\t\t\treturn\n\t\t}\n\n\t\t// remove the row directly\n\t\t$row.each(function() {\n\t\t\tif ($(this)[0].toastify) {\n\t\t\t\t$(this)[0].toastify.hideToast()\n\t\t\t} else {\n\t\t\t\tconsole.error('cannot hide toast because object is not set')\n\t\t\t}\n\t\t\tif (this === this.updatableNotification) {\n\t\t\t\tthis.updatableNotification = null\n\t\t\t}\n\t\t})\n\t\tif (callback) {\n\t\t\tcallback.call()\n\t\t}\n\t\tif (this.getDefaultNotificationFunction) {\n\t\t\tthis.getDefaultNotificationFunction()\n\t\t}\n\t},\n\n\t/**\n\t * Shows a notification as HTML without being sanitized before.\n\t * If you pass unsanitized user input this may lead to a XSS vulnerability.\n\t * Consider using show() instead of showHTML()\n\t *\n\t * @param {string} html Message to display\n\t * @param {object} [options] options\n\t * @param {string} [options.type] notification type\n\t * @param {number} [options.timeout=0] timeout value, defaults to 0 (permanent)\n\t * @return {jQuery} jQuery element for notification row\n\t * @deprecated 17.0.0 use the `@nextcloud/dialogs` package\n\t */\n\tshowHtml(html, options) {\n\t\toptions = options || {}\n\t\toptions.isHTML = true\n\t\toptions.timeout = (!options.timeout) ? TOAST_PERMANENT_TIMEOUT : options.timeout\n\t\tconst toast = showMessage(html, options)\n\t\ttoast.toastElement.toastify = toast\n\t\treturn $(toast.toastElement)\n\t},\n\n\t/**\n\t * Shows a sanitized notification\n\t *\n\t * @param {string} text Message to display\n\t * @param {object} [options] options\n\t * @param {string} [options.type] notification type\n\t * @param {number} [options.timeout=0] timeout value, defaults to 0 (permanent)\n\t * @return {jQuery} jQuery element for notification row\n\t * @deprecated 17.0.0 use the `@nextcloud/dialogs` package\n\t */\n\tshow(text, options) {\n\t\tconst escapeHTML = function(text) {\n\t\t\treturn text.toString()\n\t\t\t\t.split('&').join('&')\n\t\t\t\t.split('<').join('<')\n\t\t\t\t.split('>').join('>')\n\t\t\t\t.split('\"').join('"')\n\t\t\t\t.split('\\'').join(''')\n\t\t}\n\n\t\toptions = options || {}\n\t\toptions.timeout = (!options.timeout) ? TOAST_PERMANENT_TIMEOUT : options.timeout\n\t\tconst toast = showMessage(escapeHTML(text), options)\n\t\ttoast.toastElement.toastify = toast\n\t\treturn $(toast.toastElement)\n\t},\n\n\t/**\n\t * Updates (replaces) a sanitized notification.\n\t *\n\t * @param {string} text Message to display\n\t * @return {jQuery} JQuery element for notificaiton row\n\t * @deprecated 17.0.0 use the `@nextcloud/dialogs` package\n\t */\n\tshowUpdate(text) {\n\t\tif (this.updatableNotification) {\n\t\t\tthis.updatableNotification.hideToast()\n\t\t}\n\t\tthis.updatableNotification = showMessage(text, { timeout: TOAST_PERMANENT_TIMEOUT })\n\t\tthis.updatableNotification.toastElement.toastify = this.updatableNotification\n\t\treturn $(this.updatableNotification.toastElement)\n\t},\n\n\t/**\n\t * Shows a notification that disappears after x seconds, default is\n\t * 7 seconds\n\t *\n\t * @param {string} text Message to show\n\t * @param {Array} [options] options array\n\t * @param {number} [options.timeout=7] timeout in seconds, if this is 0 it will show the message permanently\n\t * @param {boolean} [options.isHTML=false] an indicator for HTML notifications (true) or text (false)\n\t * @param {string} [options.type] notification type\n\t * @return {JQuery} the toast element\n\t * @deprecated 17.0.0 use the `@nextcloud/dialogs` package\n\t */\n\tshowTemporary(text, options) {\n\t\toptions = options || {}\n\t\toptions.timeout = options.timeout || TOAST_DEFAULT_TIMEOUT\n\t\tconst toast = showMessage(text, options)\n\t\ttoast.toastElement.toastify = toast\n\t\treturn $(toast.toastElement)\n\t},\n\n\t/**\n\t * Returns whether a notification is hidden.\n\t *\n\t * @return {boolean}\n\t * @deprecated 17.0.0 use the `@nextcloud/dialogs` package\n\t */\n\tisHidden() {\n\t\treturn !$('#content').find('.toastify').length\n\t},\n}\n","/**\n * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport _ from 'underscore'\nimport $ from 'jquery'\n\nimport OC from './index.js'\nimport Notification from './notification.js'\n\n/**\n * Warn users that the connection to the server was lost temporarily\n *\n * This function is throttled to prevent stacked notfications.\n * After 7sec the first notification is gone, then we can show another one\n * if necessary.\n */\nexport const ajaxConnectionLostHandler = _.throttle(() => {\n\tNotification.showTemporary(t('core', 'Connection to server lost'))\n}, 7 * 1000, { trailing: false })\n\n/**\n * Process ajax error, redirects to main page\n * if an error/auth error status was returned.\n *\n * @param {XMLHttpRequest} xhr xhr request\n */\nexport const processAjaxError = xhr => {\n\t// purposefully aborted request ?\n\t// OC._userIsNavigatingAway needed to distinguish ajax calls cancelled by navigating away\n\t// from calls cancelled by failed cross-domain ajax due to SSO redirect\n\tif (xhr.status === 0 && (xhr.statusText === 'abort' || xhr.statusText === 'timeout' || OC._reloadCalled)) {\n\t\treturn\n\t}\n\n\tif (_.contains([302, 303, 307, 401], xhr.status) && OC.currentUser) {\n\t\t// sometimes \"beforeunload\" happens later, so need to defer the reload a bit\n\t\tsetTimeout(function() {\n\t\t\tif (!OC._userIsNavigatingAway && !OC._reloadCalled) {\n\t\t\t\tlet timer = 0\n\t\t\t\tconst seconds = 5\n\t\t\t\tconst interval = setInterval(function() {\n\t\t\t\t\tNotification.showUpdate(n('core', 'Problem loading page, reloading in %n second', 'Problem loading page, reloading in %n seconds', seconds - timer))\n\t\t\t\t\tif (timer >= seconds) {\n\t\t\t\t\t\tclearInterval(interval)\n\t\t\t\t\t\tOC.reload()\n\t\t\t\t\t}\n\t\t\t\t\ttimer++\n\t\t\t\t}, 1000 // 1 second interval\n\t\t\t\t)\n\n\t\t\t\t// only call reload once\n\t\t\t\tOC._reloadCalled = true\n\t\t\t}\n\t\t}, 100)\n\t} else if (xhr.status === 0) {\n\t\t// Connection lost (e.g. WiFi disconnected or server is down)\n\t\tsetTimeout(function() {\n\t\t\tif (!OC._userIsNavigatingAway && !OC._reloadCalled) {\n\t\t\t\t// TODO: call method above directly\n\t\t\t\tOC._ajaxConnectionLostHandler()\n\t\t\t}\n\t\t}, 100)\n\t}\n}\n\n/**\n * Registers XmlHttpRequest object for global error processing.\n *\n * This means that if this XHR object returns 401 or session timeout errors,\n * the current page will automatically be reloaded.\n *\n * @param {XMLHttpRequest} xhr xhr request\n */\nexport const registerXHRForErrorProcessing = xhr => {\n\tconst loadCallback = () => {\n\t\tif (xhr.readyState !== 4) {\n\t\t\treturn\n\t\t}\n\n\t\tif ((xhr.status >= 200 && xhr.status < 300) || xhr.status === 304) {\n\t\t\treturn\n\t\t}\n\n\t\t// fire jquery global ajax error handler\n\t\t$(document).trigger(new $.Event('ajaxError'), xhr)\n\t}\n\n\tconst errorCallback = () => {\n\t\t// fire jquery global ajax error handler\n\t\t$(document).trigger(new $.Event('ajaxError'), xhr)\n\t}\n\n\tif (xhr.addEventListener) {\n\t\txhr.addEventListener('load', loadCallback)\n\t\txhr.addEventListener('error', errorCallback)\n\t}\n\n}\n","/**\n * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\n * SPDX-FileCopyrightText: 2014 ownCloud, Inc.\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport $ from 'jquery'\n\nlet dynamicSlideToggleEnabled = false\n\nconst Apps = {\n\tenableDynamicSlideToggle() {\n\t\tdynamicSlideToggleEnabled = true\n\t},\n}\n\n/**\n * Shows the #app-sidebar and add .with-app-sidebar to subsequent siblings\n *\n * @param {object} [$el] sidebar element to show, defaults to $('#app-sidebar')\n */\nApps.showAppSidebar = function($el) {\n\tconst $appSidebar = $el || $('#app-sidebar')\n\t$appSidebar.removeClass('disappear').show()\n\t$('#app-content').trigger(new $.Event('appresized'))\n}\n\n/**\n * Shows the #app-sidebar and removes .with-app-sidebar from subsequent\n * siblings\n *\n * @param {object} [$el] sidebar element to hide, defaults to $('#app-sidebar')\n */\nApps.hideAppSidebar = function($el) {\n\tconst $appSidebar = $el || $('#app-sidebar')\n\t$appSidebar.hide().addClass('disappear')\n\t$('#app-content').trigger(new $.Event('appresized'))\n}\n\n/**\n * Provides a way to slide down a target area through a button and slide it\n * up if the user clicks somewhere else. Used for the news app settings and\n * add new field.\n *\n * Usage:\n * <button data-apps-slide-toggle=\".slide-area\">slide</button>\n * <div class=\".slide-area\" class=\"hidden\">I'm sliding up</div>\n */\nexport const registerAppsSlideToggle = () => {\n\tlet buttons = $('[data-apps-slide-toggle]')\n\n\tif (buttons.length === 0) {\n\t\t$('#app-navigation').addClass('without-app-settings')\n\t}\n\n\t$(document).click(function(event) {\n\n\t\tif (dynamicSlideToggleEnabled) {\n\t\t\tbuttons = $('[data-apps-slide-toggle]')\n\t\t}\n\n\t\tbuttons.each(function(index, button) {\n\n\t\t\tconst areaSelector = $(button).data('apps-slide-toggle')\n\t\t\tconst area = $(areaSelector)\n\n\t\t\t/**\n\t\t\t *\n\t\t\t */\n\t\t\tfunction hideArea() {\n\t\t\t\tarea.slideUp(OC.menuSpeed * 4, function() {\n\t\t\t\t\tarea.trigger(new $.Event('hide'))\n\t\t\t\t})\n\t\t\t\tarea.removeClass('opened')\n\t\t\t\t$(button).removeClass('opened')\n\t\t\t\t$(button).attr('aria-expanded', 'false')\n\t\t\t}\n\n\t\t\t/**\n\t\t\t *\n\t\t\t */\n\t\t\tfunction showArea() {\n\t\t\t\tarea.slideDown(OC.menuSpeed * 4, function() {\n\t\t\t\t\tarea.trigger(new $.Event('show'))\n\t\t\t\t})\n\t\t\t\tarea.addClass('opened')\n\t\t\t\t$(button).addClass('opened')\n\t\t\t\t$(button).attr('aria-expanded', 'true')\n\t\t\t\tconst input = $(areaSelector + ' [autofocus]')\n\t\t\t\tif (input.length === 1) {\n\t\t\t\t\tinput.focus()\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// do nothing if the area is animated\n\t\t\tif (!area.is(':animated')) {\n\n\t\t\t\t// button toggles the area\n\t\t\t\tif ($(button).is($(event.target).closest('[data-apps-slide-toggle]'))) {\n\t\t\t\t\tif (area.is(':visible')) {\n\t\t\t\t\t\thideArea()\n\t\t\t\t\t} else {\n\t\t\t\t\t\tshowArea()\n\t\t\t\t\t}\n\n\t\t\t\t\t// all other areas that have not been clicked but are open\n\t\t\t\t\t// should be slid up\n\t\t\t\t} else {\n\t\t\t\t\tconst closest = $(event.target).closest(areaSelector)\n\t\t\t\t\tif (area.is(':visible') && closest[0] !== area[0]) {\n\t\t\t\t\t\thideArea()\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t})\n\n\t})\n}\n\nexport default Apps\n","/**\n * SPDX-FileCopyrightText: 2016 Nextcloud GmbH and Nextcloud contributors\n * SPDX-FileCopyrightText: 2016 ownCloud, Inc.\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport $ from 'jquery'\nimport { generateOcsUrl } from '@nextcloud/router'\n\nimport OC from '../OC/index.js'\n\n/**\n * @param {string} method 'post' or 'delete'\n * @param {string} endpoint endpoint\n * @param {object} [options] destructuring object\n * @param {object} [options.data] option data\n * @param {Function} [options.success] success callback\n * @param {Function} [options.error] error callback\n */\nfunction call(method, endpoint, options) {\n\tif ((method === 'post' || method === 'delete') && OC.PasswordConfirmation.requiresPasswordConfirmation()) {\n\t\tOC.PasswordConfirmation.requirePasswordConfirmation(_.bind(call, this, method, endpoint, options))\n\t\treturn\n\t}\n\n\toptions = options || {}\n\t$.ajax({\n\t\ttype: method.toUpperCase(),\n\t\turl: generateOcsUrl('apps/provisioning_api/api/v1/config/apps') + endpoint,\n\t\tdata: options.data || {},\n\t\tsuccess: options.success,\n\t\terror: options.error,\n\t})\n}\n\n/**\n * @param {object} [options] destructuring object\n * @param {Function} [options.success] success callback\n * @since 11.0.0\n */\nexport function getApps(options) {\n\tcall('get', '', options)\n}\n\n/**\n * @param {string} app app id\n * @param {object} [options] destructuring object\n * @param {Function} [options.success] success callback\n * @param {Function} [options.error] error callback\n * @since 11.0.0\n */\nexport function getKeys(app, options) {\n\tcall('get', '/' + app, options)\n}\n\n/**\n * @param {string} app app id\n * @param {string} key key\n * @param {string | Function} defaultValue default value\n * @param {object} [options] destructuring object\n * @param {Function} [options.success] success callback\n * @param {Function} [options.error] error callback\n * @since 11.0.0\n */\nexport function getValue(app, key, defaultValue, options) {\n\toptions = options || {}\n\toptions.data = {\n\t\tdefaultValue,\n\t}\n\n\tcall('get', '/' + app + '/' + key, options)\n}\n\n/**\n * @param {string} app app id\n * @param {string} key key\n * @param {string} value value\n * @param {object} [options] destructuring object\n * @param {Function} [options.success] success callback\n * @param {Function} [options.error] error callback\n * @since 11.0.0\n */\nexport function setValue(app, key, value, options) {\n\toptions = options || {}\n\toptions.data = {\n\t\tvalue,\n\t}\n\n\tcall('post', '/' + app + '/' + key, options)\n}\n\n/**\n * @param {string} app app id\n * @param {string} key key\n * @param {object} [options] destructuring object\n * @param {Function} [options.success] success callback\n * @param {Function} [options.error] error callback\n * @since 11.0.0\n */\nexport function deleteKey(app, key, options) {\n\tcall('delete', '/' + app + '/' + key, options)\n}\n","/**\n * SPDX-FileCopyrightText: 2016 Nextcloud GmbH and Nextcloud contributors\n * SPDX-FileCopyrightText: 2014 ownCloud, Inc.\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\n/* eslint-disable */\n import { getValue, setValue, getApps, getKeys, deleteKey } from '../OCP/appconfig.js'\n\nexport const appConfig = window.oc_appconfig || {}\n\n/**\n * @namespace\n * @deprecated 16.0.0 Use OCP.AppConfig instead\n */\nexport const AppConfig = {\n\t/**\n\t * @deprecated Use OCP.AppConfig.getValue() instead\n\t */\n\tgetValue: function(app, key, defaultValue, callback) {\n\t\tgetValue(app, key, defaultValue, {\n\t\t\tsuccess: callback\n\t\t})\n\t},\n\n\t/**\n\t * @deprecated Use OCP.AppConfig.setValue() instead\n\t */\n\tsetValue: function(app, key, value) {\n\t\tsetValue(app, key, value)\n\t},\n\n\t/**\n\t * @deprecated Use OCP.AppConfig.getApps() instead\n\t */\n\tgetApps: function(callback) {\n\t\tgetApps({\n\t\t\tsuccess: callback\n\t\t})\n\t},\n\n\t/**\n\t * @deprecated Use OCP.AppConfig.getKeys() instead\n\t */\n\tgetKeys: function(app, callback) {\n\t\tgetKeys(app, {\n\t\t\tsuccess: callback\n\t\t})\n\t},\n\n\t/**\n\t * @deprecated Use OCP.AppConfig.deleteKey() instead\n\t */\n\tdeleteKey: function(app, key) {\n\t\tdeleteKey(app, key)\n\t}\n\n}\n","/**\n * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nconst appswebroots = (window._oc_appswebroots !== undefined) ? window._oc_appswebroots : false\n\nexport default appswebroots\n","/**\n * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\n/* eslint-disable */\nimport _ from 'underscore'\nimport { dav } from 'davclient.js'\n\nconst methodMap = {\n\tcreate: 'POST',\n\tupdate: 'PROPPATCH',\n\tpatch: 'PROPPATCH',\n\tdelete: 'DELETE',\n\tread: 'PROPFIND'\n}\n\n// Throw an error when a URL is needed, and none is supplied.\nfunction urlError() {\n\tthrow new Error('A \"url\" property or function must be specified')\n}\n\n/**\n * Convert a single propfind result to JSON\n *\n * @param {Object} result\n * @param {Object} davProperties properties mapping\n */\nfunction parsePropFindResult(result, davProperties) {\n\tif (_.isArray(result)) {\n\t\treturn _.map(result, function(subResult) {\n\t\t\treturn parsePropFindResult(subResult, davProperties)\n\t\t})\n\t}\n\tvar props = {\n\t\thref: result.href\n\t}\n\n\t_.each(result.propStat, function(propStat) {\n\t\tif (propStat.status !== 'HTTP/1.1 200 OK') {\n\t\t\treturn\n\t\t}\n\n\t\tfor (var key in propStat.properties) {\n\t\t\tvar propKey = key\n\t\t\tif (key in davProperties) {\n\t\t\t\tpropKey = davProperties[key]\n\t\t\t}\n\t\t\tprops[propKey] = propStat.properties[key]\n\t\t}\n\t})\n\n\tif (!props.id) {\n\t\t// parse id from href\n\t\tprops.id = parseIdFromLocation(props.href)\n\t}\n\n\treturn props\n}\n\n/**\n * Parse ID from location\n *\n * @param {string} url url\n * @returns {string} id\n */\nfunction parseIdFromLocation(url) {\n\tvar queryPos = url.indexOf('?')\n\tif (queryPos > 0) {\n\t\turl = url.substr(0, queryPos)\n\t}\n\n\tvar parts = url.split('/')\n\tvar result\n\tdo {\n\t\tresult = parts[parts.length - 1]\n\t\tparts.pop()\n\t\t// note: first result can be empty when there is a trailing slash,\n\t\t// so we take the part before that\n\t} while (!result && parts.length > 0)\n\n\treturn result\n}\n\nfunction isSuccessStatus(status) {\n\treturn status >= 200 && status <= 299\n}\n\nfunction convertModelAttributesToDavProperties(attrs, davProperties) {\n\tvar props = {}\n\tvar key\n\tfor (key in attrs) {\n\t\tvar changedProp = davProperties[key]\n\t\tvar value = attrs[key]\n\t\tif (!changedProp) {\n\t\t\tconsole.warn('No matching DAV property for property \"' + key)\n\t\t\tchangedProp = key\n\t\t}\n\t\tif (_.isBoolean(value) || _.isNumber(value)) {\n\t\t\t// convert to string\n\t\t\tvalue = '' + value\n\t\t}\n\t\tprops[changedProp] = value\n\t}\n\treturn props\n}\n\nfunction callPropFind(client, options, model, headers) {\n\treturn client.propFind(\n\t\toptions.url,\n\t\t_.values(options.davProperties) || [],\n\t\toptions.depth,\n\t\theaders\n\t).then(function(response) {\n\t\tif (isSuccessStatus(response.status)) {\n\t\t\tif (_.isFunction(options.success)) {\n\t\t\t\tvar propsMapping = _.invert(options.davProperties)\n\t\t\t\tvar results = parsePropFindResult(response.body, propsMapping)\n\t\t\t\tif (options.depth > 0) {\n\t\t\t\t\t// discard root entry\n\t\t\t\t\tresults.shift()\n\t\t\t\t}\n\n\t\t\t\toptions.success(results)\n\n\t\t\t}\n\t\t} else if (_.isFunction(options.error)) {\n\t\t\toptions.error(response)\n\t\t}\n\t})\n}\n\nfunction callPropPatch(client, options, model, headers) {\n\treturn client.propPatch(\n\t\toptions.url,\n\t\tconvertModelAttributesToDavProperties(model.changed, options.davProperties),\n\t\theaders\n\t).then(function(result) {\n\t\tif (isSuccessStatus(result.status)) {\n\t\t\tif (_.isFunction(options.success)) {\n\t\t\t\t// pass the object's own values because the server\n\t\t\t\t// does not return the updated model\n\t\t\t\toptions.success(model.toJSON())\n\t\t\t}\n\t\t} else if (_.isFunction(options.error)) {\n\t\t\toptions.error(result)\n\t\t}\n\t})\n\n}\n\nfunction callMkCol(client, options, model, headers) {\n\t// call MKCOL without data, followed by PROPPATCH\n\treturn client.request(\n\t\toptions.type,\n\t\toptions.url,\n\t\theaders,\n\t\tnull\n\t).then(function(result) {\n\t\tif (!isSuccessStatus(result.status)) {\n\t\t\tif (_.isFunction(options.error)) {\n\t\t\t\toptions.error(result)\n\t\t\t}\n\t\t\treturn\n\t\t}\n\n\t\tcallPropPatch(client, options, model, headers)\n\t})\n}\n\nfunction callMethod(client, options, model, headers) {\n\theaders['Content-Type'] = 'application/json'\n\treturn client.request(\n\t\toptions.type,\n\t\toptions.url,\n\t\theaders,\n\t\toptions.data\n\t).then(function(result) {\n\t\tif (!isSuccessStatus(result.status)) {\n\t\t\tif (_.isFunction(options.error)) {\n\t\t\t\toptions.error(result)\n\t\t\t}\n\t\t\treturn\n\t\t}\n\n\t\tif (_.isFunction(options.success)) {\n\t\t\tif (options.type === 'PUT' || options.type === 'POST' || options.type === 'MKCOL') {\n\t\t\t\t// pass the object's own values because the server\n\t\t\t\t// does not return anything\n\t\t\t\tvar responseJson = result.body || model.toJSON()\n\t\t\t\tvar locationHeader = result.xhr.getResponseHeader('Content-Location')\n\t\t\t\tif (options.type === 'POST' && locationHeader) {\n\t\t\t\t\tresponseJson.id = parseIdFromLocation(locationHeader)\n\t\t\t\t}\n\t\t\t\toptions.success(responseJson)\n\t\t\t\treturn\n\t\t\t}\n\t\t\t// if multi-status, parse\n\t\t\tif (result.status === 207) {\n\t\t\t\tvar propsMapping = _.invert(options.davProperties)\n\t\t\t\toptions.success(parsePropFindResult(result.body, propsMapping))\n\t\t\t} else {\n\t\t\t\toptions.success(result.body)\n\t\t\t}\n\t\t}\n\t})\n}\n\nexport const davCall = (options, model) => {\n\tvar client = new dav.Client({\n\t\tbaseUrl: options.url,\n\t\txmlNamespaces: _.extend({\n\t\t\t'DAV:': 'd',\n\t\t\t'http://owncloud.org/ns': 'oc'\n\t\t}, options.xmlNamespaces || {})\n\t})\n\tclient.resolveUrl = function() {\n\t\treturn options.url\n\t}\n\tvar headers = _.extend({\n\t\t'X-Requested-With': 'XMLHttpRequest',\n\t\t'requesttoken': OC.requestToken\n\t}, options.headers)\n\tif (options.type === 'PROPFIND') {\n\t\treturn callPropFind(client, options, model, headers)\n\t} else if (options.type === 'PROPPATCH') {\n\t\treturn callPropPatch(client, options, model, headers)\n\t} else if (options.type === 'MKCOL') {\n\t\treturn callMkCol(client, options, model, headers)\n\t} else {\n\t\treturn callMethod(client, options, model, headers)\n\t}\n}\n\n/**\n * DAV transport\n */\nexport const davSync = Backbone => (method, model, options) => {\n\tvar params = { type: methodMap[method] || method }\n\tvar isCollection = (model instanceof Backbone.Collection)\n\n\tif (method === 'update') {\n\t\t// if a model has an inner collection, it must define an\n\t\t// attribute \"hasInnerCollection\" that evaluates to true\n\t\tif (model.hasInnerCollection) {\n\t\t\t// if the model itself is a Webdav collection, use MKCOL\n\t\t\tparams.type = 'MKCOL'\n\t\t} else if (model.usePUT || (model.collection && model.collection.usePUT)) {\n\t\t\t// use PUT instead of PROPPATCH\n\t\t\tparams.type = 'PUT'\n\t\t}\n\t}\n\n\t// Ensure that we have a URL.\n\tif (!options.url) {\n\t\tparams.url = _.result(model, 'url') || urlError()\n\t}\n\n\t// Ensure that we have the appropriate request data.\n\tif (options.data == null && model && (method === 'create' || method === 'update' || method === 'patch')) {\n\t\tparams.data = JSON.stringify(options.attrs || model.toJSON(options))\n\t}\n\n\t// Don't process data on a non-GET request.\n\tif (params.type !== 'PROPFIND') {\n\t\tparams.processData = false\n\t}\n\n\tif (params.type === 'PROPFIND' || params.type === 'PROPPATCH') {\n\t\tvar davProperties = model.davProperties\n\t\tif (!davProperties && model.model) {\n\t\t\t// use dav properties from model in case of collection\n\t\t\tdavProperties = model.model.prototype.davProperties\n\t\t}\n\t\tif (davProperties) {\n\t\t\tif (_.isFunction(davProperties)) {\n\t\t\t\tparams.davProperties = davProperties.call(model)\n\t\t\t} else {\n\t\t\t\tparams.davProperties = davProperties\n\t\t\t}\n\t\t}\n\n\t\tparams.davProperties = _.extend(params.davProperties || {}, options.davProperties)\n\n\t\tif (_.isUndefined(options.depth)) {\n\t\t\tif (isCollection) {\n\t\t\t\toptions.depth = 1\n\t\t\t} else {\n\t\t\t\toptions.depth = 0\n\t\t\t}\n\t\t}\n\t}\n\n\t// Pass along `textStatus` and `errorThrown` from jQuery.\n\tvar error = options.error\n\toptions.error = function(xhr, textStatus, errorThrown) {\n\t\toptions.textStatus = textStatus\n\t\toptions.errorThrown = errorThrown\n\t\tif (error) {\n\t\t\terror.call(options.context, xhr, textStatus, errorThrown)\n\t\t}\n\t}\n\n\t// Make the request, allowing the user to override any Ajax options.\n\tvar xhr = options.xhr = Backbone.davCall(_.extend(params, options), model)\n\tmodel.trigger('request', model, xhr, options)\n\treturn xhr\n}\n","/**\n * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport VendorBackbone from 'backbone'\nimport { davCall, davSync } from './backbone-webdav.js'\n\nconst Backbone = VendorBackbone.noConflict()\n\n// Patch Backbone for DAV\nObject.assign(Backbone, {\n\tdavCall,\n\tdavSync: davSync(Backbone),\n})\n\nexport default Backbone\n","/**\n * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport $ from 'jquery'\n\n/**\n * Parses a URL query string into a JS map\n *\n * @param {string} queryString query string in the format param1=1234¶m2=abcde¶m3=xyz\n * @return {Object<string, string>} map containing key/values matching the URL parameters\n */\nexport const parse = queryString => {\n\tlet pos\n\tlet components\n\tconst result = {}\n\tlet key\n\tif (!queryString) {\n\t\treturn null\n\t}\n\tpos = queryString.indexOf('?')\n\tif (pos >= 0) {\n\t\tqueryString = queryString.substr(pos + 1)\n\t}\n\tconst parts = queryString.replace(/\\+/g, '%20').split('&')\n\tfor (let i = 0; i < parts.length; i++) {\n\t\t// split on first equal sign\n\t\tconst part = parts[i]\n\t\tpos = part.indexOf('=')\n\t\tif (pos >= 0) {\n\t\t\tcomponents = [\n\t\t\t\tpart.substr(0, pos),\n\t\t\t\tpart.substr(pos + 1),\n\t\t\t]\n\t\t} else {\n\t\t\t// key only\n\t\t\tcomponents = [part]\n\t\t}\n\t\tif (!components.length) {\n\t\t\tcontinue\n\t\t}\n\t\tkey = decodeURIComponent(components[0])\n\t\tif (!key) {\n\t\t\tcontinue\n\t\t}\n\t\t// if equal sign was there, return string\n\t\tif (components.length > 1) {\n\t\t\tresult[key] = decodeURIComponent(components[1])\n\t\t} else {\n\t\t\t// no equal sign => null value\n\t\t\tresult[key] = null\n\t\t}\n\t}\n\treturn result\n}\n\n/**\n * Builds a URL query from a JS map.\n *\n * @param {Object<string, string>} params map containing key/values matching the URL parameters\n * @return {string} String containing a URL query (without question) mark\n */\nexport const build = params => {\n\tif (!params) {\n\t\treturn ''\n\t}\n\treturn $.map(params, function(value, key) {\n\t\tlet s = encodeURIComponent(key)\n\t\tif (value !== null && typeof (value) !== 'undefined') {\n\t\t\ts += '=' + encodeURIComponent(value)\n\t\t}\n\t\treturn s\n\t}).join('&')\n}\n","/**\n * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nconst config = window._oc_config || {}\n\nexport default config\n","/**\n * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nconst rawUid = document\n\t.getElementsByTagName('head')[0]\n\t.getAttribute('data-user')\nconst displayName = document\n\t.getElementsByTagName('head')[0]\n\t.getAttribute('data-user-displayname')\n\nexport const currentUser = rawUid !== undefined ? rawUid : false\n\nexport const getCurrentUser = () => {\n\treturn {\n\t\tuid: currentUser,\n\t\tdisplayName,\n\t}\n}\n","/**\n * SPDX-FileCopyrightText: 2016 Nextcloud GmbH and Nextcloud contributors\n * SPDX-FileCopyrightText: 2015 ownCloud, Inc.\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\n/* eslint-disable */\nimport _ from 'underscore'\nimport $ from 'jquery'\n\nimport IconMove from '@mdi/svg/svg/folder-move.svg?raw'\nimport IconCopy from '@mdi/svg/svg/folder-multiple.svg?raw'\n\nimport OC from './index.js'\nimport { DialogBuilder, FilePickerType, getFilePickerBuilder, spawnDialog } from '@nextcloud/dialogs'\nimport { translate as t } from '@nextcloud/l10n'\nimport { basename } from 'path'\nimport { defineAsyncComponent } from 'vue'\n\n/**\n * this class to ease the usage of jquery dialogs\n */\nconst Dialogs = {\n\t// dialog button types\n\t/** @deprecated use `@nextcloud/dialogs` */\n\tYES_NO_BUTTONS: 70,\n\t/** @deprecated use `@nextcloud/dialogs` */\n\tOK_BUTTONS: 71,\n\n\t/** @deprecated use FilePickerType from `@nextcloud/dialogs` */\n\tFILEPICKER_TYPE_CHOOSE: 1,\n\t/** @deprecated use FilePickerType from `@nextcloud/dialogs` */\n\tFILEPICKER_TYPE_MOVE: 2,\n\t/** @deprecated use FilePickerType from `@nextcloud/dialogs` */\n\tFILEPICKER_TYPE_COPY: 3,\n\t/** @deprecated use FilePickerType from `@nextcloud/dialogs` */\n\tFILEPICKER_TYPE_COPY_MOVE: 4,\n\t/** @deprecated use FilePickerType from `@nextcloud/dialogs` */\n\tFILEPICKER_TYPE_CUSTOM: 5,\n\n\t/**\n\t * displays alert dialog\n\t * @param {string} text content of dialog\n\t * @param {string} title dialog title\n\t * @param {function} callback which will be triggered when user presses OK\n\t * @param {boolean} [modal] make the dialog modal\n\t *\n\t * @deprecated 30.0.0 Use `@nextcloud/dialogs` instead or build your own with `@nextcloud/vue` NcDialog\n\t */\n\talert: function(text, title, callback, modal) {\n\t\tthis.message(\n\t\t\ttext,\n\t\t\ttitle,\n\t\t\t'alert',\n\t\t\tDialogs.OK_BUTTON,\n\t\t\tcallback,\n\t\t\tmodal\n\t\t)\n\t},\n\n\t/**\n\t * displays info dialog\n\t * @param {string} text content of dialog\n\t * @param {string} title dialog title\n\t * @param {function} callback which will be triggered when user presses OK\n\t * @param {boolean} [modal] make the dialog modal\n\t *\n\t * @deprecated 30.0.0 Use `@nextcloud/dialogs` instead or build your own with `@nextcloud/vue` NcDialog\n\t */\n\tinfo: function(text, title, callback, modal) {\n\t\tthis.message(text, title, 'info', Dialogs.OK_BUTTON, callback, modal)\n\t},\n\n\t/**\n\t * displays confirmation dialog\n\t * @param {string} text content of dialog\n\t * @param {string} title dialog title\n\t * @param {function} callback which will be triggered when user presses OK (true or false would be passed to callback respectively)\n\t * @param {boolean} [modal] make the dialog modal\n\t * @returns {Promise}\n\t *\n\t * @deprecated 30.0.0 Use `@nextcloud/dialogs` instead or build your own with `@nextcloud/vue` NcDialog\n\t */\n\tconfirm: function(text, title, callback, modal) {\n\t\treturn this.message(\n\t\t\ttext,\n\t\t\ttitle,\n\t\t\t'notice',\n\t\t\tDialogs.YES_NO_BUTTONS,\n\t\t\tcallback,\n\t\t\tmodal\n\t\t)\n\t},\n\t/**\n\t * displays confirmation dialog\n\t * @param {string} text content of dialog\n\t * @param {string} title dialog title\n\t * @param {(number|{type: number, confirm: string, cancel: string, confirmClasses: string})} buttons text content of buttons\n\t * @param {function} callback which will be triggered when user presses OK (true or false would be passed to callback respectively)\n\t * @param {boolean} [modal] make the dialog modal\n\t * @returns {Promise}\n\t *\n\t * @deprecated 30.0.0 Use `@nextcloud/dialogs` instead or build your own with `@nextcloud/vue` NcDialog\n\t */\n\tconfirmDestructive: function(text, title, buttons = Dialogs.OK_BUTTONS, callback = () => {}, modal) {\n\t\treturn (new DialogBuilder())\n\t\t\t.setName(title)\n\t\t\t.setText(text)\n\t\t\t.setButtons(\n\t\t\t\tbuttons === Dialogs.OK_BUTTONS\n\t\t\t\t? [\n\t\t\t\t\t{\n\t\t\t\t\t\tlabel: t('core', 'Yes'),\n\t\t\t\t\t\ttype: 'error',\n\t\t\t\t\t\tcallback: () => {\n\t\t\t\t\t\t\tcallback.clicked = true\n\t\t\t\t\t\t\tcallback(true)\n\t\t\t\t\t\t},\n\t\t\t\t\t}\n\t\t\t\t]\n\t\t\t\t: Dialogs._getLegacyButtons(buttons, callback)\n\t\t\t)\n\t\t\t.build()\n\t\t\t.show()\n\t\t\t.then(() => {\n\t\t\t\tif (!callback.clicked) {\n\t\t\t\t\tcallback(false)\n\t\t\t\t}\n\t\t\t})\n\t},\n\t/**\n\t * displays confirmation dialog\n\t * @param {string} text content of dialog\n\t * @param {string} title dialog title\n\t * @param {function} callback which will be triggered when user presses OK (true or false would be passed to callback respectively)\n\t * @param {boolean} [modal] make the dialog modal\n\t * @returns {Promise}\n\t *\n\t * @deprecated 30.0.0 Use `@nextcloud/dialogs` instead or build your own with `@nextcloud/vue` NcDialog\n\t */\n\tconfirmHtml: function(text, title, callback, modal) {\n\t\treturn (new DialogBuilder())\n\t\t\t.setName(title)\n\t\t\t.setText('')\n\t\t\t.setButtons([\n\t\t\t\t{\n\t\t\t\t\tlabel: t('core', 'No'),\n\t\t\t\t\tcallback: () => {},\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tlabel: t('core', 'Yes'),\n\t\t\t\t\ttype: 'primary',\n\t\t\t\t\tcallback: () => {\n\t\t\t\t\t\tcallback.clicked = true\n\t\t\t\t\t\tcallback(true)\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t])\n\t\t\t.build()\n\t\t\t.setHTML(text)\n\t\t\t.show()\n\t\t\t.then(() => {\n\t\t\t\tif (!callback.clicked) {\n\t\t\t\t\tcallback(false)\n\t\t\t\t}\n\t\t\t})\n\t},\n\t/**\n\t * displays prompt dialog\n\t * @param {string} text content of dialog\n\t * @param {string} title dialog title\n\t * @param {function} callback which will be triggered when user presses OK (true or false would be passed to callback respectively)\n\t * @param {boolean} [modal] make the dialog modal\n\t * @param {string} name name of the input field\n\t * @param {boolean} password whether the input should be a password input\n\t * @returns {Promise}\n\t *\n\t * @deprecated Use NcDialog from `@nextcloud/vue` instead\n\t */\n\tprompt: function(text, title, callback, modal, name, password) {\n\t\treturn new Promise((resolve) => {\n\t\t\tspawnDialog(\n\t\t\t\tdefineAsyncComponent(() => import('../components/LegacyDialogPrompt.vue')),\n\t\t\t\t{\n\t\t\t\t\ttext,\n\t\t\t\t\tname: title,\n\t\t\t\t\tcallback,\n\t\t\t\t\tinputName: name,\n\t\t\t\t\tisPassword: !!password\n\t\t\t\t},\n\t\t\t\t(...args) => {\n\t\t\t\t\tcallback(...args)\n\t\t\t\t\tresolve()\n\t\t\t\t},\n\t\t\t)\n\t\t})\n\t},\n\n\t/**\n\t * Legacy wrapper to the new Vue based filepicker from `@nextcloud/dialogs`\n\t *\n\t * Prefer to use the Vue filepicker directly instead.\n\t *\n\t * In order to pick several types of mime types they need to be passed as an\n\t * array of strings.\n\t *\n\t * When no mime type filter is given only files can be selected. In order to\n\t * be able to select both files and folders \"['*', 'httpd/unix-directory']\"\n\t * should be used instead.\n\t *\n\t * @param {string} title dialog title\n\t * @param {Function} callback which will be triggered when user presses Choose\n\t * @param {boolean} [multiselect] whether it should be possible to select multiple files\n\t * @param {string[]} [mimetype] mimetype to filter by - directories will always be included\n\t * @param {boolean} [_modal] do not use\n\t * @param {string} [type] Type of file picker : Choose, copy, move, copy and move\n\t * @param {string} [path] path to the folder that the the file can be picket from\n\t * @param {object} [options] additonal options that need to be set\n\t * @param {Function} [options.filter] filter function for advanced filtering\n\t * @param {boolean} [options.allowDirectoryChooser] Allow to select directories\n\t * @deprecated since 27.1.0 use the filepicker from `@nextcloud/dialogs` instead\n\t */\n\tfilepicker(title, callback, multiselect = false, mimetype = undefined, _modal = undefined, type = FilePickerType.Choose, path = undefined, options = undefined) {\n\n\t\t/**\n\t\t * Create legacy callback wrapper to support old filepicker syntax\n\t\t * @param fn The original callback\n\t\t * @param type The file picker type which was used to pick the file(s)\n\t\t */\n\t\tconst legacyCallback = (fn, type) => {\n\t\t\tconst getPath = (node) => {\n\t\t\t\tconst root = node?.root || ''\n\t\t\t\tlet path = node?.path || ''\n\t\t\t\t// TODO: Fix this in @nextcloud/files\n\t\t\t\tif (path.startsWith(root)) {\n\t\t\t\t\tpath = path.slice(root.length) || '/'\n\t\t\t\t}\n\t\t\t\treturn path\n\t\t\t}\n\n\t\t\tif (multiselect) {\n\t\t\t\treturn (nodes) => fn(nodes.map(getPath), type)\n\t\t\t} else {\n\t\t\t\treturn (nodes) => fn(getPath(nodes[0]), type)\n\t\t\t}\n\t\t}\n\n\t\t/**\n\t\t * Coverting a Node into a legacy file info to support the OC.dialogs.filepicker filter function\n\t\t * @param node The node to convert\n\t\t */\n\t\tconst nodeToLegacyFile = (node) => ({\n\t\t\tid: node.fileid || null,\n\t\t\tpath: node.path,\n\t\t\tmimetype: node.mime || null,\n\t\t\tmtime: node.mtime?.getTime() || null,\n\t\t\tpermissions: node.permissions,\n\t\t\tname: node.attributes?.displayName || node.basename,\n\t\t\tetag: node.attributes?.etag || null,\n\t\t\thasPreview: node.attributes?.hasPreview || null,\n\t\t\tmountType: node.attributes?.mountType || null,\n\t\t\tquotaAvailableBytes: node.attributes?.quotaAvailableBytes || null,\n\t\t\ticon: null,\n\t\t\tsharePermissions: null,\n\t\t})\n\n\t\tconst builder = getFilePickerBuilder(title)\n\n\t\t// Setup buttons\n\t\tif (type === this.FILEPICKER_TYPE_CUSTOM) {\n\t\t\t(options.buttons || []).forEach((button) => {\n\t\t\t\tbuilder.addButton({\n\t\t\t\t\tcallback: legacyCallback(callback, button.type),\n\t\t\t\t\tlabel: button.text,\n\t\t\t\t\ttype: button.defaultButton ? 'primary' : 'secondary',\n\t\t\t\t})\n\t\t\t})\n\t\t} else {\n\t\t\tbuilder.setButtonFactory((nodes, path) => {\n\t\t\t\tconst buttons = []\n\t\t\t\tconst node = nodes?.[0]?.attributes?.displayName || nodes?.[0]?.basename\n\t\t\t\tconst target = node || basename(path)\n\n\t\t\t\tif (type === FilePickerType.Choose) {\n\t\t\t\t\tbuttons.push({\n\t\t\t\t\t\tcallback: legacyCallback(callback, FilePickerType.Choose),\n\t\t\t\t\t\tlabel: node && !this.multiSelect ? t('core', 'Choose {file}', { file: node }) : t('core', 'Choose'),\n\t\t\t\t\t\ttype: 'primary',\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t\tif (type === FilePickerType.CopyMove || type === FilePickerType.Copy) {\n\t\t\t\t\tbuttons.push({\n\t\t\t\t\t\tcallback: legacyCallback(callback, FilePickerType.Copy),\n\t\t\t\t\t\tlabel: target ? t('core', 'Copy to {target}', { target }) : t('core', 'Copy'),\n\t\t\t\t\t\ttype: 'primary',\n\t\t\t\t\t\ticon: IconCopy,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t\tif (type === FilePickerType.Move || type === FilePickerType.CopyMove) {\n\t\t\t\t\tbuttons.push({\n\t\t\t\t\t\tcallback: legacyCallback(callback, FilePickerType.Move),\n\t\t\t\t\t\tlabel: target ? t('core', 'Move to {target}', { target }) : t('core', 'Move'),\n\t\t\t\t\t\ttype: type === FilePickerType.Move ? 'primary' : 'secondary',\n\t\t\t\t\t\ticon: IconMove,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t\treturn buttons\n\t\t\t})\n\t\t}\n\n\t\tif (mimetype) {\n\t\t\tbuilder.setMimeTypeFilter(typeof mimetype === 'string' ? [mimetype] : (mimetype || []))\n\t\t}\n\t\tif (typeof options?.filter === 'function') {\n\t\t\tbuilder.setFilter((node) => options.filter(nodeToLegacyFile(node)))\n\t\t}\n\t\tbuilder.allowDirectories(options?.allowDirectoryChooser === true || mimetype?.includes('httpd/unix-directory') || false)\n\t\t\t.setMultiSelect(multiselect)\n\t\t\t.startAt(path)\n\t\t\t.build()\n\t\t\t.pick()\n\t},\n\n\t/**\n\t * Displays raw dialog\n\t * You better use a wrapper instead ...\n\t *\n\t * @deprecated 30.0.0 Use `@nextcloud/dialogs` instead or build your own with `@nextcloud/vue` NcDialog\n\t */\n\tmessage: function(content, title, dialogType, buttons, callback = () => {}, modal, allowHtml) {\n\t\tconst builder = (new DialogBuilder())\n\t\t\t.setName(title)\n\t\t\t.setText(allowHtml ? '' : content)\n\t\t\t.setButtons(Dialogs._getLegacyButtons(buttons, callback))\n\n\t\tswitch (dialogType) {\n\t\t\tcase 'alert':\n\t\t\t\tbuilder.setSeverity('warning')\n\t\t\t\tbreak\n\t\t\tcase 'notice':\n\t\t\t\tbuilder.setSeverity('info')\n\t\t\t\tbreak\n\t\t\tdefault:\n\t\t\t\tbreak\n\t\t}\n\n\t\tconst dialog = builder.build()\n\t\n\t\tif (allowHtml) {\n\t\t\tdialog.setHTML(content)\n\t\t}\n\n\t\treturn dialog.show().then(() => {\n\t\t\tif(!callback._clicked) {\n\t\t\t\tcallback(false)\n\t\t\t}\n\t\t})\n\t},\n\n\t/**\n\t * Helper for legacy API\n\t * @deprecated\n\t */\n\t_getLegacyButtons(buttons, callback) {\n\t\tconst buttonList = []\n\n\t\tswitch (typeof buttons === 'object' ? buttons.type : buttons) {\n\t\t\tcase Dialogs.YES_NO_BUTTONS:\n\t\t\t\tbuttonList.push({\n\t\t\t\t\tlabel: buttons?.cancel ?? t('core', 'No'),\n\t\t\t\t\tcallback: () => {\n\t\t\t\t\t\tcallback._clicked = true\n\t\t\t\t\t\tcallback(false)\n\t\t\t\t\t},\n\t\t\t\t})\n\t\t\t\tbuttonList.push({\n\t\t\t\t\tlabel: buttons?.confirm ?? t('core', 'Yes'),\n\t\t\t\t\ttype: 'primary',\n\t\t\t\t\tcallback: () => {\n\t\t\t\t\t\tcallback._clicked = true\n\t\t\t\t\t\tcallback(true)\n\t\t\t\t\t},\n\t\t\t\t})\n\t\t\t\tbreak\n\t\t\tcase Dialogs.OK_BUTTONS:\n\t\t\t\tbuttonList.push({\n\t\t\t\t\tlabel: buttons?.confirm ?? t('core', 'OK'),\n\t\t\t\t\ttype: 'primary',\n\t\t\t\t\tcallback: () => {\n\t\t\t\t\t\tcallback._clicked = true\n\t\t\t\t\t\tcallback(true)\n\t\t\t\t\t},\n\t\t\t\t})\n\t\t\t\tbreak\n\t\t\tdefault:\n\t\t\t\tconsole.error('Invalid call to OC.dialogs')\n\t\t\t\tbreak\n\t\t}\n\t\treturn buttonList\n\t},\n\n\t_fileexistsshown: false,\n\t/**\n\t * Displays file exists dialog\n\t * @param {object} data upload object\n\t * @param {object} original file with name, size and mtime\n\t * @param {object} replacement file with name, size and mtime\n\t * @param {object} controller with onCancel, onSkip, onReplace and onRename methods\n\t * @returns {Promise} jquery promise that resolves after the dialog template was loaded\n\t *\n\t * @deprecated 29.0.0 Use openConflictPicker from the @nextcloud/upload package instead\n\t */\n\tfileexists: function(data, original, replacement, controller) {\n\t\tvar self = this\n\t\tvar dialogDeferred = new $.Deferred()\n\n\t\tvar getCroppedPreview = function(file) {\n\t\t\tvar deferred = new $.Deferred()\n\t\t\t// Only process image files.\n\t\t\tvar type = file.type && file.type.split('/').shift()\n\t\t\tif (window.FileReader && type === 'image') {\n\t\t\t\tvar reader = new FileReader()\n\t\t\t\treader.onload = function(e) {\n\t\t\t\t\tvar blob = new Blob([e.target.result])\n\t\t\t\t\twindow.URL = window.URL || window.webkitURL\n\t\t\t\t\tvar originalUrl = window.URL.createObjectURL(blob)\n\t\t\t\t\tvar image = new Image()\n\t\t\t\t\timage.src = originalUrl\n\t\t\t\t\timage.onload = function() {\n\t\t\t\t\t\tvar url = crop(image)\n\t\t\t\t\t\tdeferred.resolve(url)\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treader.readAsArrayBuffer(file)\n\t\t\t} else {\n\t\t\t\tdeferred.reject()\n\t\t\t}\n\t\t\treturn deferred\n\t\t}\n\n\t\tvar crop = function(img) {\n\t\t\tvar canvas = document.createElement('canvas')\n\t\t\tvar targetSize = 96\n\t\t\tvar width = img.width\n\t\t\tvar height = img.height\n\t\t\tvar x; var y; var size\n\n\t\t\t// Calculate the width and height, constraining the proportions\n\t\t\tif (width > height) {\n\t\t\t\ty = 0\n\t\t\t\tx = (width - height) / 2\n\t\t\t} else {\n\t\t\t\ty = (height - width) / 2\n\t\t\t\tx = 0\n\t\t\t}\n\t\t\tsize = Math.min(width, height)\n\n\t\t\t// Set canvas size to the cropped area\n\t\t\tcanvas.width = size\n\t\t\tcanvas.height = size\n\t\t\tvar ctx = canvas.getContext('2d')\n\t\t\tctx.drawImage(img, x, y, size, size, 0, 0, size, size)\n\n\t\t\t// Resize the canvas to match the destination (right size uses 96px)\n\t\t\tresampleHermite(canvas, size, size, targetSize, targetSize)\n\n\t\t\treturn canvas.toDataURL('image/png', 0.7)\n\t\t}\n\n\t\t/**\n\t\t * Fast image resize/resample using Hermite filter with JavaScript.\n\t\t *\n\t\t * @author: ViliusL\n\t\t *\n\t\t * @param {*} canvas\n\t\t * @param {number} W\n\t\t * @param {number} H\n\t\t * @param {number} W2\n\t\t * @param {number} H2\n\t\t */\n\t\tvar resampleHermite = function(canvas, W, H, W2, H2) {\n\t\t\tW2 = Math.round(W2)\n\t\t\tH2 = Math.round(H2)\n\t\t\tvar img = canvas.getContext('2d').getImageData(0, 0, W, H)\n\t\t\tvar img2 = canvas.getContext('2d').getImageData(0, 0, W2, H2)\n\t\t\tvar data = img.data\n\t\t\tvar data2 = img2.data\n\t\t\tvar ratio_w = W / W2\n\t\t\tvar ratio_h = H / H2\n\t\t\tvar ratio_w_half = Math.ceil(ratio_w / 2)\n\t\t\tvar ratio_h_half = Math.ceil(ratio_h / 2)\n\n\t\t\tfor (var j = 0; j < H2; j++) {\n\t\t\t\tfor (var i = 0; i < W2; i++) {\n\t\t\t\t\tvar x2 = (i + j * W2) * 4\n\t\t\t\t\tvar weight = 0\n\t\t\t\t\tvar weights = 0\n\t\t\t\t\tvar weights_alpha = 0\n\t\t\t\t\tvar gx_r = 0\n\t\t\t\t\tvar gx_g = 0\n\t\t\t\t\tvar gx_b = 0\n\t\t\t\t\tvar gx_a = 0\n\t\t\t\t\tvar center_y = (j + 0.5) * ratio_h\n\t\t\t\t\tfor (var yy = Math.floor(j * ratio_h); yy < (j + 1) * ratio_h; yy++) {\n\t\t\t\t\t\tvar dy = Math.abs(center_y - (yy + 0.5)) / ratio_h_half\n\t\t\t\t\t\tvar center_x = (i + 0.5) * ratio_w\n\t\t\t\t\t\tvar w0 = dy * dy // pre-calc part of w\n\t\t\t\t\t\tfor (var xx = Math.floor(i * ratio_w); xx < (i + 1) * ratio_w; xx++) {\n\t\t\t\t\t\t\tvar dx = Math.abs(center_x - (xx + 0.5)) / ratio_w_half\n\t\t\t\t\t\t\tvar w = Math.sqrt(w0 + dx * dx)\n\t\t\t\t\t\t\tif (w >= -1 && w <= 1) {\n\t\t\t\t\t\t\t\t// hermite filter\n\t\t\t\t\t\t\t\tweight = 2 * w * w * w - 3 * w * w + 1\n\t\t\t\t\t\t\t\tif (weight > 0) {\n\t\t\t\t\t\t\t\t\tdx = 4 * (xx + yy * W)\n\t\t\t\t\t\t\t\t\t// alpha\n\t\t\t\t\t\t\t\t\tgx_a += weight * data[dx + 3]\n\t\t\t\t\t\t\t\t\tweights_alpha += weight\n\t\t\t\t\t\t\t\t\t// colors\n\t\t\t\t\t\t\t\t\tif (data[dx + 3] < 255) { weight = weight * data[dx + 3] / 250 }\n\t\t\t\t\t\t\t\t\tgx_r += weight * data[dx]\n\t\t\t\t\t\t\t\t\tgx_g += weight * data[dx + 1]\n\t\t\t\t\t\t\t\t\tgx_b += weight * data[dx + 2]\n\t\t\t\t\t\t\t\t\tweights += weight\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tdata2[x2] = gx_r / weights\n\t\t\t\t\tdata2[x2 + 1] = gx_g / weights\n\t\t\t\t\tdata2[x2 + 2] = gx_b / weights\n\t\t\t\t\tdata2[x2 + 3] = gx_a / weights_alpha\n\t\t\t\t}\n\t\t\t}\n\t\t\tcanvas.getContext('2d').clearRect(0, 0, Math.max(W, W2), Math.max(H, H2))\n\t\t\tcanvas.width = W2\n\t\t\tcanvas.height = H2\n\t\t\tcanvas.getContext('2d').putImageData(img2, 0, 0)\n\t\t}\n\n\t\tvar addConflict = function($conflicts, original, replacement) {\n\n\t\t\tvar $conflict = $conflicts.find('.template').clone().removeClass('template').addClass('conflict')\n\t\t\tvar $originalDiv = $conflict.find('.original')\n\t\t\tvar $replacementDiv = $conflict.find('.replacement')\n\n\t\t\t$conflict.data('data', data)\n\n\t\t\t$conflict.find('.filename').text(original.name)\n\t\t\t$originalDiv.find('.size').text(OC.Util.humanFileSize(original.size))\n\t\t\t$originalDiv.find('.mtime').text(OC.Util.formatDate(original.mtime))\n\t\t\t// ie sucks\n\t\t\tif (replacement.size && replacement.lastModified) {\n\t\t\t\t$replacementDiv.find('.size').text(OC.Util.humanFileSize(replacement.size))\n\t\t\t\t$replacementDiv.find('.mtime').text(OC.Util.formatDate(replacement.lastModified))\n\t\t\t}\n\t\t\tvar path = original.directory + '/' + original.name\n\t\t\tvar urlSpec = {\n\t\t\t\tfile: path,\n\t\t\t\tx: 96,\n\t\t\t\ty: 96,\n\t\t\t\tc: original.etag,\n\t\t\t\tforceIcon: 0\n\t\t\t}\n\t\t\tvar previewpath = Files.generatePreviewUrl(urlSpec)\n\t\t\t// Escaping single quotes\n\t\t\tpreviewpath = previewpath.replace(/'/g, '%27')\n\t\t\t$originalDiv.find('.icon').css({ 'background-image': \"url('\" + previewpath + \"')\" })\n\t\t\tgetCroppedPreview(replacement).then(\n\t\t\t\tfunction(path) {\n\t\t\t\t\t$replacementDiv.find('.icon').css('background-image', 'url(' + path + ')')\n\t\t\t\t}, function() {\n\t\t\t\t\tpath = OC.MimeType.getIconUrl(replacement.type)\n\t\t\t\t\t$replacementDiv.find('.icon').css('background-image', 'url(' + path + ')')\n\t\t\t\t}\n\t\t\t)\n\t\t\t// connect checkboxes with labels\n\t\t\tvar checkboxId = $conflicts.find('.conflict').length\n\t\t\t$originalDiv.find('input:checkbox').attr('id', 'checkbox_original_' + checkboxId)\n\t\t\t$replacementDiv.find('input:checkbox').attr('id', 'checkbox_replacement_' + checkboxId)\n\n\t\t\t$conflicts.append($conflict)\n\n\t\t\t// set more recent mtime bold\n\t\t\t// ie sucks\n\t\t\tif (replacement.lastModified > original.mtime) {\n\t\t\t\t$replacementDiv.find('.mtime').css('font-weight', 'bold')\n\t\t\t} else if (replacement.lastModified < original.mtime) {\n\t\t\t\t$originalDiv.find('.mtime').css('font-weight', 'bold')\n\t\t\t} else {\n\t\t\t\t// TODO add to same mtime collection?\n\t\t\t}\n\n\t\t\t// set bigger size bold\n\t\t\tif (replacement.size && replacement.size > original.size) {\n\t\t\t\t$replacementDiv.find('.size').css('font-weight', 'bold')\n\t\t\t} else if (replacement.size && replacement.size < original.size) {\n\t\t\t\t$originalDiv.find('.size').css('font-weight', 'bold')\n\t\t\t} else {\n\t\t\t\t// TODO add to same size collection?\n\t\t\t}\n\n\t\t\t// TODO show skip action for files with same size and mtime in bottom row\n\n\t\t\t// always keep readonly files\n\n\t\t\tif (original.status === 'readonly') {\n\t\t\t\t$originalDiv\n\t\t\t\t\t.addClass('readonly')\n\t\t\t\t\t.find('input[type=\"checkbox\"]')\n\t\t\t\t\t.prop('checked', true)\n\t\t\t\t\t.prop('disabled', true)\n\t\t\t\t$originalDiv.find('.message')\n\t\t\t\t\t.text(t('core', 'read-only'))\n\t\t\t}\n\t\t}\n\t\t// var selection = controller.getSelection(data.originalFiles);\n\t\t// if (selection.defaultAction) {\n\t\t//\tcontroller[selection.defaultAction](data);\n\t\t// } else {\n\t\tvar dialogName = 'oc-dialog-fileexists-content'\n\t\tvar dialogId = '#' + dialogName\n\t\tif (this._fileexistsshown) {\n\t\t\t// add conflict\n\n\t\t\tvar $conflicts = $(dialogId + ' .conflicts')\n\t\t\taddConflict($conflicts, original, replacement)\n\n\t\t\tvar count = $(dialogId + ' .conflict').length\n\t\t\tvar title = n('core',\n\t\t\t\t'{count} file conflict',\n\t\t\t\t'{count} file conflicts',\n\t\t\t\tcount,\n\t\t\t\t{ count: count }\n\t\t\t)\n\t\t\t$(dialogId).parent().children('.oc-dialog-title').text(title)\n\n\t\t\t// recalculate dimensions\n\t\t\t$(window).trigger('resize')\n\t\t\tdialogDeferred.resolve()\n\t\t} else {\n\t\t\t// create dialog\n\t\t\tthis._fileexistsshown = true\n\t\t\t$.when(this._getFileExistsTemplate()).then(function($tmpl) {\n\t\t\t\tvar title = t('core', 'One file conflict')\n\t\t\t\tvar $dlg = $tmpl.octemplate({\n\t\t\t\t\tdialog_name: dialogName,\n\t\t\t\t\ttitle: title,\n\t\t\t\t\ttype: 'fileexists',\n\n\t\t\t\t\tallnewfiles: t('core', 'New Files'),\n\t\t\t\t\tallexistingfiles: t('core', 'Already existing files'),\n\n\t\t\t\t\twhy: t('core', 'Which files do you want to keep?'),\n\t\t\t\t\twhat: t('core', 'If you select both versions, the copied file will have a number added to its name.')\n\t\t\t\t})\n\t\t\t\t$('body').append($dlg)\n\n\t\t\t\tif (original && replacement) {\n\t\t\t\t\tvar $conflicts = $dlg.find('.conflicts')\n\t\t\t\t\taddConflict($conflicts, original, replacement)\n\t\t\t\t}\n\n\t\t\t\tvar buttonlist = [{\n\t\t\t\t\ttext: t('core', 'Cancel'),\n\t\t\t\t\tclasses: 'cancel',\n\t\t\t\t\tclick: function() {\n\t\t\t\t\t\tif (typeof controller.onCancel !== 'undefined') {\n\t\t\t\t\t\t\tcontroller.onCancel(data)\n\t\t\t\t\t\t}\n\t\t\t\t\t\t$(dialogId).ocdialog('close')\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\ttext: t('core', 'Continue'),\n\t\t\t\t\tclasses: 'continue',\n\t\t\t\t\tclick: function() {\n\t\t\t\t\t\tif (typeof controller.onContinue !== 'undefined') {\n\t\t\t\t\t\t\tcontroller.onContinue($(dialogId + ' .conflict'))\n\t\t\t\t\t\t}\n\t\t\t\t\t\t$(dialogId).ocdialog('close')\n\t\t\t\t\t}\n\t\t\t\t}]\n\n\t\t\t\t$(dialogId).ocdialog({\n\t\t\t\t\twidth: 500,\n\t\t\t\t\tcloseOnEscape: true,\n\t\t\t\t\tmodal: true,\n\t\t\t\t\tbuttons: buttonlist,\n\t\t\t\t\tcloseButton: null,\n\t\t\t\t\tclose: function() {\n\t\t\t\t\t\tself._fileexistsshown = false\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t$(this).ocdialog('destroy').remove()\n\t\t\t\t\t\t} catch (e) {\n\t\t\t\t\t\t\t// ignore\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t})\n\n\t\t\t\t$(dialogId).css('height', 'auto')\n\n\t\t\t\tvar $primaryButton = $dlg.closest('.oc-dialog').find('button.continue')\n\t\t\t\t$primaryButton.prop('disabled', true)\n\n\t\t\t\tfunction updatePrimaryButton() {\n\t\t\t\t\tvar checkedCount = $dlg.find('.conflicts .checkbox:checked').length\n\t\t\t\t\t$primaryButton.prop('disabled', checkedCount === 0)\n\t\t\t\t}\n\n\t\t\t\t// add checkbox toggling actions\n\t\t\t\t$(dialogId).find('.allnewfiles').on('click', function() {\n\t\t\t\t\tvar $checkboxes = $(dialogId).find('.conflict .replacement input[type=\"checkbox\"]')\n\t\t\t\t\t$checkboxes.prop('checked', $(this).prop('checked'))\n\t\t\t\t})\n\t\t\t\t$(dialogId).find('.allexistingfiles').on('click', function() {\n\t\t\t\t\tvar $checkboxes = $(dialogId).find('.conflict .original:not(.readonly) input[type=\"checkbox\"]')\n\t\t\t\t\t$checkboxes.prop('checked', $(this).prop('checked'))\n\t\t\t\t})\n\t\t\t\t$(dialogId).find('.conflicts').on('click', '.replacement,.original:not(.readonly)', function() {\n\t\t\t\t\tvar $checkbox = $(this).find('input[type=\"checkbox\"]')\n\t\t\t\t\t$checkbox.prop('checked', !$checkbox.prop('checked'))\n\t\t\t\t})\n\t\t\t\t$(dialogId).find('.conflicts').on('click', '.replacement input[type=\"checkbox\"],.original:not(.readonly) input[type=\"checkbox\"]', function() {\n\t\t\t\t\tvar $checkbox = $(this)\n\t\t\t\t\t$checkbox.prop('checked', !$checkbox.prop('checked'))\n\t\t\t\t})\n\n\t\t\t\t// update counters\n\t\t\t\t$(dialogId).on('click', '.replacement,.allnewfiles', function() {\n\t\t\t\t\tvar count = $(dialogId).find('.conflict .replacement input[type=\"checkbox\"]:checked').length\n\t\t\t\t\tif (count === $(dialogId + ' .conflict').length) {\n\t\t\t\t\t\t$(dialogId).find('.allnewfiles').prop('checked', true)\n\t\t\t\t\t\t$(dialogId).find('.allnewfiles + .count').text(t('core', '(all selected)'))\n\t\t\t\t\t} else if (count > 0) {\n\t\t\t\t\t\t$(dialogId).find('.allnewfiles').prop('checked', false)\n\t\t\t\t\t\t$(dialogId).find('.allnewfiles + .count').text(t('core', '({count} selected)', { count: count }))\n\t\t\t\t\t} else {\n\t\t\t\t\t\t$(dialogId).find('.allnewfiles').prop('checked', false)\n\t\t\t\t\t\t$(dialogId).find('.allnewfiles + .count').text('')\n\t\t\t\t\t}\n\t\t\t\t\tupdatePrimaryButton()\n\t\t\t\t})\n\t\t\t\t$(dialogId).on('click', '.original,.allexistingfiles', function() {\n\t\t\t\t\tvar count = $(dialogId).find('.conflict .original input[type=\"checkbox\"]:checked').length\n\t\t\t\t\tif (count === $(dialogId + ' .conflict').length) {\n\t\t\t\t\t\t$(dialogId).find('.allexistingfiles').prop('checked', true)\n\t\t\t\t\t\t$(dialogId).find('.allexistingfiles + .count').text(t('core', '(all selected)'))\n\t\t\t\t\t} else if (count > 0) {\n\t\t\t\t\t\t$(dialogId).find('.allexistingfiles').prop('checked', false)\n\t\t\t\t\t\t$(dialogId).find('.allexistingfiles + .count')\n\t\t\t\t\t\t\t.text(t('core', '({count} selected)', { count: count }))\n\t\t\t\t\t} else {\n\t\t\t\t\t\t$(dialogId).find('.allexistingfiles').prop('checked', false)\n\t\t\t\t\t\t$(dialogId).find('.allexistingfiles + .count').text('')\n\t\t\t\t\t}\n\t\t\t\t\tupdatePrimaryButton()\n\t\t\t\t})\n\n\t\t\t\tdialogDeferred.resolve()\n\t\t\t})\n\t\t\t\t.fail(function() {\n\t\t\t\t\tdialogDeferred.reject()\n\t\t\t\t\talert(t('core', 'Error loading file exists template'))\n\t\t\t\t})\n\t\t}\n\t\t// }\n\t\treturn dialogDeferred.promise()\n\t},\n\n\t_getFileExistsTemplate: function() {\n\t\tvar defer = $.Deferred()\n\t\tif (!this.$fileexistsTemplate) {\n\t\t\tvar self = this\n\t\t\t$.get(OC.filePath('files', 'templates', 'fileexists.html'), function(tmpl) {\n\t\t\t\tself.$fileexistsTemplate = $(tmpl)\n\t\t\t\tdefer.resolve(self.$fileexistsTemplate)\n\t\t\t})\n\t\t\t\t.fail(function() {\n\t\t\t\t\tdefer.reject()\n\t\t\t\t})\n\t\t} else {\n\t\t\tdefer.resolve(this.$fileexistsTemplate)\n\t\t}\n\t\treturn defer.promise()\n\t},\n}\n\nexport default Dialogs\n","/**\n * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport { emit } from '@nextcloud/event-bus'\n\n/**\n * @private\n * @param {Document} global the document to read the initial value from\n * @param {Function} emit the function to invoke for every new token\n * @return {object}\n */\nexport const manageToken = (global, emit) => {\n\tlet token = global.getElementsByTagName('head')[0].getAttribute('data-requesttoken')\n\n\treturn {\n\t\tgetToken: () => token,\n\t\tsetToken: newToken => {\n\t\t\ttoken = newToken\n\n\t\t\temit('csrf-token-update', {\n\t\t\t\ttoken,\n\t\t\t})\n\t\t},\n\t}\n}\n\nconst manageFromDocument = manageToken(document, emit)\n\n/**\n * @return {string}\n */\nexport const getToken = manageFromDocument.getToken\n\n/**\n * @param {string} newToken new token\n */\nexport const setToken = manageFromDocument.setToken\n","/**\n * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\n * SPDX-FileCopyrightText: 2015 ownCloud, Inc.\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\n/* eslint-disable */\nimport $ from 'jquery'\n\nimport { getToken } from './requesttoken.js'\n\n/**\n * Create a new event source\n * @param {string} src\n * @param {object} [data] to be send as GET\n *\n * @constructs OCEventSource\n */\nconst OCEventSource = function(src, data) {\n\tvar dataStr = ''\n\tvar name\n\tvar joinChar\n\tthis.typelessListeners = []\n\tthis.closed = false\n\tthis.listeners = {}\n\tif (data) {\n\t\tfor (name in data) {\n\t\t\tdataStr += name + '=' + encodeURIComponent(data[name]) + '&'\n\t\t}\n\t}\n\tdataStr += 'requesttoken=' + encodeURIComponent(getToken())\n\tif (!this.useFallBack && typeof EventSource !== 'undefined') {\n\t\tjoinChar = '&'\n\t\tif (src.indexOf('?') === -1) {\n\t\t\tjoinChar = '?'\n\t\t}\n\t\tthis.source = new EventSource(src + joinChar + dataStr)\n\t\tthis.source.onmessage = function(e) {\n\t\t\tfor (var i = 0; i < this.typelessListeners.length; i++) {\n\t\t\t\tthis.typelessListeners[i](JSON.parse(e.data))\n\t\t\t}\n\t\t}.bind(this)\n\t} else {\n\t\tvar iframeId = 'oc_eventsource_iframe_' + OCEventSource.iframeCount\n\t\tOCEventSource.fallBackSources[OCEventSource.iframeCount] = this\n\t\tthis.iframe = $('<iframe></iframe>')\n\t\tthis.iframe.attr('id', iframeId)\n\t\tthis.iframe.hide()\n\n\t\tjoinChar = '&'\n\t\tif (src.indexOf('?') === -1) {\n\t\t\tjoinChar = '?'\n\t\t}\n\t\tthis.iframe.attr('src', src + joinChar + 'fallback=true&fallback_id=' + OCEventSource.iframeCount + '&' + dataStr)\n\t\t$('body').append(this.iframe)\n\t\tthis.useFallBack = true\n\t\tOCEventSource.iframeCount++\n\t}\n\t// add close listener\n\tthis.listen('__internal__', function(data) {\n\t\tif (data === 'close') {\n\t\t\tthis.close()\n\t\t}\n\t}.bind(this))\n}\nOCEventSource.fallBackSources = []\nOCEventSource.iframeCount = 0// number of fallback iframes\nOCEventSource.fallBackCallBack = function(id, type, data) {\n\tOCEventSource.fallBackSources[id].fallBackCallBack(type, data)\n}\nOCEventSource.prototype = {\n\ttypelessListeners: [],\n\tiframe: null,\n\tlisteners: {}, // only for fallback\n\tuseFallBack: false,\n\t/**\n\t * Fallback callback for browsers that don't have the\n\t * native EventSource object.\n\t *\n\t * Calls the registered listeners.\n\t *\n\t * @private\n\t * @param {String} type event type\n\t * @param {Object} data received data\n\t */\n\tfallBackCallBack: function(type, data) {\n\t\tvar i\n\t\t// ignore messages that might appear after closing\n\t\tif (this.closed) {\n\t\t\treturn\n\t\t}\n\t\tif (type) {\n\t\t\tif (typeof this.listeners.done !== 'undefined') {\n\t\t\t\tfor (i = 0; i < this.listeners[type].length; i++) {\n\t\t\t\t\tthis.listeners[type][i](data)\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tfor (i = 0; i < this.typelessListeners.length; i++) {\n\t\t\t\tthis.typelessListeners[i](data)\n\t\t\t}\n\t\t}\n\t},\n\tlastLength: 0, // for fallback\n\t/**\n\t * Listen to a given type of events.\n\t *\n\t * @param {String} type event type\n\t * @param {Function} callback event callback\n\t */\n\tlisten: function(type, callback) {\n\t\tif (callback && callback.call) {\n\n\t\t\tif (type) {\n\t\t\t\tif (this.useFallBack) {\n\t\t\t\t\tif (!this.listeners[type]) {\n\t\t\t\t\t\tthis.listeners[type] = []\n\t\t\t\t\t}\n\t\t\t\t\tthis.listeners[type].push(callback)\n\t\t\t\t} else {\n\t\t\t\t\tthis.source.addEventListener(type, function(e) {\n\t\t\t\t\t\tif (typeof e.data !== 'undefined') {\n\t\t\t\t\t\t\tcallback(JSON.parse(e.data))\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tcallback('')\n\t\t\t\t\t\t}\n\t\t\t\t\t}, false)\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tthis.typelessListeners.push(callback)\n\t\t\t}\n\t\t}\n\t},\n\t/**\n\t * Closes this event source.\n\t */\n\tclose: function() {\n\t\tthis.closed = true\n\t\tif (typeof this.source !== 'undefined') {\n\t\t\tthis.source.close()\n\t\t}\n\t}\n}\n\nexport default OCEventSource\n","/**\n * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport _ from 'underscore'\n/** @typedef {import('jquery')} jQuery */\nimport $ from 'jquery'\n\nimport { menuSpeed } from './constants.js'\n\nexport let currentMenu = null\nexport let currentMenuToggle = null\n\n/**\n * For menu toggling\n *\n * @param {jQuery} $toggle the toggle element\n * @param {jQuery} $menuEl the menu container element\n * @param {Function | undefined} toggle callback invoked everytime the menu is opened\n * @param {boolean} headerMenu is this a top right header menu?\n * @return {void}\n */\nexport const registerMenu = function($toggle, $menuEl, toggle, headerMenu) {\n\t$menuEl.addClass('menu')\n\tconst isClickableElement = $toggle.prop('tagName') === 'A' || $toggle.prop('tagName') === 'BUTTON'\n\n\t// On link and button, the enter key trigger a click event\n\t// Only use the click to avoid two fired events\n\t$toggle.on(isClickableElement ? 'click.menu' : 'click.menu keyup.menu', function(event) {\n\t\t// prevent the link event (append anchor to URL)\n\t\tevent.preventDefault()\n\n\t\t// allow enter key as a trigger\n\t\tif (event.key && event.key !== 'Enter') {\n\t\t\treturn\n\t\t}\n\n\t\tif ($menuEl.is(currentMenu)) {\n\t\t\thideMenus()\n\t\t\treturn\n\t\t} else if (currentMenu) {\n\t\t\t// another menu was open?\n\t\t\t// close it\n\t\t\thideMenus()\n\t\t}\n\n\t\tif (headerMenu === true) {\n\t\t\t$menuEl.parent().addClass('openedMenu')\n\t\t}\n\n\t\t// Set menu to expanded\n\t\t$toggle.attr('aria-expanded', true)\n\n\t\t$menuEl.slideToggle(menuSpeed, toggle)\n\t\tcurrentMenu = $menuEl\n\t\tcurrentMenuToggle = $toggle\n\t})\n}\n\n/**\n * Unregister a previously registered menu\n *\n * @param {jQuery} $toggle the toggle element\n * @param {jQuery} $menuEl the menu container element\n */\nexport const unregisterMenu = ($toggle, $menuEl) => {\n\t// close menu if opened\n\tif ($menuEl.is(currentMenu)) {\n\t\thideMenus()\n\t}\n\t$toggle.off('click.menu').removeClass('menutoggle')\n\t$menuEl.removeClass('menu')\n}\n\n/**\n * Hides any open menus\n *\n * @param {Function} complete callback when the hiding animation is done\n */\nexport const hideMenus = function(complete) {\n\tif (currentMenu) {\n\t\tconst lastMenu = currentMenu\n\t\tcurrentMenu.trigger(new $.Event('beforeHide'))\n\t\tcurrentMenu.slideUp(menuSpeed, function() {\n\t\t\tlastMenu.trigger(new $.Event('afterHide'))\n\t\t\tif (complete) {\n\t\t\t\tcomplete.apply(this, arguments)\n\t\t\t}\n\t\t})\n\t}\n\n\t// Set menu to closed\n\t$('.menutoggle').attr('aria-expanded', false)\n\tif (currentMenuToggle) {\n\t\tcurrentMenuToggle.attr('aria-expanded', false)\n\t}\n\n\t$('.openedMenu').removeClass('openedMenu')\n\tcurrentMenu = null\n\tcurrentMenuToggle = null\n}\n\n/**\n * Shows a given element as menu\n *\n * @param {object} [$toggle=null] menu toggle\n * @param {object} $menuEl menu element\n * @param {Function} complete callback when the showing animation is done\n */\nexport const showMenu = ($toggle, $menuEl, complete) => {\n\tif ($menuEl.is(currentMenu)) {\n\t\treturn\n\t}\n\thideMenus()\n\tcurrentMenu = $menuEl\n\tcurrentMenuToggle = $toggle\n\t$menuEl.trigger(new $.Event('beforeShow'))\n\t$menuEl.show()\n\t$menuEl.trigger(new $.Event('afterShow'))\n\t// no animation\n\tif (_.isFunction(complete)) {\n\t\tcomplete()\n\t}\n}\n","/**\n * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nexport const coreApps = ['', 'admin', 'log', 'core/search', 'core', '3rdparty']\nexport const menuSpeed = 50\nexport const PERMISSION_NONE = 0\nexport const PERMISSION_CREATE = 4\nexport const PERMISSION_READ = 1\nexport const PERMISSION_UPDATE = 2\nexport const PERMISSION_DELETE = 8\nexport const PERMISSION_SHARE = 16\nexport const PERMISSION_ALL = 31\nexport const TAG_FAVORITE = '_$!<Favorite>!$_'\n","/**\n * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nconst isAdmin = !!window._oc_isadmin\n\n/**\n * Returns whether the current user is an administrator\n *\n * @return {boolean} true if the user is an admin, false otherwise\n * @since 9.0.0\n */\nexport const isUserAdmin = () => isAdmin\n","/**\n * SPDX-FileCopyrightText: 2017 Nextcloud GmbH and Nextcloud contributors\n * SPDX-FileCopyrightText: 2014 ownCloud, Inc.\n * SPDX-FileCopyrightText: 2005-2010 Zend Technologies USA Inc. (http://www.zend.com)\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport Handlebars from 'handlebars'\nimport {\n\tloadTranslations,\n\ttranslate,\n\ttranslatePlural,\n\tregister,\n\tunregister,\n} from '@nextcloud/l10n'\n\n/**\n * L10N namespace with localization functions.\n *\n * @namespace OC.L10n\n * @deprecated 26.0.0 use https://www.npmjs.com/package/@nextcloud/l10n\n */\nconst L10n = {\n\n\t/**\n\t * Load an app's translation bundle if not loaded already.\n\t *\n\t * @deprecated 26.0.0 use `loadTranslations` from https://www.npmjs.com/package/@nextcloud/l10n\n\t *\n\t * @param {string} appName name of the app\n\t * @param {Function} callback callback to be called when\n\t * the translations are loaded\n\t * @return {Promise} promise\n\t */\n\tload: loadTranslations,\n\n\t/**\n\t * Register an app's translation bundle.\n\t *\n\t * @deprecated 26.0.0 use `register` from https://www.npmjs.com/package/@nextcloud/l10\n\t *\n\t * @param {string} appName name of the app\n\t * @param {Object<string, string>} bundle bundle\n\t */\n\tregister,\n\n\t/**\n\t * @private\n\t * @deprecated 26.0.0 use `unregister` from https://www.npmjs.com/package/@nextcloud/l10n\n\t */\n\t_unregister: unregister,\n\n\t/**\n\t * Translate a string\n\t *\n\t * @deprecated 26.0.0 use `translate` from https://www.npmjs.com/package/@nextcloud/l10n\n\t *\n\t * @param {string} app the id of the app for which to translate the string\n\t * @param {string} text the string to translate\n\t * @param {object} [vars] map of placeholder key to value\n\t * @param {number} [count] number to replace %n with\n\t * @param {Array} [options] options array\n\t * @param {boolean} [options.escape=true] enable/disable auto escape of placeholders (by default enabled)\n\t * @param {boolean} [options.sanitize=true] enable/disable sanitization (by default enabled)\n\t * @return {string}\n\t */\n\ttranslate,\n\n\t/**\n\t * Translate a plural string\n\t *\n\t * @deprecated 26.0.0 use `translatePlural` from https://www.npmjs.com/package/@nextcloud/l10n\n\t *\n\t * @param {string} app the id of the app for which to translate the string\n\t * @param {string} textSingular the string to translate for exactly one object\n\t * @param {string} textPlural the string to translate for n objects\n\t * @param {number} count number to determine whether to use singular or plural\n\t * @param {object} [vars] map of placeholder key to value\n\t * @param {Array} [options] options array\n\t * @param {boolean} [options.escape=true] enable/disable auto escape of placeholders (by default enabled)\n\t * @return {string} Translated string\n\t */\n\ttranslatePlural,\n}\n\nexport default L10n\n\nHandlebars.registerHelper('t', function(app, text) {\n\treturn translate(app, text)\n})\n","/**\n * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport {\n\tgetRootUrl as realGetRootUrl,\n} from '@nextcloud/router'\n\n/**\n * Creates a relative url for remote use\n *\n * @param {string} service id\n * @return {string} the url\n */\nexport const linkToRemoteBase = service => {\n\treturn realGetRootUrl() + '/remote.php/' + service\n}\n","/**\n * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport $ from 'jquery'\n\n/**\n * A little class to manage a status field for a \"saving\" process.\n * It can be used to display a starting message (e.g. \"Saving...\") and then\n * replace it with a green success message or a red error message.\n *\n * @namespace OC.msg\n */\nexport default {\n\t/**\n\t * Displayes a \"Saving...\" message in the given message placeholder\n\t *\n\t * @param {object} selector Placeholder to display the message in\n\t */\n\tstartSaving(selector) {\n\t\tthis.startAction(selector, t('core', 'Saving …'))\n\t},\n\n\t/**\n\t * Displayes a custom message in the given message placeholder\n\t *\n\t * @param {object} selector Placeholder to display the message in\n\t * @param {string} message Plain text message to display (no HTML allowed)\n\t */\n\tstartAction(selector, message) {\n\t\t$(selector).text(message)\n\t\t\t.removeClass('success')\n\t\t\t.removeClass('error')\n\t\t\t.stop(true, true)\n\t\t\t.show()\n\t},\n\n\t/**\n\t * Displayes an success/error message in the given selector\n\t *\n\t * @param {object} selector Placeholder to display the message in\n\t * @param {object} response Response of the server\n\t * @param {object} response.data Data of the servers response\n\t * @param {string} response.data.message Plain text message to display (no HTML allowed)\n\t * @param {string} response.status is being used to decide whether the message\n\t * is displayed as an error/success\n\t */\n\tfinishedSaving(selector, response) {\n\t\tthis.finishedAction(selector, response)\n\t},\n\n\t/**\n\t * Displayes an success/error message in the given selector\n\t *\n\t * @param {object} selector Placeholder to display the message in\n\t * @param {object} response Response of the server\n\t * @param {object} response.data Data of the servers response\n\t * @param {string} response.data.message Plain text message to display (no HTML allowed)\n\t * @param {string} response.status is being used to decide whether the message\n\t * is displayed as an error/success\n\t */\n\tfinishedAction(selector, response) {\n\t\tif (response.status === 'success') {\n\t\t\tthis.finishedSuccess(selector, response.data.message)\n\t\t} else {\n\t\t\tthis.finishedError(selector, response.data.message)\n\t\t}\n\t},\n\n\t/**\n\t * Displayes an success message in the given selector\n\t *\n\t * @param {object} selector Placeholder to display the message in\n\t * @param {string} message Plain text success message to display (no HTML allowed)\n\t */\n\tfinishedSuccess(selector, message) {\n\t\t$(selector).text(message)\n\t\t\t.addClass('success')\n\t\t\t.removeClass('error')\n\t\t\t.stop(true, true)\n\t\t\t.delay(3000)\n\t\t\t.fadeOut(900)\n\t\t\t.show()\n\t},\n\n\t/**\n\t * Displayes an error message in the given selector\n\t *\n\t * @param {object} selector Placeholder to display the message in\n\t * @param {string} message Plain text error message to display (no HTML allowed)\n\t */\n\tfinishedError(selector, message) {\n\t\t$(selector).text(message)\n\t\t\t.addClass('error')\n\t\t\t.removeClass('success')\n\t\t\t.show()\n\t},\n}\n","/**\n * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport { confirmPassword, isPasswordConfirmationRequired } from '@nextcloud/password-confirmation'\nimport '@nextcloud/password-confirmation/dist/style.css'\n\n/**\n * @namespace OC.PasswordConfirmation\n */\nexport default {\n\n\trequiresPasswordConfirmation() {\n\t\treturn isPasswordConfirmationRequired()\n\t},\n\n\t/**\n\t * @param {Function} callback success callback function\n\t * @param {object} options options currently not used by confirmPassword\n\t * @param {Function} rejectCallback error callback function\n\t */\n\trequirePasswordConfirmation(callback, options, rejectCallback) {\n\t\tconfirmPassword().then(callback, rejectCallback)\n\t},\n}\n","/**\n * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nexport default {\n\n\t/**\n\t * @type {Array.<OC.Plugin>}\n\t */\n\t_plugins: {},\n\n\t/**\n\t * Register plugin\n\t *\n\t * @param {string} targetName app name / class name to hook into\n\t * @param {OC.Plugin} plugin plugin\n\t */\n\tregister(targetName, plugin) {\n\t\tlet plugins = this._plugins[targetName]\n\t\tif (!plugins) {\n\t\t\tplugins = this._plugins[targetName] = []\n\t\t}\n\t\tplugins.push(plugin)\n\t},\n\n\t/**\n\t * Returns all plugin registered to the given target\n\t * name / app name / class name.\n\t *\n\t * @param {string} targetName app name / class name to hook into\n\t * @return {Array.<OC.Plugin>} array of plugins\n\t */\n\tgetPlugins(targetName) {\n\t\treturn this._plugins[targetName] || []\n\t},\n\n\t/**\n\t * Call attach() on all plugins registered to the given target name.\n\t *\n\t * @param {string} targetName app name / class name\n\t * @param {object} targetObject to be extended\n\t * @param {object} [options] options\n\t */\n\tattach(targetName, targetObject, options) {\n\t\tconst plugins = this.getPlugins(targetName)\n\t\tfor (let i = 0; i < plugins.length; i++) {\n\t\t\tif (plugins[i].attach) {\n\t\t\t\tplugins[i].attach(targetObject, options)\n\t\t\t}\n\t\t}\n\t},\n\n\t/**\n\t * Call detach() on all plugins registered to the given target name.\n\t *\n\t * @param {string} targetName app name / class name\n\t * @param {object} targetObject to be extended\n\t * @param {object} [options] options\n\t */\n\tdetach(targetName, targetObject, options) {\n\t\tconst plugins = this.getPlugins(targetName)\n\t\tfor (let i = 0; i < plugins.length; i++) {\n\t\t\tif (plugins[i].detach) {\n\t\t\t\tplugins[i].detach(targetObject, options)\n\t\t\t}\n\t\t}\n\t},\n\n}\n","/**\n * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nexport const theme = window._theme || {}\n","/**\n * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport _ from 'underscore'\nimport OC from './index.js'\n\n/**\n * Utility class for the history API,\n * includes fallback to using the URL hash when\n * the browser doesn't support the history API.\n *\n * @namespace OC.Util.History\n */\nexport default {\n\n\t_handlers: [],\n\n\t/**\n\t * Push the current URL parameters to the history stack\n\t * and change the visible URL.\n\t * Note: this includes a workaround for IE8/IE9 that uses\n\t * the hash part instead of the search part.\n\t *\n\t * @param {object | string} params to append to the URL, can be either a string\n\t * or a map\n\t * @param {string} [url] URL to be used, otherwise the current URL will be used,\n\t * using the params as query string\n\t * @param {boolean} [replace=false] whether to replace instead of pushing\n\t */\n\t_pushState(params, url, replace) {\n\t\tlet strParams\n\t\tif (typeof (params) === 'string') {\n\t\t\tstrParams = params\n\t\t} else {\n\t\t\tstrParams = OC.buildQueryString(params)\n\t\t}\n\n\t\tif (window.history.pushState) {\n\t\t\turl = url || location.pathname + '?' + strParams\n\t\t\t// Workaround for bug with SVG and window.history.pushState on Firefox < 51\n\t\t\t// https://bugzilla.mozilla.org/show_bug.cgi?id=652991\n\t\t\tconst isFirefox = navigator.userAgent.toLowerCase().indexOf('firefox') > -1\n\t\t\tif (isFirefox && parseInt(navigator.userAgent.split('/').pop()) < 51) {\n\t\t\t\tconst patterns = document.querySelectorAll('[fill^=\"url(#\"], [stroke^=\"url(#\"], [filter^=\"url(#invert\"]')\n\t\t\t\tfor (let i = 0, ii = patterns.length, pattern; i < ii; i++) {\n\t\t\t\t\tpattern = patterns[i]\n\t\t\t\t\t// eslint-disable-next-line no-self-assign\n\t\t\t\t\tpattern.style.fill = pattern.style.fill\n\t\t\t\t\t// eslint-disable-next-line no-self-assign\n\t\t\t\t\tpattern.style.stroke = pattern.style.stroke\n\t\t\t\t\tpattern.removeAttribute('filter')\n\t\t\t\t\tpattern.setAttribute('filter', 'url(#invert)')\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (replace) {\n\t\t\t\twindow.history.replaceState(params, '', url)\n\t\t\t} else {\n\t\t\t\twindow.history.pushState(params, '', url)\n\t\t\t}\n\t\t} else {\n\t\t\t// use URL hash for IE8\n\t\t\twindow.location.hash = '?' + strParams\n\t\t\t// inhibit next onhashchange that just added itself\n\t\t\t// to the event queue\n\t\t\tthis._cancelPop = true\n\t\t}\n\t},\n\n\t/**\n\t * Push the current URL parameters to the history stack\n\t * and change the visible URL.\n\t * Note: this includes a workaround for IE8/IE9 that uses\n\t * the hash part instead of the search part.\n\t *\n\t * @param {object | string} params to append to the URL, can be either a string or a map\n\t * @param {string} [url] URL to be used, otherwise the current URL will be used, using the params as query string\n\t */\n\tpushState(params, url) {\n\t\tthis._pushState(params, url, false)\n\t},\n\n\t/**\n\t * Push the current URL parameters to the history stack\n\t * and change the visible URL.\n\t * Note: this includes a workaround for IE8/IE9 that uses\n\t * the hash part instead of the search part.\n\t *\n\t * @param {object | string} params to append to the URL, can be either a string\n\t * or a map\n\t * @param {string} [url] URL to be used, otherwise the current URL will be used,\n\t * using the params as query string\n\t */\n\treplaceState(params, url) {\n\t\tthis._pushState(params, url, true)\n\t},\n\n\t/**\n\t * Add a popstate handler\n\t *\n\t * @param {Function} handler handler\n\t */\n\taddOnPopStateHandler(handler) {\n\t\tthis._handlers.push(handler)\n\t},\n\n\t/**\n\t * Parse a query string from the hash part of the URL.\n\t * (workaround for IE8 / IE9)\n\t *\n\t * @return {string}\n\t */\n\t_parseHashQuery() {\n\t\tconst hash = window.location.hash\n\t\tconst pos = hash.indexOf('?')\n\t\tif (pos >= 0) {\n\t\t\treturn hash.substr(pos + 1)\n\t\t}\n\t\tif (hash.length) {\n\t\t\t// remove hash sign\n\t\t\treturn hash.substr(1)\n\t\t}\n\t\treturn ''\n\t},\n\n\t_decodeQuery(query) {\n\t\treturn query.replace(/\\+/g, ' ')\n\t},\n\n\t/**\n\t * Parse the query/search part of the URL.\n\t * Also try and parse it from the URL hash (for IE8)\n\t *\n\t * @return {object} map of parameters\n\t */\n\tparseUrlQuery() {\n\t\tconst query = this._parseHashQuery()\n\t\tlet params\n\t\t// try and parse from URL hash first\n\t\tif (query) {\n\t\t\tparams = OC.parseQueryString(this._decodeQuery(query))\n\t\t}\n\t\t// else read from query attributes\n\t\tparams = _.extend(params || {}, OC.parseQueryString(this._decodeQuery(location.search)))\n\t\treturn params || {}\n\t},\n\n\t_onPopState(e) {\n\t\tif (this._cancelPop) {\n\t\t\tthis._cancelPop = false\n\t\t\treturn\n\t\t}\n\t\tlet params\n\t\tif (!this._handlers.length) {\n\t\t\treturn\n\t\t}\n\t\tparams = (e && e.state)\n\t\tif (_.isString(params)) {\n\t\t\tparams = OC.parseQueryString(params)\n\t\t} else if (!params) {\n\t\t\tparams = this.parseUrlQuery() || {}\n\t\t}\n\t\tfor (let i = 0; i < this._handlers.length; i++) {\n\t\t\tthis._handlers[i](params)\n\t\t}\n\t},\n}\n","/**\n * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport moment from 'moment'\n\nimport History from './util-history.js'\nimport OC from './index.js'\nimport { formatFileSize as humanFileSize } from '@nextcloud/files'\n\n/**\n * @param {any} t -\n */\nfunction chunkify(t) {\n\t// Adapted from http://my.opera.com/GreyWyvern/blog/show.dml/1671288\n\tconst tz = []\n\tlet x = 0\n\tlet y = -1\n\tlet n = 0\n\tlet c\n\n\twhile (x < t.length) {\n\t\tc = t.charAt(x)\n\t\t// only include the dot in strings\n\t\tconst m = ((!n && c === '.') || (c >= '0' && c <= '9'))\n\t\tif (m !== n) {\n\t\t\t// next chunk\n\t\t\ty++\n\t\t\ttz[y] = ''\n\t\t\tn = m\n\t\t}\n\t\ttz[y] += c\n\t\tx++\n\t}\n\treturn tz\n}\n\n/**\n * Utility functions\n *\n * @namespace OC.Util\n */\nexport default {\n\n\tHistory,\n\n\t/**\n\t * @deprecated use https://nextcloud.github.io/nextcloud-files/functions/formatFileSize.html\n\t */\n\thumanFileSize,\n\n\t/**\n\t * Returns a file size in bytes from a humanly readable string\n\t * Makes 2kB to 2048.\n\t * Inspired by computerFileSize in helper.php\n\t *\n\t * @param {string} string file size in human-readable format\n\t * @return {number} or null if string could not be parsed\n\t *\n\t *\n\t */\n\tcomputerFileSize(string) {\n\t\tif (typeof string !== 'string') {\n\t\t\treturn null\n\t\t}\n\n\t\tconst s = string.toLowerCase().trim()\n\t\tlet bytes = null\n\n\t\tconst bytesArray = {\n\t\t\tb: 1,\n\t\t\tk: 1024,\n\t\t\tkb: 1024,\n\t\t\tmb: 1024 * 1024,\n\t\t\tm: 1024 * 1024,\n\t\t\tgb: 1024 * 1024 * 1024,\n\t\t\tg: 1024 * 1024 * 1024,\n\t\t\ttb: 1024 * 1024 * 1024 * 1024,\n\t\t\tt: 1024 * 1024 * 1024 * 1024,\n\t\t\tpb: 1024 * 1024 * 1024 * 1024 * 1024,\n\t\t\tp: 1024 * 1024 * 1024 * 1024 * 1024,\n\t\t}\n\n\t\tconst matches = s.match(/^[\\s+]?([0-9]*)(\\.([0-9]+))?( +)?([kmgtp]?b?)$/i)\n\t\tif (matches !== null) {\n\t\t\tbytes = parseFloat(s)\n\t\t\tif (!isFinite(bytes)) {\n\t\t\t\treturn null\n\t\t\t}\n\t\t} else {\n\t\t\treturn null\n\t\t}\n\t\tif (matches[5]) {\n\t\t\tbytes = bytes * bytesArray[matches[5]]\n\t\t}\n\n\t\tbytes = Math.round(bytes)\n\t\treturn bytes\n\t},\n\n\t/**\n\t * @param {string|number} timestamp timestamp\n\t * @param {string} format date format, see momentjs docs\n\t * @return {string} timestamp formatted as requested\n\t */\n\tformatDate(timestamp, format) {\n\t\tif (window.TESTING === undefined) {\n\t\t\tOC.debug && console.warn('OC.Util.formatDate is deprecated and will be removed in Nextcloud 21. See @nextcloud/moment')\n\t\t}\n\t\tformat = format || 'LLL'\n\t\treturn moment(timestamp).format(format)\n\t},\n\n\t/**\n\t * @param {string|number} timestamp timestamp\n\t * @return {string} human readable difference from now\n\t */\n\trelativeModifiedDate(timestamp) {\n\t\tif (window.TESTING === undefined) {\n\t\t\tOC.debug && console.warn('OC.Util.relativeModifiedDate is deprecated and will be removed in Nextcloud 21. See @nextcloud/moment')\n\t\t}\n\t\tconst diff = moment().diff(moment(timestamp))\n\t\tif (diff >= 0 && diff < 45000) {\n\t\t\treturn t('core', 'seconds ago')\n\t\t}\n\t\treturn moment(timestamp).fromNow()\n\t},\n\n\t/**\n\t * Returns the width of a generic browser scrollbar\n\t *\n\t * @return {number} width of scrollbar\n\t */\n\tgetScrollBarWidth() {\n\t\tif (this._scrollBarWidth) {\n\t\t\treturn this._scrollBarWidth\n\t\t}\n\n\t\tconst inner = document.createElement('p')\n\t\tinner.style.width = '100%'\n\t\tinner.style.height = '200px'\n\n\t\tconst outer = document.createElement('div')\n\t\touter.style.position = 'absolute'\n\t\touter.style.top = '0px'\n\t\touter.style.left = '0px'\n\t\touter.style.visibility = 'hidden'\n\t\touter.style.width = '200px'\n\t\touter.style.height = '150px'\n\t\touter.style.overflow = 'hidden'\n\t\touter.appendChild(inner)\n\n\t\tdocument.body.appendChild(outer)\n\t\tconst w1 = inner.offsetWidth\n\t\touter.style.overflow = 'scroll'\n\t\tlet w2 = inner.offsetWidth\n\t\tif (w1 === w2) {\n\t\t\tw2 = outer.clientWidth\n\t\t}\n\n\t\tdocument.body.removeChild(outer)\n\n\t\tthis._scrollBarWidth = (w1 - w2)\n\n\t\treturn this._scrollBarWidth\n\t},\n\n\t/**\n\t * Remove the time component from a given date\n\t *\n\t * @param {Date} date date\n\t * @return {Date} date with stripped time\n\t */\n\tstripTime(date) {\n\t\t// FIXME: likely to break when crossing DST\n\t\t// would be better to use a library like momentJS\n\t\treturn new Date(date.getFullYear(), date.getMonth(), date.getDate())\n\t},\n\n\t/**\n\t * Compare two strings to provide a natural sort\n\t *\n\t * @param {string} a first string to compare\n\t * @param {string} b second string to compare\n\t * @return {number} -1 if b comes before a, 1 if a comes before b\n\t * or 0 if the strings are identical\n\t */\n\tnaturalSortCompare(a, b) {\n\t\tlet x\n\t\tconst aa = chunkify(a)\n\t\tconst bb = chunkify(b)\n\n\t\tfor (x = 0; aa[x] && bb[x]; x++) {\n\t\t\tif (aa[x] !== bb[x]) {\n\t\t\t\tconst aNum = Number(aa[x]); const bNum = Number(bb[x])\n\t\t\t\t// note: == is correct here\n\t\t\t\t/* eslint-disable-next-line */\n\t\t\t\tif (aNum == aa[x] && bNum == bb[x]) {\n\t\t\t\t\treturn aNum - bNum\n\t\t\t\t} else {\n\t\t\t\t\t// Note: This locale setting isn't supported by all browsers but for the ones\n\t\t\t\t\t// that do there will be more consistency between client-server sorting\n\t\t\t\t\treturn aa[x].localeCompare(bb[x], OC.getLanguage())\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn aa.length - bb.length\n\t},\n\n\t/**\n\t * Calls the callback in a given interval until it returns true\n\t *\n\t * @param {Function} callback function to call on success\n\t * @param {number} interval in milliseconds\n\t */\n\twaitFor(callback, interval) {\n\t\tconst internalCallback = function() {\n\t\t\tif (callback() !== true) {\n\t\t\t\tsetTimeout(internalCallback, interval)\n\t\t\t}\n\t\t}\n\n\t\tinternalCallback()\n\t},\n\n\t/**\n\t * Checks if a cookie with the given name is present and is set to the provided value.\n\t *\n\t * @param {string} name name of the cookie\n\t * @param {string} value value of the cookie\n\t * @return {boolean} true if the cookie with the given name has the given value\n\t */\n\tisCookieSetToValue(name, value) {\n\t\tconst cookies = document.cookie.split(';')\n\t\tfor (let i = 0; i < cookies.length; i++) {\n\t\t\tconst cookie = cookies[i].split('=')\n\t\t\tif (cookie[0].trim() === name && cookie[1].trim() === value) {\n\t\t\t\treturn true\n\t\t\t}\n\t\t}\n\t\treturn false\n\t},\n}\n","/**\n * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nconst base = window._oc_debug\n\nexport const debug = base\n","/**\n * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nlet webroot = window._oc_webroot\n\nif (typeof webroot === 'undefined') {\n\twebroot = location.pathname\n\tconst pos = webroot.indexOf('/index.php/')\n\tif (pos !== -1) {\n\t\twebroot = webroot.substr(0, pos)\n\t} else {\n\t\twebroot = webroot.substr(0, webroot.lastIndexOf('/'))\n\t}\n}\n\nexport default webroot\n","/**\n * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport { subscribe } from '@nextcloud/event-bus'\n\nimport {\n\tajaxConnectionLostHandler,\n\tprocessAjaxError,\n\tregisterXHRForErrorProcessing,\n} from './xhr-error.js'\nimport Apps from './apps.js'\nimport { AppConfig, appConfig } from './appconfig.js'\nimport appswebroots from './appswebroots.js'\nimport Backbone from './backbone.js'\nimport {\n\tbasename,\n\tdirname,\n\tencodePath,\n\tisSamePath,\n\tjoinPaths,\n} from '@nextcloud/paths'\nimport {\n\tbuild as buildQueryString,\n\tparse as parseQueryString,\n} from './query-string.js'\nimport Config from './config.js'\nimport {\n\tcoreApps,\n\tmenuSpeed,\n\tPERMISSION_ALL,\n\tPERMISSION_CREATE,\n\tPERMISSION_DELETE,\n\tPERMISSION_NONE,\n\tPERMISSION_READ,\n\tPERMISSION_SHARE,\n\tPERMISSION_UPDATE,\n\tTAG_FAVORITE,\n} from './constants.js'\nimport { currentUser, getCurrentUser } from './currentuser.js'\nimport Dialogs from './dialogs.js'\nimport EventSource from './eventsource.js'\nimport { get, set } from './get_set.js'\nimport { getCapabilities } from './capabilities.js'\nimport {\n\tgetHost,\n\tgetHostName,\n\tgetPort,\n\tgetProtocol,\n} from './host.js'\nimport {\n\tgetToken as getRequestToken,\n} from './requesttoken.js'\nimport {\n\thideMenus,\n\tregisterMenu,\n\tshowMenu,\n\tunregisterMenu,\n} from './menu.js'\nimport { isUserAdmin } from './admin.js'\nimport L10N from './l10n.js'\nimport {\n\tgetCanonicalLocale,\n\tgetLanguage,\n\tgetLocale,\n} from '@nextcloud/l10n'\n\nimport {\n\tgenerateUrl,\n\tgenerateFilePath,\n\tgenerateOcsUrl,\n\tgenerateRemoteUrl,\n\tgetRootUrl,\n\timagePath,\n\tlinkTo,\n} from '@nextcloud/router'\n\nimport {\n\tlinkToRemoteBase,\n} from './routing.js'\nimport msg from './msg.js'\nimport Notification from './notification.js'\nimport PasswordConfirmation from './password-confirmation.js'\nimport Plugins from './plugins.js'\nimport { theme } from './theme.js'\nimport Util from './util.js'\nimport { debug } from './debug.js'\nimport { redirect, reload } from './navigation.js'\nimport webroot from './webroot.js'\n\n/** @namespace OC */\nexport default {\n\t/*\n\t * Constants\n\t */\n\tcoreApps,\n\tmenuSpeed,\n\tPERMISSION_ALL,\n\tPERMISSION_CREATE,\n\tPERMISSION_DELETE,\n\tPERMISSION_NONE,\n\tPERMISSION_READ,\n\tPERMISSION_SHARE,\n\tPERMISSION_UPDATE,\n\tTAG_FAVORITE,\n\n\t/*\n\t * Deprecated helpers to be removed\n\t */\n\t/**\n\t * Check if a user file is allowed to be handled.\n\t *\n\t * @param {string} file to check\n\t * @return {boolean}\n\t * @deprecated 17.0.0\n\t */\n\tfileIsBlacklisted: file => !!(file.match(Config.blacklist_files_regex)),\n\tApps,\n\tAppConfig,\n\tappConfig,\n\tappswebroots,\n\tBackbone,\n\tconfig: Config,\n\t/**\n\t * Currently logged in user or null if none\n\t *\n\t * @type {string}\n\t * @deprecated use `getCurrentUser` from https://www.npmjs.com/package/@nextcloud/auth\n\t */\n\tcurrentUser,\n\tdialogs: Dialogs,\n\tEventSource,\n\t/**\n\t * Returns the currently logged in user or null if there is no logged in\n\t * user (public page mode)\n\t *\n\t * @since 9.0.0\n\t * @deprecated 19.0.0 use `getCurrentUser` from https://www.npmjs.com/package/@nextcloud/auth\n\t */\n\tgetCurrentUser,\n\tisUserAdmin,\n\tL10N,\n\n\t/**\n\t * Ajax error handlers\n\t *\n\t * @todo remove from here and keep internally -> requires new tests\n\t */\n\t_ajaxConnectionLostHandler: ajaxConnectionLostHandler,\n\t_processAjaxError: processAjaxError,\n\tregisterXHRForErrorProcessing,\n\n\t/**\n\t * Capabilities\n\t *\n\t * @type {Array}\n\t * @deprecated 20.0.0 use @nextcloud/capabilities instead\n\t */\n\tgetCapabilities,\n\n\t/*\n\t * Legacy menu helpers\n\t */\n\thideMenus,\n\tregisterMenu,\n\tshowMenu,\n\tunregisterMenu,\n\n\t/*\n\t * Path helpers\n\t */\n\t/**\n\t * @deprecated 18.0.0 use https://www.npmjs.com/package/@nextcloud/paths\n\t */\n\tbasename,\n\t/**\n\t * @deprecated 18.0.0 use https://www.npmjs.com/package/@nextcloud/paths\n\t */\n\tencodePath,\n\t/**\n\t * @deprecated 18.0.0 use https://www.npmjs.com/package/@nextcloud/paths\n\t */\n\tdirname,\n\t/**\n\t * @deprecated 18.0.0 use https://www.npmjs.com/package/@nextcloud/paths\n\t */\n\tisSamePath,\n\t/**\n\t * @deprecated 18.0.0 use https://www.npmjs.com/package/@nextcloud/paths\n\t */\n\tjoinPaths,\n\n\t/**\n\t * Host (url) helpers\n\t */\n\tgetHost,\n\tgetHostName,\n\tgetPort,\n\tgetProtocol,\n\n\t/**\n\t * @deprecated 20.0.0 use `getCanonicalLocale` from https://www.npmjs.com/package/@nextcloud/l10n\n\t */\n\tgetCanonicalLocale,\n\t/**\n\t * @deprecated 26.0.0 use `getLocale` from https://www.npmjs.com/package/@nextcloud/l10n\n\t */\n\tgetLocale,\n\t/**\n\t * @deprecated 26.0.0 use `getLanguage` from https://www.npmjs.com/package/@nextcloud/l10n\n\t */\n\tgetLanguage,\n\n\t/**\n\t * Query string helpers\n\t */\n\tbuildQueryString,\n\tparseQueryString,\n\n\tmsg,\n\tNotification,\n\t/**\n\t * @deprecated 28.0.0 use methods from '@nextcloud/password-confirmation'\n\t */\n\tPasswordConfirmation,\n\tPlugins,\n\ttheme,\n\tUtil,\n\tdebug,\n\t/**\n\t * @deprecated 19.0.0 use `generateFilePath` from https://www.npmjs.com/package/@nextcloud/router\n\t */\n\tfilePath: generateFilePath,\n\t/**\n\t * @deprecated 19.0.0 use `generateUrl` from https://www.npmjs.com/package/@nextcloud/router\n\t */\n\tgenerateUrl,\n\t/**\n\t * @deprecated 19.0.0 use https://lodash.com/docs#get\n\t */\n\tget: get(window),\n\t/**\n\t * @deprecated 19.0.0 use https://lodash.com/docs#set\n\t */\n\tset: set(window),\n\t/**\n\t * @deprecated 19.0.0 use `getRootUrl` from https://www.npmjs.com/package/@nextcloud/router\n\t */\n\tgetRootPath: getRootUrl,\n\t/**\n\t * @deprecated 19.0.0 use `imagePath` from https://www.npmjs.com/package/@nextcloud/router\n\t */\n\timagePath,\n\tredirect,\n\treload,\n\trequestToken: getRequestToken(),\n\t/**\n\t * @deprecated 19.0.0 use `linkTo` from https://www.npmjs.com/package/@nextcloud/router\n\t */\n\tlinkTo,\n\t/**\n\t * @param {string} service service name\n\t * @param {number} version OCS API version\n\t * @return {string} OCS API base path\n\t * @deprecated 19.0.0 use `generateOcsUrl` from https://www.npmjs.com/package/@nextcloud/router\n\t */\n\tlinkToOCS: (service, version) => {\n\t\treturn generateOcsUrl(service, {}, {\n\t\t\tocsVersion: version || 1,\n\t\t}) + '/'\n\t},\n\t/**\n\t * @deprecated 19.0.0 use `generateRemoteUrl` from https://www.npmjs.com/package/@nextcloud/router\n\t */\n\tlinkToRemote: generateRemoteUrl,\n\tlinkToRemoteBase,\n\t/**\n\t * Relative path to Nextcloud root.\n\t * For example: \"/nextcloud\"\n\t *\n\t * @type {string}\n\t *\n\t * @deprecated 19.0.0 use `getRootUrl` from https://www.npmjs.com/package/@nextcloud/router\n\t * @see OC#getRootPath\n\t */\n\twebroot,\n}\n\n// Keep the request token prop in sync\nsubscribe('csrf-token-update', e => {\n\tOC.requestToken = e.token\n\n\t// Logging might help debug (Sentry) issues\n\tconsole.info('OC.requestToken changed', e.token)\n})\n","/**\n * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport { getCapabilities as realGetCapabilities } from '@nextcloud/capabilities'\n\n/**\n * Returns the capabilities\n *\n * @return {Array} capabilities\n *\n * @since 14.0.0\n */\nexport const getCapabilities = () => {\n\tOC.debug && console.warn('OC.getCapabilities is deprecated and will be removed in Nextcloud 21. See @nextcloud/capabilities')\n\treturn realGetCapabilities()\n}\n","/**\n * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nexport const getProtocol = () => window.location.protocol.split(':')[0]\n\n/**\n * Returns the host used to access this Nextcloud instance\n * Host is sometimes the same as the hostname but now always.\n *\n * Examples:\n * http://example.com => example.com\n * https://example.com => example.com\n * http://example.com:8080 => example.com:8080\n *\n * @return {string} host\n *\n * @since 8.2.0\n * @deprecated 17.0.0 use window.location.host directly\n */\nexport const getHost = () => window.location.host\n\n/**\n * Returns the hostname used to access this Nextcloud instance\n * The hostname is always stripped of the port\n *\n * @return {string} hostname\n * @since 9.0.0\n * @deprecated 17.0.0 use window.location.hostname directly\n */\nexport const getHostName = () => window.location.hostname\n\n/**\n * Returns the port number used to access this Nextcloud instance\n *\n * @return {number} port number\n *\n * @since 8.2.0\n * @deprecated 17.0.0 use window.location.port directly\n */\nexport const getPort = () => window.location.port\n","/**\n * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nexport const get = context => name => {\n\tconst namespaces = name.split('.')\n\tconst tail = namespaces.pop()\n\n\tfor (let i = 0; i < namespaces.length; i++) {\n\t\tcontext = context[namespaces[i]]\n\t\tif (!context) {\n\t\t\treturn false\n\t\t}\n\t}\n\treturn context[tail]\n}\n\n/**\n * Set a variable by name\n *\n * @param {string} context context\n * @return {Function} setter\n * @deprecated 19.0.0 use https://lodash.com/docs#set\n */\nexport const set = context => (name, value) => {\n\tconst namespaces = name.split('.')\n\tconst tail = namespaces.pop()\n\n\tfor (let i = 0; i < namespaces.length; i++) {\n\t\tif (!context[namespaces[i]]) {\n\t\t\tcontext[namespaces[i]] = {}\n\t\t}\n\t\tcontext = context[namespaces[i]]\n\t}\n\tcontext[tail] = value\n\treturn value\n}\n","/**\n * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nexport const redirect = targetURL => { window.location = targetURL }\n\n/**\n * Reloads the current page\n *\n * @deprecated 17.0.0 use window.location.reload directly\n */\nexport const reload = () => { window.location.reload() }\n","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"guest-box login-box\"},[(!_vm.hideLoginForm || _vm.directLogin)?[_c('transition',{attrs:{\"name\":\"fade\",\"mode\":\"out-in\"}},[(!_vm.passwordlessLogin && !_vm.resetPassword && _vm.resetPasswordTarget === '')?_c('div',[_c('LoginForm',{attrs:{\"username\":_vm.user,\"redirect-url\":_vm.redirectUrl,\"direct-login\":_vm.directLogin,\"messages\":_vm.messages,\"errors\":_vm.errors,\"throttle-delay\":_vm.throttleDelay,\"auto-complete-allowed\":_vm.autoCompleteAllowed,\"email-states\":_vm.emailStates},on:{\"update:username\":function($event){_vm.user=$event},\"submit\":function($event){_vm.loading = true}}}),_vm._v(\" \"),(_vm.canResetPassword && _vm.resetPasswordLink !== '')?_c('a',{staticClass:\"login-box__link\",attrs:{\"id\":\"lost-password\",\"href\":_vm.resetPasswordLink}},[_vm._v(\"\\n\\t\\t\\t\\t\\t\"+_vm._s(_vm.t('core', 'Forgot password?'))+\"\\n\\t\\t\\t\\t\")]):(_vm.canResetPassword && !_vm.resetPassword)?_c('a',{staticClass:\"login-box__link\",attrs:{\"id\":\"lost-password\",\"href\":_vm.resetPasswordLink},on:{\"click\":function($event){$event.preventDefault();_vm.resetPassword = true}}},[_vm._v(\"\\n\\t\\t\\t\\t\\t\"+_vm._s(_vm.t('core', 'Forgot password?'))+\"\\n\\t\\t\\t\\t\")]):_vm._e(),_vm._v(\" \"),(_vm.hasPasswordless)?[(_vm.countAlternativeLogins)?_c('div',{staticClass:\"alternative-logins\"},[(_vm.hasPasswordless)?_c('a',{staticClass:\"button\",class:{ 'single-alt-login-option': _vm.countAlternativeLogins },attrs:{\"href\":\"#\"},on:{\"click\":function($event){$event.preventDefault();_vm.passwordlessLogin = true}}},[_vm._v(\"\\n\\t\\t\\t\\t\\t\\t\\t\"+_vm._s(_vm.t('core', 'Log in with a device'))+\"\\n\\t\\t\\t\\t\\t\\t\")]):_vm._e()]):_c('a',{attrs:{\"href\":\"#\"},on:{\"click\":function($event){$event.preventDefault();_vm.passwordlessLogin = true}}},[_vm._v(\"\\n\\t\\t\\t\\t\\t\\t\"+_vm._s(_vm.t('core', 'Log in with a device'))+\"\\n\\t\\t\\t\\t\\t\")])]:_vm._e()],2):(!_vm.loading && _vm.passwordlessLogin)?_c('div',{key:\"reset-pw-less\",staticClass:\"login-additional login-passwordless\"},[_c('PasswordLessLoginForm',{attrs:{\"username\":_vm.user,\"redirect-url\":_vm.redirectUrl,\"auto-complete-allowed\":_vm.autoCompleteAllowed,\"is-https\":_vm.isHttps,\"is-localhost\":_vm.isLocalhost},on:{\"update:username\":function($event){_vm.user=$event},\"submit\":function($event){_vm.loading = true}}}),_vm._v(\" \"),_c('NcButton',{attrs:{\"type\":\"tertiary\",\"aria-label\":_vm.t('core', 'Back to login form'),\"wide\":true},on:{\"click\":function($event){_vm.passwordlessLogin = false}}},[_vm._v(\"\\n\\t\\t\\t\\t\\t\"+_vm._s(_vm.t('core', 'Back'))+\"\\n\\t\\t\\t\\t\")])],1):(!_vm.loading && _vm.canResetPassword)?_c('div',{key:\"reset-can-reset\",staticClass:\"login-additional\"},[_c('div',{staticClass:\"lost-password-container\"},[(_vm.resetPassword)?_c('ResetPassword',{attrs:{\"username\":_vm.user,\"reset-password-link\":_vm.resetPasswordLink},on:{\"update:username\":function($event){_vm.user=$event},\"abort\":function($event){_vm.resetPassword = false}}}):_vm._e()],1)]):(_vm.resetPasswordTarget !== '')?_c('div',[_c('UpdatePassword',{attrs:{\"username\":_vm.user,\"reset-password-target\":_vm.resetPasswordTarget},on:{\"update:username\":function($event){_vm.user=$event},\"done\":_vm.passwordResetFinished}})],1):_vm._e()])]:[_c('transition',{attrs:{\"name\":\"fade\",\"mode\":\"out-in\"}},[_c('NcNoteCard',{attrs:{\"type\":\"info\",\"title\":_vm.t('core', 'Login form is disabled.')}},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('core', 'The Nextcloud login form is disabled. Use another login option if available or contact your administration.'))+\"\\n\\t\\t\\t\")])],1)],_vm._v(\" \"),_c('div',{staticClass:\"alternative-logins\",attrs:{\"id\":\"alternative-logins\"}},_vm._l((_vm.alternativeLogins),function(alternativeLogin,index){return _c('NcButton',{key:index,class:[alternativeLogin.class],attrs:{\"type\":\"secondary\",\"wide\":true,\"role\":\"link\",\"href\":alternativeLogin.href}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(alternativeLogin.name)+\"\\n\\t\\t\")])}),1)],2)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","const token = '%[a-f0-9]{2}';\nconst singleMatcher = new RegExp('(' + token + ')|([^%]+?)', 'gi');\nconst multiMatcher = new RegExp('(' + token + ')+', 'gi');\n\nfunction decodeComponents(components, split) {\n\ttry {\n\t\t// Try to decode the entire string first\n\t\treturn [decodeURIComponent(components.join(''))];\n\t} catch {\n\t\t// Do nothing\n\t}\n\n\tif (components.length === 1) {\n\t\treturn components;\n\t}\n\n\tsplit = split || 1;\n\n\t// Split the array in 2 parts\n\tconst left = components.slice(0, split);\n\tconst right = components.slice(split);\n\n\treturn Array.prototype.concat.call([], decodeComponents(left), decodeComponents(right));\n}\n\nfunction decode(input) {\n\ttry {\n\t\treturn decodeURIComponent(input);\n\t} catch {\n\t\tlet tokens = input.match(singleMatcher) || [];\n\n\t\tfor (let i = 1; i < tokens.length; i++) {\n\t\t\tinput = decodeComponents(tokens, i).join('');\n\n\t\t\ttokens = input.match(singleMatcher) || [];\n\t\t}\n\n\t\treturn input;\n\t}\n}\n\nfunction customDecodeURIComponent(input) {\n\t// Keep track of all the replacements and prefill the map with the `BOM`\n\tconst replaceMap = {\n\t\t'%FE%FF': '\\uFFFD\\uFFFD',\n\t\t'%FF%FE': '\\uFFFD\\uFFFD',\n\t};\n\n\tlet match = multiMatcher.exec(input);\n\twhile (match) {\n\t\ttry {\n\t\t\t// Decode as big chunks as possible\n\t\t\treplaceMap[match[0]] = decodeURIComponent(match[0]);\n\t\t} catch {\n\t\t\tconst result = decode(match[0]);\n\n\t\t\tif (result !== match[0]) {\n\t\t\t\treplaceMap[match[0]] = result;\n\t\t\t}\n\t\t}\n\n\t\tmatch = multiMatcher.exec(input);\n\t}\n\n\t// Add `%C2` at the end of the map to make sure it does not replace the combinator before everything else\n\treplaceMap['%C2'] = '\\uFFFD';\n\n\tconst entries = Object.keys(replaceMap);\n\n\tfor (const key of entries) {\n\t\t// Replace all decoded components\n\t\tinput = input.replace(new RegExp(key, 'g'), replaceMap[key]);\n\t}\n\n\treturn input;\n}\n\nexport default function decodeUriComponent(encodedURI) {\n\tif (typeof encodedURI !== 'string') {\n\t\tthrow new TypeError('Expected `encodedURI` to be of type `string`, got `' + typeof encodedURI + '`');\n\t}\n\n\ttry {\n\t\t// Try the built in decoder first\n\t\treturn decodeURIComponent(encodedURI);\n\t} catch {\n\t\t// Fallback to a more advanced decoder\n\t\treturn customDecodeURIComponent(encodedURI);\n\t}\n}\n","export default function splitOnFirst(string, separator) {\n\tif (!(typeof string === 'string' && typeof separator === 'string')) {\n\t\tthrow new TypeError('Expected the arguments to be of type `string`');\n\t}\n\n\tif (string === '' || separator === '') {\n\t\treturn [];\n\t}\n\n\tconst separatorIndex = string.indexOf(separator);\n\n\tif (separatorIndex === -1) {\n\t\treturn [];\n\t}\n\n\treturn [\n\t\tstring.slice(0, separatorIndex),\n\t\tstring.slice(separatorIndex + separator.length)\n\t];\n}\n","export function includeKeys(object, predicate) {\n\tconst result = {};\n\n\tif (Array.isArray(predicate)) {\n\t\tfor (const key of predicate) {\n\t\t\tconst descriptor = Object.getOwnPropertyDescriptor(object, key);\n\t\t\tif (descriptor?.enumerable) {\n\t\t\t\tObject.defineProperty(result, key, descriptor);\n\t\t\t}\n\t\t}\n\t} else {\n\t\t// `Reflect.ownKeys()` is required to retrieve symbol properties\n\t\tfor (const key of Reflect.ownKeys(object)) {\n\t\t\tconst descriptor = Object.getOwnPropertyDescriptor(object, key);\n\t\t\tif (descriptor.enumerable) {\n\t\t\t\tconst value = object[key];\n\t\t\t\tif (predicate(key, value, object)) {\n\t\t\t\t\tObject.defineProperty(result, key, descriptor);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn result;\n}\n\nexport function excludeKeys(object, predicate) {\n\tif (Array.isArray(predicate)) {\n\t\tconst set = new Set(predicate);\n\t\treturn includeKeys(object, key => !set.has(key));\n\t}\n\n\treturn includeKeys(object, (key, value, object) => !predicate(key, value, object));\n}\n","import decodeComponent from 'decode-uri-component';\nimport splitOnFirst from 'split-on-first';\nimport {includeKeys} from 'filter-obj';\n\nconst isNullOrUndefined = value => value === null || value === undefined;\n\n// eslint-disable-next-line unicorn/prefer-code-point\nconst strictUriEncode = string => encodeURIComponent(string).replaceAll(/[!'()*]/g, x => `%${x.charCodeAt(0).toString(16).toUpperCase()}`);\n\nconst encodeFragmentIdentifier = Symbol('encodeFragmentIdentifier');\n\nfunction encoderForArrayFormat(options) {\n\tswitch (options.arrayFormat) {\n\t\tcase 'index': {\n\t\t\treturn key => (result, value) => {\n\t\t\t\tconst index = result.length;\n\n\t\t\t\tif (\n\t\t\t\t\tvalue === undefined\n\t\t\t\t\t|| (options.skipNull && value === null)\n\t\t\t\t\t|| (options.skipEmptyString && value === '')\n\t\t\t\t) {\n\t\t\t\t\treturn result;\n\t\t\t\t}\n\n\t\t\t\tif (value === null) {\n\t\t\t\t\treturn [\n\t\t\t\t\t\t...result, [encode(key, options), '[', index, ']'].join(''),\n\t\t\t\t\t];\n\t\t\t\t}\n\n\t\t\t\treturn [\n\t\t\t\t\t...result,\n\t\t\t\t\t[encode(key, options), '[', encode(index, options), ']=', encode(value, options)].join(''),\n\t\t\t\t];\n\t\t\t};\n\t\t}\n\n\t\tcase 'bracket': {\n\t\t\treturn key => (result, value) => {\n\t\t\t\tif (\n\t\t\t\t\tvalue === undefined\n\t\t\t\t\t|| (options.skipNull && value === null)\n\t\t\t\t\t|| (options.skipEmptyString && value === '')\n\t\t\t\t) {\n\t\t\t\t\treturn result;\n\t\t\t\t}\n\n\t\t\t\tif (value === null) {\n\t\t\t\t\treturn [\n\t\t\t\t\t\t...result,\n\t\t\t\t\t\t[encode(key, options), '[]'].join(''),\n\t\t\t\t\t];\n\t\t\t\t}\n\n\t\t\t\treturn [\n\t\t\t\t\t...result,\n\t\t\t\t\t[encode(key, options), '[]=', encode(value, options)].join(''),\n\t\t\t\t];\n\t\t\t};\n\t\t}\n\n\t\tcase 'colon-list-separator': {\n\t\t\treturn key => (result, value) => {\n\t\t\t\tif (\n\t\t\t\t\tvalue === undefined\n\t\t\t\t\t|| (options.skipNull && value === null)\n\t\t\t\t\t|| (options.skipEmptyString && value === '')\n\t\t\t\t) {\n\t\t\t\t\treturn result;\n\t\t\t\t}\n\n\t\t\t\tif (value === null) {\n\t\t\t\t\treturn [\n\t\t\t\t\t\t...result,\n\t\t\t\t\t\t[encode(key, options), ':list='].join(''),\n\t\t\t\t\t];\n\t\t\t\t}\n\n\t\t\t\treturn [\n\t\t\t\t\t...result,\n\t\t\t\t\t[encode(key, options), ':list=', encode(value, options)].join(''),\n\t\t\t\t];\n\t\t\t};\n\t\t}\n\n\t\tcase 'comma':\n\t\tcase 'separator':\n\t\tcase 'bracket-separator': {\n\t\t\tconst keyValueSeparator = options.arrayFormat === 'bracket-separator'\n\t\t\t\t? '[]='\n\t\t\t\t: '=';\n\n\t\t\treturn key => (result, value) => {\n\t\t\t\tif (\n\t\t\t\t\tvalue === undefined\n\t\t\t\t\t|| (options.skipNull && value === null)\n\t\t\t\t\t|| (options.skipEmptyString && value === '')\n\t\t\t\t) {\n\t\t\t\t\treturn result;\n\t\t\t\t}\n\n\t\t\t\t// Translate null to an empty string so that it doesn't serialize as 'null'\n\t\t\t\tvalue = value === null ? '' : value;\n\n\t\t\t\tif (result.length === 0) {\n\t\t\t\t\treturn [[encode(key, options), keyValueSeparator, encode(value, options)].join('')];\n\t\t\t\t}\n\n\t\t\t\treturn [[result, encode(value, options)].join(options.arrayFormatSeparator)];\n\t\t\t};\n\t\t}\n\n\t\tdefault: {\n\t\t\treturn key => (result, value) => {\n\t\t\t\tif (\n\t\t\t\t\tvalue === undefined\n\t\t\t\t\t|| (options.skipNull && value === null)\n\t\t\t\t\t|| (options.skipEmptyString && value === '')\n\t\t\t\t) {\n\t\t\t\t\treturn result;\n\t\t\t\t}\n\n\t\t\t\tif (value === null) {\n\t\t\t\t\treturn [\n\t\t\t\t\t\t...result,\n\t\t\t\t\t\tencode(key, options),\n\t\t\t\t\t];\n\t\t\t\t}\n\n\t\t\t\treturn [\n\t\t\t\t\t...result,\n\t\t\t\t\t[encode(key, options), '=', encode(value, options)].join(''),\n\t\t\t\t];\n\t\t\t};\n\t\t}\n\t}\n}\n\nfunction parserForArrayFormat(options) {\n\tlet result;\n\n\tswitch (options.arrayFormat) {\n\t\tcase 'index': {\n\t\t\treturn (key, value, accumulator) => {\n\t\t\t\tresult = /\\[(\\d*)]$/.exec(key);\n\n\t\t\t\tkey = key.replace(/\\[\\d*]$/, '');\n\n\t\t\t\tif (!result) {\n\t\t\t\t\taccumulator[key] = value;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif (accumulator[key] === undefined) {\n\t\t\t\t\taccumulator[key] = {};\n\t\t\t\t}\n\n\t\t\t\taccumulator[key][result[1]] = value;\n\t\t\t};\n\t\t}\n\n\t\tcase 'bracket': {\n\t\t\treturn (key, value, accumulator) => {\n\t\t\t\tresult = /(\\[])$/.exec(key);\n\t\t\t\tkey = key.replace(/\\[]$/, '');\n\n\t\t\t\tif (!result) {\n\t\t\t\t\taccumulator[key] = value;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif (accumulator[key] === undefined) {\n\t\t\t\t\taccumulator[key] = [value];\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\taccumulator[key] = [...accumulator[key], value];\n\t\t\t};\n\t\t}\n\n\t\tcase 'colon-list-separator': {\n\t\t\treturn (key, value, accumulator) => {\n\t\t\t\tresult = /(:list)$/.exec(key);\n\t\t\t\tkey = key.replace(/:list$/, '');\n\n\t\t\t\tif (!result) {\n\t\t\t\t\taccumulator[key] = value;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif (accumulator[key] === undefined) {\n\t\t\t\t\taccumulator[key] = [value];\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\taccumulator[key] = [...accumulator[key], value];\n\t\t\t};\n\t\t}\n\n\t\tcase 'comma':\n\t\tcase 'separator': {\n\t\t\treturn (key, value, accumulator) => {\n\t\t\t\tconst isArray = typeof value === 'string' && value.includes(options.arrayFormatSeparator);\n\t\t\t\tconst isEncodedArray = (typeof value === 'string' && !isArray && decode(value, options).includes(options.arrayFormatSeparator));\n\t\t\t\tvalue = isEncodedArray ? decode(value, options) : value;\n\t\t\t\tconst newValue = isArray || isEncodedArray ? value.split(options.arrayFormatSeparator).map(item => decode(item, options)) : (value === null ? value : decode(value, options));\n\t\t\t\taccumulator[key] = newValue;\n\t\t\t};\n\t\t}\n\n\t\tcase 'bracket-separator': {\n\t\t\treturn (key, value, accumulator) => {\n\t\t\t\tconst isArray = /(\\[])$/.test(key);\n\t\t\t\tkey = key.replace(/\\[]$/, '');\n\n\t\t\t\tif (!isArray) {\n\t\t\t\t\taccumulator[key] = value ? decode(value, options) : value;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tconst arrayValue = value === null\n\t\t\t\t\t? []\n\t\t\t\t\t: value.split(options.arrayFormatSeparator).map(item => decode(item, options));\n\n\t\t\t\tif (accumulator[key] === undefined) {\n\t\t\t\t\taccumulator[key] = arrayValue;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\taccumulator[key] = [...accumulator[key], ...arrayValue];\n\t\t\t};\n\t\t}\n\n\t\tdefault: {\n\t\t\treturn (key, value, accumulator) => {\n\t\t\t\tif (accumulator[key] === undefined) {\n\t\t\t\t\taccumulator[key] = value;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\taccumulator[key] = [...[accumulator[key]].flat(), value];\n\t\t\t};\n\t\t}\n\t}\n}\n\nfunction validateArrayFormatSeparator(value) {\n\tif (typeof value !== 'string' || value.length !== 1) {\n\t\tthrow new TypeError('arrayFormatSeparator must be single character string');\n\t}\n}\n\nfunction encode(value, options) {\n\tif (options.encode) {\n\t\treturn options.strict ? strictUriEncode(value) : encodeURIComponent(value);\n\t}\n\n\treturn value;\n}\n\nfunction decode(value, options) {\n\tif (options.decode) {\n\t\treturn decodeComponent(value);\n\t}\n\n\treturn value;\n}\n\nfunction keysSorter(input) {\n\tif (Array.isArray(input)) {\n\t\treturn input.sort();\n\t}\n\n\tif (typeof input === 'object') {\n\t\treturn keysSorter(Object.keys(input))\n\t\t\t.sort((a, b) => Number(a) - Number(b))\n\t\t\t.map(key => input[key]);\n\t}\n\n\treturn input;\n}\n\nfunction removeHash(input) {\n\tconst hashStart = input.indexOf('#');\n\tif (hashStart !== -1) {\n\t\tinput = input.slice(0, hashStart);\n\t}\n\n\treturn input;\n}\n\nfunction getHash(url) {\n\tlet hash = '';\n\tconst hashStart = url.indexOf('#');\n\tif (hashStart !== -1) {\n\t\thash = url.slice(hashStart);\n\t}\n\n\treturn hash;\n}\n\nfunction parseValue(value, options) {\n\tif (options.parseNumbers && !Number.isNaN(Number(value)) && (typeof value === 'string' && value.trim() !== '')) {\n\t\tvalue = Number(value);\n\t} else if (options.parseBooleans && value !== null && (value.toLowerCase() === 'true' || value.toLowerCase() === 'false')) {\n\t\tvalue = value.toLowerCase() === 'true';\n\t}\n\n\treturn value;\n}\n\nexport function extract(input) {\n\tinput = removeHash(input);\n\tconst queryStart = input.indexOf('?');\n\tif (queryStart === -1) {\n\t\treturn '';\n\t}\n\n\treturn input.slice(queryStart + 1);\n}\n\nexport function parse(query, options) {\n\toptions = {\n\t\tdecode: true,\n\t\tsort: true,\n\t\tarrayFormat: 'none',\n\t\tarrayFormatSeparator: ',',\n\t\tparseNumbers: false,\n\t\tparseBooleans: false,\n\t\t...options,\n\t};\n\n\tvalidateArrayFormatSeparator(options.arrayFormatSeparator);\n\n\tconst formatter = parserForArrayFormat(options);\n\n\t// Create an object with no prototype\n\tconst returnValue = Object.create(null);\n\n\tif (typeof query !== 'string') {\n\t\treturn returnValue;\n\t}\n\n\tquery = query.trim().replace(/^[?#&]/, '');\n\n\tif (!query) {\n\t\treturn returnValue;\n\t}\n\n\tfor (const parameter of query.split('&')) {\n\t\tif (parameter === '') {\n\t\t\tcontinue;\n\t\t}\n\n\t\tconst parameter_ = options.decode ? parameter.replaceAll('+', ' ') : parameter;\n\n\t\tlet [key, value] = splitOnFirst(parameter_, '=');\n\n\t\tif (key === undefined) {\n\t\t\tkey = parameter_;\n\t\t}\n\n\t\t// Missing `=` should be `null`:\n\t\t// http://w3.org/TR/2012/WD-url-20120524/#collect-url-parameters\n\t\tvalue = value === undefined ? null : (['comma', 'separator', 'bracket-separator'].includes(options.arrayFormat) ? value : decode(value, options));\n\t\tformatter(decode(key, options), value, returnValue);\n\t}\n\n\tfor (const [key, value] of Object.entries(returnValue)) {\n\t\tif (typeof value === 'object' && value !== null) {\n\t\t\tfor (const [key2, value2] of Object.entries(value)) {\n\t\t\t\tvalue[key2] = parseValue(value2, options);\n\t\t\t}\n\t\t} else {\n\t\t\treturnValue[key] = parseValue(value, options);\n\t\t}\n\t}\n\n\tif (options.sort === false) {\n\t\treturn returnValue;\n\t}\n\n\t// TODO: Remove the use of `reduce`.\n\t// eslint-disable-next-line unicorn/no-array-reduce\n\treturn (options.sort === true ? Object.keys(returnValue).sort() : Object.keys(returnValue).sort(options.sort)).reduce((result, key) => {\n\t\tconst value = returnValue[key];\n\t\tresult[key] = Boolean(value) && typeof value === 'object' && !Array.isArray(value) ? keysSorter(value) : value;\n\t\treturn result;\n\t}, Object.create(null));\n}\n\nexport function stringify(object, options) {\n\tif (!object) {\n\t\treturn '';\n\t}\n\n\toptions = {\n\t\tencode: true,\n\t\tstrict: true,\n\t\tarrayFormat: 'none',\n\t\tarrayFormatSeparator: ',',\n\t\t...options,\n\t};\n\n\tvalidateArrayFormatSeparator(options.arrayFormatSeparator);\n\n\tconst shouldFilter = key => (\n\t\t(options.skipNull && isNullOrUndefined(object[key]))\n\t\t|| (options.skipEmptyString && object[key] === '')\n\t);\n\n\tconst formatter = encoderForArrayFormat(options);\n\n\tconst objectCopy = {};\n\n\tfor (const [key, value] of Object.entries(object)) {\n\t\tif (!shouldFilter(key)) {\n\t\t\tobjectCopy[key] = value;\n\t\t}\n\t}\n\n\tconst keys = Object.keys(objectCopy);\n\n\tif (options.sort !== false) {\n\t\tkeys.sort(options.sort);\n\t}\n\n\treturn keys.map(key => {\n\t\tconst value = object[key];\n\n\t\tif (value === undefined) {\n\t\t\treturn '';\n\t\t}\n\n\t\tif (value === null) {\n\t\t\treturn encode(key, options);\n\t\t}\n\n\t\tif (Array.isArray(value)) {\n\t\t\tif (value.length === 0 && options.arrayFormat === 'bracket-separator') {\n\t\t\t\treturn encode(key, options) + '[]';\n\t\t\t}\n\n\t\t\treturn value\n\t\t\t\t.reduce(formatter(key), [])\n\t\t\t\t.join('&');\n\t\t}\n\n\t\treturn encode(key, options) + '=' + encode(value, options);\n\t}).filter(x => x.length > 0).join('&');\n}\n\nexport function parseUrl(url, options) {\n\toptions = {\n\t\tdecode: true,\n\t\t...options,\n\t};\n\n\tlet [url_, hash] = splitOnFirst(url, '#');\n\n\tif (url_ === undefined) {\n\t\turl_ = url;\n\t}\n\n\treturn {\n\t\turl: url_?.split('?')?.[0] ?? '',\n\t\tquery: parse(extract(url), options),\n\t\t...(options && options.parseFragmentIdentifier && hash ? {fragmentIdentifier: decode(hash, options)} : {}),\n\t};\n}\n\nexport function stringifyUrl(object, options) {\n\toptions = {\n\t\tencode: true,\n\t\tstrict: true,\n\t\t[encodeFragmentIdentifier]: true,\n\t\t...options,\n\t};\n\n\tconst url = removeHash(object.url).split('?')[0] || '';\n\tconst queryFromUrl = extract(object.url);\n\n\tconst query = {\n\t\t...parse(queryFromUrl, {sort: false}),\n\t\t...object.query,\n\t};\n\n\tlet queryString = stringify(query, options);\n\tqueryString &&= `?${queryString}`;\n\n\tlet hash = getHash(object.url);\n\tif (typeof object.fragmentIdentifier === 'string') {\n\t\tconst urlObjectForFragmentEncode = new URL(url);\n\t\turlObjectForFragmentEncode.hash = object.fragmentIdentifier;\n\t\thash = options[encodeFragmentIdentifier] ? urlObjectForFragmentEncode.hash : `#${object.fragmentIdentifier}`;\n\t}\n\n\treturn `${url}${queryString}${hash}`;\n}\n\nexport function pick(input, filter, options) {\n\toptions = {\n\t\tparseFragmentIdentifier: true,\n\t\t[encodeFragmentIdentifier]: false,\n\t\t...options,\n\t};\n\n\tconst {url, query, fragmentIdentifier} = parseUrl(input, options);\n\n\treturn stringifyUrl({\n\t\turl,\n\t\tquery: includeKeys(query, filter),\n\t\tfragmentIdentifier,\n\t}, options);\n}\n\nexport function exclude(input, filter, options) {\n\tconst exclusionFilter = Array.isArray(filter) ? key => !filter.includes(key) : (key, value) => !filter(key, value);\n\n\treturn pick(input, exclusionFilter, options);\n}\n","import * as queryString from './base.js';\n\nexport default queryString;\n","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('form',{ref:\"loginForm\",staticClass:\"login-form\",attrs:{\"method\":\"post\",\"name\":\"login\",\"action\":_vm.loginActionUrl},on:{\"submit\":_vm.submit}},[_c('fieldset',{staticClass:\"login-form__fieldset\",attrs:{\"data-login-form\":\"\"}},[(_vm.apacheAuthFailed)?_c('NcNoteCard',{attrs:{\"title\":_vm.t('core', 'Server side authentication failed!'),\"type\":\"warning\"}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('core', 'Please contact your administrator.'))+\"\\n\\t\\t\")]):_vm._e(),_vm._v(\" \"),(_vm.csrfCheckFailed)?_c('NcNoteCard',{attrs:{\"heading\":_vm.t('core', 'Temporary error'),\"type\":\"error\"}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('core', 'Please try again.'))+\"\\n\\t\\t\")]):_vm._e(),_vm._v(\" \"),(_vm.messages.length > 0)?_c('NcNoteCard',_vm._l((_vm.messages),function(message,index){return _c('div',{key:index},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(message)),_c('br')])}),0):_vm._e(),_vm._v(\" \"),(_vm.internalException)?_c('NcNoteCard',{class:_vm.t('core', 'An internal error occurred.'),attrs:{\"type\":\"warning\"}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('core', 'Please try again or contact your administrator.'))+\"\\n\\t\\t\")]):_vm._e(),_vm._v(\" \"),_c('div',{staticClass:\"hidden\",attrs:{\"id\":\"message\"}},[_c('img',{staticClass:\"float-spinner\",attrs:{\"alt\":\"\",\"src\":_vm.loadingIcon}}),_vm._v(\" \"),_c('span',{attrs:{\"id\":\"messageText\"}}),_vm._v(\" \"),_c('div',{staticStyle:{\"clear\":\"both\"}})]),_vm._v(\" \"),_c('h2',{staticClass:\"login-form__headline\",attrs:{\"data-login-form-headline\":\"\"}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.headlineText)+\"\\n\\t\\t\")]),_vm._v(\" \"),_c('NcTextField',{ref:\"user\",class:{shake: _vm.invalidPassword},attrs:{\"id\":\"user\",\"label\":_vm.loginText,\"name\":\"user\",\"maxlength\":255,\"value\":_vm.user,\"autocapitalize\":\"none\",\"spellchecking\":false,\"autocomplete\":_vm.autoCompleteAllowed ? 'username' : 'off',\"required\":\"\",\"error\":_vm.userNameInputLengthIs255,\"helper-text\":_vm.userInputHelperText,\"data-login-form-input-user\":\"\"},on:{\"update:value\":function($event){_vm.user=$event},\"change\":_vm.updateUsername}}),_vm._v(\" \"),_c('NcPasswordField',{ref:\"password\",class:{shake: _vm.invalidPassword},attrs:{\"id\":\"password\",\"name\":\"password\",\"value\":_vm.password,\"spellchecking\":false,\"autocapitalize\":\"none\",\"autocomplete\":_vm.autoCompleteAllowed ? 'current-password' : 'off',\"label\":_vm.t('core', 'Password'),\"helper-text\":_vm.errorLabel,\"error\":_vm.isError,\"data-login-form-input-password\":\"\",\"required\":\"\"},on:{\"update:value\":function($event){_vm.password=$event}}}),_vm._v(\" \"),_c('LoginButton',{attrs:{\"data-login-form-submit\":\"\",\"loading\":_vm.loading}}),_vm._v(\" \"),(_vm.redirectUrl)?_c('input',{attrs:{\"type\":\"hidden\",\"name\":\"redirect_url\"},domProps:{\"value\":_vm.redirectUrl}}):_vm._e(),_vm._v(\" \"),_c('input',{attrs:{\"type\":\"hidden\",\"name\":\"timezone\"},domProps:{\"value\":_vm.timezone}}),_vm._v(\" \"),_c('input',{attrs:{\"type\":\"hidden\",\"name\":\"timezone_offset\"},domProps:{\"value\":_vm.timezoneOffset}}),_vm._v(\" \"),_c('input',{attrs:{\"type\":\"hidden\",\"name\":\"requesttoken\"},domProps:{\"value\":_vm.requestToken}}),_vm._v(\" \"),(_vm.directLogin)?_c('input',{attrs:{\"type\":\"hidden\",\"name\":\"direct\",\"value\":\"1\"}}):_vm._e()],1)])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","/**\n * SPDX-FileCopyrightText: 2024 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nexport default {\n\n\tcomputed: {\n\t\tuserNameInputLengthIs255() {\n\t\t\treturn this.user.length >= 255\n\t\t},\n\t\tuserInputHelperText() {\n\t\t\tif (this.userNameInputLengthIs255) {\n\t\t\t\treturn t('core', 'Email length is at max (255)')\n\t\t\t}\n\t\t\treturn undefined\n\t\t},\n\t},\n}\n","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('NcButton',{attrs:{\"type\":\"primary\",\"native-type\":\"submit\",\"wide\":true},on:{\"click\":function($event){return _vm.$emit('click')}},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [(_vm.loading)?_c('div',{staticClass:\"submit-wrapper__icon icon-loading-small-dark\"}):_c('ArrowRight',{staticClass:\"submit-wrapper__icon\"})]},proxy:true}])},[_vm._v(\"\\n\\t\"+_vm._s(!_vm.loading ? _vm.value : _vm.valueLoading)+\"\\n\\t\")])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\n - SPDX-FileCopyrightText: 2020 Nextcloud GmbH and Nextcloud contributors\n - SPDX-License-Identifier: AGPL-3.0-or-later\n-->\n\n<template>\n\t<NcButton type=\"primary\"\n\t\tnative-type=\"submit\"\n\t\t:wide=\"true\"\n\t\t@click=\"$emit('click')\">\n\t\t{{ !loading ? value : valueLoading }}\n\t\t<template #icon>\n\t\t\t<div v-if=\"loading\" class=\"submit-wrapper__icon icon-loading-small-dark\" />\n\t\t\t<ArrowRight v-else class=\"submit-wrapper__icon\" />\n\t\t</template>\n\t</NcButton>\n</template>\n\n<script>\nimport { translate as t } from '@nextcloud/l10n'\n\nimport NcButton from '@nextcloud/vue/dist/Components/NcButton.js'\nimport ArrowRight from 'vue-material-design-icons/ArrowRight.vue'\n\nexport default {\n\tname: 'LoginButton',\n\tcomponents: {\n\t\tArrowRight,\n\t\tNcButton,\n\t},\n\tprops: {\n\t\tvalue: {\n\t\t\ttype: String,\n\t\t\tdefault: t('core', 'Log in'),\n\t\t},\n\t\tvalueLoading: {\n\t\t\ttype: String,\n\t\t\tdefault: t('core', 'Logging in …'),\n\t\t},\n\t\tloading: {\n\t\t\ttype: Boolean,\n\t\t\trequired: true,\n\t\t},\n\t\tinvertedColors: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\n.button-vue {\n\tmargin-top: .5rem;\n}\n</style>\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./LoginButton.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./LoginButton.vue?vue&type=script&lang=js\"","\n import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./LoginButton.vue?vue&type=style&index=0&id=d2cd6448&prod&lang=scss&scoped=true\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./LoginButton.vue?vue&type=style&index=0&id=d2cd6448&prod&lang=scss&scoped=true\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./LoginButton.vue?vue&type=template&id=d2cd6448&scoped=true\"\nimport script from \"./LoginButton.vue?vue&type=script&lang=js\"\nexport * from \"./LoginButton.vue?vue&type=script&lang=js\"\nimport style0 from \"./LoginButton.vue?vue&type=style&index=0&id=d2cd6448&prod&lang=scss&scoped=true\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"d2cd6448\",\n null\n \n)\n\nexport default component.exports","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./LoginForm.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./LoginForm.vue?vue&type=script&lang=js\"","<!--\n - SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\n - SPDX-License-Identifier: AGPL-3.0-or-later\n-->\n\n<template>\n\t<form ref=\"loginForm\"\n\t\tclass=\"login-form\"\n\t\tmethod=\"post\"\n\t\tname=\"login\"\n\t\t:action=\"loginActionUrl\"\n\t\t@submit=\"submit\">\n\t\t<fieldset class=\"login-form__fieldset\" data-login-form>\n\t\t\t<NcNoteCard v-if=\"apacheAuthFailed\"\n\t\t\t\t:title=\"t('core', 'Server side authentication failed!')\"\n\t\t\t\ttype=\"warning\">\n\t\t\t\t{{ t('core', 'Please contact your administrator.') }}\n\t\t\t</NcNoteCard>\n\t\t\t<NcNoteCard v-if=\"csrfCheckFailed\"\n\t\t\t\t:heading=\"t('core', 'Temporary error')\"\n\t\t\t\ttype=\"error\">\n\t\t\t\t{{ t('core', 'Please try again.') }}\n\t\t\t</NcNoteCard>\n\t\t\t<NcNoteCard v-if=\"messages.length > 0\">\n\t\t\t\t<div v-for=\"(message, index) in messages\"\n\t\t\t\t\t:key=\"index\">\n\t\t\t\t\t{{ message }}<br>\n\t\t\t\t</div>\n\t\t\t</NcNoteCard>\n\t\t\t<NcNoteCard v-if=\"internalException\"\n\t\t\t\t:class=\"t('core', 'An internal error occurred.')\"\n\t\t\t\ttype=\"warning\">\n\t\t\t\t{{ t('core', 'Please try again or contact your administrator.') }}\n\t\t\t</NcNoteCard>\n\t\t\t<div id=\"message\"\n\t\t\t\tclass=\"hidden\">\n\t\t\t\t<img class=\"float-spinner\"\n\t\t\t\t\talt=\"\"\n\t\t\t\t\t:src=\"loadingIcon\">\n\t\t\t\t<span id=\"messageText\" />\n\t\t\t\t<!-- the following div ensures that the spinner is always inside the #message div -->\n\t\t\t\t<div style=\"clear: both;\" />\n\t\t\t</div>\n\t\t\t<h2 class=\"login-form__headline\" data-login-form-headline>\n\t\t\t\t{{ headlineText }}\n\t\t\t</h2>\n\t\t\t<NcTextField id=\"user\"\n\t\t\t\tref=\"user\"\n\t\t\t\t:label=\"loginText\"\n\t\t\t\tname=\"user\"\n\t\t\t\t:maxlength=\"255\"\n\t\t\t\t:value.sync=\"user\"\n\t\t\t\t:class=\"{shake: invalidPassword}\"\n\t\t\t\tautocapitalize=\"none\"\n\t\t\t\t:spellchecking=\"false\"\n\t\t\t\t:autocomplete=\"autoCompleteAllowed ? 'username' : 'off'\"\n\t\t\t\trequired\n\t\t\t\t:error=\"userNameInputLengthIs255\"\n\t\t\t\t:helper-text=\"userInputHelperText\"\n\t\t\t\tdata-login-form-input-user\n\t\t\t\t@change=\"updateUsername\" />\n\n\t\t\t<NcPasswordField id=\"password\"\n\t\t\t\tref=\"password\"\n\t\t\t\tname=\"password\"\n\t\t\t\t:class=\"{shake: invalidPassword}\"\n\t\t\t\t:value.sync=\"password\"\n\t\t\t\t:spellchecking=\"false\"\n\t\t\t\tautocapitalize=\"none\"\n\t\t\t\t:autocomplete=\"autoCompleteAllowed ? 'current-password' : 'off'\"\n\t\t\t\t:label=\"t('core', 'Password')\"\n\t\t\t\t:helper-text=\"errorLabel\"\n\t\t\t\t:error=\"isError\"\n\t\t\t\tdata-login-form-input-password\n\t\t\t\trequired />\n\n\t\t\t<LoginButton data-login-form-submit :loading=\"loading\" />\n\n\t\t\t<input v-if=\"redirectUrl\"\n\t\t\t\ttype=\"hidden\"\n\t\t\t\tname=\"redirect_url\"\n\t\t\t\t:value=\"redirectUrl\">\n\t\t\t<input type=\"hidden\"\n\t\t\t\tname=\"timezone\"\n\t\t\t\t:value=\"timezone\">\n\t\t\t<input type=\"hidden\"\n\t\t\t\tname=\"timezone_offset\"\n\t\t\t\t:value=\"timezoneOffset\">\n\t\t\t<input type=\"hidden\"\n\t\t\t\tname=\"requesttoken\"\n\t\t\t\t:value=\"requestToken\">\n\t\t\t<input v-if=\"directLogin\"\n\t\t\t\ttype=\"hidden\"\n\t\t\t\tname=\"direct\"\n\t\t\t\tvalue=\"1\">\n\t\t</fieldset>\n\t</form>\n</template>\n\n<script>\nimport { loadState } from '@nextcloud/initial-state'\nimport { translate as t } from '@nextcloud/l10n'\nimport { generateUrl, imagePath } from '@nextcloud/router'\nimport { debounce } from 'debounce'\n\nimport NcPasswordField from '@nextcloud/vue/dist/Components/NcPasswordField.js'\nimport NcTextField from '@nextcloud/vue/dist/Components/NcTextField.js'\nimport NcNoteCard from '@nextcloud/vue/dist/Components/NcNoteCard.js'\n\nimport AuthMixin from '../../mixins/auth.js'\nimport LoginButton from './LoginButton.vue'\n\nexport default {\n\tname: 'LoginForm',\n\n\tcomponents: {\n\t\tLoginButton,\n\t\tNcPasswordField,\n\t\tNcTextField,\n\t\tNcNoteCard,\n\t},\n\n\tmixins: [AuthMixin],\n\n\tprops: {\n\t\tusername: {\n\t\t\ttype: String,\n\t\t\tdefault: '',\n\t\t},\n\t\tredirectUrl: {\n\t\t\ttype: [String, Boolean],\n\t\t\tdefault: false,\n\t\t},\n\t\terrors: {\n\t\t\ttype: Array,\n\t\t\tdefault: () => [],\n\t\t},\n\t\tmessages: {\n\t\t\ttype: Array,\n\t\t\tdefault: () => [],\n\t\t},\n\t\tthrottleDelay: {\n\t\t\ttype: Number,\n\t\t\tdefault: 0,\n\t\t},\n\t\tautoCompleteAllowed: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: true,\n\t\t},\n\t\tdirectLogin: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\t\temailStates: {\n\t\t\ttype: Array,\n\t\t\tdefault() {\n\t\t\t\treturn []\n\t\t\t},\n\t\t},\n\t},\n\n\tsetup() {\n\t\t// non reactive props\n\t\treturn {\n\t\t\tt,\n\n\t\t\t// Disable escape and sanitize to prevent special characters to be html escaped\n\t\t\t// For example \"J's cloud\" would be escaped to \"J' cloud\". But we do not need escaping as Vue does this in `v-text` automatically\n\t\t\theadlineText: t('core', 'Log in to {productName}', { productName: OC.theme.name }, undefined, { sanitize: false, escape: false }),\n\n\t\t\tloginTimeout: loadState('core', 'loginTimeout', 300),\n\t\t\trequestToken: window.OC.requestToken,\n\t\t\ttimezone: (new Intl.DateTimeFormat())?.resolvedOptions()?.timeZone,\n\t\t\ttimezoneOffset: (-new Date().getTimezoneOffset() / 60),\n\t\t}\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\tloading: false,\n\t\t\tuser: '',\n\t\t\tpassword: '',\n\t\t}\n\t},\n\n\tcomputed: {\n\t\t/**\n\t\t * Reset the login form after a long idle time (debounced)\n\t\t */\n\t\tresetFormTimeout() {\n\t\t\t// Infinite timeout, do nothing\n\t\t\tif (this.loginTimeout <= 0) {\n\t\t\t\treturn () => {}\n\t\t\t}\n\t\t\t// Debounce for given timeout (in seconds so convert to milli seconds)\n\t\t\treturn debounce(this.handleResetForm, this.loginTimeout * 1000)\n\t\t},\n\n\t\tisError() {\n\t\t\treturn this.invalidPassword || this.userDisabled\n\t\t\t\t|| this.throttleDelay > 5000\n\t\t},\n\t\terrorLabel() {\n\t\t\tif (this.invalidPassword) {\n\t\t\t\treturn t('core', 'Wrong login or password.')\n\t\t\t}\n\t\t\tif (this.userDisabled) {\n\t\t\t\treturn t('core', 'This account is disabled')\n\t\t\t}\n\t\t\tif (this.throttleDelay > 5000) {\n\t\t\t\treturn t('core', 'We have detected multiple invalid login attempts from your IP. Therefore your next login is throttled up to 30 seconds.')\n\t\t\t}\n\t\t\treturn undefined\n\t\t},\n\t\tapacheAuthFailed() {\n\t\t\treturn this.errors.indexOf('apacheAuthFailed') !== -1\n\t\t},\n\t\tcsrfCheckFailed() {\n\t\t\treturn this.errors.indexOf('csrfCheckFailed') !== -1\n\t\t},\n\t\tinternalException() {\n\t\t\treturn this.errors.indexOf('internalexception') !== -1\n\t\t},\n\t\tinvalidPassword() {\n\t\t\treturn this.errors.indexOf('invalidpassword') !== -1\n\t\t},\n\t\tuserDisabled() {\n\t\t\treturn this.errors.indexOf('userdisabled') !== -1\n\t\t},\n\t\tloadingIcon() {\n\t\t\treturn imagePath('core', 'loading-dark.gif')\n\t\t},\n\t\tloginActionUrl() {\n\t\t\treturn generateUrl('login')\n\t\t},\n\t\temailEnabled() {\n\t\t\treturn this.emailStates ? this.emailStates.every((state) => state === '1') : 1\n\t\t},\n\t\tloginText() {\n\t\t\tif (this.emailEnabled) {\n\t\t\t\treturn t('core', 'Login with username or email')\n\t\t\t}\n\t\t\treturn t('core', 'Login with username')\n\t\t},\n\t},\n\n\twatch: {\n\t\t/**\n\t\t * Reset form reset after the password was changed\n\t\t */\n\t\tpassword() {\n\t\t\tthis.resetFormTimeout()\n\t\t},\n\t},\n\n\tmounted() {\n\t\tif (this.username === '') {\n\t\t\tthis.$refs.user.$refs.inputField.$refs.input.focus()\n\t\t} else {\n\t\t\tthis.user = this.username\n\t\t\tthis.$refs.password.$refs.inputField.$refs.input.focus()\n\t\t}\n\t},\n\n\tmethods: {\n\t\t/**\n\t\t * Handle reset of the login form after a long IDLE time\n\t\t * This is recommended security behavior to prevent password leak on public devices\n\t\t */\n\t\thandleResetForm() {\n\t\t\tthis.password = ''\n\t\t},\n\n\t\tupdateUsername() {\n\t\t\tthis.$emit('update:username', this.user)\n\t\t},\n\t\tsubmit() {\n\t\t\tthis.loading = true\n\t\t\tthis.$emit('submit')\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\n.login-form {\n\ttext-align: left;\n\tfont-size: 1rem;\n\n\t&__fieldset {\n\t\twidth: 100%;\n\t\tdisplay: flex;\n\t\tflex-direction: column;\n\t\tgap: .5rem;\n\t}\n\n\t&__headline {\n\t\ttext-align: center;\n\t\toverflow-wrap: anywhere;\n\t}\n}\n</style>\n","\n import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./LoginForm.vue?vue&type=style&index=0&id=563906d0&prod&lang=scss&scoped=true\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./LoginForm.vue?vue&type=style&index=0&id=563906d0&prod&lang=scss&scoped=true\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./LoginForm.vue?vue&type=template&id=563906d0&scoped=true\"\nimport script from \"./LoginForm.vue?vue&type=script&lang=js\"\nexport * from \"./LoginForm.vue?vue&type=script&lang=js\"\nimport style0 from \"./LoginForm.vue?vue&type=style&index=0&id=563906d0&prod&lang=scss&scoped=true\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"563906d0\",\n null\n \n)\n\nexport default component.exports","/* [@simplewebauthn/browser@10.0.0] */\nfunction bufferToBase64URLString(buffer) {\n const bytes = new Uint8Array(buffer);\n let str = '';\n for (const charCode of bytes) {\n str += String.fromCharCode(charCode);\n }\n const base64String = btoa(str);\n return base64String.replace(/\\+/g, '-').replace(/\\//g, '_').replace(/=/g, '');\n}\n\nfunction base64URLStringToBuffer(base64URLString) {\n const base64 = base64URLString.replace(/-/g, '+').replace(/_/g, '/');\n const padLength = (4 - (base64.length % 4)) % 4;\n const padded = base64.padEnd(base64.length + padLength, '=');\n const binary = atob(padded);\n const buffer = new ArrayBuffer(binary.length);\n const bytes = new Uint8Array(buffer);\n for (let i = 0; i < binary.length; i++) {\n bytes[i] = binary.charCodeAt(i);\n }\n return buffer;\n}\n\nfunction browserSupportsWebAuthn() {\n return (window?.PublicKeyCredential !== undefined &&\n typeof window.PublicKeyCredential === 'function');\n}\n\nfunction toPublicKeyCredentialDescriptor(descriptor) {\n const { id } = descriptor;\n return {\n ...descriptor,\n id: base64URLStringToBuffer(id),\n transports: descriptor.transports,\n };\n}\n\nfunction isValidDomain(hostname) {\n return (hostname === 'localhost' ||\n /^([a-z0-9]+(-[a-z0-9]+)*\\.)+[a-z]{2,}$/i.test(hostname));\n}\n\nclass WebAuthnError extends Error {\n constructor({ message, code, cause, name, }) {\n super(message, { cause });\n this.name = name ?? cause.name;\n this.code = code;\n }\n}\n\nfunction identifyRegistrationError({ error, options, }) {\n const { publicKey } = options;\n if (!publicKey) {\n throw Error('options was missing required publicKey property');\n }\n if (error.name === 'AbortError') {\n if (options.signal instanceof AbortSignal) {\n return new WebAuthnError({\n message: 'Registration ceremony was sent an abort signal',\n code: 'ERROR_CEREMONY_ABORTED',\n cause: error,\n });\n }\n }\n else if (error.name === 'ConstraintError') {\n if (publicKey.authenticatorSelection?.requireResidentKey === true) {\n return new WebAuthnError({\n message: 'Discoverable credentials were required but no available authenticator supported it',\n code: 'ERROR_AUTHENTICATOR_MISSING_DISCOVERABLE_CREDENTIAL_SUPPORT',\n cause: error,\n });\n }\n else if (publicKey.authenticatorSelection?.userVerification === 'required') {\n return new WebAuthnError({\n message: 'User verification was required but no available authenticator supported it',\n code: 'ERROR_AUTHENTICATOR_MISSING_USER_VERIFICATION_SUPPORT',\n cause: error,\n });\n }\n }\n else if (error.name === 'InvalidStateError') {\n return new WebAuthnError({\n message: 'The authenticator was previously registered',\n code: 'ERROR_AUTHENTICATOR_PREVIOUSLY_REGISTERED',\n cause: error,\n });\n }\n else if (error.name === 'NotAllowedError') {\n return new WebAuthnError({\n message: error.message,\n code: 'ERROR_PASSTHROUGH_SEE_CAUSE_PROPERTY',\n cause: error,\n });\n }\n else if (error.name === 'NotSupportedError') {\n const validPubKeyCredParams = publicKey.pubKeyCredParams.filter((param) => param.type === 'public-key');\n if (validPubKeyCredParams.length === 0) {\n return new WebAuthnError({\n message: 'No entry in pubKeyCredParams was of type \"public-key\"',\n code: 'ERROR_MALFORMED_PUBKEYCREDPARAMS',\n cause: error,\n });\n }\n return new WebAuthnError({\n message: 'No available authenticator supported any of the specified pubKeyCredParams algorithms',\n code: 'ERROR_AUTHENTICATOR_NO_SUPPORTED_PUBKEYCREDPARAMS_ALG',\n cause: error,\n });\n }\n else if (error.name === 'SecurityError') {\n const effectiveDomain = window.location.hostname;\n if (!isValidDomain(effectiveDomain)) {\n return new WebAuthnError({\n message: `${window.location.hostname} is an invalid domain`,\n code: 'ERROR_INVALID_DOMAIN',\n cause: error,\n });\n }\n else if (publicKey.rp.id !== effectiveDomain) {\n return new WebAuthnError({\n message: `The RP ID \"${publicKey.rp.id}\" is invalid for this domain`,\n code: 'ERROR_INVALID_RP_ID',\n cause: error,\n });\n }\n }\n else if (error.name === 'TypeError') {\n if (publicKey.user.id.byteLength < 1 || publicKey.user.id.byteLength > 64) {\n return new WebAuthnError({\n message: 'User ID was not between 1 and 64 characters',\n code: 'ERROR_INVALID_USER_ID_LENGTH',\n cause: error,\n });\n }\n }\n else if (error.name === 'UnknownError') {\n return new WebAuthnError({\n message: 'The authenticator was unable to process the specified options, or could not create a new credential',\n code: 'ERROR_AUTHENTICATOR_GENERAL_ERROR',\n cause: error,\n });\n }\n return error;\n}\n\nclass BaseWebAuthnAbortService {\n createNewAbortSignal() {\n if (this.controller) {\n const abortError = new Error('Cancelling existing WebAuthn API call for new one');\n abortError.name = 'AbortError';\n this.controller.abort(abortError);\n }\n const newController = new AbortController();\n this.controller = newController;\n return newController.signal;\n }\n cancelCeremony() {\n if (this.controller) {\n const abortError = new Error('Manually cancelling existing WebAuthn API call');\n abortError.name = 'AbortError';\n this.controller.abort(abortError);\n this.controller = undefined;\n }\n }\n}\nconst WebAuthnAbortService = new BaseWebAuthnAbortService();\n\nconst attachments = ['cross-platform', 'platform'];\nfunction toAuthenticatorAttachment(attachment) {\n if (!attachment) {\n return;\n }\n if (attachments.indexOf(attachment) < 0) {\n return;\n }\n return attachment;\n}\n\nasync function startRegistration(optionsJSON) {\n if (!browserSupportsWebAuthn()) {\n throw new Error('WebAuthn is not supported in this browser');\n }\n const publicKey = {\n ...optionsJSON,\n challenge: base64URLStringToBuffer(optionsJSON.challenge),\n user: {\n ...optionsJSON.user,\n id: base64URLStringToBuffer(optionsJSON.user.id),\n },\n excludeCredentials: optionsJSON.excludeCredentials?.map(toPublicKeyCredentialDescriptor),\n };\n const options = { publicKey };\n options.signal = WebAuthnAbortService.createNewAbortSignal();\n let credential;\n try {\n credential = (await navigator.credentials.create(options));\n }\n catch (err) {\n throw identifyRegistrationError({ error: err, options });\n }\n if (!credential) {\n throw new Error('Registration was not completed');\n }\n const { id, rawId, response, type } = credential;\n let transports = undefined;\n if (typeof response.getTransports === 'function') {\n transports = response.getTransports();\n }\n let responsePublicKeyAlgorithm = undefined;\n if (typeof response.getPublicKeyAlgorithm === 'function') {\n try {\n responsePublicKeyAlgorithm = response.getPublicKeyAlgorithm();\n }\n catch (error) {\n warnOnBrokenImplementation('getPublicKeyAlgorithm()', error);\n }\n }\n let responsePublicKey = undefined;\n if (typeof response.getPublicKey === 'function') {\n try {\n const _publicKey = response.getPublicKey();\n if (_publicKey !== null) {\n responsePublicKey = bufferToBase64URLString(_publicKey);\n }\n }\n catch (error) {\n warnOnBrokenImplementation('getPublicKey()', error);\n }\n }\n let responseAuthenticatorData;\n if (typeof response.getAuthenticatorData === 'function') {\n try {\n responseAuthenticatorData = bufferToBase64URLString(response.getAuthenticatorData());\n }\n catch (error) {\n warnOnBrokenImplementation('getAuthenticatorData()', error);\n }\n }\n return {\n id,\n rawId: bufferToBase64URLString(rawId),\n response: {\n attestationObject: bufferToBase64URLString(response.attestationObject),\n clientDataJSON: bufferToBase64URLString(response.clientDataJSON),\n transports,\n publicKeyAlgorithm: responsePublicKeyAlgorithm,\n publicKey: responsePublicKey,\n authenticatorData: responseAuthenticatorData,\n },\n type,\n clientExtensionResults: credential.getClientExtensionResults(),\n authenticatorAttachment: toAuthenticatorAttachment(credential.authenticatorAttachment),\n };\n}\nfunction warnOnBrokenImplementation(methodName, cause) {\n console.warn(`The browser extension that intercepted this WebAuthn API call incorrectly implemented ${methodName}. You should report this error to them.\\n`, cause);\n}\n\nfunction browserSupportsWebAuthnAutofill() {\n if (!browserSupportsWebAuthn()) {\n return new Promise((resolve) => resolve(false));\n }\n const globalPublicKeyCredential = window\n .PublicKeyCredential;\n if (globalPublicKeyCredential.isConditionalMediationAvailable === undefined) {\n return new Promise((resolve) => resolve(false));\n }\n return globalPublicKeyCredential.isConditionalMediationAvailable();\n}\n\nfunction identifyAuthenticationError({ error, options, }) {\n const { publicKey } = options;\n if (!publicKey) {\n throw Error('options was missing required publicKey property');\n }\n if (error.name === 'AbortError') {\n if (options.signal instanceof AbortSignal) {\n return new WebAuthnError({\n message: 'Authentication ceremony was sent an abort signal',\n code: 'ERROR_CEREMONY_ABORTED',\n cause: error,\n });\n }\n }\n else if (error.name === 'NotAllowedError') {\n return new WebAuthnError({\n message: error.message,\n code: 'ERROR_PASSTHROUGH_SEE_CAUSE_PROPERTY',\n cause: error,\n });\n }\n else if (error.name === 'SecurityError') {\n const effectiveDomain = window.location.hostname;\n if (!isValidDomain(effectiveDomain)) {\n return new WebAuthnError({\n message: `${window.location.hostname} is an invalid domain`,\n code: 'ERROR_INVALID_DOMAIN',\n cause: error,\n });\n }\n else if (publicKey.rpId !== effectiveDomain) {\n return new WebAuthnError({\n message: `The RP ID \"${publicKey.rpId}\" is invalid for this domain`,\n code: 'ERROR_INVALID_RP_ID',\n cause: error,\n });\n }\n }\n else if (error.name === 'UnknownError') {\n return new WebAuthnError({\n message: 'The authenticator was unable to process the specified options, or could not create a new assertion signature',\n code: 'ERROR_AUTHENTICATOR_GENERAL_ERROR',\n cause: error,\n });\n }\n return error;\n}\n\nasync function startAuthentication(optionsJSON, useBrowserAutofill = false) {\n if (!browserSupportsWebAuthn()) {\n throw new Error('WebAuthn is not supported in this browser');\n }\n let allowCredentials;\n if (optionsJSON.allowCredentials?.length !== 0) {\n allowCredentials = optionsJSON.allowCredentials?.map(toPublicKeyCredentialDescriptor);\n }\n const publicKey = {\n ...optionsJSON,\n challenge: base64URLStringToBuffer(optionsJSON.challenge),\n allowCredentials,\n };\n const options = {};\n if (useBrowserAutofill) {\n if (!(await browserSupportsWebAuthnAutofill())) {\n throw Error('Browser does not support WebAuthn autofill');\n }\n const eligibleInputs = document.querySelectorAll(\"input[autocomplete$='webauthn']\");\n if (eligibleInputs.length < 1) {\n throw Error('No <input> with \"webauthn\" as the only or last value in its `autocomplete` attribute was detected');\n }\n options.mediation = 'conditional';\n publicKey.allowCredentials = [];\n }\n options.publicKey = publicKey;\n options.signal = WebAuthnAbortService.createNewAbortSignal();\n let credential;\n try {\n credential = (await navigator.credentials.get(options));\n }\n catch (err) {\n throw identifyAuthenticationError({ error: err, options });\n }\n if (!credential) {\n throw new Error('Authentication was not completed');\n }\n const { id, rawId, response, type } = credential;\n let userHandle = undefined;\n if (response.userHandle) {\n userHandle = bufferToBase64URLString(response.userHandle);\n }\n return {\n id,\n rawId: bufferToBase64URLString(rawId),\n response: {\n authenticatorData: bufferToBase64URLString(response.authenticatorData),\n clientDataJSON: bufferToBase64URLString(response.clientDataJSON),\n signature: bufferToBase64URLString(response.signature),\n userHandle,\n },\n type,\n clientExtensionResults: credential.getClientExtensionResults(),\n authenticatorAttachment: toAuthenticatorAttachment(credential.authenticatorAttachment),\n };\n}\n\nfunction platformAuthenticatorIsAvailable() {\n if (!browserSupportsWebAuthn()) {\n return new Promise((resolve) => resolve(false));\n }\n return PublicKeyCredential.isUserVerifyingPlatformAuthenticatorAvailable();\n}\n\nexport { WebAuthnAbortService, WebAuthnError, base64URLStringToBuffer, browserSupportsWebAuthn, browserSupportsWebAuthnAutofill, bufferToBase64URLString, platformAuthenticatorIsAvailable, startAuthentication, startRegistration };\n","/**\n * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport { getCurrentUser } from '@nextcloud/auth'\nimport { getLoggerBuilder } from '@nextcloud/logger'\n\nconst getLogger = user => {\n\tif (user === null) {\n\t\treturn getLoggerBuilder()\n\t\t\t.setApp('core')\n\t\t\t.build()\n\t}\n\treturn getLoggerBuilder()\n\t\t.setApp('core')\n\t\t.setUid(user.uid)\n\t\t.build()\n}\n\nexport default getLogger(getCurrentUser())\n","/**\n * SPDX-FileCopyrightText: 2020 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport { startAuthentication as startWebauthnAuthentication } from '@simplewebauthn/browser';\nimport { generateUrl } from '@nextcloud/router';\nimport Axios from '@nextcloud/axios';\nimport logger from '../logger';\nexport class NoValidCredentials extends Error {\n}\n/**\n * Start webautn authentication\n * This loads the challenge, connects to the authenticator and returns the repose that needs to be sent to the server.\n *\n * @param loginName Name to login\n */\nexport async function startAuthentication(loginName) {\n const url = generateUrl('/login/webauthn/start');\n const { data } = await Axios.post(url, { loginName });\n if (!data.allowCredentials || data.allowCredentials.length === 0) {\n logger.error('No valid credentials returned for webauthn');\n throw new NoValidCredentials();\n }\n return await startWebauthnAuthentication(data);\n}\n/**\n * Verify webauthn authentication\n * @param authData The authentication data to sent to the server\n */\nexport async function finishAuthentication(authData) {\n const url = generateUrl('/login/webauthn/finish');\n const { data } = await Axios.post(url, { data: JSON.stringify(authData) });\n return data;\n}\n","<template>\n <span v-bind=\"$attrs\"\n :aria-hidden=\"title ? null : true\"\n :aria-label=\"title\"\n class=\"material-design-icon information-icon\"\n role=\"img\"\n @click=\"$emit('click', $event)\">\n <svg :fill=\"fillColor\"\n class=\"material-design-icon__svg\"\n :width=\"size\"\n :height=\"size\"\n viewBox=\"0 0 24 24\">\n <path d=\"M13,9H11V7H13M13,17H11V11H13M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2Z\">\n <title v-if=\"title\">{{ title }}</title>\n </path>\n </svg>\n </span>\n</template>\n\n<script>\nexport default {\n name: \"InformationIcon\",\n emits: ['click'],\n props: {\n title: {\n type: String,\n },\n fillColor: {\n type: String,\n default: \"currentColor\"\n },\n size: {\n type: Number,\n default: 24\n }\n }\n}\n</script>","import mod from \"-!../vue-loader/lib/index.js??vue-loader-options!./Information.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../vue-loader/lib/index.js??vue-loader-options!./Information.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./Information.vue?vue&type=template&id=70e6f3ef\"\nimport script from \"./Information.vue?vue&type=script&lang=js\"\nexport * from \"./Information.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('span',_vm._b({staticClass:\"material-design-icon information-icon\",attrs:{\"aria-hidden\":_vm.title ? null : true,\"aria-label\":_vm.title,\"role\":\"img\"},on:{\"click\":function($event){return _vm.$emit('click', $event)}}},'span',_vm.$attrs,false),[_c('svg',{staticClass:\"material-design-icon__svg\",attrs:{\"fill\":_vm.fillColor,\"width\":_vm.size,\"height\":_vm.size,\"viewBox\":\"0 0 24 24\"}},[_c('path',{attrs:{\"d\":\"M13,9H11V7H13M13,17H11V11H13M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2Z\"}},[(_vm.title)?_c('title',[_vm._v(_vm._s(_vm.title))]):_vm._e()])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../vue-loader/lib/index.js??vue-loader-options!./LockOpen.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../vue-loader/lib/index.js??vue-loader-options!./LockOpen.vue?vue&type=script&lang=js\"","<template>\n <span v-bind=\"$attrs\"\n :aria-hidden=\"title ? null : true\"\n :aria-label=\"title\"\n class=\"material-design-icon lock-open-icon\"\n role=\"img\"\n @click=\"$emit('click', $event)\">\n <svg :fill=\"fillColor\"\n class=\"material-design-icon__svg\"\n :width=\"size\"\n :height=\"size\"\n viewBox=\"0 0 24 24\">\n <path d=\"M18,8A2,2 0 0,1 20,10V20A2,2 0 0,1 18,22H6C4.89,22 4,21.1 4,20V10A2,2 0 0,1 6,8H15V6A3,3 0 0,0 12,3A3,3 0 0,0 9,6H7A5,5 0 0,1 12,1A5,5 0 0,1 17,6V8H18M12,17A2,2 0 0,0 14,15A2,2 0 0,0 12,13A2,2 0 0,0 10,15A2,2 0 0,0 12,17Z\">\n <title v-if=\"title\">{{ title }}</title>\n </path>\n </svg>\n </span>\n</template>\n\n<script>\nexport default {\n name: \"LockOpenIcon\",\n emits: ['click'],\n props: {\n title: {\n type: String,\n },\n fillColor: {\n type: String,\n default: \"currentColor\"\n },\n size: {\n type: Number,\n default: 24\n }\n }\n}\n</script>","import { render, staticRenderFns } from \"./LockOpen.vue?vue&type=template&id=1b7ea4e7\"\nimport script from \"./LockOpen.vue?vue&type=script&lang=js\"\nexport * from \"./LockOpen.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('span',_vm._b({staticClass:\"material-design-icon lock-open-icon\",attrs:{\"aria-hidden\":_vm.title ? null : true,\"aria-label\":_vm.title,\"role\":\"img\"},on:{\"click\":function($event){return _vm.$emit('click', $event)}}},'span',_vm.$attrs,false),[_c('svg',{staticClass:\"material-design-icon__svg\",attrs:{\"fill\":_vm.fillColor,\"width\":_vm.size,\"height\":_vm.size,\"viewBox\":\"0 0 24 24\"}},[_c('path',{attrs:{\"d\":\"M18,8A2,2 0 0,1 20,10V20A2,2 0 0,1 18,22H6C4.89,22 4,21.1 4,20V10A2,2 0 0,1 6,8H15V6A3,3 0 0,0 12,3A3,3 0 0,0 9,6H7A5,5 0 0,1 12,1A5,5 0 0,1 17,6V8H18M12,17A2,2 0 0,0 14,15A2,2 0 0,0 12,13A2,2 0 0,0 10,15A2,2 0 0,0 12,17Z\"}},[(_vm.title)?_c('title',[_vm._v(_vm._s(_vm.title))]):_vm._e()])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\n - SPDX-FileCopyrightText: 2020 Nextcloud GmbH and Nextcloud contributors\n - SPDX-License-Identifier: AGPL-3.0-or-later\n-->\n<template>\n\t<form v-if=\"(isHttps || isLocalhost) && supportsWebauthn\"\n\t\tref=\"loginForm\"\n\t\tmethod=\"post\"\n\t\tname=\"login\"\n\t\t@submit.prevent=\"submit\">\n\t\t<h2>{{ t('core', 'Log in with a device') }}</h2>\n\t\t<fieldset>\n\t\t\t<NcTextField required\n\t\t\t\t:value=\"user\"\n\t\t\t\t:autocomplete=\"autoCompleteAllowed ? 'on' : 'off'\"\n\t\t\t\t:error=\"!validCredentials\"\n\t\t\t\t:label=\"t('core', 'Login or email')\"\n\t\t\t\t:placeholder=\"t('core', 'Login or email')\"\n\t\t\t\t:helper-text=\"!validCredentials ? t('core', 'Your account is not setup for passwordless login.') : ''\"\n\t\t\t\t@update:value=\"changeUsername\" />\n\n\t\t\t<LoginButton v-if=\"validCredentials\"\n\t\t\t\t:loading=\"loading\"\n\t\t\t\t@click=\"authenticate\" />\n\t\t</fieldset>\n\t</form>\n\t<div v-else-if=\"!supportsWebauthn\" class=\"update\">\n\t\t<InformationIcon size=\"70\" />\n\t\t<h2>{{ t('core', 'Browser not supported') }}</h2>\n\t\t<p class=\"infogroup\">\n\t\t\t{{ t('core', 'Passwordless authentication is not supported in your browser.') }}\n\t\t</p>\n\t</div>\n\t<div v-else-if=\"!isHttps && !isLocalhost\" class=\"update\">\n\t\t<LockOpenIcon size=\"70\" />\n\t\t<h2>{{ t('core', 'Your connection is not secure') }}</h2>\n\t\t<p class=\"infogroup\">\n\t\t\t{{ t('core', 'Passwordless authentication is only available over a secure connection.') }}\n\t\t</p>\n\t</div>\n</template>\n\n<script>\nimport { browserSupportsWebAuthn } from '@simplewebauthn/browser'\nimport {\n\tstartAuthentication,\n\tfinishAuthentication,\n} from '../../services/WebAuthnAuthenticationService.ts'\nimport LoginButton from './LoginButton.vue'\nimport InformationIcon from 'vue-material-design-icons/Information.vue'\nimport LockOpenIcon from 'vue-material-design-icons/LockOpen.vue'\nimport NcTextField from '@nextcloud/vue/dist/Components/NcTextField.js'\nimport logger from '../../logger'\n\nexport default {\n\tname: 'PasswordLessLoginForm',\n\tcomponents: {\n\t\tLoginButton,\n\t\tInformationIcon,\n\t\tLockOpenIcon,\n\t\tNcTextField,\n\t},\n\tprops: {\n\t\tusername: {\n\t\t\ttype: String,\n\t\t\tdefault: '',\n\t\t},\n\t\tredirectUrl: {\n\t\t\ttype: [String, Boolean],\n\t\t\tdefault: false,\n\t\t},\n\t\tautoCompleteAllowed: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: true,\n\t\t},\n\t\tisHttps: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\t\tisLocalhost: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\t},\n\n\tsetup() {\n\t\treturn {\n\t\t\tsupportsWebauthn: browserSupportsWebAuthn(),\n\t\t}\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\tuser: this.username,\n\t\t\tloading: false,\n\t\t\tvalidCredentials: true,\n\t\t}\n\t},\n\tmethods: {\n\t\tasync authenticate() {\n\t\t\t// check required fields\n\t\t\tif (!this.$refs.loginForm.checkValidity()) {\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\tconsole.debug('passwordless login initiated')\n\n\t\t\ttry {\n\t\t\t\tconst params = await startAuthentication(this.user)\n\t\t\t\tawait this.completeAuthentication(params)\n\t\t\t} catch (error) {\n\t\t\t\tif (error instanceof NoValidCredentials) {\n\t\t\t\t\tthis.validCredentials = false\n\t\t\t\t\treturn\n\t\t\t\t}\n\t\t\t\tlogger.debug(error)\n\t\t\t}\n\t\t},\n\t\tchangeUsername(username) {\n\t\t\tthis.user = username\n\t\t\tthis.$emit('update:username', this.user)\n\t\t},\n\t\tcompleteAuthentication(challenge) {\n\t\t\tconst redirectUrl = this.redirectUrl\n\n\t\t\treturn finishAuthentication(challenge)\n\t\t\t\t.then(({ defaultRedirectUrl }) => {\n\t\t\t\t\tconsole.debug('Logged in redirecting')\n\t\t\t\t\t// Redirect url might be false so || should be used instead of ??.\n\t\t\t\t\twindow.location.href = redirectUrl || defaultRedirectUrl\n\t\t\t\t})\n\t\t\t\t.catch(error => {\n\t\t\t\t\tconsole.debug('GOT AN ERROR WHILE SUBMITTING CHALLENGE!')\n\t\t\t\t\tconsole.debug(error) // Example: timeout, interaction refused...\n\t\t\t\t})\n\t\t},\n\t\tsubmit() {\n\t\t\t// noop\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\n\tfieldset {\n\t\tdisplay: flex;\n\t\tflex-direction: column;\n\t\tgap: 0.5rem;\n\n\t\t:deep(label) {\n\t\t\ttext-align: initial;\n\t\t}\n\t}\n\n\t.update {\n\t\tmargin: 0 auto;\n\t}\n</style>\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PasswordLessLoginForm.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PasswordLessLoginForm.vue?vue&type=script&lang=js\"","\n import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PasswordLessLoginForm.vue?vue&type=style&index=0&id=4a6bfc86&prod&lang=scss&scoped=true\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PasswordLessLoginForm.vue?vue&type=style&index=0&id=4a6bfc86&prod&lang=scss&scoped=true\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./PasswordLessLoginForm.vue?vue&type=template&id=4a6bfc86&scoped=true\"\nimport script from \"./PasswordLessLoginForm.vue?vue&type=script&lang=js\"\nexport * from \"./PasswordLessLoginForm.vue?vue&type=script&lang=js\"\nimport style0 from \"./PasswordLessLoginForm.vue?vue&type=style&index=0&id=4a6bfc86&prod&lang=scss&scoped=true\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"4a6bfc86\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return ((_vm.isHttps || _vm.isLocalhost) && _vm.supportsWebauthn)?_c('form',{ref:\"loginForm\",attrs:{\"method\":\"post\",\"name\":\"login\"},on:{\"submit\":function($event){$event.preventDefault();return _vm.submit.apply(null, arguments)}}},[_c('h2',[_vm._v(_vm._s(_vm.t('core', 'Log in with a device')))]),_vm._v(\" \"),_c('fieldset',[_c('NcTextField',{attrs:{\"required\":\"\",\"value\":_vm.user,\"autocomplete\":_vm.autoCompleteAllowed ? 'on' : 'off',\"error\":!_vm.validCredentials,\"label\":_vm.t('core', 'Login or email'),\"placeholder\":_vm.t('core', 'Login or email'),\"helper-text\":!_vm.validCredentials ? _vm.t('core', 'Your account is not setup for passwordless login.') : ''},on:{\"update:value\":_vm.changeUsername}}),_vm._v(\" \"),(_vm.validCredentials)?_c('LoginButton',{attrs:{\"loading\":_vm.loading},on:{\"click\":_vm.authenticate}}):_vm._e()],1)]):(!_vm.supportsWebauthn)?_c('div',{staticClass:\"update\"},[_c('InformationIcon',{attrs:{\"size\":\"70\"}}),_vm._v(\" \"),_c('h2',[_vm._v(_vm._s(_vm.t('core', 'Browser not supported')))]),_vm._v(\" \"),_c('p',{staticClass:\"infogroup\"},[_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.t('core', 'Passwordless authentication is not supported in your browser.'))+\"\\n\\t\")])],1):(!_vm.isHttps && !_vm.isLocalhost)?_c('div',{staticClass:\"update\"},[_c('LockOpenIcon',{attrs:{\"size\":\"70\"}}),_vm._v(\" \"),_c('h2',[_vm._v(_vm._s(_vm.t('core', 'Your connection is not secure')))]),_vm._v(\" \"),_c('p',{staticClass:\"infogroup\"},[_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.t('core', 'Passwordless authentication is only available over a secure connection.'))+\"\\n\\t\")])],1):_vm._e()\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('form',{staticClass:\"login-form\",on:{\"submit\":function($event){$event.preventDefault();return _vm.submit.apply(null, arguments)}}},[_c('fieldset',{staticClass:\"login-form__fieldset\"},[_c('NcTextField',{attrs:{\"id\":\"user\",\"value\":_vm.user,\"name\":\"user\",\"maxlength\":255,\"autocapitalize\":\"off\",\"label\":_vm.t('core', 'Login or email'),\"error\":_vm.userNameInputLengthIs255,\"helper-text\":_vm.userInputHelperText,\"required\":\"\"},on:{\"update:value\":function($event){_vm.user=$event},\"change\":_vm.updateUsername}}),_vm._v(\" \"),_c('LoginButton',{attrs:{\"value\":_vm.t('core', 'Reset password')}}),_vm._v(\" \"),(_vm.message === 'send-success')?_c('NcNoteCard',{attrs:{\"type\":\"success\"}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('core', 'If this account exists, a password reset message has been sent to its email address. If you do not receive it, verify your email address and/or Login, check your spam/junk folders or ask your local administration for help.'))+\"\\n\\t\\t\")]):(_vm.message === 'send-error')?_c('NcNoteCard',{attrs:{\"type\":\"error\"}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('core', 'Couldn\\'t send reset email. Please contact your administrator.'))+\"\\n\\t\\t\")]):(_vm.message === 'reset-error')?_c('NcNoteCard',{attrs:{\"type\":\"error\"}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('core', 'Password cannot be changed. Please contact your administrator.'))+\"\\n\\t\\t\")]):_vm._e(),_vm._v(\" \"),_c('a',{staticClass:\"login-form__link\",attrs:{\"href\":\"#\"},on:{\"click\":function($event){$event.preventDefault();return _vm.$emit('abort')}}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('core', 'Back to login'))+\"\\n\\t\\t\")])],1)])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\n - SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\n - SPDX-License-Identifier: AGPL-3.0-or-later\n-->\n\n<template>\n\t<form class=\"login-form\" @submit.prevent=\"submit\">\n\t\t<fieldset class=\"login-form__fieldset\">\n\t\t\t<NcTextField id=\"user\"\n\t\t\t\t:value.sync=\"user\"\n\t\t\t\tname=\"user\"\n\t\t\t\t:maxlength=\"255\"\n\t\t\t\tautocapitalize=\"off\"\n\t\t\t\t:label=\"t('core', 'Login or email')\"\n\t\t\t\t:error=\"userNameInputLengthIs255\"\n\t\t\t\t:helper-text=\"userInputHelperText\"\n\t\t\t\trequired\n\t\t\t\t@change=\"updateUsername\" />\n\t\t\t<LoginButton :value=\"t('core', 'Reset password')\" />\n\n\t\t\t<NcNoteCard v-if=\"message === 'send-success'\"\n\t\t\t\ttype=\"success\">\n\t\t\t\t{{ t('core', 'If this account exists, a password reset message has been sent to its email address. If you do not receive it, verify your email address and/or Login, check your spam/junk folders or ask your local administration for help.') }}\n\t\t\t</NcNoteCard>\n\t\t\t<NcNoteCard v-else-if=\"message === 'send-error'\"\n\t\t\t\ttype=\"error\">\n\t\t\t\t{{ t('core', 'Couldn\\'t send reset email. Please contact your administrator.') }}\n\t\t\t</NcNoteCard>\n\t\t\t<NcNoteCard v-else-if=\"message === 'reset-error'\"\n\t\t\t\ttype=\"error\">\n\t\t\t\t{{ t('core', 'Password cannot be changed. Please contact your administrator.') }}\n\t\t\t</NcNoteCard>\n\n\t\t\t<a class=\"login-form__link\"\n\t\t\t\thref=\"#\"\n\t\t\t\t@click.prevent=\"$emit('abort')\">\n\t\t\t\t{{ t('core', 'Back to login') }}\n\t\t\t</a>\n\t\t</fieldset>\n\t</form>\n</template>\n\n<script>\nimport axios from '@nextcloud/axios'\nimport { generateUrl } from '@nextcloud/router'\nimport LoginButton from './LoginButton.vue'\nimport NcTextField from '@nextcloud/vue/dist/Components/NcTextField.js'\nimport NcNoteCard from '@nextcloud/vue/dist/Components/NcNoteCard.js'\n\nimport AuthMixin from '../../mixins/auth.js'\n\nexport default {\n\tname: 'ResetPassword',\n\tcomponents: {\n\t\tLoginButton,\n\t\tNcNoteCard,\n\t\tNcTextField,\n\t},\n\tmixins: [AuthMixin],\n\tprops: {\n\t\tusername: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t\tresetPasswordLink: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t},\n\tdata() {\n\t\treturn {\n\t\t\terror: false,\n\t\t\tloading: false,\n\t\t\tmessage: undefined,\n\t\t\tuser: this.username,\n\t\t}\n\t},\n\twatch: {\n\t\tusername(value) {\n\t\t\tthis.user = value\n\t\t},\n\t},\n\tmethods: {\n\t\tupdateUsername() {\n\t\t\tthis.$emit('update:username', this.user)\n\t\t},\n\t\tsubmit() {\n\t\t\tthis.loading = true\n\t\t\tthis.error = false\n\t\t\tthis.message = ''\n\t\t\tconst url = generateUrl('/lostpassword/email')\n\n\t\t\tconst data = {\n\t\t\t\tuser: this.user,\n\t\t\t}\n\n\t\t\treturn axios.post(url, data)\n\t\t\t\t.then(resp => resp.data)\n\t\t\t\t.then(data => {\n\t\t\t\t\tif (data.status !== 'success') {\n\t\t\t\t\t\tthrow new Error(`got status ${data.status}`)\n\t\t\t\t\t}\n\n\t\t\t\t\tthis.message = 'send-success'\n\t\t\t\t})\n\t\t\t\t.catch(e => {\n\t\t\t\t\tconsole.error('could not send reset email request', e)\n\n\t\t\t\t\tthis.error = true\n\t\t\t\t\tthis.message = 'send-error'\n\t\t\t\t})\n\t\t\t\t.then(() => { this.loading = false })\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\n.login-form {\n\ttext-align: left;\n\tfont-size: 1rem;\n\n\t&__fieldset {\n\t\twidth: 100%;\n\t\tdisplay: flex;\n\t\tflex-direction: column;\n\t\tgap: .5rem;\n\t}\n\n\t&__link {\n\t\tdisplay: block;\n\t\tfont-weight: normal !important;\n\t\tpadding-bottom: 1rem;\n\t\tcursor: pointer;\n\t\tfont-size: var(--default-font-size);\n\t\ttext-align: center;\n\t\tpadding: .5rem 1rem 1rem 1rem;\n\t}\n}\n</style>\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ResetPassword.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ResetPassword.vue?vue&type=script&lang=js\"","\n import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ResetPassword.vue?vue&type=style&index=0&id=cd5425c6&prod&lang=scss&scoped=true\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ResetPassword.vue?vue&type=style&index=0&id=cd5425c6&prod&lang=scss&scoped=true\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./ResetPassword.vue?vue&type=template&id=cd5425c6&scoped=true\"\nimport script from \"./ResetPassword.vue?vue&type=script&lang=js\"\nexport * from \"./ResetPassword.vue?vue&type=script&lang=js\"\nimport style0 from \"./ResetPassword.vue?vue&type=style&index=0&id=cd5425c6&prod&lang=scss&scoped=true\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"cd5425c6\",\n null\n \n)\n\nexport default component.exports","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./UpdatePassword.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./UpdatePassword.vue?vue&type=script&lang=js\"","<!--\n - SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\n - SPDX-License-Identifier: AGPL-3.0-or-later\n-->\n\n<template>\n\t<form @submit.prevent=\"submit\">\n\t\t<fieldset>\n\t\t\t<p>\n\t\t\t\t<label for=\"password\" class=\"infield\">{{ t('core', 'New password') }}</label>\n\t\t\t\t<input id=\"password\"\n\t\t\t\t\tv-model=\"password\"\n\t\t\t\t\ttype=\"password\"\n\t\t\t\t\tname=\"password\"\n\t\t\t\t\tautocomplete=\"new-password\"\n\t\t\t\t\tautocapitalize=\"none\"\n\t\t\t\t\tspellcheck=\"false\"\n\t\t\t\t\trequired\n\t\t\t\t\t:placeholder=\"t('core', 'New password')\">\n\t\t\t</p>\n\n\t\t\t<div v-if=\"encrypted\" class=\"update\">\n\t\t\t\t<p>\n\t\t\t\t\t{{ t('core', 'Your files are encrypted. There will be no way to get your data back after your password is reset. If you are not sure what to do, please contact your administrator before you continue. Do you really want to continue?') }}\n\t\t\t\t</p>\n\t\t\t\t<input id=\"encrypted-continue\"\n\t\t\t\t\tv-model=\"proceed\"\n\t\t\t\t\ttype=\"checkbox\"\n\t\t\t\t\tclass=\"checkbox\">\n\t\t\t\t<label for=\"encrypted-continue\">\n\t\t\t\t\t{{ t('core', 'I know what I\\'m doing') }}\n\t\t\t\t</label>\n\t\t\t</div>\n\n\t\t\t<LoginButton :loading=\"loading\"\n\t\t\t\t:value=\"t('core', 'Reset password')\"\n\t\t\t\t:value-loading=\"t('core', 'Resetting password')\" />\n\n\t\t\t<p v-if=\"error && message\" :class=\"{warning: error}\">\n\t\t\t\t{{ message }}\n\t\t\t</p>\n\t\t</fieldset>\n\t</form>\n</template>\n\n<script>\nimport Axios from '@nextcloud/axios'\nimport LoginButton from './LoginButton.vue'\n\nexport default {\n\tname: 'UpdatePassword',\n\tcomponents: {\n\t\tLoginButton,\n\t},\n\tprops: {\n\t\tusername: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t\tresetPasswordTarget: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t},\n\tdata() {\n\t\treturn {\n\t\t\terror: false,\n\t\t\tloading: false,\n\t\t\tmessage: undefined,\n\t\t\tuser: this.username,\n\t\t\tpassword: '',\n\t\t\tencrypted: false,\n\t\t\tproceed: false,\n\t\t}\n\t},\n\twatch: {\n\t\tusername(value) {\n\t\t\tthis.user = value\n\t\t},\n\t},\n\tmethods: {\n\t\tasync submit() {\n\t\t\tthis.loading = true\n\t\t\tthis.error = false\n\t\t\tthis.message = ''\n\n\t\t\ttry {\n\t\t\t\tconst { data } = await Axios.post(this.resetPasswordTarget, {\n\t\t\t\t\tpassword: this.password,\n\t\t\t\t\tproceed: this.proceed,\n\t\t\t\t})\n\t\t\t\tif (data && data.status === 'success') {\n\t\t\t\t\tthis.message = 'send-success'\n\t\t\t\t\tthis.$emit('update:username', this.user)\n\t\t\t\t\tthis.$emit('done')\n\t\t\t\t} else if (data && data.encryption) {\n\t\t\t\t\tthis.encrypted = true\n\t\t\t\t} else if (data && data.msg) {\n\t\t\t\t\tthrow new Error(data.msg)\n\t\t\t\t} else {\n\t\t\t\t\tthrow new Error()\n\t\t\t\t}\n\t\t\t} catch (e) {\n\t\t\t\tthis.error = true\n\t\t\t\tthis.message = e.message ? e.message : t('core', 'Password cannot be changed. Please contact your administrator.')\n\t\t\t} finally {\n\t\t\t\tthis.loading = false\n\t\t\t}\n\t\t},\n\t},\n}\n</script>\n\n<style scoped>\n\tfieldset {\n\t\ttext-align: center;\n\t}\n\n\tinput[type=submit] {\n\t\tmargin-top: 20px;\n\t}\n</style>\n","\n import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./UpdatePassword.vue?vue&type=style&index=0&id=6bdd5975&prod&scoped=true&lang=css\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./UpdatePassword.vue?vue&type=style&index=0&id=6bdd5975&prod&scoped=true&lang=css\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./UpdatePassword.vue?vue&type=template&id=6bdd5975&scoped=true\"\nimport script from \"./UpdatePassword.vue?vue&type=script&lang=js\"\nexport * from \"./UpdatePassword.vue?vue&type=script&lang=js\"\nimport style0 from \"./UpdatePassword.vue?vue&type=style&index=0&id=6bdd5975&prod&scoped=true&lang=css\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"6bdd5975\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('form',{on:{\"submit\":function($event){$event.preventDefault();return _vm.submit.apply(null, arguments)}}},[_c('fieldset',[_c('p',[_c('label',{staticClass:\"infield\",attrs:{\"for\":\"password\"}},[_vm._v(_vm._s(_vm.t('core', 'New password')))]),_vm._v(\" \"),_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.password),expression:\"password\"}],attrs:{\"id\":\"password\",\"type\":\"password\",\"name\":\"password\",\"autocomplete\":\"new-password\",\"autocapitalize\":\"none\",\"spellcheck\":\"false\",\"required\":\"\",\"placeholder\":_vm.t('core', 'New password')},domProps:{\"value\":(_vm.password)},on:{\"input\":function($event){if($event.target.composing)return;_vm.password=$event.target.value}}})]),_vm._v(\" \"),(_vm.encrypted)?_c('div',{staticClass:\"update\"},[_c('p',[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('core', 'Your files are encrypted. There will be no way to get your data back after your password is reset. If you are not sure what to do, please contact your administrator before you continue. Do you really want to continue?'))+\"\\n\\t\\t\\t\")]),_vm._v(\" \"),_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.proceed),expression:\"proceed\"}],staticClass:\"checkbox\",attrs:{\"id\":\"encrypted-continue\",\"type\":\"checkbox\"},domProps:{\"checked\":Array.isArray(_vm.proceed)?_vm._i(_vm.proceed,null)>-1:(_vm.proceed)},on:{\"change\":function($event){var $$a=_vm.proceed,$$el=$event.target,$$c=$$el.checked?(true):(false);if(Array.isArray($$a)){var $$v=null,$$i=_vm._i($$a,$$v);if($$el.checked){$$i<0&&(_vm.proceed=$$a.concat([$$v]))}else{$$i>-1&&(_vm.proceed=$$a.slice(0,$$i).concat($$a.slice($$i+1)))}}else{_vm.proceed=$$c}}}}),_vm._v(\" \"),_c('label',{attrs:{\"for\":\"encrypted-continue\"}},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('core', 'I know what I\\'m doing'))+\"\\n\\t\\t\\t\")])]):_vm._e(),_vm._v(\" \"),_c('LoginButton',{attrs:{\"loading\":_vm.loading,\"value\":_vm.t('core', 'Reset password'),\"value-loading\":_vm.t('core', 'Resetting password')}}),_vm._v(\" \"),(_vm.error && _vm.message)?_c('p',{class:{warning: _vm.error}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.message)+\"\\n\\t\\t\")]):_vm._e()],1)])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\n - SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\n - SPDX-License-Identifier: AGPL-3.0-or-later\n-->\n\n<template>\n\t<div class=\"guest-box login-box\">\n\t\t<template v-if=\"!hideLoginForm || directLogin\">\n\t\t\t<transition name=\"fade\" mode=\"out-in\">\n\t\t\t\t<div v-if=\"!passwordlessLogin && !resetPassword && resetPasswordTarget === ''\">\n\t\t\t\t\t<LoginForm :username.sync=\"user\"\n\t\t\t\t\t\t:redirect-url=\"redirectUrl\"\n\t\t\t\t\t\t:direct-login=\"directLogin\"\n\t\t\t\t\t\t:messages=\"messages\"\n\t\t\t\t\t\t:errors=\"errors\"\n\t\t\t\t\t\t:throttle-delay=\"throttleDelay\"\n\t\t\t\t\t\t:auto-complete-allowed=\"autoCompleteAllowed\"\n\t\t\t\t\t\t:email-states=\"emailStates\"\n\t\t\t\t\t\t@submit=\"loading = true\" />\n\t\t\t\t\t<a v-if=\"canResetPassword && resetPasswordLink !== ''\"\n\t\t\t\t\t\tid=\"lost-password\"\n\t\t\t\t\t\tclass=\"login-box__link\"\n\t\t\t\t\t\t:href=\"resetPasswordLink\">\n\t\t\t\t\t\t{{ t('core', 'Forgot password?') }}\n\t\t\t\t\t</a>\n\t\t\t\t\t<a v-else-if=\"canResetPassword && !resetPassword\"\n\t\t\t\t\t\tid=\"lost-password\"\n\t\t\t\t\t\tclass=\"login-box__link\"\n\t\t\t\t\t\t:href=\"resetPasswordLink\"\n\t\t\t\t\t\t@click.prevent=\"resetPassword = true\">\n\t\t\t\t\t\t{{ t('core', 'Forgot password?') }}\n\t\t\t\t\t</a>\n\t\t\t\t\t<template v-if=\"hasPasswordless\">\n\t\t\t\t\t\t<div v-if=\"countAlternativeLogins\"\n\t\t\t\t\t\t\tclass=\"alternative-logins\">\n\t\t\t\t\t\t\t<a v-if=\"hasPasswordless\"\n\t\t\t\t\t\t\t\tclass=\"button\"\n\t\t\t\t\t\t\t\t:class=\"{ 'single-alt-login-option': countAlternativeLogins }\"\n\t\t\t\t\t\t\t\thref=\"#\"\n\t\t\t\t\t\t\t\t@click.prevent=\"passwordlessLogin = true\">\n\t\t\t\t\t\t\t\t{{ t('core', 'Log in with a device') }}\n\t\t\t\t\t\t\t</a>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t<a v-else\n\t\t\t\t\t\t\thref=\"#\"\n\t\t\t\t\t\t\t@click.prevent=\"passwordlessLogin = true\">\n\t\t\t\t\t\t\t{{ t('core', 'Log in with a device') }}\n\t\t\t\t\t\t</a>\n\t\t\t\t\t</template>\n\t\t\t\t</div>\n\t\t\t\t<div v-else-if=\"!loading && passwordlessLogin\"\n\t\t\t\t\tkey=\"reset-pw-less\"\n\t\t\t\t\tclass=\"login-additional login-passwordless\">\n\t\t\t\t\t<PasswordLessLoginForm :username.sync=\"user\"\n\t\t\t\t\t\t:redirect-url=\"redirectUrl\"\n\t\t\t\t\t\t:auto-complete-allowed=\"autoCompleteAllowed\"\n\t\t\t\t\t\t:is-https=\"isHttps\"\n\t\t\t\t\t\t:is-localhost=\"isLocalhost\"\n\t\t\t\t\t\t@submit=\"loading = true\" />\n\t\t\t\t\t<NcButton type=\"tertiary\"\n\t\t\t\t\t\t:aria-label=\"t('core', 'Back to login form')\"\n\t\t\t\t\t\t:wide=\"true\"\n\t\t\t\t\t\t@click=\"passwordlessLogin = false\">\n\t\t\t\t\t\t{{ t('core', 'Back') }}\n\t\t\t\t\t</NcButton>\n\t\t\t\t</div>\n\t\t\t\t<div v-else-if=\"!loading && canResetPassword\"\n\t\t\t\t\tkey=\"reset-can-reset\"\n\t\t\t\t\tclass=\"login-additional\">\n\t\t\t\t\t<div class=\"lost-password-container\">\n\t\t\t\t\t\t<ResetPassword v-if=\"resetPassword\"\n\t\t\t\t\t\t\t:username.sync=\"user\"\n\t\t\t\t\t\t\t:reset-password-link=\"resetPasswordLink\"\n\t\t\t\t\t\t\t@abort=\"resetPassword = false\" />\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t\t<div v-else-if=\"resetPasswordTarget !== ''\">\n\t\t\t\t\t<UpdatePassword :username.sync=\"user\"\n\t\t\t\t\t\t:reset-password-target=\"resetPasswordTarget\"\n\t\t\t\t\t\t@done=\"passwordResetFinished\" />\n\t\t\t\t</div>\n\t\t\t</transition>\n\t\t</template>\n\t\t<template v-else>\n\t\t\t<transition name=\"fade\" mode=\"out-in\">\n\t\t\t\t<NcNoteCard type=\"info\" :title=\"t('core', 'Login form is disabled.')\">\n\t\t\t\t\t{{ t('core', 'The Nextcloud login form is disabled. Use another login option if available or contact your administration.') }}\n\t\t\t\t</NcNoteCard>\n\t\t\t</transition>\n\t\t</template>\n\n\t\t<div id=\"alternative-logins\" class=\"alternative-logins\">\n\t\t\t<NcButton v-for=\"(alternativeLogin, index) in alternativeLogins\"\n\t\t\t\t:key=\"index\"\n\t\t\t\ttype=\"secondary\"\n\t\t\t\t:wide=\"true\"\n\t\t\t\t:class=\"[alternativeLogin.class]\"\n\t\t\t\trole=\"link\"\n\t\t\t\t:href=\"alternativeLogin.href\">\n\t\t\t\t{{ alternativeLogin.name }}\n\t\t\t</NcButton>\n\t\t</div>\n\t</div>\n</template>\n\n<script>\nimport { loadState } from '@nextcloud/initial-state'\nimport queryString from 'query-string'\n\nimport LoginForm from '../components/login/LoginForm.vue'\nimport PasswordLessLoginForm from '../components/login/PasswordLessLoginForm.vue'\nimport ResetPassword from '../components/login/ResetPassword.vue'\nimport UpdatePassword from '../components/login/UpdatePassword.vue'\nimport NcButton from '@nextcloud/vue/dist/Components/NcButton.js'\nimport NcNoteCard from '@nextcloud/vue/dist/Components/NcNoteCard.js'\n\nconst query = queryString.parse(location.search)\nif (query.clear === '1') {\n\ttry {\n\t\twindow.localStorage.clear()\n\t\twindow.sessionStorage.clear()\n\t\tconsole.debug('Browser storage cleared')\n\t} catch (e) {\n\t\tconsole.error('Could not clear browser storage', e)\n\t}\n}\n\nexport default {\n\tname: 'Login',\n\n\tcomponents: {\n\t\tLoginForm,\n\t\tPasswordLessLoginForm,\n\t\tResetPassword,\n\t\tUpdatePassword,\n\t\tNcButton,\n\t\tNcNoteCard,\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\tloading: false,\n\t\t\tuser: loadState('core', 'loginUsername', ''),\n\t\t\tpasswordlessLogin: false,\n\t\t\tresetPassword: false,\n\n\t\t\t// Initial data\n\t\t\terrors: loadState('core', 'loginErrors', []),\n\t\t\tmessages: loadState('core', 'loginMessages', []),\n\t\t\tredirectUrl: loadState('core', 'loginRedirectUrl', false),\n\t\t\tthrottleDelay: loadState('core', 'loginThrottleDelay', 0),\n\t\t\tcanResetPassword: loadState('core', 'loginCanResetPassword', false),\n\t\t\tresetPasswordLink: loadState('core', 'loginResetPasswordLink', ''),\n\t\t\tautoCompleteAllowed: loadState('core', 'loginAutocomplete', true),\n\t\t\tresetPasswordTarget: loadState('core', 'resetPasswordTarget', ''),\n\t\t\tresetPasswordUser: loadState('core', 'resetPasswordUser', ''),\n\t\t\tdirectLogin: query.direct === '1',\n\t\t\thasPasswordless: loadState('core', 'webauthn-available', false),\n\t\t\tcountAlternativeLogins: loadState('core', 'countAlternativeLogins', false),\n\t\t\talternativeLogins: loadState('core', 'alternativeLogins', []),\n\t\t\tisHttps: window.location.protocol === 'https:',\n\t\t\tisLocalhost: window.location.hostname === 'localhost',\n\t\t\thideLoginForm: loadState('core', 'hideLoginForm', false),\n\t\t\temailStates: loadState('core', 'emailStates', []),\n\t\t}\n\t},\n\n\tmethods: {\n\t\tpasswordResetFinished() {\n\t\t\tthis.resetPasswordTarget = ''\n\t\t\tthis.directLogin = true\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\">\nbody {\n\tfont-size: var(--default-font-size);\n}\n\n.login-box {\n\t// Same size as dashboard panels\n\twidth: 320px;\n\tbox-sizing: border-box;\n\n\t&__link {\n\t\tdisplay: block;\n\t\tpadding: 1rem;\n\t\tfont-size: var(--default-font-size);\n\t\ttext-align: center;\n\t\tfont-weight: normal !important;\n\t}\n}\n\n.fade-enter-active, .fade-leave-active {\n\ttransition: opacity .3s;\n}\n.fade-enter, .fade-leave-to /* .fade-leave-active below version 2.1.8 */ {\n\topacity: 0;\n}\n\n.alternative-logins {\n\tdisplay: flex;\n\tflex-direction: column;\n\tgap: 0.75rem;\n\n\t.button-vue {\n\t\tbox-sizing: border-box;\n\t}\n}\n\n.login-passwordless {\n\t.button-vue {\n\t\tmargin-top: 0.5rem;\n\t}\n}\n</style>\n","import mod from \"-!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Login.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Login.vue?vue&type=script&lang=js\"","\n import API from \"!../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/sass-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Login.vue?vue&type=style&index=0&id=6adceba0&prod&lang=scss\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/sass-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Login.vue?vue&type=style&index=0&id=6adceba0&prod&lang=scss\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./Login.vue?vue&type=template&id=6adceba0\"\nimport script from \"./Login.vue?vue&type=script&lang=js\"\nexport * from \"./Login.vue?vue&type=script&lang=js\"\nimport style0 from \"./Login.vue?vue&type=style&index=0&id=6adceba0&prod&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","/**\n * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport L10n from '../OC/l10n.js'\nimport OC from '../OC/index.js'\n\nexport default {\n\tdata() {\n\t\treturn {\n\t\t\tOC,\n\t\t}\n\t},\n\tmethods: {\n\t\tt: L10n.translate.bind(L10n),\n\t\tn: L10n.translatePlural.bind(L10n),\n\t},\n}\n","/**\n * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport Vue from 'vue'\n\n// eslint-disable-next-line no-unused-vars\nimport OC from './OC/index.js' // TODO: Not needed but L10n breaks if removed\nimport LoginView from './views/Login.vue'\nimport Nextcloud from './mixins/Nextcloud.js'\n\nVue.mixin(Nextcloud)\n\nconst View = Vue.extend(LoginView)\nnew View().$mount('#login')\n","// Backbone.js 1.6.0\n\n// (c) 2010-2024 Jeremy Ashkenas and DocumentCloud\n// Backbone may be freely distributed under the MIT license.\n// For all details and documentation:\n// http://backbonejs.org\n\n(function(factory) {\n\n // Establish the root object, `window` (`self`) in the browser, or `global` on the server.\n // We use `self` instead of `window` for `WebWorker` support.\n var root = typeof self == 'object' && self.self === self && self ||\n typeof global == 'object' && global.global === global && global;\n\n // Set up Backbone appropriately for the environment. Start with AMD.\n if (typeof define === 'function' && define.amd) {\n define(['underscore', 'jquery', 'exports'], function(_, $, exports) {\n // Export global even in AMD case in case this script is loaded with\n // others that may still expect a global Backbone.\n root.Backbone = factory(root, exports, _, $);\n });\n\n // Next for Node.js or CommonJS. jQuery may not be needed as a module.\n } else if (typeof exports !== 'undefined') {\n var _ = require('underscore'), $;\n try { $ = require('jquery'); } catch (e) {}\n factory(root, exports, _, $);\n\n // Finally, as a browser global.\n } else {\n root.Backbone = factory(root, {}, root._, root.jQuery || root.Zepto || root.ender || root.$);\n }\n\n})(function(root, Backbone, _, $) {\n\n // Initial Setup\n // -------------\n\n // Save the previous value of the `Backbone` variable, so that it can be\n // restored later on, if `noConflict` is used.\n var previousBackbone = root.Backbone;\n\n // Create a local reference to a common array method we'll want to use later.\n var slice = Array.prototype.slice;\n\n // Current version of the library. Keep in sync with `package.json`.\n Backbone.VERSION = '1.6.0';\n\n // For Backbone's purposes, jQuery, Zepto, Ender, or My Library (kidding) owns\n // the `$` variable.\n Backbone.$ = $;\n\n // Runs Backbone.js in *noConflict* mode, returning the `Backbone` variable\n // to its previous owner. Returns a reference to this Backbone object.\n Backbone.noConflict = function() {\n root.Backbone = previousBackbone;\n return this;\n };\n\n // Turn on `emulateHTTP` to support legacy HTTP servers. Setting this option\n // will fake `\"PATCH\"`, `\"PUT\"` and `\"DELETE\"` requests via the `_method` parameter and\n // set a `X-Http-Method-Override` header.\n Backbone.emulateHTTP = false;\n\n // Turn on `emulateJSON` to support legacy servers that can't deal with direct\n // `application/json` requests ... this will encode the body as\n // `application/x-www-form-urlencoded` instead and will send the model in a\n // form param named `model`.\n Backbone.emulateJSON = false;\n\n // Backbone.Events\n // ---------------\n\n // A module that can be mixed in to *any object* in order to provide it with\n // a custom event channel. You may bind a callback to an event with `on` or\n // remove with `off`; `trigger`-ing an event fires all callbacks in\n // succession.\n //\n // var object = {};\n // _.extend(object, Backbone.Events);\n // object.on('expand', function(){ alert('expanded'); });\n // object.trigger('expand');\n //\n var Events = Backbone.Events = {};\n\n // Regular expression used to split event strings.\n var eventSplitter = /\\s+/;\n\n // A private global variable to share between listeners and listenees.\n var _listening;\n\n // Iterates over the standard `event, callback` (as well as the fancy multiple\n // space-separated events `\"change blur\", callback` and jQuery-style event\n // maps `{event: callback}`).\n var eventsApi = function(iteratee, events, name, callback, opts) {\n var i = 0, names;\n if (name && typeof name === 'object') {\n // Handle event maps.\n if (callback !== void 0 && 'context' in opts && opts.context === void 0) opts.context = callback;\n for (names = _.keys(name); i < names.length ; i++) {\n events = eventsApi(iteratee, events, names[i], name[names[i]], opts);\n }\n } else if (name && eventSplitter.test(name)) {\n // Handle space-separated event names by delegating them individually.\n for (names = name.split(eventSplitter); i < names.length; i++) {\n events = iteratee(events, names[i], callback, opts);\n }\n } else {\n // Finally, standard events.\n events = iteratee(events, name, callback, opts);\n }\n return events;\n };\n\n // Bind an event to a `callback` function. Passing `\"all\"` will bind\n // the callback to all events fired.\n Events.on = function(name, callback, context) {\n this._events = eventsApi(onApi, this._events || {}, name, callback, {\n context: context,\n ctx: this,\n listening: _listening\n });\n\n if (_listening) {\n var listeners = this._listeners || (this._listeners = {});\n listeners[_listening.id] = _listening;\n // Allow the listening to use a counter, instead of tracking\n // callbacks for library interop\n _listening.interop = false;\n }\n\n return this;\n };\n\n // Inversion-of-control versions of `on`. Tell *this* object to listen to\n // an event in another object... keeping track of what it's listening to\n // for easier unbinding later.\n Events.listenTo = function(obj, name, callback) {\n if (!obj) return this;\n var id = obj._listenId || (obj._listenId = _.uniqueId('l'));\n var listeningTo = this._listeningTo || (this._listeningTo = {});\n var listening = _listening = listeningTo[id];\n\n // This object is not listening to any other events on `obj` yet.\n // Setup the necessary references to track the listening callbacks.\n if (!listening) {\n this._listenId || (this._listenId = _.uniqueId('l'));\n listening = _listening = listeningTo[id] = new Listening(this, obj);\n }\n\n // Bind callbacks on obj.\n var error = tryCatchOn(obj, name, callback, this);\n _listening = void 0;\n\n if (error) throw error;\n // If the target obj is not Backbone.Events, track events manually.\n if (listening.interop) listening.on(name, callback);\n\n return this;\n };\n\n // The reducing API that adds a callback to the `events` object.\n var onApi = function(events, name, callback, options) {\n if (callback) {\n var handlers = events[name] || (events[name] = []);\n var context = options.context, ctx = options.ctx, listening = options.listening;\n if (listening) listening.count++;\n\n handlers.push({callback: callback, context: context, ctx: context || ctx, listening: listening});\n }\n return events;\n };\n\n // An try-catch guarded #on function, to prevent poisoning the global\n // `_listening` variable.\n var tryCatchOn = function(obj, name, callback, context) {\n try {\n obj.on(name, callback, context);\n } catch (e) {\n return e;\n }\n };\n\n // Remove one or many callbacks. If `context` is null, removes all\n // callbacks with that function. If `callback` is null, removes all\n // callbacks for the event. If `name` is null, removes all bound\n // callbacks for all events.\n Events.off = function(name, callback, context) {\n if (!this._events) return this;\n this._events = eventsApi(offApi, this._events, name, callback, {\n context: context,\n listeners: this._listeners\n });\n\n return this;\n };\n\n // Tell this object to stop listening to either specific events ... or\n // to every object it's currently listening to.\n Events.stopListening = function(obj, name, callback) {\n var listeningTo = this._listeningTo;\n if (!listeningTo) return this;\n\n var ids = obj ? [obj._listenId] : _.keys(listeningTo);\n for (var i = 0; i < ids.length; i++) {\n var listening = listeningTo[ids[i]];\n\n // If listening doesn't exist, this object is not currently\n // listening to obj. Break out early.\n if (!listening) break;\n\n listening.obj.off(name, callback, this);\n if (listening.interop) listening.off(name, callback);\n }\n if (_.isEmpty(listeningTo)) this._listeningTo = void 0;\n\n return this;\n };\n\n // The reducing API that removes a callback from the `events` object.\n var offApi = function(events, name, callback, options) {\n if (!events) return;\n\n var context = options.context, listeners = options.listeners;\n var i = 0, names;\n\n // Delete all event listeners and \"drop\" events.\n if (!name && !context && !callback) {\n for (names = _.keys(listeners); i < names.length; i++) {\n listeners[names[i]].cleanup();\n }\n return;\n }\n\n names = name ? [name] : _.keys(events);\n for (; i < names.length; i++) {\n name = names[i];\n var handlers = events[name];\n\n // Bail out if there are no events stored.\n if (!handlers) break;\n\n // Find any remaining events.\n var remaining = [];\n for (var j = 0; j < handlers.length; j++) {\n var handler = handlers[j];\n if (\n callback && callback !== handler.callback &&\n callback !== handler.callback._callback ||\n context && context !== handler.context\n ) {\n remaining.push(handler);\n } else {\n var listening = handler.listening;\n if (listening) listening.off(name, callback);\n }\n }\n\n // Replace events if there are any remaining. Otherwise, clean up.\n if (remaining.length) {\n events[name] = remaining;\n } else {\n delete events[name];\n }\n }\n\n return events;\n };\n\n // Bind an event to only be triggered a single time. After the first time\n // the callback is invoked, its listener will be removed. If multiple events\n // are passed in using the space-separated syntax, the handler will fire\n // once for each event, not once for a combination of all events.\n Events.once = function(name, callback, context) {\n // Map the event into a `{event: once}` object.\n var events = eventsApi(onceMap, {}, name, callback, this.off.bind(this));\n if (typeof name === 'string' && context == null) callback = void 0;\n return this.on(events, callback, context);\n };\n\n // Inversion-of-control versions of `once`.\n Events.listenToOnce = function(obj, name, callback) {\n // Map the event into a `{event: once}` object.\n var events = eventsApi(onceMap, {}, name, callback, this.stopListening.bind(this, obj));\n return this.listenTo(obj, events);\n };\n\n // Reduces the event callbacks into a map of `{event: onceWrapper}`.\n // `offer` unbinds the `onceWrapper` after it has been called.\n var onceMap = function(map, name, callback, offer) {\n if (callback) {\n var once = map[name] = _.once(function() {\n offer(name, once);\n callback.apply(this, arguments);\n });\n once._callback = callback;\n }\n return map;\n };\n\n // Trigger one or many events, firing all bound callbacks. Callbacks are\n // passed the same arguments as `trigger` is, apart from the event name\n // (unless you're listening on `\"all\"`, which will cause your callback to\n // receive the true name of the event as the first argument).\n Events.trigger = function(name) {\n if (!this._events) return this;\n\n var length = Math.max(0, arguments.length - 1);\n var args = Array(length);\n for (var i = 0; i < length; i++) args[i] = arguments[i + 1];\n\n eventsApi(triggerApi, this._events, name, void 0, args);\n return this;\n };\n\n // Handles triggering the appropriate event callbacks.\n var triggerApi = function(objEvents, name, callback, args) {\n if (objEvents) {\n var events = objEvents[name];\n var allEvents = objEvents.all;\n if (events && allEvents) allEvents = allEvents.slice();\n if (events) triggerEvents(events, args);\n if (allEvents) triggerEvents(allEvents, [name].concat(args));\n }\n return objEvents;\n };\n\n // A difficult-to-believe, but optimized internal dispatch function for\n // triggering events. Tries to keep the usual cases speedy (most internal\n // Backbone events have 3 arguments).\n var triggerEvents = function(events, args) {\n var ev, i = -1, l = events.length, a1 = args[0], a2 = args[1], a3 = args[2];\n switch (args.length) {\n case 0: while (++i < l) (ev = events[i]).callback.call(ev.ctx); return;\n case 1: while (++i < l) (ev = events[i]).callback.call(ev.ctx, a1); return;\n case 2: while (++i < l) (ev = events[i]).callback.call(ev.ctx, a1, a2); return;\n case 3: while (++i < l) (ev = events[i]).callback.call(ev.ctx, a1, a2, a3); return;\n default: while (++i < l) (ev = events[i]).callback.apply(ev.ctx, args); return;\n }\n };\n\n // A listening class that tracks and cleans up memory bindings\n // when all callbacks have been offed.\n var Listening = function(listener, obj) {\n this.id = listener._listenId;\n this.listener = listener;\n this.obj = obj;\n this.interop = true;\n this.count = 0;\n this._events = void 0;\n };\n\n Listening.prototype.on = Events.on;\n\n // Offs a callback (or several).\n // Uses an optimized counter if the listenee uses Backbone.Events.\n // Otherwise, falls back to manual tracking to support events\n // library interop.\n Listening.prototype.off = function(name, callback) {\n var cleanup;\n if (this.interop) {\n this._events = eventsApi(offApi, this._events, name, callback, {\n context: void 0,\n listeners: void 0\n });\n cleanup = !this._events;\n } else {\n this.count--;\n cleanup = this.count === 0;\n }\n if (cleanup) this.cleanup();\n };\n\n // Cleans up memory bindings between the listener and the listenee.\n Listening.prototype.cleanup = function() {\n delete this.listener._listeningTo[this.obj._listenId];\n if (!this.interop) delete this.obj._listeners[this.id];\n };\n\n // Aliases for backwards compatibility.\n Events.bind = Events.on;\n Events.unbind = Events.off;\n\n // Allow the `Backbone` object to serve as a global event bus, for folks who\n // want global \"pubsub\" in a convenient place.\n _.extend(Backbone, Events);\n\n // Backbone.Model\n // --------------\n\n // Backbone **Models** are the basic data object in the framework --\n // frequently representing a row in a table in a database on your server.\n // A discrete chunk of data and a bunch of useful, related methods for\n // performing computations and transformations on that data.\n\n // Create a new model with the specified attributes. A client id (`cid`)\n // is automatically generated and assigned for you.\n var Model = Backbone.Model = function(attributes, options) {\n var attrs = attributes || {};\n options || (options = {});\n this.preinitialize.apply(this, arguments);\n this.cid = _.uniqueId(this.cidPrefix);\n this.attributes = {};\n if (options.collection) this.collection = options.collection;\n if (options.parse) attrs = this.parse(attrs, options) || {};\n var defaults = _.result(this, 'defaults');\n\n // Just _.defaults would work fine, but the additional _.extends\n // is in there for historical reasons. See #3843.\n attrs = _.defaults(_.extend({}, defaults, attrs), defaults);\n\n this.set(attrs, options);\n this.changed = {};\n this.initialize.apply(this, arguments);\n };\n\n // Attach all inheritable methods to the Model prototype.\n _.extend(Model.prototype, Events, {\n\n // A hash of attributes whose current and previous value differ.\n changed: null,\n\n // The value returned during the last failed validation.\n validationError: null,\n\n // The default name for the JSON `id` attribute is `\"id\"`. MongoDB and\n // CouchDB users may want to set this to `\"_id\"`.\n idAttribute: 'id',\n\n // The prefix is used to create the client id which is used to identify models locally.\n // You may want to override this if you're experiencing name clashes with model ids.\n cidPrefix: 'c',\n\n // preinitialize is an empty function by default. You can override it with a function\n // or object. preinitialize will run before any instantiation logic is run in the Model.\n preinitialize: function(){},\n\n // Initialize is an empty function by default. Override it with your own\n // initialization logic.\n initialize: function(){},\n\n // Return a copy of the model's `attributes` object.\n toJSON: function(options) {\n return _.clone(this.attributes);\n },\n\n // Proxy `Backbone.sync` by default -- but override this if you need\n // custom syncing semantics for *this* particular model.\n sync: function() {\n return Backbone.sync.apply(this, arguments);\n },\n\n // Get the value of an attribute.\n get: function(attr) {\n return this.attributes[attr];\n },\n\n // Get the HTML-escaped value of an attribute.\n escape: function(attr) {\n return _.escape(this.get(attr));\n },\n\n // Returns `true` if the attribute contains a value that is not null\n // or undefined.\n has: function(attr) {\n return this.get(attr) != null;\n },\n\n // Special-cased proxy to underscore's `_.matches` method.\n matches: function(attrs) {\n return !!_.iteratee(attrs, this)(this.attributes);\n },\n\n // Set a hash of model attributes on the object, firing `\"change\"`. This is\n // the core primitive operation of a model, updating the data and notifying\n // anyone who needs to know about the change in state. The heart of the beast.\n set: function(key, val, options) {\n if (key == null) return this;\n\n // Handle both `\"key\", value` and `{key: value}` -style arguments.\n var attrs;\n if (typeof key === 'object') {\n attrs = key;\n options = val;\n } else {\n (attrs = {})[key] = val;\n }\n\n options || (options = {});\n\n // Run validation.\n if (!this._validate(attrs, options)) return false;\n\n // Extract attributes and options.\n var unset = options.unset;\n var silent = options.silent;\n var changes = [];\n var changing = this._changing;\n this._changing = true;\n\n if (!changing) {\n this._previousAttributes = _.clone(this.attributes);\n this.changed = {};\n }\n\n var current = this.attributes;\n var changed = this.changed;\n var prev = this._previousAttributes;\n\n // For each `set` attribute, update or delete the current value.\n for (var attr in attrs) {\n val = attrs[attr];\n if (!_.isEqual(current[attr], val)) changes.push(attr);\n if (!_.isEqual(prev[attr], val)) {\n changed[attr] = val;\n } else {\n delete changed[attr];\n }\n unset ? delete current[attr] : current[attr] = val;\n }\n\n // Update the `id`.\n if (this.idAttribute in attrs) {\n var prevId = this.id;\n this.id = this.get(this.idAttribute);\n this.trigger('changeId', this, prevId, options);\n }\n\n // Trigger all relevant attribute changes.\n if (!silent) {\n if (changes.length) this._pending = options;\n for (var i = 0; i < changes.length; i++) {\n this.trigger('change:' + changes[i], this, current[changes[i]], options);\n }\n }\n\n // You might be wondering why there's a `while` loop here. Changes can\n // be recursively nested within `\"change\"` events.\n if (changing) return this;\n if (!silent) {\n while (this._pending) {\n options = this._pending;\n this._pending = false;\n this.trigger('change', this, options);\n }\n }\n this._pending = false;\n this._changing = false;\n return this;\n },\n\n // Remove an attribute from the model, firing `\"change\"`. `unset` is a noop\n // if the attribute doesn't exist.\n unset: function(attr, options) {\n return this.set(attr, void 0, _.extend({}, options, {unset: true}));\n },\n\n // Clear all attributes on the model, firing `\"change\"`.\n clear: function(options) {\n var attrs = {};\n for (var key in this.attributes) attrs[key] = void 0;\n return this.set(attrs, _.extend({}, options, {unset: true}));\n },\n\n // Determine if the model has changed since the last `\"change\"` event.\n // If you specify an attribute name, determine if that attribute has changed.\n hasChanged: function(attr) {\n if (attr == null) return !_.isEmpty(this.changed);\n return _.has(this.changed, attr);\n },\n\n // Return an object containing all the attributes that have changed, or\n // false if there are no changed attributes. Useful for determining what\n // parts of a view need to be updated and/or what attributes need to be\n // persisted to the server. Unset attributes will be set to undefined.\n // You can also pass an attributes object to diff against the model,\n // determining if there *would be* a change.\n changedAttributes: function(diff) {\n if (!diff) return this.hasChanged() ? _.clone(this.changed) : false;\n var old = this._changing ? this._previousAttributes : this.attributes;\n var changed = {};\n var hasChanged;\n for (var attr in diff) {\n var val = diff[attr];\n if (_.isEqual(old[attr], val)) continue;\n changed[attr] = val;\n hasChanged = true;\n }\n return hasChanged ? changed : false;\n },\n\n // Get the previous value of an attribute, recorded at the time the last\n // `\"change\"` event was fired.\n previous: function(attr) {\n if (attr == null || !this._previousAttributes) return null;\n return this._previousAttributes[attr];\n },\n\n // Get all of the attributes of the model at the time of the previous\n // `\"change\"` event.\n previousAttributes: function() {\n return _.clone(this._previousAttributes);\n },\n\n // Fetch the model from the server, merging the response with the model's\n // local attributes. Any changed attributes will trigger a \"change\" event.\n fetch: function(options) {\n options = _.extend({parse: true}, options);\n var model = this;\n var success = options.success;\n options.success = function(resp) {\n var serverAttrs = options.parse ? model.parse(resp, options) : resp;\n if (!model.set(serverAttrs, options)) return false;\n if (success) success.call(options.context, model, resp, options);\n model.trigger('sync', model, resp, options);\n };\n wrapError(this, options);\n return this.sync('read', this, options);\n },\n\n // Set a hash of model attributes, and sync the model to the server.\n // If the server returns an attributes hash that differs, the model's\n // state will be `set` again.\n save: function(key, val, options) {\n // Handle both `\"key\", value` and `{key: value}` -style arguments.\n var attrs;\n if (key == null || typeof key === 'object') {\n attrs = key;\n options = val;\n } else {\n (attrs = {})[key] = val;\n }\n\n options = _.extend({validate: true, parse: true}, options);\n var wait = options.wait;\n\n // If we're not waiting and attributes exist, save acts as\n // `set(attr).save(null, opts)` with validation. Otherwise, check if\n // the model will be valid when the attributes, if any, are set.\n if (attrs && !wait) {\n if (!this.set(attrs, options)) return false;\n } else if (!this._validate(attrs, options)) {\n return false;\n }\n\n // After a successful server-side save, the client is (optionally)\n // updated with the server-side state.\n var model = this;\n var success = options.success;\n var attributes = this.attributes;\n options.success = function(resp) {\n // Ensure attributes are restored during synchronous saves.\n model.attributes = attributes;\n var serverAttrs = options.parse ? model.parse(resp, options) : resp;\n if (wait) serverAttrs = _.extend({}, attrs, serverAttrs);\n if (serverAttrs && !model.set(serverAttrs, options)) return false;\n if (success) success.call(options.context, model, resp, options);\n model.trigger('sync', model, resp, options);\n };\n wrapError(this, options);\n\n // Set temporary attributes if `{wait: true}` to properly find new ids.\n if (attrs && wait) this.attributes = _.extend({}, attributes, attrs);\n\n var method = this.isNew() ? 'create' : options.patch ? 'patch' : 'update';\n if (method === 'patch' && !options.attrs) options.attrs = attrs;\n var xhr = this.sync(method, this, options);\n\n // Restore attributes.\n this.attributes = attributes;\n\n return xhr;\n },\n\n // Destroy this model on the server if it was already persisted.\n // Optimistically removes the model from its collection, if it has one.\n // If `wait: true` is passed, waits for the server to respond before removal.\n destroy: function(options) {\n options = options ? _.clone(options) : {};\n var model = this;\n var success = options.success;\n var wait = options.wait;\n\n var destroy = function() {\n model.stopListening();\n model.trigger('destroy', model, model.collection, options);\n };\n\n options.success = function(resp) {\n if (wait) destroy();\n if (success) success.call(options.context, model, resp, options);\n if (!model.isNew()) model.trigger('sync', model, resp, options);\n };\n\n var xhr = false;\n if (this.isNew()) {\n _.defer(options.success);\n } else {\n wrapError(this, options);\n xhr = this.sync('delete', this, options);\n }\n if (!wait) destroy();\n return xhr;\n },\n\n // Default URL for the model's representation on the server -- if you're\n // using Backbone's restful methods, override this to change the endpoint\n // that will be called.\n url: function() {\n var base =\n _.result(this, 'urlRoot') ||\n _.result(this.collection, 'url') ||\n urlError();\n if (this.isNew()) return base;\n var id = this.get(this.idAttribute);\n return base.replace(/[^\\/]$/, '$&/') + encodeURIComponent(id);\n },\n\n // **parse** converts a response into the hash of attributes to be `set` on\n // the model. The default implementation is just to pass the response along.\n parse: function(resp, options) {\n return resp;\n },\n\n // Create a new model with identical attributes to this one.\n clone: function() {\n return new this.constructor(this.attributes);\n },\n\n // A model is new if it has never been saved to the server, and lacks an id.\n isNew: function() {\n return !this.has(this.idAttribute);\n },\n\n // Check if the model is currently in a valid state.\n isValid: function(options) {\n return this._validate({}, _.extend({}, options, {validate: true}));\n },\n\n // Run validation against the next complete set of model attributes,\n // returning `true` if all is well. Otherwise, fire an `\"invalid\"` event.\n _validate: function(attrs, options) {\n if (!options.validate || !this.validate) return true;\n attrs = _.extend({}, this.attributes, attrs);\n var error = this.validationError = this.validate(attrs, options) || null;\n if (!error) return true;\n this.trigger('invalid', this, error, _.extend(options, {validationError: error}));\n return false;\n }\n\n });\n\n // Backbone.Collection\n // -------------------\n\n // If models tend to represent a single row of data, a Backbone Collection is\n // more analogous to a table full of data ... or a small slice or page of that\n // table, or a collection of rows that belong together for a particular reason\n // -- all of the messages in this particular folder, all of the documents\n // belonging to this particular author, and so on. Collections maintain\n // indexes of their models, both in order, and for lookup by `id`.\n\n // Create a new **Collection**, perhaps to contain a specific type of `model`.\n // If a `comparator` is specified, the Collection will maintain\n // its models in sort order, as they're added and removed.\n var Collection = Backbone.Collection = function(models, options) {\n options || (options = {});\n this.preinitialize.apply(this, arguments);\n if (options.model) this.model = options.model;\n if (options.comparator !== void 0) this.comparator = options.comparator;\n this._reset();\n this.initialize.apply(this, arguments);\n if (models) this.reset(models, _.extend({silent: true}, options));\n };\n\n // Default options for `Collection#set`.\n var setOptions = {add: true, remove: true, merge: true};\n var addOptions = {add: true, remove: false};\n\n // Splices `insert` into `array` at index `at`.\n var splice = function(array, insert, at) {\n at = Math.min(Math.max(at, 0), array.length);\n var tail = Array(array.length - at);\n var length = insert.length;\n var i;\n for (i = 0; i < tail.length; i++) tail[i] = array[i + at];\n for (i = 0; i < length; i++) array[i + at] = insert[i];\n for (i = 0; i < tail.length; i++) array[i + length + at] = tail[i];\n };\n\n // Define the Collection's inheritable methods.\n _.extend(Collection.prototype, Events, {\n\n // The default model for a collection is just a **Backbone.Model**.\n // This should be overridden in most cases.\n model: Model,\n\n\n // preinitialize is an empty function by default. You can override it with a function\n // or object. preinitialize will run before any instantiation logic is run in the Collection.\n preinitialize: function(){},\n\n // Initialize is an empty function by default. Override it with your own\n // initialization logic.\n initialize: function(){},\n\n // The JSON representation of a Collection is an array of the\n // models' attributes.\n toJSON: function(options) {\n return this.map(function(model) { return model.toJSON(options); });\n },\n\n // Proxy `Backbone.sync` by default.\n sync: function() {\n return Backbone.sync.apply(this, arguments);\n },\n\n // Add a model, or list of models to the set. `models` may be Backbone\n // Models or raw JavaScript objects to be converted to Models, or any\n // combination of the two.\n add: function(models, options) {\n return this.set(models, _.extend({merge: false}, options, addOptions));\n },\n\n // Remove a model, or a list of models from the set.\n remove: function(models, options) {\n options = _.extend({}, options);\n var singular = !_.isArray(models);\n models = singular ? [models] : models.slice();\n var removed = this._removeModels(models, options);\n if (!options.silent && removed.length) {\n options.changes = {added: [], merged: [], removed: removed};\n this.trigger('update', this, options);\n }\n return singular ? removed[0] : removed;\n },\n\n // Update a collection by `set`-ing a new list of models, adding new ones,\n // removing models that are no longer present, and merging models that\n // already exist in the collection, as necessary. Similar to **Model#set**,\n // the core operation for updating the data contained by the collection.\n set: function(models, options) {\n if (models == null) return;\n\n options = _.extend({}, setOptions, options);\n if (options.parse && !this._isModel(models)) {\n models = this.parse(models, options) || [];\n }\n\n var singular = !_.isArray(models);\n models = singular ? [models] : models.slice();\n\n var at = options.at;\n if (at != null) at = +at;\n if (at > this.length) at = this.length;\n if (at < 0) at += this.length + 1;\n\n var set = [];\n var toAdd = [];\n var toMerge = [];\n var toRemove = [];\n var modelMap = {};\n\n var add = options.add;\n var merge = options.merge;\n var remove = options.remove;\n\n var sort = false;\n var sortable = this.comparator && at == null && options.sort !== false;\n var sortAttr = _.isString(this.comparator) ? this.comparator : null;\n\n // Turn bare objects into model references, and prevent invalid models\n // from being added.\n var model, i;\n for (i = 0; i < models.length; i++) {\n model = models[i];\n\n // If a duplicate is found, prevent it from being added and\n // optionally merge it into the existing model.\n var existing = this.get(model);\n if (existing) {\n if (merge && model !== existing) {\n var attrs = this._isModel(model) ? model.attributes : model;\n if (options.parse) attrs = existing.parse(attrs, options);\n existing.set(attrs, options);\n toMerge.push(existing);\n if (sortable && !sort) sort = existing.hasChanged(sortAttr);\n }\n if (!modelMap[existing.cid]) {\n modelMap[existing.cid] = true;\n set.push(existing);\n }\n models[i] = existing;\n\n // If this is a new, valid model, push it to the `toAdd` list.\n } else if (add) {\n model = models[i] = this._prepareModel(model, options);\n if (model) {\n toAdd.push(model);\n this._addReference(model, options);\n modelMap[model.cid] = true;\n set.push(model);\n }\n }\n }\n\n // Remove stale models.\n if (remove) {\n for (i = 0; i < this.length; i++) {\n model = this.models[i];\n if (!modelMap[model.cid]) toRemove.push(model);\n }\n if (toRemove.length) this._removeModels(toRemove, options);\n }\n\n // See if sorting is needed, update `length` and splice in new models.\n var orderChanged = false;\n var replace = !sortable && add && remove;\n if (set.length && replace) {\n orderChanged = this.length !== set.length || _.some(this.models, function(m, index) {\n return m !== set[index];\n });\n this.models.length = 0;\n splice(this.models, set, 0);\n this.length = this.models.length;\n } else if (toAdd.length) {\n if (sortable) sort = true;\n splice(this.models, toAdd, at == null ? this.length : at);\n this.length = this.models.length;\n }\n\n // Silently sort the collection if appropriate.\n if (sort) this.sort({silent: true});\n\n // Unless silenced, it's time to fire all appropriate add/sort/update events.\n if (!options.silent) {\n for (i = 0; i < toAdd.length; i++) {\n if (at != null) options.index = at + i;\n model = toAdd[i];\n model.trigger('add', model, this, options);\n }\n if (sort || orderChanged) this.trigger('sort', this, options);\n if (toAdd.length || toRemove.length || toMerge.length) {\n options.changes = {\n added: toAdd,\n removed: toRemove,\n merged: toMerge\n };\n this.trigger('update', this, options);\n }\n }\n\n // Return the added (or merged) model (or models).\n return singular ? models[0] : models;\n },\n\n // When you have more items than you want to add or remove individually,\n // you can reset the entire set with a new list of models, without firing\n // any granular `add` or `remove` events. Fires `reset` when finished.\n // Useful for bulk operations and optimizations.\n reset: function(models, options) {\n options = options ? _.clone(options) : {};\n for (var i = 0; i < this.models.length; i++) {\n this._removeReference(this.models[i], options);\n }\n options.previousModels = this.models;\n this._reset();\n models = this.add(models, _.extend({silent: true}, options));\n if (!options.silent) this.trigger('reset', this, options);\n return models;\n },\n\n // Add a model to the end of the collection.\n push: function(model, options) {\n return this.add(model, _.extend({at: this.length}, options));\n },\n\n // Remove a model from the end of the collection.\n pop: function(options) {\n var model = this.at(this.length - 1);\n return this.remove(model, options);\n },\n\n // Add a model to the beginning of the collection.\n unshift: function(model, options) {\n return this.add(model, _.extend({at: 0}, options));\n },\n\n // Remove a model from the beginning of the collection.\n shift: function(options) {\n var model = this.at(0);\n return this.remove(model, options);\n },\n\n // Slice out a sub-array of models from the collection.\n slice: function() {\n return slice.apply(this.models, arguments);\n },\n\n // Get a model from the set by id, cid, model object with id or cid\n // properties, or an attributes object that is transformed through modelId.\n get: function(obj) {\n if (obj == null) return void 0;\n return this._byId[obj] ||\n this._byId[this.modelId(this._isModel(obj) ? obj.attributes : obj, obj.idAttribute)] ||\n obj.cid && this._byId[obj.cid];\n },\n\n // Returns `true` if the model is in the collection.\n has: function(obj) {\n return this.get(obj) != null;\n },\n\n // Get the model at the given index.\n at: function(index) {\n if (index < 0) index += this.length;\n return this.models[index];\n },\n\n // Return models with matching attributes. Useful for simple cases of\n // `filter`.\n where: function(attrs, first) {\n return this[first ? 'find' : 'filter'](attrs);\n },\n\n // Return the first model with matching attributes. Useful for simple cases\n // of `find`.\n findWhere: function(attrs) {\n return this.where(attrs, true);\n },\n\n // Force the collection to re-sort itself. You don't need to call this under\n // normal circumstances, as the set will maintain sort order as each item\n // is added.\n sort: function(options) {\n var comparator = this.comparator;\n if (!comparator) throw new Error('Cannot sort a set without a comparator');\n options || (options = {});\n\n var length = comparator.length;\n if (_.isFunction(comparator)) comparator = comparator.bind(this);\n\n // Run sort based on type of `comparator`.\n if (length === 1 || _.isString(comparator)) {\n this.models = this.sortBy(comparator);\n } else {\n this.models.sort(comparator);\n }\n if (!options.silent) this.trigger('sort', this, options);\n return this;\n },\n\n // Pluck an attribute from each model in the collection.\n pluck: function(attr) {\n return this.map(attr + '');\n },\n\n // Fetch the default set of models for this collection, resetting the\n // collection when they arrive. If `reset: true` is passed, the response\n // data will be passed through the `reset` method instead of `set`.\n fetch: function(options) {\n options = _.extend({parse: true}, options);\n var success = options.success;\n var collection = this;\n options.success = function(resp) {\n var method = options.reset ? 'reset' : 'set';\n collection[method](resp, options);\n if (success) success.call(options.context, collection, resp, options);\n collection.trigger('sync', collection, resp, options);\n };\n wrapError(this, options);\n return this.sync('read', this, options);\n },\n\n // Create a new instance of a model in this collection. Add the model to the\n // collection immediately, unless `wait: true` is passed, in which case we\n // wait for the server to agree.\n create: function(model, options) {\n options = options ? _.clone(options) : {};\n var wait = options.wait;\n model = this._prepareModel(model, options);\n if (!model) return false;\n if (!wait) this.add(model, options);\n var collection = this;\n var success = options.success;\n options.success = function(m, resp, callbackOpts) {\n if (wait) {\n m.off('error', collection._forwardPristineError, collection);\n collection.add(m, callbackOpts);\n }\n if (success) success.call(callbackOpts.context, m, resp, callbackOpts);\n };\n // In case of wait:true, our collection is not listening to any\n // of the model's events yet, so it will not forward the error\n // event. In this special case, we need to listen for it\n // separately and handle the event just once.\n // (The reason we don't need to do this for the sync event is\n // in the success handler above: we add the model first, which\n // causes the collection to listen, and then invoke the callback\n // that triggers the event.)\n if (wait) {\n model.once('error', this._forwardPristineError, this);\n }\n model.save(null, options);\n return model;\n },\n\n // **parse** converts a response into a list of models to be added to the\n // collection. The default implementation is just to pass it through.\n parse: function(resp, options) {\n return resp;\n },\n\n // Create a new collection with an identical list of models as this one.\n clone: function() {\n return new this.constructor(this.models, {\n model: this.model,\n comparator: this.comparator\n });\n },\n\n // Define how to uniquely identify models in the collection.\n modelId: function(attrs, idAttribute) {\n return attrs[idAttribute || this.model.prototype.idAttribute || 'id'];\n },\n\n // Get an iterator of all models in this collection.\n values: function() {\n return new CollectionIterator(this, ITERATOR_VALUES);\n },\n\n // Get an iterator of all model IDs in this collection.\n keys: function() {\n return new CollectionIterator(this, ITERATOR_KEYS);\n },\n\n // Get an iterator of all [ID, model] tuples in this collection.\n entries: function() {\n return new CollectionIterator(this, ITERATOR_KEYSVALUES);\n },\n\n // Private method to reset all internal state. Called when the collection\n // is first initialized or reset.\n _reset: function() {\n this.length = 0;\n this.models = [];\n this._byId = {};\n },\n\n // Prepare a hash of attributes (or other model) to be added to this\n // collection.\n _prepareModel: function(attrs, options) {\n if (this._isModel(attrs)) {\n if (!attrs.collection) attrs.collection = this;\n return attrs;\n }\n options = options ? _.clone(options) : {};\n options.collection = this;\n\n var model;\n if (this.model.prototype) {\n model = new this.model(attrs, options);\n } else {\n // ES class methods didn't have prototype\n model = this.model(attrs, options);\n }\n\n if (!model.validationError) return model;\n this.trigger('invalid', this, model.validationError, options);\n return false;\n },\n\n // Internal method called by both remove and set.\n _removeModels: function(models, options) {\n var removed = [];\n for (var i = 0; i < models.length; i++) {\n var model = this.get(models[i]);\n if (!model) continue;\n\n var index = this.indexOf(model);\n this.models.splice(index, 1);\n this.length--;\n\n // Remove references before triggering 'remove' event to prevent an\n // infinite loop. #3693\n delete this._byId[model.cid];\n var id = this.modelId(model.attributes, model.idAttribute);\n if (id != null) delete this._byId[id];\n\n if (!options.silent) {\n options.index = index;\n model.trigger('remove', model, this, options);\n }\n\n removed.push(model);\n this._removeReference(model, options);\n }\n if (models.length > 0 && !options.silent) delete options.index;\n return removed;\n },\n\n // Method for checking whether an object should be considered a model for\n // the purposes of adding to the collection.\n _isModel: function(model) {\n return model instanceof Model;\n },\n\n // Internal method to create a model's ties to a collection.\n _addReference: function(model, options) {\n this._byId[model.cid] = model;\n var id = this.modelId(model.attributes, model.idAttribute);\n if (id != null) this._byId[id] = model;\n model.on('all', this._onModelEvent, this);\n },\n\n // Internal method to sever a model's ties to a collection.\n _removeReference: function(model, options) {\n delete this._byId[model.cid];\n var id = this.modelId(model.attributes, model.idAttribute);\n if (id != null) delete this._byId[id];\n if (this === model.collection) delete model.collection;\n model.off('all', this._onModelEvent, this);\n },\n\n // Internal method called every time a model in the set fires an event.\n // Sets need to update their indexes when models change ids. All other\n // events simply proxy through. \"add\" and \"remove\" events that originate\n // in other collections are ignored.\n _onModelEvent: function(event, model, collection, options) {\n if (model) {\n if ((event === 'add' || event === 'remove') && collection !== this) return;\n if (event === 'destroy') this.remove(model, options);\n if (event === 'changeId') {\n var prevId = this.modelId(model.previousAttributes(), model.idAttribute);\n var id = this.modelId(model.attributes, model.idAttribute);\n if (prevId != null) delete this._byId[prevId];\n if (id != null) this._byId[id] = model;\n }\n }\n this.trigger.apply(this, arguments);\n },\n\n // Internal callback method used in `create`. It serves as a\n // stand-in for the `_onModelEvent` method, which is not yet bound\n // during the `wait` period of the `create` call. We still want to\n // forward any `'error'` event at the end of the `wait` period,\n // hence a customized callback.\n _forwardPristineError: function(model, collection, options) {\n // Prevent double forward if the model was already in the\n // collection before the call to `create`.\n if (this.has(model)) return;\n this._onModelEvent('error', model, collection, options);\n }\n });\n\n // Defining an @@iterator method implements JavaScript's Iterable protocol.\n // In modern ES2015 browsers, this value is found at Symbol.iterator.\n /* global Symbol */\n var $$iterator = typeof Symbol === 'function' && Symbol.iterator;\n if ($$iterator) {\n Collection.prototype[$$iterator] = Collection.prototype.values;\n }\n\n // CollectionIterator\n // ------------------\n\n // A CollectionIterator implements JavaScript's Iterator protocol, allowing the\n // use of `for of` loops in modern browsers and interoperation between\n // Backbone.Collection and other JavaScript functions and third-party libraries\n // which can operate on Iterables.\n var CollectionIterator = function(collection, kind) {\n this._collection = collection;\n this._kind = kind;\n this._index = 0;\n };\n\n // This \"enum\" defines the three possible kinds of values which can be emitted\n // by a CollectionIterator that correspond to the values(), keys() and entries()\n // methods on Collection, respectively.\n var ITERATOR_VALUES = 1;\n var ITERATOR_KEYS = 2;\n var ITERATOR_KEYSVALUES = 3;\n\n // All Iterators should themselves be Iterable.\n if ($$iterator) {\n CollectionIterator.prototype[$$iterator] = function() {\n return this;\n };\n }\n\n CollectionIterator.prototype.next = function() {\n if (this._collection) {\n\n // Only continue iterating if the iterated collection is long enough.\n if (this._index < this._collection.length) {\n var model = this._collection.at(this._index);\n this._index++;\n\n // Construct a value depending on what kind of values should be iterated.\n var value;\n if (this._kind === ITERATOR_VALUES) {\n value = model;\n } else {\n var id = this._collection.modelId(model.attributes, model.idAttribute);\n if (this._kind === ITERATOR_KEYS) {\n value = id;\n } else { // ITERATOR_KEYSVALUES\n value = [id, model];\n }\n }\n return {value: value, done: false};\n }\n\n // Once exhausted, remove the reference to the collection so future\n // calls to the next method always return done.\n this._collection = void 0;\n }\n\n return {value: void 0, done: true};\n };\n\n // Backbone.View\n // -------------\n\n // Backbone Views are almost more convention than they are actual code. A View\n // is simply a JavaScript object that represents a logical chunk of UI in the\n // DOM. This might be a single item, an entire list, a sidebar or panel, or\n // even the surrounding frame which wraps your whole app. Defining a chunk of\n // UI as a **View** allows you to define your DOM events declaratively, without\n // having to worry about render order ... and makes it easy for the view to\n // react to specific changes in the state of your models.\n\n // Creating a Backbone.View creates its initial element outside of the DOM,\n // if an existing element is not provided...\n var View = Backbone.View = function(options) {\n this.cid = _.uniqueId('view');\n this.preinitialize.apply(this, arguments);\n _.extend(this, _.pick(options, viewOptions));\n this._ensureElement();\n this.initialize.apply(this, arguments);\n };\n\n // Cached regex to split keys for `delegate`.\n var delegateEventSplitter = /^(\\S+)\\s*(.*)$/;\n\n // List of view options to be set as properties.\n var viewOptions = ['model', 'collection', 'el', 'id', 'attributes', 'className', 'tagName', 'events'];\n\n // Set up all inheritable **Backbone.View** properties and methods.\n _.extend(View.prototype, Events, {\n\n // The default `tagName` of a View's element is `\"div\"`.\n tagName: 'div',\n\n // jQuery delegate for element lookup, scoped to DOM elements within the\n // current view. This should be preferred to global lookups where possible.\n $: function(selector) {\n return this.$el.find(selector);\n },\n\n // preinitialize is an empty function by default. You can override it with a function\n // or object. preinitialize will run before any instantiation logic is run in the View\n preinitialize: function(){},\n\n // Initialize is an empty function by default. Override it with your own\n // initialization logic.\n initialize: function(){},\n\n // **render** is the core function that your view should override, in order\n // to populate its element (`this.el`), with the appropriate HTML. The\n // convention is for **render** to always return `this`.\n render: function() {\n return this;\n },\n\n // Remove this view by taking the element out of the DOM, and removing any\n // applicable Backbone.Events listeners.\n remove: function() {\n this._removeElement();\n this.stopListening();\n return this;\n },\n\n // Remove this view's element from the document and all event listeners\n // attached to it. Exposed for subclasses using an alternative DOM\n // manipulation API.\n _removeElement: function() {\n this.$el.remove();\n },\n\n // Change the view's element (`this.el` property) and re-delegate the\n // view's events on the new element.\n setElement: function(element) {\n this.undelegateEvents();\n this._setElement(element);\n this.delegateEvents();\n return this;\n },\n\n // Creates the `this.el` and `this.$el` references for this view using the\n // given `el`. `el` can be a CSS selector or an HTML string, a jQuery\n // context or an element. Subclasses can override this to utilize an\n // alternative DOM manipulation API and are only required to set the\n // `this.el` property.\n _setElement: function(el) {\n this.$el = el instanceof Backbone.$ ? el : Backbone.$(el);\n this.el = this.$el[0];\n },\n\n // Set callbacks, where `this.events` is a hash of\n //\n // *{\"event selector\": \"callback\"}*\n //\n // {\n // 'mousedown .title': 'edit',\n // 'click .button': 'save',\n // 'click .open': function(e) { ... }\n // }\n //\n // pairs. Callbacks will be bound to the view, with `this` set properly.\n // Uses event delegation for efficiency.\n // Omitting the selector binds the event to `this.el`.\n delegateEvents: function(events) {\n events || (events = _.result(this, 'events'));\n if (!events) return this;\n this.undelegateEvents();\n for (var key in events) {\n var method = events[key];\n if (!_.isFunction(method)) method = this[method];\n if (!method) continue;\n var match = key.match(delegateEventSplitter);\n this.delegate(match[1], match[2], method.bind(this));\n }\n return this;\n },\n\n // Add a single event listener to the view's element (or a child element\n // using `selector`). This only works for delegate-able events: not `focus`,\n // `blur`, and not `change`, `submit`, and `reset` in Internet Explorer.\n delegate: function(eventName, selector, listener) {\n this.$el.on(eventName + '.delegateEvents' + this.cid, selector, listener);\n return this;\n },\n\n // Clears all callbacks previously bound to the view by `delegateEvents`.\n // You usually don't need to use this, but may wish to if you have multiple\n // Backbone views attached to the same DOM element.\n undelegateEvents: function() {\n if (this.$el) this.$el.off('.delegateEvents' + this.cid);\n return this;\n },\n\n // A finer-grained `undelegateEvents` for removing a single delegated event.\n // `selector` and `listener` are both optional.\n undelegate: function(eventName, selector, listener) {\n this.$el.off(eventName + '.delegateEvents' + this.cid, selector, listener);\n return this;\n },\n\n // Produces a DOM element to be assigned to your view. Exposed for\n // subclasses using an alternative DOM manipulation API.\n _createElement: function(tagName) {\n return document.createElement(tagName);\n },\n\n // Ensure that the View has a DOM element to render into.\n // If `this.el` is a string, pass it through `$()`, take the first\n // matching element, and re-assign it to `el`. Otherwise, create\n // an element from the `id`, `className` and `tagName` properties.\n _ensureElement: function() {\n if (!this.el) {\n var attrs = _.extend({}, _.result(this, 'attributes'));\n if (this.id) attrs.id = _.result(this, 'id');\n if (this.className) attrs['class'] = _.result(this, 'className');\n this.setElement(this._createElement(_.result(this, 'tagName')));\n this._setAttributes(attrs);\n } else {\n this.setElement(_.result(this, 'el'));\n }\n },\n\n // Set attributes from a hash on this view's element. Exposed for\n // subclasses using an alternative DOM manipulation API.\n _setAttributes: function(attributes) {\n this.$el.attr(attributes);\n }\n\n });\n\n // Proxy Backbone class methods to Underscore functions, wrapping the model's\n // `attributes` object or collection's `models` array behind the scenes.\n //\n // collection.filter(function(model) { return model.get('age') > 10 });\n // collection.each(this.addView);\n //\n // `Function#apply` can be slow so we use the method's arg count, if we know it.\n var addMethod = function(base, length, method, attribute) {\n switch (length) {\n case 1: return function() {\n return base[method](this[attribute]);\n };\n case 2: return function(value) {\n return base[method](this[attribute], value);\n };\n case 3: return function(iteratee, context) {\n return base[method](this[attribute], cb(iteratee, this), context);\n };\n case 4: return function(iteratee, defaultVal, context) {\n return base[method](this[attribute], cb(iteratee, this), defaultVal, context);\n };\n default: return function() {\n var args = slice.call(arguments);\n args.unshift(this[attribute]);\n return base[method].apply(base, args);\n };\n }\n };\n\n var addUnderscoreMethods = function(Class, base, methods, attribute) {\n _.each(methods, function(length, method) {\n if (base[method]) Class.prototype[method] = addMethod(base, length, method, attribute);\n });\n };\n\n // Support `collection.sortBy('attr')` and `collection.findWhere({id: 1})`.\n var cb = function(iteratee, instance) {\n if (_.isFunction(iteratee)) return iteratee;\n if (_.isObject(iteratee) && !instance._isModel(iteratee)) return modelMatcher(iteratee);\n if (_.isString(iteratee)) return function(model) { return model.get(iteratee); };\n return iteratee;\n };\n var modelMatcher = function(attrs) {\n var matcher = _.matches(attrs);\n return function(model) {\n return matcher(model.attributes);\n };\n };\n\n // Underscore methods that we want to implement on the Collection.\n // 90% of the core usefulness of Backbone Collections is actually implemented\n // right here:\n var collectionMethods = {forEach: 3, each: 3, map: 3, collect: 3, reduce: 0,\n foldl: 0, inject: 0, reduceRight: 0, foldr: 0, find: 3, detect: 3, filter: 3,\n select: 3, reject: 3, every: 3, all: 3, some: 3, any: 3, include: 3, includes: 3,\n contains: 3, invoke: 0, max: 3, min: 3, toArray: 1, size: 1, first: 3,\n head: 3, take: 3, initial: 3, rest: 3, tail: 3, drop: 3, last: 3,\n without: 0, difference: 0, indexOf: 3, shuffle: 1, lastIndexOf: 3,\n isEmpty: 1, chain: 1, sample: 3, partition: 3, groupBy: 3, countBy: 3,\n sortBy: 3, indexBy: 3, findIndex: 3, findLastIndex: 3};\n\n\n // Underscore methods that we want to implement on the Model, mapped to the\n // number of arguments they take.\n var modelMethods = {keys: 1, values: 1, pairs: 1, invert: 1, pick: 0,\n omit: 0, chain: 1, isEmpty: 1};\n\n // Mix in each Underscore method as a proxy to `Collection#models`.\n\n _.each([\n [Collection, collectionMethods, 'models'],\n [Model, modelMethods, 'attributes']\n ], function(config) {\n var Base = config[0],\n methods = config[1],\n attribute = config[2];\n\n Base.mixin = function(obj) {\n var mappings = _.reduce(_.functions(obj), function(memo, name) {\n memo[name] = 0;\n return memo;\n }, {});\n addUnderscoreMethods(Base, obj, mappings, attribute);\n };\n\n addUnderscoreMethods(Base, _, methods, attribute);\n });\n\n // Backbone.sync\n // -------------\n\n // Override this function to change the manner in which Backbone persists\n // models to the server. You will be passed the type of request, and the\n // model in question. By default, makes a RESTful Ajax request\n // to the model's `url()`. Some possible customizations could be:\n //\n // * Use `setTimeout` to batch rapid-fire updates into a single request.\n // * Send up the models as XML instead of JSON.\n // * Persist models via WebSockets instead of Ajax.\n //\n // Turn on `Backbone.emulateHTTP` in order to send `PUT` and `DELETE` requests\n // as `POST`, with a `_method` parameter containing the true HTTP method,\n // as well as all requests with the body as `application/x-www-form-urlencoded`\n // instead of `application/json` with the model in a param named `model`.\n // Useful when interfacing with server-side languages like **PHP** that make\n // it difficult to read the body of `PUT` requests.\n Backbone.sync = function(method, model, options) {\n var type = methodMap[method];\n\n // Default options, unless specified.\n _.defaults(options || (options = {}), {\n emulateHTTP: Backbone.emulateHTTP,\n emulateJSON: Backbone.emulateJSON\n });\n\n // Default JSON-request options.\n var params = {type: type, dataType: 'json'};\n\n // Ensure that we have a URL.\n if (!options.url) {\n params.url = _.result(model, 'url') || urlError();\n }\n\n // Ensure that we have the appropriate request data.\n if (options.data == null && model && (method === 'create' || method === 'update' || method === 'patch')) {\n params.contentType = 'application/json';\n params.data = JSON.stringify(options.attrs || model.toJSON(options));\n }\n\n // For older servers, emulate JSON by encoding the request into an HTML-form.\n if (options.emulateJSON) {\n params.contentType = 'application/x-www-form-urlencoded';\n params.data = params.data ? {model: params.data} : {};\n }\n\n // For older servers, emulate HTTP by mimicking the HTTP method with `_method`\n // And an `X-HTTP-Method-Override` header.\n if (options.emulateHTTP && (type === 'PUT' || type === 'DELETE' || type === 'PATCH')) {\n params.type = 'POST';\n if (options.emulateJSON) params.data._method = type;\n var beforeSend = options.beforeSend;\n options.beforeSend = function(xhr) {\n xhr.setRequestHeader('X-HTTP-Method-Override', type);\n if (beforeSend) return beforeSend.apply(this, arguments);\n };\n }\n\n // Don't process data on a non-GET request.\n if (params.type !== 'GET' && !options.emulateJSON) {\n params.processData = false;\n }\n\n // Pass along `textStatus` and `errorThrown` from jQuery.\n var error = options.error;\n options.error = function(xhr, textStatus, errorThrown) {\n options.textStatus = textStatus;\n options.errorThrown = errorThrown;\n if (error) error.call(options.context, xhr, textStatus, errorThrown);\n };\n\n // Make the request, allowing the user to override any Ajax options.\n var xhr = options.xhr = Backbone.ajax(_.extend(params, options));\n model.trigger('request', model, xhr, options);\n return xhr;\n };\n\n // Map from CRUD to HTTP for our default `Backbone.sync` implementation.\n var methodMap = {\n 'create': 'POST',\n 'update': 'PUT',\n 'patch': 'PATCH',\n 'delete': 'DELETE',\n 'read': 'GET'\n };\n\n // Set the default implementation of `Backbone.ajax` to proxy through to `$`.\n // Override this if you'd like to use a different library.\n Backbone.ajax = function() {\n return Backbone.$.ajax.apply(Backbone.$, arguments);\n };\n\n // Backbone.Router\n // ---------------\n\n // Routers map faux-URLs to actions, and fire events when routes are\n // matched. Creating a new one sets its `routes` hash, if not set statically.\n var Router = Backbone.Router = function(options) {\n options || (options = {});\n this.preinitialize.apply(this, arguments);\n if (options.routes) this.routes = options.routes;\n this._bindRoutes();\n this.initialize.apply(this, arguments);\n };\n\n // Cached regular expressions for matching named param parts and splatted\n // parts of route strings.\n var optionalParam = /\\((.*?)\\)/g;\n var namedParam = /(\\(\\?)?:\\w+/g;\n var splatParam = /\\*\\w+/g;\n var escapeRegExp = /[\\-{}\\[\\]+?.,\\\\\\^$|#\\s]/g;\n\n // Set up all inheritable **Backbone.Router** properties and methods.\n _.extend(Router.prototype, Events, {\n\n // preinitialize is an empty function by default. You can override it with a function\n // or object. preinitialize will run before any instantiation logic is run in the Router.\n preinitialize: function(){},\n\n // Initialize is an empty function by default. Override it with your own\n // initialization logic.\n initialize: function(){},\n\n // Manually bind a single named route to a callback. For example:\n //\n // this.route('search/:query/p:num', 'search', function(query, num) {\n // ...\n // });\n //\n route: function(route, name, callback) {\n if (!_.isRegExp(route)) route = this._routeToRegExp(route);\n if (_.isFunction(name)) {\n callback = name;\n name = '';\n }\n if (!callback) callback = this[name];\n var router = this;\n Backbone.history.route(route, function(fragment) {\n var args = router._extractParameters(route, fragment);\n if (router.execute(callback, args, name) !== false) {\n router.trigger.apply(router, ['route:' + name].concat(args));\n router.trigger('route', name, args);\n Backbone.history.trigger('route', router, name, args);\n }\n });\n return this;\n },\n\n // Execute a route handler with the provided parameters. This is an\n // excellent place to do pre-route setup or post-route cleanup.\n execute: function(callback, args, name) {\n if (callback) callback.apply(this, args);\n },\n\n // Simple proxy to `Backbone.history` to save a fragment into the history.\n navigate: function(fragment, options) {\n Backbone.history.navigate(fragment, options);\n return this;\n },\n\n // Bind all defined routes to `Backbone.history`. We have to reverse the\n // order of the routes here to support behavior where the most general\n // routes can be defined at the bottom of the route map.\n _bindRoutes: function() {\n if (!this.routes) return;\n this.routes = _.result(this, 'routes');\n var route, routes = _.keys(this.routes);\n while ((route = routes.pop()) != null) {\n this.route(route, this.routes[route]);\n }\n },\n\n // Convert a route string into a regular expression, suitable for matching\n // against the current location hash.\n _routeToRegExp: function(route) {\n route = route.replace(escapeRegExp, '\\\\$&')\n .replace(optionalParam, '(?:$1)?')\n .replace(namedParam, function(match, optional) {\n return optional ? match : '([^/?]+)';\n })\n .replace(splatParam, '([^?]*?)');\n return new RegExp('^' + route + '(?:\\\\?([\\\\s\\\\S]*))?$');\n },\n\n // Given a route, and a URL fragment that it matches, return the array of\n // extracted decoded parameters. Empty or unmatched parameters will be\n // treated as `null` to normalize cross-browser behavior.\n _extractParameters: function(route, fragment) {\n var params = route.exec(fragment).slice(1);\n return _.map(params, function(param, i) {\n // Don't decode the search params.\n if (i === params.length - 1) return param || null;\n return param ? decodeURIComponent(param) : null;\n });\n }\n\n });\n\n // Backbone.History\n // ----------------\n\n // Handles cross-browser history management, based on either\n // [pushState](http://diveintohtml5.info/history.html) and real URLs, or\n // [onhashchange](https://developer.mozilla.org/en-US/docs/DOM/window.onhashchange)\n // and URL fragments. If the browser supports neither (old IE, natch),\n // falls back to polling.\n var History = Backbone.History = function() {\n this.handlers = [];\n this.checkUrl = this.checkUrl.bind(this);\n\n // Ensure that `History` can be used outside of the browser.\n if (typeof window !== 'undefined') {\n this.location = window.location;\n this.history = window.history;\n }\n };\n\n // Cached regex for stripping a leading hash/slash and trailing space.\n var routeStripper = /^[#\\/]|\\s+$/g;\n\n // Cached regex for stripping leading and trailing slashes.\n var rootStripper = /^\\/+|\\/+$/g;\n\n // Cached regex for stripping urls of hash.\n var pathStripper = /#.*$/;\n\n // Has the history handling already been started?\n History.started = false;\n\n // Set up all inheritable **Backbone.History** properties and methods.\n _.extend(History.prototype, Events, {\n\n // The default interval to poll for hash changes, if necessary, is\n // twenty times a second.\n interval: 50,\n\n // Are we at the app root?\n atRoot: function() {\n var path = this.location.pathname.replace(/[^\\/]$/, '$&/');\n return path === this.root && !this.getSearch();\n },\n\n // Does the pathname match the root?\n matchRoot: function() {\n var path = this.decodeFragment(this.location.pathname);\n var rootPath = path.slice(0, this.root.length - 1) + '/';\n return rootPath === this.root;\n },\n\n // Unicode characters in `location.pathname` are percent encoded so they're\n // decoded for comparison. `%25` should not be decoded since it may be part\n // of an encoded parameter.\n decodeFragment: function(fragment) {\n return decodeURI(fragment.replace(/%25/g, '%2525'));\n },\n\n // In IE6, the hash fragment and search params are incorrect if the\n // fragment contains `?`.\n getSearch: function() {\n var match = this.location.href.replace(/#.*/, '').match(/\\?.+/);\n return match ? match[0] : '';\n },\n\n // Gets the true hash value. Cannot use location.hash directly due to bug\n // in Firefox where location.hash will always be decoded.\n getHash: function(window) {\n var match = (window || this).location.href.match(/#(.*)$/);\n return match ? match[1] : '';\n },\n\n // Get the pathname and search params, without the root.\n getPath: function() {\n var path = this.decodeFragment(\n this.location.pathname + this.getSearch()\n ).slice(this.root.length - 1);\n return path.charAt(0) === '/' ? path.slice(1) : path;\n },\n\n // Get the cross-browser normalized URL fragment from the path or hash.\n getFragment: function(fragment) {\n if (fragment == null) {\n if (this._usePushState || !this._wantsHashChange) {\n fragment = this.getPath();\n } else {\n fragment = this.getHash();\n }\n }\n return fragment.replace(routeStripper, '');\n },\n\n // Start the hash change handling, returning `true` if the current URL matches\n // an existing route, and `false` otherwise.\n start: function(options) {\n if (History.started) throw new Error('Backbone.history has already been started');\n History.started = true;\n\n // Figure out the initial configuration. Do we need an iframe?\n // Is pushState desired ... is it available?\n this.options = _.extend({root: '/'}, this.options, options);\n this.root = this.options.root;\n this._trailingSlash = this.options.trailingSlash;\n this._wantsHashChange = this.options.hashChange !== false;\n this._hasHashChange = 'onhashchange' in window && (document.documentMode === void 0 || document.documentMode > 7);\n this._useHashChange = this._wantsHashChange && this._hasHashChange;\n this._wantsPushState = !!this.options.pushState;\n this._hasPushState = !!(this.history && this.history.pushState);\n this._usePushState = this._wantsPushState && this._hasPushState;\n this.fragment = this.getFragment();\n\n // Normalize root to always include a leading and trailing slash.\n this.root = ('/' + this.root + '/').replace(rootStripper, '/');\n\n // Transition from hashChange to pushState or vice versa if both are\n // requested.\n if (this._wantsHashChange && this._wantsPushState) {\n\n // If we've started off with a route from a `pushState`-enabled\n // browser, but we're currently in a browser that doesn't support it...\n if (!this._hasPushState && !this.atRoot()) {\n var rootPath = this.root.slice(0, -1) || '/';\n this.location.replace(rootPath + '#' + this.getPath());\n // Return immediately as browser will do redirect to new url\n return true;\n\n // Or if we've started out with a hash-based route, but we're currently\n // in a browser where it could be `pushState`-based instead...\n } else if (this._hasPushState && this.atRoot()) {\n this.navigate(this.getHash(), {replace: true});\n }\n\n }\n\n // Proxy an iframe to handle location events if the browser doesn't\n // support the `hashchange` event, HTML5 history, or the user wants\n // `hashChange` but not `pushState`.\n if (!this._hasHashChange && this._wantsHashChange && !this._usePushState) {\n this.iframe = document.createElement('iframe');\n this.iframe.src = 'javascript:0';\n this.iframe.style.display = 'none';\n this.iframe.tabIndex = -1;\n var body = document.body;\n // Using `appendChild` will throw on IE < 9 if the document is not ready.\n var iWindow = body.insertBefore(this.iframe, body.firstChild).contentWindow;\n iWindow.document.open();\n iWindow.document.close();\n iWindow.location.hash = '#' + this.fragment;\n }\n\n // Add a cross-platform `addEventListener` shim for older browsers.\n var addEventListener = window.addEventListener || function(eventName, listener) {\n return attachEvent('on' + eventName, listener);\n };\n\n // Depending on whether we're using pushState or hashes, and whether\n // 'onhashchange' is supported, determine how we check the URL state.\n if (this._usePushState) {\n addEventListener('popstate', this.checkUrl, false);\n } else if (this._useHashChange && !this.iframe) {\n addEventListener('hashchange', this.checkUrl, false);\n } else if (this._wantsHashChange) {\n this._checkUrlInterval = setInterval(this.checkUrl, this.interval);\n }\n\n if (!this.options.silent) return this.loadUrl();\n },\n\n // Disable Backbone.history, perhaps temporarily. Not useful in a real app,\n // but possibly useful for unit testing Routers.\n stop: function() {\n // Add a cross-platform `removeEventListener` shim for older browsers.\n var removeEventListener = window.removeEventListener || function(eventName, listener) {\n return detachEvent('on' + eventName, listener);\n };\n\n // Remove window listeners.\n if (this._usePushState) {\n removeEventListener('popstate', this.checkUrl, false);\n } else if (this._useHashChange && !this.iframe) {\n removeEventListener('hashchange', this.checkUrl, false);\n }\n\n // Clean up the iframe if necessary.\n if (this.iframe) {\n document.body.removeChild(this.iframe);\n this.iframe = null;\n }\n\n // Some environments will throw when clearing an undefined interval.\n if (this._checkUrlInterval) clearInterval(this._checkUrlInterval);\n History.started = false;\n },\n\n // Add a route to be tested when the fragment changes. Routes added later\n // may override previous routes.\n route: function(route, callback) {\n this.handlers.unshift({route: route, callback: callback});\n },\n\n // Checks the current URL to see if it has changed, and if it has,\n // calls `loadUrl`, normalizing across the hidden iframe.\n checkUrl: function(e) {\n var current = this.getFragment();\n\n // If the user pressed the back button, the iframe's hash will have\n // changed and we should use that for comparison.\n if (current === this.fragment && this.iframe) {\n current = this.getHash(this.iframe.contentWindow);\n }\n\n if (current === this.fragment) {\n if (!this.matchRoot()) return this.notfound();\n return false;\n }\n if (this.iframe) this.navigate(current);\n this.loadUrl();\n },\n\n // Attempt to load the current URL fragment. If a route succeeds with a\n // match, returns `true`. If no defined routes matches the fragment,\n // returns `false`.\n loadUrl: function(fragment) {\n // If the root doesn't match, no routes can match either.\n if (!this.matchRoot()) return this.notfound();\n fragment = this.fragment = this.getFragment(fragment);\n return _.some(this.handlers, function(handler) {\n if (handler.route.test(fragment)) {\n handler.callback(fragment);\n return true;\n }\n }) || this.notfound();\n },\n\n // When no route could be matched, this method is called internally to\n // trigger the `'notfound'` event. It returns `false` so that it can be used\n // in tail position.\n notfound: function() {\n this.trigger('notfound');\n return false;\n },\n\n // Save a fragment into the hash history, or replace the URL state if the\n // 'replace' option is passed. You are responsible for properly URL-encoding\n // the fragment in advance.\n //\n // The options object can contain `trigger: true` if you wish to have the\n // route callback be fired (not usually desirable), or `replace: true`, if\n // you wish to modify the current URL without adding an entry to the history.\n navigate: function(fragment, options) {\n if (!History.started) return false;\n if (!options || options === true) options = {trigger: !!options};\n\n // Normalize the fragment.\n fragment = this.getFragment(fragment || '');\n\n // Strip trailing slash on the root unless _trailingSlash is true\n var rootPath = this.root;\n if (!this._trailingSlash && (fragment === '' || fragment.charAt(0) === '?')) {\n rootPath = rootPath.slice(0, -1) || '/';\n }\n var url = rootPath + fragment;\n\n // Strip the fragment of the query and hash for matching.\n fragment = fragment.replace(pathStripper, '');\n\n // Decode for matching.\n var decodedFragment = this.decodeFragment(fragment);\n\n if (this.fragment === decodedFragment) return;\n this.fragment = decodedFragment;\n\n // If pushState is available, we use it to set the fragment as a real URL.\n if (this._usePushState) {\n this.history[options.replace ? 'replaceState' : 'pushState']({}, document.title, url);\n\n // If hash changes haven't been explicitly disabled, update the hash\n // fragment to store history.\n } else if (this._wantsHashChange) {\n this._updateHash(this.location, fragment, options.replace);\n if (this.iframe && fragment !== this.getHash(this.iframe.contentWindow)) {\n var iWindow = this.iframe.contentWindow;\n\n // Opening and closing the iframe tricks IE7 and earlier to push a\n // history entry on hash-tag change. When replace is true, we don't\n // want this.\n if (!options.replace) {\n iWindow.document.open();\n iWindow.document.close();\n }\n\n this._updateHash(iWindow.location, fragment, options.replace);\n }\n\n // If you've told us that you explicitly don't want fallback hashchange-\n // based history, then `navigate` becomes a page refresh.\n } else {\n return this.location.assign(url);\n }\n if (options.trigger) return this.loadUrl(fragment);\n },\n\n // Update the hash location, either replacing the current entry, or adding\n // a new one to the browser history.\n _updateHash: function(location, fragment, replace) {\n if (replace) {\n var href = location.href.replace(/(javascript:|#).*$/, '');\n location.replace(href + '#' + fragment);\n } else {\n // Some browsers require that `hash` contains a leading #.\n location.hash = '#' + fragment;\n }\n }\n\n });\n\n // Create the default Backbone.history.\n Backbone.history = new History;\n\n // Helpers\n // -------\n\n // Helper function to correctly set up the prototype chain for subclasses.\n // Similar to `goog.inherits`, but uses a hash of prototype properties and\n // class properties to be extended.\n var extend = function(protoProps, staticProps) {\n var parent = this;\n var child;\n\n // The constructor function for the new subclass is either defined by you\n // (the \"constructor\" property in your `extend` definition), or defaulted\n // by us to simply call the parent constructor.\n if (protoProps && _.has(protoProps, 'constructor')) {\n child = protoProps.constructor;\n } else {\n child = function(){ return parent.apply(this, arguments); };\n }\n\n // Add static properties to the constructor function, if supplied.\n _.extend(child, parent, staticProps);\n\n // Set the prototype chain to inherit from `parent`, without calling\n // `parent`'s constructor function and add the prototype properties.\n child.prototype = _.create(parent.prototype, protoProps);\n child.prototype.constructor = child;\n\n // Set a convenience property in case the parent's prototype is needed\n // later.\n child.__super__ = parent.prototype;\n\n return child;\n };\n\n // Set up inheritance for the model, collection, router, view and history.\n Model.extend = Collection.extend = Router.extend = View.extend = History.extend = extend;\n\n // Throw an error when a URL is needed, and none is supplied.\n var urlError = function() {\n throw new Error('A \"url\" property or function must be specified');\n };\n\n // Wrap an optional error callback with a fallback error event.\n var wrapError = function(model, options) {\n var error = options.error;\n options.error = function(resp) {\n if (error) error.call(options.context, model, resp, options);\n model.trigger('error', model, resp, options);\n };\n };\n\n // Provide useful information when things go wrong. This method is not meant\n // to be used directly; it merely provides the necessary introspection for the\n // external `debugInfo` function.\n Backbone._debug = function() {\n return {root: root, _: _};\n };\n\n return Backbone;\n});\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.button-vue[data-v-d2cd6448]{margin-top:.5rem}`, \"\",{\"version\":3,\"sources\":[\"webpack://./core/src/components/login/LoginButton.vue\"],\"names\":[],\"mappings\":\"AACA,6BACC,gBAAA\",\"sourcesContent\":[\"\\n.button-vue {\\n\\tmargin-top: .5rem;\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.login-form[data-v-563906d0]{text-align:left;font-size:1rem}.login-form__fieldset[data-v-563906d0]{width:100%;display:flex;flex-direction:column;gap:.5rem}.login-form__headline[data-v-563906d0]{text-align:center;overflow-wrap:anywhere}`, \"\",{\"version\":3,\"sources\":[\"webpack://./core/src/components/login/LoginForm.vue\"],\"names\":[],\"mappings\":\"AACA,6BACC,eAAA,CACA,cAAA,CAEA,uCACC,UAAA,CACA,YAAA,CACA,qBAAA,CACA,SAAA,CAGD,uCACC,iBAAA,CACA,sBAAA\",\"sourcesContent\":[\"\\n.login-form {\\n\\ttext-align: left;\\n\\tfont-size: 1rem;\\n\\n\\t&__fieldset {\\n\\t\\twidth: 100%;\\n\\t\\tdisplay: flex;\\n\\t\\tflex-direction: column;\\n\\t\\tgap: .5rem;\\n\\t}\\n\\n\\t&__headline {\\n\\t\\ttext-align: center;\\n\\t\\toverflow-wrap: anywhere;\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `fieldset[data-v-4a6bfc86]{display:flex;flex-direction:column;gap:.5rem}fieldset[data-v-4a6bfc86] label{text-align:initial}.update[data-v-4a6bfc86]{margin:0 auto}`, \"\",{\"version\":3,\"sources\":[\"webpack://./core/src/components/login/PasswordLessLoginForm.vue\"],\"names\":[],\"mappings\":\"AACA,0BACC,YAAA,CACA,qBAAA,CACA,SAAA,CAEA,gCACC,kBAAA,CAIF,yBACC,aAAA\",\"sourcesContent\":[\"\\nfieldset {\\n\\tdisplay: flex;\\n\\tflex-direction: column;\\n\\tgap: 0.5rem;\\n\\n\\t:deep(label) {\\n\\t\\ttext-align: initial;\\n\\t}\\n}\\n\\n.update {\\n\\tmargin: 0 auto;\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.login-form[data-v-cd5425c6]{text-align:left;font-size:1rem}.login-form__fieldset[data-v-cd5425c6]{width:100%;display:flex;flex-direction:column;gap:.5rem}.login-form__link[data-v-cd5425c6]{display:block;font-weight:normal !important;padding-bottom:1rem;cursor:pointer;font-size:var(--default-font-size);text-align:center;padding:.5rem 1rem 1rem 1rem}`, \"\",{\"version\":3,\"sources\":[\"webpack://./core/src/components/login/ResetPassword.vue\"],\"names\":[],\"mappings\":\"AACA,6BACC,eAAA,CACA,cAAA,CAEA,uCACC,UAAA,CACA,YAAA,CACA,qBAAA,CACA,SAAA,CAGD,mCACC,aAAA,CACA,6BAAA,CACA,mBAAA,CACA,cAAA,CACA,kCAAA,CACA,iBAAA,CACA,4BAAA\",\"sourcesContent\":[\"\\n.login-form {\\n\\ttext-align: left;\\n\\tfont-size: 1rem;\\n\\n\\t&__fieldset {\\n\\t\\twidth: 100%;\\n\\t\\tdisplay: flex;\\n\\t\\tflex-direction: column;\\n\\t\\tgap: .5rem;\\n\\t}\\n\\n\\t&__link {\\n\\t\\tdisplay: block;\\n\\t\\tfont-weight: normal !important;\\n\\t\\tpadding-bottom: 1rem;\\n\\t\\tcursor: pointer;\\n\\t\\tfont-size: var(--default-font-size);\\n\\t\\ttext-align: center;\\n\\t\\tpadding: .5rem 1rem 1rem 1rem;\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `body{font-size:var(--default-font-size)}.login-box{width:320px;box-sizing:border-box}.login-box__link{display:block;padding:1rem;font-size:var(--default-font-size);text-align:center;font-weight:normal !important}.fade-enter-active,.fade-leave-active{transition:opacity .3s}.fade-enter,.fade-leave-to{opacity:0}.alternative-logins{display:flex;flex-direction:column;gap:.75rem}.alternative-logins .button-vue{box-sizing:border-box}.login-passwordless .button-vue{margin-top:.5rem}`, \"\",{\"version\":3,\"sources\":[\"webpack://./core/src/views/Login.vue\"],\"names\":[],\"mappings\":\"AACA,KACC,kCAAA,CAGD,WAEC,WAAA,CACA,qBAAA,CAEA,iBACC,aAAA,CACA,YAAA,CACA,kCAAA,CACA,iBAAA,CACA,6BAAA,CAIF,sCACC,sBAAA,CAED,2BACC,SAAA,CAGD,oBACC,YAAA,CACA,qBAAA,CACA,UAAA,CAEA,gCACC,qBAAA,CAKD,gCACC,gBAAA\",\"sourcesContent\":[\"\\nbody {\\n\\tfont-size: var(--default-font-size);\\n}\\n\\n.login-box {\\n\\t// Same size as dashboard panels\\n\\twidth: 320px;\\n\\tbox-sizing: border-box;\\n\\n\\t&__link {\\n\\t\\tdisplay: block;\\n\\t\\tpadding: 1rem;\\n\\t\\tfont-size: var(--default-font-size);\\n\\t\\ttext-align: center;\\n\\t\\tfont-weight: normal !important;\\n\\t}\\n}\\n\\n.fade-enter-active, .fade-leave-active {\\n\\ttransition: opacity .3s;\\n}\\n.fade-enter, .fade-leave-to /* .fade-leave-active below version 2.1.8 */ {\\n\\topacity: 0;\\n}\\n\\n.alternative-logins {\\n\\tdisplay: flex;\\n\\tflex-direction: column;\\n\\tgap: 0.75rem;\\n\\n\\t.button-vue {\\n\\t\\tbox-sizing: border-box;\\n\\t}\\n}\\n\\n.login-passwordless {\\n\\t.button-vue {\\n\\t\\tmargin-top: 0.5rem;\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `\nfieldset[data-v-6bdd5975] {\n\ttext-align: center;\n}\ninput[type=submit][data-v-6bdd5975] {\n\tmargin-top: 20px;\n}\n`, \"\",{\"version\":3,\"sources\":[\"webpack://./core/src/components/login/UpdatePassword.vue\"],\"names\":[],\"mappings\":\";AA2HA;CACA,kBAAA;AACA;AAEA;CACA,gBAAA;AACA\",\"sourcesContent\":[\"<!--\\n - SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\\n - SPDX-License-Identifier: AGPL-3.0-or-later\\n-->\\n\\n<template>\\n\\t<form @submit.prevent=\\\"submit\\\">\\n\\t\\t<fieldset>\\n\\t\\t\\t<p>\\n\\t\\t\\t\\t<label for=\\\"password\\\" class=\\\"infield\\\">{{ t('core', 'New password') }}</label>\\n\\t\\t\\t\\t<input id=\\\"password\\\"\\n\\t\\t\\t\\t\\tv-model=\\\"password\\\"\\n\\t\\t\\t\\t\\ttype=\\\"password\\\"\\n\\t\\t\\t\\t\\tname=\\\"password\\\"\\n\\t\\t\\t\\t\\tautocomplete=\\\"new-password\\\"\\n\\t\\t\\t\\t\\tautocapitalize=\\\"none\\\"\\n\\t\\t\\t\\t\\tspellcheck=\\\"false\\\"\\n\\t\\t\\t\\t\\trequired\\n\\t\\t\\t\\t\\t:placeholder=\\\"t('core', 'New password')\\\">\\n\\t\\t\\t</p>\\n\\n\\t\\t\\t<div v-if=\\\"encrypted\\\" class=\\\"update\\\">\\n\\t\\t\\t\\t<p>\\n\\t\\t\\t\\t\\t{{ t('core', 'Your files are encrypted. There will be no way to get your data back after your password is reset. If you are not sure what to do, please contact your administrator before you continue. Do you really want to continue?') }}\\n\\t\\t\\t\\t</p>\\n\\t\\t\\t\\t<input id=\\\"encrypted-continue\\\"\\n\\t\\t\\t\\t\\tv-model=\\\"proceed\\\"\\n\\t\\t\\t\\t\\ttype=\\\"checkbox\\\"\\n\\t\\t\\t\\t\\tclass=\\\"checkbox\\\">\\n\\t\\t\\t\\t<label for=\\\"encrypted-continue\\\">\\n\\t\\t\\t\\t\\t{{ t('core', 'I know what I\\\\'m doing') }}\\n\\t\\t\\t\\t</label>\\n\\t\\t\\t</div>\\n\\n\\t\\t\\t<LoginButton :loading=\\\"loading\\\"\\n\\t\\t\\t\\t:value=\\\"t('core', 'Reset password')\\\"\\n\\t\\t\\t\\t:value-loading=\\\"t('core', 'Resetting password')\\\" />\\n\\n\\t\\t\\t<p v-if=\\\"error && message\\\" :class=\\\"{warning: error}\\\">\\n\\t\\t\\t\\t{{ message }}\\n\\t\\t\\t</p>\\n\\t\\t</fieldset>\\n\\t</form>\\n</template>\\n\\n<script>\\nimport Axios from '@nextcloud/axios'\\nimport LoginButton from './LoginButton.vue'\\n\\nexport default {\\n\\tname: 'UpdatePassword',\\n\\tcomponents: {\\n\\t\\tLoginButton,\\n\\t},\\n\\tprops: {\\n\\t\\tusername: {\\n\\t\\t\\ttype: String,\\n\\t\\t\\trequired: true,\\n\\t\\t},\\n\\t\\tresetPasswordTarget: {\\n\\t\\t\\ttype: String,\\n\\t\\t\\trequired: true,\\n\\t\\t},\\n\\t},\\n\\tdata() {\\n\\t\\treturn {\\n\\t\\t\\terror: false,\\n\\t\\t\\tloading: false,\\n\\t\\t\\tmessage: undefined,\\n\\t\\t\\tuser: this.username,\\n\\t\\t\\tpassword: '',\\n\\t\\t\\tencrypted: false,\\n\\t\\t\\tproceed: false,\\n\\t\\t}\\n\\t},\\n\\twatch: {\\n\\t\\tusername(value) {\\n\\t\\t\\tthis.user = value\\n\\t\\t},\\n\\t},\\n\\tmethods: {\\n\\t\\tasync submit() {\\n\\t\\t\\tthis.loading = true\\n\\t\\t\\tthis.error = false\\n\\t\\t\\tthis.message = ''\\n\\n\\t\\t\\ttry {\\n\\t\\t\\t\\tconst { data } = await Axios.post(this.resetPasswordTarget, {\\n\\t\\t\\t\\t\\tpassword: this.password,\\n\\t\\t\\t\\t\\tproceed: this.proceed,\\n\\t\\t\\t\\t})\\n\\t\\t\\t\\tif (data && data.status === 'success') {\\n\\t\\t\\t\\t\\tthis.message = 'send-success'\\n\\t\\t\\t\\t\\tthis.$emit('update:username', this.user)\\n\\t\\t\\t\\t\\tthis.$emit('done')\\n\\t\\t\\t\\t} else if (data && data.encryption) {\\n\\t\\t\\t\\t\\tthis.encrypted = true\\n\\t\\t\\t\\t} else if (data && data.msg) {\\n\\t\\t\\t\\t\\tthrow new Error(data.msg)\\n\\t\\t\\t\\t} else {\\n\\t\\t\\t\\t\\tthrow new Error()\\n\\t\\t\\t\\t}\\n\\t\\t\\t} catch (e) {\\n\\t\\t\\t\\tthis.error = true\\n\\t\\t\\t\\tthis.message = e.message ? e.message : t('core', 'Password cannot be changed. Please contact your administrator.')\\n\\t\\t\\t} finally {\\n\\t\\t\\t\\tthis.loading = false\\n\\t\\t\\t}\\n\\t\\t},\\n\\t},\\n}\\n</script>\\n\\n<style scoped>\\n\\tfieldset {\\n\\t\\ttext-align: center;\\n\\t}\\n\\n\\tinput[type=submit] {\\n\\t\\tmargin-top: 20px;\\n\\t}\\n</style>\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","/*\n * vim: expandtab shiftwidth=4 softtabstop=4\n */\n\n/* global dav */\nif (typeof dav === 'undefined') { dav = {}; };\n\ndav._XML_CHAR_MAP = {\n '<': '<',\n '>': '>',\n '&': '&',\n '\"': '"',\n \"'\": '''\n};\n\ndav._escapeXml = function(s) {\n return s.replace(/[<>&\"']/g, function (ch) {\n return dav._XML_CHAR_MAP[ch];\n });\n};\n\ndav.Client = function(options) {\n var i;\n for(i in options) {\n this[i] = options[i];\n }\n\n};\n\ndav.Client.prototype = {\n\n baseUrl : null,\n\n userName : null,\n\n password : null,\n\n\n xmlNamespaces : {\n 'DAV:' : 'd'\n },\n\n /**\n * Generates a propFind request.\n *\n * @param {string} url Url to do the propfind request on\n * @param {Array} properties List of properties to retrieve.\n * @param {string} depth \"0\", \"1\" or \"infinity\"\n * @param {Object} [headers] headers\n * @return {Promise}\n */\n propFind : function(url, properties, depth, headers) {\n\n if(typeof depth === \"undefined\") {\n depth = '0';\n }\n\n // depth header must be a string, in case a number was passed in\n depth = '' + depth;\n\n headers = headers || {};\n\n headers['Depth'] = depth;\n headers['Content-Type'] = 'application/xml; charset=utf-8';\n\n var body =\n '<?xml version=\"1.0\"?>\\n' +\n '<d:propfind ';\n var namespace;\n for (namespace in this.xmlNamespaces) {\n body += ' xmlns:' + this.xmlNamespaces[namespace] + '=\"' + namespace + '\"';\n }\n body += '>\\n' +\n ' <d:prop>\\n';\n\n for(var ii in properties) {\n if (!properties.hasOwnProperty(ii)) {\n continue;\n }\n\n var property = this.parseClarkNotation(properties[ii]);\n if (this.xmlNamespaces[property.namespace]) {\n body+=' <' + this.xmlNamespaces[property.namespace] + ':' + property.name + ' />\\n';\n } else {\n body+=' <x:' + property.name + ' xmlns:x=\"' + property.namespace + '\" />\\n';\n }\n\n }\n body+=' </d:prop>\\n';\n body+='</d:propfind>';\n\n return this.request('PROPFIND', url, headers, body).then(\n function(result) {\n\n if (depth === '0') {\n return {\n status: result.status,\n body: result.body[0],\n xhr: result.xhr\n };\n } else {\n return {\n status: result.status,\n body: result.body,\n xhr: result.xhr\n };\n }\n\n }.bind(this)\n );\n\n },\n\n /**\n * Renders a \"d:set\" block for the given properties.\n *\n * @param {Object.<String,String>} properties\n * @return {String} XML \"<d:set>\" block\n */\n _renderPropSet: function(properties) {\n var body = ' <d:set>\\n' +\n ' <d:prop>\\n';\n\n for(var ii in properties) {\n if (!properties.hasOwnProperty(ii)) {\n continue;\n }\n\n var property = this.parseClarkNotation(ii);\n var propName;\n var propValue = properties[ii];\n if (this.xmlNamespaces[property.namespace]) {\n propName = this.xmlNamespaces[property.namespace] + ':' + property.name;\n } else {\n propName = 'x:' + property.name + ' xmlns:x=\"' + property.namespace + '\"';\n }\n\n // FIXME: hard-coded for now until we allow properties to\n // specify whether to be escaped or not\n if (propName !== 'd:resourcetype') {\n propValue = dav._escapeXml(propValue);\n }\n body += ' <' + propName + '>' + propValue + '</' + propName + '>\\n';\n }\n body +=' </d:prop>\\n';\n body +=' </d:set>\\n';\n return body;\n },\n\n /**\n * Generates a propPatch request.\n *\n * @param {string} url Url to do the proppatch request on\n * @param {Object.<String,String>} properties List of properties to store.\n * @param {Object} [headers] headers\n * @return {Promise}\n */\n propPatch : function(url, properties, headers) {\n headers = headers || {};\n\n headers['Content-Type'] = 'application/xml; charset=utf-8';\n\n var body =\n '<?xml version=\"1.0\"?>\\n' +\n '<d:propertyupdate ';\n var namespace;\n for (namespace in this.xmlNamespaces) {\n body += ' xmlns:' + this.xmlNamespaces[namespace] + '=\"' + namespace + '\"';\n }\n body += '>\\n' + this._renderPropSet(properties);\n body += '</d:propertyupdate>';\n\n return this.request('PROPPATCH', url, headers, body).then(\n function(result) {\n return {\n status: result.status,\n body: result.body,\n xhr: result.xhr\n };\n }.bind(this)\n );\n\n },\n\n /**\n * Generates a MKCOL request.\n * If attributes are given, it will use an extended MKCOL request.\n *\n * @param {string} url Url to do the proppatch request on\n * @param {Object.<String,String>} [properties] list of properties to store.\n * @param {Object} [headers] headers\n * @return {Promise}\n */\n mkcol : function(url, properties, headers) {\n var body = '';\n headers = headers || {};\n headers['Content-Type'] = 'application/xml; charset=utf-8';\n\n if (properties) {\n body =\n '<?xml version=\"1.0\"?>\\n' +\n '<d:mkcol';\n var namespace;\n for (namespace in this.xmlNamespaces) {\n body += ' xmlns:' + this.xmlNamespaces[namespace] + '=\"' + namespace + '\"';\n }\n body += '>\\n' + this._renderPropSet(properties);\n body +='</d:mkcol>';\n }\n\n return this.request('MKCOL', url, headers, body).then(\n function(result) {\n return {\n status: result.status,\n body: result.body,\n xhr: result.xhr\n };\n }.bind(this)\n );\n\n },\n\n /**\n * Performs a HTTP request, and returns a Promise\n *\n * @param {string} method HTTP method\n * @param {string} url Relative or absolute url\n * @param {Object} headers HTTP headers as an object.\n * @param {string} body HTTP request body.\n * @param {string} responseType HTTP request response type.\n * @param {Object} options\n * @param {Function} options.onProgress progress callback\n * @return {Promise}\n */\n request : function(method, url, headers, body, responseType, options) {\n\n var self = this;\n var xhr = this.xhrProvider();\n headers = headers || {};\n responseType = responseType || \"\";\n \n if (this.userName) {\n headers['Authorization'] = 'Basic ' + btoa(this.userName + ':' + this.password);\n // xhr.open(method, this.resolveUrl(url), true, this.userName, this.password);\n }\n xhr.open(method, this.resolveUrl(url), true);\n var ii;\n for(ii in headers) {\n xhr.setRequestHeader(ii, headers[ii]);\n }\n xhr.responseType = responseType;\n\n if (options && typeof(options.onProgress) === 'function') {\n if (method === 'PUT' || method === 'POST') {\n xhr.upload.addEventListener('progress', function (e) {\n options.onProgress(e)\n }, false)\n }\n else {\n xhr.addEventListener('progress', function (e) {\n options.onProgress(e)\n }, false)\n }\n }\n\n // Work around for edge\n if (body === undefined) {\n xhr.send();\n } else {\n xhr.send(body);\n }\n\n return new Promise(function(fulfill, reject) {\n\n xhr.onreadystatechange = function() {\n\n if (xhr.readyState !== 4) {\n return;\n }\n\n var resultBody = xhr.response;\n if (xhr.status === 207) {\n resultBody = self.parseMultiStatus(xhr.response);\n }\n\n fulfill({\n body: resultBody,\n status: xhr.status,\n xhr: xhr\n });\n\n };\n\n xhr.ontimeout = function() {\n\n reject(new Error('Timeout exceeded'));\n\n };\n\n });\n\n },\n\n /**\n * Returns an XMLHttpRequest object.\n *\n * This is in its own method, so it can be easily overridden.\n *\n * @return {XMLHttpRequest}\n */\n xhrProvider : function() {\n\n return new XMLHttpRequest();\n\n },\n\n /**\n * Parses a property node.\n *\n * Either returns a string if the node only contains text, or returns an\n * array of non-text subnodes.\n *\n * @param {Object} propNode node to parse\n * @return {string|Array} text content as string or array of subnodes, excluding text nodes\n */\n _parsePropNode: function(propNode) {\n var content = null;\n if (propNode.childNodes && propNode.childNodes.length > 0) {\n var subNodes = [];\n // filter out text nodes\n for (var j = 0; j < propNode.childNodes.length; j++) {\n var node = propNode.childNodes[j];\n if (node.nodeType === 1) {\n subNodes.push(node);\n }\n }\n if (subNodes.length) {\n content = subNodes;\n }\n }\n\n return content || propNode.textContent || propNode.text || '';\n },\n\n /**\n * Parses a multi-status response body.\n *\n * @param {string} xmlBody\n * @param {Array}\n */\n parseMultiStatus : function(xmlBody) {\n\n var parser = new DOMParser();\n var doc = parser.parseFromString(xmlBody, \"application/xml\");\n\n var resolver = function(foo) {\n var ii;\n for(ii in this.xmlNamespaces) {\n if (this.xmlNamespaces[ii] === foo) {\n return ii;\n }\n }\n }.bind(this);\n\n var responseIterator = doc.evaluate('/d:multistatus/d:response', doc, resolver, XPathResult.ANY_TYPE, null);\n\n var result = [];\n var responseNode = responseIterator.iterateNext();\n\n while(responseNode) {\n\n var response = {\n href : null,\n propStat : []\n };\n\n response.href = doc.evaluate('string(d:href)', responseNode, resolver, XPathResult.ANY_TYPE, null).stringValue;\n\n var propStatIterator = doc.evaluate('d:propstat', responseNode, resolver, XPathResult.ANY_TYPE, null);\n var propStatNode = propStatIterator.iterateNext();\n\n while(propStatNode) {\n var propStat = {\n status : doc.evaluate('string(d:status)', propStatNode, resolver, XPathResult.ANY_TYPE, null).stringValue,\n properties : {},\n };\n\n var propIterator = doc.evaluate('d:prop/*', propStatNode, resolver, XPathResult.ANY_TYPE, null);\n\n var propNode = propIterator.iterateNext();\n while(propNode) {\n var content = this._parsePropNode(propNode);\n propStat.properties['{' + propNode.namespaceURI + '}' + propNode.localName] = content;\n propNode = propIterator.iterateNext();\n\n }\n response.propStat.push(propStat);\n propStatNode = propStatIterator.iterateNext();\n\n\n }\n\n result.push(response);\n responseNode = responseIterator.iterateNext();\n\n }\n\n return result;\n\n },\n\n /**\n * Takes a relative url, and maps it to an absolute url, using the baseUrl\n *\n * @param {string} url\n * @return {string}\n */\n resolveUrl : function(url) {\n\n // Note: this is rudamentary.. not sure yet if it handles every case.\n if (/^https?:\\/\\//i.test(url)) {\n // absolute\n return url;\n }\n\n var baseParts = this.parseUrl(this.baseUrl);\n if (url.charAt('/')) {\n // Url starts with a slash\n return baseParts.root + url;\n }\n\n // Url does not start with a slash, we need grab the base url right up until the last slash.\n var newUrl = baseParts.root + '/';\n if (baseParts.path.lastIndexOf('/')!==-1) {\n newUrl = newUrl = baseParts.path.subString(0, baseParts.path.lastIndexOf('/')) + '/';\n }\n newUrl+=url;\n return url;\n\n },\n\n /**\n * Parses a url and returns its individual components.\n *\n * @param {String} url\n * @return {Object}\n */\n parseUrl : function(url) {\n\n var parts = url.match(/^(?:([A-Za-z]+):)?(\\/{0,3})([0-9.\\-A-Za-z]+)(?::(\\d+))?(?:\\/([^?#]*))?(?:\\?([^#]*))?(?:#(.*))?$/);\n var result = {\n url : parts[0],\n scheme : parts[1],\n host : parts[3],\n port : parts[4],\n path : parts[5],\n query : parts[6],\n fragment : parts[7],\n };\n result.root =\n result.scheme + '://' +\n result.host +\n (result.port ? ':' + result.port : '');\n\n return result;\n\n },\n\n parseClarkNotation : function(propertyName) {\n\n var result = propertyName.match(/^{([^}]+)}(.*)$/);\n if (!result) {\n return;\n }\n\n return {\n name : result[2],\n namespace : result[1]\n };\n\n }\n\n};\n\nif (typeof module !== 'undefined' && typeof module.exports !== 'undefined') {\n module.exports.Client = dav.Client;\n}\n","var map = {\n\t\"./af\": 25177,\n\t\"./af.js\": 25177,\n\t\"./ar\": 61509,\n\t\"./ar-dz\": 41488,\n\t\"./ar-dz.js\": 41488,\n\t\"./ar-kw\": 58676,\n\t\"./ar-kw.js\": 58676,\n\t\"./ar-ly\": 42353,\n\t\"./ar-ly.js\": 42353,\n\t\"./ar-ma\": 24496,\n\t\"./ar-ma.js\": 24496,\n\t\"./ar-ps\": 6947,\n\t\"./ar-ps.js\": 6947,\n\t\"./ar-sa\": 60301,\n\t\"./ar-sa.js\": 60301,\n\t\"./ar-tn\": 89756,\n\t\"./ar-tn.js\": 89756,\n\t\"./ar.js\": 61509,\n\t\"./az\": 95533,\n\t\"./az.js\": 95533,\n\t\"./be\": 28959,\n\t\"./be.js\": 28959,\n\t\"./bg\": 47777,\n\t\"./bg.js\": 47777,\n\t\"./bm\": 54903,\n\t\"./bm.js\": 54903,\n\t\"./bn\": 61290,\n\t\"./bn-bd\": 17357,\n\t\"./bn-bd.js\": 17357,\n\t\"./bn.js\": 61290,\n\t\"./bo\": 31545,\n\t\"./bo.js\": 31545,\n\t\"./br\": 11470,\n\t\"./br.js\": 11470,\n\t\"./bs\": 44429,\n\t\"./bs.js\": 44429,\n\t\"./ca\": 7306,\n\t\"./ca.js\": 7306,\n\t\"./cs\": 56464,\n\t\"./cs.js\": 56464,\n\t\"./cv\": 73635,\n\t\"./cv.js\": 73635,\n\t\"./cy\": 64226,\n\t\"./cy.js\": 64226,\n\t\"./da\": 93601,\n\t\"./da.js\": 93601,\n\t\"./de\": 77853,\n\t\"./de-at\": 26111,\n\t\"./de-at.js\": 26111,\n\t\"./de-ch\": 54697,\n\t\"./de-ch.js\": 54697,\n\t\"./de.js\": 77853,\n\t\"./dv\": 60708,\n\t\"./dv.js\": 60708,\n\t\"./el\": 54691,\n\t\"./el.js\": 54691,\n\t\"./en-au\": 53872,\n\t\"./en-au.js\": 53872,\n\t\"./en-ca\": 28298,\n\t\"./en-ca.js\": 28298,\n\t\"./en-gb\": 56195,\n\t\"./en-gb.js\": 56195,\n\t\"./en-ie\": 66584,\n\t\"./en-ie.js\": 66584,\n\t\"./en-il\": 65543,\n\t\"./en-il.js\": 65543,\n\t\"./en-in\": 9033,\n\t\"./en-in.js\": 9033,\n\t\"./en-nz\": 79402,\n\t\"./en-nz.js\": 79402,\n\t\"./en-sg\": 43004,\n\t\"./en-sg.js\": 43004,\n\t\"./eo\": 32934,\n\t\"./eo.js\": 32934,\n\t\"./es\": 97650,\n\t\"./es-do\": 20838,\n\t\"./es-do.js\": 20838,\n\t\"./es-mx\": 17730,\n\t\"./es-mx.js\": 17730,\n\t\"./es-us\": 56575,\n\t\"./es-us.js\": 56575,\n\t\"./es.js\": 97650,\n\t\"./et\": 3035,\n\t\"./et.js\": 3035,\n\t\"./eu\": 3508,\n\t\"./eu.js\": 3508,\n\t\"./fa\": 119,\n\t\"./fa.js\": 119,\n\t\"./fi\": 90527,\n\t\"./fi.js\": 90527,\n\t\"./fil\": 95995,\n\t\"./fil.js\": 95995,\n\t\"./fo\": 52477,\n\t\"./fo.js\": 52477,\n\t\"./fr\": 85498,\n\t\"./fr-ca\": 26435,\n\t\"./fr-ca.js\": 26435,\n\t\"./fr-ch\": 37892,\n\t\"./fr-ch.js\": 37892,\n\t\"./fr.js\": 85498,\n\t\"./fy\": 37071,\n\t\"./fy.js\": 37071,\n\t\"./ga\": 41734,\n\t\"./ga.js\": 41734,\n\t\"./gd\": 70217,\n\t\"./gd.js\": 70217,\n\t\"./gl\": 77329,\n\t\"./gl.js\": 77329,\n\t\"./gom-deva\": 32124,\n\t\"./gom-deva.js\": 32124,\n\t\"./gom-latn\": 93383,\n\t\"./gom-latn.js\": 93383,\n\t\"./gu\": 95050,\n\t\"./gu.js\": 95050,\n\t\"./he\": 11713,\n\t\"./he.js\": 11713,\n\t\"./hi\": 43861,\n\t\"./hi.js\": 43861,\n\t\"./hr\": 26308,\n\t\"./hr.js\": 26308,\n\t\"./hu\": 90609,\n\t\"./hu.js\": 90609,\n\t\"./hy-am\": 17160,\n\t\"./hy-am.js\": 17160,\n\t\"./id\": 74063,\n\t\"./id.js\": 74063,\n\t\"./is\": 89374,\n\t\"./is.js\": 89374,\n\t\"./it\": 88383,\n\t\"./it-ch\": 21827,\n\t\"./it-ch.js\": 21827,\n\t\"./it.js\": 88383,\n\t\"./ja\": 23827,\n\t\"./ja.js\": 23827,\n\t\"./jv\": 89722,\n\t\"./jv.js\": 89722,\n\t\"./ka\": 41794,\n\t\"./ka.js\": 41794,\n\t\"./kk\": 27088,\n\t\"./kk.js\": 27088,\n\t\"./km\": 96870,\n\t\"./km.js\": 96870,\n\t\"./kn\": 84451,\n\t\"./kn.js\": 84451,\n\t\"./ko\": 63164,\n\t\"./ko.js\": 63164,\n\t\"./ku\": 98174,\n\t\"./ku-kmr\": 6181,\n\t\"./ku-kmr.js\": 6181,\n\t\"./ku.js\": 98174,\n\t\"./ky\": 78474,\n\t\"./ky.js\": 78474,\n\t\"./lb\": 79680,\n\t\"./lb.js\": 79680,\n\t\"./lo\": 15867,\n\t\"./lo.js\": 15867,\n\t\"./lt\": 45766,\n\t\"./lt.js\": 45766,\n\t\"./lv\": 69532,\n\t\"./lv.js\": 69532,\n\t\"./me\": 58076,\n\t\"./me.js\": 58076,\n\t\"./mi\": 41848,\n\t\"./mi.js\": 41848,\n\t\"./mk\": 30306,\n\t\"./mk.js\": 30306,\n\t\"./ml\": 73739,\n\t\"./ml.js\": 73739,\n\t\"./mn\": 99053,\n\t\"./mn.js\": 99053,\n\t\"./mr\": 86169,\n\t\"./mr.js\": 86169,\n\t\"./ms\": 73386,\n\t\"./ms-my\": 92297,\n\t\"./ms-my.js\": 92297,\n\t\"./ms.js\": 73386,\n\t\"./mt\": 77075,\n\t\"./mt.js\": 77075,\n\t\"./my\": 72264,\n\t\"./my.js\": 72264,\n\t\"./nb\": 22274,\n\t\"./nb.js\": 22274,\n\t\"./ne\": 8235,\n\t\"./ne.js\": 8235,\n\t\"./nl\": 92572,\n\t\"./nl-be\": 43784,\n\t\"./nl-be.js\": 43784,\n\t\"./nl.js\": 92572,\n\t\"./nn\": 54566,\n\t\"./nn.js\": 54566,\n\t\"./oc-lnc\": 69330,\n\t\"./oc-lnc.js\": 69330,\n\t\"./pa-in\": 29849,\n\t\"./pa-in.js\": 29849,\n\t\"./pl\": 94418,\n\t\"./pl.js\": 94418,\n\t\"./pt\": 79834,\n\t\"./pt-br\": 48303,\n\t\"./pt-br.js\": 48303,\n\t\"./pt.js\": 79834,\n\t\"./ro\": 24457,\n\t\"./ro.js\": 24457,\n\t\"./ru\": 82271,\n\t\"./ru.js\": 82271,\n\t\"./sd\": 1221,\n\t\"./sd.js\": 1221,\n\t\"./se\": 33478,\n\t\"./se.js\": 33478,\n\t\"./si\": 17538,\n\t\"./si.js\": 17538,\n\t\"./sk\": 5784,\n\t\"./sk.js\": 5784,\n\t\"./sl\": 46637,\n\t\"./sl.js\": 46637,\n\t\"./sq\": 86794,\n\t\"./sq.js\": 86794,\n\t\"./sr\": 45719,\n\t\"./sr-cyrl\": 3322,\n\t\"./sr-cyrl.js\": 3322,\n\t\"./sr.js\": 45719,\n\t\"./ss\": 56000,\n\t\"./ss.js\": 56000,\n\t\"./sv\": 41011,\n\t\"./sv.js\": 41011,\n\t\"./sw\": 40748,\n\t\"./sw.js\": 40748,\n\t\"./ta\": 11025,\n\t\"./ta.js\": 11025,\n\t\"./te\": 11885,\n\t\"./te.js\": 11885,\n\t\"./tet\": 28861,\n\t\"./tet.js\": 28861,\n\t\"./tg\": 86571,\n\t\"./tg.js\": 86571,\n\t\"./th\": 55802,\n\t\"./th.js\": 55802,\n\t\"./tk\": 59527,\n\t\"./tk.js\": 59527,\n\t\"./tl-ph\": 29231,\n\t\"./tl-ph.js\": 29231,\n\t\"./tlh\": 31052,\n\t\"./tlh.js\": 31052,\n\t\"./tr\": 85096,\n\t\"./tr.js\": 85096,\n\t\"./tzl\": 79846,\n\t\"./tzl.js\": 79846,\n\t\"./tzm\": 81765,\n\t\"./tzm-latn\": 97711,\n\t\"./tzm-latn.js\": 97711,\n\t\"./tzm.js\": 81765,\n\t\"./ug-cn\": 48414,\n\t\"./ug-cn.js\": 48414,\n\t\"./uk\": 16618,\n\t\"./uk.js\": 16618,\n\t\"./ur\": 57777,\n\t\"./ur.js\": 57777,\n\t\"./uz\": 57609,\n\t\"./uz-latn\": 72475,\n\t\"./uz-latn.js\": 72475,\n\t\"./uz.js\": 57609,\n\t\"./vi\": 21135,\n\t\"./vi.js\": 21135,\n\t\"./x-pseudo\": 64051,\n\t\"./x-pseudo.js\": 64051,\n\t\"./yo\": 82218,\n\t\"./yo.js\": 82218,\n\t\"./zh-cn\": 52648,\n\t\"./zh-cn.js\": 52648,\n\t\"./zh-hk\": 1632,\n\t\"./zh-hk.js\": 1632,\n\t\"./zh-mo\": 31541,\n\t\"./zh-mo.js\": 31541,\n\t\"./zh-tw\": 50304,\n\t\"./zh-tw.js\": 50304\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn map[req];\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = 35358;","import { getCurrentUser as A, onRequestTokenUpdate as ue, getRequestToken as de } from \"@nextcloud/auth\";\nimport { getLoggerBuilder as B } from \"@nextcloud/logger\";\nimport { getCanonicalLocale as ae } from \"@nextcloud/l10n\";\nimport { join as le, basename as fe, extname as ce, dirname as I } from \"path\";\nimport { encodePath as he } from \"@nextcloud/paths\";\nimport { generateRemoteUrl as pe } from \"@nextcloud/router\";\nimport { createClient as ge, getPatcher as we } from \"webdav\";\nimport { CancelablePromise as me } from \"cancelable-promise\";\n/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\nconst Ne = (e) => e === null ? B().setApp(\"files\").build() : B().setApp(\"files\").setUid(e.uid).build(), m = Ne(A());\n/**\n * @copyright Copyright (c) 2021 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\nclass Ee {\n _entries = [];\n registerEntry(t) {\n this.validateEntry(t), this._entries.push(t);\n }\n unregisterEntry(t) {\n const r = typeof t == \"string\" ? this.getEntryIndex(t) : this.getEntryIndex(t.id);\n if (r === -1) {\n m.warn(\"Entry not found, nothing removed\", { entry: t, entries: this.getEntries() });\n return;\n }\n this._entries.splice(r, 1);\n }\n /**\n * Get the list of registered entries\n *\n * @param {Folder} context the creation context. Usually the current folder\n */\n getEntries(t) {\n return t ? this._entries.filter((r) => typeof r.enabled == \"function\" ? r.enabled(t) : !0) : this._entries;\n }\n getEntryIndex(t) {\n return this._entries.findIndex((r) => r.id === t);\n }\n validateEntry(t) {\n if (!t.id || !t.displayName || !(t.iconSvgInline || t.iconClass) || !t.handler)\n throw new Error(\"Invalid entry\");\n if (typeof t.id != \"string\" || typeof t.displayName != \"string\")\n throw new Error(\"Invalid id or displayName property\");\n if (t.iconClass && typeof t.iconClass != \"string\" || t.iconSvgInline && typeof t.iconSvgInline != \"string\")\n throw new Error(\"Invalid icon provided\");\n if (t.enabled !== void 0 && typeof t.enabled != \"function\")\n throw new Error(\"Invalid enabled property\");\n if (typeof t.handler != \"function\")\n throw new Error(\"Invalid handler property\");\n if (\"order\" in t && typeof t.order != \"number\")\n throw new Error(\"Invalid order property\");\n if (this.getEntryIndex(t.id) !== -1)\n throw new Error(\"Duplicate entry\");\n }\n}\nconst F = function() {\n return typeof window._nc_newfilemenu > \"u\" && (window._nc_newfilemenu = new Ee(), m.debug(\"NewFileMenu initialized\")), window._nc_newfilemenu;\n};\n/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\nconst O = [\"B\", \"KB\", \"MB\", \"GB\", \"TB\", \"PB\"], P = [\"B\", \"KiB\", \"MiB\", \"GiB\", \"TiB\", \"PiB\"];\nfunction Qt(e, t = !1, r = !1, s = !1) {\n r = r && !s, typeof e == \"string\" && (e = Number(e));\n let n = e > 0 ? Math.floor(Math.log(e) / Math.log(s ? 1e3 : 1024)) : 0;\n n = Math.min((r ? P.length : O.length) - 1, n);\n const i = r ? P[n] : O[n];\n let d = (e / Math.pow(s ? 1e3 : 1024, n)).toFixed(1);\n return t === !0 && n === 0 ? (d !== \"0.0\" ? \"< 1 \" : \"0 \") + (r ? P[1] : O[1]) : (n < 2 ? d = parseFloat(d).toFixed(0) : d = parseFloat(d).toLocaleString(ae()), d + \" \" + i);\n}\nfunction Dt(e, t = !1) {\n try {\n e = `${e}`.toLocaleLowerCase().replaceAll(/\\s+/g, \"\").replaceAll(\",\", \".\");\n } catch {\n return null;\n }\n const r = e.match(/^([0-9]*(\\.[0-9]*)?)([kmgtp]?)(i?)b?$/);\n if (r === null || r[1] === \".\" || r[1] === \"\")\n return null;\n const s = {\n \"\": 0,\n k: 1,\n m: 2,\n g: 3,\n t: 4,\n p: 5,\n e: 6\n }, n = `${r[1]}`, i = r[4] === \"i\" || t ? 1024 : 1e3;\n return Math.round(Number.parseFloat(n) * i ** s[r[3]]);\n}\n/**\n * @copyright Copyright (c) 2023 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\nvar W = /* @__PURE__ */ ((e) => (e.DEFAULT = \"default\", e.HIDDEN = \"hidden\", e))(W || {});\nclass er {\n _action;\n constructor(t) {\n this.validateAction(t), this._action = t;\n }\n get id() {\n return this._action.id;\n }\n get displayName() {\n return this._action.displayName;\n }\n get title() {\n return this._action.title;\n }\n get iconSvgInline() {\n return this._action.iconSvgInline;\n }\n get enabled() {\n return this._action.enabled;\n }\n get exec() {\n return this._action.exec;\n }\n get execBatch() {\n return this._action.execBatch;\n }\n get order() {\n return this._action.order;\n }\n get parent() {\n return this._action.parent;\n }\n get default() {\n return this._action.default;\n }\n get inline() {\n return this._action.inline;\n }\n get renderInline() {\n return this._action.renderInline;\n }\n validateAction(t) {\n if (!t.id || typeof t.id != \"string\")\n throw new Error(\"Invalid id\");\n if (!t.displayName || typeof t.displayName != \"function\")\n throw new Error(\"Invalid displayName function\");\n if (\"title\" in t && typeof t.title != \"function\")\n throw new Error(\"Invalid title function\");\n if (!t.iconSvgInline || typeof t.iconSvgInline != \"function\")\n throw new Error(\"Invalid iconSvgInline function\");\n if (!t.exec || typeof t.exec != \"function\")\n throw new Error(\"Invalid exec function\");\n if (\"enabled\" in t && typeof t.enabled != \"function\")\n throw new Error(\"Invalid enabled function\");\n if (\"execBatch\" in t && typeof t.execBatch != \"function\")\n throw new Error(\"Invalid execBatch function\");\n if (\"order\" in t && typeof t.order != \"number\")\n throw new Error(\"Invalid order\");\n if (\"parent\" in t && typeof t.parent != \"string\")\n throw new Error(\"Invalid parent\");\n if (t.default && !Object.values(W).includes(t.default))\n throw new Error(\"Invalid default\");\n if (\"inline\" in t && typeof t.inline != \"function\")\n throw new Error(\"Invalid inline function\");\n if (\"renderInline\" in t && typeof t.renderInline != \"function\")\n throw new Error(\"Invalid renderInline function\");\n }\n}\nconst tr = function(e) {\n if (typeof window._nc_fileactions > \"u\" && (window._nc_fileactions = [], m.debug(\"FileActions initialized\")), window._nc_fileactions.find((t) => t.id === e.id)) {\n m.error(`FileAction ${e.id} already registered`, { action: e });\n return;\n }\n window._nc_fileactions.push(e);\n}, rr = function() {\n return typeof window._nc_fileactions > \"u\" && (window._nc_fileactions = [], m.debug(\"FileActions initialized\")), window._nc_fileactions;\n};\n/**\n * @copyright Copyright (c) 2023 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\nclass nr {\n _header;\n constructor(t) {\n this.validateHeader(t), this._header = t;\n }\n get id() {\n return this._header.id;\n }\n get order() {\n return this._header.order;\n }\n get enabled() {\n return this._header.enabled;\n }\n get render() {\n return this._header.render;\n }\n get updated() {\n return this._header.updated;\n }\n validateHeader(t) {\n if (!t.id || !t.render || !t.updated)\n throw new Error(\"Invalid header: id, render and updated are required\");\n if (typeof t.id != \"string\")\n throw new Error(\"Invalid id property\");\n if (t.enabled !== void 0 && typeof t.enabled != \"function\")\n throw new Error(\"Invalid enabled property\");\n if (t.render && typeof t.render != \"function\")\n throw new Error(\"Invalid render property\");\n if (t.updated && typeof t.updated != \"function\")\n throw new Error(\"Invalid updated property\");\n }\n}\nconst ir = function(e) {\n if (typeof window._nc_filelistheader > \"u\" && (window._nc_filelistheader = [], m.debug(\"FileListHeaders initialized\")), window._nc_filelistheader.find((t) => t.id === e.id)) {\n m.error(`Header ${e.id} already registered`, { header: e });\n return;\n }\n window._nc_filelistheader.push(e);\n}, sr = function() {\n return typeof window._nc_filelistheader > \"u\" && (window._nc_filelistheader = [], m.debug(\"FileListHeaders initialized\")), window._nc_filelistheader;\n};\n/**\n * @copyright Copyright (c) 2022 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\nvar N = /* @__PURE__ */ ((e) => (e[e.NONE = 0] = \"NONE\", e[e.CREATE = 4] = \"CREATE\", e[e.READ = 1] = \"READ\", e[e.UPDATE = 2] = \"UPDATE\", e[e.DELETE = 8] = \"DELETE\", e[e.SHARE = 16] = \"SHARE\", e[e.ALL = 31] = \"ALL\", e))(N || {});\n/**\n * @copyright Copyright (c) 2023 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Ferdinand Thiessen <opensource@fthiessen.de>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\nconst Z = [\n \"d:getcontentlength\",\n \"d:getcontenttype\",\n \"d:getetag\",\n \"d:getlastmodified\",\n \"d:quota-available-bytes\",\n \"d:resourcetype\",\n \"nc:has-preview\",\n \"nc:is-encrypted\",\n \"nc:mount-type\",\n \"oc:comments-unread\",\n \"oc:favorite\",\n \"oc:fileid\",\n \"oc:owner-display-name\",\n \"oc:owner-id\",\n \"oc:permissions\",\n \"oc:size\"\n], j = {\n d: \"DAV:\",\n nc: \"http://nextcloud.org/ns\",\n oc: \"http://owncloud.org/ns\",\n ocs: \"http://open-collaboration-services.org/ns\"\n}, or = function(e, t = { nc: \"http://nextcloud.org/ns\" }) {\n typeof window._nc_dav_properties > \"u\" && (window._nc_dav_properties = [...Z], window._nc_dav_namespaces = { ...j });\n const r = { ...window._nc_dav_namespaces, ...t };\n if (window._nc_dav_properties.find((n) => n === e))\n return m.warn(`${e} already registered`, { prop: e }), !1;\n if (e.startsWith(\"<\") || e.split(\":\").length !== 2)\n return m.error(`${e} is not valid. See example: 'oc:fileid'`, { prop: e }), !1;\n const s = e.split(\":\")[0];\n return r[s] ? (window._nc_dav_properties.push(e), window._nc_dav_namespaces = r, !0) : (m.error(`${e} namespace unknown`, { prop: e, namespaces: r }), !1);\n}, V = function() {\n return typeof window._nc_dav_properties > \"u\" && (window._nc_dav_properties = [...Z]), window._nc_dav_properties.map((e) => `<${e} />`).join(\" \");\n}, S = function() {\n return typeof window._nc_dav_namespaces > \"u\" && (window._nc_dav_namespaces = { ...j }), Object.keys(window._nc_dav_namespaces).map((e) => `xmlns:${e}=\"${window._nc_dav_namespaces?.[e]}\"`).join(\" \");\n}, ur = function() {\n return `<?xml version=\"1.0\"?>\n\t\t<d:propfind ${S()}>\n\t\t\t<d:prop>\n\t\t\t\t${V()}\n\t\t\t</d:prop>\n\t\t</d:propfind>`;\n}, be = function() {\n return `<?xml version=\"1.0\"?>\n\t\t<oc:filter-files ${S()}>\n\t\t\t<d:prop>\n\t\t\t\t${V()}\n\t\t\t</d:prop>\n\t\t\t<oc:filter-rules>\n\t\t\t\t<oc:favorite>1</oc:favorite>\n\t\t\t</oc:filter-rules>\n\t\t</oc:filter-files>`;\n}, dr = function(e) {\n return `<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<d:searchrequest ${S()}\n\txmlns:ns=\"https://github.com/icewind1991/SearchDAV/ns\">\n\t<d:basicsearch>\n\t\t<d:select>\n\t\t\t<d:prop>\n\t\t\t\t${V()}\n\t\t\t</d:prop>\n\t\t</d:select>\n\t\t<d:from>\n\t\t\t<d:scope>\n\t\t\t\t<d:href>/files/${A()?.uid}/</d:href>\n\t\t\t\t<d:depth>infinity</d:depth>\n\t\t\t</d:scope>\n\t\t</d:from>\n\t\t<d:where>\n\t\t\t<d:and>\n\t\t\t\t<d:or>\n\t\t\t\t\t<d:not>\n\t\t\t\t\t\t<d:eq>\n\t\t\t\t\t\t\t<d:prop>\n\t\t\t\t\t\t\t\t<d:getcontenttype/>\n\t\t\t\t\t\t\t</d:prop>\n\t\t\t\t\t\t\t<d:literal>httpd/unix-directory</d:literal>\n\t\t\t\t\t\t</d:eq>\n\t\t\t\t\t</d:not>\n\t\t\t\t\t<d:eq>\n\t\t\t\t\t\t<d:prop>\n\t\t\t\t\t\t\t<oc:size/>\n\t\t\t\t\t\t</d:prop>\n\t\t\t\t\t\t<d:literal>0</d:literal>\n\t\t\t\t\t</d:eq>\n\t\t\t\t</d:or>\n\t\t\t\t<d:gt>\n\t\t\t\t\t<d:prop>\n\t\t\t\t\t\t<d:getlastmodified/>\n\t\t\t\t\t</d:prop>\n\t\t\t\t\t<d:literal>${e}</d:literal>\n\t\t\t\t</d:gt>\n\t\t\t</d:and>\n\t\t</d:where>\n\t\t<d:orderby>\n\t\t\t<d:order>\n\t\t\t\t<d:prop>\n\t\t\t\t\t<d:getlastmodified/>\n\t\t\t\t</d:prop>\n\t\t\t\t<d:descending/>\n\t\t\t</d:order>\n\t\t</d:orderby>\n\t\t<d:limit>\n\t\t\t<d:nresults>100</d:nresults>\n\t\t\t<ns:firstresult>0</ns:firstresult>\n\t\t</d:limit>\n\t</d:basicsearch>\n</d:searchrequest>`;\n};\n/**\n * @copyright Copyright (c) 2023 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Ferdinand Thiessen <opensource@fthiessen.de>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\nconst ye = function(e = \"\") {\n let t = N.NONE;\n return e && ((e.includes(\"C\") || e.includes(\"K\")) && (t |= N.CREATE), e.includes(\"G\") && (t |= N.READ), (e.includes(\"W\") || e.includes(\"N\") || e.includes(\"V\")) && (t |= N.UPDATE), e.includes(\"D\") && (t |= N.DELETE), e.includes(\"R\") && (t |= N.SHARE)), t;\n};\n/**\n * @copyright Copyright (c) 2022 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\nvar L = /* @__PURE__ */ ((e) => (e.Folder = \"folder\", e.File = \"file\", e))(L || {});\n/**\n * @copyright Copyright (c) 2022 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\nconst Y = function(e, t) {\n return e.match(t) !== null;\n}, q = (e, t) => {\n if (e.id && typeof e.id != \"number\")\n throw new Error(\"Invalid id type of value\");\n if (!e.source)\n throw new Error(\"Missing mandatory source\");\n try {\n new URL(e.source);\n } catch {\n throw new Error(\"Invalid source format, source must be a valid URL\");\n }\n if (!e.source.startsWith(\"http\"))\n throw new Error(\"Invalid source format, only http(s) is supported\");\n if (e.mtime && !(e.mtime instanceof Date))\n throw new Error(\"Invalid mtime type\");\n if (e.crtime && !(e.crtime instanceof Date))\n throw new Error(\"Invalid crtime type\");\n if (!e.mime || typeof e.mime != \"string\" || !e.mime.match(/^[-\\w.]+\\/[-+\\w.]+$/gi))\n throw new Error(\"Missing or invalid mandatory mime\");\n if (\"size\" in e && typeof e.size != \"number\" && e.size !== void 0)\n throw new Error(\"Invalid size type\");\n if (\"permissions\" in e && e.permissions !== void 0 && !(typeof e.permissions == \"number\" && e.permissions >= N.NONE && e.permissions <= N.ALL))\n throw new Error(\"Invalid permissions\");\n if (e.owner && e.owner !== null && typeof e.owner != \"string\")\n throw new Error(\"Invalid owner type\");\n if (e.attributes && typeof e.attributes != \"object\")\n throw new Error(\"Invalid attributes type\");\n if (e.root && typeof e.root != \"string\")\n throw new Error(\"Invalid root type\");\n if (e.root && !e.root.startsWith(\"/\"))\n throw new Error(\"Root must start with a leading slash\");\n if (e.root && !e.source.includes(e.root))\n throw new Error(\"Root must be part of the source\");\n if (e.root && Y(e.source, t)) {\n const r = e.source.match(t)[0];\n if (!e.source.includes(le(r, e.root)))\n throw new Error(\"The root must be relative to the service. e.g /files/emma\");\n }\n if (e.status && !Object.values(J).includes(e.status))\n throw new Error(\"Status must be a valid NodeStatus\");\n};\n/**\n * @copyright Copyright (c) 2022 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\nvar J = /* @__PURE__ */ ((e) => (e.NEW = \"new\", e.FAILED = \"failed\", e.LOADING = \"loading\", e.LOCKED = \"locked\", e))(J || {});\nclass Q {\n _data;\n _attributes;\n _knownDavService = /(remote|public)\\.php\\/(web)?dav/i;\n constructor(t, r) {\n q(t, r || this._knownDavService), this._data = t;\n const s = {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n set: (n, i, d) => (this.updateMtime(), Reflect.set(n, i, d)),\n deleteProperty: (n, i) => (this.updateMtime(), Reflect.deleteProperty(n, i))\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n };\n this._attributes = new Proxy(t.attributes || {}, s), delete this._data.attributes, r && (this._knownDavService = r);\n }\n /**\n * Get the source url to this object\n */\n get source() {\n return this._data.source.replace(/\\/$/i, \"\");\n }\n /**\n * Get the encoded source url to this object for requests purposes\n */\n get encodedSource() {\n const { origin: t } = new URL(this.source);\n return t + he(this.source.slice(t.length));\n }\n /**\n * Get this object name\n */\n get basename() {\n return fe(this.source);\n }\n /**\n * Get this object's extension\n */\n get extension() {\n return ce(this.source);\n }\n /**\n * Get the directory path leading to this object\n * Will use the relative path to root if available\n */\n get dirname() {\n if (this.root) {\n let r = this.source;\n this.isDavRessource && (r = r.split(this._knownDavService).pop());\n const s = r.indexOf(this.root), n = this.root.replace(/\\/$/, \"\");\n return I(r.slice(s + n.length) || \"/\");\n }\n const t = new URL(this.source);\n return I(t.pathname);\n }\n /**\n * Get the file mime\n */\n get mime() {\n return this._data.mime;\n }\n /**\n * Get the file modification time\n */\n get mtime() {\n return this._data.mtime;\n }\n /**\n * Get the file creation time\n */\n get crtime() {\n return this._data.crtime;\n }\n /**\n * Get the file size\n */\n get size() {\n return this._data.size;\n }\n /**\n * Get the file attribute\n */\n get attributes() {\n return this._attributes;\n }\n /**\n * Get the file permissions\n */\n get permissions() {\n return this.owner === null && !this.isDavRessource ? N.READ : this._data.permissions !== void 0 ? this._data.permissions : N.NONE;\n }\n /**\n * Get the file owner\n */\n get owner() {\n return this.isDavRessource ? this._data.owner : null;\n }\n /**\n * Is this a dav-related ressource ?\n */\n get isDavRessource() {\n return Y(this.source, this._knownDavService);\n }\n /**\n * Get the dav root of this object\n */\n get root() {\n return this._data.root ? this._data.root.replace(/^(.+)\\/$/, \"$1\") : this.isDavRessource && I(this.source).split(this._knownDavService).pop() || null;\n }\n /**\n * Get the absolute path of this object relative to the root\n */\n get path() {\n if (this.root) {\n let t = this.source;\n this.isDavRessource && (t = t.split(this._knownDavService).pop());\n const r = t.indexOf(this.root), s = this.root.replace(/\\/$/, \"\");\n return t.slice(r + s.length) || \"/\";\n }\n return (this.dirname + \"/\" + this.basename).replace(/\\/\\//g, \"/\");\n }\n /**\n * Get the node id if defined.\n * Will look for the fileid in attributes if undefined.\n */\n get fileid() {\n return this._data?.id || this.attributes?.fileid;\n }\n /**\n * Get the node status.\n */\n get status() {\n return this._data?.status;\n }\n /**\n * Set the node status.\n */\n set status(t) {\n this._data.status = t;\n }\n /**\n * Move the node to a new destination\n *\n * @param {string} destination the new source.\n * e.g. https://cloud.domain.com/remote.php/dav/files/emma/Photos/picture.jpg\n */\n move(t) {\n q({ ...this._data, source: t }, this._knownDavService), this._data.source = t, this.updateMtime();\n }\n /**\n * Rename the node\n * This aliases the move method for easier usage\n *\n * @param basename The new name of the node\n */\n rename(t) {\n if (t.includes(\"/\"))\n throw new Error(\"Invalid basename\");\n this.move(I(this.source) + \"/\" + t);\n }\n /**\n * Update the mtime if exists.\n */\n updateMtime() {\n this._data.mtime && (this._data.mtime = /* @__PURE__ */ new Date());\n }\n}\n/**\n * @copyright Copyright (c) 2022 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\nclass _e extends Q {\n get type() {\n return L.File;\n }\n}\n/**\n * @copyright Copyright (c) 2022 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\nclass ve extends Q {\n constructor(t) {\n super({\n ...t,\n mime: \"httpd/unix-directory\"\n });\n }\n get type() {\n return L.Folder;\n }\n get extension() {\n return null;\n }\n get mime() {\n return \"httpd/unix-directory\";\n }\n}\n/**\n * @copyright Copyright (c) 2023 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Ferdinand Thiessen <opensource@fthiessen.de>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\nconst D = `/files/${A()?.uid}`, ee = pe(\"dav\"), ar = function(e = ee, t = {}) {\n const r = ge(e, { headers: t });\n function s(i) {\n r.setHeaders({\n ...t,\n // Add this so the server knows it is an request from the browser\n \"X-Requested-With\": \"XMLHttpRequest\",\n // Inject user auth\n requesttoken: i ?? \"\"\n });\n }\n return ue(s), s(de()), we().patch(\"fetch\", (i, d) => {\n const u = d.headers;\n return u?.method && (d.method = u.method, delete u.method), fetch(i, d);\n }), r;\n}, lr = (e, t = \"/\", r = D) => {\n const s = new AbortController();\n return new me(async (n, i, d) => {\n d(() => s.abort());\n try {\n const o = (await e.getDirectoryContents(`${r}${t}`, {\n signal: s.signal,\n details: !0,\n data: be(),\n headers: {\n // see davGetClient for patched webdav client\n method: \"REPORT\"\n },\n includeSelf: !0\n })).data.filter((a) => a.filename !== t).map((a) => Te(a, r));\n n(o);\n } catch (u) {\n i(u);\n }\n });\n}, Te = function(e, t = D, r = ee) {\n const s = A()?.uid;\n if (!s)\n throw new Error(\"No user id found\");\n const n = e.props, i = ye(n?.permissions), d = (n?.[\"owner-id\"] || s).toString(), u = {\n id: n?.fileid || 0,\n source: `${r}${e.filename}`,\n mtime: new Date(Date.parse(e.lastmod)),\n mime: e.mime || \"application/octet-stream\",\n size: n?.size || Number.parseInt(n.getcontentlength || \"0\"),\n permissions: i,\n owner: d,\n root: t,\n attributes: {\n ...e,\n ...n,\n hasPreview: n?.[\"has-preview\"]\n }\n };\n return delete u.attributes?.props, e.type === \"file\" ? new _e(u) : new ve(u);\n};\n/**\n * @copyright Copyright (c) 2022 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\nclass Ie {\n _views = [];\n _currentView = null;\n register(t) {\n if (this._views.find((r) => r.id === t.id))\n throw new Error(`View id ${t.id} is already registered`);\n this._views.push(t);\n }\n remove(t) {\n const r = this._views.findIndex((s) => s.id === t);\n r !== -1 && this._views.splice(r, 1);\n }\n get views() {\n return this._views;\n }\n setActive(t) {\n this._currentView = t;\n }\n get active() {\n return this._currentView;\n }\n}\nconst fr = function() {\n return typeof window._nc_navigation > \"u\" && (window._nc_navigation = new Ie(), m.debug(\"Navigation service initialized\")), window._nc_navigation;\n};\n/**\n * @copyright Copyright (c) 2022 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\nclass Ae {\n _column;\n constructor(t) {\n Ce(t), this._column = t;\n }\n get id() {\n return this._column.id;\n }\n get title() {\n return this._column.title;\n }\n get render() {\n return this._column.render;\n }\n get sort() {\n return this._column.sort;\n }\n get summary() {\n return this._column.summary;\n }\n}\nconst Ce = function(e) {\n if (!e.id || typeof e.id != \"string\")\n throw new Error(\"A column id is required\");\n if (!e.title || typeof e.title != \"string\")\n throw new Error(\"A column title is required\");\n if (!e.render || typeof e.render != \"function\")\n throw new Error(\"A render function is required\");\n if (e.sort && typeof e.sort != \"function\")\n throw new Error(\"Column sortFunction must be a function\");\n if (e.summary && typeof e.summary != \"function\")\n throw new Error(\"Column summary must be a function\");\n return !0;\n};\nvar R = {}, C = {};\n(function(e) {\n const t = \":A-Za-z_\\\\u00C0-\\\\u00D6\\\\u00D8-\\\\u00F6\\\\u00F8-\\\\u02FF\\\\u0370-\\\\u037D\\\\u037F-\\\\u1FFF\\\\u200C-\\\\u200D\\\\u2070-\\\\u218F\\\\u2C00-\\\\u2FEF\\\\u3001-\\\\uD7FF\\\\uF900-\\\\uFDCF\\\\uFDF0-\\\\uFFFD\", r = t + \"\\\\-.\\\\d\\\\u00B7\\\\u0300-\\\\u036F\\\\u203F-\\\\u2040\", s = \"[\" + t + \"][\" + r + \"]*\", n = new RegExp(\"^\" + s + \"$\"), i = function(u, o) {\n const a = [];\n let l = o.exec(u);\n for (; l; ) {\n const f = [];\n f.startIndex = o.lastIndex - l[0].length;\n const c = l.length;\n for (let g = 0; g < c; g++)\n f.push(l[g]);\n a.push(f), l = o.exec(u);\n }\n return a;\n }, d = function(u) {\n const o = n.exec(u);\n return !(o === null || typeof o > \"u\");\n };\n e.isExist = function(u) {\n return typeof u < \"u\";\n }, e.isEmptyObject = function(u) {\n return Object.keys(u).length === 0;\n }, e.merge = function(u, o, a) {\n if (o) {\n const l = Object.keys(o), f = l.length;\n for (let c = 0; c < f; c++)\n a === \"strict\" ? u[l[c]] = [o[l[c]]] : u[l[c]] = o[l[c]];\n }\n }, e.getValue = function(u) {\n return e.isExist(u) ? u : \"\";\n }, e.isName = d, e.getAllMatches = i, e.nameRegexp = s;\n})(C);\nconst M = C, Oe = {\n allowBooleanAttributes: !1,\n //A tag can have attributes without any value\n unpairedTags: []\n};\nR.validate = function(e, t) {\n t = Object.assign({}, Oe, t);\n const r = [];\n let s = !1, n = !1;\n e[0] === \"\\uFEFF\" && (e = e.substr(1));\n for (let i = 0; i < e.length; i++)\n if (e[i] === \"<\" && e[i + 1] === \"?\") {\n if (i += 2, i = U(e, i), i.err)\n return i;\n } else if (e[i] === \"<\") {\n let d = i;\n if (i++, e[i] === \"!\") {\n i = G(e, i);\n continue;\n } else {\n let u = !1;\n e[i] === \"/\" && (u = !0, i++);\n let o = \"\";\n for (; i < e.length && e[i] !== \">\" && e[i] !== \" \" && e[i] !== \"\t\" && e[i] !== `\n` && e[i] !== \"\\r\"; i++)\n o += e[i];\n if (o = o.trim(), o[o.length - 1] === \"/\" && (o = o.substring(0, o.length - 1), i--), !Re(o)) {\n let f;\n return o.trim().length === 0 ? f = \"Invalid space after '<'.\" : f = \"Tag '\" + o + \"' is an invalid name.\", p(\"InvalidTag\", f, w(e, i));\n }\n const a = $e(e, i);\n if (a === !1)\n return p(\"InvalidAttr\", \"Attributes for '\" + o + \"' have open quote.\", w(e, i));\n let l = a.value;\n if (i = a.index, l[l.length - 1] === \"/\") {\n const f = i - l.length;\n l = l.substring(0, l.length - 1);\n const c = z(l, t);\n if (c === !0)\n s = !0;\n else\n return p(c.err.code, c.err.msg, w(e, f + c.err.line));\n } else if (u)\n if (a.tagClosed) {\n if (l.trim().length > 0)\n return p(\"InvalidTag\", \"Closing tag '\" + o + \"' can't have attributes or invalid starting.\", w(e, d));\n {\n const f = r.pop();\n if (o !== f.tagName) {\n let c = w(e, f.tagStartPos);\n return p(\n \"InvalidTag\",\n \"Expected closing tag '\" + f.tagName + \"' (opened in line \" + c.line + \", col \" + c.col + \") instead of closing tag '\" + o + \"'.\",\n w(e, d)\n );\n }\n r.length == 0 && (n = !0);\n }\n } else\n return p(\"InvalidTag\", \"Closing tag '\" + o + \"' doesn't have proper closing.\", w(e, i));\n else {\n const f = z(l, t);\n if (f !== !0)\n return p(f.err.code, f.err.msg, w(e, i - l.length + f.err.line));\n if (n === !0)\n return p(\"InvalidXml\", \"Multiple possible root nodes found.\", w(e, i));\n t.unpairedTags.indexOf(o) !== -1 || r.push({ tagName: o, tagStartPos: d }), s = !0;\n }\n for (i++; i < e.length; i++)\n if (e[i] === \"<\")\n if (e[i + 1] === \"!\") {\n i++, i = G(e, i);\n continue;\n } else if (e[i + 1] === \"?\") {\n if (i = U(e, ++i), i.err)\n return i;\n } else\n break;\n else if (e[i] === \"&\") {\n const f = Se(e, i);\n if (f == -1)\n return p(\"InvalidChar\", \"char '&' is not expected.\", w(e, i));\n i = f;\n } else if (n === !0 && !X(e[i]))\n return p(\"InvalidXml\", \"Extra text at the end\", w(e, i));\n e[i] === \"<\" && i--;\n }\n } else {\n if (X(e[i]))\n continue;\n return p(\"InvalidChar\", \"char '\" + e[i] + \"' is not expected.\", w(e, i));\n }\n if (s) {\n if (r.length == 1)\n return p(\"InvalidTag\", \"Unclosed tag '\" + r[0].tagName + \"'.\", w(e, r[0].tagStartPos));\n if (r.length > 0)\n return p(\"InvalidXml\", \"Invalid '\" + JSON.stringify(r.map((i) => i.tagName), null, 4).replace(/\\r?\\n/g, \"\") + \"' found.\", { line: 1, col: 1 });\n } else\n return p(\"InvalidXml\", \"Start tag expected.\", 1);\n return !0;\n};\nfunction X(e) {\n return e === \" \" || e === \"\t\" || e === `\n` || e === \"\\r\";\n}\nfunction U(e, t) {\n const r = t;\n for (; t < e.length; t++)\n if (e[t] == \"?\" || e[t] == \" \") {\n const s = e.substr(r, t - r);\n if (t > 5 && s === \"xml\")\n return p(\"InvalidXml\", \"XML declaration allowed only at the start of the document.\", w(e, t));\n if (e[t] == \"?\" && e[t + 1] == \">\") {\n t++;\n break;\n } else\n continue;\n }\n return t;\n}\nfunction G(e, t) {\n if (e.length > t + 5 && e[t + 1] === \"-\" && e[t + 2] === \"-\") {\n for (t += 3; t < e.length; t++)\n if (e[t] === \"-\" && e[t + 1] === \"-\" && e[t + 2] === \">\") {\n t += 2;\n break;\n }\n } else if (e.length > t + 8 && e[t + 1] === \"D\" && e[t + 2] === \"O\" && e[t + 3] === \"C\" && e[t + 4] === \"T\" && e[t + 5] === \"Y\" && e[t + 6] === \"P\" && e[t + 7] === \"E\") {\n let r = 1;\n for (t += 8; t < e.length; t++)\n if (e[t] === \"<\")\n r++;\n else if (e[t] === \">\" && (r--, r === 0))\n break;\n } else if (e.length > t + 9 && e[t + 1] === \"[\" && e[t + 2] === \"C\" && e[t + 3] === \"D\" && e[t + 4] === \"A\" && e[t + 5] === \"T\" && e[t + 6] === \"A\" && e[t + 7] === \"[\") {\n for (t += 8; t < e.length; t++)\n if (e[t] === \"]\" && e[t + 1] === \"]\" && e[t + 2] === \">\") {\n t += 2;\n break;\n }\n }\n return t;\n}\nconst Pe = '\"', xe = \"'\";\nfunction $e(e, t) {\n let r = \"\", s = \"\", n = !1;\n for (; t < e.length; t++) {\n if (e[t] === Pe || e[t] === xe)\n s === \"\" ? s = e[t] : s !== e[t] || (s = \"\");\n else if (e[t] === \">\" && s === \"\") {\n n = !0;\n break;\n }\n r += e[t];\n }\n return s !== \"\" ? !1 : {\n value: r,\n index: t,\n tagClosed: n\n };\n}\nconst Fe = new RegExp(`(\\\\s*)([^\\\\s=]+)(\\\\s*=)?(\\\\s*(['\"])(([\\\\s\\\\S])*?)\\\\5)?`, \"g\");\nfunction z(e, t) {\n const r = M.getAllMatches(e, Fe), s = {};\n for (let n = 0; n < r.length; n++) {\n if (r[n][1].length === 0)\n return p(\"InvalidAttr\", \"Attribute '\" + r[n][2] + \"' has no space in starting.\", v(r[n]));\n if (r[n][3] !== void 0 && r[n][4] === void 0)\n return p(\"InvalidAttr\", \"Attribute '\" + r[n][2] + \"' is without value.\", v(r[n]));\n if (r[n][3] === void 0 && !t.allowBooleanAttributes)\n return p(\"InvalidAttr\", \"boolean attribute '\" + r[n][2] + \"' is not allowed.\", v(r[n]));\n const i = r[n][2];\n if (!Le(i))\n return p(\"InvalidAttr\", \"Attribute '\" + i + \"' is an invalid name.\", v(r[n]));\n if (!s.hasOwnProperty(i))\n s[i] = 1;\n else\n return p(\"InvalidAttr\", \"Attribute '\" + i + \"' is repeated.\", v(r[n]));\n }\n return !0;\n}\nfunction Ve(e, t) {\n let r = /\\d/;\n for (e[t] === \"x\" && (t++, r = /[\\da-fA-F]/); t < e.length; t++) {\n if (e[t] === \";\")\n return t;\n if (!e[t].match(r))\n break;\n }\n return -1;\n}\nfunction Se(e, t) {\n if (t++, e[t] === \";\")\n return -1;\n if (e[t] === \"#\")\n return t++, Ve(e, t);\n let r = 0;\n for (; t < e.length; t++, r++)\n if (!(e[t].match(/\\w/) && r < 20)) {\n if (e[t] === \";\")\n break;\n return -1;\n }\n return t;\n}\nfunction p(e, t, r) {\n return {\n err: {\n code: e,\n msg: t,\n line: r.line || r,\n col: r.col\n }\n };\n}\nfunction Le(e) {\n return M.isName(e);\n}\nfunction Re(e) {\n return M.isName(e);\n}\nfunction w(e, t) {\n const r = e.substring(0, t).split(/\\r?\\n/);\n return {\n line: r.length,\n // column number is last line's length + 1, because column numbering starts at 1:\n col: r[r.length - 1].length + 1\n };\n}\nfunction v(e) {\n return e.startIndex + e[1].length;\n}\nvar k = {};\nconst te = {\n preserveOrder: !1,\n attributeNamePrefix: \"@_\",\n attributesGroupName: !1,\n textNodeName: \"#text\",\n ignoreAttributes: !0,\n removeNSPrefix: !1,\n // remove NS from tag name or attribute name if true\n allowBooleanAttributes: !1,\n //a tag can have attributes without any value\n //ignoreRootElement : false,\n parseTagValue: !0,\n parseAttributeValue: !1,\n trimValues: !0,\n //Trim string values of tag and attributes\n cdataPropName: !1,\n numberParseOptions: {\n hex: !0,\n leadingZeros: !0,\n eNotation: !0\n },\n tagValueProcessor: function(e, t) {\n return t;\n },\n attributeValueProcessor: function(e, t) {\n return t;\n },\n stopNodes: [],\n //nested tags will not be parsed even for errors\n alwaysCreateTextNode: !1,\n isArray: () => !1,\n commentPropName: !1,\n unpairedTags: [],\n processEntities: !0,\n htmlEntities: !1,\n ignoreDeclaration: !1,\n ignorePiTags: !1,\n transformTagName: !1,\n transformAttributeName: !1,\n updateTag: function(e, t, r) {\n return e;\n }\n // skipEmptyListItem: false\n}, Me = function(e) {\n return Object.assign({}, te, e);\n};\nk.buildOptions = Me;\nk.defaultOptions = te;\nclass ke {\n constructor(t) {\n this.tagname = t, this.child = [], this[\":@\"] = {};\n }\n add(t, r) {\n t === \"__proto__\" && (t = \"#__proto__\"), this.child.push({ [t]: r });\n }\n addChild(t) {\n t.tagname === \"__proto__\" && (t.tagname = \"#__proto__\"), t[\":@\"] && Object.keys(t[\":@\"]).length > 0 ? this.child.push({ [t.tagname]: t.child, \":@\": t[\":@\"] }) : this.child.push({ [t.tagname]: t.child });\n }\n}\nvar Be = ke;\nconst qe = C;\nfunction Xe(e, t) {\n const r = {};\n if (e[t + 3] === \"O\" && e[t + 4] === \"C\" && e[t + 5] === \"T\" && e[t + 6] === \"Y\" && e[t + 7] === \"P\" && e[t + 8] === \"E\") {\n t = t + 9;\n let s = 1, n = !1, i = !1, d = \"\";\n for (; t < e.length; t++)\n if (e[t] === \"<\" && !i) {\n if (n && ze(e, t))\n t += 7, [entityName, val, t] = Ue(e, t + 1), val.indexOf(\"&\") === -1 && (r[Ze(entityName)] = {\n regx: RegExp(`&${entityName};`, \"g\"),\n val\n });\n else if (n && He(e, t))\n t += 8;\n else if (n && Ke(e, t))\n t += 8;\n else if (n && We(e, t))\n t += 9;\n else if (Ge)\n i = !0;\n else\n throw new Error(\"Invalid DOCTYPE\");\n s++, d = \"\";\n } else if (e[t] === \">\") {\n if (i ? e[t - 1] === \"-\" && e[t - 2] === \"-\" && (i = !1, s--) : s--, s === 0)\n break;\n } else\n e[t] === \"[\" ? n = !0 : d += e[t];\n if (s !== 0)\n throw new Error(\"Unclosed DOCTYPE\");\n } else\n throw new Error(\"Invalid Tag instead of DOCTYPE\");\n return { entities: r, i: t };\n}\nfunction Ue(e, t) {\n let r = \"\";\n for (; t < e.length && e[t] !== \"'\" && e[t] !== '\"'; t++)\n r += e[t];\n if (r = r.trim(), r.indexOf(\" \") !== -1)\n throw new Error(\"External entites are not supported\");\n const s = e[t++];\n let n = \"\";\n for (; t < e.length && e[t] !== s; t++)\n n += e[t];\n return [r, n, t];\n}\nfunction Ge(e, t) {\n return e[t + 1] === \"!\" && e[t + 2] === \"-\" && e[t + 3] === \"-\";\n}\nfunction ze(e, t) {\n return e[t + 1] === \"!\" && e[t + 2] === \"E\" && e[t + 3] === \"N\" && e[t + 4] === \"T\" && e[t + 5] === \"I\" && e[t + 6] === \"T\" && e[t + 7] === \"Y\";\n}\nfunction He(e, t) {\n return e[t + 1] === \"!\" && e[t + 2] === \"E\" && e[t + 3] === \"L\" && e[t + 4] === \"E\" && e[t + 5] === \"M\" && e[t + 6] === \"E\" && e[t + 7] === \"N\" && e[t + 8] === \"T\";\n}\nfunction Ke(e, t) {\n return e[t + 1] === \"!\" && e[t + 2] === \"A\" && e[t + 3] === \"T\" && e[t + 4] === \"T\" && e[t + 5] === \"L\" && e[t + 6] === \"I\" && e[t + 7] === \"S\" && e[t + 8] === \"T\";\n}\nfunction We(e, t) {\n return e[t + 1] === \"!\" && e[t + 2] === \"N\" && e[t + 3] === \"O\" && e[t + 4] === \"T\" && e[t + 5] === \"A\" && e[t + 6] === \"T\" && e[t + 7] === \"I\" && e[t + 8] === \"O\" && e[t + 9] === \"N\";\n}\nfunction Ze(e) {\n if (qe.isName(e))\n return e;\n throw new Error(`Invalid entity name ${e}`);\n}\nvar je = Xe;\nconst Ye = /^[-+]?0x[a-fA-F0-9]+$/, Je = /^([\\-\\+])?(0*)(\\.[0-9]+([eE]\\-?[0-9]+)?|[0-9]+(\\.[0-9]+([eE]\\-?[0-9]+)?)?)$/;\n!Number.parseInt && window.parseInt && (Number.parseInt = window.parseInt);\n!Number.parseFloat && window.parseFloat && (Number.parseFloat = window.parseFloat);\nconst Qe = {\n hex: !0,\n leadingZeros: !0,\n decimalPoint: \".\",\n eNotation: !0\n //skipLike: /regex/\n};\nfunction De(e, t = {}) {\n if (t = Object.assign({}, Qe, t), !e || typeof e != \"string\")\n return e;\n let r = e.trim();\n if (t.skipLike !== void 0 && t.skipLike.test(r))\n return e;\n if (t.hex && Ye.test(r))\n return Number.parseInt(r, 16);\n {\n const s = Je.exec(r);\n if (s) {\n const n = s[1], i = s[2];\n let d = et(s[3]);\n const u = s[4] || s[6];\n if (!t.leadingZeros && i.length > 0 && n && r[2] !== \".\")\n return e;\n if (!t.leadingZeros && i.length > 0 && !n && r[1] !== \".\")\n return e;\n {\n const o = Number(r), a = \"\" + o;\n return a.search(/[eE]/) !== -1 || u ? t.eNotation ? o : e : r.indexOf(\".\") !== -1 ? a === \"0\" && d === \"\" || a === d || n && a === \"-\" + d ? o : e : i ? d === a || n + d === a ? o : e : r === a || r === n + a ? o : e;\n }\n } else\n return e;\n }\n}\nfunction et(e) {\n return e && e.indexOf(\".\") !== -1 && (e = e.replace(/0+$/, \"\"), e === \".\" ? e = \"0\" : e[0] === \".\" ? e = \"0\" + e : e[e.length - 1] === \".\" && (e = e.substr(0, e.length - 1))), e;\n}\nvar tt = De;\nconst re = C, T = Be, rt = je, nt = tt;\nlet it = class {\n constructor(t) {\n this.options = t, this.currentNode = null, this.tagsNodeStack = [], this.docTypeEntities = {}, this.lastEntities = {\n apos: { regex: /&(apos|#39|#x27);/g, val: \"'\" },\n gt: { regex: /&(gt|#62|#x3E);/g, val: \">\" },\n lt: { regex: /&(lt|#60|#x3C);/g, val: \"<\" },\n quot: { regex: /&(quot|#34|#x22);/g, val: '\"' }\n }, this.ampEntity = { regex: /&(amp|#38|#x26);/g, val: \"&\" }, this.htmlEntities = {\n space: { regex: /&(nbsp|#160);/g, val: \" \" },\n // \"lt\" : { regex: /&(lt|#60);/g, val: \"<\" },\n // \"gt\" : { regex: /&(gt|#62);/g, val: \">\" },\n // \"amp\" : { regex: /&(amp|#38);/g, val: \"&\" },\n // \"quot\" : { regex: /&(quot|#34);/g, val: \"\\\"\" },\n // \"apos\" : { regex: /&(apos|#39);/g, val: \"'\" },\n cent: { regex: /&(cent|#162);/g, val: \"¢\" },\n pound: { regex: /&(pound|#163);/g, val: \"£\" },\n yen: { regex: /&(yen|#165);/g, val: \"¥\" },\n euro: { regex: /&(euro|#8364);/g, val: \"€\" },\n copyright: { regex: /&(copy|#169);/g, val: \"©\" },\n reg: { regex: /&(reg|#174);/g, val: \"®\" },\n inr: { regex: /&(inr|#8377);/g, val: \"₹\" },\n num_dec: { regex: /&#([0-9]{1,7});/g, val: (r, s) => String.fromCharCode(Number.parseInt(s, 10)) },\n num_hex: { regex: /&#x([0-9a-fA-F]{1,6});/g, val: (r, s) => String.fromCharCode(Number.parseInt(s, 16)) }\n }, this.addExternalEntities = st, this.parseXml = lt, this.parseTextData = ot, this.resolveNameSpace = ut, this.buildAttributesMap = at, this.isItStopNode = pt, this.replaceEntitiesValue = ct, this.readStopNodeData = wt, this.saveTextToParentTag = ht, this.addChild = ft;\n }\n};\nfunction st(e) {\n const t = Object.keys(e);\n for (let r = 0; r < t.length; r++) {\n const s = t[r];\n this.lastEntities[s] = {\n regex: new RegExp(\"&\" + s + \";\", \"g\"),\n val: e[s]\n };\n }\n}\nfunction ot(e, t, r, s, n, i, d) {\n if (e !== void 0 && (this.options.trimValues && !s && (e = e.trim()), e.length > 0)) {\n d || (e = this.replaceEntitiesValue(e));\n const u = this.options.tagValueProcessor(t, e, r, n, i);\n return u == null ? e : typeof u != typeof e || u !== e ? u : this.options.trimValues ? $(e, this.options.parseTagValue, this.options.numberParseOptions) : e.trim() === e ? $(e, this.options.parseTagValue, this.options.numberParseOptions) : e;\n }\n}\nfunction ut(e) {\n if (this.options.removeNSPrefix) {\n const t = e.split(\":\"), r = e.charAt(0) === \"/\" ? \"/\" : \"\";\n if (t[0] === \"xmlns\")\n return \"\";\n t.length === 2 && (e = r + t[1]);\n }\n return e;\n}\nconst dt = new RegExp(`([^\\\\s=]+)\\\\s*(=\\\\s*(['\"])([\\\\s\\\\S]*?)\\\\3)?`, \"gm\");\nfunction at(e, t, r) {\n if (!this.options.ignoreAttributes && typeof e == \"string\") {\n const s = re.getAllMatches(e, dt), n = s.length, i = {};\n for (let d = 0; d < n; d++) {\n const u = this.resolveNameSpace(s[d][1]);\n let o = s[d][4], a = this.options.attributeNamePrefix + u;\n if (u.length)\n if (this.options.transformAttributeName && (a = this.options.transformAttributeName(a)), a === \"__proto__\" && (a = \"#__proto__\"), o !== void 0) {\n this.options.trimValues && (o = o.trim()), o = this.replaceEntitiesValue(o);\n const l = this.options.attributeValueProcessor(u, o, t);\n l == null ? i[a] = o : typeof l != typeof o || l !== o ? i[a] = l : i[a] = $(\n o,\n this.options.parseAttributeValue,\n this.options.numberParseOptions\n );\n } else\n this.options.allowBooleanAttributes && (i[a] = !0);\n }\n if (!Object.keys(i).length)\n return;\n if (this.options.attributesGroupName) {\n const d = {};\n return d[this.options.attributesGroupName] = i, d;\n }\n return i;\n }\n}\nconst lt = function(e) {\n e = e.replace(/\\r\\n?/g, `\n`);\n const t = new T(\"!xml\");\n let r = t, s = \"\", n = \"\";\n for (let i = 0; i < e.length; i++)\n if (e[i] === \"<\")\n if (e[i + 1] === \"/\") {\n const u = y(e, \">\", i, \"Closing Tag is not closed.\");\n let o = e.substring(i + 2, u).trim();\n if (this.options.removeNSPrefix) {\n const f = o.indexOf(\":\");\n f !== -1 && (o = o.substr(f + 1));\n }\n this.options.transformTagName && (o = this.options.transformTagName(o)), r && (s = this.saveTextToParentTag(s, r, n));\n const a = n.substring(n.lastIndexOf(\".\") + 1);\n if (o && this.options.unpairedTags.indexOf(o) !== -1)\n throw new Error(`Unpaired tag can not be used as closing tag: </${o}>`);\n let l = 0;\n a && this.options.unpairedTags.indexOf(a) !== -1 ? (l = n.lastIndexOf(\".\", n.lastIndexOf(\".\") - 1), this.tagsNodeStack.pop()) : l = n.lastIndexOf(\".\"), n = n.substring(0, l), r = this.tagsNodeStack.pop(), s = \"\", i = u;\n } else if (e[i + 1] === \"?\") {\n let u = x(e, i, !1, \"?>\");\n if (!u)\n throw new Error(\"Pi Tag is not closed.\");\n if (s = this.saveTextToParentTag(s, r, n), !(this.options.ignoreDeclaration && u.tagName === \"?xml\" || this.options.ignorePiTags)) {\n const o = new T(u.tagName);\n o.add(this.options.textNodeName, \"\"), u.tagName !== u.tagExp && u.attrExpPresent && (o[\":@\"] = this.buildAttributesMap(u.tagExp, n, u.tagName)), this.addChild(r, o, n);\n }\n i = u.closeIndex + 1;\n } else if (e.substr(i + 1, 3) === \"!--\") {\n const u = y(e, \"-->\", i + 4, \"Comment is not closed.\");\n if (this.options.commentPropName) {\n const o = e.substring(i + 4, u - 2);\n s = this.saveTextToParentTag(s, r, n), r.add(this.options.commentPropName, [{ [this.options.textNodeName]: o }]);\n }\n i = u;\n } else if (e.substr(i + 1, 2) === \"!D\") {\n const u = rt(e, i);\n this.docTypeEntities = u.entities, i = u.i;\n } else if (e.substr(i + 1, 2) === \"![\") {\n const u = y(e, \"]]>\", i, \"CDATA is not closed.\") - 2, o = e.substring(i + 9, u);\n s = this.saveTextToParentTag(s, r, n);\n let a = this.parseTextData(o, r.tagname, n, !0, !1, !0, !0);\n a == null && (a = \"\"), this.options.cdataPropName ? r.add(this.options.cdataPropName, [{ [this.options.textNodeName]: o }]) : r.add(this.options.textNodeName, a), i = u + 2;\n } else {\n let u = x(e, i, this.options.removeNSPrefix), o = u.tagName;\n const a = u.rawTagName;\n let l = u.tagExp, f = u.attrExpPresent, c = u.closeIndex;\n this.options.transformTagName && (o = this.options.transformTagName(o)), r && s && r.tagname !== \"!xml\" && (s = this.saveTextToParentTag(s, r, n, !1));\n const g = r;\n if (g && this.options.unpairedTags.indexOf(g.tagname) !== -1 && (r = this.tagsNodeStack.pop(), n = n.substring(0, n.lastIndexOf(\".\"))), o !== t.tagname && (n += n ? \".\" + o : o), this.isItStopNode(this.options.stopNodes, n, o)) {\n let h = \"\";\n if (l.length > 0 && l.lastIndexOf(\"/\") === l.length - 1)\n i = u.closeIndex;\n else if (this.options.unpairedTags.indexOf(o) !== -1)\n i = u.closeIndex;\n else {\n const E = this.readStopNodeData(e, a, c + 1);\n if (!E)\n throw new Error(`Unexpected end of ${a}`);\n i = E.i, h = E.tagContent;\n }\n const _ = new T(o);\n o !== l && f && (_[\":@\"] = this.buildAttributesMap(l, n, o)), h && (h = this.parseTextData(h, o, n, !0, f, !0, !0)), n = n.substr(0, n.lastIndexOf(\".\")), _.add(this.options.textNodeName, h), this.addChild(r, _, n);\n } else {\n if (l.length > 0 && l.lastIndexOf(\"/\") === l.length - 1) {\n o[o.length - 1] === \"/\" ? (o = o.substr(0, o.length - 1), n = n.substr(0, n.length - 1), l = o) : l = l.substr(0, l.length - 1), this.options.transformTagName && (o = this.options.transformTagName(o));\n const h = new T(o);\n o !== l && f && (h[\":@\"] = this.buildAttributesMap(l, n, o)), this.addChild(r, h, n), n = n.substr(0, n.lastIndexOf(\".\"));\n } else {\n const h = new T(o);\n this.tagsNodeStack.push(r), o !== l && f && (h[\":@\"] = this.buildAttributesMap(l, n, o)), this.addChild(r, h, n), r = h;\n }\n s = \"\", i = c;\n }\n }\n else\n s += e[i];\n return t.child;\n};\nfunction ft(e, t, r) {\n const s = this.options.updateTag(t.tagname, r, t[\":@\"]);\n s === !1 || (typeof s == \"string\" && (t.tagname = s), e.addChild(t));\n}\nconst ct = function(e) {\n if (this.options.processEntities) {\n for (let t in this.docTypeEntities) {\n const r = this.docTypeEntities[t];\n e = e.replace(r.regx, r.val);\n }\n for (let t in this.lastEntities) {\n const r = this.lastEntities[t];\n e = e.replace(r.regex, r.val);\n }\n if (this.options.htmlEntities)\n for (let t in this.htmlEntities) {\n const r = this.htmlEntities[t];\n e = e.replace(r.regex, r.val);\n }\n e = e.replace(this.ampEntity.regex, this.ampEntity.val);\n }\n return e;\n};\nfunction ht(e, t, r, s) {\n return e && (s === void 0 && (s = Object.keys(t.child).length === 0), e = this.parseTextData(\n e,\n t.tagname,\n r,\n !1,\n t[\":@\"] ? Object.keys(t[\":@\"]).length !== 0 : !1,\n s\n ), e !== void 0 && e !== \"\" && t.add(this.options.textNodeName, e), e = \"\"), e;\n}\nfunction pt(e, t, r) {\n const s = \"*.\" + r;\n for (const n in e) {\n const i = e[n];\n if (s === i || t === i)\n return !0;\n }\n return !1;\n}\nfunction gt(e, t, r = \">\") {\n let s, n = \"\";\n for (let i = t; i < e.length; i++) {\n let d = e[i];\n if (s)\n d === s && (s = \"\");\n else if (d === '\"' || d === \"'\")\n s = d;\n else if (d === r[0])\n if (r[1]) {\n if (e[i + 1] === r[1])\n return {\n data: n,\n index: i\n };\n } else\n return {\n data: n,\n index: i\n };\n else\n d === \"\t\" && (d = \" \");\n n += d;\n }\n}\nfunction y(e, t, r, s) {\n const n = e.indexOf(t, r);\n if (n === -1)\n throw new Error(s);\n return n + t.length - 1;\n}\nfunction x(e, t, r, s = \">\") {\n const n = gt(e, t + 1, s);\n if (!n)\n return;\n let i = n.data;\n const d = n.index, u = i.search(/\\s/);\n let o = i, a = !0;\n u !== -1 && (o = i.substring(0, u), i = i.substring(u + 1).trimStart());\n const l = o;\n if (r) {\n const f = o.indexOf(\":\");\n f !== -1 && (o = o.substr(f + 1), a = o !== n.data.substr(f + 1));\n }\n return {\n tagName: o,\n tagExp: i,\n closeIndex: d,\n attrExpPresent: a,\n rawTagName: l\n };\n}\nfunction wt(e, t, r) {\n const s = r;\n let n = 1;\n for (; r < e.length; r++)\n if (e[r] === \"<\")\n if (e[r + 1] === \"/\") {\n const i = y(e, \">\", r, `${t} is not closed`);\n if (e.substring(r + 2, i).trim() === t && (n--, n === 0))\n return {\n tagContent: e.substring(s, r),\n i\n };\n r = i;\n } else if (e[r + 1] === \"?\")\n r = y(e, \"?>\", r + 1, \"StopNode is not closed.\");\n else if (e.substr(r + 1, 3) === \"!--\")\n r = y(e, \"-->\", r + 3, \"StopNode is not closed.\");\n else if (e.substr(r + 1, 2) === \"![\")\n r = y(e, \"]]>\", r, \"StopNode is not closed.\") - 2;\n else {\n const i = x(e, r, \">\");\n i && ((i && i.tagName) === t && i.tagExp[i.tagExp.length - 1] !== \"/\" && n++, r = i.closeIndex);\n }\n}\nfunction $(e, t, r) {\n if (t && typeof e == \"string\") {\n const s = e.trim();\n return s === \"true\" ? !0 : s === \"false\" ? !1 : nt(e, r);\n } else\n return re.isExist(e) ? e : \"\";\n}\nvar mt = it, ne = {};\nfunction Nt(e, t) {\n return ie(e, t);\n}\nfunction ie(e, t, r) {\n let s;\n const n = {};\n for (let i = 0; i < e.length; i++) {\n const d = e[i], u = Et(d);\n let o = \"\";\n if (r === void 0 ? o = u : o = r + \".\" + u, u === t.textNodeName)\n s === void 0 ? s = d[u] : s += \"\" + d[u];\n else {\n if (u === void 0)\n continue;\n if (d[u]) {\n let a = ie(d[u], t, o);\n const l = yt(a, t);\n d[\":@\"] ? bt(a, d[\":@\"], o, t) : Object.keys(a).length === 1 && a[t.textNodeName] !== void 0 && !t.alwaysCreateTextNode ? a = a[t.textNodeName] : Object.keys(a).length === 0 && (t.alwaysCreateTextNode ? a[t.textNodeName] = \"\" : a = \"\"), n[u] !== void 0 && n.hasOwnProperty(u) ? (Array.isArray(n[u]) || (n[u] = [n[u]]), n[u].push(a)) : t.isArray(u, o, l) ? n[u] = [a] : n[u] = a;\n }\n }\n }\n return typeof s == \"string\" ? s.length > 0 && (n[t.textNodeName] = s) : s !== void 0 && (n[t.textNodeName] = s), n;\n}\nfunction Et(e) {\n const t = Object.keys(e);\n for (let r = 0; r < t.length; r++) {\n const s = t[r];\n if (s !== \":@\")\n return s;\n }\n}\nfunction bt(e, t, r, s) {\n if (t) {\n const n = Object.keys(t), i = n.length;\n for (let d = 0; d < i; d++) {\n const u = n[d];\n s.isArray(u, r + \".\" + u, !0, !0) ? e[u] = [t[u]] : e[u] = t[u];\n }\n }\n}\nfunction yt(e, t) {\n const { textNodeName: r } = t, s = Object.keys(e).length;\n return !!(s === 0 || s === 1 && (e[r] || typeof e[r] == \"boolean\" || e[r] === 0));\n}\nne.prettify = Nt;\nconst { buildOptions: _t } = k, vt = mt, { prettify: Tt } = ne, It = R;\nlet At = class {\n constructor(t) {\n this.externalEntities = {}, this.options = _t(t);\n }\n /**\n * Parse XML dats to JS object \n * @param {string|Buffer} xmlData \n * @param {boolean|Object} validationOption \n */\n parse(t, r) {\n if (typeof t != \"string\")\n if (t.toString)\n t = t.toString();\n else\n throw new Error(\"XML data is accepted in String or Bytes[] form.\");\n if (r) {\n r === !0 && (r = {});\n const i = It.validate(t, r);\n if (i !== !0)\n throw Error(`${i.err.msg}:${i.err.line}:${i.err.col}`);\n }\n const s = new vt(this.options);\n s.addExternalEntities(this.externalEntities);\n const n = s.parseXml(t);\n return this.options.preserveOrder || n === void 0 ? n : Tt(n, this.options);\n }\n /**\n * Add Entity which is not by default supported by this library\n * @param {string} key \n * @param {string} value \n */\n addEntity(t, r) {\n if (r.indexOf(\"&\") !== -1)\n throw new Error(\"Entity value can't have '&'\");\n if (t.indexOf(\"&\") !== -1 || t.indexOf(\";\") !== -1)\n throw new Error(\"An entity must be set without '&' and ';'. Eg. use '#xD' for '
'\");\n if (r === \"&\")\n throw new Error(\"An entity with value '&' is not permitted\");\n this.externalEntities[t] = r;\n }\n};\nvar Ct = At;\nconst Ot = `\n`;\nfunction Pt(e, t) {\n let r = \"\";\n return t.format && t.indentBy.length > 0 && (r = Ot), se(e, t, \"\", r);\n}\nfunction se(e, t, r, s) {\n let n = \"\", i = !1;\n for (let d = 0; d < e.length; d++) {\n const u = e[d], o = xt(u);\n if (o === void 0)\n continue;\n let a = \"\";\n if (r.length === 0 ? a = o : a = `${r}.${o}`, o === t.textNodeName) {\n let h = u[o];\n $t(a, t) || (h = t.tagValueProcessor(o, h), h = oe(h, t)), i && (n += s), n += h, i = !1;\n continue;\n } else if (o === t.cdataPropName) {\n i && (n += s), n += `<![CDATA[${u[o][0][t.textNodeName]}]]>`, i = !1;\n continue;\n } else if (o === t.commentPropName) {\n n += s + `<!--${u[o][0][t.textNodeName]}-->`, i = !0;\n continue;\n } else if (o[0] === \"?\") {\n const h = H(u[\":@\"], t), _ = o === \"?xml\" ? \"\" : s;\n let E = u[o][0][t.textNodeName];\n E = E.length !== 0 ? \" \" + E : \"\", n += _ + `<${o}${E}${h}?>`, i = !0;\n continue;\n }\n let l = s;\n l !== \"\" && (l += t.indentBy);\n const f = H(u[\":@\"], t), c = s + `<${o}${f}`, g = se(u[o], t, a, l);\n t.unpairedTags.indexOf(o) !== -1 ? t.suppressUnpairedNode ? n += c + \">\" : n += c + \"/>\" : (!g || g.length === 0) && t.suppressEmptyNode ? n += c + \"/>\" : g && g.endsWith(\">\") ? n += c + `>${g}${s}</${o}>` : (n += c + \">\", g && s !== \"\" && (g.includes(\"/>\") || g.includes(\"</\")) ? n += s + t.indentBy + g + s : n += g, n += `</${o}>`), i = !0;\n }\n return n;\n}\nfunction xt(e) {\n const t = Object.keys(e);\n for (let r = 0; r < t.length; r++) {\n const s = t[r];\n if (e.hasOwnProperty(s) && s !== \":@\")\n return s;\n }\n}\nfunction H(e, t) {\n let r = \"\";\n if (e && !t.ignoreAttributes)\n for (let s in e) {\n if (!e.hasOwnProperty(s))\n continue;\n let n = t.attributeValueProcessor(s, e[s]);\n n = oe(n, t), n === !0 && t.suppressBooleanAttributes ? r += ` ${s.substr(t.attributeNamePrefix.length)}` : r += ` ${s.substr(t.attributeNamePrefix.length)}=\"${n}\"`;\n }\n return r;\n}\nfunction $t(e, t) {\n e = e.substr(0, e.length - t.textNodeName.length - 1);\n let r = e.substr(e.lastIndexOf(\".\") + 1);\n for (let s in t.stopNodes)\n if (t.stopNodes[s] === e || t.stopNodes[s] === \"*.\" + r)\n return !0;\n return !1;\n}\nfunction oe(e, t) {\n if (e && e.length > 0 && t.processEntities)\n for (let r = 0; r < t.entities.length; r++) {\n const s = t.entities[r];\n e = e.replace(s.regex, s.val);\n }\n return e;\n}\nvar Ft = Pt;\nconst Vt = Ft, St = {\n attributeNamePrefix: \"@_\",\n attributesGroupName: !1,\n textNodeName: \"#text\",\n ignoreAttributes: !0,\n cdataPropName: !1,\n format: !1,\n indentBy: \" \",\n suppressEmptyNode: !1,\n suppressUnpairedNode: !0,\n suppressBooleanAttributes: !0,\n tagValueProcessor: function(e, t) {\n return t;\n },\n attributeValueProcessor: function(e, t) {\n return t;\n },\n preserveOrder: !1,\n commentPropName: !1,\n unpairedTags: [],\n entities: [\n { regex: new RegExp(\"&\", \"g\"), val: \"&\" },\n //it must be on top\n { regex: new RegExp(\">\", \"g\"), val: \">\" },\n { regex: new RegExp(\"<\", \"g\"), val: \"<\" },\n { regex: new RegExp(\"'\", \"g\"), val: \"'\" },\n { regex: new RegExp('\"', \"g\"), val: \""\" }\n ],\n processEntities: !0,\n stopNodes: [],\n // transformTagName: false,\n // transformAttributeName: false,\n oneListGroup: !1\n};\nfunction b(e) {\n this.options = Object.assign({}, St, e), this.options.ignoreAttributes || this.options.attributesGroupName ? this.isAttribute = function() {\n return !1;\n } : (this.attrPrefixLen = this.options.attributeNamePrefix.length, this.isAttribute = Mt), this.processTextOrObjNode = Lt, this.options.format ? (this.indentate = Rt, this.tagEndChar = `>\n`, this.newLine = `\n`) : (this.indentate = function() {\n return \"\";\n }, this.tagEndChar = \">\", this.newLine = \"\");\n}\nb.prototype.build = function(e) {\n return this.options.preserveOrder ? Vt(e, this.options) : (Array.isArray(e) && this.options.arrayNodeName && this.options.arrayNodeName.length > 1 && (e = {\n [this.options.arrayNodeName]: e\n }), this.j2x(e, 0).val);\n};\nb.prototype.j2x = function(e, t) {\n let r = \"\", s = \"\";\n for (let n in e)\n if (Object.prototype.hasOwnProperty.call(e, n))\n if (typeof e[n] > \"u\")\n this.isAttribute(n) && (s += \"\");\n else if (e[n] === null)\n this.isAttribute(n) ? s += \"\" : n[0] === \"?\" ? s += this.indentate(t) + \"<\" + n + \"?\" + this.tagEndChar : s += this.indentate(t) + \"<\" + n + \"/\" + this.tagEndChar;\n else if (e[n] instanceof Date)\n s += this.buildTextValNode(e[n], n, \"\", t);\n else if (typeof e[n] != \"object\") {\n const i = this.isAttribute(n);\n if (i)\n r += this.buildAttrPairStr(i, \"\" + e[n]);\n else if (n === this.options.textNodeName) {\n let d = this.options.tagValueProcessor(n, \"\" + e[n]);\n s += this.replaceEntitiesValue(d);\n } else\n s += this.buildTextValNode(e[n], n, \"\", t);\n } else if (Array.isArray(e[n])) {\n const i = e[n].length;\n let d = \"\";\n for (let u = 0; u < i; u++) {\n const o = e[n][u];\n typeof o > \"u\" || (o === null ? n[0] === \"?\" ? s += this.indentate(t) + \"<\" + n + \"?\" + this.tagEndChar : s += this.indentate(t) + \"<\" + n + \"/\" + this.tagEndChar : typeof o == \"object\" ? this.options.oneListGroup ? d += this.j2x(o, t + 1).val : d += this.processTextOrObjNode(o, n, t) : d += this.buildTextValNode(o, n, \"\", t));\n }\n this.options.oneListGroup && (d = this.buildObjectNode(d, n, \"\", t)), s += d;\n } else if (this.options.attributesGroupName && n === this.options.attributesGroupName) {\n const i = Object.keys(e[n]), d = i.length;\n for (let u = 0; u < d; u++)\n r += this.buildAttrPairStr(i[u], \"\" + e[n][i[u]]);\n } else\n s += this.processTextOrObjNode(e[n], n, t);\n return { attrStr: r, val: s };\n};\nb.prototype.buildAttrPairStr = function(e, t) {\n return t = this.options.attributeValueProcessor(e, \"\" + t), t = this.replaceEntitiesValue(t), this.options.suppressBooleanAttributes && t === \"true\" ? \" \" + e : \" \" + e + '=\"' + t + '\"';\n};\nfunction Lt(e, t, r) {\n const s = this.j2x(e, r + 1);\n return e[this.options.textNodeName] !== void 0 && Object.keys(e).length === 1 ? this.buildTextValNode(e[this.options.textNodeName], t, s.attrStr, r) : this.buildObjectNode(s.val, t, s.attrStr, r);\n}\nb.prototype.buildObjectNode = function(e, t, r, s) {\n if (e === \"\")\n return t[0] === \"?\" ? this.indentate(s) + \"<\" + t + r + \"?\" + this.tagEndChar : this.indentate(s) + \"<\" + t + r + this.closeTag(t) + this.tagEndChar;\n {\n let n = \"</\" + t + this.tagEndChar, i = \"\";\n return t[0] === \"?\" && (i = \"?\", n = \"\"), (r || r === \"\") && e.indexOf(\"<\") === -1 ? this.indentate(s) + \"<\" + t + r + i + \">\" + e + n : this.options.commentPropName !== !1 && t === this.options.commentPropName && i.length === 0 ? this.indentate(s) + `<!--${e}-->` + this.newLine : this.indentate(s) + \"<\" + t + r + i + this.tagEndChar + e + this.indentate(s) + n;\n }\n};\nb.prototype.closeTag = function(e) {\n let t = \"\";\n return this.options.unpairedTags.indexOf(e) !== -1 ? this.options.suppressUnpairedNode || (t = \"/\") : this.options.suppressEmptyNode ? t = \"/\" : t = `></${e}`, t;\n};\nb.prototype.buildTextValNode = function(e, t, r, s) {\n if (this.options.cdataPropName !== !1 && t === this.options.cdataPropName)\n return this.indentate(s) + `<![CDATA[${e}]]>` + this.newLine;\n if (this.options.commentPropName !== !1 && t === this.options.commentPropName)\n return this.indentate(s) + `<!--${e}-->` + this.newLine;\n if (t[0] === \"?\")\n return this.indentate(s) + \"<\" + t + r + \"?\" + this.tagEndChar;\n {\n let n = this.options.tagValueProcessor(t, e);\n return n = this.replaceEntitiesValue(n), n === \"\" ? this.indentate(s) + \"<\" + t + r + this.closeTag(t) + this.tagEndChar : this.indentate(s) + \"<\" + t + r + \">\" + n + \"</\" + t + this.tagEndChar;\n }\n};\nb.prototype.replaceEntitiesValue = function(e) {\n if (e && e.length > 0 && this.options.processEntities)\n for (let t = 0; t < this.options.entities.length; t++) {\n const r = this.options.entities[t];\n e = e.replace(r.regex, r.val);\n }\n return e;\n};\nfunction Rt(e) {\n return this.options.indentBy.repeat(e);\n}\nfunction Mt(e) {\n return e.startsWith(this.options.attributeNamePrefix) && e !== this.options.textNodeName ? e.substr(this.attrPrefixLen) : !1;\n}\nvar kt = b;\nconst Bt = R, qt = Ct, Xt = kt;\nvar K = {\n XMLParser: qt,\n XMLValidator: Bt,\n XMLBuilder: Xt\n};\nfunction Ut(e) {\n if (typeof e != \"string\")\n throw new TypeError(`Expected a \\`string\\`, got \\`${typeof e}\\``);\n if (e = e.trim(), e.length === 0 || K.XMLValidator.validate(e) !== !0)\n return !1;\n let t;\n const r = new K.XMLParser();\n try {\n t = r.parse(e);\n } catch {\n return !1;\n }\n return !(!t || !(\"svg\" in t));\n}\n/**\n * @copyright Copyright (c) 2022 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\nclass pr {\n _view;\n constructor(t) {\n Gt(t), this._view = t;\n }\n get id() {\n return this._view.id;\n }\n get name() {\n return this._view.name;\n }\n get caption() {\n return this._view.caption;\n }\n get emptyTitle() {\n return this._view.emptyTitle;\n }\n get emptyCaption() {\n return this._view.emptyCaption;\n }\n get getContents() {\n return this._view.getContents;\n }\n get icon() {\n return this._view.icon;\n }\n set icon(t) {\n this._view.icon = t;\n }\n get order() {\n return this._view.order;\n }\n set order(t) {\n this._view.order = t;\n }\n get params() {\n return this._view.params;\n }\n set params(t) {\n this._view.params = t;\n }\n get columns() {\n return this._view.columns;\n }\n get emptyView() {\n return this._view.emptyView;\n }\n get parent() {\n return this._view.parent;\n }\n get sticky() {\n return this._view.sticky;\n }\n get expanded() {\n return this._view.expanded;\n }\n set expanded(t) {\n this._view.expanded = t;\n }\n get defaultSortKey() {\n return this._view.defaultSortKey;\n }\n}\nconst Gt = function(e) {\n if (!e.id || typeof e.id != \"string\")\n throw new Error(\"View id is required and must be a string\");\n if (!e.name || typeof e.name != \"string\")\n throw new Error(\"View name is required and must be a string\");\n if (e.columns && e.columns.length > 0 && (!e.caption || typeof e.caption != \"string\"))\n throw new Error(\"View caption is required for top-level views and must be a string\");\n if (!e.getContents || typeof e.getContents != \"function\")\n throw new Error(\"View getContents is required and must be a function\");\n if (!e.icon || typeof e.icon != \"string\" || !Ut(e.icon))\n throw new Error(\"View icon is required and must be a valid svg string\");\n if (!(\"order\" in e) || typeof e.order != \"number\")\n throw new Error(\"View order is required and must be a number\");\n if (e.columns && e.columns.forEach((t) => {\n if (!(t instanceof Ae))\n throw new Error(\"View columns must be an array of Column. Invalid column found\");\n }), e.emptyView && typeof e.emptyView != \"function\")\n throw new Error(\"View emptyView must be a function\");\n if (e.parent && typeof e.parent != \"string\")\n throw new Error(\"View parent must be a string\");\n if (\"sticky\" in e && typeof e.sticky != \"boolean\")\n throw new Error(\"View sticky must be a boolean\");\n if (\"expanded\" in e && typeof e.expanded != \"boolean\")\n throw new Error(\"View expanded must be a boolean\");\n if (e.defaultSortKey && typeof e.defaultSortKey != \"string\")\n throw new Error(\"View defaultSortKey must be a string\");\n return !0;\n};\n/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\nconst gr = function(e) {\n return F().registerEntry(e);\n}, wr = function(e) {\n return F().unregisterEntry(e);\n}, mr = function(e) {\n return F().getEntries(e).sort((r, s) => r.order !== void 0 && s.order !== void 0 && r.order !== s.order ? r.order - s.order : r.displayName.localeCompare(s.displayName, void 0, { numeric: !0, sensitivity: \"base\" }));\n};\nexport {\n Ae as Column,\n W as DefaultType,\n _e as File,\n er as FileAction,\n L as FileType,\n ve as Folder,\n nr as Header,\n Ie as Navigation,\n Q as Node,\n J as NodeStatus,\n N as Permission,\n pr as View,\n gr as addNewFileMenuEntry,\n ar as davGetClient,\n ur as davGetDefaultPropfind,\n be as davGetFavoritesReport,\n dr as davGetRecentSearch,\n ye as davParsePermissions,\n ee as davRemoteURL,\n Te as davResultToNode,\n D as davRootPath,\n j as defaultDavNamespaces,\n Z as defaultDavProperties,\n Qt as formatFileSize,\n S as getDavNameSpaces,\n V as getDavProperties,\n lr as getFavoriteNodes,\n rr as getFileActions,\n sr as getFileListHeaders,\n fr as getNavigation,\n mr as getNewFileMenuEntries,\n Dt as parseFileSize,\n or as registerDavProperty,\n tr as registerFileAction,\n ir as registerFileListHeaders,\n wr as removeNewFileMenuEntry\n};\n","// Current version.\nexport var VERSION = '1.13.6';\n\n// Establish the root object, `window` (`self`) in the browser, `global`\n// on the server, or `this` in some virtual machines. We use `self`\n// instead of `window` for `WebWorker` support.\nexport var root = (typeof self == 'object' && self.self === self && self) ||\n (typeof global == 'object' && global.global === global && global) ||\n Function('return this')() ||\n {};\n\n// Save bytes in the minified (but not gzipped) version:\nexport var ArrayProto = Array.prototype, ObjProto = Object.prototype;\nexport var SymbolProto = typeof Symbol !== 'undefined' ? Symbol.prototype : null;\n\n// Create quick reference variables for speed access to core prototypes.\nexport var push = ArrayProto.push,\n slice = ArrayProto.slice,\n toString = ObjProto.toString,\n hasOwnProperty = ObjProto.hasOwnProperty;\n\n// Modern feature detection.\nexport var supportsArrayBuffer = typeof ArrayBuffer !== 'undefined',\n supportsDataView = typeof DataView !== 'undefined';\n\n// All **ECMAScript 5+** native function implementations that we hope to use\n// are declared here.\nexport var nativeIsArray = Array.isArray,\n nativeKeys = Object.keys,\n nativeCreate = Object.create,\n nativeIsView = supportsArrayBuffer && ArrayBuffer.isView;\n\n// Create references to these builtin functions because we override them.\nexport var _isNaN = isNaN,\n _isFinite = isFinite;\n\n// Keys in IE < 9 that won't be iterated by `for key in ...` and thus missed.\nexport var hasEnumBug = !{toString: null}.propertyIsEnumerable('toString');\nexport var nonEnumerableProps = ['valueOf', 'isPrototypeOf', 'toString',\n 'propertyIsEnumerable', 'hasOwnProperty', 'toLocaleString'];\n\n// The largest integer that can be represented exactly.\nexport var MAX_ARRAY_INDEX = Math.pow(2, 53) - 1;\n","// Some functions take a variable number of arguments, or a few expected\n// arguments at the beginning and then a variable number of values to operate\n// on. This helper accumulates all remaining arguments past the function’s\n// argument length (or an explicit `startIndex`), into an array that becomes\n// the last argument. Similar to ES6’s \"rest parameter\".\nexport default function restArguments(func, startIndex) {\n startIndex = startIndex == null ? func.length - 1 : +startIndex;\n return function() {\n var length = Math.max(arguments.length - startIndex, 0),\n rest = Array(length),\n index = 0;\n for (; index < length; index++) {\n rest[index] = arguments[index + startIndex];\n }\n switch (startIndex) {\n case 0: return func.call(this, rest);\n case 1: return func.call(this, arguments[0], rest);\n case 2: return func.call(this, arguments[0], arguments[1], rest);\n }\n var args = Array(startIndex + 1);\n for (index = 0; index < startIndex; index++) {\n args[index] = arguments[index];\n }\n args[startIndex] = rest;\n return func.apply(this, args);\n };\n}\n","// Is a given variable an object?\nexport default function isObject(obj) {\n var type = typeof obj;\n return type === 'function' || (type === 'object' && !!obj);\n}\n","// Is a given value equal to null?\nexport default function isNull(obj) {\n return obj === null;\n}\n","// Is a given variable undefined?\nexport default function isUndefined(obj) {\n return obj === void 0;\n}\n","import { toString } from './_setup.js';\n\n// Is a given value a boolean?\nexport default function isBoolean(obj) {\n return obj === true || obj === false || toString.call(obj) === '[object Boolean]';\n}\n","// Is a given value a DOM element?\nexport default function isElement(obj) {\n return !!(obj && obj.nodeType === 1);\n}\n","import { toString } from './_setup.js';\n\n// Internal function for creating a `toString`-based type tester.\nexport default function tagTester(name) {\n var tag = '[object ' + name + ']';\n return function(obj) {\n return toString.call(obj) === tag;\n };\n}\n","import tagTester from './_tagTester.js';\n\nexport default tagTester('String');\n","import tagTester from './_tagTester.js';\n\nexport default tagTester('Number');\n","import tagTester from './_tagTester.js';\n\nexport default tagTester('Date');\n","import tagTester from './_tagTester.js';\n\nexport default tagTester('RegExp');\n","import tagTester from './_tagTester.js';\n\nexport default tagTester('Error');\n","import tagTester from './_tagTester.js';\n\nexport default tagTester('Symbol');\n","import tagTester from './_tagTester.js';\n\nexport default tagTester('ArrayBuffer');\n","import tagTester from './_tagTester.js';\nimport { root } from './_setup.js';\n\nvar isFunction = tagTester('Function');\n\n// Optimize `isFunction` if appropriate. Work around some `typeof` bugs in old\n// v8, IE 11 (#1621), Safari 8 (#1929), and PhantomJS (#2236).\nvar nodelist = root.document && root.document.childNodes;\nif (typeof /./ != 'function' && typeof Int8Array != 'object' && typeof nodelist != 'function') {\n isFunction = function(obj) {\n return typeof obj == 'function' || false;\n };\n}\n\nexport default isFunction;\n","import tagTester from './_tagTester.js';\n\nexport default tagTester('Object');\n","import { supportsDataView } from './_setup.js';\nimport hasObjectTag from './_hasObjectTag.js';\n\n// In IE 10 - Edge 13, `DataView` has string tag `'[object Object]'`.\n// In IE 11, the most common among them, this problem also applies to\n// `Map`, `WeakMap` and `Set`.\nexport var hasStringTagBug = (\n supportsDataView && hasObjectTag(new DataView(new ArrayBuffer(8)))\n ),\n isIE11 = (typeof Map !== 'undefined' && hasObjectTag(new Map));\n","import tagTester from './_tagTester.js';\nimport isFunction from './isFunction.js';\nimport isArrayBuffer from './isArrayBuffer.js';\nimport { hasStringTagBug } from './_stringTagBug.js';\n\nvar isDataView = tagTester('DataView');\n\n// In IE 10 - Edge 13, we need a different heuristic\n// to determine whether an object is a `DataView`.\nfunction ie10IsDataView(obj) {\n return obj != null && isFunction(obj.getInt8) && isArrayBuffer(obj.buffer);\n}\n\nexport default (hasStringTagBug ? ie10IsDataView : isDataView);\n","import { nativeIsArray } from './_setup.js';\nimport tagTester from './_tagTester.js';\n\n// Is a given value an array?\n// Delegates to ECMA5's native `Array.isArray`.\nexport default nativeIsArray || tagTester('Array');\n","import { hasOwnProperty } from './_setup.js';\n\n// Internal function to check whether `key` is an own property name of `obj`.\nexport default function has(obj, key) {\n return obj != null && hasOwnProperty.call(obj, key);\n}\n","import tagTester from './_tagTester.js';\nimport has from './_has.js';\n\nvar isArguments = tagTester('Arguments');\n\n// Define a fallback version of the method in browsers (ahem, IE < 9), where\n// there isn't any inspectable \"Arguments\" type.\n(function() {\n if (!isArguments(arguments)) {\n isArguments = function(obj) {\n return has(obj, 'callee');\n };\n }\n}());\n\nexport default isArguments;\n","import { _isFinite } from './_setup.js';\nimport isSymbol from './isSymbol.js';\n\n// Is a given object a finite number?\nexport default function isFinite(obj) {\n return !isSymbol(obj) && _isFinite(obj) && !isNaN(parseFloat(obj));\n}\n","import { _isNaN } from './_setup.js';\nimport isNumber from './isNumber.js';\n\n// Is the given value `NaN`?\nexport default function isNaN(obj) {\n return isNumber(obj) && _isNaN(obj);\n}\n","// Predicate-generating function. Often useful outside of Underscore.\nexport default function constant(value) {\n return function() {\n return value;\n };\n}\n","import { MAX_ARRAY_INDEX } from './_setup.js';\n\n// Common internal logic for `isArrayLike` and `isBufferLike`.\nexport default function createSizePropertyCheck(getSizeProperty) {\n return function(collection) {\n var sizeProperty = getSizeProperty(collection);\n return typeof sizeProperty == 'number' && sizeProperty >= 0 && sizeProperty <= MAX_ARRAY_INDEX;\n }\n}\n","// Internal helper to generate a function to obtain property `key` from `obj`.\nexport default function shallowProperty(key) {\n return function(obj) {\n return obj == null ? void 0 : obj[key];\n };\n}\n","import shallowProperty from './_shallowProperty.js';\n\n// Internal helper to obtain the `byteLength` property of an object.\nexport default shallowProperty('byteLength');\n","import createSizePropertyCheck from './_createSizePropertyCheck.js';\nimport getByteLength from './_getByteLength.js';\n\n// Internal helper to determine whether we should spend extensive checks against\n// `ArrayBuffer` et al.\nexport default createSizePropertyCheck(getByteLength);\n","import { supportsArrayBuffer, nativeIsView, toString } from './_setup.js';\nimport isDataView from './isDataView.js';\nimport constant from './constant.js';\nimport isBufferLike from './_isBufferLike.js';\n\n// Is a given value a typed array?\nvar typedArrayPattern = /\\[object ((I|Ui)nt(8|16|32)|Float(32|64)|Uint8Clamped|Big(I|Ui)nt64)Array\\]/;\nfunction isTypedArray(obj) {\n // `ArrayBuffer.isView` is the most future-proof, so use it when available.\n // Otherwise, fall back on the above regular expression.\n return nativeIsView ? (nativeIsView(obj) && !isDataView(obj)) :\n isBufferLike(obj) && typedArrayPattern.test(toString.call(obj));\n}\n\nexport default supportsArrayBuffer ? isTypedArray : constant(false);\n","import shallowProperty from './_shallowProperty.js';\n\n// Internal helper to obtain the `length` property of an object.\nexport default shallowProperty('length');\n","import { nonEnumerableProps, ObjProto } from './_setup.js';\nimport isFunction from './isFunction.js';\nimport has from './_has.js';\n\n// Internal helper to create a simple lookup structure.\n// `collectNonEnumProps` used to depend on `_.contains`, but this led to\n// circular imports. `emulatedSet` is a one-off solution that only works for\n// arrays of strings.\nfunction emulatedSet(keys) {\n var hash = {};\n for (var l = keys.length, i = 0; i < l; ++i) hash[keys[i]] = true;\n return {\n contains: function(key) { return hash[key] === true; },\n push: function(key) {\n hash[key] = true;\n return keys.push(key);\n }\n };\n}\n\n// Internal helper. Checks `keys` for the presence of keys in IE < 9 that won't\n// be iterated by `for key in ...` and thus missed. Extends `keys` in place if\n// needed.\nexport default function collectNonEnumProps(obj, keys) {\n keys = emulatedSet(keys);\n var nonEnumIdx = nonEnumerableProps.length;\n var constructor = obj.constructor;\n var proto = (isFunction(constructor) && constructor.prototype) || ObjProto;\n\n // Constructor is a special case.\n var prop = 'constructor';\n if (has(obj, prop) && !keys.contains(prop)) keys.push(prop);\n\n while (nonEnumIdx--) {\n prop = nonEnumerableProps[nonEnumIdx];\n if (prop in obj && obj[prop] !== proto[prop] && !keys.contains(prop)) {\n keys.push(prop);\n }\n }\n}\n","import isObject from './isObject.js';\nimport { nativeKeys, hasEnumBug } from './_setup.js';\nimport has from './_has.js';\nimport collectNonEnumProps from './_collectNonEnumProps.js';\n\n// Retrieve the names of an object's own properties.\n// Delegates to **ECMAScript 5**'s native `Object.keys`.\nexport default function keys(obj) {\n if (!isObject(obj)) return [];\n if (nativeKeys) return nativeKeys(obj);\n var keys = [];\n for (var key in obj) if (has(obj, key)) keys.push(key);\n // Ahem, IE < 9.\n if (hasEnumBug) collectNonEnumProps(obj, keys);\n return keys;\n}\n","import getLength from './_getLength.js';\nimport isArray from './isArray.js';\nimport isString from './isString.js';\nimport isArguments from './isArguments.js';\nimport keys from './keys.js';\n\n// Is a given array, string, or object empty?\n// An \"empty\" object has no enumerable own-properties.\nexport default function isEmpty(obj) {\n if (obj == null) return true;\n // Skip the more expensive `toString`-based type checks if `obj` has no\n // `.length`.\n var length = getLength(obj);\n if (typeof length == 'number' && (\n isArray(obj) || isString(obj) || isArguments(obj)\n )) return length === 0;\n return getLength(keys(obj)) === 0;\n}\n","import keys from './keys.js';\n\n// Returns whether an object has a given set of `key:value` pairs.\nexport default function isMatch(object, attrs) {\n var _keys = keys(attrs), length = _keys.length;\n if (object == null) return !length;\n var obj = Object(object);\n for (var i = 0; i < length; i++) {\n var key = _keys[i];\n if (attrs[key] !== obj[key] || !(key in obj)) return false;\n }\n return true;\n}\n","import { VERSION } from './_setup.js';\n\n// If Underscore is called as a function, it returns a wrapped object that can\n// be used OO-style. This wrapper holds altered versions of all functions added\n// through `_.mixin`. Wrapped objects may be chained.\nexport default function _(obj) {\n if (obj instanceof _) return obj;\n if (!(this instanceof _)) return new _(obj);\n this._wrapped = obj;\n}\n\n_.VERSION = VERSION;\n\n// Extracts the result from a wrapped and chained object.\n_.prototype.value = function() {\n return this._wrapped;\n};\n\n// Provide unwrapping proxies for some methods used in engine operations\n// such as arithmetic and JSON stringification.\n_.prototype.valueOf = _.prototype.toJSON = _.prototype.value;\n\n_.prototype.toString = function() {\n return String(this._wrapped);\n};\n","import getByteLength from './_getByteLength.js';\n\n// Internal function to wrap or shallow-copy an ArrayBuffer,\n// typed array or DataView to a new view, reusing the buffer.\nexport default function toBufferView(bufferSource) {\n return new Uint8Array(\n bufferSource.buffer || bufferSource,\n bufferSource.byteOffset || 0,\n getByteLength(bufferSource)\n );\n}\n","import _ from './underscore.js';\nimport { toString, SymbolProto } from './_setup.js';\nimport getByteLength from './_getByteLength.js';\nimport isTypedArray from './isTypedArray.js';\nimport isFunction from './isFunction.js';\nimport { hasStringTagBug } from './_stringTagBug.js';\nimport isDataView from './isDataView.js';\nimport keys from './keys.js';\nimport has from './_has.js';\nimport toBufferView from './_toBufferView.js';\n\n// We use this string twice, so give it a name for minification.\nvar tagDataView = '[object DataView]';\n\n// Internal recursive comparison function for `_.isEqual`.\nfunction eq(a, b, aStack, bStack) {\n // Identical objects are equal. `0 === -0`, but they aren't identical.\n // See the [Harmony `egal` proposal](https://wiki.ecmascript.org/doku.php?id=harmony:egal).\n if (a === b) return a !== 0 || 1 / a === 1 / b;\n // `null` or `undefined` only equal to itself (strict comparison).\n if (a == null || b == null) return false;\n // `NaN`s are equivalent, but non-reflexive.\n if (a !== a) return b !== b;\n // Exhaust primitive checks\n var type = typeof a;\n if (type !== 'function' && type !== 'object' && typeof b != 'object') return false;\n return deepEq(a, b, aStack, bStack);\n}\n\n// Internal recursive comparison function for `_.isEqual`.\nfunction deepEq(a, b, aStack, bStack) {\n // Unwrap any wrapped objects.\n if (a instanceof _) a = a._wrapped;\n if (b instanceof _) b = b._wrapped;\n // Compare `[[Class]]` names.\n var className = toString.call(a);\n if (className !== toString.call(b)) return false;\n // Work around a bug in IE 10 - Edge 13.\n if (hasStringTagBug && className == '[object Object]' && isDataView(a)) {\n if (!isDataView(b)) return false;\n className = tagDataView;\n }\n switch (className) {\n // These types are compared by value.\n case '[object RegExp]':\n // RegExps are coerced to strings for comparison (Note: '' + /a/i === '/a/i')\n case '[object String]':\n // Primitives and their corresponding object wrappers are equivalent; thus, `\"5\"` is\n // equivalent to `new String(\"5\")`.\n return '' + a === '' + b;\n case '[object Number]':\n // `NaN`s are equivalent, but non-reflexive.\n // Object(NaN) is equivalent to NaN.\n if (+a !== +a) return +b !== +b;\n // An `egal` comparison is performed for other numeric values.\n return +a === 0 ? 1 / +a === 1 / b : +a === +b;\n case '[object Date]':\n case '[object Boolean]':\n // Coerce dates and booleans to numeric primitive values. Dates are compared by their\n // millisecond representations. Note that invalid dates with millisecond representations\n // of `NaN` are not equivalent.\n return +a === +b;\n case '[object Symbol]':\n return SymbolProto.valueOf.call(a) === SymbolProto.valueOf.call(b);\n case '[object ArrayBuffer]':\n case tagDataView:\n // Coerce to typed array so we can fall through.\n return deepEq(toBufferView(a), toBufferView(b), aStack, bStack);\n }\n\n var areArrays = className === '[object Array]';\n if (!areArrays && isTypedArray(a)) {\n var byteLength = getByteLength(a);\n if (byteLength !== getByteLength(b)) return false;\n if (a.buffer === b.buffer && a.byteOffset === b.byteOffset) return true;\n areArrays = true;\n }\n if (!areArrays) {\n if (typeof a != 'object' || typeof b != 'object') return false;\n\n // Objects with different constructors are not equivalent, but `Object`s or `Array`s\n // from different frames are.\n var aCtor = a.constructor, bCtor = b.constructor;\n if (aCtor !== bCtor && !(isFunction(aCtor) && aCtor instanceof aCtor &&\n isFunction(bCtor) && bCtor instanceof bCtor)\n && ('constructor' in a && 'constructor' in b)) {\n return false;\n }\n }\n // Assume equality for cyclic structures. The algorithm for detecting cyclic\n // structures is adapted from ES 5.1 section 15.12.3, abstract operation `JO`.\n\n // Initializing stack of traversed objects.\n // It's done here since we only need them for objects and arrays comparison.\n aStack = aStack || [];\n bStack = bStack || [];\n var length = aStack.length;\n while (length--) {\n // Linear search. Performance is inversely proportional to the number of\n // unique nested structures.\n if (aStack[length] === a) return bStack[length] === b;\n }\n\n // Add the first object to the stack of traversed objects.\n aStack.push(a);\n bStack.push(b);\n\n // Recursively compare objects and arrays.\n if (areArrays) {\n // Compare array lengths to determine if a deep comparison is necessary.\n length = a.length;\n if (length !== b.length) return false;\n // Deep compare the contents, ignoring non-numeric properties.\n while (length--) {\n if (!eq(a[length], b[length], aStack, bStack)) return false;\n }\n } else {\n // Deep compare objects.\n var _keys = keys(a), key;\n length = _keys.length;\n // Ensure that both objects contain the same number of properties before comparing deep equality.\n if (keys(b).length !== length) return false;\n while (length--) {\n // Deep compare each member\n key = _keys[length];\n if (!(has(b, key) && eq(a[key], b[key], aStack, bStack))) return false;\n }\n }\n // Remove the first object from the stack of traversed objects.\n aStack.pop();\n bStack.pop();\n return true;\n}\n\n// Perform a deep comparison to check if two objects are equal.\nexport default function isEqual(a, b) {\n return eq(a, b);\n}\n","import isObject from './isObject.js';\nimport { hasEnumBug } from './_setup.js';\nimport collectNonEnumProps from './_collectNonEnumProps.js';\n\n// Retrieve all the enumerable property names of an object.\nexport default function allKeys(obj) {\n if (!isObject(obj)) return [];\n var keys = [];\n for (var key in obj) keys.push(key);\n // Ahem, IE < 9.\n if (hasEnumBug) collectNonEnumProps(obj, keys);\n return keys;\n}\n","import getLength from './_getLength.js';\nimport isFunction from './isFunction.js';\nimport allKeys from './allKeys.js';\n\n// Since the regular `Object.prototype.toString` type tests don't work for\n// some types in IE 11, we use a fingerprinting heuristic instead, based\n// on the methods. It's not great, but it's the best we got.\n// The fingerprint method lists are defined below.\nexport function ie11fingerprint(methods) {\n var length = getLength(methods);\n return function(obj) {\n if (obj == null) return false;\n // `Map`, `WeakMap` and `Set` have no enumerable keys.\n var keys = allKeys(obj);\n if (getLength(keys)) return false;\n for (var i = 0; i < length; i++) {\n if (!isFunction(obj[methods[i]])) return false;\n }\n // If we are testing against `WeakMap`, we need to ensure that\n // `obj` doesn't have a `forEach` method in order to distinguish\n // it from a regular `Map`.\n return methods !== weakMapMethods || !isFunction(obj[forEachName]);\n };\n}\n\n// In the interest of compact minification, we write\n// each string in the fingerprints only once.\nvar forEachName = 'forEach',\n hasName = 'has',\n commonInit = ['clear', 'delete'],\n mapTail = ['get', hasName, 'set'];\n\n// `Map`, `WeakMap` and `Set` each have slightly different\n// combinations of the above sublists.\nexport var mapMethods = commonInit.concat(forEachName, mapTail),\n weakMapMethods = commonInit.concat(mapTail),\n setMethods = ['add'].concat(commonInit, forEachName, hasName);\n","import tagTester from './_tagTester.js';\nimport { isIE11 } from './_stringTagBug.js';\nimport { ie11fingerprint, mapMethods } from './_methodFingerprint.js';\n\nexport default isIE11 ? ie11fingerprint(mapMethods) : tagTester('Map');\n","import tagTester from './_tagTester.js';\nimport { isIE11 } from './_stringTagBug.js';\nimport { ie11fingerprint, weakMapMethods } from './_methodFingerprint.js';\n\nexport default isIE11 ? ie11fingerprint(weakMapMethods) : tagTester('WeakMap');\n","import tagTester from './_tagTester.js';\nimport { isIE11 } from './_stringTagBug.js';\nimport { ie11fingerprint, setMethods } from './_methodFingerprint.js';\n\nexport default isIE11 ? ie11fingerprint(setMethods) : tagTester('Set');\n","import tagTester from './_tagTester.js';\n\nexport default tagTester('WeakSet');\n","import keys from './keys.js';\n\n// Retrieve the values of an object's properties.\nexport default function values(obj) {\n var _keys = keys(obj);\n var length = _keys.length;\n var values = Array(length);\n for (var i = 0; i < length; i++) {\n values[i] = obj[_keys[i]];\n }\n return values;\n}\n","import keys from './keys.js';\n\n// Convert an object into a list of `[key, value]` pairs.\n// The opposite of `_.object` with one argument.\nexport default function pairs(obj) {\n var _keys = keys(obj);\n var length = _keys.length;\n var pairs = Array(length);\n for (var i = 0; i < length; i++) {\n pairs[i] = [_keys[i], obj[_keys[i]]];\n }\n return pairs;\n}\n","import keys from './keys.js';\n\n// Invert the keys and values of an object. The values must be serializable.\nexport default function invert(obj) {\n var result = {};\n var _keys = keys(obj);\n for (var i = 0, length = _keys.length; i < length; i++) {\n result[obj[_keys[i]]] = _keys[i];\n }\n return result;\n}\n","import isFunction from './isFunction.js';\n\n// Return a sorted list of the function names available on the object.\nexport default function functions(obj) {\n var names = [];\n for (var key in obj) {\n if (isFunction(obj[key])) names.push(key);\n }\n return names.sort();\n}\n","// An internal function for creating assigner functions.\nexport default function createAssigner(keysFunc, defaults) {\n return function(obj) {\n var length = arguments.length;\n if (defaults) obj = Object(obj);\n if (length < 2 || obj == null) return obj;\n for (var index = 1; index < length; index++) {\n var source = arguments[index],\n keys = keysFunc(source),\n l = keys.length;\n for (var i = 0; i < l; i++) {\n var key = keys[i];\n if (!defaults || obj[key] === void 0) obj[key] = source[key];\n }\n }\n return obj;\n };\n}\n","import createAssigner from './_createAssigner.js';\nimport allKeys from './allKeys.js';\n\n// Extend a given object with all the properties in passed-in object(s).\nexport default createAssigner(allKeys);\n","import createAssigner from './_createAssigner.js';\nimport keys from './keys.js';\n\n// Assigns a given object with all the own properties in the passed-in\n// object(s).\n// (https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object/assign)\nexport default createAssigner(keys);\n","import createAssigner from './_createAssigner.js';\nimport allKeys from './allKeys.js';\n\n// Fill in a given object with default properties.\nexport default createAssigner(allKeys, true);\n","import isObject from './isObject.js';\nimport { nativeCreate } from './_setup.js';\n\n// Create a naked function reference for surrogate-prototype-swapping.\nfunction ctor() {\n return function(){};\n}\n\n// An internal function for creating a new object that inherits from another.\nexport default function baseCreate(prototype) {\n if (!isObject(prototype)) return {};\n if (nativeCreate) return nativeCreate(prototype);\n var Ctor = ctor();\n Ctor.prototype = prototype;\n var result = new Ctor;\n Ctor.prototype = null;\n return result;\n}\n","import baseCreate from './_baseCreate.js';\nimport extendOwn from './extendOwn.js';\n\n// Creates an object that inherits from the given prototype object.\n// If additional properties are provided then they will be added to the\n// created object.\nexport default function create(prototype, props) {\n var result = baseCreate(prototype);\n if (props) extendOwn(result, props);\n return result;\n}\n","import isObject from './isObject.js';\nimport isArray from './isArray.js';\nimport extend from './extend.js';\n\n// Create a (shallow-cloned) duplicate of an object.\nexport default function clone(obj) {\n if (!isObject(obj)) return obj;\n return isArray(obj) ? obj.slice() : extend({}, obj);\n}\n","// Invokes `interceptor` with the `obj` and then returns `obj`.\n// The primary purpose of this method is to \"tap into\" a method chain, in\n// order to perform operations on intermediate results within the chain.\nexport default function tap(obj, interceptor) {\n interceptor(obj);\n return obj;\n}\n","import _ from './underscore.js';\nimport isArray from './isArray.js';\n\n// Normalize a (deep) property `path` to array.\n// Like `_.iteratee`, this function can be customized.\nexport default function toPath(path) {\n return isArray(path) ? path : [path];\n}\n_.toPath = toPath;\n","import _ from './underscore.js';\nimport './toPath.js';\n\n// Internal wrapper for `_.toPath` to enable minification.\n// Similar to `cb` for `_.iteratee`.\nexport default function toPath(path) {\n return _.toPath(path);\n}\n","// Internal function to obtain a nested property in `obj` along `path`.\nexport default function deepGet(obj, path) {\n var length = path.length;\n for (var i = 0; i < length; i++) {\n if (obj == null) return void 0;\n obj = obj[path[i]];\n }\n return length ? obj : void 0;\n}\n","import toPath from './_toPath.js';\nimport deepGet from './_deepGet.js';\nimport isUndefined from './isUndefined.js';\n\n// Get the value of the (deep) property on `path` from `object`.\n// If any property in `path` does not exist or if the value is\n// `undefined`, return `defaultValue` instead.\n// The `path` is normalized through `_.toPath`.\nexport default function get(object, path, defaultValue) {\n var value = deepGet(object, toPath(path));\n return isUndefined(value) ? defaultValue : value;\n}\n","import _has from './_has.js';\nimport toPath from './_toPath.js';\n\n// Shortcut function for checking if an object has a given property directly on\n// itself (in other words, not on a prototype). Unlike the internal `has`\n// function, this public version can also traverse nested properties.\nexport default function has(obj, path) {\n path = toPath(path);\n var length = path.length;\n for (var i = 0; i < length; i++) {\n var key = path[i];\n if (!_has(obj, key)) return false;\n obj = obj[key];\n }\n return !!length;\n}\n","// Keep the identity function around for default iteratees.\nexport default function identity(value) {\n return value;\n}\n","import extendOwn from './extendOwn.js';\nimport isMatch from './isMatch.js';\n\n// Returns a predicate for checking whether an object has a given set of\n// `key:value` pairs.\nexport default function matcher(attrs) {\n attrs = extendOwn({}, attrs);\n return function(obj) {\n return isMatch(obj, attrs);\n };\n}\n","import deepGet from './_deepGet.js';\nimport toPath from './_toPath.js';\n\n// Creates a function that, when passed an object, will traverse that object’s\n// properties down the given `path`, specified as an array of keys or indices.\nexport default function property(path) {\n path = toPath(path);\n return function(obj) {\n return deepGet(obj, path);\n };\n}\n","// Internal function that returns an efficient (for current engines) version\n// of the passed-in callback, to be repeatedly applied in other Underscore\n// functions.\nexport default function optimizeCb(func, context, argCount) {\n if (context === void 0) return func;\n switch (argCount == null ? 3 : argCount) {\n case 1: return function(value) {\n return func.call(context, value);\n };\n // The 2-argument case is omitted because we’re not using it.\n case 3: return function(value, index, collection) {\n return func.call(context, value, index, collection);\n };\n case 4: return function(accumulator, value, index, collection) {\n return func.call(context, accumulator, value, index, collection);\n };\n }\n return function() {\n return func.apply(context, arguments);\n };\n}\n","import identity from './identity.js';\nimport isFunction from './isFunction.js';\nimport isObject from './isObject.js';\nimport isArray from './isArray.js';\nimport matcher from './matcher.js';\nimport property from './property.js';\nimport optimizeCb from './_optimizeCb.js';\n\n// An internal function to generate callbacks that can be applied to each\n// element in a collection, returning the desired result — either `_.identity`,\n// an arbitrary callback, a property matcher, or a property accessor.\nexport default function baseIteratee(value, context, argCount) {\n if (value == null) return identity;\n if (isFunction(value)) return optimizeCb(value, context, argCount);\n if (isObject(value) && !isArray(value)) return matcher(value);\n return property(value);\n}\n","import _ from './underscore.js';\nimport baseIteratee from './_baseIteratee.js';\n\n// External wrapper for our callback generator. Users may customize\n// `_.iteratee` if they want additional predicate/iteratee shorthand styles.\n// This abstraction hides the internal-only `argCount` argument.\nexport default function iteratee(value, context) {\n return baseIteratee(value, context, Infinity);\n}\n_.iteratee = iteratee;\n","import _ from './underscore.js';\nimport baseIteratee from './_baseIteratee.js';\nimport iteratee from './iteratee.js';\n\n// The function we call internally to generate a callback. It invokes\n// `_.iteratee` if overridden, otherwise `baseIteratee`.\nexport default function cb(value, context, argCount) {\n if (_.iteratee !== iteratee) return _.iteratee(value, context);\n return baseIteratee(value, context, argCount);\n}\n","import cb from './_cb.js';\nimport keys from './keys.js';\n\n// Returns the results of applying the `iteratee` to each element of `obj`.\n// In contrast to `_.map` it returns an object.\nexport default function mapObject(obj, iteratee, context) {\n iteratee = cb(iteratee, context);\n var _keys = keys(obj),\n length = _keys.length,\n results = {};\n for (var index = 0; index < length; index++) {\n var currentKey = _keys[index];\n results[currentKey] = iteratee(obj[currentKey], currentKey, obj);\n }\n return results;\n}\n","// Predicate-generating function. Often useful outside of Underscore.\nexport default function noop(){}\n","import noop from './noop.js';\nimport get from './get.js';\n\n// Generates a function for a given object that returns a given property.\nexport default function propertyOf(obj) {\n if (obj == null) return noop;\n return function(path) {\n return get(obj, path);\n };\n}\n","import optimizeCb from './_optimizeCb.js';\n\n// Run a function **n** times.\nexport default function times(n, iteratee, context) {\n var accum = Array(Math.max(0, n));\n iteratee = optimizeCb(iteratee, context, 1);\n for (var i = 0; i < n; i++) accum[i] = iteratee(i);\n return accum;\n}\n","// Return a random integer between `min` and `max` (inclusive).\nexport default function random(min, max) {\n if (max == null) {\n max = min;\n min = 0;\n }\n return min + Math.floor(Math.random() * (max - min + 1));\n}\n","// A (possibly faster) way to get the current timestamp as an integer.\nexport default Date.now || function() {\n return new Date().getTime();\n};\n","import keys from './keys.js';\n\n// Internal helper to generate functions for escaping and unescaping strings\n// to/from HTML interpolation.\nexport default function createEscaper(map) {\n var escaper = function(match) {\n return map[match];\n };\n // Regexes for identifying a key that needs to be escaped.\n var source = '(?:' + keys(map).join('|') + ')';\n var testRegexp = RegExp(source);\n var replaceRegexp = RegExp(source, 'g');\n return function(string) {\n string = string == null ? '' : '' + string;\n return testRegexp.test(string) ? string.replace(replaceRegexp, escaper) : string;\n };\n}\n","// Internal list of HTML entities for escaping.\nexport default {\n '&': '&',\n '<': '<',\n '>': '>',\n '\"': '"',\n \"'\": ''',\n '`': '`'\n};\n","import createEscaper from './_createEscaper.js';\nimport escapeMap from './_escapeMap.js';\n\n// Function for escaping strings to HTML interpolation.\nexport default createEscaper(escapeMap);\n","import createEscaper from './_createEscaper.js';\nimport unescapeMap from './_unescapeMap.js';\n\n// Function for unescaping strings from HTML interpolation.\nexport default createEscaper(unescapeMap);\n","import invert from './invert.js';\nimport escapeMap from './_escapeMap.js';\n\n// Internal list of HTML entities for unescaping.\nexport default invert(escapeMap);\n","import _ from './underscore.js';\n\n// By default, Underscore uses ERB-style template delimiters. Change the\n// following template settings to use alternative delimiters.\nexport default _.templateSettings = {\n evaluate: /<%([\\s\\S]+?)%>/g,\n interpolate: /<%=([\\s\\S]+?)%>/g,\n escape: /<%-([\\s\\S]+?)%>/g\n};\n","import defaults from './defaults.js';\nimport _ from './underscore.js';\nimport './templateSettings.js';\n\n// When customizing `_.templateSettings`, if you don't want to define an\n// interpolation, evaluation or escaping regex, we need one that is\n// guaranteed not to match.\nvar noMatch = /(.)^/;\n\n// Certain characters need to be escaped so that they can be put into a\n// string literal.\nvar escapes = {\n \"'\": \"'\",\n '\\\\': '\\\\',\n '\\r': 'r',\n '\\n': 'n',\n '\\u2028': 'u2028',\n '\\u2029': 'u2029'\n};\n\nvar escapeRegExp = /\\\\|'|\\r|\\n|\\u2028|\\u2029/g;\n\nfunction escapeChar(match) {\n return '\\\\' + escapes[match];\n}\n\n// In order to prevent third-party code injection through\n// `_.templateSettings.variable`, we test it against the following regular\n// expression. It is intentionally a bit more liberal than just matching valid\n// identifiers, but still prevents possible loopholes through defaults or\n// destructuring assignment.\nvar bareIdentifier = /^\\s*(\\w|\\$)+\\s*$/;\n\n// JavaScript micro-templating, similar to John Resig's implementation.\n// Underscore templating handles arbitrary delimiters, preserves whitespace,\n// and correctly escapes quotes within interpolated code.\n// NB: `oldSettings` only exists for backwards compatibility.\nexport default function template(text, settings, oldSettings) {\n if (!settings && oldSettings) settings = oldSettings;\n settings = defaults({}, settings, _.templateSettings);\n\n // Combine delimiters into one regular expression via alternation.\n var matcher = RegExp([\n (settings.escape || noMatch).source,\n (settings.interpolate || noMatch).source,\n (settings.evaluate || noMatch).source\n ].join('|') + '|$', 'g');\n\n // Compile the template source, escaping string literals appropriately.\n var index = 0;\n var source = \"__p+='\";\n text.replace(matcher, function(match, escape, interpolate, evaluate, offset) {\n source += text.slice(index, offset).replace(escapeRegExp, escapeChar);\n index = offset + match.length;\n\n if (escape) {\n source += \"'+\\n((__t=(\" + escape + \"))==null?'':_.escape(__t))+\\n'\";\n } else if (interpolate) {\n source += \"'+\\n((__t=(\" + interpolate + \"))==null?'':__t)+\\n'\";\n } else if (evaluate) {\n source += \"';\\n\" + evaluate + \"\\n__p+='\";\n }\n\n // Adobe VMs need the match returned to produce the correct offset.\n return match;\n });\n source += \"';\\n\";\n\n var argument = settings.variable;\n if (argument) {\n // Insure against third-party code injection. (CVE-2021-23358)\n if (!bareIdentifier.test(argument)) throw new Error(\n 'variable is not a bare identifier: ' + argument\n );\n } else {\n // If a variable is not specified, place data values in local scope.\n source = 'with(obj||{}){\\n' + source + '}\\n';\n argument = 'obj';\n }\n\n source = \"var __t,__p='',__j=Array.prototype.join,\" +\n \"print=function(){__p+=__j.call(arguments,'');};\\n\" +\n source + 'return __p;\\n';\n\n var render;\n try {\n render = new Function(argument, '_', source);\n } catch (e) {\n e.source = source;\n throw e;\n }\n\n var template = function(data) {\n return render.call(this, data, _);\n };\n\n // Provide the compiled source as a convenience for precompilation.\n template.source = 'function(' + argument + '){\\n' + source + '}';\n\n return template;\n}\n","import isFunction from './isFunction.js';\nimport toPath from './_toPath.js';\n\n// Traverses the children of `obj` along `path`. If a child is a function, it\n// is invoked with its parent as context. Returns the value of the final\n// child, or `fallback` if any child is undefined.\nexport default function result(obj, path, fallback) {\n path = toPath(path);\n var length = path.length;\n if (!length) {\n return isFunction(fallback) ? fallback.call(obj) : fallback;\n }\n for (var i = 0; i < length; i++) {\n var prop = obj == null ? void 0 : obj[path[i]];\n if (prop === void 0) {\n prop = fallback;\n i = length; // Ensure we don't continue iterating.\n }\n obj = isFunction(prop) ? prop.call(obj) : prop;\n }\n return obj;\n}\n","// Generate a unique integer id (unique within the entire client session).\n// Useful for temporary DOM ids.\nvar idCounter = 0;\nexport default function uniqueId(prefix) {\n var id = ++idCounter + '';\n return prefix ? prefix + id : id;\n}\n","import _ from './underscore.js';\n\n// Start chaining a wrapped Underscore object.\nexport default function chain(obj) {\n var instance = _(obj);\n instance._chain = true;\n return instance;\n}\n","import baseCreate from './_baseCreate.js';\nimport isObject from './isObject.js';\n\n// Internal function to execute `sourceFunc` bound to `context` with optional\n// `args`. Determines whether to execute a function as a constructor or as a\n// normal function.\nexport default function executeBound(sourceFunc, boundFunc, context, callingContext, args) {\n if (!(callingContext instanceof boundFunc)) return sourceFunc.apply(context, args);\n var self = baseCreate(sourceFunc.prototype);\n var result = sourceFunc.apply(self, args);\n if (isObject(result)) return result;\n return self;\n}\n","import restArguments from './restArguments.js';\nimport executeBound from './_executeBound.js';\nimport _ from './underscore.js';\n\n// Partially apply a function by creating a version that has had some of its\n// arguments pre-filled, without changing its dynamic `this` context. `_` acts\n// as a placeholder by default, allowing any combination of arguments to be\n// pre-filled. Set `_.partial.placeholder` for a custom placeholder argument.\nvar partial = restArguments(function(func, boundArgs) {\n var placeholder = partial.placeholder;\n var bound = function() {\n var position = 0, length = boundArgs.length;\n var args = Array(length);\n for (var i = 0; i < length; i++) {\n args[i] = boundArgs[i] === placeholder ? arguments[position++] : boundArgs[i];\n }\n while (position < arguments.length) args.push(arguments[position++]);\n return executeBound(func, bound, this, this, args);\n };\n return bound;\n});\n\npartial.placeholder = _;\nexport default partial;\n","import restArguments from './restArguments.js';\nimport isFunction from './isFunction.js';\nimport executeBound from './_executeBound.js';\n\n// Create a function bound to a given object (assigning `this`, and arguments,\n// optionally).\nexport default restArguments(function(func, context, args) {\n if (!isFunction(func)) throw new TypeError('Bind must be called on a function');\n var bound = restArguments(function(callArgs) {\n return executeBound(func, bound, context, this, args.concat(callArgs));\n });\n return bound;\n});\n","import createSizePropertyCheck from './_createSizePropertyCheck.js';\nimport getLength from './_getLength.js';\n\n// Internal helper for collection methods to determine whether a collection\n// should be iterated as an array or as an object.\n// Related: https://people.mozilla.org/~jorendorff/es6-draft.html#sec-tolength\n// Avoids a very nasty iOS 8 JIT bug on ARM-64. #2094\nexport default createSizePropertyCheck(getLength);\n","import getLength from './_getLength.js';\nimport isArrayLike from './_isArrayLike.js';\nimport isArray from './isArray.js';\nimport isArguments from './isArguments.js';\n\n// Internal implementation of a recursive `flatten` function.\nexport default function flatten(input, depth, strict, output) {\n output = output || [];\n if (!depth && depth !== 0) {\n depth = Infinity;\n } else if (depth <= 0) {\n return output.concat(input);\n }\n var idx = output.length;\n for (var i = 0, length = getLength(input); i < length; i++) {\n var value = input[i];\n if (isArrayLike(value) && (isArray(value) || isArguments(value))) {\n // Flatten current level of array or arguments object.\n if (depth > 1) {\n flatten(value, depth - 1, strict, output);\n idx = output.length;\n } else {\n var j = 0, len = value.length;\n while (j < len) output[idx++] = value[j++];\n }\n } else if (!strict) {\n output[idx++] = value;\n }\n }\n return output;\n}\n","import restArguments from './restArguments.js';\nimport flatten from './_flatten.js';\nimport bind from './bind.js';\n\n// Bind a number of an object's methods to that object. Remaining arguments\n// are the method names to be bound. Useful for ensuring that all callbacks\n// defined on an object belong to it.\nexport default restArguments(function(obj, keys) {\n keys = flatten(keys, false, false);\n var index = keys.length;\n if (index < 1) throw new Error('bindAll must be passed function names');\n while (index--) {\n var key = keys[index];\n obj[key] = bind(obj[key], obj);\n }\n return obj;\n});\n","import has from './_has.js';\n\n// Memoize an expensive function by storing its results.\nexport default function memoize(func, hasher) {\n var memoize = function(key) {\n var cache = memoize.cache;\n var address = '' + (hasher ? hasher.apply(this, arguments) : key);\n if (!has(cache, address)) cache[address] = func.apply(this, arguments);\n return cache[address];\n };\n memoize.cache = {};\n return memoize;\n}\n","import restArguments from './restArguments.js';\n\n// Delays a function for the given number of milliseconds, and then calls\n// it with the arguments supplied.\nexport default restArguments(function(func, wait, args) {\n return setTimeout(function() {\n return func.apply(null, args);\n }, wait);\n});\n","import partial from './partial.js';\nimport delay from './delay.js';\nimport _ from './underscore.js';\n\n// Defers a function, scheduling it to run after the current call stack has\n// cleared.\nexport default partial(delay, _, 1);\n","import now from './now.js';\n\n// Returns a function, that, when invoked, will only be triggered at most once\n// during a given window of time. Normally, the throttled function will run\n// as much as it can, without ever going more than once per `wait` duration;\n// but if you'd like to disable the execution on the leading edge, pass\n// `{leading: false}`. To disable execution on the trailing edge, ditto.\nexport default function throttle(func, wait, options) {\n var timeout, context, args, result;\n var previous = 0;\n if (!options) options = {};\n\n var later = function() {\n previous = options.leading === false ? 0 : now();\n timeout = null;\n result = func.apply(context, args);\n if (!timeout) context = args = null;\n };\n\n var throttled = function() {\n var _now = now();\n if (!previous && options.leading === false) previous = _now;\n var remaining = wait - (_now - previous);\n context = this;\n args = arguments;\n if (remaining <= 0 || remaining > wait) {\n if (timeout) {\n clearTimeout(timeout);\n timeout = null;\n }\n previous = _now;\n result = func.apply(context, args);\n if (!timeout) context = args = null;\n } else if (!timeout && options.trailing !== false) {\n timeout = setTimeout(later, remaining);\n }\n return result;\n };\n\n throttled.cancel = function() {\n clearTimeout(timeout);\n previous = 0;\n timeout = context = args = null;\n };\n\n return throttled;\n}\n","import restArguments from './restArguments.js';\nimport now from './now.js';\n\n// When a sequence of calls of the returned function ends, the argument\n// function is triggered. The end of a sequence is defined by the `wait`\n// parameter. If `immediate` is passed, the argument function will be\n// triggered at the beginning of the sequence instead of at the end.\nexport default function debounce(func, wait, immediate) {\n var timeout, previous, args, result, context;\n\n var later = function() {\n var passed = now() - previous;\n if (wait > passed) {\n timeout = setTimeout(later, wait - passed);\n } else {\n timeout = null;\n if (!immediate) result = func.apply(context, args);\n // This check is needed because `func` can recursively invoke `debounced`.\n if (!timeout) args = context = null;\n }\n };\n\n var debounced = restArguments(function(_args) {\n context = this;\n args = _args;\n previous = now();\n if (!timeout) {\n timeout = setTimeout(later, wait);\n if (immediate) result = func.apply(context, args);\n }\n return result;\n });\n\n debounced.cancel = function() {\n clearTimeout(timeout);\n timeout = args = context = null;\n };\n\n return debounced;\n}\n","import partial from './partial.js';\n\n// Returns the first function passed as an argument to the second,\n// allowing you to adjust arguments, run code before and after, and\n// conditionally execute the original function.\nexport default function wrap(func, wrapper) {\n return partial(wrapper, func);\n}\n","// Returns a negated version of the passed-in predicate.\nexport default function negate(predicate) {\n return function() {\n return !predicate.apply(this, arguments);\n };\n}\n","// Returns a function that is the composition of a list of functions, each\n// consuming the return value of the function that follows.\nexport default function compose() {\n var args = arguments;\n var start = args.length - 1;\n return function() {\n var i = start;\n var result = args[start].apply(this, arguments);\n while (i--) result = args[i].call(this, result);\n return result;\n };\n}\n","// Returns a function that will only be executed on and after the Nth call.\nexport default function after(times, func) {\n return function() {\n if (--times < 1) {\n return func.apply(this, arguments);\n }\n };\n}\n","// Returns a function that will only be executed up to (but not including) the\n// Nth call.\nexport default function before(times, func) {\n var memo;\n return function() {\n if (--times > 0) {\n memo = func.apply(this, arguments);\n }\n if (times <= 1) func = null;\n return memo;\n };\n}\n","import partial from './partial.js';\nimport before from './before.js';\n\n// Returns a function that will be executed at most one time, no matter how\n// often you call it. Useful for lazy initialization.\nexport default partial(before, 2);\n","import cb from './_cb.js';\nimport keys from './keys.js';\n\n// Returns the first key on an object that passes a truth test.\nexport default function findKey(obj, predicate, context) {\n predicate = cb(predicate, context);\n var _keys = keys(obj), key;\n for (var i = 0, length = _keys.length; i < length; i++) {\n key = _keys[i];\n if (predicate(obj[key], key, obj)) return key;\n }\n}\n","import cb from './_cb.js';\nimport getLength from './_getLength.js';\n\n// Internal function to generate `_.findIndex` and `_.findLastIndex`.\nexport default function createPredicateIndexFinder(dir) {\n return function(array, predicate, context) {\n predicate = cb(predicate, context);\n var length = getLength(array);\n var index = dir > 0 ? 0 : length - 1;\n for (; index >= 0 && index < length; index += dir) {\n if (predicate(array[index], index, array)) return index;\n }\n return -1;\n };\n}\n","import createPredicateIndexFinder from './_createPredicateIndexFinder.js';\n\n// Returns the first index on an array-like that passes a truth test.\nexport default createPredicateIndexFinder(1);\n","import createPredicateIndexFinder from './_createPredicateIndexFinder.js';\n\n// Returns the last index on an array-like that passes a truth test.\nexport default createPredicateIndexFinder(-1);\n","import cb from './_cb.js';\nimport getLength from './_getLength.js';\n\n// Use a comparator function to figure out the smallest index at which\n// an object should be inserted so as to maintain order. Uses binary search.\nexport default function sortedIndex(array, obj, iteratee, context) {\n iteratee = cb(iteratee, context, 1);\n var value = iteratee(obj);\n var low = 0, high = getLength(array);\n while (low < high) {\n var mid = Math.floor((low + high) / 2);\n if (iteratee(array[mid]) < value) low = mid + 1; else high = mid;\n }\n return low;\n}\n","import getLength from './_getLength.js';\nimport { slice } from './_setup.js';\nimport isNaN from './isNaN.js';\n\n// Internal function to generate the `_.indexOf` and `_.lastIndexOf` functions.\nexport default function createIndexFinder(dir, predicateFind, sortedIndex) {\n return function(array, item, idx) {\n var i = 0, length = getLength(array);\n if (typeof idx == 'number') {\n if (dir > 0) {\n i = idx >= 0 ? idx : Math.max(idx + length, i);\n } else {\n length = idx >= 0 ? Math.min(idx + 1, length) : idx + length + 1;\n }\n } else if (sortedIndex && idx && length) {\n idx = sortedIndex(array, item);\n return array[idx] === item ? idx : -1;\n }\n if (item !== item) {\n idx = predicateFind(slice.call(array, i, length), isNaN);\n return idx >= 0 ? idx + i : -1;\n }\n for (idx = dir > 0 ? i : length - 1; idx >= 0 && idx < length; idx += dir) {\n if (array[idx] === item) return idx;\n }\n return -1;\n };\n}\n","import sortedIndex from './sortedIndex.js';\nimport findIndex from './findIndex.js';\nimport createIndexFinder from './_createIndexFinder.js';\n\n// Return the position of the first occurrence of an item in an array,\n// or -1 if the item is not included in the array.\n// If the array is large and already in sort order, pass `true`\n// for **isSorted** to use binary search.\nexport default createIndexFinder(1, findIndex, sortedIndex);\n","import findLastIndex from './findLastIndex.js';\nimport createIndexFinder from './_createIndexFinder.js';\n\n// Return the position of the last occurrence of an item in an array,\n// or -1 if the item is not included in the array.\nexport default createIndexFinder(-1, findLastIndex);\n","import isArrayLike from './_isArrayLike.js';\nimport findIndex from './findIndex.js';\nimport findKey from './findKey.js';\n\n// Return the first value which passes a truth test.\nexport default function find(obj, predicate, context) {\n var keyFinder = isArrayLike(obj) ? findIndex : findKey;\n var key = keyFinder(obj, predicate, context);\n if (key !== void 0 && key !== -1) return obj[key];\n}\n","import find from './find.js';\nimport matcher from './matcher.js';\n\n// Convenience version of a common use case of `_.find`: getting the first\n// object containing specific `key:value` pairs.\nexport default function findWhere(obj, attrs) {\n return find(obj, matcher(attrs));\n}\n","import optimizeCb from './_optimizeCb.js';\nimport isArrayLike from './_isArrayLike.js';\nimport keys from './keys.js';\n\n// The cornerstone for collection functions, an `each`\n// implementation, aka `forEach`.\n// Handles raw objects in addition to array-likes. Treats all\n// sparse array-likes as if they were dense.\nexport default function each(obj, iteratee, context) {\n iteratee = optimizeCb(iteratee, context);\n var i, length;\n if (isArrayLike(obj)) {\n for (i = 0, length = obj.length; i < length; i++) {\n iteratee(obj[i], i, obj);\n }\n } else {\n var _keys = keys(obj);\n for (i = 0, length = _keys.length; i < length; i++) {\n iteratee(obj[_keys[i]], _keys[i], obj);\n }\n }\n return obj;\n}\n","import cb from './_cb.js';\nimport isArrayLike from './_isArrayLike.js';\nimport keys from './keys.js';\n\n// Return the results of applying the iteratee to each element.\nexport default function map(obj, iteratee, context) {\n iteratee = cb(iteratee, context);\n var _keys = !isArrayLike(obj) && keys(obj),\n length = (_keys || obj).length,\n results = Array(length);\n for (var index = 0; index < length; index++) {\n var currentKey = _keys ? _keys[index] : index;\n results[index] = iteratee(obj[currentKey], currentKey, obj);\n }\n return results;\n}\n","import isArrayLike from './_isArrayLike.js';\nimport keys from './keys.js';\nimport optimizeCb from './_optimizeCb.js';\n\n// Internal helper to create a reducing function, iterating left or right.\nexport default function createReduce(dir) {\n // Wrap code that reassigns argument variables in a separate function than\n // the one that accesses `arguments.length` to avoid a perf hit. (#1991)\n var reducer = function(obj, iteratee, memo, initial) {\n var _keys = !isArrayLike(obj) && keys(obj),\n length = (_keys || obj).length,\n index = dir > 0 ? 0 : length - 1;\n if (!initial) {\n memo = obj[_keys ? _keys[index] : index];\n index += dir;\n }\n for (; index >= 0 && index < length; index += dir) {\n var currentKey = _keys ? _keys[index] : index;\n memo = iteratee(memo, obj[currentKey], currentKey, obj);\n }\n return memo;\n };\n\n return function(obj, iteratee, memo, context) {\n var initial = arguments.length >= 3;\n return reducer(obj, optimizeCb(iteratee, context, 4), memo, initial);\n };\n}\n","import createReduce from './_createReduce.js';\n\n// **Reduce** builds up a single result from a list of values, aka `inject`,\n// or `foldl`.\nexport default createReduce(1);\n","import createReduce from './_createReduce.js';\n\n// The right-associative version of reduce, also known as `foldr`.\nexport default createReduce(-1);\n","import cb from './_cb.js';\nimport each from './each.js';\n\n// Return all the elements that pass a truth test.\nexport default function filter(obj, predicate, context) {\n var results = [];\n predicate = cb(predicate, context);\n each(obj, function(value, index, list) {\n if (predicate(value, index, list)) results.push(value);\n });\n return results;\n}\n","import filter from './filter.js';\nimport negate from './negate.js';\nimport cb from './_cb.js';\n\n// Return all the elements for which a truth test fails.\nexport default function reject(obj, predicate, context) {\n return filter(obj, negate(cb(predicate)), context);\n}\n","import cb from './_cb.js';\nimport isArrayLike from './_isArrayLike.js';\nimport keys from './keys.js';\n\n// Determine whether all of the elements pass a truth test.\nexport default function every(obj, predicate, context) {\n predicate = cb(predicate, context);\n var _keys = !isArrayLike(obj) && keys(obj),\n length = (_keys || obj).length;\n for (var index = 0; index < length; index++) {\n var currentKey = _keys ? _keys[index] : index;\n if (!predicate(obj[currentKey], currentKey, obj)) return false;\n }\n return true;\n}\n","import cb from './_cb.js';\nimport isArrayLike from './_isArrayLike.js';\nimport keys from './keys.js';\n\n// Determine if at least one element in the object passes a truth test.\nexport default function some(obj, predicate, context) {\n predicate = cb(predicate, context);\n var _keys = !isArrayLike(obj) && keys(obj),\n length = (_keys || obj).length;\n for (var index = 0; index < length; index++) {\n var currentKey = _keys ? _keys[index] : index;\n if (predicate(obj[currentKey], currentKey, obj)) return true;\n }\n return false;\n}\n","import isArrayLike from './_isArrayLike.js';\nimport values from './values.js';\nimport indexOf from './indexOf.js';\n\n// Determine if the array or object contains a given item (using `===`).\nexport default function contains(obj, item, fromIndex, guard) {\n if (!isArrayLike(obj)) obj = values(obj);\n if (typeof fromIndex != 'number' || guard) fromIndex = 0;\n return indexOf(obj, item, fromIndex) >= 0;\n}\n","import restArguments from './restArguments.js';\nimport isFunction from './isFunction.js';\nimport map from './map.js';\nimport deepGet from './_deepGet.js';\nimport toPath from './_toPath.js';\n\n// Invoke a method (with arguments) on every item in a collection.\nexport default restArguments(function(obj, path, args) {\n var contextPath, func;\n if (isFunction(path)) {\n func = path;\n } else {\n path = toPath(path);\n contextPath = path.slice(0, -1);\n path = path[path.length - 1];\n }\n return map(obj, function(context) {\n var method = func;\n if (!method) {\n if (contextPath && contextPath.length) {\n context = deepGet(context, contextPath);\n }\n if (context == null) return void 0;\n method = context[path];\n }\n return method == null ? method : method.apply(context, args);\n });\n});\n","import map from './map.js';\nimport property from './property.js';\n\n// Convenience version of a common use case of `_.map`: fetching a property.\nexport default function pluck(obj, key) {\n return map(obj, property(key));\n}\n","import filter from './filter.js';\nimport matcher from './matcher.js';\n\n// Convenience version of a common use case of `_.filter`: selecting only\n// objects containing specific `key:value` pairs.\nexport default function where(obj, attrs) {\n return filter(obj, matcher(attrs));\n}\n","import isArrayLike from './_isArrayLike.js';\nimport values from './values.js';\nimport cb from './_cb.js';\nimport each from './each.js';\n\n// Return the maximum element (or element-based computation).\nexport default function max(obj, iteratee, context) {\n var result = -Infinity, lastComputed = -Infinity,\n value, computed;\n if (iteratee == null || (typeof iteratee == 'number' && typeof obj[0] != 'object' && obj != null)) {\n obj = isArrayLike(obj) ? obj : values(obj);\n for (var i = 0, length = obj.length; i < length; i++) {\n value = obj[i];\n if (value != null && value > result) {\n result = value;\n }\n }\n } else {\n iteratee = cb(iteratee, context);\n each(obj, function(v, index, list) {\n computed = iteratee(v, index, list);\n if (computed > lastComputed || (computed === -Infinity && result === -Infinity)) {\n result = v;\n lastComputed = computed;\n }\n });\n }\n return result;\n}\n","import isArrayLike from './_isArrayLike.js';\nimport values from './values.js';\nimport cb from './_cb.js';\nimport each from './each.js';\n\n// Return the minimum element (or element-based computation).\nexport default function min(obj, iteratee, context) {\n var result = Infinity, lastComputed = Infinity,\n value, computed;\n if (iteratee == null || (typeof iteratee == 'number' && typeof obj[0] != 'object' && obj != null)) {\n obj = isArrayLike(obj) ? obj : values(obj);\n for (var i = 0, length = obj.length; i < length; i++) {\n value = obj[i];\n if (value != null && value < result) {\n result = value;\n }\n }\n } else {\n iteratee = cb(iteratee, context);\n each(obj, function(v, index, list) {\n computed = iteratee(v, index, list);\n if (computed < lastComputed || (computed === Infinity && result === Infinity)) {\n result = v;\n lastComputed = computed;\n }\n });\n }\n return result;\n}\n","import isArray from './isArray.js';\nimport { slice } from './_setup.js';\nimport isString from './isString.js';\nimport isArrayLike from './_isArrayLike.js';\nimport map from './map.js';\nimport identity from './identity.js';\nimport values from './values.js';\n\n// Safely create a real, live array from anything iterable.\nvar reStrSymbol = /[^\\ud800-\\udfff]|[\\ud800-\\udbff][\\udc00-\\udfff]|[\\ud800-\\udfff]/g;\nexport default function toArray(obj) {\n if (!obj) return [];\n if (isArray(obj)) return slice.call(obj);\n if (isString(obj)) {\n // Keep surrogate pair characters together.\n return obj.match(reStrSymbol);\n }\n if (isArrayLike(obj)) return map(obj, identity);\n return values(obj);\n}\n","import isArrayLike from './_isArrayLike.js';\nimport values from './values.js';\nimport getLength from './_getLength.js';\nimport random from './random.js';\nimport toArray from './toArray.js';\n\n// Sample **n** random values from a collection using the modern version of the\n// [Fisher-Yates shuffle](https://en.wikipedia.org/wiki/Fisher–Yates_shuffle).\n// If **n** is not specified, returns a single random element.\n// The internal `guard` argument allows it to work with `_.map`.\nexport default function sample(obj, n, guard) {\n if (n == null || guard) {\n if (!isArrayLike(obj)) obj = values(obj);\n return obj[random(obj.length - 1)];\n }\n var sample = toArray(obj);\n var length = getLength(sample);\n n = Math.max(Math.min(n, length), 0);\n var last = length - 1;\n for (var index = 0; index < n; index++) {\n var rand = random(index, last);\n var temp = sample[index];\n sample[index] = sample[rand];\n sample[rand] = temp;\n }\n return sample.slice(0, n);\n}\n","import sample from './sample.js';\n\n// Shuffle a collection.\nexport default function shuffle(obj) {\n return sample(obj, Infinity);\n}\n","import cb from './_cb.js';\nimport pluck from './pluck.js';\nimport map from './map.js';\n\n// Sort the object's values by a criterion produced by an iteratee.\nexport default function sortBy(obj, iteratee, context) {\n var index = 0;\n iteratee = cb(iteratee, context);\n return pluck(map(obj, function(value, key, list) {\n return {\n value: value,\n index: index++,\n criteria: iteratee(value, key, list)\n };\n }).sort(function(left, right) {\n var a = left.criteria;\n var b = right.criteria;\n if (a !== b) {\n if (a > b || a === void 0) return 1;\n if (a < b || b === void 0) return -1;\n }\n return left.index - right.index;\n }), 'value');\n}\n","import cb from './_cb.js';\nimport each from './each.js';\n\n// An internal function used for aggregate \"group by\" operations.\nexport default function group(behavior, partition) {\n return function(obj, iteratee, context) {\n var result = partition ? [[], []] : {};\n iteratee = cb(iteratee, context);\n each(obj, function(value, index) {\n var key = iteratee(value, index, obj);\n behavior(result, value, key);\n });\n return result;\n };\n}\n","import group from './_group.js';\nimport has from './_has.js';\n\n// Groups the object's values by a criterion. Pass either a string attribute\n// to group by, or a function that returns the criterion.\nexport default group(function(result, value, key) {\n if (has(result, key)) result[key].push(value); else result[key] = [value];\n});\n","import group from './_group.js';\n\n// Indexes the object's values by a criterion, similar to `_.groupBy`, but for\n// when you know that your index values will be unique.\nexport default group(function(result, value, key) {\n result[key] = value;\n});\n","import group from './_group.js';\nimport has from './_has.js';\n\n// Counts instances of an object that group by a certain criterion. Pass\n// either a string attribute to count by, or a function that returns the\n// criterion.\nexport default group(function(result, value, key) {\n if (has(result, key)) result[key]++; else result[key] = 1;\n});\n","import group from './_group.js';\n\n// Split a collection into two arrays: one whose elements all pass the given\n// truth test, and one whose elements all do not pass the truth test.\nexport default group(function(result, value, pass) {\n result[pass ? 0 : 1].push(value);\n}, true);\n","import isArrayLike from './_isArrayLike.js';\nimport keys from './keys.js';\n\n// Return the number of elements in a collection.\nexport default function size(obj) {\n if (obj == null) return 0;\n return isArrayLike(obj) ? obj.length : keys(obj).length;\n}\n","// Internal `_.pick` helper function to determine whether `key` is an enumerable\n// property name of `obj`.\nexport default function keyInObj(value, key, obj) {\n return key in obj;\n}\n","import restArguments from './restArguments.js';\nimport isFunction from './isFunction.js';\nimport optimizeCb from './_optimizeCb.js';\nimport allKeys from './allKeys.js';\nimport keyInObj from './_keyInObj.js';\nimport flatten from './_flatten.js';\n\n// Return a copy of the object only containing the allowed properties.\nexport default restArguments(function(obj, keys) {\n var result = {}, iteratee = keys[0];\n if (obj == null) return result;\n if (isFunction(iteratee)) {\n if (keys.length > 1) iteratee = optimizeCb(iteratee, keys[1]);\n keys = allKeys(obj);\n } else {\n iteratee = keyInObj;\n keys = flatten(keys, false, false);\n obj = Object(obj);\n }\n for (var i = 0, length = keys.length; i < length; i++) {\n var key = keys[i];\n var value = obj[key];\n if (iteratee(value, key, obj)) result[key] = value;\n }\n return result;\n});\n","import restArguments from './restArguments.js';\nimport isFunction from './isFunction.js';\nimport negate from './negate.js';\nimport map from './map.js';\nimport flatten from './_flatten.js';\nimport contains from './contains.js';\nimport pick from './pick.js';\n\n// Return a copy of the object without the disallowed properties.\nexport default restArguments(function(obj, keys) {\n var iteratee = keys[0], context;\n if (isFunction(iteratee)) {\n iteratee = negate(iteratee);\n if (keys.length > 1) context = keys[1];\n } else {\n keys = map(flatten(keys, false, false), String);\n iteratee = function(value, key) {\n return !contains(keys, key);\n };\n }\n return pick(obj, iteratee, context);\n});\n","import { slice } from './_setup.js';\n\n// Returns everything but the last entry of the array. Especially useful on\n// the arguments object. Passing **n** will return all the values in\n// the array, excluding the last N.\nexport default function initial(array, n, guard) {\n return slice.call(array, 0, Math.max(0, array.length - (n == null || guard ? 1 : n)));\n}\n","import initial from './initial.js';\n\n// Get the first element of an array. Passing **n** will return the first N\n// values in the array. The **guard** check allows it to work with `_.map`.\nexport default function first(array, n, guard) {\n if (array == null || array.length < 1) return n == null || guard ? void 0 : [];\n if (n == null || guard) return array[0];\n return initial(array, array.length - n);\n}\n","import { slice } from './_setup.js';\n\n// Returns everything but the first entry of the `array`. Especially useful on\n// the `arguments` object. Passing an **n** will return the rest N values in the\n// `array`.\nexport default function rest(array, n, guard) {\n return slice.call(array, n == null || guard ? 1 : n);\n}\n","import rest from './rest.js';\n\n// Get the last element of an array. Passing **n** will return the last N\n// values in the array.\nexport default function last(array, n, guard) {\n if (array == null || array.length < 1) return n == null || guard ? void 0 : [];\n if (n == null || guard) return array[array.length - 1];\n return rest(array, Math.max(0, array.length - n));\n}\n","import filter from './filter.js';\n\n// Trim out all falsy values from an array.\nexport default function compact(array) {\n return filter(array, Boolean);\n}\n","import _flatten from './_flatten.js';\n\n// Flatten out an array, either recursively (by default), or up to `depth`.\n// Passing `true` or `false` as `depth` means `1` or `Infinity`, respectively.\nexport default function flatten(array, depth) {\n return _flatten(array, depth, false);\n}\n","import restArguments from './restArguments.js';\nimport flatten from './_flatten.js';\nimport filter from './filter.js';\nimport contains from './contains.js';\n\n// Take the difference between one array and a number of other arrays.\n// Only the elements present in just the first array will remain.\nexport default restArguments(function(array, rest) {\n rest = flatten(rest, true, true);\n return filter(array, function(value){\n return !contains(rest, value);\n });\n});\n","import restArguments from './restArguments.js';\nimport difference from './difference.js';\n\n// Return a version of the array that does not contain the specified value(s).\nexport default restArguments(function(array, otherArrays) {\n return difference(array, otherArrays);\n});\n","import isBoolean from './isBoolean.js';\nimport cb from './_cb.js';\nimport getLength from './_getLength.js';\nimport contains from './contains.js';\n\n// Produce a duplicate-free version of the array. If the array has already\n// been sorted, you have the option of using a faster algorithm.\n// The faster algorithm will not work with an iteratee if the iteratee\n// is not a one-to-one function, so providing an iteratee will disable\n// the faster algorithm.\nexport default function uniq(array, isSorted, iteratee, context) {\n if (!isBoolean(isSorted)) {\n context = iteratee;\n iteratee = isSorted;\n isSorted = false;\n }\n if (iteratee != null) iteratee = cb(iteratee, context);\n var result = [];\n var seen = [];\n for (var i = 0, length = getLength(array); i < length; i++) {\n var value = array[i],\n computed = iteratee ? iteratee(value, i, array) : value;\n if (isSorted && !iteratee) {\n if (!i || seen !== computed) result.push(value);\n seen = computed;\n } else if (iteratee) {\n if (!contains(seen, computed)) {\n seen.push(computed);\n result.push(value);\n }\n } else if (!contains(result, value)) {\n result.push(value);\n }\n }\n return result;\n}\n","import restArguments from './restArguments.js';\nimport uniq from './uniq.js';\nimport flatten from './_flatten.js';\n\n// Produce an array that contains the union: each distinct element from all of\n// the passed-in arrays.\nexport default restArguments(function(arrays) {\n return uniq(flatten(arrays, true, true));\n});\n","import getLength from './_getLength.js';\nimport contains from './contains.js';\n\n// Produce an array that contains every item shared between all the\n// passed-in arrays.\nexport default function intersection(array) {\n var result = [];\n var argsLength = arguments.length;\n for (var i = 0, length = getLength(array); i < length; i++) {\n var item = array[i];\n if (contains(result, item)) continue;\n var j;\n for (j = 1; j < argsLength; j++) {\n if (!contains(arguments[j], item)) break;\n }\n if (j === argsLength) result.push(item);\n }\n return result;\n}\n","import max from './max.js';\nimport getLength from './_getLength.js';\nimport pluck from './pluck.js';\n\n// Complement of zip. Unzip accepts an array of arrays and groups\n// each array's elements on shared indices.\nexport default function unzip(array) {\n var length = (array && max(array, getLength).length) || 0;\n var result = Array(length);\n\n for (var index = 0; index < length; index++) {\n result[index] = pluck(array, index);\n }\n return result;\n}\n","import restArguments from './restArguments.js';\nimport unzip from './unzip.js';\n\n// Zip together multiple lists into a single array -- elements that share\n// an index go together.\nexport default restArguments(unzip);\n","import getLength from './_getLength.js';\n\n// Converts lists into objects. Pass either a single array of `[key, value]`\n// pairs, or two parallel arrays of the same length -- one of keys, and one of\n// the corresponding values. Passing by pairs is the reverse of `_.pairs`.\nexport default function object(list, values) {\n var result = {};\n for (var i = 0, length = getLength(list); i < length; i++) {\n if (values) {\n result[list[i]] = values[i];\n } else {\n result[list[i][0]] = list[i][1];\n }\n }\n return result;\n}\n","// Generate an integer Array containing an arithmetic progression. A port of\n// the native Python `range()` function. See\n// [the Python documentation](https://docs.python.org/library/functions.html#range).\nexport default function range(start, stop, step) {\n if (stop == null) {\n stop = start || 0;\n start = 0;\n }\n if (!step) {\n step = stop < start ? -1 : 1;\n }\n\n var length = Math.max(Math.ceil((stop - start) / step), 0);\n var range = Array(length);\n\n for (var idx = 0; idx < length; idx++, start += step) {\n range[idx] = start;\n }\n\n return range;\n}\n","import { slice } from './_setup.js';\n\n// Chunk a single array into multiple arrays, each containing `count` or fewer\n// items.\nexport default function chunk(array, count) {\n if (count == null || count < 1) return [];\n var result = [];\n var i = 0, length = array.length;\n while (i < length) {\n result.push(slice.call(array, i, i += count));\n }\n return result;\n}\n","import _ from './underscore.js';\n\n// Helper function to continue chaining intermediate results.\nexport default function chainResult(instance, obj) {\n return instance._chain ? _(obj).chain() : obj;\n}\n","import _ from './underscore.js';\nimport each from './each.js';\nimport functions from './functions.js';\nimport { push } from './_setup.js';\nimport chainResult from './_chainResult.js';\n\n// Add your own custom functions to the Underscore object.\nexport default function mixin(obj) {\n each(functions(obj), function(name) {\n var func = _[name] = obj[name];\n _.prototype[name] = function() {\n var args = [this._wrapped];\n push.apply(args, arguments);\n return chainResult(this, func.apply(_, args));\n };\n });\n return _;\n}\n","import _ from './underscore.js';\nimport each from './each.js';\nimport { ArrayProto } from './_setup.js';\nimport chainResult from './_chainResult.js';\n\n// Add all mutator `Array` functions to the wrapper.\neach(['pop', 'push', 'reverse', 'shift', 'sort', 'splice', 'unshift'], function(name) {\n var method = ArrayProto[name];\n _.prototype[name] = function() {\n var obj = this._wrapped;\n if (obj != null) {\n method.apply(obj, arguments);\n if ((name === 'shift' || name === 'splice') && obj.length === 0) {\n delete obj[0];\n }\n }\n return chainResult(this, obj);\n };\n});\n\n// Add all accessor `Array` functions to the wrapper.\neach(['concat', 'join', 'slice'], function(name) {\n var method = ArrayProto[name];\n _.prototype[name] = function() {\n var obj = this._wrapped;\n if (obj != null) obj = method.apply(obj, arguments);\n return chainResult(this, obj);\n };\n});\n\nexport default _;\n","// Default Export\n// ==============\n// In this module, we mix our bundled exports into the `_` object and export\n// the result. This is analogous to setting `module.exports = _` in CommonJS.\n// Hence, this module is also the entry point of our UMD bundle and the package\n// entry point for CommonJS and AMD users. In other words, this is (the source\n// of) the module you are interfacing with when you do any of the following:\n//\n// ```js\n// // CommonJS\n// var _ = require('underscore');\n//\n// // AMD\n// define(['underscore'], function(_) {...});\n//\n// // UMD in the browser\n// // _ is available as a global variable\n// ```\nimport * as allExports from './index.js';\nimport { mixin } from './index.js';\n\n// Add all of the Underscore functions to the wrapper object.\nvar _ = mixin(allExports);\n// Legacy Node.js API.\n_._ = _;\n// Export the Underscore API.\nexport default _;\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\tid: moduleId,\n\t\tloaded: false,\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Flag the module as loaded\n\tmodule.loaded = true;\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n// expose the modules object (__webpack_modules__)\n__webpack_require__.m = __webpack_modules__;\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.f = {};\n// This file contains only the entry chunk.\n// The chunk loading function for additional chunks\n__webpack_require__.e = (chunkId) => {\n\treturn Promise.all(Object.keys(__webpack_require__.f).reduce((promises, key) => {\n\t\t__webpack_require__.f[key](chunkId, promises);\n\t\treturn promises;\n\t}, []));\n};","// This function allow to reference async chunks\n__webpack_require__.u = (chunkId) => {\n\t// return url for filenames based on template\n\treturn \"\" + chunkId + \"-\" + chunkId + \".js?v=\" + {\"1110\":\"a5d6e6f59aa058840a1e\",\"1642\":\"00f437770241bf2f3a71\",\"5455\":\"8915a218db5b7bc90f34\"}[chunkId] + \"\";\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","__webpack_require__.nmd = (module) => {\n\tmodule.paths = [];\n\tif (!module.children) module.children = [];\n\treturn module;\n};","__webpack_require__.j = 1418;","var scriptUrl;\nif (__webpack_require__.g.importScripts) scriptUrl = __webpack_require__.g.location + \"\";\nvar document = __webpack_require__.g.document;\nif (!scriptUrl && document) {\n\tif (document.currentScript)\n\t\tscriptUrl = document.currentScript.src;\n\tif (!scriptUrl) {\n\t\tvar scripts = document.getElementsByTagName(\"script\");\n\t\tif(scripts.length) {\n\t\t\tvar i = scripts.length - 1;\n\t\t\twhile (i > -1 && (!scriptUrl || !/^http(s?):/.test(scriptUrl))) scriptUrl = scripts[i--].src;\n\t\t}\n\t}\n}\n// When supporting browsers where an automatic publicPath is not supported you must specify an output.publicPath manually via configuration\n// or pass an empty string (\"\") and set the __webpack_public_path__ variable from your code to use your own logic.\nif (!scriptUrl) throw new Error(\"Automatic publicPath is not supported in this browser\");\nscriptUrl = scriptUrl.replace(/#.*$/, \"\").replace(/\\?.*$/, \"\").replace(/\\/[^\\/]+$/, \"/\");\n__webpack_require__.p = scriptUrl;","__webpack_require__.b = document.baseURI || self.location.href;\n\n// object to store loaded and loading chunks\n// undefined = chunk not loaded, null = chunk preloaded/prefetched\n// [resolve, reject, Promise] = chunk loading, 0 = chunk loaded\nvar installedChunks = {\n\t1418: 0\n};\n\n__webpack_require__.f.j = (chunkId, promises) => {\n\t\t// JSONP chunk loading for javascript\n\t\tvar installedChunkData = __webpack_require__.o(installedChunks, chunkId) ? installedChunks[chunkId] : undefined;\n\t\tif(installedChunkData !== 0) { // 0 means \"already installed\".\n\n\t\t\t// a Promise means \"currently loading\".\n\t\t\tif(installedChunkData) {\n\t\t\t\tpromises.push(installedChunkData[2]);\n\t\t\t} else {\n\t\t\t\tif(true) { // all chunks have JS\n\t\t\t\t\t// setup Promise in chunk cache\n\t\t\t\t\tvar promise = new Promise((resolve, reject) => (installedChunkData = installedChunks[chunkId] = [resolve, reject]));\n\t\t\t\t\tpromises.push(installedChunkData[2] = promise);\n\n\t\t\t\t\t// start chunk loading\n\t\t\t\t\tvar url = __webpack_require__.p + __webpack_require__.u(chunkId);\n\t\t\t\t\t// create error before stack unwound to get useful stacktrace later\n\t\t\t\t\tvar error = new Error();\n\t\t\t\t\tvar loadingEnded = (event) => {\n\t\t\t\t\t\tif(__webpack_require__.o(installedChunks, chunkId)) {\n\t\t\t\t\t\t\tinstalledChunkData = installedChunks[chunkId];\n\t\t\t\t\t\t\tif(installedChunkData !== 0) installedChunks[chunkId] = undefined;\n\t\t\t\t\t\t\tif(installedChunkData) {\n\t\t\t\t\t\t\t\tvar errorType = event && (event.type === 'load' ? 'missing' : event.type);\n\t\t\t\t\t\t\t\tvar realSrc = event && event.target && event.target.src;\n\t\t\t\t\t\t\t\terror.message = 'Loading chunk ' + chunkId + ' failed.\\n(' + errorType + ': ' + realSrc + ')';\n\t\t\t\t\t\t\t\terror.name = 'ChunkLoadError';\n\t\t\t\t\t\t\t\terror.type = errorType;\n\t\t\t\t\t\t\t\terror.request = realSrc;\n\t\t\t\t\t\t\t\tinstalledChunkData[1](error);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t\t__webpack_require__.l(url, loadingEnded, \"chunk-\" + chunkId, chunkId);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n};\n\n// no prefetching\n\n// no preloaded\n\n// no HMR\n\n// no HMR manifest\n\n__webpack_require__.O.j = (chunkId) => (installedChunks[chunkId] === 0);\n\n// install a JSONP callback for chunk loading\nvar webpackJsonpCallback = (parentChunkLoadingFunction, data) => {\n\tvar chunkIds = data[0];\n\tvar moreModules = data[1];\n\tvar runtime = data[2];\n\t// add \"moreModules\" to the modules object,\n\t// then flag all \"chunkIds\" as loaded and fire callback\n\tvar moduleId, chunkId, i = 0;\n\tif(chunkIds.some((id) => (installedChunks[id] !== 0))) {\n\t\tfor(moduleId in moreModules) {\n\t\t\tif(__webpack_require__.o(moreModules, moduleId)) {\n\t\t\t\t__webpack_require__.m[moduleId] = moreModules[moduleId];\n\t\t\t}\n\t\t}\n\t\tif(runtime) var result = runtime(__webpack_require__);\n\t}\n\tif(parentChunkLoadingFunction) parentChunkLoadingFunction(data);\n\tfor(;i < chunkIds.length; i++) {\n\t\tchunkId = chunkIds[i];\n\t\tif(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) {\n\t\t\tinstalledChunks[chunkId][0]();\n\t\t}\n\t\tinstalledChunks[chunkId] = 0;\n\t}\n\treturn __webpack_require__.O(result);\n}\n\nvar chunkLoadingGlobal = self[\"webpackChunknextcloud\"] = self[\"webpackChunknextcloud\"] || [];\nchunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0));\nchunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal));","__webpack_require__.nc = undefined;","// startup\n// Load entry module and return exports\n// This entry module depends on other loaded chunks and execution need to be delayed\nvar __webpack_exports__ = __webpack_require__.O(undefined, [4208], () => (__webpack_require__(92933)))\n__webpack_exports__ = __webpack_require__.O(__webpack_exports__);\n"],"names":["deferred","inProgress","dataWebpackPrefix","updatableNotification","getDefaultNotificationFunction","setDefault","callback","this","hide","$row","_","undefined","each","$","toastify","hideToast","console","error","call","showHtml","html","options","isHTML","timeout","TOAST_PERMANENT_TIMEOUT","toast","showMessage","toastElement","show","text","toString","split","join","escapeHTML","showUpdate","showTemporary","TOAST_DEFAULT_TIMEOUT","isHidden","find","length","ajaxConnectionLostHandler","Notification","t","trailing","dynamicSlideToggleEnabled","enableDynamicSlideToggle","Apps","$el","removeClass","trigger","addClass","method","endpoint","OC","PasswordConfirmation","requiresPasswordConfirmation","type","toUpperCase","url","generateOcsUrl","data","success","requirePasswordConfirmation","bind","appConfig","window","oc_appconfig","AppConfig","getValue","app","key","defaultValue","setValue","value","getApps","getKeys","deleteKey","_oc_appswebroots","methodMap","create","update","patch","delete","read","parsePropFindResult","result","davProperties","subResult","props","href","propStat","status","properties","propKey","id","parseIdFromLocation","queryPos","indexOf","substr","parts","pop","isSuccessStatus","callPropPatch","client","model","headers","propPatch","attrs","changedProp","warn","convertModelAttributesToDavProperties","changed","then","toJSON","Backbone","VendorBackbone","Object","assign","davCall","dav","Client","baseUrl","xmlNamespaces","resolveUrl","requestToken","propFind","depth","response","propsMapping","results","body","shift","callPropFind","request","callMkCol","responseJson","locationHeader","xhr","getResponseHeader","callMethod","davSync","params","isCollection","Collection","hasInnerCollection","usePUT","collection","Error","urlError","JSON","stringify","processData","prototype","textStatus","errorThrown","context","_oc_config","rawUid","document","getElementsByTagName","getAttribute","displayName","currentUser","Dialogs","YES_NO_BUTTONS","OK_BUTTONS","FILEPICKER_TYPE_CHOOSE","FILEPICKER_TYPE_MOVE","FILEPICKER_TYPE_COPY","FILEPICKER_TYPE_COPY_MOVE","FILEPICKER_TYPE_CUSTOM","alert","title","modal","message","OK_BUTTON","info","confirm","confirmDestructive","buttons","arguments","DialogBuilder","setName","setText","setButtons","label","clicked","_getLegacyButtons","build","confirmHtml","setHTML","prompt","name","password","Promise","resolve","spawnDialog","defineAsyncComponent","inputName","isPassword","filepicker","multiselect","mimetype","FilePickerType","Choose","path","legacyCallback","fn","getPath","node","root","startsWith","slice","nodes","map","builder","getFilePickerBuilder","forEach","button","addButton","defaultButton","setButtonFactory","_nodes$","_nodes$2","attributes","basename","target","push","multiSelect","file","CopyMove","Copy","icon","IconCopy","Move","IconMove","setMimeTypeFilter","filter","setFilter","_node$mtime","_node$attributes","_node$attributes2","_node$attributes3","_node$attributes4","_node$attributes5","fileid","mime","mtime","getTime","permissions","etag","hasPreview","mountType","quotaAvailableBytes","sharePermissions","nodeToLegacyFile","allowDirectories","allowDirectoryChooser","includes","setMultiSelect","startAt","pick","content","dialogType","allowHtml","setSeverity","dialog","_clicked","_buttons$cancel","_buttons$confirm","_buttons$confirm2","buttonList","cancel","_fileexistsshown","fileexists","original","replacement","controller","self","dialogDeferred","resampleHermite","canvas","W","H","W2","H2","Math","round","img","getContext","getImageData","img2","data2","ratio_w","ratio_h","ratio_w_half","ceil","ratio_h_half","j","i","x2","weight","weights","weights_alpha","gx_r","gx_g","gx_b","gx_a","center_y","yy","floor","dy","abs","center_x","w0","xx","dx","w","sqrt","clearRect","max","width","height","putImageData","addConflict","$conflicts","$conflict","clone","$originalDiv","$replacementDiv","Util","humanFileSize","size","formatDate","lastModified","directory","urlSpec","x","y","c","forceIcon","previewpath","Files","generatePreviewUrl","replace","css","FileReader","reader","onload","e","blob","Blob","URL","webkitURL","originalUrl","createObjectURL","image","Image","src","createElement","min","drawImage","toDataURL","readAsArrayBuffer","reject","getCroppedPreview","MimeType","getIconUrl","checkboxId","attr","append","prop","dialogName","dialogId","count","n","parent","children","_getFileExistsTemplate","$tmpl","$dlg","octemplate","dialog_name","allnewfiles","allexistingfiles","why","what","buttonlist","classes","click","onCancel","ocdialog","onContinue","closeOnEscape","closeButton","close","remove","$primaryButton","closest","updatePrimaryButton","checkedCount","on","$checkbox","fail","promise","defer","$fileexistsTemplate","filePath","tmpl","manageFromDocument","manageToken","global","emit","token","getToken","setToken","newToken","OCEventSource","joinChar","dataStr","typelessListeners","closed","listeners","encodeURIComponent","useFallBack","EventSource","iframeId","iframeCount","fallBackSources","iframe","source","onmessage","parse","listen","fallBackCallBack","done","lastLength","addEventListener","currentMenu","currentMenuToggle","hideMenus","complete","lastMenu","slideUp","apply","isAdmin","_oc_isadmin","load","loadTranslations","register","_unregister","unregister","translate","translatePlural","Handlebars","startSaving","selector","startAction","stop","finishedSaving","finishedAction","finishedSuccess","finishedError","delay","fadeOut","isPasswordConfirmationRequired","rejectCallback","confirmPassword","_plugins","targetName","plugin","plugins","getPlugins","attach","targetObject","detach","theme","_theme","_handlers","_pushState","strParams","buildQueryString","history","pushState","location","pathname","navigator","userAgent","toLowerCase","parseInt","patterns","querySelectorAll","pattern","ii","style","fill","stroke","removeAttribute","setAttribute","replaceState","hash","_cancelPop","addOnPopStateHandler","handler","_parseHashQuery","pos","_decodeQuery","query","parseUrlQuery","parseQueryString","search","_onPopState","state","chunkify","tz","charAt","m","History","computerFileSize","string","s","trim","bytes","matches","match","parseFloat","isFinite","b","k","kb","mb","gb","g","tb","pb","p","timestamp","format","TESTING","debug","moment","relativeModifiedDate","diff","fromNow","getScrollBarWidth","_scrollBarWidth","inner","outer","position","top","left","visibility","overflow","appendChild","w1","offsetWidth","w2","clientWidth","removeChild","stripTime","date","Date","getFullYear","getMonth","getDate","naturalSortCompare","a","aa","bb","aNum","Number","bNum","localeCompare","getLanguage","waitFor","interval","internalCallback","setTimeout","isCookieSetToValue","cookies","cookie","_oc_debug","webroot","_oc_webroot","lastIndexOf","coreApps","menuSpeed","PERMISSION_ALL","PERMISSION_CREATE","PERMISSION_DELETE","PERMISSION_NONE","PERMISSION_READ","PERMISSION_SHARE","PERMISSION_UPDATE","TAG_FAVORITE","fileIsBlacklisted","Config","blacklist_files_regex","appswebroots","config","dialogs","getCurrentUser","uid","isUserAdmin","L10N","_ajaxConnectionLostHandler","_processAjaxError","statusText","_reloadCalled","_userIsNavigatingAway","timer","seconds","setInterval","clearInterval","reload","registerXHRForErrorProcessing","loadCallback","readyState","errorCallback","getCapabilities","realGetCapabilities","registerMenu","$toggle","$menuEl","toggle","headerMenu","isClickableElement","event","preventDefault","is","slideToggle","showMenu","unregisterMenu","off","encodePath","dirname","isSamePath","joinPaths","getHost","host","getHostName","hostname","getPort","port","getProtocol","protocol","getCanonicalLocale","getLocale","queryString","components","part","decodeURIComponent","msg","Plugins","generateFilePath","generateUrl","get","namespaces","tail","set","getRootPath","getRootUrl","imagePath","redirect","targetURL","getRequestToken","linkTo","linkToOCS","service","version","ocsVersion","linkToRemote","generateRemoteUrl","linkToRemoteBase","realGetRootUrl","subscribe","singleMatcher","RegExp","multiMatcher","decodeComponents","right","Array","concat","decode","input","tokens","splitOnFirst","separator","TypeError","separatorIndex","includeKeys","object","predicate","isArray","descriptor","getOwnPropertyDescriptor","enumerable","defineProperty","Reflect","ownKeys","isNullOrUndefined","strictUriEncode","replaceAll","charCodeAt","encodeFragmentIdentifier","Symbol","validateArrayFormatSeparator","encode","strict","encodedURI","replaceMap","exec","entries","keys","customDecodeURIComponent","keysSorter","sort","removeHash","hashStart","parseValue","parseNumbers","isNaN","parseBooleans","extract","queryStart","arrayFormat","arrayFormatSeparator","formatter","accumulator","isEncodedArray","newValue","item","test","arrayValue","flat","parserForArrayFormat","returnValue","parameter","parameter_","key2","value2","reduce","Boolean","shouldFilter","skipNull","skipEmptyString","index","keyValueSeparator","encoderForArrayFormat","objectCopy","parseUrl","url_","parseFragmentIdentifier","fragmentIdentifier","stringifyUrl","getHash","urlObjectForFragmentEncode","exclude","computed","userNameInputLengthIs255","user","userInputHelperText","ArrowRight","NcButton","String","default","valueLoading","loading","required","invertedColors","styleTagTransform","setAttributes","insert","domAPI","insertStyleElement","locals","_vm","_c","_self","$event","$emit","scopedSlots","_u","staticClass","proxy","_v","_s","LoginButton","NcPasswordField","NcTextField","NcNoteCard","mixins","AuthMixin","username","redirectUrl","errors","messages","throttleDelay","autoCompleteAllowed","directLogin","emailStates","setup","_Intl$DateTimeFormat","headlineText","productName","sanitize","escape","loginTimeout","loadState","timezone","Intl","DateTimeFormat","resolvedOptions","timeZone","timezoneOffset","getTimezoneOffset","resetFormTimeout","debounce","handleResetForm","isError","invalidPassword","userDisabled","errorLabel","apacheAuthFailed","csrfCheckFailed","internalException","loadingIcon","loginActionUrl","emailEnabled","every","loginText","watch","mounted","$refs","inputField","focus","methods","updateUsername","submit","ref","_e","_l","class","staticStyle","shake","domProps","bufferToBase64URLString","buffer","Uint8Array","str","charCode","fromCharCode","btoa","base64URLStringToBuffer","base64URLString","base64","padLength","padded","padEnd","binary","atob","ArrayBuffer","browserSupportsWebAuthn","PublicKeyCredential","toPublicKeyCredentialDescriptor","transports","WebAuthnError","constructor","code","cause","super","WebAuthnAbortService","createNewAbortSignal","abortError","abort","newController","AbortController","signal","cancelCeremony","attachments","toAuthenticatorAttachment","attachment","getLoggerBuilder","setApp","setUid","NoValidCredentials","emits","fillColor","_b","$attrs","InformationIcon","LockOpenIcon","isHttps","isLocalhost","supportsWebauthn","validCredentials","authenticate","loginForm","checkValidity","async","loginName","Axios","post","allowCredentials","logger","optionsJSON","useBrowserAutofill","publicKey","challenge","globalPublicKeyCredential","isConditionalMediationAvailable","browserSupportsWebAuthnAutofill","mediation","credential","credentials","err","AbortSignal","effectiveDomain","rpId","identifyAuthenticationError","rawId","userHandle","authenticatorData","clientDataJSON","signature","clientExtensionResults","getClientExtensionResults","authenticatorAttachment","startWebauthnAuthentication","startAuthentication","completeAuthentication","changeUsername","authData","finishAuthentication","_ref","defaultRedirectUrl","catch","resetPasswordLink","axios","resp","resetPasswordTarget","encrypted","proceed","encryption","directives","rawName","expression","composing","_i","$$a","$$el","$$c","checked","$$i","warning","clear","localStorage","sessionStorage","LoginForm","PasswordLessLoginForm","ResetPassword","UpdatePassword","passwordlessLogin","resetPassword","canResetPassword","resetPasswordUser","direct","hasPasswordless","countAlternativeLogins","alternativeLogins","hideLoginForm","passwordResetFinished","alternativeLogin","L10n","Vue","mixin","Nextcloud","extend","LoginView","$mount","exports","previousBackbone","VERSION","noConflict","emulateHTTP","emulateJSON","_listening","Events","eventSplitter","eventsApi","iteratee","events","opts","names","_events","onApi","ctx","listening","_listeners","interop","listenTo","obj","_listenId","uniqueId","listeningTo","_listeningTo","Listening","tryCatchOn","handlers","offApi","stopListening","ids","isEmpty","remaining","_callback","cleanup","once","onceMap","listenToOnce","offer","args","triggerApi","objEvents","allEvents","all","triggerEvents","ev","l","a1","a2","a3","listener","unbind","Model","preinitialize","cid","cidPrefix","defaults","initialize","validationError","idAttribute","sync","has","val","_validate","unset","silent","changes","changing","_changing","_previousAttributes","current","prev","isEqual","prevId","_pending","hasChanged","changedAttributes","old","previous","previousAttributes","fetch","serverAttrs","wrapError","save","wait","validate","isNew","destroy","base","isValid","models","comparator","_reset","reset","setOptions","add","merge","addOptions","splice","array","at","singular","removed","_removeModels","added","merged","_isModel","toAdd","toMerge","toRemove","modelMap","sortable","sortAttr","isString","existing","_prepareModel","_addReference","orderChanged","some","_removeReference","previousModels","unshift","_byId","modelId","where","first","findWhere","isFunction","sortBy","pluck","callbackOpts","_forwardPristineError","values","CollectionIterator","ITERATOR_VALUES","ITERATOR_KEYS","ITERATOR_KEYSVALUES","_onModelEvent","$$iterator","iterator","kind","_collection","_kind","_index","next","View","viewOptions","_ensureElement","delegateEventSplitter","tagName","render","_removeElement","setElement","element","undelegateEvents","_setElement","delegateEvents","el","delegate","eventName","undelegate","_createElement","className","_setAttributes","addUnderscoreMethods","Class","attribute","cb","defaultVal","addMethod","instance","isObject","modelMatcher","matcher","collect","foldl","inject","reduceRight","foldr","detect","select","any","include","contains","invoke","toArray","head","take","initial","rest","drop","last","without","difference","shuffle","chain","sample","partition","groupBy","countBy","indexBy","findIndex","findLastIndex","pairs","invert","omit","Base","mappings","functions","memo","dataType","contentType","_method","beforeSend","setRequestHeader","ajax","Router","routes","_bindRoutes","optionalParam","namedParam","splatParam","escapeRegExp","route","isRegExp","_routeToRegExp","router","fragment","_extractParameters","execute","navigate","optional","param","checkUrl","routeStripper","rootStripper","pathStripper","started","atRoot","getSearch","matchRoot","decodeFragment","decodeURI","getFragment","_usePushState","_wantsHashChange","start","_trailingSlash","trailingSlash","hashChange","_hasHashChange","documentMode","_useHashChange","_wantsPushState","_hasPushState","rootPath","display","tabIndex","iWindow","insertBefore","firstChild","contentWindow","open","attachEvent","_checkUrlInterval","loadUrl","removeEventListener","detachEvent","notfound","decodedFragment","_updateHash","protoProps","staticProps","child","__super__","_debug","factory","___CSS_LOADER_EXPORT___","module","_XML_CHAR_MAP","_escapeXml","ch","userName","namespace","hasOwnProperty","property","parseClarkNotation","_renderPropSet","propName","propValue","mkcol","responseType","xhrProvider","onProgress","upload","send","fulfill","onreadystatechange","resultBody","parseMultiStatus","ontimeout","XMLHttpRequest","_parsePropNode","propNode","childNodes","subNodes","nodeType","textContent","xmlBody","doc","DOMParser","parseFromString","resolver","foo","responseIterator","evaluate","XPathResult","ANY_TYPE","responseNode","iterateNext","stringValue","propStatIterator","propStatNode","propIterator","namespaceURI","localName","baseParts","subString","scheme","propertyName","webpackContext","req","webpackContextResolve","__webpack_require__","o","O","P","Qt","r","log","d","pow","toFixed","toLocaleString","N","NONE","CREATE","READ","UPDATE","DELETE","SHARE","ALL","Z","nc","oc","ocs","V","_nc_dav_properties","S","_nc_dav_namespaces","ur","dr","L","Folder","File","Y","q","crtime","owner","J","NEW","FAILED","LOADING","LOCKED","Q","_data","_attributes","_knownDavService","updateMtime","deleteProperty","Proxy","encodedSource","origin","extension","isDavRessource","move","rename","ve","D","ee","ar","setHeaders","requesttoken","u","lr","getDirectoryContents","details","includeSelf","filename","Te","ye","lastmod","getcontentlength","C","isExist","isEmptyObject","f","isName","getAllMatches","startIndex","lastIndex","nameRegexp","te","preserveOrder","attributeNamePrefix","attributesGroupName","textNodeName","ignoreAttributes","removeNSPrefix","allowBooleanAttributes","parseTagValue","parseAttributeValue","trimValues","cdataPropName","numberParseOptions","hex","leadingZeros","eNotation","tagValueProcessor","attributeValueProcessor","stopNodes","alwaysCreateTextNode","commentPropName","unpairedTags","processEntities","htmlEntities","ignoreDeclaration","ignorePiTags","transformTagName","transformAttributeName","updateTag","buildOptions","defaultOptions","ne","ie","Et","yt","bt","prettify","_t","Tt","se","xt","h","$t","oe","E","indentBy","suppressUnpairedNode","suppressEmptyNode","endsWith","suppressBooleanAttributes","entities","regex","Vt","St","oneListGroup","isAttribute","attrPrefixLen","Mt","processTextOrObjNode","Lt","indentate","Rt","tagEndChar","newLine","j2x","buildTextValNode","attrStr","buildObjectNode","repeat","arrayNodeName","buildAttrPairStr","replaceEntitiesValue","closeTag","Function","ArrayProto","ObjProto","SymbolProto","supportsArrayBuffer","supportsDataView","DataView","nativeIsArray","nativeKeys","nativeCreate","nativeIsView","isView","_isNaN","_isFinite","hasEnumBug","propertyIsEnumerable","nonEnumerableProps","MAX_ARRAY_INDEX","restArguments","func","isNull","isUndefined","isBoolean","isElement","tagTester","tag","nodelist","Int8Array","hasStringTagBug","isIE11","Map","isDataView","getInt8","isArrayBuffer","isArguments","isSymbol","isNumber","constant","createSizePropertyCheck","getSizeProperty","sizeProperty","shallowProperty","typedArrayPattern","collectNonEnumProps","emulatedSet","nonEnumIdx","proto","isMatch","_keys","_wrapped","toBufferView","bufferSource","byteOffset","valueOf","tagDataView","eq","aStack","bStack","deepEq","areArrays","aCtor","bCtor","allKeys","ie11fingerprint","weakMapMethods","forEachName","commonInit","mapTail","mapMethods","setMethods","createAssigner","keysFunc","baseCreate","Ctor","extendOwn","tap","interceptor","toPath","deepGet","identity","optimizeCb","argCount","baseIteratee","Infinity","mapObject","currentKey","noop","propertyOf","times","accum","random","now","createEscaper","escaper","testRegexp","replaceRegexp","templateSettings","interpolate","noMatch","escapes","escapeChar","bareIdentifier","template","settings","oldSettings","offset","argument","variable","fallback","idCounter","prefix","_chain","executeBound","sourceFunc","boundFunc","callingContext","partial","boundArgs","placeholder","bound","callArgs","flatten","output","idx","len","memoize","hasher","cache","address","throttle","later","leading","throttled","_now","clearTimeout","immediate","passed","debounced","_args","wrap","wrapper","negate","compose","after","before","findKey","createPredicateIndexFinder","dir","sortedIndex","low","high","mid","createIndexFinder","predicateFind","createReduce","reducer","list","fromIndex","guard","contextPath","lastComputed","v","reStrSymbol","rand","temp","criteria","group","behavior","pass","keyInObj","compact","otherArrays","uniq","isSorted","seen","arrays","intersection","argsLength","unzip","range","step","chunk","chainResult","__webpack_module_cache__","moduleId","cachedModule","loaded","__webpack_modules__","chunkIds","priority","notFulfilled","fulfilled","getter","__esModule","definition","chunkId","promises","globalThis","script","needAttach","scripts","charset","onScriptComplete","onerror","doneFns","parentNode","toStringTag","nmd","paths","scriptUrl","importScripts","currentScript","baseURI","installedChunks","installedChunkData","errorType","realSrc","webpackJsonpCallback","parentChunkLoadingFunction","moreModules","runtime","chunkLoadingGlobal","__webpack_exports__"],"sourceRoot":""}
\ No newline at end of file +{"version":3,"file":"core-login.js?v=15bcaad545abcd0293c8","mappings":";UAAIA,ECAAC,EACAC,qPCcJ,SAECC,sBAAuB,KAEvBC,+BAAgC,KAMhCC,UAAAA,CAAWC,GACVC,KAAKH,+BAAiCE,CACvC,EAYAE,IAAAA,CAAKC,EAAMH,GACNI,EAAAA,QAAAA,WAAaD,KAEhBH,EAAWG,EACXA,OAAOE,GAGHF,GAMLA,EAAKG,MAAK,WACLC,IAAEN,MAAM,GAAGO,SACdD,IAAEN,MAAM,GAAGO,SAASC,YAEpBC,EAAQC,MAAM,+CAEXV,OAASA,KAAKJ,wBACjBI,KAAKJ,sBAAwB,KAE/B,IACIG,GACHA,EAASY,OAENX,KAAKH,gCACRG,KAAKH,kCAnBLY,EAAQC,MAAM,yHAqBhB,EAcAE,QAAAA,CAASC,EAAMC,IACdA,EAAUA,GAAW,CAAC,GACdC,QAAS,EACjBD,EAAQE,QAAYF,EAAQE,QAAqCF,EAAQE,QAAlCC,EAAAA,GACvC,MAAMC,GAAQC,EAAAA,EAAAA,IAAYN,EAAMC,GAEhC,OADAI,EAAME,aAAab,SAAWW,EACvBZ,IAAEY,EAAME,aAChB,EAYAC,IAAAA,CAAKC,EAAMR,IAUVA,EAAUA,GAAW,CAAC,GACdE,QAAYF,EAAQE,QAAqCF,EAAQE,QAAlCC,EAAAA,GACvC,MAAMC,GAAQC,EAAAA,EAAAA,IAXK,SAASG,GAC3B,OAAOA,EAAKC,WACVC,MAAM,KAAKC,KAAK,SAChBD,MAAM,KAAKC,KAAK,QAChBD,MAAM,KAAKC,KAAK,QAChBD,MAAM,KAAKC,KAAK,UAChBD,MAAM,KAAMC,KAAK,SACpB,CAI0BC,CAAWJ,GAAOR,GAE5C,OADAI,EAAME,aAAab,SAAWW,EACvBZ,IAAEY,EAAME,aAChB,EASAO,UAAAA,CAAWL,GAMV,OALItB,KAAKJ,uBACRI,KAAKJ,sBAAsBY,YAE5BR,KAAKJ,uBAAwBuB,EAAAA,EAAAA,IAAYG,EAAM,CAAEN,QAASC,EAAAA,KAC1DjB,KAAKJ,sBAAsBwB,aAAab,SAAWP,KAAKJ,sBACjDU,IAAEN,KAAKJ,sBAAsBwB,aACrC,EAcAQ,aAAAA,CAAcN,EAAMR,IACnBA,EAAUA,GAAW,CAAC,GACdE,QAAUF,EAAQE,SAAWa,EAAAA,GACrC,MAAMX,GAAQC,EAAAA,EAAAA,IAAYG,EAAMR,GAEhC,OADAI,EAAME,aAAab,SAAWW,EACvBZ,IAAEY,EAAME,aAChB,EAQAU,SAAQA,KACCxB,IAAE,YAAYyB,KAAK,aAAaC,QC/I7BC,EAA4B9B,EAAAA,QAAAA,UAAW,KACnD+B,EAAaN,cAAcO,EAAE,OAAQ,6BAA6B,GAChE,IAAU,CAAEC,UAAU,ICZzB,IAAIC,GAA4B,EAEhC,MA6GA,EA7Ga,CACZC,wBAAAA,GACCD,GAA4B,CAC7B,EAQDE,eAAsB,SAASC,IACVA,GAAOlC,IAAE,iBACjBmC,YAAY,aAAapB,OACrCf,IAAE,gBAAgBoC,QAAQ,IAAIpC,IAAAA,OAAQ,cACvC,EAQAiC,eAAsB,SAASC,IACVA,GAAOlC,IAAE,iBACjBL,OAAO0C,SAAS,aAC5BrC,IAAE,gBAAgBoC,QAAQ,IAAIpC,IAAAA,OAAQ,cACvC,kBClBA,SAASK,EAAKiC,EAAQC,EAAU/B,GACf,SAAX8B,GAAgC,WAAXA,IAAwBE,GAAGC,qBAAqBC,gCAK1ElC,EAAUA,GAAW,CAAC,EACtBR,IAAAA,KAAO,CACN2C,KAAML,EAAOM,cACbC,KAAKC,EAAAA,EAAAA,IAAe,4CAA8CP,EAClEQ,KAAMvC,EAAQuC,MAAQ,CAAC,EACvBC,QAASxC,EAAQwC,QACjB5C,MAAOI,EAAQJ,SAVfoC,GAAGC,qBAAqBQ,4BAA4BpD,EAAEqD,KAAK7C,EAAMX,KAAM4C,EAAQC,EAAU/B,GAY3F,CCxBO,MAAM2C,EAAYC,OAAOC,cAAgB,CAAC,EAMpCC,EAAY,CAIxBC,SAAU,SAASC,EAAKC,EAAKC,EAAcjE,ID6CrC,SAAkB+D,EAAKC,EAAKC,EAAclD,IAChDA,EAAUA,GAAW,CAAC,GACduC,KAAO,CACdW,gBAGDrD,EAAK,MAAO,IAAMmD,EAAM,IAAMC,EAAKjD,EACpC,CCnDE+C,CAASC,EAAKC,EAAKC,EAAc,CAChCV,QAASvD,GAEX,EAKAkE,SAAU,SAASH,EAAKC,EAAKG,IDsDvB,SAAkBJ,EAAKC,EAAKG,EAAOpD,IACzCA,EAAUA,GAAW,CAAC,GACduC,KAAO,CACda,SAGDvD,EAAK,OAAQ,IAAMmD,EAAM,IAAMC,EAAKjD,EACrC,CC5DEmD,CAASH,EAAKC,EAAKG,EACpB,EAKAC,QAAS,SAASpE,IDKZ,SAAiBe,GACvBH,EAAK,MAAO,GAAIG,EACjB,CCNEqD,CAAQ,CACPb,QAASvD,GAEX,EAKAqE,QAAS,SAASN,EAAK/D,IDOjB,SAAiB+D,EAAKhD,GAC5BH,EAAK,MAAO,IAAMmD,EAAKhD,EACxB,CCREsD,CAAQN,EAAK,CACZR,QAASvD,GAEX,EAKAsE,UAAW,SAASP,EAAKC,ID8CnB,SAAmBD,EAAKC,EAAKjD,GACnCH,EAAK,SAAU,IAAMmD,EAAM,IAAMC,OC9ChCM,ED+CF,CC/CEA,CAAUP,EAAKC,EAChB,GChDD,OAFkD3D,IAA5BsD,OAAOY,kBAAkCZ,OAAOY,+DCItE,MAAMC,EAAY,CACjBC,OAAQ,OACRC,OAAQ,YACRC,MAAO,YACPC,OAAQ,SACRC,KAAM,YAcP,SAASC,EAAoBC,EAAQC,GACpC,GAAI5E,EAAAA,QAAAA,QAAU2E,GACb,OAAO3E,EAAAA,QAAAA,IAAM2E,GAAQ,SAASE,GAC7B,OAAOH,EAAoBG,EAAWD,EACvC,IAED,IAAIE,EAAQ,CACXC,KAAMJ,EAAOI,MAsBd,OAnBA/E,EAAAA,QAAAA,KAAO2E,EAAOK,UAAU,SAASA,GAChC,GAAwB,oBAApBA,EAASC,OAIb,IAAK,IAAIrB,KAAOoB,EAASE,WAAY,CACpC,IAAIC,EAAUvB,EACVA,KAAOgB,IACVO,EAAUP,EAAchB,IAEzBkB,EAAMK,GAAWH,EAASE,WAAWtB,EACtC,CACD,IAEKkB,EAAMM,KAEVN,EAAMM,GAAKC,EAAoBP,EAAMC,OAG/BD,CACR,CAQA,SAASO,EAAoBrC,GAC5B,IAAIsC,EAAWtC,EAAIuC,QAAQ,KACvBD,EAAW,IACdtC,EAAMA,EAAIwC,OAAO,EAAGF,IAGrB,IACIX,EADAc,EAAQzC,EAAI3B,MAAM,KAEtB,GACCsD,EAASc,EAAMA,EAAM5D,OAAS,GAC9B4D,EAAMC,aAGGf,GAAUc,EAAM5D,OAAS,GAEnC,OAAO8C,CACR,CAEA,SAASgB,EAAgBV,GACxB,OAAOA,GAAU,KAAOA,GAAU,GACnC,CA8CA,SAASW,EAAcC,EAAQlF,EAASmF,EAAOC,GAC9C,OAAOF,EAAOG,UACbrF,EAAQqC,IA9CV,SAA+CiD,EAAOrB,GACrD,IACIhB,EADAkB,EAAQ,CAAC,EAEb,IAAKlB,KAAOqC,EAAO,CAClB,IAAIC,EAActB,EAAchB,GAC5BG,EAAQkC,EAAMrC,GACbsC,IACJ5F,EAAQ6F,KAAK,0CAA4CvC,GACzDsC,EAActC,IAEX5D,EAAAA,QAAAA,UAAY+D,IAAU/D,EAAAA,QAAAA,SAAW+D,MAEpCA,EAAQ,GAAKA,GAEde,EAAMoB,GAAenC,CACtB,CACA,OAAOe,CACR,CA8BEsB,CAAsCN,EAAMO,QAAS1F,EAAQiE,eAC7DmB,GACCO,MAAK,SAAS3B,GACXgB,EAAgBhB,EAAOM,QACtBjF,EAAAA,QAAAA,WAAaW,EAAQwC,UAGxBxC,EAAQwC,QAAQ2C,EAAMS,UAEbvG,EAAAA,QAAAA,WAAaW,EAAQJ,QAC/BI,EAAQJ,MAAMoE,EAEhB,GAED,CA2DO,MCxMD6B,EAAWC,IAAAA,aAGjBC,OAAOC,OAAOH,EAAU,CACvBI,QDoMsBA,CAACjG,EAASmF,KAChC,IAAID,EAAS,IAAIgB,EAAAA,IAAIC,OAAO,CAC3BC,QAASpG,EAAQqC,IACjBgE,cAAehH,EAAAA,QAAAA,OAAS,CACvB,OAAQ,IACR,yBAA0B,MACxBW,EAAQqG,eAAiB,CAAC,KAE9BnB,EAAOoB,WAAa,WACnB,OAAOtG,EAAQqC,GAChB,EACA,IAAI+C,EAAU/F,EAAAA,QAAAA,OAAS,CACtB,mBAAoB,iBACpB,aAAgB2C,GAAGuE,cACjBvG,EAAQoF,SACX,MAAqB,aAAjBpF,EAAQmC,KApHb,SAAsB+C,EAAQlF,EAASmF,EAAOC,GAC7C,OAAOF,EAAOsB,SACbxG,EAAQqC,IACRhD,EAAAA,QAAAA,OAASW,EAAQiE,gBAAkB,GACnCjE,EAAQyG,MACRrB,GACCO,MAAK,SAASe,GACf,GAAI1B,EAAgB0B,EAASpC,SAC5B,GAAIjF,EAAAA,QAAAA,WAAaW,EAAQwC,SAAU,CAClC,IAAImE,EAAetH,EAAAA,QAAAA,OAASW,EAAQiE,eAChC2C,EAAU7C,EAAoB2C,EAASG,KAAMF,GAC7C3G,EAAQyG,MAAQ,GAEnBG,EAAQE,QAGT9G,EAAQwC,QAAQoE,EAEjB,OACUvH,EAAAA,QAAAA,WAAaW,EAAQJ,QAC/BI,EAAQJ,MAAM8G,EAEhB,GACD,CA8FSK,CAAa7B,EAAQlF,EAASmF,EAAOC,GACjB,cAAjBpF,EAAQmC,KACX8C,EAAcC,EAAQlF,EAASmF,EAAOC,GAClB,UAAjBpF,EAAQmC,KA5EpB,SAAmB+C,EAAQlF,EAASmF,EAAOC,GAE1C,OAAOF,EAAO8B,QACbhH,EAAQmC,KACRnC,EAAQqC,IACR+C,EACA,MACCO,MAAK,SAAS3B,GACVgB,EAAgBhB,EAAOM,QAO5BW,EAAcC,EAAQlF,EAASmF,EAAOC,GANjC/F,EAAAA,QAAAA,WAAaW,EAAQJ,QACxBI,EAAQJ,MAAMoE,EAMjB,GACD,CA4DSiD,CAAU/B,EAAQlF,EAASmF,EAAOC,GA1D3C,SAAoBF,EAAQlF,EAASmF,EAAOC,GAE3C,OADAA,EAAQ,gBAAkB,mBACnBF,EAAO8B,QACbhH,EAAQmC,KACRnC,EAAQqC,IACR+C,EACApF,EAAQuC,MACPoD,MAAK,SAAS3B,GACf,GAAKgB,EAAgBhB,EAAOM,SAO5B,GAAIjF,EAAAA,QAAAA,WAAaW,EAAQwC,SAAU,CAClC,GAAqB,QAAjBxC,EAAQmC,MAAmC,SAAjBnC,EAAQmC,MAAoC,UAAjBnC,EAAQmC,KAAkB,CAGlF,IAAI+E,EAAelD,EAAO6C,MAAQ1B,EAAMS,SACpCuB,EAAiBnD,EAAOoD,IAAIC,kBAAkB,oBAKlD,MAJqB,SAAjBrH,EAAQmC,MAAmBgF,IAC9BD,EAAazC,GAAKC,EAAoByC,SAEvCnH,EAAQwC,QAAQ0E,EAEjB,CAEA,GAAsB,MAAlBlD,EAAOM,OAAgB,CAC1B,IAAIqC,EAAetH,EAAAA,QAAAA,OAASW,EAAQiE,eACpCjE,EAAQwC,QAAQuB,EAAoBC,EAAO6C,KAAMF,GAClD,MACC3G,EAAQwC,QAAQwB,EAAO6C,KAEzB,OAzBKxH,EAAAA,QAAAA,WAAaW,EAAQJ,QACxBI,EAAQJ,MAAMoE,EAyBjB,GACD,CAwBSsD,CAAWpC,EAAQlF,EAASmF,EAAOC,EAC3C,EC1NAmC,QDgOsB1B,IAAY,CAAC/D,EAAQqD,EAAOnF,KAClD,IAAIwH,EAAS,CAAErF,KAAMsB,EAAU3B,IAAWA,GACtC2F,EAAgBtC,aAAiBU,EAAS6B,WA6B9C,GA3Be,WAAX5F,IAGCqD,EAAMwC,mBAETH,EAAOrF,KAAO,SACJgD,EAAMyC,QAAWzC,EAAM0C,YAAc1C,EAAM0C,WAAWD,UAEhEJ,EAAOrF,KAAO,QAKXnC,EAAQqC,MACZmF,EAAOnF,IAAMhD,EAAAA,QAAAA,OAAS8F,EAAO,QA7O/B,WACC,MAAM,IAAI2C,MAAM,iDACjB,CA2OyCC,IAIpB,MAAhB/H,EAAQuC,OAAgB4C,GAAqB,WAAXrD,GAAkC,WAAXA,GAAkC,UAAXA,IACnF0F,EAAOjF,KAAOyF,KAAKC,UAAUjI,EAAQsF,OAASH,EAAMS,OAAO5F,KAIxC,aAAhBwH,EAAOrF,OACVqF,EAAOU,aAAc,GAGF,aAAhBV,EAAOrF,MAAuC,cAAhBqF,EAAOrF,KAAsB,CAC9D,IAAI8B,EAAgBkB,EAAMlB,eACrBA,GAAiBkB,EAAMA,QAE3BlB,EAAgBkB,EAAMA,MAAMgD,UAAUlE,eAEnCA,IACC5E,EAAAA,QAAAA,WAAa4E,GAChBuD,EAAOvD,cAAgBA,EAAcpE,KAAKsF,GAE1CqC,EAAOvD,cAAgBA,GAIzBuD,EAAOvD,cAAgB5E,EAAAA,QAAAA,OAASmI,EAAOvD,eAAiB,CAAC,EAAGjE,EAAQiE,eAEhE5E,EAAAA,QAAAA,YAAcW,EAAQyG,SAExBzG,EAAQyG,MADLgB,EACa,EAEA,EAGnB,CAGA,IAAI7H,EAAQI,EAAQJ,MACpBI,EAAQJ,MAAQ,SAASwH,EAAKgB,EAAYC,GACzCrI,EAAQoI,WAAaA,EACrBpI,EAAQqI,YAAcA,EAClBzI,GACHA,EAAMC,KAAKG,EAAQsI,QAASlB,EAAKgB,EAAYC,EAE/C,EAGA,IAAIjB,EAAMpH,EAAQoH,IAAMvB,EAASI,QAAQ5G,EAAAA,QAAAA,OAASmI,EAAQxH,GAAUmF,GAEpE,OADAA,EAAMvD,QAAQ,UAAWuD,EAAOiC,EAAKpH,GAC9BoH,CAAG,ECrSDG,CAAQ1B,KAGlB,yBCHO,MCNP,EAFejD,OAAO2F,YAAc,CAAC,ECA/BC,EAASC,SACbC,qBAAqB,QAAQ,GAC7BC,aAAa,aACTC,EAAcH,SAClBC,qBAAqB,QAAQ,GAC7BC,aAAa,yBAEFE,OAAyBvJ,IAAXkJ,GAAuBA,6DCUlD,MAAMM,EAAU,CAGfC,eAAgB,GAEhBC,WAAY,GAGZC,uBAAwB,EAExBC,qBAAsB,EAEtBC,qBAAsB,EAEtBC,0BAA2B,EAE3BC,uBAAwB,EAWxBC,MAAO,SAAS9I,EAAM+I,EAAOtK,EAAUuK,GACtCtK,KAAKuK,QACJjJ,EACA+I,EACA,QACAT,EAAQY,UACRzK,EACAuK,EAEF,EAWAG,KAAM,SAASnJ,EAAM+I,EAAOtK,EAAUuK,GACrCtK,KAAKuK,QAAQjJ,EAAM+I,EAAO,OAAQT,EAAQY,UAAWzK,EAAUuK,EAChE,EAYAI,QAAS,SAASpJ,EAAM+I,EAAOtK,EAAUuK,GACxC,OAAOtK,KAAKuK,QACXjJ,EACA+I,EACA,SACAT,EAAQC,eACR9J,EACAuK,EAEF,EAYAK,mBAAoB,SAASrJ,EAAM+I,GAAiE,IAA1DO,EAAOC,UAAA7I,OAAA,QAAA5B,IAAAyK,UAAA,GAAAA,UAAA,GAAGjB,EAAQE,WAAY/J,EAAQ8K,UAAA7I,OAAA,QAAA5B,IAAAyK,UAAA,GAAAA,UAAA,GAAG,OAClF,OAAQ,IAAIC,EAAAA,IACVC,QAAQV,GACRW,QAAQ1J,GACR2J,WACAL,IAAYhB,EAAQE,WAClB,CACD,CACCoB,OAAO/I,EAAAA,EAAAA,IAAE,OAAQ,OACjBc,KAAM,QACNlD,SAAUA,KACTA,EAASoL,SAAU,EACnBpL,GAAS,EAAK,IAIf6J,EAAQwB,kBAAkBR,EAAS7K,IAErCsL,QACAhK,OACAoF,MAAK,KACA1G,EAASoL,SACbpL,GAAS,EACV,GAEH,EAWAuL,YAAa,SAAShK,EAAM+I,EAAOtK,EAAUuK,GAC5C,OAAQ,IAAIQ,EAAAA,IACVC,QAAQV,GACRW,QAAQ,IACRC,WAAW,CACX,CACCC,OAAO/I,EAAAA,EAAAA,IAAE,OAAQ,MACjBpC,SAAUA,QAEX,CACCmL,OAAO/I,EAAAA,EAAAA,IAAE,OAAQ,OACjBc,KAAM,UACNlD,SAAUA,KACTA,EAASoL,SAAU,EACnBpL,GAAS,EAAK,KAIhBsL,QACAE,QAAQjK,GACRD,OACAoF,MAAK,KACA1G,EAASoL,SACbpL,GAAS,EACV,GAEH,EAaAyL,OAAQ,SAASlK,EAAM+I,EAAOtK,EAAUuK,EAAOmB,EAAMC,GACpD,OAAO,IAAIC,SAASC,KACnBC,EAAAA,EAAAA,KACCC,EAAAA,EAAAA,KAAqB,IAAM,kCAC3B,CACCxK,OACAmK,KAAMpB,EACNtK,WACAgM,UAAWN,EACXO,aAAcN,IAEf,WACC3L,KAAS8K,WACTe,GACD,GACA,GAEH,EA0BAK,UAAAA,CAAW5B,EAAOtK,GAA8I,IAApImM,EAAWrB,UAAA7I,OAAA,QAAA5B,IAAAyK,UAAA,IAAAA,UAAA,GAAUsB,EAAQtB,UAAA7I,OAAA,QAAA5B,IAAAyK,UAAA,GAAAA,UAAA,QAAGzK,EAA+B6C,EAAI4H,UAAA7I,OAAA,QAAA5B,IAAAyK,UAAA,GAAAA,UAAA,GAAGuB,EAAAA,GAAeC,OAAQC,EAAIzB,UAAA7I,OAAA,QAAA5B,IAAAyK,UAAA,GAAAA,UAAA,QAAGzK,EAAWU,EAAO+J,UAAA7I,OAAA,QAAA5B,IAAAyK,UAAA,GAAAA,UAAA,QAAGzK,EAOpJ,MAAMmM,EAAiBA,CAACC,EAAIvJ,KAC3B,MAAMwJ,EAAWC,IAChB,MAAMC,GAAOD,aAAI,EAAJA,EAAMC,OAAQ,GAC3B,IAAIL,GAAOI,aAAI,EAAJA,EAAMJ,OAAQ,GAKzB,OAHIA,EAAKM,WAAWD,KACnBL,EAAOA,EAAKO,MAAMF,EAAK3K,SAAW,KAE5BsK,CAAI,EAGZ,OAAIJ,EACKY,GAAUN,EAAGM,EAAMC,IAAIN,GAAUxJ,GAEjC6J,GAAUN,EAAGC,EAAQK,EAAM,IAAK7J,EACzC,EAsBK+J,GAAUC,EAAAA,EAAAA,IAAqB5C,GAGjCpH,IAASjD,KAAKmK,wBAChBrJ,EAAQ8J,SAAW,IAAIsC,SAASC,IAChCH,EAAQI,UAAU,CACjBrN,SAAUwM,EAAexM,EAAUoN,EAAOlK,MAC1CiI,MAAOiC,EAAO7L,KACd2B,KAAMkK,EAAOE,cAAgB,UAAY,aACxC,IAGHL,EAAQM,kBAAiB,CAACR,EAAOR,KAAS,IAAAiB,EAAAC,EACzC,MAAM5C,EAAU,GACV8B,GAAOI,SAAU,QAALS,EAALT,EAAQ,UAAE,IAAAS,GAAY,QAAZA,EAAVA,EAAYE,kBAAU,IAAAF,OAAA,EAAtBA,EAAwB7D,eAAeoD,SAAU,QAALU,EAALV,EAAQ,UAAE,IAAAU,OAAA,EAAVA,EAAYE,UAC1DC,EAASjB,IAAQgB,EAAAA,EAAAA,UAASpB,GAyBhC,OAvBIrJ,IAASmJ,EAAAA,GAAeC,QAC3BzB,EAAQgD,KAAK,CACZ7N,SAAUwM,EAAexM,EAAUqM,EAAAA,GAAeC,QAClDnB,MAAOwB,IAAS1M,KAAK6N,aAAc1L,EAAAA,EAAAA,IAAE,OAAQ,gBAAiB,CAAE2L,KAAMpB,KAAUvK,EAAAA,EAAAA,IAAE,OAAQ,UAC1Fc,KAAM,YAGJA,IAASmJ,EAAAA,GAAe2B,UAAY9K,IAASmJ,EAAAA,GAAe4B,MAC/DpD,EAAQgD,KAAK,CACZ7N,SAAUwM,EAAexM,EAAUqM,EAAAA,GAAe4B,MAClD9C,MAAOyC,GAASxL,EAAAA,EAAAA,IAAE,OAAQ,mBAAoB,CAAEwL,YAAYxL,EAAAA,EAAAA,IAAE,OAAQ,QACtEc,KAAM,UACNgL,KAAMC,IAGJjL,IAASmJ,EAAAA,GAAe+B,MAAQlL,IAASmJ,EAAAA,GAAe2B,UAC3DnD,EAAQgD,KAAK,CACZ7N,SAAUwM,EAAexM,EAAUqM,EAAAA,GAAe+B,MAClDjD,MAAOyC,GAASxL,EAAAA,EAAAA,IAAE,OAAQ,mBAAoB,CAAEwL,YAAYxL,EAAAA,EAAAA,IAAE,OAAQ,QACtEc,KAAMA,IAASmJ,EAAAA,GAAe+B,KAAO,UAAY,YACjDF,KAAMG,IAGDxD,CAAO,IAIZuB,GACHa,EAAQqB,kBAAsC,iBAAblC,EAAwB,CAACA,GAAaA,GAAY,IAErD,mBAApBrL,aAAO,EAAPA,EAASwN,SACnBtB,EAAQuB,WAAW7B,GAAS5L,EAAQwN,OA/DX5B,KAAI,IAAA8B,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAA,MAAM,CACnCtJ,GAAImH,EAAKoC,QAAU,KACnBxC,KAAMI,EAAKJ,KACXH,SAAUO,EAAKqC,MAAQ,KACvBC,OAAiB,QAAVR,EAAA9B,EAAKsC,aAAK,IAAAR,OAAA,EAAVA,EAAYS,YAAa,KAChCC,YAAaxC,EAAKwC,YAClBzD,MAAqB,QAAfgD,EAAA/B,EAAKe,kBAAU,IAAAgB,OAAA,EAAfA,EAAiB/E,cAAegD,EAAKgB,SAC3CyB,MAAqB,QAAfT,EAAAhC,EAAKe,kBAAU,IAAAiB,OAAA,EAAfA,EAAiBS,OAAQ,KAC/BC,YAA2B,QAAfT,EAAAjC,EAAKe,kBAAU,IAAAkB,OAAA,EAAfA,EAAiBS,aAAc,KAC3CC,WAA0B,QAAfT,EAAAlC,EAAKe,kBAAU,IAAAmB,OAAA,EAAfA,EAAiBS,YAAa,KACzCC,qBAAoC,QAAfT,EAAAnC,EAAKe,kBAAU,IAAAoB,OAAA,EAAfA,EAAiBS,sBAAuB,KAC7DrB,KAAM,KACNsB,iBAAkB,KAClB,EAkD2CC,CAAiB9C,MAE7DM,EAAQyC,kBAAoD,KAAnC3O,aAAO,EAAPA,EAAS4O,yBAAkCvD,aAAQ,EAARA,EAAUwD,SAAS,2BAA2B,GAChHC,eAAe1D,GACf2D,QAAQvD,GACRjB,QACAyE,MACH,EAQAvF,QAAS,SAASwF,EAAS1F,EAAO2F,EAAYpF,GAAgD,IAAvC7K,EAAQ8K,UAAA7I,OAAA,QAAA5B,IAAAyK,UAAA,GAAAA,UAAA,GAAG,OAAiBoF,EAASpF,UAAA7I,OAAA,EAAA6I,UAAA,QAAAzK,EAC3F,MAAM4M,GAAW,IAAIlC,EAAAA,IACnBC,QAAQV,GACRW,QAAQiF,EAAY,GAAKF,GACzB9E,WAAWrB,EAAQwB,kBAAkBR,EAAS7K,IAEhD,OAAQiQ,GACP,IAAK,QACJhD,EAAQkD,YAAY,WACpB,MACD,IAAK,SACJlD,EAAQkD,YAAY,QAMtB,MAAMC,EAASnD,EAAQ3B,QAMvB,OAJI4E,GACHE,EAAO5E,QAAQwE,GAGTI,EAAO9O,OAAOoF,MAAK,KACrB1G,EAASqQ,UACZrQ,GAAS,EACV,GAEF,EAMAqL,iBAAAA,CAAkBR,EAAS7K,GAAU,IAAAsQ,EAAAC,EAAAC,EACpC,MAAMC,EAAa,GAEnB,OAA2B,iBAAZ5F,EAAuBA,EAAQ3H,KAAO2H,GACpD,KAAKhB,EAAQC,eACZ2G,EAAW5C,KAAK,CACf1C,MAAsB,QAAjBmF,EAAEzF,aAAO,EAAPA,EAAS6F,cAAM,IAAAJ,EAAAA,GAAIlO,EAAAA,EAAAA,IAAE,OAAQ,MACpCpC,SAAUA,KACTA,EAASqQ,UAAW,EACpBrQ,GAAS,EAAM,IAGjByQ,EAAW5C,KAAK,CACf1C,MAAuB,QAAlBoF,EAAE1F,aAAO,EAAPA,EAASF,eAAO,IAAA4F,EAAAA,GAAInO,EAAAA,EAAAA,IAAE,OAAQ,OACrCc,KAAM,UACNlD,SAAUA,KACTA,EAASqQ,UAAW,EACpBrQ,GAAS,EAAK,IAGhB,MACD,KAAK6J,EAAQE,WACZ0G,EAAW5C,KAAK,CACf1C,MAAuB,QAAlBqF,EAAE3F,aAAO,EAAPA,EAASF,eAAO,IAAA6F,EAAAA,GAAIpO,EAAAA,EAAAA,IAAE,OAAQ,MACrCc,KAAM,UACNlD,SAAUA,KACTA,EAASqQ,UAAW,EACpBrQ,GAAS,EAAK,IAGhB,MACD,QACCU,EAAQC,MAAM,8BAGhB,OAAO8P,CACR,EAEAE,kBAAkB,EAWlBC,WAAY,SAAStN,EAAMuN,EAAUC,EAAaC,GACjD,IAAIC,EAAO/Q,KACPgR,EAAiB,IAAI1Q,IAAAA,UAkErB2Q,EAAkB,SAASC,EAAQC,EAAGC,EAAGC,EAAIC,GAChDD,EAAKE,KAAKC,MAAMH,GAChBC,EAAKC,KAAKC,MAAMF,GAUhB,IATA,IAAIG,EAAMP,EAAOQ,WAAW,MAAMC,aAAa,EAAG,EAAGR,EAAGC,GACpDQ,EAAOV,EAAOQ,WAAW,MAAMC,aAAa,EAAG,EAAGN,EAAIC,GACtDjO,EAAOoO,EAAIpO,KACXwO,EAAQD,EAAKvO,KACbyO,EAAUX,EAAIE,EACdU,EAAUX,EAAIE,EACdU,EAAeT,KAAKU,KAAKH,EAAU,GACnCI,EAAeX,KAAKU,KAAKF,EAAU,GAE9BI,EAAI,EAAGA,EAAIb,EAAIa,IACvB,IAAK,IAAIC,EAAI,EAAGA,EAAIf,EAAIe,IAAK,CAU5B,IATA,IAAIC,EAAoB,GAAdD,EAAID,EAAId,GACdiB,EAAS,EACTC,EAAU,EACVC,EAAgB,EAChBC,EAAO,EACPC,EAAO,EACPC,EAAO,EACPC,EAAO,EACPC,GAAYV,EAAI,IAAOJ,EAClBe,EAAKvB,KAAKwB,MAAMZ,EAAIJ,GAAUe,GAAMX,EAAI,GAAKJ,EAASe,IAI9D,IAHA,IAAIE,EAAKzB,KAAK0B,IAAIJ,GAAYC,EAAK,KAAQZ,EACvCgB,GAAYd,EAAI,IAAON,EACvBqB,EAAKH,EAAKA,EACLI,EAAK7B,KAAKwB,MAAMX,EAAIN,GAAUsB,GAAMhB,EAAI,GAAKN,EAASsB,IAAM,CACpE,IAAIC,EAAK9B,KAAK0B,IAAIC,GAAYE,EAAK,KAAQpB,EACvCsB,EAAI/B,KAAKgC,KAAKJ,EAAKE,EAAKA,GACxBC,IAAM,GAAKA,GAAK,IAEnBhB,EAAS,EAAIgB,EAAIA,EAAIA,EAAI,EAAIA,EAAIA,EAAI,GACxB,IAGZV,GAAQN,EAASjP,EAAU,GAF3BgQ,EAAK,GAAKD,EAAKN,EAAK3B,KAGpBqB,GAAiBF,EAEbjP,EAAKgQ,EAAK,GAAK,MAAOf,EAASA,EAASjP,EAAKgQ,EAAK,GAAK,KAC3DZ,GAAQH,EAASjP,EAAKgQ,GACtBX,GAAQJ,EAASjP,EAAKgQ,EAAK,GAC3BV,GAAQL,EAASjP,EAAKgQ,EAAK,GAC3Bd,GAAWD,EAGd,CAEDT,EAAMQ,GAAMI,EAAOF,EACnBV,EAAMQ,EAAK,GAAKK,EAAOH,EACvBV,EAAMQ,EAAK,GAAKM,EAAOJ,EACvBV,EAAMQ,EAAK,GAAKO,EAAOJ,CACxB,CAEDtB,EAAOQ,WAAW,MAAM8B,UAAU,EAAG,EAAGjC,KAAKkC,IAAItC,EAAGE,GAAKE,KAAKkC,IAAIrC,EAAGE,IACrEJ,EAAOwC,MAAQrC,EACfH,EAAOyC,OAASrC,EAChBJ,EAAOQ,WAAW,MAAMkC,aAAahC,EAAM,EAAG,EAC/C,EAEIiC,EAAc,SAASC,EAAYlD,EAAUC,GAEhD,IAAIkD,EAAYD,EAAW/R,KAAK,aAAaiS,QAAQvR,YAAY,YAAYE,SAAS,YAClFsR,EAAeF,EAAUhS,KAAK,aAC9BmS,EAAkBH,EAAUhS,KAAK,gBAErCgS,EAAU1Q,KAAK,OAAQA,GAEvB0Q,EAAUhS,KAAK,aAAaT,KAAKsP,EAASnF,MAC1CwI,EAAalS,KAAK,SAAST,KAAKwB,GAAGqR,KAAKC,cAAcxD,EAASyD,OAC/DJ,EAAalS,KAAK,UAAUT,KAAKwB,GAAGqR,KAAKG,WAAW1D,EAAS5B,QAEzD6B,EAAYwD,MAAQxD,EAAY0D,eACnCL,EAAgBnS,KAAK,SAAST,KAAKwB,GAAGqR,KAAKC,cAAcvD,EAAYwD,OACrEH,EAAgBnS,KAAK,UAAUT,KAAKwB,GAAGqR,KAAKG,WAAWzD,EAAY0D,gBAEpE,IAAIjI,EAAOsE,EAAS4D,UAAY,IAAM5D,EAASnF,KAC3CgJ,EAAU,CACb3G,KAAMxB,EACNoI,EAAG,GACHC,EAAG,GACHC,EAAGhE,EAASzB,KACZ0F,UAAW,GAERC,EAAcC,MAAMC,mBAAmBP,GAE3CK,EAAcA,EAAYG,QAAQ,KAAM,OACxChB,EAAalS,KAAK,SAASmT,IAAI,CAAE,mBAAoB,QAAUJ,EAAc,OAvJtD,SAAShH,GAChC,IAAIrO,EAAW,IAAIa,IAAAA,UAEf2C,EAAO6K,EAAK7K,MAAQ6K,EAAK7K,KAAKzB,MAAM,KAAKoG,QAC7C,GAAIlE,OAAOyR,YAAuB,UAATlS,EAAkB,CAC1C,IAAImS,EAAS,IAAID,WACjBC,EAAOC,OAAS,SAASC,GACxB,IAAIC,EAAO,IAAIC,KAAK,CAACF,EAAE3H,OAAO7I,SAC9BpB,OAAO+R,IAAM/R,OAAO+R,KAAO/R,OAAOgS,UAClC,IAAIC,EAAcjS,OAAO+R,IAAIG,gBAAgBL,GACzCM,EAAQ,IAAIC,MAChBD,EAAME,IAAMJ,EACZE,EAAMR,OAAS,WACd,IAWgB5D,EAKfiD,EAAOC,EAAON,EAJdnD,EAEAwC,EACAC,EAfGxQ,GAWYsO,EAXDoE,EAYd3E,EAAS3H,SAASyM,cAAc,UAEhCtC,EAAQjC,EAAIiC,MACZC,EAASlC,EAAIkC,OAIbD,EAAQC,GACXgB,EAAI,EACJD,GAAKhB,EAAQC,GAAU,IAEvBgB,GAAKhB,EAASD,GAAS,EACvBgB,EAAI,GAELL,EAAO9C,KAAK0E,IAAIvC,EAAOC,GAGvBzC,EAAOwC,MAAQW,EACfnD,EAAOyC,OAASU,EACNnD,EAAOQ,WAAW,MACxBwE,UAAUzE,EAAKiD,EAAGC,EAAGN,EAAMA,EAAM,EAAG,EAAGA,EAAMA,GAGjDpD,EAAgBC,EAAQmD,EAAMA,EAtBb,OAwBVnD,EAAOiF,UAAU,YAAa,KApClC1W,EAASmM,QAAQzI,EAClB,CACD,EACAiS,EAAOgB,kBAAkBtI,EAC1B,MACCrO,EAAS4W,SAEV,OAAO5W,CACR,CAkIC6W,CAAkBzF,GAAapK,MAC9B,SAAS6F,GACR4H,EAAgBnS,KAAK,SAASmT,IAAI,mBAAoB,OAAS5I,EAAO,IACvE,IAAG,WACFA,EAAOxJ,GAAGyT,SAASC,WAAW3F,EAAY5N,MAC1CiR,EAAgBnS,KAAK,SAASmT,IAAI,mBAAoB,OAAS5I,EAAO,IACvE,IAGD,IAAImK,EAAa3C,EAAW/R,KAAK,aAAaC,OAC9CiS,EAAalS,KAAK,kBAAkB2U,KAAK,KAAM,qBAAuBD,GACtEvC,EAAgBnS,KAAK,kBAAkB2U,KAAK,KAAM,wBAA0BD,GAE5E3C,EAAW6C,OAAO5C,GAIdlD,EAAY0D,aAAe3D,EAAS5B,MACvCkF,EAAgBnS,KAAK,UAAUmT,IAAI,cAAe,QACxCrE,EAAY0D,aAAe3D,EAAS5B,OAC9CiF,EAAalS,KAAK,UAAUmT,IAAI,cAAe,QAM5CrE,EAAYwD,MAAQxD,EAAYwD,KAAOzD,EAASyD,KACnDH,EAAgBnS,KAAK,SAASmT,IAAI,cAAe,QACvCrE,EAAYwD,MAAQxD,EAAYwD,KAAOzD,EAASyD,MAC1DJ,EAAalS,KAAK,SAASmT,IAAI,cAAe,QASvB,aAApBtE,EAASxL,SACZ6O,EACEtR,SAAS,YACTZ,KAAK,0BACL6U,KAAK,WAAW,GAChBA,KAAK,YAAY,GACnB3C,EAAalS,KAAK,YAChBT,MAAKa,EAAAA,EAAAA,IAAE,OAAQ,cAEnB,EAKI0U,EAAa,+BACbC,EAAW,IAAMD,EACrB,GAAI7W,KAAK0Q,iBAAkB,CAG1B,IAAIoD,EAAaxT,IAAEwW,EAAW,eAC9BjD,EAAYC,EAAYlD,EAAUC,GAElC,IAAIkG,EAAQzW,IAAEwW,EAAW,cAAc9U,OACnCqI,EAAQ2M,EAAE,OACb,wBACA,yBACAD,EACA,CAAEA,MAAOA,IAEVzW,IAAEwW,GAAUG,SAASC,SAAS,oBAAoB5V,KAAK+I,GAGvD/J,IAAEoD,QAAQhB,QAAQ,UAClBsO,EAAepF,SAChB,MAEC5L,KAAK0Q,kBAAmB,EACxBpQ,IAAAA,KAAON,KAAKmX,0BAA0B1Q,MAAK,SAAS2Q,GACnD,IAAI/M,GAAQlI,EAAAA,EAAAA,IAAE,OAAQ,qBAClBkV,EAAOD,EAAME,WAAW,CAC3BC,YAAaV,EACbxM,MAAOA,EACPpH,KAAM,aAENuU,aAAarV,EAAAA,EAAAA,IAAE,OAAQ,aACvBsV,kBAAkBtV,EAAAA,EAAAA,IAAE,OAAQ,0BAE5BuV,KAAKvV,EAAAA,EAAAA,IAAE,OAAQ,oCACfwV,MAAMxV,EAAAA,EAAAA,IAAE,OAAQ,wFAIjB,GAFA7B,IAAE,QAAQqW,OAAOU,GAEbzG,GAAYC,EAAa,CAC5B,IAAIiD,EAAauD,EAAKtV,KAAK,cAC3B8R,EAAYC,EAAYlD,EAAUC,EACnC,CAEA,IAAI+G,EAAa,CAAC,CACjBtW,MAAMa,EAAAA,EAAAA,IAAE,OAAQ,UAChB0V,QAAS,SACTC,MAAO,gBAC6B,IAAxBhH,EAAWiH,UACrBjH,EAAWiH,SAAS1U,GAErB/C,IAAEwW,GAAUkB,SAAS,QACtB,GAED,CACC1W,MAAMa,EAAAA,EAAAA,IAAE,OAAQ,YAChB0V,QAAS,WACTC,MAAO,gBAC+B,IAA1BhH,EAAWmH,YACrBnH,EAAWmH,WAAW3X,IAAEwW,EAAW,eAEpCxW,IAAEwW,GAAUkB,SAAS,QACtB,IAGD1X,IAAEwW,GAAUkB,SAAS,CACpBtE,MAAO,IACPwE,eAAe,EACf5N,OAAO,EACPM,QAASgN,EACTO,YAAa,KACbC,MAAO,WACNrH,EAAKL,kBAAmB,EACxB,IACCpQ,IAAEN,MAAMgY,SAAS,WAAWK,QAC7B,CAAE,MAAO/C,GACR,CAEF,IAGDhV,IAAEwW,GAAU5B,IAAI,SAAU,QAE1B,IAAIoD,EAAiBjB,EAAKkB,QAAQ,cAAcxW,KAAK,mBAGrD,SAASyW,IACR,IAAIC,EAAepB,EAAKtV,KAAK,gCAAgCC,OAC7DsW,EAAe1B,KAAK,WAA6B,IAAjB6B,EACjC,CALAH,EAAe1B,KAAK,YAAY,GAQhCtW,IAAEwW,GAAU/U,KAAK,gBAAgB2W,GAAG,SAAS,WAC1BpY,IAAEwW,GAAU/U,KAAK,iDACvB6U,KAAK,UAAWtW,IAAEN,MAAM4W,KAAK,WAC1C,IACAtW,IAAEwW,GAAU/U,KAAK,qBAAqB2W,GAAG,SAAS,WAC/BpY,IAAEwW,GAAU/U,KAAK,6DACvB6U,KAAK,UAAWtW,IAAEN,MAAM4W,KAAK,WAC1C,IACAtW,IAAEwW,GAAU/U,KAAK,cAAc2W,GAAG,QAAS,yCAAyC,WACnF,IAAIC,EAAYrY,IAAEN,MAAM+B,KAAK,0BAC7B4W,EAAU/B,KAAK,WAAY+B,EAAU/B,KAAK,WAC3C,IACAtW,IAAEwW,GAAU/U,KAAK,cAAc2W,GAAG,QAAS,uFAAuF,WACjI,IAAIC,EAAYrY,IAAEN,MAClB2Y,EAAU/B,KAAK,WAAY+B,EAAU/B,KAAK,WAC3C,IAGAtW,IAAEwW,GAAU4B,GAAG,QAAS,6BAA6B,WACpD,IAAI3B,EAAQzW,IAAEwW,GAAU/U,KAAK,yDAAyDC,OAClF+U,IAAUzW,IAAEwW,EAAW,cAAc9U,QACxC1B,IAAEwW,GAAU/U,KAAK,gBAAgB6U,KAAK,WAAW,GACjDtW,IAAEwW,GAAU/U,KAAK,yBAAyBT,MAAKa,EAAAA,EAAAA,IAAE,OAAQ,oBAC/C4U,EAAQ,GAClBzW,IAAEwW,GAAU/U,KAAK,gBAAgB6U,KAAK,WAAW,GACjDtW,IAAEwW,GAAU/U,KAAK,yBAAyBT,MAAKa,EAAAA,EAAAA,IAAE,OAAQ,qBAAsB,CAAE4U,MAAOA,OAExFzW,IAAEwW,GAAU/U,KAAK,gBAAgB6U,KAAK,WAAW,GACjDtW,IAAEwW,GAAU/U,KAAK,yBAAyBT,KAAK,KAEhDkX,GACD,IACAlY,IAAEwW,GAAU4B,GAAG,QAAS,+BAA+B,WACtD,IAAI3B,EAAQzW,IAAEwW,GAAU/U,KAAK,sDAAsDC,OAC/E+U,IAAUzW,IAAEwW,EAAW,cAAc9U,QACxC1B,IAAEwW,GAAU/U,KAAK,qBAAqB6U,KAAK,WAAW,GACtDtW,IAAEwW,GAAU/U,KAAK,8BAA8BT,MAAKa,EAAAA,EAAAA,IAAE,OAAQ,oBACpD4U,EAAQ,GAClBzW,IAAEwW,GAAU/U,KAAK,qBAAqB6U,KAAK,WAAW,GACtDtW,IAAEwW,GAAU/U,KAAK,8BACfT,MAAKa,EAAAA,EAAAA,IAAE,OAAQ,qBAAsB,CAAE4U,MAAOA,OAEhDzW,IAAEwW,GAAU/U,KAAK,qBAAqB6U,KAAK,WAAW,GACtDtW,IAAEwW,GAAU/U,KAAK,8BAA8BT,KAAK,KAErDkX,GACD,IAEAxH,EAAepF,SAChB,IACEgN,MAAK,WACL5H,EAAeqF,SACfjM,OAAMjI,EAAAA,EAAAA,IAAE,OAAQ,sCACjB,IAGF,OAAO6O,EAAe6H,SACvB,EAEA1B,uBAAwB,WACvB,IAAI2B,EAAQxY,IAAAA,WACZ,GAAKN,KAAK+Y,oBAUTD,EAAMlN,QAAQ5L,KAAK+Y,yBAVW,CAC9B,IAAIhI,EAAO/Q,KACXM,IAAAA,IAAMwC,GAAGkW,SAAS,QAAS,YAAa,oBAAoB,SAASC,GACpElI,EAAKgI,oBAAsBzY,IAAE2Y,GAC7BH,EAAMlN,QAAQmF,EAAKgI,oBACpB,IACEH,MAAK,WACLE,EAAMzC,QACP,GACF,CAGA,OAAOyC,EAAMD,SACd,GAGD,ICxvBMK,EAfqBC,EAACC,EAAQC,KACnC,IAAIC,EAAQF,EAAO5P,qBAAqB,QAAQ,GAAGC,aAAa,qBAEhE,MAAO,CACN8P,SAAUA,IAAMD,EAChBE,SAAUC,IACTH,EAAQG,EAERJ,EAAK,oBAAqB,CACzBC,SACC,EAEH,EAGyBH,CAAY5P,SAAU8P,EAAAA,IAKpCE,EAAWL,EAAmBK,SCfrCG,GDoBkBR,EAAmBM,SCpBrB,SAASzD,EAAK1S,GACnC,IACIoI,EACAkO,EAFAC,EAAU,GAMd,GAHA5Z,KAAK6Z,kBAAoB,GACzB7Z,KAAK8Z,QAAS,EACd9Z,KAAK+Z,UAAY,CAAC,EACd1W,EACH,IAAKoI,KAAQpI,EACZuW,GAAWnO,EAAO,IAAMuO,mBAAmB3W,EAAKoI,IAAS,IAI3D,GADAmO,GAAW,gBAAkBI,mBAAmBT,KAC3CvZ,KAAKia,aAAsC,oBAAhBC,YAWzB,CACN,IAAIC,EAAW,yBAA2BT,EAAcU,YACxDV,EAAcW,gBAAgBX,EAAcU,aAAepa,KAC3DA,KAAKsa,OAASha,IAAE,qBAChBN,KAAKsa,OAAO5D,KAAK,KAAMyD,GACvBna,KAAKsa,OAAOra,OAEZ0Z,EAAW,KACe,IAAtB5D,EAAIrQ,QAAQ,OACfiU,EAAW,KAEZ3Z,KAAKsa,OAAO5D,KAAK,MAAOX,EAAM4D,EAAW,6BAA+BD,EAAcU,YAAc,IAAMR,GAC1GtZ,IAAE,QAAQqW,OAAO3W,KAAKsa,QACtBta,KAAKia,aAAc,EACnBP,EAAcU,aACf,MAzBCT,EAAW,KACe,IAAtB5D,EAAIrQ,QAAQ,OACfiU,EAAW,KAEZ3Z,KAAKua,OAAS,IAAIL,YAAYnE,EAAM4D,EAAWC,GAC/C5Z,KAAKua,OAAOC,UAAY,SAASlF,GAChC,IAAK,IAAIlD,EAAI,EAAGA,EAAIpS,KAAK6Z,kBAAkB7X,OAAQoQ,IAClDpS,KAAK6Z,kBAAkBzH,GAAGtJ,KAAK2R,MAAMnF,EAAEjS,MAEzC,EAAEG,KAAKxD,MAkBRA,KAAK0a,OAAO,eAAgB,SAASrX,GACvB,UAATA,GACHrD,KAAKoY,OAEP,EAAE5U,KAAKxD,MACR,GACA0Z,EAAcW,gBAAkB,GAChCX,EAAcU,YAAc,EAC5BV,EAAciB,iBAAmB,SAASpV,EAAItC,EAAMI,GACnDqW,EAAcW,gBAAgB9U,GAAIoV,iBAAiB1X,EAAMI,EAC1D,EACAqW,EAAczQ,UAAY,CACzB4Q,kBAAmB,GACnBS,OAAQ,KACRP,UAAW,CAAC,EACZE,aAAa,EAWbU,iBAAkB,SAAS1X,EAAMI,GAChC,IAAI+O,EAEJ,IAAIpS,KAAK8Z,OAGT,GAAI7W,GACH,QAAmC,IAAxBjD,KAAK+Z,UAAUa,KACzB,IAAKxI,EAAI,EAAGA,EAAIpS,KAAK+Z,UAAU9W,GAAMjB,OAAQoQ,IAC5CpS,KAAK+Z,UAAU9W,GAAMmP,GAAG/O,QAI1B,IAAK+O,EAAI,EAAGA,EAAIpS,KAAK6Z,kBAAkB7X,OAAQoQ,IAC9CpS,KAAK6Z,kBAAkBzH,GAAG/O,EAG7B,EACAwX,WAAY,EAOZH,OAAQ,SAASzX,EAAMlD,GAClBA,GAAYA,EAASY,OAEpBsC,EACCjD,KAAKia,aACHja,KAAK+Z,UAAU9W,KACnBjD,KAAK+Z,UAAU9W,GAAQ,IAExBjD,KAAK+Z,UAAU9W,GAAM2K,KAAK7N,IAE1BC,KAAKua,OAAOO,iBAAiB7X,GAAM,SAASqS,QACrB,IAAXA,EAAEjS,KACZtD,EAAS+I,KAAK2R,MAAMnF,EAAEjS,OAEtBtD,EAAS,GAEX,IAAG,GAGJC,KAAK6Z,kBAAkBjM,KAAK7N,GAG/B,EAIAqY,MAAO,WACNpY,KAAK8Z,QAAS,OACa,IAAhB9Z,KAAKua,QACfva,KAAKua,OAAOnC,OAEd,GAGD,oCCrIO,IAAI2C,EAAc,KACdC,EAAoB,KAWxB,MAyDMC,GAAY,SAASC,GACjC,GAAIH,EAAa,CAChB,MAAMI,EAAWJ,EACjBA,EAAYrY,QAAQ,IAAIpC,IAAAA,OAAQ,eAChCya,EAAYK,QC9EW,ID8EQ,WAC9BD,EAASzY,QAAQ,IAAIpC,IAAAA,OAAQ,cACzB4a,GACHA,EAASG,MAAMrb,KAAM6K,UAEvB,GACD,CAGAvK,IAAE,eAAeoW,KAAK,iBAAiB,GACnCsE,GACHA,EAAkBtE,KAAK,iBAAiB,GAGzCpW,IAAE,eAAemC,YAAY,cAC7BsY,EAAc,KACdC,EAAoB,IACrB,EEhGMM,KAAY5X,OAAO6X,uCCiBzB,MA+DA,GA/Da,CAYZC,KAAMC,EAAAA,GAUNC,SAAQ,KAMRC,YAAaC,EAAAA,GAgBbC,UAAS,KAgBTC,gBAAeA,EAAAA,IAKhBC,KAAAA,eAA0B,KAAK,SAASjY,EAAKxC,GAC5C,OAAOua,EAAAA,EAAAA,IAAU/X,EAAKxC,EACvB,IC1EO,MCDP,IAMC0a,WAAAA,CAAYC,GACXjc,KAAKkc,YAAYD,EAAU9Z,EAAE,OAAQ,YACtC,EAQA+Z,WAAAA,CAAYD,EAAU1R,GACrBjK,IAAE2b,GAAU3a,KAAKiJ,GACf9H,YAAY,WACZA,YAAY,SACZ0Z,MAAK,GAAM,GACX9a,MACH,EAYA+a,cAAAA,CAAeH,EAAUzU,GACxBxH,KAAKqc,eAAeJ,EAAUzU,EAC/B,EAYA6U,cAAAA,CAAeJ,EAAUzU,GACA,YAApBA,EAASpC,OACZpF,KAAKsc,gBAAgBL,EAAUzU,EAASnE,KAAKkH,SAE7CvK,KAAKuc,cAAcN,EAAUzU,EAASnE,KAAKkH,QAE7C,EAQA+R,eAAAA,CAAgBL,EAAU1R,GACzBjK,IAAE2b,GAAU3a,KAAKiJ,GACf5H,SAAS,WACTF,YAAY,SACZ0Z,MAAK,GAAM,GACXK,MAAM,KACNC,QAAQ,KACRpb,MACH,EAQAkb,aAAAA,CAAcN,EAAU1R,GACvBjK,IAAE2b,GAAU3a,KAAKiJ,GACf5H,SAAS,SACTF,YAAY,WACZpB,MACH,4BCtFD,UAEC2B,6BAA4BA,KACpB0Z,EAAAA,GAAAA,KAQRnZ,2BAAAA,CAA4BxD,EAAUe,EAAS6b,IAC9CC,EAAAA,GAAAA,KAAkBnW,KAAK1G,EAAU4c,EAClC,GCnBD,IAKCE,SAAU,CAAC,EAQXnB,QAAAA,CAASoB,EAAYC,GACpB,IAAIC,EAAUhd,KAAK6c,SAASC,GACvBE,IACJA,EAAUhd,KAAK6c,SAASC,GAAc,IAEvCE,EAAQpP,KAAKmP,EACd,EASAE,UAAAA,CAAWH,GACV,OAAO9c,KAAK6c,SAASC,IAAe,EACrC,EASAI,MAAAA,CAAOJ,EAAYK,EAAcrc,GAChC,MAAMkc,EAAUhd,KAAKid,WAAWH,GAChC,IAAK,IAAI1K,EAAI,EAAGA,EAAI4K,EAAQhb,OAAQoQ,IAC/B4K,EAAQ5K,GAAG8K,QACdF,EAAQ5K,GAAG8K,OAAOC,EAAcrc,EAGnC,EASAsc,MAAAA,CAAON,EAAYK,EAAcrc,GAChC,MAAMkc,EAAUhd,KAAKid,WAAWH,GAChC,IAAK,IAAI1K,EAAI,EAAGA,EAAI4K,EAAQhb,OAAQoQ,IAC/B4K,EAAQ5K,GAAGgL,QACdJ,EAAQ5K,GAAGgL,OAAOD,EAAcrc,EAGnC,GC9DYuc,GAAQ3Z,OAAO4Z,QAAU,CAAC,6BCUvC,UAECC,UAAW,GAcXC,UAAAA,CAAWlV,EAAQnF,EAAK8R,GACvB,IAAIwI,EAOJ,GALCA,EADuB,iBAAZnV,EACCA,EAEAxF,GAAG4a,iBAAiBpV,GAG7B5E,OAAOia,QAAQC,UAAW,CAK7B,GAJAza,EAAMA,GAAO0a,SAASC,SAAW,IAAML,EAGrBM,UAAUC,UAAUC,cAAcvY,QAAQ,YAAc,GACzDwY,SAASH,UAAUC,UAAUxc,MAAM,KAAKqE,OAAS,GAAI,CACrE,MAAMsY,EAAW5U,SAAS6U,iBAAiB,+DAC3C,IAAK,IAAiCC,EAA7BjM,EAAI,EAAGkM,EAAKH,EAASnc,OAAiBoQ,EAAIkM,EAAIlM,IACtDiM,EAAUF,EAAS/L,GAEnBiM,EAAQE,MAAMC,KAAOH,EAAQE,MAAMC,KAEnCH,EAAQE,MAAME,OAASJ,EAAQE,MAAME,OACrCJ,EAAQK,gBAAgB,UACxBL,EAAQM,aAAa,SAAU,eAEjC,CACI1J,EACHvR,OAAOia,QAAQiB,aAAatW,EAAQ,GAAInF,GAExCO,OAAOia,QAAQC,UAAUtV,EAAQ,GAAInF,EAEvC,MAECO,OAAOma,SAASgB,KAAO,IAAMpB,EAG7Bzd,KAAK8e,YAAa,CAEpB,EAWAlB,SAAAA,CAAUtV,EAAQnF,GACjBnD,KAAKwd,WAAWlV,EAAQnF,GAAK,EAC9B,EAaAyb,YAAAA,CAAatW,EAAQnF,GACpBnD,KAAKwd,WAAWlV,EAAQnF,GAAK,EAC9B,EAOA4b,oBAAAA,CAAqBC,GACpBhf,KAAKud,UAAU3P,KAAKoR,EACrB,EAQAC,eAAAA,GACC,MAAMJ,EAAOnb,OAAOma,SAASgB,KACvBK,EAAML,EAAKnZ,QAAQ,KACzB,OAAIwZ,GAAO,EACHL,EAAKlZ,OAAOuZ,EAAM,GAEtBL,EAAK7c,OAED6c,EAAKlZ,OAAO,GAEb,EACR,EAEAwZ,aAAaC,GACLA,EAAMnK,QAAQ,MAAO,KAS7BoK,aAAAA,GACC,MAAMD,EAAQpf,KAAKif,kBACnB,IAAI3W,EAOJ,OALI8W,IACH9W,EAASxF,GAAGwc,iBAAiBtf,KAAKmf,aAAaC,KAGhD9W,EAASnI,EAAAA,QAAAA,OAASmI,GAAU,CAAC,EAAGxF,GAAGwc,iBAAiBtf,KAAKmf,aAAatB,SAAS0B,UACxEjX,GAAU,CAAC,CACnB,EAEAkX,WAAAA,CAAYlK,GACX,GAAItV,KAAK8e,WAER,YADA9e,KAAK8e,YAAa,GAGnB,IAAIxW,EACJ,GAAKtI,KAAKud,UAAUvb,OAApB,CAGAsG,EAAUgN,GAAKA,EAAEmK,MACbtf,EAAAA,QAAAA,SAAWmI,GACdA,EAASxF,GAAGwc,iBAAiBhX,GAClBA,IACXA,EAAStI,KAAKqf,iBAAmB,CAAC,GAEnC,IAAK,IAAIjN,EAAI,EAAGA,EAAIpS,KAAKud,UAAUvb,OAAQoQ,IAC1CpS,KAAKud,UAAUnL,GAAG9J,EARnB,CAUD,+BCxJD,SAASoX,GAASvd,GAEjB,MAAMwd,EAAK,GACX,IAGI/K,EAHAF,EAAI,EACJC,GAAK,EACLqC,EAAI,EAGR,KAAOtC,EAAIvS,EAAEH,QAAQ,CACpB4S,EAAIzS,EAAEyd,OAAOlL,GAEb,MAAMmL,GAAO7I,GAAW,MAANpC,GAAeA,GAAK,KAAOA,GAAK,IAC9CiL,IAAM7I,IAETrC,IACAgL,EAAGhL,GAAK,GACRqC,EAAI6I,GAELF,EAAGhL,IAAMC,EACTF,GACD,CACA,OAAOiL,CACR,CAOA,UAECG,QAAO,GAKP1L,cAAa,MAYb2L,gBAAAA,CAAiBC,GAChB,GAAsB,iBAAXA,EACV,OAAO,KAGR,MAAMC,EAAID,EAAO/B,cAAciC,OAC/B,IAAIC,EAAQ,KAEZ,MAcMC,EAAUH,EAAEI,MAAM,mDACxB,OAAgB,OAAZD,EAMI,MALPD,EAAQG,WAAWL,GACdM,SAASJ,IAMXC,EAAQ,KACXD,GAxBkB,CAClBK,EAAG,EACHC,EAAG,KACHC,GAAI,KACJC,GAAI,QACJd,EAAG,QACHe,GAAI,WACJC,EAAG,WACHC,GAAI,cACJ3e,EAAG,cACH4e,GAAI,gBACJC,EAAG,iBAawBZ,EAAQ,KAGpCD,EAAQ5O,KAAKC,MAAM2O,GACZA,GAVE,KAWV,EAOA7L,WAAUA,CAAC2M,EAAWC,UACE9gB,IAAnBsD,OAAOyd,SACVre,GAAGse,OAAS3gB,GAAQ6F,KAAK,+FAE1B4a,EAASA,GAAU,MACZG,KAAOJ,GAAWC,OAAOA,IAOjCI,oBAAAA,CAAqBL,QACG7gB,IAAnBsD,OAAOyd,SACVre,GAAGse,OAAS3gB,GAAQ6F,KAAK,yGAE1B,MAAMib,EAAOF,OAASE,KAAKF,KAAOJ,IAClC,OAAIM,GAAQ,GAAKA,EAAO,KAChBpf,EAAE,OAAQ,eAEXkf,KAAOJ,GAAWO,SAC1B,EAOAC,iBAAAA,GACC,GAAIzhB,KAAK0hB,gBACR,OAAO1hB,KAAK0hB,gBAGb,MAAMC,EAAQpY,SAASyM,cAAc,KACrC2L,EAAMpD,MAAM7K,MAAQ,OACpBiO,EAAMpD,MAAM5K,OAAS,QAErB,MAAMiO,EAAQrY,SAASyM,cAAc,OACrC4L,EAAMrD,MAAMsD,SAAW,WACvBD,EAAMrD,MAAMuD,IAAM,MAClBF,EAAMrD,MAAMwD,KAAO,MACnBH,EAAMrD,MAAMyD,WAAa,SACzBJ,EAAMrD,MAAM7K,MAAQ,QACpBkO,EAAMrD,MAAM5K,OAAS,QACrBiO,EAAMrD,MAAM0D,SAAW,SACvBL,EAAMM,YAAYP,GAElBpY,SAAS5B,KAAKua,YAAYN,GAC1B,MAAMO,EAAKR,EAAMS,YACjBR,EAAMrD,MAAM0D,SAAW,SACvB,IAAII,EAAKV,EAAMS,YASf,OARID,IAAOE,IACVA,EAAKT,EAAMU,aAGZ/Y,SAAS5B,KAAK4a,YAAYX,GAE1B5hB,KAAK0hB,gBAAmBS,EAAKE,EAEtBriB,KAAK0hB,eACb,EAQAc,UAAUC,GAGF,IAAIC,KAAKD,EAAKE,cAAeF,EAAKG,WAAYH,EAAKI,WAW3DC,kBAAAA,CAAmBC,EAAGvC,GACrB,IAAI9L,EACJ,MAAMsO,EAAKtD,GAASqD,GACdE,EAAKvD,GAASc,GAEpB,IAAK9L,EAAI,EAAGsO,EAAGtO,IAAMuO,EAAGvO,GAAIA,IAC3B,GAAIsO,EAAGtO,KAAOuO,EAAGvO,GAAI,CACpB,MAAMwO,EAAOC,OAAOH,EAAGtO,IAAW0O,EAAOD,OAAOF,EAAGvO,IAGnD,OAAIwO,GAAQF,EAAGtO,IAAM0O,GAAQH,EAAGvO,GACxBwO,EAAOE,EAIPJ,EAAGtO,GAAG2O,cAAcJ,EAAGvO,GAAI5R,GAAGwgB,cAEvC,CAED,OAAON,EAAGhhB,OAASihB,EAAGjhB,MACvB,EAQAuhB,OAAAA,CAAQxjB,EAAUyjB,GACjB,MAAMC,EAAmB,YACL,IAAf1jB,KACH2jB,WAAWD,EAAkBD,EAE/B,EAEAC,GACD,EASAE,kBAAAA,CAAmBlY,EAAMvH,GACxB,MAAM0f,EAAUra,SAASsa,OAAOriB,MAAM,KACtC,IAAK,IAAI4Q,EAAI,EAAGA,EAAIwR,EAAQ5hB,OAAQoQ,IAAK,CACxC,MAAMyR,EAASD,EAAQxR,GAAG5Q,MAAM,KAChC,GAAIqiB,EAAO,GAAG3D,SAAWzU,GAAQoY,EAAO,GAAG3D,SAAWhc,EACrD,OAAO,CAET,CACA,OAAO,CACR,GC3OYkd,GAFA1d,OAAOogB,UCApB,IAAIC,GAAUrgB,OAAOsgB,YAErB,QAAuB,IAAZD,GAAyB,CACnCA,GAAUlG,SAASC,SACnB,MAAMoB,EAAM6E,GAAQre,QAAQ,eAE3Bqe,IADY,IAAT7E,EACO6E,GAAQpe,OAAO,EAAGuZ,GAElB6E,GAAQpe,OAAO,EAAGoe,GAAQE,YAAY,KAElD,CAEA,4BC2EA,UAICC,SZ3FuB,CAAC,GAAI,QAAS,MAAO,cAAe,OAAQ,YY4FnEC,UZ3FwB,GY4FxBC,eZrF6B,GYsF7BC,kBZ3FgC,EY4FhCC,kBZzFgC,EY0FhCC,gBZ9F8B,EY+F9BC,gBZ7F8B,EY8F9BC,iBZ3F+B,GY4F/BC,kBZ9FgC,EY+FhCC,aZ3F2B,mBYuG3BC,kBAAmB9W,KAAWA,EAAKuS,MAAMwE,EAAOC,uBAChDviB,KAAI,EACJqB,UAAS,EACTH,UAAS,EACTshB,aAAY,EACZpe,SAAQ,EACRqe,OAAQH,EAORlb,YAAW,EACXsb,QAASrb,EACTsQ,YAAW,EAQXgL,ejB9H6BA,KACtB,CACNC,IAAKxb,EACLD,gBiB4HD0b,YXhI0BA,IAAM9J,GWiIhC+J,KAAI,GAOJC,2BAA4BrjB,EAC5BsjB,kB1B1H+Brd,KAIZ,IAAfA,EAAI9C,QAAoC,UAAnB8C,EAAIsd,YAA6C,YAAnBtd,EAAIsd,aAA4B1iB,GAAG2iB,iBAItFtlB,EAAAA,QAAAA,SAAW,CAAC,IAAK,IAAK,IAAK,KAAM+H,EAAI9C,SAAWtC,GAAG6G,YAEtD+Z,YAAW,WACV,IAAK5gB,GAAG4iB,wBAA0B5iB,GAAG2iB,cAAe,CACnD,IAAIE,EAAQ,EACZ,MAAMC,EAAU,EACVpC,EAAWqC,aAAY,WAC5B3jB,EAAaP,WAAWqV,EAAE,OAAQ,+CAAgD,gDAAiD4O,EAAUD,IACzIA,GAASC,IACZE,cAActC,GACd1gB,GAAGijB,UAEJJ,GACD,GAAG,KAIH7iB,GAAG2iB,eAAgB,CACpB,CACD,GAAG,KACsB,IAAfvd,EAAI9C,QAEdse,YAAW,WACL5gB,GAAG4iB,uBAA0B5iB,GAAG2iB,eAEpC3iB,GAAGwiB,4BAEL,GAAG,KACJ,E0BuFAU,8B1B5E4C9d,IAmBxCA,EAAI4S,mBACP5S,EAAI4S,iBAAiB,QAnBDmL,KACG,IAAnB/d,EAAIge,aAIHhe,EAAI9C,QAAU,KAAO8C,EAAI9C,OAAS,KAAuB,MAAf8C,EAAI9C,QAKnD9E,IAAEiJ,UAAU7G,QAAQ,IAAIpC,IAAAA,OAAQ,aAAc4H,GAAI,IAUlDA,EAAI4S,iBAAiB,SAPAqL,KAErB7lB,IAAEiJ,UAAU7G,QAAQ,IAAIpC,IAAAA,OAAQ,aAAc4H,EAAI,IAMnD,E0B8DAke,gBCjJ8BA,KAC9BtjB,GAAGse,OAAS3gB,EAAQ6F,KAAK,sGAClB+f,EAAAA,EAAAA,MDoJPpL,UAAS,GACTqL,ab9I2B,SAASC,EAASC,EAASC,EAAQC,GAC9DF,EAAQ7jB,SAAS,QACjB,MAAMgkB,EAAiD,MAA5BJ,EAAQ3P,KAAK,YAAkD,WAA5B2P,EAAQ3P,KAAK,WAI3E2P,EAAQ7N,GAAGiO,EAAqB,aAAe,yBAAyB,SAASC,GAEhFA,EAAMC,iBAGFD,EAAM7iB,KAAqB,UAAd6iB,EAAM7iB,MAInByiB,EAAQM,GAAG/L,GACdE,MAEUF,GAGVE,MAGkB,IAAfyL,GACHF,EAAQvP,SAAStU,SAAS,cAI3B4jB,EAAQ7P,KAAK,iBAAiB,GAE9B8P,EAAQO,YChDe,GDgDQN,GAC/B1L,EAAcyL,EACdxL,EAAoBuL,GACrB,GACD,Ea4GCS,SbxDuBA,CAACT,EAASC,EAAStL,KACtCsL,EAAQM,GAAG/L,KAGfE,KACAF,EAAcyL,EACdxL,EAAoBuL,EACpBC,EAAQ9jB,QAAQ,IAAIpC,IAAAA,OAAQ,eAC5BkmB,EAAQnlB,OACRmlB,EAAQ9jB,QAAQ,IAAIpC,IAAAA,OAAQ,cAExBH,EAAAA,QAAAA,WAAa+a,IAChBA,IACD,Ea4CA+L,ebrG6BA,CAACV,EAASC,KAEnCA,EAAQM,GAAG/L,IACdE,KAEDsL,EAAQW,IAAI,cAAczkB,YAAY,cACtC+jB,EAAQ/jB,YAAY,OAAO,EauG3BiL,SAAQ,KAIRyZ,WAAU,KAIVC,QAAO,KAIPC,WAAU,KAIVC,UAAS,KAKTC,QE/KsBA,IAAM7jB,OAAOma,SAAS2J,KFgL5CC,YEtK0BA,IAAM/jB,OAAOma,SAAS6J,SFuKhDC,QE7JsBA,IAAMjkB,OAAOma,SAAS+J,KF8J5CC,YElM0BA,IAAMnkB,OAAOma,SAASiK,SAAStmB,MAAM,KAAK,GFuMpEumB,mBAAkB,KAIlBC,UAAS,KAIT1E,YAAW,KAKX5F,iBnB1JoBpV,GACfA,EAGEhI,IAAAA,IAAMgI,GAAQ,SAASpE,EAAOH,GACpC,IAAIkc,EAAIjG,mBAAmBjW,GAI3B,OAHIG,UACH+b,GAAK,IAAMjG,mBAAmB9V,IAExB+b,CACR,IAAGxe,KAAK,KARA,GmByJR6d,iBnB7MoB2I,IACpB,IAAI/I,EACAgJ,EACJ,MAAMpjB,EAAS,CAAC,EAChB,IAAIf,EACJ,IAAKkkB,EACJ,OAAO,KAER/I,EAAM+I,EAAYviB,QAAQ,KACtBwZ,GAAO,IACV+I,EAAcA,EAAYtiB,OAAOuZ,EAAM,IAExC,MAAMtZ,EAAQqiB,EAAYhT,QAAQ,MAAO,OAAOzT,MAAM,KACtD,IAAK,IAAI4Q,EAAI,EAAGA,EAAIxM,EAAM5D,OAAQoQ,IAAK,CAEtC,MAAM+V,EAAOviB,EAAMwM,GACnB8M,EAAMiJ,EAAKziB,QAAQ,KAElBwiB,EADGhJ,GAAO,EACG,CACZiJ,EAAKxiB,OAAO,EAAGuZ,GACfiJ,EAAKxiB,OAAOuZ,EAAM,IAIN,CAACiJ,GAEVD,EAAWlmB,SAGhB+B,EAAMqkB,mBAAmBF,EAAW,IAC/BnkB,IAKJe,EAAOf,GADJmkB,EAAWlmB,OAAS,EACTomB,mBAAmBF,EAAW,IAG9B,MAEhB,CACA,OAAOpjB,CAAM,EmBsKbujB,IAAG,GACHnmB,aAAY,EAIZa,qBAAoB,GACpBulB,QAAO,GACPjL,MAAK,GACLlJ,KAAI,GACJiN,MAAK,GAILpI,SAAUuP,EAAAA,GAIVC,YAAW,KAIXC,KG5OkBrf,GH4OT1F,OG5OoB+H,IAC7B,MAAMid,EAAajd,EAAKjK,MAAM,KACxBmnB,EAAOD,EAAW7iB,MAExB,IAAK,IAAIuM,EAAI,EAAGA,EAAIsW,EAAW1mB,OAAQoQ,IAEtC,KADAhJ,GAAUA,GAAQsf,EAAWtW,KAE5B,OAAO,EAGT,OAAOhJ,GAAQuf,EAAK,GHsOpBC,IG5NkBxf,IAAW,CAACqC,EAAMvH,KACpC,MAAMwkB,EAAajd,EAAKjK,MAAM,KACxBmnB,EAAOD,EAAW7iB,MAExB,IAAK,IAAIuM,EAAI,EAAGA,EAAIsW,EAAW1mB,OAAQoQ,IACjChJ,EAAQsf,EAAWtW,MACvBhJ,EAAQsf,EAAWtW,IAAM,CAAC,GAE3BhJ,EAAUA,EAAQsf,EAAWtW,IAG9B,OADAhJ,EAAQuf,GAAQzkB,EACTA,CAAK,EHiNP0kB,CAAIllB,QAITmlB,YAAaC,EAAAA,GAIbC,UAAS,KACTC,SIzPuBC,IAAevlB,OAAOma,SAAWoL,CAAS,EJ0PjElD,OInPqBA,KAAQriB,OAAOma,SAASkI,QAAQ,EJoPrD1e,aAAc6hB,IAIdC,OAAM,KAONC,UAAWA,CAACC,EAASC,KACblmB,EAAAA,EAAAA,IAAeimB,EAAS,CAAC,EAAG,CAClCE,WAAYD,GAAW,IACnB,IAKNE,aAAcC,EAAAA,GACdC,iBTrQ+BL,IACxBM,EAAAA,EAAAA,MAAmB,eAAiBN,ES8Q3CtF,QAAOA,IGzRW3a,QH6RnBwgB,EAAAA,EAAAA,IAAU,qBAAqBtU,IAC9BxS,GAAGuE,aAAeiO,EAAEgE,MAGpB7Y,GAAQgK,KAAK,0BAA2B6K,EAAEgE,MAAM,IKtSjD,gBCAA,MAAMA,GAAQ,eACRuQ,GAAgB,IAAIC,OAAO,IAAMxQ,GAAQ,aAAc,MACvDyQ,GAAe,IAAID,OAAO,IAAMxQ,GAAQ,KAAM,MAEpD,SAAS0Q,GAAiB9B,EAAY1mB,GACrC,IAEC,MAAO,CAAC4mB,mBAAmBF,EAAWzmB,KAAK,KAC5C,CAAE,MAEF,CAEA,GAA0B,IAAtBymB,EAAWlmB,OACd,OAAOkmB,EAGR1mB,EAAQA,GAAS,EAGjB,MAAMugB,EAAOmG,EAAWrb,MAAM,EAAGrL,GAC3ByoB,EAAQ/B,EAAWrb,MAAMrL,GAE/B,OAAO0oB,MAAMjhB,UAAUkhB,OAAOxpB,KAAK,GAAIqpB,GAAiBjI,GAAOiI,GAAiBC,GACjF,CAEA,SAASG,GAAOC,GACf,IACC,OAAOjC,mBAAmBiC,EAC3B,CAAE,MACD,IAAIC,EAASD,EAAMhK,MAAMwJ,KAAkB,GAE3C,IAAK,IAAIzX,EAAI,EAAGA,EAAIkY,EAAOtoB,OAAQoQ,IAGlCkY,GAFAD,EAAQL,GAAiBM,EAAQlY,GAAG3Q,KAAK,KAE1B4e,MAAMwJ,KAAkB,GAGxC,OAAOQ,CACR,CACD,CCvCe,SAASE,GAAavK,EAAQwK,GAC5C,GAAwB,iBAAXxK,GAA4C,iBAAdwK,EAC1C,MAAM,IAAIC,UAAU,iDAGrB,GAAe,KAAXzK,GAA+B,KAAdwK,EACpB,MAAO,GAGR,MAAME,EAAiB1K,EAAOta,QAAQ8kB,GAEtC,OAAwB,IAApBE,EACI,GAGD,CACN1K,EAAOnT,MAAM,EAAG6d,GAChB1K,EAAOnT,MAAM6d,EAAiBF,EAAUxoB,QAE1C,CCnBO,SAAS2oB,GAAYC,EAAQC,GACnC,MAAM/lB,EAAS,CAAC,EAEhB,GAAIolB,MAAMY,QAAQD,GACjB,IAAK,MAAM9mB,KAAO8mB,EAAW,CAC5B,MAAME,EAAalkB,OAAOmkB,yBAAyBJ,EAAQ7mB,GACvDgnB,GAAYE,YACfpkB,OAAOqkB,eAAepmB,EAAQf,EAAKgnB,EAErC,MAGA,IAAK,MAAMhnB,KAAOonB,QAAQC,QAAQR,GAAS,CAC1C,MAAMG,EAAalkB,OAAOmkB,yBAAyBJ,EAAQ7mB,GACvDgnB,EAAWE,YAEVJ,EAAU9mB,EADA6mB,EAAO7mB,GACK6mB,IACzB/jB,OAAOqkB,eAAepmB,EAAQf,EAAKgnB,EAGtC,CAGD,OAAOjmB,CACR,CCpBA,MAAMumB,GAAoBnnB,GAASA,QAG7BonB,GAAkBtL,GAAUhG,mBAAmBgG,GAAQuL,WAAW,YAAY7W,GAAK,IAAIA,EAAE8W,WAAW,GAAGjqB,SAAS,IAAI2B,kBAEpHuoB,GAA2BC,OAAO,4BA8OxC,SAASC,GAA6BznB,GACrC,GAAqB,iBAAVA,GAAuC,IAAjBA,EAAMlC,OACtC,MAAM,IAAIyoB,UAAU,uDAEtB,CAEA,SAASmB,GAAO1nB,EAAOpD,GACtB,OAAIA,EAAQ8qB,OACJ9qB,EAAQ+qB,OAASP,GAAgBpnB,GAAS8V,mBAAmB9V,GAG9DA,CACR,CAEA,SAAS,GAAOA,EAAOpD,GACtB,OAAIA,EAAQspB,OHzLE,SAA4B0B,GAC1C,GAA0B,iBAAfA,EACV,MAAM,IAAIrB,UAAU,6DAA+DqB,EAAa,KAGjG,IAEC,OAAO1D,mBAAmB0D,EAC3B,CAAE,MAED,OA9CF,SAAkCzB,GAEjC,MAAM0B,EAAa,CAClB,SAAU,KACV,SAAU,MAGX,IAAI1L,EAAQ0J,GAAaiC,KAAK3B,GAC9B,KAAOhK,GAAO,CACb,IAEC0L,EAAW1L,EAAM,IAAM+H,mBAAmB/H,EAAM,GACjD,CAAE,MACD,MAAMvb,EAASslB,GAAO/J,EAAM,IAExBvb,IAAWub,EAAM,KACpB0L,EAAW1L,EAAM,IAAMvb,EAEzB,CAEAub,EAAQ0J,GAAaiC,KAAK3B,EAC3B,CAGA0B,EAAW,OAAS,IAEpB,MAAME,EAAUplB,OAAOqlB,KAAKH,GAE5B,IAAK,MAAMhoB,KAAOkoB,EAEjB5B,EAAQA,EAAMpV,QAAQ,IAAI6U,OAAO/lB,EAAK,KAAMgoB,EAAWhoB,IAGxD,OAAOsmB,CACR,CAYS8B,CAAyBL,EACjC,CACD,CG8KS,CAAgB5nB,GAGjBA,CACR,CAEA,SAASkoB,GAAW/B,GACnB,OAAIH,MAAMY,QAAQT,GACVA,EAAMgC,OAGO,iBAAVhC,EACH+B,GAAWvlB,OAAOqlB,KAAK7B,IAC5BgC,MAAK,CAACtJ,EAAGvC,IAAM2C,OAAOJ,GAAKI,OAAO3C,KAClCzT,KAAIhJ,GAAOsmB,EAAMtmB,KAGbsmB,CACR,CAEA,SAASiC,GAAWjC,GACnB,MAAMkC,EAAYlC,EAAM3kB,QAAQ,KAKhC,OAJmB,IAAf6mB,IACHlC,EAAQA,EAAMxd,MAAM,EAAG0f,IAGjBlC,CACR,CAYA,SAASmC,GAAWtoB,EAAOpD,GAO1B,OANIA,EAAQ2rB,eAAiBtJ,OAAOuJ,MAAMvJ,OAAOjf,KAA6B,iBAAVA,GAAuC,KAAjBA,EAAMgc,OAC/Fhc,EAAQif,OAAOjf,IACLpD,EAAQ6rB,eAA2B,OAAVzoB,GAA2C,SAAxBA,EAAM+Z,eAAoD,UAAxB/Z,EAAM+Z,gBAC9F/Z,EAAgC,SAAxBA,EAAM+Z,eAGR/Z,CACR,CAEO,SAAS0oB,GAAQvC,GAEvB,MAAMwC,GADNxC,EAAQiC,GAAWjC,IACM3kB,QAAQ,KACjC,OAAoB,IAAhBmnB,EACI,GAGDxC,EAAMxd,MAAMggB,EAAa,EACjC,CAEO,SAAS,GAAMzN,EAAOte,GAW5B6qB,IAVA7qB,EAAU,CACTspB,QAAQ,EACRiC,MAAM,EACNS,YAAa,OACbC,qBAAsB,IACtBN,cAAc,EACdE,eAAe,KACZ7rB,IAGiCisB,sBAErC,MAAMC,EApMP,SAA8BlsB,GAC7B,IAAIgE,EAEJ,OAAQhE,EAAQgsB,aACf,IAAK,QACJ,MAAO,CAAC/oB,EAAKG,EAAO+oB,KACnBnoB,EAAS,YAAYknB,KAAKjoB,GAE1BA,EAAMA,EAAIkR,QAAQ,UAAW,IAExBnQ,QAKoB1E,IAArB6sB,EAAYlpB,KACfkpB,EAAYlpB,GAAO,CAAC,GAGrBkpB,EAAYlpB,GAAKe,EAAO,IAAMZ,GAR7B+oB,EAAYlpB,GAAOG,CAQe,EAIrC,IAAK,UACJ,MAAO,CAACH,EAAKG,EAAO+oB,KACnBnoB,EAAS,SAASknB,KAAKjoB,GACvBA,EAAMA,EAAIkR,QAAQ,OAAQ,IAErBnQ,OAKoB1E,IAArB6sB,EAAYlpB,GAKhBkpB,EAAYlpB,GAAO,IAAIkpB,EAAYlpB,GAAMG,GAJxC+oB,EAAYlpB,GAAO,CAACG,GALpB+oB,EAAYlpB,GAAOG,CAS2B,EAIjD,IAAK,uBACJ,MAAO,CAACH,EAAKG,EAAO+oB,KACnBnoB,EAAS,WAAWknB,KAAKjoB,GACzBA,EAAMA,EAAIkR,QAAQ,SAAU,IAEvBnQ,OAKoB1E,IAArB6sB,EAAYlpB,GAKhBkpB,EAAYlpB,GAAO,IAAIkpB,EAAYlpB,GAAMG,GAJxC+oB,EAAYlpB,GAAO,CAACG,GALpB+oB,EAAYlpB,GAAOG,CAS2B,EAIjD,IAAK,QACL,IAAK,YACJ,MAAO,CAACH,EAAKG,EAAO+oB,KACnB,MAAMnC,EAA2B,iBAAV5mB,GAAsBA,EAAMyL,SAAS7O,EAAQisB,sBAC9DG,EAAmC,iBAAVhpB,IAAuB4mB,GAAW,GAAO5mB,EAAOpD,GAAS6O,SAAS7O,EAAQisB,sBACzG7oB,EAAQgpB,EAAiB,GAAOhpB,EAAOpD,GAAWoD,EAClD,MAAMipB,EAAWrC,GAAWoC,EAAiBhpB,EAAM1C,MAAMV,EAAQisB,sBAAsBhgB,KAAIqgB,GAAQ,GAAOA,EAAMtsB,KAAuB,OAAVoD,EAAiBA,EAAQ,GAAOA,EAAOpD,GACpKmsB,EAAYlpB,GAAOopB,CAAQ,EAI7B,IAAK,oBACJ,MAAO,CAACppB,EAAKG,EAAO+oB,KACnB,MAAMnC,EAAU,SAASuC,KAAKtpB,GAG9B,GAFAA,EAAMA,EAAIkR,QAAQ,OAAQ,KAErB6V,EAEJ,YADAmC,EAAYlpB,GAAOG,EAAQ,GAAOA,EAAOpD,GAAWoD,GAIrD,MAAMopB,EAAuB,OAAVppB,EAChB,GACAA,EAAM1C,MAAMV,EAAQisB,sBAAsBhgB,KAAIqgB,GAAQ,GAAOA,EAAMtsB,UAE7CV,IAArB6sB,EAAYlpB,GAKhBkpB,EAAYlpB,GAAO,IAAIkpB,EAAYlpB,MAASupB,GAJ3CL,EAAYlpB,GAAOupB,CAImC,EAIzD,QACC,MAAO,CAACvpB,EAAKG,EAAO+oB,UACM7sB,IAArB6sB,EAAYlpB,GAKhBkpB,EAAYlpB,GAAO,IAAI,CAACkpB,EAAYlpB,IAAMwpB,OAAQrpB,GAJjD+oB,EAAYlpB,GAAOG,CAIoC,EAI5D,CA0FmBspB,CAAqB1sB,GAGjC2sB,EAAc5mB,OAAOrC,OAAO,MAElC,GAAqB,iBAAV4a,EACV,OAAOqO,EAKR,KAFArO,EAAQA,EAAMc,OAAOjL,QAAQ,SAAU,KAGtC,OAAOwY,EAGR,IAAK,MAAMC,KAAatO,EAAM5d,MAAM,KAAM,CACzC,GAAkB,KAAdksB,EACH,SAGD,MAAMC,EAAa7sB,EAAQspB,OAASsD,EAAUnC,WAAW,IAAK,KAAOmC,EAErE,IAAK3pB,EAAKG,GAASqmB,GAAaoD,EAAY,UAEhCvtB,IAAR2D,IACHA,EAAM4pB,GAKPzpB,OAAkB9D,IAAV8D,EAAsB,KAAQ,CAAC,QAAS,YAAa,qBAAqByL,SAAS7O,EAAQgsB,aAAe5oB,EAAQ,GAAOA,EAAOpD,GACxIksB,EAAU,GAAOjpB,EAAKjD,GAAUoD,EAAOupB,EACxC,CAEA,IAAK,MAAO1pB,EAAKG,KAAU2C,OAAOolB,QAAQwB,GACzC,GAAqB,iBAAVvpB,GAAgC,OAAVA,EAChC,IAAK,MAAO0pB,EAAMC,KAAWhnB,OAAOolB,QAAQ/nB,GAC3CA,EAAM0pB,GAAQpB,GAAWqB,EAAQ/sB,QAGlC2sB,EAAY1pB,GAAOyoB,GAAWtoB,EAAOpD,GAIvC,OAAqB,IAAjBA,EAAQurB,KACJoB,IAKiB,IAAjB3sB,EAAQurB,KAAgBxlB,OAAOqlB,KAAKuB,GAAapB,OAASxlB,OAAOqlB,KAAKuB,GAAapB,KAAKvrB,EAAQurB,OAAOyB,QAAO,CAAChpB,EAAQf,KAC9H,MAAMG,EAAQupB,EAAY1pB,GAE1B,OADAe,EAAOf,GAAOgqB,QAAQ7pB,IAA2B,iBAAVA,IAAuBgmB,MAAMY,QAAQ5mB,GAASkoB,GAAWloB,GAASA,EAClGY,CAAM,GACX+B,OAAOrC,OAAO,MAClB,CAEO,SAASuE,GAAU6hB,EAAQ9pB,GACjC,IAAK8pB,EACJ,MAAO,GAWRe,IARA7qB,EAAU,CACT8qB,QAAQ,EACRC,QAAQ,EACRiB,YAAa,OACbC,qBAAsB,OACnBjsB,IAGiCisB,sBAErC,MAAMiB,EAAejqB,GACnBjD,EAAQmtB,UAAY5C,GAAkBT,EAAO7mB,KAC1CjD,EAAQotB,iBAAmC,KAAhBtD,EAAO7mB,GAGjCipB,EAjZP,SAA+BlsB,GAC9B,OAAQA,EAAQgsB,aACf,IAAK,QACJ,OAAO/oB,GAAO,CAACe,EAAQZ,KACtB,MAAMiqB,EAAQrpB,EAAO9C,OAErB,YACW5B,IAAV8D,GACIpD,EAAQmtB,UAAsB,OAAV/pB,GACpBpD,EAAQotB,iBAA6B,KAAVhqB,EAExBY,EAGM,OAAVZ,EACI,IACHY,EAAQ,CAAC8mB,GAAO7nB,EAAKjD,GAAU,IAAKqtB,EAAO,KAAK1sB,KAAK,KAInD,IACHqD,EACH,CAAC8mB,GAAO7nB,EAAKjD,GAAU,IAAK8qB,GAAOuC,EAAOrtB,GAAU,KAAM8qB,GAAO1nB,EAAOpD,IAAUW,KAAK,IACvF,EAIH,IAAK,UACJ,OAAOsC,GAAO,CAACe,EAAQZ,SAEX9D,IAAV8D,GACIpD,EAAQmtB,UAAsB,OAAV/pB,GACpBpD,EAAQotB,iBAA6B,KAAVhqB,EAExBY,EAGM,OAAVZ,EACI,IACHY,EACH,CAAC8mB,GAAO7nB,EAAKjD,GAAU,MAAMW,KAAK,KAI7B,IACHqD,EACH,CAAC8mB,GAAO7nB,EAAKjD,GAAU,MAAO8qB,GAAO1nB,EAAOpD,IAAUW,KAAK,KAK9D,IAAK,uBACJ,OAAOsC,GAAO,CAACe,EAAQZ,SAEX9D,IAAV8D,GACIpD,EAAQmtB,UAAsB,OAAV/pB,GACpBpD,EAAQotB,iBAA6B,KAAVhqB,EAExBY,EAGM,OAAVZ,EACI,IACHY,EACH,CAAC8mB,GAAO7nB,EAAKjD,GAAU,UAAUW,KAAK,KAIjC,IACHqD,EACH,CAAC8mB,GAAO7nB,EAAKjD,GAAU,SAAU8qB,GAAO1nB,EAAOpD,IAAUW,KAAK,KAKjE,IAAK,QACL,IAAK,YACL,IAAK,oBAAqB,CACzB,MAAM2sB,EAA4C,sBAAxBttB,EAAQgsB,YAC/B,MACA,IAEH,OAAO/oB,GAAO,CAACe,EAAQZ,SAEX9D,IAAV8D,GACIpD,EAAQmtB,UAAsB,OAAV/pB,GACpBpD,EAAQotB,iBAA6B,KAAVhqB,EAExBY,GAIRZ,EAAkB,OAAVA,EAAiB,GAAKA,EAER,IAAlBY,EAAO9C,OACH,CAAC,CAAC4pB,GAAO7nB,EAAKjD,GAAUstB,EAAmBxC,GAAO1nB,EAAOpD,IAAUW,KAAK,KAGzE,CAAC,CAACqD,EAAQ8mB,GAAO1nB,EAAOpD,IAAUW,KAAKX,EAAQisB,uBAExD,CAEA,QACC,OAAOhpB,GAAO,CAACe,EAAQZ,SAEX9D,IAAV8D,GACIpD,EAAQmtB,UAAsB,OAAV/pB,GACpBpD,EAAQotB,iBAA6B,KAAVhqB,EAExBY,EAGM,OAAVZ,EACI,IACHY,EACH8mB,GAAO7nB,EAAKjD,IAIP,IACHgE,EACH,CAAC8mB,GAAO7nB,EAAKjD,GAAU,IAAK8qB,GAAO1nB,EAAOpD,IAAUW,KAAK,KAK9D,CAmRmB4sB,CAAsBvtB,GAElCwtB,EAAa,CAAC,EAEpB,IAAK,MAAOvqB,EAAKG,KAAU2C,OAAOolB,QAAQrB,GACpCoD,EAAajqB,KACjBuqB,EAAWvqB,GAAOG,GAIpB,MAAMgoB,EAAOrlB,OAAOqlB,KAAKoC,GAMzB,OAJqB,IAAjBxtB,EAAQurB,MACXH,EAAKG,KAAKvrB,EAAQurB,MAGZH,EAAKnf,KAAIhJ,IACf,MAAMG,EAAQ0mB,EAAO7mB,GAErB,YAAc3D,IAAV8D,EACI,GAGM,OAAVA,EACI0nB,GAAO7nB,EAAKjD,GAGhBopB,MAAMY,QAAQ5mB,GACI,IAAjBA,EAAMlC,QAAwC,sBAAxBlB,EAAQgsB,YAC1BlB,GAAO7nB,EAAKjD,GAAW,KAGxBoD,EACL4pB,OAAOd,EAAUjpB,GAAM,IACvBtC,KAAK,KAGDmqB,GAAO7nB,EAAKjD,GAAW,IAAM8qB,GAAO1nB,EAAOpD,EAAQ,IACxDwN,QAAOoG,GAAKA,EAAE1S,OAAS,IAAGP,KAAK,IACnC,CAEO,SAAS8sB,GAASprB,EAAKrC,GAC7BA,EAAU,CACTspB,QAAQ,KACLtpB,GAGJ,IAAK0tB,EAAM3P,GAAQ0L,GAAapnB,EAAK,KAMrC,YAJa/C,IAATouB,IACHA,EAAOrrB,GAGD,CACNA,IAAKqrB,GAAMhtB,MAAM,OAAO,IAAM,GAC9B4d,MAAO,GAAMwN,GAAQzpB,GAAMrC,MACvBA,GAAWA,EAAQ2tB,yBAA2B5P,EAAO,CAAC6P,mBAAoB,GAAO7P,EAAM/d,IAAY,CAAC,EAE1G,CAEO,SAAS6tB,GAAa/D,EAAQ9pB,GACpCA,EAAU,CACT8qB,QAAQ,EACRC,QAAQ,EACR,CAACJ,KAA2B,KACzB3qB,GAGJ,MAAMqC,EAAMmpB,GAAW1B,EAAOznB,KAAK3B,MAAM,KAAK,IAAM,GAQpD,IAAIymB,EAAclf,GALJ,IACV,GAHiB6jB,GAAQhC,EAAOznB,KAGZ,CAACkpB,MAAM,OAC3BzB,EAAOxL,OAGwBte,GACnCmnB,IAAgB,IAAIA,IAEpB,IAAIpJ,EAvML,SAAiB1b,GAChB,IAAI0b,EAAO,GACX,MAAM0N,EAAYppB,EAAIuC,QAAQ,KAK9B,OAJmB,IAAf6mB,IACH1N,EAAO1b,EAAI0J,MAAM0f,IAGX1N,CACR,CA+LY+P,CAAQhE,EAAOznB,KAC1B,GAAyC,iBAA9BynB,EAAO8D,mBAAiC,CAClD,MAAMG,EAA6B,IAAIpZ,IAAItS,GAC3C0rB,EAA2BhQ,KAAO+L,EAAO8D,mBACzC7P,EAAO/d,EAAQ2qB,IAA4BoD,EAA2BhQ,KAAO,IAAI+L,EAAO8D,oBACzF,CAEA,MAAO,GAAGvrB,IAAM8kB,IAAcpJ,GAC/B,CAEO,SAAS/O,GAAKua,EAAO/b,EAAQxN,GACnCA,EAAU,CACT2tB,yBAAyB,EACzB,CAAChD,KAA2B,KACzB3qB,GAGJ,MAAM,IAACqC,EAAG,MAAEic,EAAK,mBAAEsP,GAAsBH,GAASlE,EAAOvpB,GAEzD,OAAO6tB,GAAa,CACnBxrB,MACAic,MAAOuL,GAAYvL,EAAO9Q,GAC1BogB,sBACE5tB,EACJ,CAEO,SAASguB,GAAQzE,EAAO/b,EAAQxN,GAGtC,OAAOgP,GAAKua,EAFYH,MAAMY,QAAQxc,GAAUvK,IAAQuK,EAAOqB,SAAS5L,GAAO,CAACA,EAAKG,KAAWoK,EAAOvK,EAAKG,GAExEpD,EACrC,CCvgBA,WCFA,oDCKA,UAECiuB,SAAU,CACTC,wBAAAA,GACC,OAAOhvB,KAAKivB,KAAKjtB,QAAU,GAC5B,EACAktB,mBAAAA,GACC,GAAIlvB,KAAKgvB,yBACR,OAAO7sB,EAAE,OAAQ,+BAGnB,IChBF,eCwBA,MCxBuL,GDwBvL,CACAsJ,KAAA,cACAyc,WAAA,CACAiH,mBAAA,EACAC,SAAAA,GAAAA,GAEAnqB,MAAA,CACAf,MAAA,CACAjB,KAAAosB,OACAC,SAAAntB,EAAAA,EAAAA,IAAA,kBAEAotB,aAAA,CACAtsB,KAAAosB,OACAC,SAAAntB,EAAAA,EAAAA,IAAA,wBAEAqtB,QAAA,CACAvsB,KAAA8qB,QACA0B,UAAA,GAEAC,eAAA,CACAzsB,KAAA8qB,QACAuB,SAAA,+JElCIxuB,GAAU,CAAC,EAEfA,GAAQ6uB,kBAAoB,KAC5B7uB,GAAQ8uB,cAAgB,KAElB9uB,GAAQ+uB,OAAS,UAAc,KAAM,QAE3C/uB,GAAQgvB,OAAS,KACjBhvB,GAAQivB,mBAAqB,KAEhB,KAAI,KAASjvB,IAKJ,MAAW,KAAQkvB,QAAS,KAAQA,uBCP1D,UAXgB,QACd,IJTW,WAAkB,IAAIC,EAAIjwB,KAAKkwB,EAAGD,EAAIE,MAAMD,GAAG,OAAOA,EAAG,WAAW,CAAC9pB,MAAM,CAAC,KAAO,UAAU,cAAc,SAAS,MAAO,GAAMsS,GAAG,CAAC,MAAQ,SAAS0X,GAAQ,OAAOH,EAAII,MAAM,QAAQ,GAAGC,YAAYL,EAAIM,GAAG,CAAC,CAACxsB,IAAI,OAAOyI,GAAG,WAAW,MAAO,CAAEyjB,EAAIT,QAASU,EAAG,MAAM,CAACM,YAAY,iDAAiDN,EAAG,aAAa,CAACM,YAAY,yBAAyB,EAAEC,OAAM,MAAS,CAACR,EAAIS,GAAG,OAAOT,EAAIU,GAAIV,EAAIT,QAAsBS,EAAIV,aAAhBU,EAAI/rB,OAA0B,SAC5d,GACsB,IIUpB,EACA,KACA,WACA,MAI8B,QCnBqJ,GCgHrL,CACAuH,KAAA,YAEAyc,WAAA,CACA0I,YAAA,GACAC,gBAAA,KACAC,YAAA,KACAC,WAAAA,GAAAA,GAGAC,OAAA,CAAAC,IAEAhsB,MAAA,CACAisB,SAAA,CACAjuB,KAAAosB,OACAC,QAAA,IAEA6B,YAAA,CACAluB,KAAA,CAAAosB,OAAAtB,SACAuB,SAAA,GAEA8B,OAAA,CACAnuB,KAAAinB,MACAoF,QAAAA,IAAA,IAEA+B,SAAA,CACApuB,KAAAinB,MACAoF,QAAAA,IAAA,IAEAgC,cAAA,CACAruB,KAAAkgB,OACAmM,QAAA,GAEAiC,oBAAA,CACAtuB,KAAA8qB,QACAuB,SAAA,GAEAkC,YAAA,CACAvuB,KAAA8qB,QACAuB,SAAA,GAEAmC,YAAA,CACAxuB,KAAAinB,MACAoF,QAAAA,IACA,KAKAoC,KAAAA,GAAA,IAAAC,EAEA,OACAxvB,EAAA,KAIAyvB,cAAAzvB,EAAAA,EAAAA,IAAA,kCAAA0vB,YAAA/uB,GAAAua,MAAA5R,WAAArL,EAAA,CAAA0xB,UAAA,EAAAC,QAAA,IAEAC,cAAAC,EAAAA,GAAAA,GAAA,2BACA5qB,aAAA3D,OAAAZ,GAAAuE,aACA6qB,SAAA,QAAAP,EAAA,IAAAQ,KAAAC,sBAAA,IAAAT,GAAA,QAAAA,EAAAA,EAAAU,yBAAA,IAAAV,OAAA,EAAAA,EAAAW,SACAC,iBAAA,IAAA7P,MAAA8P,oBAAA,GAEA,EAEAnvB,KAAAA,KACA,CACAmsB,SAAA,EACAP,KAAA,GACAvjB,SAAA,KAIAqjB,SAAA,CAIA0D,gBAAAA,GAEA,YAAAT,cAAA,EACA,QAGAU,EAAAA,GAAAA,UAAA,KAAAC,gBAAA,SAAAX,aACA,EAEAY,OAAAA,GACA,YAAAC,iBAAA,KAAAC,cACA,KAAAxB,cAAA,GACA,EACAyB,UAAAA,GACA,YAAAF,iBACA1wB,EAAAA,EAAAA,IAAA,mCAEA,KAAA2wB,cACA3wB,EAAAA,EAAAA,IAAA,mCAEA,KAAAmvB,cAAA,KACAnvB,EAAAA,EAAAA,IAAA,uIADA,CAIA,EACA6wB,gBAAAA,GACA,gBAAA5B,OAAA1rB,QAAA,mBACA,EACAutB,eAAAA,GACA,gBAAA7B,OAAA1rB,QAAA,kBACA,EACAwtB,iBAAAA,GACA,gBAAA9B,OAAA1rB,QAAA,oBACA,EACAmtB,eAAAA,GACA,gBAAAzB,OAAA1rB,QAAA,kBACA,EACAotB,YAAAA,GACA,gBAAA1B,OAAA1rB,QAAA,eACA,EACAytB,YAAAA,KACApK,EAAAA,EAAAA,IAAA,2BAEAqK,eAAAA,KACA5K,EAAAA,EAAAA,IAAA,SAEA6K,YAAAA,GACA,YAAA5B,YAAA,KAAAA,YAAA6B,OAAA7T,GAAA,MAAAA,IAAA,CACA,EACA8T,SAAAA,GACA,YAAAF,cACAlxB,EAAAA,EAAAA,IAAA,4CAEAA,EAAAA,EAAAA,IAAA,iCACA,GAGAqxB,MAAA,CAIA9nB,QAAAA,GACA,KAAA+mB,kBACA,GAGAgB,OAAAA,GACA,UAAAvC,SACA,KAAAwC,MAAAzE,KAAAyE,MAAAC,WAAAD,MAAArJ,MAAAuJ,SAEA,KAAA3E,KAAA,KAAAiC,SACA,KAAAwC,MAAAhoB,SAAAgoB,MAAAC,WAAAD,MAAArJ,MAAAuJ,QAEA,EAEAC,QAAA,CAKAlB,eAAAA,GACA,KAAAjnB,SAAA,EACA,EAEAooB,cAAAA,GACA,KAAAzD,MAAA,uBAAApB,KACA,EACA8E,MAAAA,GACA,KAAAvE,SAAA,EACA,KAAAa,MAAA,SACA,oBC5QI,GAAU,CAAC,EAEf,GAAQV,kBAAoB,KAC5B,GAAQC,cAAgB,KAElB,GAAQC,OAAS,UAAc,KAAM,QAE3C,GAAQC,OAAS,KACjB,GAAQC,mBAAqB,KAEhB,KAAI,KAAS,IAKJ,MAAW,KAAQC,QAAS,KAAQA,OCP1D,UAXgB,QACd,IVTW,WAAkB,IAAIC,EAAIjwB,KAAKkwB,EAAGD,EAAIE,MAAMD,GAAG,OAAOA,EAAG,OAAO,CAAC8D,IAAI,YAAYxD,YAAY,aAAapqB,MAAM,CAAC,OAAS,OAAO,KAAO,QAAQ,OAAS6pB,EAAImD,gBAAgB1a,GAAG,CAAC,OAASuX,EAAI8D,SAAS,CAAC7D,EAAG,WAAW,CAACM,YAAY,uBAAuBpqB,MAAM,CAAC,kBAAkB,KAAK,CAAE6pB,EAAI+C,iBAAkB9C,EAAG,aAAa,CAAC9pB,MAAM,CAAC,MAAQ6pB,EAAI9tB,EAAE,OAAQ,sCAAsC,KAAO,YAAY,CAAC8tB,EAAIS,GAAG,WAAWT,EAAIU,GAAGV,EAAI9tB,EAAE,OAAQ,uCAAuC,YAAY8tB,EAAIgE,KAAKhE,EAAIS,GAAG,KAAMT,EAAIgD,gBAAiB/C,EAAG,aAAa,CAAC9pB,MAAM,CAAC,QAAU6pB,EAAI9tB,EAAE,OAAQ,mBAAmB,KAAO,UAAU,CAAC8tB,EAAIS,GAAG,WAAWT,EAAIU,GAAGV,EAAI9tB,EAAE,OAAQ,sBAAsB,YAAY8tB,EAAIgE,KAAKhE,EAAIS,GAAG,KAAMT,EAAIoB,SAASrvB,OAAS,EAAGkuB,EAAG,aAAaD,EAAIiE,GAAIjE,EAAIoB,UAAU,SAAS9mB,EAAQ4jB,GAAO,OAAO+B,EAAG,MAAM,CAACnsB,IAAIoqB,GAAO,CAAC8B,EAAIS,GAAG,aAAaT,EAAIU,GAAGpmB,IAAU2lB,EAAG,OAAO,IAAG,GAAGD,EAAIgE,KAAKhE,EAAIS,GAAG,KAAMT,EAAIiD,kBAAmBhD,EAAG,aAAa,CAACiE,MAAMlE,EAAI9tB,EAAE,OAAQ,+BAA+BiE,MAAM,CAAC,KAAO,YAAY,CAAC6pB,EAAIS,GAAG,WAAWT,EAAIU,GAAGV,EAAI9tB,EAAE,OAAQ,oDAAoD,YAAY8tB,EAAIgE,KAAKhE,EAAIS,GAAG,KAAKR,EAAG,MAAM,CAACM,YAAY,SAASpqB,MAAM,CAAC,GAAK,YAAY,CAAC8pB,EAAG,MAAM,CAACM,YAAY,gBAAgBpqB,MAAM,CAAC,IAAM,GAAG,IAAM6pB,EAAIkD,eAAelD,EAAIS,GAAG,KAAKR,EAAG,OAAO,CAAC9pB,MAAM,CAAC,GAAK,iBAAiB6pB,EAAIS,GAAG,KAAKR,EAAG,MAAM,CAACkE,YAAY,CAAC,MAAQ,YAAYnE,EAAIS,GAAG,KAAKR,EAAG,KAAK,CAACM,YAAY,uBAAuBpqB,MAAM,CAAC,2BAA2B,KAAK,CAAC6pB,EAAIS,GAAG,WAAWT,EAAIU,GAAGV,EAAI2B,cAAc,YAAY3B,EAAIS,GAAG,KAAKR,EAAG,cAAc,CAAC8D,IAAI,OAAOG,MAAM,CAACE,MAAOpE,EAAI4C,iBAAiBzsB,MAAM,CAAC,GAAK,OAAO,MAAQ6pB,EAAIsD,UAAU,KAAO,OAAO,UAAY,IAAI,MAAQtD,EAAIhB,KAAK,eAAiB,OAAO,eAAgB,EAAM,aAAegB,EAAIsB,oBAAsB,WAAa,MAAM,SAAW,GAAG,MAAQtB,EAAIjB,yBAAyB,cAAciB,EAAIf,oBAAoB,6BAA6B,IAAIxW,GAAG,CAAC,eAAe,SAAS0X,GAAQH,EAAIhB,KAAKmB,CAAM,EAAE,OAASH,EAAI6D,kBAAkB7D,EAAIS,GAAG,KAAKR,EAAG,kBAAkB,CAAC8D,IAAI,WAAWG,MAAM,CAACE,MAAOpE,EAAI4C,iBAAiBzsB,MAAM,CAAC,GAAK,WAAW,KAAO,WAAW,MAAQ6pB,EAAIvkB,SAAS,eAAgB,EAAM,eAAiB,OAAO,aAAeukB,EAAIsB,oBAAsB,mBAAqB,MAAM,MAAQtB,EAAI9tB,EAAE,OAAQ,YAAY,cAAc8tB,EAAI8C,WAAW,MAAQ9C,EAAI2C,QAAQ,iCAAiC,GAAG,SAAW,IAAIla,GAAG,CAAC,eAAe,SAAS0X,GAAQH,EAAIvkB,SAAS0kB,CAAM,KAAKH,EAAIS,GAAG,KAAKR,EAAG,cAAc,CAAC9pB,MAAM,CAAC,yBAAyB,GAAG,QAAU6pB,EAAIT,WAAWS,EAAIS,GAAG,KAAMT,EAAIkB,YAAajB,EAAG,QAAQ,CAAC9pB,MAAM,CAAC,KAAO,SAAS,KAAO,gBAAgBkuB,SAAS,CAAC,MAAQrE,EAAIkB,eAAelB,EAAIgE,KAAKhE,EAAIS,GAAG,KAAKR,EAAG,QAAQ,CAAC9pB,MAAM,CAAC,KAAO,SAAS,KAAO,YAAYkuB,SAAS,CAAC,MAAQrE,EAAIiC,YAAYjC,EAAIS,GAAG,KAAKR,EAAG,QAAQ,CAAC9pB,MAAM,CAAC,KAAO,SAAS,KAAO,mBAAmBkuB,SAAS,CAAC,MAAQrE,EAAIsC,kBAAkBtC,EAAIS,GAAG,KAAKR,EAAG,QAAQ,CAAC9pB,MAAM,CAAC,KAAO,SAAS,KAAO,gBAAgBkuB,SAAS,CAAC,MAAQrE,EAAI5oB,gBAAgB4oB,EAAIS,GAAG,KAAMT,EAAIuB,YAAatB,EAAG,QAAQ,CAAC9pB,MAAM,CAAC,KAAO,SAAS,KAAO,SAAS,MAAQ,OAAO6pB,EAAIgE,MAAM,IACrkG,GACsB,IUUpB,EACA,KACA,WACA,MAI8B,QClBhC,SAASM,GAAwBC,GAC7B,MAAMrU,EAAQ,IAAIsU,WAAWD,GAC7B,IAAIE,EAAM,GACV,IAAK,MAAMC,KAAYxU,EACnBuU,GAAOrF,OAAOuF,aAAaD,GAG/B,OADqBE,KAAKH,GACNzf,QAAQ,MAAO,KAAKA,QAAQ,MAAO,KAAKA,QAAQ,KAAM,GAC9E,CAEA,SAAS6f,GAAwBC,GAC7B,MAAMC,EAASD,EAAgB9f,QAAQ,KAAM,KAAKA,QAAQ,KAAM,KAC1DggB,GAAa,EAAKD,EAAOhzB,OAAS,GAAM,EACxCkzB,EAASF,EAAOG,OAAOH,EAAOhzB,OAASizB,EAAW,KAClDG,EAASC,KAAKH,GACdV,EAAS,IAAIc,YAAYF,EAAOpzB,QAChCme,EAAQ,IAAIsU,WAAWD,GAC7B,IAAK,IAAIpiB,EAAI,EAAGA,EAAIgjB,EAAOpzB,OAAQoQ,IAC/B+N,EAAM/N,GAAKgjB,EAAO5J,WAAWpZ,GAEjC,OAAOoiB,CACX,CAEA,SAASe,KACL,YAAwCn1B,IAAhCsD,QAAQ8xB,qBAC0B,mBAA/B9xB,OAAO8xB,mBACtB,CAEA,SAASC,GAAgC1K,GACrC,MAAM,GAAExlB,GAAOwlB,EACf,MAAO,IACAA,EACHxlB,GAAIuvB,GAAwBvvB,GAC5BmwB,WAAY3K,EAAW2K,WAE/B,UAOA,MAAMC,WAAsB/sB,MACxB,WAAAgtB,EAAY,QAAErrB,EAAO,KAAEsrB,EAAI,MAAEC,EAAK,KAAErqB,IAChCsqB,MAAMxrB,EAAS,CAAEurB,UACjB91B,KAAKyL,KAAOA,GAAQqqB,EAAMrqB,KAC1BzL,KAAK61B,KAAOA,CAChB,EAsHJ,MAAMG,GAAuB,IApB7B,MACI,oBAAAC,GACI,GAAIj2B,KAAK8Q,WAAY,CACjB,MAAMolB,EAAa,IAAIttB,MAAM,qDAC7BstB,EAAWzqB,KAAO,aAClBzL,KAAK8Q,WAAWqlB,MAAMD,EAC1B,CACA,MAAME,EAAgB,IAAIC,gBAE1B,OADAr2B,KAAK8Q,WAAaslB,EACXA,EAAcE,MACzB,CACA,cAAAC,GACI,GAAIv2B,KAAK8Q,WAAY,CACjB,MAAMolB,EAAa,IAAIttB,MAAM,kDAC7BstB,EAAWzqB,KAAO,aAClBzL,KAAK8Q,WAAWqlB,MAAMD,GACtBl2B,KAAK8Q,gBAAa1Q,CACtB,CACJ,GAIEo2B,GAAc,CAAC,iBAAkB,YACvC,SAASC,GAA0BC,GAC/B,GAAKA,KAGDF,GAAY9wB,QAAQgxB,GAAc,GAGtC,OAAOA,CACX,yCCzKA,MAYA,GAXc,QADIzH,IAYO/J,EAAAA,GAAAA,QAVhByR,EAAAA,GAAAA,MACLC,OAAO,QACPvrB,SAEIsrB,EAAAA,GAAAA,MACLC,OAAO,QACPC,OAAO5H,GAAK9J,KACZ9Z,QATe4jB,OCAX,MAAM6H,WAA2BluB,OCYxC,MCpB8G,GDoB9G,CACE6C,KAAM,kBACNsrB,MAAO,CAAC,SACR9xB,MAAO,CACLoF,MAAO,CACLpH,KAAMosB,QAER2H,UAAW,CACT/zB,KAAMosB,OACNC,QAAS,gBAEXjb,KAAM,CACJpR,KAAMkgB,OACNmM,QAAS,MEff,IAXgB,QACd,ICRW,WAAkB,IAAIW,EAAIjwB,KAAKkwB,EAAGD,EAAIE,MAAMD,GAAG,OAAOA,EAAG,OAAOD,EAAIgH,GAAG,CAACzG,YAAY,wCAAwCpqB,MAAM,CAAC,eAAc6pB,EAAI5lB,OAAQ,KAAY,aAAa4lB,EAAI5lB,MAAM,KAAO,OAAOqO,GAAG,CAAC,MAAQ,SAAS0X,GAAQ,OAAOH,EAAII,MAAM,QAASD,EAAO,IAAI,OAAOH,EAAIiH,QAAO,GAAO,CAAChH,EAAG,MAAM,CAACM,YAAY,4BAA4BpqB,MAAM,CAAC,KAAO6pB,EAAI+G,UAAU,MAAQ/G,EAAI5b,KAAK,OAAS4b,EAAI5b,KAAK,QAAU,cAAc,CAAC6b,EAAG,OAAO,CAAC9pB,MAAM,CAAC,EAAI,6GAA6G,CAAE6pB,EAAS,MAAEC,EAAG,QAAQ,CAACD,EAAIS,GAAGT,EAAIU,GAAGV,EAAI5lB,UAAU4lB,EAAIgE,UAC7nB,GACsB,IDSpB,EACA,KACA,KACA,MAI8B,QElB2E,GCoB3G,CACExoB,KAAM,eACNsrB,MAAO,CAAC,SACR9xB,MAAO,CACLoF,MAAO,CACLpH,KAAMosB,QAER2H,UAAW,CACT/zB,KAAMosB,OACNC,QAAS,gBAEXjb,KAAM,CACJpR,KAAMkgB,OACNmM,QAAS,MCff,IAXgB,QACd,ICRW,WAAkB,IAAIW,EAAIjwB,KAAKkwB,EAAGD,EAAIE,MAAMD,GAAG,OAAOA,EAAG,OAAOD,EAAIgH,GAAG,CAACzG,YAAY,sCAAsCpqB,MAAM,CAAC,eAAc6pB,EAAI5lB,OAAQ,KAAY,aAAa4lB,EAAI5lB,MAAM,KAAO,OAAOqO,GAAG,CAAC,MAAQ,SAAS0X,GAAQ,OAAOH,EAAII,MAAM,QAASD,EAAO,IAAI,OAAOH,EAAIiH,QAAO,GAAO,CAAChH,EAAG,MAAM,CAACM,YAAY,4BAA4BpqB,MAAM,CAAC,KAAO6pB,EAAI+G,UAAU,MAAQ/G,EAAI5b,KAAK,OAAS4b,EAAI5b,KAAK,QAAU,cAAc,CAAC6b,EAAG,OAAO,CAAC9pB,MAAM,CAAC,EAAI,kOAAkO,CAAE6pB,EAAS,MAAEC,EAAG,QAAQ,CAACD,EAAIS,GAAGT,EAAIU,GAAGV,EAAI5lB,UAAU4lB,EAAIgE,UAChvB,GACsB,IDSpB,EACA,KACA,KACA,MAI8B,wBEoChC,MCtDiM,GDsDjM,CACAxoB,KAAA,wBACAyc,WAAA,CACA0I,YAAA,GACAuG,gBAAA,GACAC,aAAA,GACAtG,YAAAA,GAAAA,GAEA7rB,MAAA,CACAisB,SAAA,CACAjuB,KAAAosB,OACAC,QAAA,IAEA6B,YAAA,CACAluB,KAAA,CAAAosB,OAAAtB,SACAuB,SAAA,GAEAiC,oBAAA,CACAtuB,KAAA8qB,QACAuB,SAAA,GAEA+H,QAAA,CACAp0B,KAAA8qB,QACAuB,SAAA,GAEAgI,YAAA,CACAr0B,KAAA8qB,QACAuB,SAAA,IAIAoC,MAAAA,KACA,CACA6F,iBAAAhC,OAIAlyB,IAAAA,GACA,OACA4rB,KAAA,KAAAiC,SACA1B,SAAA,EACAgI,kBAAA,EAEA,EACA3D,QAAA,CACA,kBAAA4D,GAEA,QAAA/D,MAAAgE,UAAAC,gBAAA,CAIAl3B,GAAA2gB,MAAA,gCAEA,IACA,MAAA9Y,QT5FOsvB,eAAmCC,GACtC,MAAM10B,GAAMqlB,EAAAA,EAAAA,IAAY,0BAClB,KAAEnlB,SAAey0B,GAAAA,EAAMC,KAAK50B,EAAK,CAAE00B,cACzC,IAAKx0B,EAAK20B,kBAAqD,IAAjC30B,EAAK20B,iBAAiBh2B,OAEhD,MADAi2B,GAAOv3B,MAAM,8CACP,IAAIo2B,GAEd,aFwSJc,eAAmCM,EAAaC,GAAqB,GACjE,IAAK5C,KACD,MAAM,IAAI3sB,MAAM,6CAEpB,IAAIovB,EACyC,IAAzCE,EAAYF,kBAAkBh2B,SAC9Bg2B,EAAmBE,EAAYF,kBAAkBjrB,IAAI0oB,KAEzD,MAAM2C,EAAY,IACXF,EACHG,UAAWvD,GAAwBoD,EAAYG,WAC/CL,oBAEEl3B,EAAU,CAAC,EACjB,GAAIq3B,EAAoB,CACpB,UA3ER,WACI,IAAK5C,KACD,OAAO,IAAI5pB,SAASC,GAAYA,GAAQ,KAE5C,MAAM0sB,EAA4B50B,OAC7B8xB,oBACL,YAAkEp1B,IAA9Dk4B,EAA0BC,gCACnB,IAAI5sB,SAASC,GAAYA,GAAQ,KAErC0sB,EAA0BC,iCACrC,CAiEoBC,GACR,MAAM5vB,MAAM,8CAGhB,GADuBW,SAAS6U,iBAAiB,mCAC9Bpc,OAAS,EACxB,MAAM4G,MAAM,qGAEhB9H,EAAQ23B,UAAY,cACpBL,EAAUJ,iBAAmB,EACjC,CAGA,IAAIU,EAFJ53B,EAAQs3B,UAAYA,EACpBt3B,EAAQw1B,OAASN,GAAqBC,uBAEtC,IACIyC,QAAoB3a,UAAU4a,YAAYlQ,IAAI3nB,EAClD,CACA,MAAO83B,GACH,MAhFR,UAAqC,MAAEl4B,EAAK,QAAEI,IAC1C,MAAM,UAAEs3B,GAAct3B,EACtB,IAAKs3B,EACD,MAAMxvB,MAAM,mDAEhB,GAAmB,eAAflI,EAAM+K,MACN,GAAI3K,EAAQw1B,kBAAkBuC,YAC1B,OAAO,IAAIlD,GAAc,CACrBprB,QAAS,mDACTsrB,KAAM,yBACNC,MAAOp1B,QAId,IAAmB,oBAAfA,EAAM+K,KACX,OAAO,IAAIkqB,GAAc,CACrBprB,QAAS7J,EAAM6J,QACfsrB,KAAM,uCACNC,MAAOp1B,IAGV,GAAmB,kBAAfA,EAAM+K,KAA0B,CACrC,MAAMqtB,EAAkBp1B,OAAOma,SAAS6J,SACxC,GA/PiB,eADFA,EAgQIoR,KA9PnB,0CAA0CzL,KAAK3F,GA+P3C,OAAO,IAAIiO,GAAc,CACrBprB,QAAS,GAAG7G,OAAOma,SAAS6J,gCAC5BmO,KAAM,uBACNC,MAAOp1B,IAGV,GAAI03B,EAAUW,OAASD,EACxB,OAAO,IAAInD,GAAc,CACrBprB,QAAS,cAAc6tB,EAAUW,mCACjClD,KAAM,sBACNC,MAAOp1B,GAGnB,MACK,GAAmB,iBAAfA,EAAM+K,KACX,OAAO,IAAIkqB,GAAc,CACrBprB,QAAS,+GACTsrB,KAAM,oCACNC,MAAOp1B,GAEf,CArRJ,IAAuBgnB,EAsRnB,OAAOhnB,CACX,CAkCcs4B,CAA4B,CAAEt4B,MAAOk4B,EAAK93B,WACpD,CACA,IAAK43B,EACD,MAAM,IAAI9vB,MAAM,oCAEpB,MAAM,GAAErD,EAAE,MAAE0zB,EAAK,SAAEzxB,EAAQ,KAAEvE,GAASy1B,EACtC,IAAIQ,EAIJ,OAHI1xB,EAAS0xB,aACTA,EAAa3E,GAAwB/sB,EAAS0xB,aAE3C,CACH3zB,KACA0zB,MAAO1E,GAAwB0E,GAC/BzxB,SAAU,CACN2xB,kBAAmB5E,GAAwB/sB,EAAS2xB,mBACpDC,eAAgB7E,GAAwB/sB,EAAS4xB,gBACjDC,UAAW9E,GAAwB/sB,EAAS6xB,WAC5CH,cAEJj2B,OACAq2B,uBAAwBZ,EAAWa,4BACnCC,wBAAyB/C,GAA0BiC,EAAWc,yBAEtE,CE/ViBC,CAA4Bp2B,EAC7C,CSoFAq2B,CAAA,KAAAzK,YACA,KAAA0K,uBAAArxB,EACA,OAAA5H,GACA,GAAAA,aAAAo2B,mBAEA,YADA,KAAAU,kBAAA,GAGAS,GAAA7W,MAAA1gB,EACA,CAbA,CAcA,EACAk5B,cAAAA,CAAA1I,GACA,KAAAjC,KAAAiC,EACA,KAAAb,MAAA,uBAAApB,KACA,EACA0K,sBAAAA,CAAAtB,GACA,MAAAlH,EAAA,KAAAA,YAEA,OThGOyG,eAAoCiC,GACvC,MAAM12B,GAAMqlB,EAAAA,EAAAA,IAAY,2BAClB,KAAEnlB,SAAey0B,GAAAA,EAAMC,KAAK50B,EAAK,CAAEE,KAAMyF,KAAKC,UAAU8wB,KAC9D,OAAOx2B,CACX,CS4FAy2B,CAAAzB,GACA5xB,MAAAszB,IAAA,uBAAAC,GAAAD,EACAt5B,GAAA2gB,MAAA,yBAEA1d,OAAAma,SAAA3Y,KAAAisB,GAAA6I,CAAA,IAEAC,OAAAv5B,IACAD,GAAA2gB,MAAA,4CACA3gB,GAAA2gB,MAAA1gB,EAAA,GAEA,EACAqzB,MAAAA,GACA,oBE9HI,GAAU,CAAC,EAEf,GAAQpE,kBAAoB,KAC5B,GAAQC,cAAgB,KAElB,GAAQC,OAAS,UAAc,KAAM,QAE3C,GAAQC,OAAS,KACjB,GAAQC,mBAAqB,KAEhB,KAAI,KAAS,IAKJ,MAAW,KAAQC,QAAS,KAAQA,OCP1D,UAXgB,QACd,ICTW,WAAkB,IAAIC,EAAIjwB,KAAKkwB,EAAGD,EAAIE,MAAMD,GAAG,OAASD,EAAIoH,SAAWpH,EAAIqH,cAAgBrH,EAAIsH,iBAAkBrH,EAAG,OAAO,CAAC8D,IAAI,YAAY5tB,MAAM,CAAC,OAAS,OAAO,KAAO,SAASsS,GAAG,CAAC,OAAS,SAAS0X,GAAgC,OAAxBA,EAAOvJ,iBAAwBoJ,EAAI8D,OAAO1Y,MAAM,KAAMxQ,UAAU,IAAI,CAACqlB,EAAG,KAAK,CAACD,EAAIS,GAAGT,EAAIU,GAAGV,EAAI9tB,EAAE,OAAQ,4BAA4B8tB,EAAIS,GAAG,KAAKR,EAAG,WAAW,CAACA,EAAG,cAAc,CAAC9pB,MAAM,CAAC,SAAW,GAAG,MAAQ6pB,EAAIhB,KAAK,aAAegB,EAAIsB,oBAAsB,KAAO,MAAM,OAAStB,EAAIuH,iBAAiB,MAAQvH,EAAI9tB,EAAE,OAAQ,kBAAkB,YAAc8tB,EAAI9tB,EAAE,OAAQ,kBAAkB,cAAe8tB,EAAIuH,iBAAwF,GAArEvH,EAAI9tB,EAAE,OAAQ,sDAA2DuW,GAAG,CAAC,eAAeuX,EAAI2J,kBAAkB3J,EAAIS,GAAG,KAAMT,EAAIuH,iBAAkBtH,EAAG,cAAc,CAAC9pB,MAAM,CAAC,QAAU6pB,EAAIT,SAAS9W,GAAG,CAAC,MAAQuX,EAAIwH,gBAAgBxH,EAAIgE,MAAM,KAAOhE,EAAIsH,iBAAkVtH,EAAIoH,SAAYpH,EAAIqH,YAA0VrH,EAAIgE,KAAjV/D,EAAG,MAAM,CAACM,YAAY,UAAU,CAACN,EAAG,eAAe,CAAC9pB,MAAM,CAAC,KAAO,QAAQ6pB,EAAIS,GAAG,KAAKR,EAAG,KAAK,CAACD,EAAIS,GAAGT,EAAIU,GAAGV,EAAI9tB,EAAE,OAAQ,qCAAqC8tB,EAAIS,GAAG,KAAKR,EAAG,IAAI,CAACM,YAAY,aAAa,CAACP,EAAIS,GAAG,SAAST,EAAIU,GAAGV,EAAI9tB,EAAE,OAAQ,4EAA4E,WAAW,GAA3qB+tB,EAAG,MAAM,CAACM,YAAY,UAAU,CAACN,EAAG,kBAAkB,CAAC9pB,MAAM,CAAC,KAAO,QAAQ6pB,EAAIS,GAAG,KAAKR,EAAG,KAAK,CAACD,EAAIS,GAAGT,EAAIU,GAAGV,EAAI9tB,EAAE,OAAQ,6BAA6B8tB,EAAIS,GAAG,KAAKR,EAAG,IAAI,CAACM,YAAY,aAAa,CAACP,EAAIS,GAAG,SAAST,EAAIU,GAAGV,EAAI9tB,EAAE,OAAQ,kEAAkE,WAAW,EAC9sC,GACsB,IDUpB,EACA,KACA,WACA,MAI8B,QEnBhC,gBCmDA,MCnDyL,GDmDzL,CACAsJ,KAAA,gBACAyc,WAAA,CACA0I,YAAA,GACAG,WAAA,KACAD,YAAAA,GAAAA,GAEAE,OAAA,CAAAC,IACAhsB,MAAA,CACAisB,SAAA,CACAjuB,KAAAosB,OACAI,UAAA,GAEAyK,kBAAA,CACAj3B,KAAAosB,OACAI,UAAA,IAGApsB,IAAAA,GACA,OACA3C,OAAA,EACA8uB,SAAA,EACAjlB,aAAAnK,EACA6uB,KAAA,KAAAiC,SAEA,EACAsC,MAAA,CACAtC,QAAAA,CAAAhtB,GACA,KAAA+qB,KAAA/qB,CACA,GAEA2vB,QAAA,CACAC,cAAAA,GACA,KAAAzD,MAAA,uBAAApB,KACA,EACA8E,MAAAA,GACA,KAAAvE,SAAA,EACA,KAAA9uB,OAAA,EACA,KAAA6J,QAAA,GACA,MAAApH,GAAAqlB,EAAAA,EAAAA,IAAA,uBAEAnlB,EAAA,CACA4rB,KAAA,KAAAA,MAGA,OAAAkL,GAAAA,EAAApC,KAAA50B,EAAAE,GACAoD,MAAA2zB,GAAAA,EAAA/2B,OACAoD,MAAApD,IACA,eAAAA,EAAA+B,OACA,UAAAwD,MAAA,cAAAuhB,OAAA9mB,EAAA+B,SAGA,KAAAmF,QAAA,kBAEA0vB,OAAA3kB,IACA7U,GAAAC,MAAA,qCAAA4U,GAEA,KAAA5U,OAAA,EACA,KAAA6J,QAAA,gBAEA9D,MAAA,UAAA+oB,SAAA,IACA,oBErGI,GAAU,CAAC,EAEf,GAAQG,kBAAoB,KAC5B,GAAQC,cAAgB,KAElB,GAAQC,OAAS,UAAc,KAAM,QAE3C,GAAQC,OAAS,KACjB,GAAQC,mBAAqB,KAEhB,KAAI,KAAS,IAKJ,MAAW,KAAQC,QAAS,KAAQA,OCP1D,UAXgB,QACd,IJTW,WAAkB,IAAIC,EAAIjwB,KAAKkwB,EAAGD,EAAIE,MAAMD,GAAG,OAAOA,EAAG,OAAO,CAACM,YAAY,aAAa9X,GAAG,CAAC,OAAS,SAAS0X,GAAgC,OAAxBA,EAAOvJ,iBAAwBoJ,EAAI8D,OAAO1Y,MAAM,KAAMxQ,UAAU,IAAI,CAACqlB,EAAG,WAAW,CAACM,YAAY,wBAAwB,CAACN,EAAG,cAAc,CAAC9pB,MAAM,CAAC,GAAK,OAAO,MAAQ6pB,EAAIhB,KAAK,KAAO,OAAO,UAAY,IAAI,eAAiB,MAAM,MAAQgB,EAAI9tB,EAAE,OAAQ,kBAAkB,MAAQ8tB,EAAIjB,yBAAyB,cAAciB,EAAIf,oBAAoB,SAAW,IAAIxW,GAAG,CAAC,eAAe,SAAS0X,GAAQH,EAAIhB,KAAKmB,CAAM,EAAE,OAASH,EAAI6D,kBAAkB7D,EAAIS,GAAG,KAAKR,EAAG,cAAc,CAAC9pB,MAAM,CAAC,MAAQ6pB,EAAI9tB,EAAE,OAAQ,qBAAqB8tB,EAAIS,GAAG,KAAsB,iBAAhBT,EAAI1lB,QAA4B2lB,EAAG,aAAa,CAAC9pB,MAAM,CAAC,KAAO,YAAY,CAAC6pB,EAAIS,GAAG,WAAWT,EAAIU,GAAGV,EAAI9tB,EAAE,OAAQ,mOAAmO,YAA6B,eAAhB8tB,EAAI1lB,QAA0B2lB,EAAG,aAAa,CAAC9pB,MAAM,CAAC,KAAO,UAAU,CAAC6pB,EAAIS,GAAG,WAAWT,EAAIU,GAAGV,EAAI9tB,EAAE,OAAQ,kEAAmE,YAA6B,gBAAhB8tB,EAAI1lB,QAA2B2lB,EAAG,aAAa,CAAC9pB,MAAM,CAAC,KAAO,UAAU,CAAC6pB,EAAIS,GAAG,WAAWT,EAAIU,GAAGV,EAAI9tB,EAAE,OAAQ,mEAAmE,YAAY8tB,EAAIgE,KAAKhE,EAAIS,GAAG,KAAKR,EAAG,IAAI,CAACM,YAAY,mBAAmBpqB,MAAM,CAAC,KAAO,KAAKsS,GAAG,CAAC,MAAQ,SAAS0X,GAAgC,OAAxBA,EAAOvJ,iBAAwBoJ,EAAII,MAAM,QAAQ,IAAI,CAACJ,EAAIS,GAAG,WAAWT,EAAIU,GAAGV,EAAI9tB,EAAE,OAAQ,kBAAkB,aAAa,IACrmD,GACsB,IIUpB,EACA,KACA,WACA,MAI8B,QCnB0J,GCiD1L,CACAsJ,KAAA,iBACAyc,WAAA,CACA0I,YAAAA,IAEA3rB,MAAA,CACAisB,SAAA,CACAjuB,KAAAosB,OACAI,UAAA,GAEA4K,oBAAA,CACAp3B,KAAAosB,OACAI,UAAA,IAGApsB,IAAAA,GACA,OACA3C,OAAA,EACA8uB,SAAA,EACAjlB,aAAAnK,EACA6uB,KAAA,KAAAiC,SACAxlB,SAAA,GACA4uB,WAAA,EACAC,SAAA,EAEA,EACA/G,MAAA,CACAtC,QAAAA,CAAAhtB,GACA,KAAA+qB,KAAA/qB,CACA,GAEA2vB,QAAA,CACA,YAAAE,GACA,KAAAvE,SAAA,EACA,KAAA9uB,OAAA,EACA,KAAA6J,QAAA,GAEA,IACA,WAAAlH,SAAAy0B,GAAAA,EAAAC,KAAA,KAAAsC,oBAAA,CACA3uB,SAAA,KAAAA,SACA6uB,QAAA,KAAAA,UAEA,GAAAl3B,GAAA,YAAAA,EAAA+B,OACA,KAAAmF,QAAA,eACA,KAAA8lB,MAAA,uBAAApB,MACA,KAAAoB,MAAA,YACA,KAAAhtB,IAAAA,EAAAm3B,WAEA,MAAAn3B,GAAAA,EAAAglB,IACA,IAAAzf,MAAAvF,EAAAglB,KAEA,IAAAzf,MAJA,KAAA0xB,WAAA,CAKA,CACA,OAAAhlB,GACA,KAAA5U,OAAA,EACA,KAAA6J,QAAA+K,EAAA/K,QAAA+K,EAAA/K,QAAApI,EAAA,wEACA,SACA,KAAAqtB,SAAA,CACA,CACA,oBCjGI,GAAU,CAAC,EAEf,GAAQG,kBAAoB,KAC5B,GAAQC,cAAgB,KAElB,GAAQC,OAAS,UAAc,KAAM,QAE3C,GAAQC,OAAS,KACjB,GAAQC,mBAAqB,KAEhB,KAAI,KAAS,IAKJ,MAAW,KAAQC,QAAS,KAAQA,OCP1D,UAXgB,QACd,ICTW,WAAkB,IAAIC,EAAIjwB,KAAKkwB,EAAGD,EAAIE,MAAMD,GAAG,OAAOA,EAAG,OAAO,CAACxX,GAAG,CAAC,OAAS,SAAS0X,GAAgC,OAAxBA,EAAOvJ,iBAAwBoJ,EAAI8D,OAAO1Y,MAAM,KAAMxQ,UAAU,IAAI,CAACqlB,EAAG,WAAW,CAACA,EAAG,IAAI,CAACA,EAAG,QAAQ,CAACM,YAAY,UAAUpqB,MAAM,CAAC,IAAM,aAAa,CAAC6pB,EAAIS,GAAGT,EAAIU,GAAGV,EAAI9tB,EAAE,OAAQ,oBAAoB8tB,EAAIS,GAAG,KAAKR,EAAG,QAAQ,CAACuK,WAAW,CAAC,CAAChvB,KAAK,QAAQivB,QAAQ,UAAUx2B,MAAO+rB,EAAIvkB,SAAUivB,WAAW,aAAav0B,MAAM,CAAC,GAAK,WAAW,KAAO,WAAW,KAAO,WAAW,aAAe,eAAe,eAAiB,OAAO,WAAa,QAAQ,SAAW,GAAG,YAAc6pB,EAAI9tB,EAAE,OAAQ,iBAAiBmyB,SAAS,CAAC,MAASrE,EAAIvkB,UAAWgN,GAAG,CAAC,MAAQ,SAAS0X,GAAWA,EAAOziB,OAAOitB,YAAiB3K,EAAIvkB,SAAS0kB,EAAOziB,OAAOzJ,MAAK,OAAO+rB,EAAIS,GAAG,KAAMT,EAAIqK,UAAWpK,EAAG,MAAM,CAACM,YAAY,UAAU,CAACN,EAAG,IAAI,CAACD,EAAIS,GAAG,aAAaT,EAAIU,GAAGV,EAAI9tB,EAAE,OAAQ,8NAA8N,cAAc8tB,EAAIS,GAAG,KAAKR,EAAG,QAAQ,CAACuK,WAAW,CAAC,CAAChvB,KAAK,QAAQivB,QAAQ,UAAUx2B,MAAO+rB,EAAIsK,QAASI,WAAW,YAAYnK,YAAY,WAAWpqB,MAAM,CAAC,GAAK,qBAAqB,KAAO,YAAYkuB,SAAS,CAAC,QAAUpK,MAAMY,QAAQmF,EAAIsK,SAAStK,EAAI4K,GAAG5K,EAAIsK,QAAQ,OAAO,EAAGtK,EAAIsK,SAAU7hB,GAAG,CAAC,OAAS,SAAS0X,GAAQ,IAAI0K,EAAI7K,EAAIsK,QAAQQ,EAAK3K,EAAOziB,OAAOqtB,IAAID,EAAKE,QAAuB,GAAG/Q,MAAMY,QAAQgQ,GAAK,CAAC,IAAaI,EAAIjL,EAAI4K,GAAGC,EAAhB,MAA4BC,EAAKE,QAASC,EAAI,IAAIjL,EAAIsK,QAAQO,EAAI3Q,OAAO,CAAzE,QAAsF+Q,GAAK,IAAIjL,EAAIsK,QAAQO,EAAIjuB,MAAM,EAAEquB,GAAK/Q,OAAO2Q,EAAIjuB,MAAMquB,EAAI,IAAK,MAAMjL,EAAIsK,QAAQS,CAAI,KAAK/K,EAAIS,GAAG,KAAKR,EAAG,QAAQ,CAAC9pB,MAAM,CAAC,IAAM,uBAAuB,CAAC6pB,EAAIS,GAAG,aAAaT,EAAIU,GAAGV,EAAI9tB,EAAE,OAAQ,0BAA2B,gBAAgB8tB,EAAIgE,KAAKhE,EAAIS,GAAG,KAAKR,EAAG,cAAc,CAAC9pB,MAAM,CAAC,QAAU6pB,EAAIT,QAAQ,MAAQS,EAAI9tB,EAAE,OAAQ,kBAAkB,gBAAgB8tB,EAAI9tB,EAAE,OAAQ,yBAAyB8tB,EAAIS,GAAG,KAAMT,EAAIvvB,OAASuvB,EAAI1lB,QAAS2lB,EAAG,IAAI,CAACiE,MAAM,CAACgH,QAASlL,EAAIvvB,QAAQ,CAACuvB,EAAIS,GAAG,WAAWT,EAAIU,GAAGV,EAAI1lB,SAAS,YAAY0lB,EAAIgE,MAAM,IAC9kE,GACsB,IDUpB,EACA,KACA,WACA,MAI8B,wBEiGhC,MAAA7U,GAAA6I,GAAAxN,MAAAoD,SAAA0B,QACA,SAAAH,GAAAgc,MACA,IACA13B,OAAA23B,aAAAD,QACA13B,OAAA43B,eAAAF,QACA36B,GAAA2gB,MAAA,0BACA,OAAA9L,GACA7U,GAAAC,MAAA,kCAAA4U,EACA,CAGA,MC/H2K,GD+H3K,CACA7J,KAAA,QAEAyc,WAAA,CACAqT,UAAA,GACAC,sBAAA,GACAC,cAAA,GACAC,eAAA,GACAtM,SAAA,KACA2B,WAAAA,GAAAA,GAGA1tB,KAAAA,KACA,CACAmsB,SAAA,EACAP,MAAAgD,EAAAA,GAAAA,GAAA,2BACA0J,mBAAA,EACAC,eAAA,EAGAxK,QAAAa,EAAAA,GAAAA,GAAA,yBACAZ,UAAAY,EAAAA,GAAAA,GAAA,2BACAd,aAAAc,EAAAA,GAAAA,GAAA,8BACAX,eAAAW,EAAAA,GAAAA,GAAA,+BACA4J,kBAAA5J,EAAAA,GAAAA,GAAA,mCACAiI,mBAAAjI,EAAAA,GAAAA,GAAA,oCACAV,qBAAAU,EAAAA,GAAAA,GAAA,+BACAoI,qBAAApI,EAAAA,GAAAA,GAAA,iCACA6J,mBAAA7J,EAAAA,GAAAA,GAAA,+BACAT,YAAA,MAAApS,GAAA2c,OACAC,iBAAA/J,EAAAA,GAAAA,GAAA,gCACAgK,wBAAAhK,EAAAA,GAAAA,GAAA,oCACAiK,mBAAAjK,EAAAA,GAAAA,GAAA,+BACAoF,QAAA,WAAA3zB,OAAAma,SAAAiK,SACAwP,YAAA,cAAA5zB,OAAAma,SAAA6J,SACAyU,eAAAlK,EAAAA,GAAAA,GAAA,2BACAR,aAAAQ,EAAAA,GAAAA,GAAA,2BAIA4B,QAAA,CACAuI,qBAAAA,GACA,KAAA/B,oBAAA,GACA,KAAA7I,aAAA,CACA,oBEhKI,GAAU,CAAC,EAEf,GAAQ7B,kBAAoB,KAC5B,GAAQC,cAAgB,KAElB,GAAQC,OAAS,UAAc,KAAM,QAE3C,GAAQC,OAAS,KACjB,GAAQC,mBAAqB,KAEhB,KAAI,KAAS,IAKJ,MAAW,KAAQC,QAAS,KAAQA,OCP1D,UAXgB,QACd,I9CTW,WAAkB,IAAIC,EAAIjwB,KAAKkwB,EAAGD,EAAIE,MAAMD,GAAG,OAAOA,EAAG,MAAM,CAACM,YAAY,uBAAuB,EAAGP,EAAIkM,eAAiBlM,EAAIuB,YAAa,CAACtB,EAAG,aAAa,CAAC9pB,MAAM,CAAC,KAAO,OAAO,KAAO,WAAW,CAAG6pB,EAAI0L,mBAAsB1L,EAAI2L,eAA6C,KAA5B3L,EAAIoK,qBAA6kDpK,EAAIT,SAAWS,EAAI0L,kBAAmBzL,EAAG,MAAM,CAACnsB,IAAI,gBAAgBysB,YAAY,uCAAuC,CAACN,EAAG,wBAAwB,CAAC9pB,MAAM,CAAC,SAAW6pB,EAAIhB,KAAK,eAAegB,EAAIkB,YAAY,wBAAwBlB,EAAIsB,oBAAoB,WAAWtB,EAAIoH,QAAQ,eAAepH,EAAIqH,aAAa5e,GAAG,CAAC,kBAAkB,SAAS0X,GAAQH,EAAIhB,KAAKmB,CAAM,EAAE,OAAS,SAASA,GAAQH,EAAIT,SAAU,CAAI,KAAKS,EAAIS,GAAG,KAAKR,EAAG,WAAW,CAAC9pB,MAAM,CAAC,KAAO,WAAW,aAAa6pB,EAAI9tB,EAAE,OAAQ,sBAAsB,MAAO,GAAMuW,GAAG,CAAC,MAAQ,SAAS0X,GAAQH,EAAI0L,mBAAoB,CAAK,IAAI,CAAC1L,EAAIS,GAAG,eAAeT,EAAIU,GAAGV,EAAI9tB,EAAE,OAAQ,SAAS,iBAAiB,IAAK8tB,EAAIT,SAAWS,EAAI4L,iBAAkB3L,EAAG,MAAM,CAACnsB,IAAI,kBAAkBysB,YAAY,oBAAoB,CAACN,EAAG,MAAM,CAACM,YAAY,2BAA2B,CAAEP,EAAI2L,cAAe1L,EAAG,gBAAgB,CAAC9pB,MAAM,CAAC,SAAW6pB,EAAIhB,KAAK,sBAAsBgB,EAAIiK,mBAAmBxhB,GAAG,CAAC,kBAAkB,SAAS0X,GAAQH,EAAIhB,KAAKmB,CAAM,EAAE,MAAQ,SAASA,GAAQH,EAAI2L,eAAgB,CAAK,KAAK3L,EAAIgE,MAAM,KAAkC,KAA5BhE,EAAIoK,oBAA4BnK,EAAG,MAAM,CAACA,EAAG,iBAAiB,CAAC9pB,MAAM,CAAC,SAAW6pB,EAAIhB,KAAK,wBAAwBgB,EAAIoK,qBAAqB3hB,GAAG,CAAC,kBAAkB,SAAS0X,GAAQH,EAAIhB,KAAKmB,CAAM,EAAE,KAAOH,EAAImM,0BAA0B,GAAGnM,EAAIgE,KAAh0F/D,EAAG,MAAM,CAACA,EAAG,YAAY,CAAC9pB,MAAM,CAAC,SAAW6pB,EAAIhB,KAAK,eAAegB,EAAIkB,YAAY,eAAelB,EAAIuB,YAAY,SAAWvB,EAAIoB,SAAS,OAASpB,EAAImB,OAAO,iBAAiBnB,EAAIqB,cAAc,wBAAwBrB,EAAIsB,oBAAoB,eAAetB,EAAIwB,aAAa/Y,GAAG,CAAC,kBAAkB,SAAS0X,GAAQH,EAAIhB,KAAKmB,CAAM,EAAE,OAAS,SAASA,GAAQH,EAAIT,SAAU,CAAI,KAAKS,EAAIS,GAAG,KAAMT,EAAI4L,kBAA8C,KAA1B5L,EAAIiK,kBAA0BhK,EAAG,IAAI,CAACM,YAAY,kBAAkBpqB,MAAM,CAAC,GAAK,gBAAgB,KAAO6pB,EAAIiK,oBAAoB,CAACjK,EAAIS,GAAG,eAAeT,EAAIU,GAAGV,EAAI9tB,EAAE,OAAQ,qBAAqB,gBAAiB8tB,EAAI4L,mBAAqB5L,EAAI2L,cAAe1L,EAAG,IAAI,CAACM,YAAY,kBAAkBpqB,MAAM,CAAC,GAAK,gBAAgB,KAAO6pB,EAAIiK,mBAAmBxhB,GAAG,CAAC,MAAQ,SAAS0X,GAAQA,EAAOvJ,iBAAiBoJ,EAAI2L,eAAgB,CAAI,IAAI,CAAC3L,EAAIS,GAAG,eAAeT,EAAIU,GAAGV,EAAI9tB,EAAE,OAAQ,qBAAqB,gBAAgB8tB,EAAIgE,KAAKhE,EAAIS,GAAG,KAAMT,EAAI+L,gBAAiB,CAAE/L,EAAIgM,uBAAwB/L,EAAG,MAAM,CAACM,YAAY,sBAAsB,CAAEP,EAAI+L,gBAAiB9L,EAAG,IAAI,CAACM,YAAY,SAAS2D,MAAM,CAAE,0BAA2BlE,EAAIgM,wBAAyB71B,MAAM,CAAC,KAAO,KAAKsS,GAAG,CAAC,MAAQ,SAAS0X,GAAQA,EAAOvJ,iBAAiBoJ,EAAI0L,mBAAoB,CAAI,IAAI,CAAC1L,EAAIS,GAAG,mBAAmBT,EAAIU,GAAGV,EAAI9tB,EAAE,OAAQ,yBAAyB,oBAAoB8tB,EAAIgE,OAAO/D,EAAG,IAAI,CAAC9pB,MAAM,CAAC,KAAO,KAAKsS,GAAG,CAAC,MAAQ,SAAS0X,GAAQA,EAAOvJ,iBAAiBoJ,EAAI0L,mBAAoB,CAAI,IAAI,CAAC1L,EAAIS,GAAG,iBAAiBT,EAAIU,GAAGV,EAAI9tB,EAAE,OAAQ,yBAAyB,mBAAmB8tB,EAAIgE,MAAM,MAA4xC,CAAC/D,EAAG,aAAa,CAAC9pB,MAAM,CAAC,KAAO,OAAO,KAAO,WAAW,CAAC8pB,EAAG,aAAa,CAAC9pB,MAAM,CAAC,KAAO,OAAO,MAAQ6pB,EAAI9tB,EAAE,OAAQ,6BAA6B,CAAC8tB,EAAIS,GAAG,aAAaT,EAAIU,GAAGV,EAAI9tB,EAAE,OAAQ,gHAAgH,eAAe,IAAI8tB,EAAIS,GAAG,KAAKR,EAAG,MAAM,CAACM,YAAY,qBAAqBpqB,MAAM,CAAC,GAAK,uBAAuB6pB,EAAIiE,GAAIjE,EAAIiM,mBAAmB,SAASG,EAAiBlO,GAAO,OAAO+B,EAAG,WAAW,CAACnsB,IAAIoqB,EAAMgG,MAAM,CAACkI,EAAiBlI,OAAO/tB,MAAM,CAAC,KAAO,YAAY,MAAO,EAAK,KAAO,OAAO,KAAOi2B,EAAiBn3B,OAAO,CAAC+qB,EAAIS,GAAG,WAAWT,EAAIU,GAAG0L,EAAiB5wB,MAAM,WAAW,IAAG,IAAI,EAC3xH,GACsB,I8CUpB,EACA,KACA,KACA,MAI8B,QCXhC,IACCpI,KAAIA,KACI,CACNP,GAAEA,KAGJ+wB,QAAS,CACR1xB,EAAGm6B,GAAKzgB,UAAUrY,KAAK84B,IACvBtlB,EAAGslB,GAAKxgB,gBAAgBtY,KAAK84B,MCJ/BC,EAAAA,GAAIC,MAAMC,KAGV,IADaF,EAAAA,GAAIG,OAAOC,MACbC,OAAO,2BCflB,QAWMjwB,IAAsB,iBAARoE,MAAoBA,KAAKA,OAASA,MAAQA,MACjC,iBAAV,EAAA8P,GAAsB,EAAAA,EAAOzH,SAAW,EAAAyH,GAAU,EAAAA,EAIjE,EAAO,CAAC,QAAc,SAAU,GAAY,EAAF,SAAW1gB,EAAGG,EAAGu8B,GAGzDlwB,EAAKhG,SAcR,SAASgG,EAAMhG,EAAUxG,EAAGG,GAO7B,IAAIw8B,EAAmBnwB,EAAKhG,SAGxBkG,EAAQqd,MAAMjhB,UAAU4D,MAG5BlG,EAASo2B,QAAU,QAInBp2B,EAASrG,EAAIA,EAIbqG,EAASq2B,WAAa,WAEpB,OADArwB,EAAKhG,SAAWm2B,EACT98B,IACT,EAKA2G,EAASs2B,aAAc,EAMvBt2B,EAASu2B,aAAc,EAevB,IAMIC,EANAC,EAASz2B,EAASy2B,OAAS,CAAC,EAG5BC,EAAgB,MAQhBC,EAAY,SAASC,EAAUC,EAAQ/xB,EAAM1L,EAAU09B,GACzD,IAAWC,EAAPtrB,EAAI,EACR,GAAI3G,GAAwB,iBAATA,EAAmB,MAEnB,IAAb1L,GAAuB,YAAa09B,QAAyB,IAAjBA,EAAKr0B,UAAoBq0B,EAAKr0B,QAAUrJ,GACxF,IAAK29B,EAAQv9B,EAAE+rB,KAAKzgB,GAAO2G,EAAIsrB,EAAM17B,OAASoQ,IAC5CorB,EAASF,EAAUC,EAAUC,EAAQE,EAAMtrB,GAAI3G,EAAKiyB,EAAMtrB,IAAKqrB,EAEnE,MAAO,GAAIhyB,GAAQ4xB,EAAchQ,KAAK5hB,GAEpC,IAAKiyB,EAAQjyB,EAAKjK,MAAM67B,GAAgBjrB,EAAIsrB,EAAM17B,OAAQoQ,IACxDorB,EAASD,EAASC,EAAQE,EAAMtrB,GAAIrS,EAAU09B,QAIhDD,EAASD,EAASC,EAAQ/xB,EAAM1L,EAAU09B,GAE5C,OAAOD,CACT,EAIAJ,EAAO1kB,GAAK,SAASjN,EAAM1L,EAAUqJ,GAenC,OAdApJ,KAAK29B,QAAUL,EAAUM,EAAO59B,KAAK29B,SAAW,CAAC,EAAGlyB,EAAM1L,EAAU,CAClEqJ,QAASA,EACTy0B,IAAK79B,KACL89B,UAAWX,IAGTA,KACcn9B,KAAK+9B,aAAe/9B,KAAK+9B,WAAa,CAAC,IAC7CZ,EAAW53B,IAAM43B,EAG3BA,EAAWa,SAAU,GAGhBh+B,IACT,EAKAo9B,EAAOa,SAAW,SAASC,EAAKzyB,EAAM1L,GACpC,IAAKm+B,EAAK,OAAOl+B,KACjB,IAAIuF,EAAK24B,EAAIC,YAAcD,EAAIC,UAAYh+B,EAAEi+B,SAAS,MAClDC,EAAcr+B,KAAKs+B,eAAiBt+B,KAAKs+B,aAAe,CAAC,GACzDR,EAAYX,EAAakB,EAAY94B,GAIpCu4B,IACH99B,KAAKm+B,YAAcn+B,KAAKm+B,UAAYh+B,EAAEi+B,SAAS,MAC/CN,EAAYX,EAAakB,EAAY94B,GAAM,IAAIg5B,EAAUv+B,KAAMk+B,IAIjE,IAAIx9B,EAAQ89B,EAAWN,EAAKzyB,EAAM1L,EAAUC,MAG5C,GAFAm9B,OAAa,EAETz8B,EAAO,MAAMA,EAIjB,OAFIo9B,EAAUE,SAASF,EAAUplB,GAAGjN,EAAM1L,GAEnCC,IACT,EAGA,IAAI49B,EAAQ,SAASJ,EAAQ/xB,EAAM1L,EAAUe,GAC3C,GAAIf,EAAU,CACZ,IAAI0+B,EAAWjB,EAAO/xB,KAAU+xB,EAAO/xB,GAAQ,IAC3CrC,EAAUtI,EAAQsI,QAASy0B,EAAM/8B,EAAQ+8B,IAAKC,EAAYh9B,EAAQg9B,UAClEA,GAAWA,EAAU/mB,QAEzB0nB,EAAS7wB,KAAK,CAAC7N,SAAUA,EAAUqJ,QAASA,EAASy0B,IAAKz0B,GAAWy0B,EAAKC,UAAWA,GACvF,CACA,OAAON,CACT,EAIIgB,EAAa,SAASN,EAAKzyB,EAAM1L,EAAUqJ,GAC7C,IACE80B,EAAIxlB,GAAGjN,EAAM1L,EAAUqJ,EACzB,CAAE,MAAOkM,GACP,OAAOA,CACT,CACF,EAMA8nB,EAAOlW,IAAM,SAASzb,EAAM1L,EAAUqJ,GACpC,OAAKpJ,KAAK29B,SACV39B,KAAK29B,QAAUL,EAAUoB,EAAQ1+B,KAAK29B,QAASlyB,EAAM1L,EAAU,CAC7DqJ,QAASA,EACT2Q,UAAW/Z,KAAK+9B,aAGX/9B,MANmBA,IAO5B,EAIAo9B,EAAOuB,cAAgB,SAAST,EAAKzyB,EAAM1L,GACzC,IAAIs+B,EAAcr+B,KAAKs+B,aACvB,IAAKD,EAAa,OAAOr+B,KAGzB,IADA,IAAI4+B,EAAMV,EAAM,CAACA,EAAIC,WAAah+B,EAAE+rB,KAAKmS,GAChCjsB,EAAI,EAAGA,EAAIwsB,EAAI58B,OAAQoQ,IAAK,CACnC,IAAI0rB,EAAYO,EAAYO,EAAIxsB,IAIhC,IAAK0rB,EAAW,MAEhBA,EAAUI,IAAIhX,IAAIzb,EAAM1L,EAAUC,MAC9B89B,EAAUE,SAASF,EAAU5W,IAAIzb,EAAM1L,EAC7C,CAGA,OAFII,EAAE0+B,QAAQR,KAAcr+B,KAAKs+B,kBAAe,GAEzCt+B,IACT,EAGA,IAAI0+B,EAAS,SAASlB,EAAQ/xB,EAAM1L,EAAUe,GAC5C,GAAK08B,EAAL,CAEA,IACWE,EADPt0B,EAAUtI,EAAQsI,QAAS2Q,EAAYjZ,EAAQiZ,UAC/C3H,EAAI,EAGR,GAAK3G,GAASrC,GAAYrJ,EAA1B,CAQA,IADA29B,EAAQjyB,EAAO,CAACA,GAAQtL,EAAE+rB,KAAKsR,GACxBprB,EAAIsrB,EAAM17B,OAAQoQ,IAAK,CAE5B,IAAIqsB,EAAWjB,EADf/xB,EAAOiyB,EAAMtrB,IAIb,IAAKqsB,EAAU,MAIf,IADA,IAAIK,EAAY,GACP3sB,EAAI,EAAGA,EAAIssB,EAASz8B,OAAQmQ,IAAK,CACxC,IAAI6M,EAAUyf,EAAStsB,GACvB,GACEpS,GAAYA,IAAaif,EAAQjf,UAC/BA,IAAaif,EAAQjf,SAASg/B,WAC5B31B,GAAWA,IAAY4V,EAAQ5V,QAEnC01B,EAAUlxB,KAAKoR,OACV,CACL,IAAI8e,EAAY9e,EAAQ8e,UACpBA,GAAWA,EAAU5W,IAAIzb,EAAM1L,EACrC,CACF,CAGI++B,EAAU98B,OACZw7B,EAAO/xB,GAAQqzB,SAERtB,EAAO/xB,EAElB,CAEA,OAAO+xB,CAlCP,CAJE,IAAKE,EAAQv9B,EAAE+rB,KAAKnS,GAAY3H,EAAIsrB,EAAM17B,OAAQoQ,IAChD2H,EAAU2jB,EAAMtrB,IAAI4sB,SARL,CA8CrB,EAMA5B,EAAO6B,KAAO,SAASxzB,EAAM1L,EAAUqJ,GAErC,IAAIo0B,EAASF,EAAU4B,EAAS,CAAC,EAAGzzB,EAAM1L,EAAUC,KAAKknB,IAAI1jB,KAAKxD,OAElE,MADoB,iBAATyL,GAAgC,MAAXrC,IAAiBrJ,OAAW,GACrDC,KAAK0Y,GAAG8kB,EAAQz9B,EAAUqJ,EACnC,EAGAg0B,EAAO+B,aAAe,SAASjB,EAAKzyB,EAAM1L,GAExC,IAAIy9B,EAASF,EAAU4B,EAAS,CAAC,EAAGzzB,EAAM1L,EAAUC,KAAK2+B,cAAcn7B,KAAKxD,KAAMk+B,IAClF,OAAOl+B,KAAKi+B,SAASC,EAAKV,EAC5B,EAIA,IAAI0B,EAAU,SAASnyB,EAAKtB,EAAM1L,EAAUq/B,GAC1C,GAAIr/B,EAAU,CACZ,IAAIk/B,EAAOlyB,EAAItB,GAAQtL,EAAE8+B,MAAK,WAC5BG,EAAM3zB,EAAMwzB,GACZl/B,EAASsb,MAAMrb,KAAM6K,UACvB,IACAo0B,EAAKF,UAAYh/B,CACnB,CACA,OAAOgN,CACT,EAMAqwB,EAAO16B,QAAU,SAAS+I,GACxB,IAAKzL,KAAK29B,QAAS,OAAO39B,KAI1B,IAFA,IAAIgC,EAASuP,KAAKkC,IAAI,EAAG5I,UAAU7I,OAAS,GACxCq9B,EAAOnV,MAAMloB,GACRoQ,EAAI,EAAGA,EAAIpQ,EAAQoQ,IAAKitB,EAAKjtB,GAAKvH,UAAUuH,EAAI,GAGzD,OADAkrB,EAAUgC,EAAYt/B,KAAK29B,QAASlyB,OAAM,EAAQ4zB,GAC3Cr/B,IACT,EAGA,IAAIs/B,EAAa,SAASC,EAAW9zB,EAAM1L,EAAUs/B,GACnD,GAAIE,EAAW,CACb,IAAI/B,EAAS+B,EAAU9zB,GACnB+zB,EAAYD,EAAUE,IACtBjC,GAAUgC,IAAWA,EAAYA,EAAU3yB,SAC3C2wB,GAAQkC,EAAclC,EAAQ6B,GAC9BG,GAAWE,EAAcF,EAAW,CAAC/zB,GAAM0e,OAAOkV,GACxD,CACA,OAAOE,CACT,EAKIG,EAAgB,SAASlC,EAAQ6B,GACnC,IAAIM,EAAIvtB,GAAK,EAAGwtB,EAAIpC,EAAOx7B,OAAQ69B,EAAKR,EAAK,GAAIS,EAAKT,EAAK,GAAIU,EAAKV,EAAK,GACzE,OAAQA,EAAKr9B,QACX,KAAK,EAAG,OAASoQ,EAAIwtB,IAAID,EAAKnC,EAAOprB,IAAIrS,SAASY,KAAKg/B,EAAG9B,KAAM,OAChE,KAAK,EAAG,OAASzrB,EAAIwtB,IAAID,EAAKnC,EAAOprB,IAAIrS,SAASY,KAAKg/B,EAAG9B,IAAKgC,GAAK,OACpE,KAAK,EAAG,OAASztB,EAAIwtB,IAAID,EAAKnC,EAAOprB,IAAIrS,SAASY,KAAKg/B,EAAG9B,IAAKgC,EAAIC,GAAK,OACxE,KAAK,EAAG,OAAS1tB,EAAIwtB,IAAID,EAAKnC,EAAOprB,IAAIrS,SAASY,KAAKg/B,EAAG9B,IAAKgC,EAAIC,EAAIC,GAAK,OAC5E,QAAS,OAAS3tB,EAAIwtB,IAAID,EAAKnC,EAAOprB,IAAIrS,SAASsb,MAAMskB,EAAG9B,IAAKwB,GAAO,OAE5E,EAIId,EAAY,SAASyB,EAAU9B,GACjCl+B,KAAKuF,GAAKy6B,EAAS7B,UACnBn+B,KAAKggC,SAAWA,EAChBhgC,KAAKk+B,IAAMA,EACXl+B,KAAKg+B,SAAU,EACfh+B,KAAK+W,MAAQ,EACb/W,KAAK29B,aAAU,CACjB,EAEAY,EAAUt1B,UAAUyP,GAAK0kB,EAAO1kB,GAMhC6lB,EAAUt1B,UAAUie,IAAM,SAASzb,EAAM1L,GACvC,IAAIi/B,EACAh/B,KAAKg+B,SACPh+B,KAAK29B,QAAUL,EAAUoB,EAAQ1+B,KAAK29B,QAASlyB,EAAM1L,EAAU,CAC7DqJ,aAAS,EACT2Q,eAAW,IAEbilB,GAAWh/B,KAAK29B,UAEhB39B,KAAK+W,QACLioB,EAAyB,IAAfh/B,KAAK+W,OAEbioB,GAASh/B,KAAKg/B,SACpB,EAGAT,EAAUt1B,UAAU+1B,QAAU,kBACrBh/B,KAAKggC,SAAS1B,aAAat+B,KAAKk+B,IAAIC,WACtCn+B,KAAKg+B,gBAAgBh+B,KAAKk+B,IAAIH,WAAW/9B,KAAKuF,GACrD,EAGA63B,EAAO55B,KAAS45B,EAAO1kB,GACvB0kB,EAAO6C,OAAS7C,EAAOlW,IAIvB/mB,EAAEu8B,OAAO/1B,EAAUy2B,GAYnB,IAAI8C,EAAQv5B,EAASu5B,MAAQ,SAASzyB,EAAY3M,GAChD,IAAIsF,EAAQqH,GAAc,CAAC,EAC3B3M,IAAYA,EAAU,CAAC,GACvBd,KAAKmgC,cAAc9kB,MAAMrb,KAAM6K,WAC/B7K,KAAKogC,IAAMjgC,EAAEi+B,SAASp+B,KAAKqgC,WAC3BrgC,KAAKyN,WAAa,CAAC,EACf3M,EAAQ6H,aAAY3I,KAAK2I,WAAa7H,EAAQ6H,YAC9C7H,EAAQ2Z,QAAOrU,EAAQpG,KAAKya,MAAMrU,EAAOtF,IAAY,CAAC,GAC1D,IAAIw/B,EAAWngC,EAAE2E,OAAO9E,KAAM,YAI9BoG,EAAQjG,EAAEmgC,SAASngC,EAAEu8B,OAAO,CAAC,EAAG4D,EAAUl6B,GAAQk6B,GAElDtgC,KAAK4oB,IAAIxiB,EAAOtF,GAChBd,KAAKwG,QAAU,CAAC,EAChBxG,KAAKugC,WAAWllB,MAAMrb,KAAM6K,UAC9B,EAGA1K,EAAEu8B,OAAOwD,EAAMj3B,UAAWm0B,EAAQ,CAGhC52B,QAAS,KAGTg6B,gBAAiB,KAIjBC,YAAa,KAIbJ,UAAW,IAIXF,cAAe,WAAW,EAI1BI,WAAY,WAAW,EAGvB75B,OAAQ,SAAS5F,GACf,OAAOX,EAAE6T,MAAMhU,KAAKyN,WACtB,EAIAizB,KAAM,WACJ,OAAO/5B,EAAS+5B,KAAKrlB,MAAMrb,KAAM6K,UACnC,EAGA4d,IAAK,SAAS/R,GACZ,OAAO1W,KAAKyN,WAAWiJ,EACzB,EAGAqb,OAAQ,SAASrb,GACf,OAAOvW,EAAE4xB,OAAO/xB,KAAKyoB,IAAI/R,GAC3B,EAIAiqB,IAAK,SAASjqB,GACZ,OAAyB,MAAlB1W,KAAKyoB,IAAI/R,EAClB,EAGA0J,QAAS,SAASha,GAChB,QAASjG,EAAEo9B,SAASn3B,EAAOpG,KAAlBG,CAAwBH,KAAKyN,WACxC,EAKAmb,IAAK,SAAS7kB,EAAK68B,EAAK9/B,GACtB,GAAW,MAAPiD,EAAa,OAAO/D,KAGxB,IAAIoG,EAWJ,GAVmB,iBAARrC,GACTqC,EAAQrC,EACRjD,EAAU8/B,IAETx6B,EAAQ,CAAC,GAAGrC,GAAO68B,EAGtB9/B,IAAYA,EAAU,CAAC,IAGlBd,KAAK6gC,UAAUz6B,EAAOtF,GAAU,OAAO,EAG5C,IAAIggC,EAAahgC,EAAQggC,MACrBC,EAAajgC,EAAQigC,OACrBC,EAAa,GACbC,EAAajhC,KAAKkhC,UACtBlhC,KAAKkhC,WAAY,EAEZD,IACHjhC,KAAKmhC,oBAAsBhhC,EAAE6T,MAAMhU,KAAKyN,YACxCzN,KAAKwG,QAAU,CAAC,GAGlB,IAAI46B,EAAUphC,KAAKyN,WACfjH,EAAUxG,KAAKwG,QACf66B,EAAUrhC,KAAKmhC,oBAGnB,IAAK,IAAIzqB,KAAQtQ,EACfw6B,EAAMx6B,EAAMsQ,GACPvW,EAAEmhC,QAAQF,EAAQ1qB,GAAOkqB,IAAMI,EAAQpzB,KAAK8I,GAC5CvW,EAAEmhC,QAAQD,EAAK3qB,GAAOkqB,UAGlBp6B,EAAQkQ,GAFflQ,EAAQkQ,GAAQkqB,EAIlBE,SAAeM,EAAQ1qB,GAAQ0qB,EAAQ1qB,GAAQkqB,EAIjD,GAAI5gC,KAAKygC,eAAer6B,EAAO,CAC7B,IAAIm7B,EAASvhC,KAAKuF,GAClBvF,KAAKuF,GAAKvF,KAAKyoB,IAAIzoB,KAAKygC,aACxBzgC,KAAK0C,QAAQ,WAAY1C,KAAMuhC,EAAQzgC,EACzC,CAGA,IAAKigC,EAAQ,CACPC,EAAQh/B,SAAQhC,KAAKwhC,SAAW1gC,GACpC,IAAK,IAAIsR,EAAI,EAAGA,EAAI4uB,EAAQh/B,OAAQoQ,IAClCpS,KAAK0C,QAAQ,UAAYs+B,EAAQ5uB,GAAIpS,KAAMohC,EAAQJ,EAAQ5uB,IAAKtR,EAEpE,CAIA,GAAImgC,EAAU,OAAOjhC,KACrB,IAAK+gC,EACH,KAAO/gC,KAAKwhC,UACV1gC,EAAUd,KAAKwhC,SACfxhC,KAAKwhC,UAAW,EAChBxhC,KAAK0C,QAAQ,SAAU1C,KAAMc,GAKjC,OAFAd,KAAKwhC,UAAW,EAChBxhC,KAAKkhC,WAAY,EACVlhC,IACT,EAIA8gC,MAAO,SAASpqB,EAAM5V,GACpB,OAAOd,KAAK4oB,IAAIlS,OAAM,EAAQvW,EAAEu8B,OAAO,CAAC,EAAG57B,EAAS,CAACggC,OAAO,IAC9D,EAGA1F,MAAO,SAASt6B,GACd,IAAIsF,EAAQ,CAAC,EACb,IAAK,IAAIrC,KAAO/D,KAAKyN,WAAYrH,EAAMrC,QAAO,EAC9C,OAAO/D,KAAK4oB,IAAIxiB,EAAOjG,EAAEu8B,OAAO,CAAC,EAAG57B,EAAS,CAACggC,OAAO,IACvD,EAIAW,WAAY,SAAS/qB,GACnB,OAAY,MAARA,GAAsBvW,EAAE0+B,QAAQ7+B,KAAKwG,SAClCrG,EAAEwgC,IAAI3gC,KAAKwG,QAASkQ,EAC7B,EAQAgrB,kBAAmB,SAASngB,GAC1B,IAAKA,EAAM,QAAOvhB,KAAKyhC,cAAethC,EAAE6T,MAAMhU,KAAKwG,SACnD,IAEIi7B,EAFAE,EAAM3hC,KAAKkhC,UAAYlhC,KAAKmhC,oBAAsBnhC,KAAKyN,WACvDjH,EAAU,CAAC,EAEf,IAAK,IAAIkQ,KAAQ6K,EAAM,CACrB,IAAIqf,EAAMrf,EAAK7K,GACXvW,EAAEmhC,QAAQK,EAAIjrB,GAAOkqB,KACzBp6B,EAAQkQ,GAAQkqB,EAChBa,GAAa,EACf,CACA,QAAOA,GAAaj7B,CACtB,EAIAo7B,SAAU,SAASlrB,GACjB,OAAY,MAARA,GAAiB1W,KAAKmhC,oBACnBnhC,KAAKmhC,oBAAoBzqB,GADsB,IAExD,EAIAmrB,mBAAoB,WAClB,OAAO1hC,EAAE6T,MAAMhU,KAAKmhC,oBACtB,EAIAW,MAAO,SAAShhC,GACdA,EAAUX,EAAEu8B,OAAO,CAACjiB,OAAO,GAAO3Z,GAClC,IAAImF,EAAQjG,KACRsD,EAAUxC,EAAQwC,QAQtB,OAPAxC,EAAQwC,QAAU,SAAS82B,GACzB,IAAI2H,EAAcjhC,EAAQ2Z,MAAQxU,EAAMwU,MAAM2f,EAAMt5B,GAAWs5B,EAC/D,IAAKn0B,EAAM2iB,IAAImZ,EAAajhC,GAAU,OAAO,EACzCwC,GAASA,EAAQ3C,KAAKG,EAAQsI,QAASnD,EAAOm0B,EAAMt5B,GACxDmF,EAAMvD,QAAQ,OAAQuD,EAAOm0B,EAAMt5B,EACrC,EACAkhC,EAAUhiC,KAAMc,GACTd,KAAK0gC,KAAK,OAAQ1gC,KAAMc,EACjC,EAKAmhC,KAAM,SAASl+B,EAAK68B,EAAK9/B,GAEvB,IAAIsF,EACO,MAAPrC,GAA8B,iBAARA,GACxBqC,EAAQrC,EACRjD,EAAU8/B,IAETx6B,EAAQ,CAAC,GAAGrC,GAAO68B,EAItB,IAAIsB,GADJphC,EAAUX,EAAEu8B,OAAO,CAACyF,UAAU,EAAM1nB,OAAO,GAAO3Z,IAC/BohC,KAKnB,GAAI97B,IAAU87B,GACZ,IAAKliC,KAAK4oB,IAAIxiB,EAAOtF,GAAU,OAAO,OACjC,IAAKd,KAAK6gC,UAAUz6B,EAAOtF,GAChC,OAAO,EAKT,IAAImF,EAAQjG,KACRsD,EAAUxC,EAAQwC,QAClBmK,EAAazN,KAAKyN,WACtB3M,EAAQwC,QAAU,SAAS82B,GAEzBn0B,EAAMwH,WAAaA,EACnB,IAAIs0B,EAAcjhC,EAAQ2Z,MAAQxU,EAAMwU,MAAM2f,EAAMt5B,GAAWs5B,EAE/D,GADI8H,IAAMH,EAAc5hC,EAAEu8B,OAAO,CAAC,EAAGt2B,EAAO27B,IACxCA,IAAgB97B,EAAM2iB,IAAImZ,EAAajhC,GAAU,OAAO,EACxDwC,GAASA,EAAQ3C,KAAKG,EAAQsI,QAASnD,EAAOm0B,EAAMt5B,GACxDmF,EAAMvD,QAAQ,OAAQuD,EAAOm0B,EAAMt5B,EACrC,EACAkhC,EAAUhiC,KAAMc,GAGZsF,GAAS87B,IAAMliC,KAAKyN,WAAatN,EAAEu8B,OAAO,CAAC,EAAGjvB,EAAYrH,IAE9D,IAAIxD,EAAS5C,KAAKoiC,QAAU,SAAWthC,EAAQ4D,MAAQ,QAAU,SAClD,UAAX9B,GAAuB9B,EAAQsF,QAAOtF,EAAQsF,MAAQA,GAC1D,IAAI8B,EAAMlI,KAAK0gC,KAAK99B,EAAQ5C,KAAMc,GAKlC,OAFAd,KAAKyN,WAAaA,EAEXvF,CACT,EAKAm6B,QAAS,SAASvhC,GAChBA,EAAUA,EAAUX,EAAE6T,MAAMlT,GAAW,CAAC,EACxC,IAAImF,EAAQjG,KACRsD,EAAUxC,EAAQwC,QAClB4+B,EAAOphC,EAAQohC,KAEfG,EAAU,WACZp8B,EAAM04B,gBACN14B,EAAMvD,QAAQ,UAAWuD,EAAOA,EAAM0C,WAAY7H,EACpD,EAEAA,EAAQwC,QAAU,SAAS82B,GACrB8H,GAAMG,IACN/+B,GAASA,EAAQ3C,KAAKG,EAAQsI,QAASnD,EAAOm0B,EAAMt5B,GACnDmF,EAAMm8B,SAASn8B,EAAMvD,QAAQ,OAAQuD,EAAOm0B,EAAMt5B,EACzD,EAEA,IAAIoH,GAAM,EAQV,OAPIlI,KAAKoiC,QACPjiC,EAAE2Y,MAAMhY,EAAQwC,UAEhB0+B,EAAUhiC,KAAMc,GAChBoH,EAAMlI,KAAK0gC,KAAK,SAAU1gC,KAAMc,IAE7BohC,GAAMG,IACJn6B,CACT,EAKA/E,IAAK,WACH,IAAIm/B,EACFniC,EAAE2E,OAAO9E,KAAM,YACfG,EAAE2E,OAAO9E,KAAK2I,WAAY,QAC1BE,IACF,GAAI7I,KAAKoiC,QAAS,OAAOE,EACzB,IAAI/8B,EAAKvF,KAAKyoB,IAAIzoB,KAAKygC,aACvB,OAAO6B,EAAKrtB,QAAQ,SAAU,OAAS+E,mBAAmBzU,EAC5D,EAIAkV,MAAO,SAAS2f,EAAMt5B,GACpB,OAAOs5B,CACT,EAGApmB,MAAO,WACL,OAAO,IAAIhU,KAAK41B,YAAY51B,KAAKyN,WACnC,EAGA20B,MAAO,WACL,OAAQpiC,KAAK2gC,IAAI3gC,KAAKygC,YACxB,EAGA8B,QAAS,SAASzhC,GAChB,OAAOd,KAAK6gC,UAAU,CAAC,EAAG1gC,EAAEu8B,OAAO,CAAC,EAAG57B,EAAS,CAACqhC,UAAU,IAC7D,EAIAtB,UAAW,SAASz6B,EAAOtF,GACzB,IAAKA,EAAQqhC,WAAaniC,KAAKmiC,SAAU,OAAO,EAChD/7B,EAAQjG,EAAEu8B,OAAO,CAAC,EAAG18B,KAAKyN,WAAYrH,GACtC,IAAI1F,EAAQV,KAAKwgC,gBAAkBxgC,KAAKmiC,SAAS/7B,EAAOtF,IAAY,KACpE,OAAKJ,IACLV,KAAK0C,QAAQ,UAAW1C,KAAMU,EAAOP,EAAEu8B,OAAO57B,EAAS,CAAC0/B,gBAAiB9/B,MAClE,EACT,IAiBF,IAAI8H,EAAa7B,EAAS6B,WAAa,SAASg6B,EAAQ1hC,GACtDA,IAAYA,EAAU,CAAC,GACvBd,KAAKmgC,cAAc9kB,MAAMrb,KAAM6K,WAC3B/J,EAAQmF,QAAOjG,KAAKiG,MAAQnF,EAAQmF,YACb,IAAvBnF,EAAQ2hC,aAAuBziC,KAAKyiC,WAAa3hC,EAAQ2hC,YAC7DziC,KAAK0iC,SACL1iC,KAAKugC,WAAWllB,MAAMrb,KAAM6K,WACxB23B,GAAQxiC,KAAK2iC,MAAMH,EAAQriC,EAAEu8B,OAAO,CAACqE,QAAQ,GAAOjgC,GAC1D,EAGI8hC,EAAa,CAACC,KAAK,EAAMxqB,QAAQ,EAAMyqB,OAAO,GAC9CC,EAAa,CAACF,KAAK,EAAMxqB,QAAQ,GAGjC2qB,EAAS,SAASC,EAAOpT,EAAQqT,GACnCA,EAAK3xB,KAAK0E,IAAI1E,KAAKkC,IAAIyvB,EAAI,GAAID,EAAMjhC,QACrC,IAEIoQ,EAFAuW,EAAOuB,MAAM+Y,EAAMjhC,OAASkhC,GAC5BlhC,EAAS6tB,EAAO7tB,OAEpB,IAAKoQ,EAAI,EAAGA,EAAIuW,EAAK3mB,OAAQoQ,IAAKuW,EAAKvW,GAAK6wB,EAAM7wB,EAAI8wB,GACtD,IAAK9wB,EAAI,EAAGA,EAAIpQ,EAAQoQ,IAAK6wB,EAAM7wB,EAAI8wB,GAAMrT,EAAOzd,GACpD,IAAKA,EAAI,EAAGA,EAAIuW,EAAK3mB,OAAQoQ,IAAK6wB,EAAM7wB,EAAIpQ,EAASkhC,GAAMva,EAAKvW,EAClE,EAGAjS,EAAEu8B,OAAOl0B,EAAWS,UAAWm0B,EAAQ,CAIrCn3B,MAAOi6B,EAKPC,cAAe,WAAW,EAI1BI,WAAY,WAAW,EAIvB75B,OAAQ,SAAS5F,GACf,OAAOd,KAAK+M,KAAI,SAAS9G,GAAS,OAAOA,EAAMS,OAAO5F,EAAU,GAClE,EAGA4/B,KAAM,WACJ,OAAO/5B,EAAS+5B,KAAKrlB,MAAMrb,KAAM6K,UACnC,EAKAg4B,IAAK,SAASL,EAAQ1hC,GACpB,OAAOd,KAAK4oB,IAAI4Z,EAAQriC,EAAEu8B,OAAO,CAACoG,OAAO,GAAQhiC,EAASiiC,GAC5D,EAGA1qB,OAAQ,SAASmqB,EAAQ1hC,GACvBA,EAAUX,EAAEu8B,OAAO,CAAC,EAAG57B,GACvB,IAAIqiC,GAAYhjC,EAAE2qB,QAAQ0X,GAC1BA,EAASW,EAAW,CAACX,GAAUA,EAAO31B,QACtC,IAAIu2B,EAAUpjC,KAAKqjC,cAAcb,EAAQ1hC,GAKzC,OAJKA,EAAQigC,QAAUqC,EAAQphC,SAC7BlB,EAAQkgC,QAAU,CAACsC,MAAO,GAAIC,OAAQ,GAAIH,QAASA,GACnDpjC,KAAK0C,QAAQ,SAAU1C,KAAMc,IAExBqiC,EAAWC,EAAQ,GAAKA,CACjC,EAMAxa,IAAK,SAAS4Z,EAAQ1hC,GACpB,GAAc,MAAV0hC,EAAJ,EAEA1hC,EAAUX,EAAEu8B,OAAO,CAAC,EAAGkG,EAAY9hC,IACvB2Z,QAAUza,KAAKwjC,SAAShB,KAClCA,EAASxiC,KAAKya,MAAM+nB,EAAQ1hC,IAAY,IAG1C,IAAIqiC,GAAYhjC,EAAE2qB,QAAQ0X,GAC1BA,EAASW,EAAW,CAACX,GAAUA,EAAO31B,QAEtC,IAAIq2B,EAAKpiC,EAAQoiC,GACP,MAANA,IAAYA,GAAMA,GAClBA,EAAKljC,KAAKgC,SAAQkhC,EAAKljC,KAAKgC,QAC5BkhC,EAAK,IAAGA,GAAMljC,KAAKgC,OAAS,GAEhC,IAgBIiE,EAAOmM,EAhBPwW,EAAM,GACN6a,EAAQ,GACRC,EAAU,GACVC,EAAW,GACXC,EAAW,CAAC,EAEZf,EAAM/hC,EAAQ+hC,IACdC,EAAQhiC,EAAQgiC,MAChBzqB,EAASvX,EAAQuX,OAEjBgU,GAAO,EACPwX,EAAW7jC,KAAKyiC,YAAoB,MAANS,IAA+B,IAAjBpiC,EAAQurB,KACpDyX,EAAW3jC,EAAE4jC,SAAS/jC,KAAKyiC,YAAcziC,KAAKyiC,WAAa,KAK/D,IAAKrwB,EAAI,EAAGA,EAAIowB,EAAOxgC,OAAQoQ,IAAK,CAClCnM,EAAQu8B,EAAOpwB,GAIf,IAAI4xB,EAAWhkC,KAAKyoB,IAAIxiB,GACxB,GAAI+9B,EAAU,CACZ,GAAIlB,GAAS78B,IAAU+9B,EAAU,CAC/B,IAAI59B,EAAQpG,KAAKwjC,SAASv9B,GAASA,EAAMwH,WAAaxH,EAClDnF,EAAQ2Z,QAAOrU,EAAQ49B,EAASvpB,MAAMrU,EAAOtF,IACjDkjC,EAASpb,IAAIxiB,EAAOtF,GACpB4iC,EAAQ91B,KAAKo2B,GACTH,IAAaxX,IAAMA,EAAO2X,EAASvC,WAAWqC,GACpD,CACKF,EAASI,EAAS5D,OACrBwD,EAASI,EAAS5D,MAAO,EACzBxX,EAAIhb,KAAKo2B,IAEXxB,EAAOpwB,GAAK4xB,CAGd,MAAWnB,IACT58B,EAAQu8B,EAAOpwB,GAAKpS,KAAKikC,cAAch+B,EAAOnF,MAE5C2iC,EAAM71B,KAAK3H,GACXjG,KAAKkkC,cAAcj+B,EAAOnF,GAC1B8iC,EAAS39B,EAAMm6B,MAAO,EACtBxX,EAAIhb,KAAK3H,GAGf,CAGA,GAAIoS,EAAQ,CACV,IAAKjG,EAAI,EAAGA,EAAIpS,KAAKgC,OAAQoQ,IAEtBwxB,GADL39B,EAAQjG,KAAKwiC,OAAOpwB,IACAguB,MAAMuD,EAAS/1B,KAAK3H,GAEtC09B,EAAS3hC,QAAQhC,KAAKqjC,cAAcM,EAAU7iC,EACpD,CAGA,IAAIqjC,GAAe,EACflvB,GAAW4uB,GAAYhB,GAAOxqB,EAkBlC,GAjBIuQ,EAAI5mB,QAAUiT,GAChBkvB,EAAenkC,KAAKgC,SAAW4mB,EAAI5mB,QAAU7B,EAAEikC,KAAKpkC,KAAKwiC,QAAQ,SAAS3iB,EAAGsO,GAC3E,OAAOtO,IAAM+I,EAAIuF,EACnB,IACAnuB,KAAKwiC,OAAOxgC,OAAS,EACrBghC,EAAOhjC,KAAKwiC,OAAQ5Z,EAAK,GACzB5oB,KAAKgC,OAAShC,KAAKwiC,OAAOxgC,QACjByhC,EAAMzhC,SACX6hC,IAAUxX,GAAO,GACrB2W,EAAOhjC,KAAKwiC,OAAQiB,EAAa,MAANP,EAAaljC,KAAKgC,OAASkhC,GACtDljC,KAAKgC,OAAShC,KAAKwiC,OAAOxgC,QAIxBqqB,GAAMrsB,KAAKqsB,KAAK,CAAC0U,QAAQ,KAGxBjgC,EAAQigC,OAAQ,CACnB,IAAK3uB,EAAI,EAAGA,EAAIqxB,EAAMzhC,OAAQoQ,IAClB,MAAN8wB,IAAYpiC,EAAQqtB,MAAQ+U,EAAK9wB,IACrCnM,EAAQw9B,EAAMrxB,IACR1P,QAAQ,MAAOuD,EAAOjG,KAAMc,IAEhCurB,GAAQ8X,IAAcnkC,KAAK0C,QAAQ,OAAQ1C,KAAMc,IACjD2iC,EAAMzhC,QAAU2hC,EAAS3hC,QAAU0hC,EAAQ1hC,UAC7ClB,EAAQkgC,QAAU,CAChBsC,MAAOG,EACPL,QAASO,EACTJ,OAAQG,GAEV1jC,KAAK0C,QAAQ,SAAU1C,KAAMc,GAEjC,CAGA,OAAOqiC,EAAWX,EAAO,GAAKA,CA/GJ,CAgH5B,EAMAG,MAAO,SAASH,EAAQ1hC,GACtBA,EAAUA,EAAUX,EAAE6T,MAAMlT,GAAW,CAAC,EACxC,IAAK,IAAIsR,EAAI,EAAGA,EAAIpS,KAAKwiC,OAAOxgC,OAAQoQ,IACtCpS,KAAKqkC,iBAAiBrkC,KAAKwiC,OAAOpwB,GAAItR,GAMxC,OAJAA,EAAQwjC,eAAiBtkC,KAAKwiC,OAC9BxiC,KAAK0iC,SACLF,EAASxiC,KAAK6iC,IAAIL,EAAQriC,EAAEu8B,OAAO,CAACqE,QAAQ,GAAOjgC,IAC9CA,EAAQigC,QAAQ/gC,KAAK0C,QAAQ,QAAS1C,KAAMc,GAC1C0hC,CACT,EAGA50B,KAAM,SAAS3H,EAAOnF,GACpB,OAAOd,KAAK6iC,IAAI58B,EAAO9F,EAAEu8B,OAAO,CAACwG,GAAIljC,KAAKgC,QAASlB,GACrD,EAGA+E,IAAK,SAAS/E,GACZ,IAAImF,EAAQjG,KAAKkjC,GAAGljC,KAAKgC,OAAS,GAClC,OAAOhC,KAAKqY,OAAOpS,EAAOnF,EAC5B,EAGAyjC,QAAS,SAASt+B,EAAOnF,GACvB,OAAOd,KAAK6iC,IAAI58B,EAAO9F,EAAEu8B,OAAO,CAACwG,GAAI,GAAIpiC,GAC3C,EAGA8G,MAAO,SAAS9G,GACd,IAAImF,EAAQjG,KAAKkjC,GAAG,GACpB,OAAOljC,KAAKqY,OAAOpS,EAAOnF,EAC5B,EAGA+L,MAAO,WACL,OAAOA,EAAMwO,MAAMrb,KAAKwiC,OAAQ33B,UAClC,EAIA4d,IAAK,SAASyV,GACZ,GAAW,MAAPA,EACJ,OAAOl+B,KAAKwkC,MAAMtG,IAChBl+B,KAAKwkC,MAAMxkC,KAAKykC,QAAQzkC,KAAKwjC,SAAStF,GAAOA,EAAIzwB,WAAaywB,EAAKA,EAAIuC,eACvEvC,EAAIkC,KAAOpgC,KAAKwkC,MAAMtG,EAAIkC,IAC9B,EAGAO,IAAK,SAASzC,GACZ,OAAwB,MAAjBl+B,KAAKyoB,IAAIyV,EAClB,EAGAgF,GAAI,SAAS/U,GAEX,OADIA,EAAQ,IAAGA,GAASnuB,KAAKgC,QACtBhC,KAAKwiC,OAAOrU,EACrB,EAIAuW,MAAO,SAASt+B,EAAOu+B,GACrB,OAAO3kC,KAAK2kC,EAAQ,OAAS,UAAUv+B,EACzC,EAIAw+B,UAAW,SAASx+B,GAClB,OAAOpG,KAAK0kC,MAAMt+B,GAAO,EAC3B,EAKAimB,KAAM,SAASvrB,GACb,IAAI2hC,EAAaziC,KAAKyiC,WACtB,IAAKA,EAAY,MAAM,IAAI75B,MAAM,0CACjC9H,IAAYA,EAAU,CAAC,GAEvB,IAAIkB,EAASygC,EAAWzgC,OAUxB,OATI7B,EAAE0kC,WAAWpC,KAAaA,EAAaA,EAAWj/B,KAAKxD,OAG5C,IAAXgC,GAAgB7B,EAAE4jC,SAAStB,GAC7BziC,KAAKwiC,OAASxiC,KAAK8kC,OAAOrC,GAE1BziC,KAAKwiC,OAAOnW,KAAKoW,GAEd3hC,EAAQigC,QAAQ/gC,KAAK0C,QAAQ,OAAQ1C,KAAMc,GACzCd,IACT,EAGA+kC,MAAO,SAASruB,GACd,OAAO1W,KAAK+M,IAAI2J,EAAO,GACzB,EAKAorB,MAAO,SAAShhC,GAEd,IAAIwC,GADJxC,EAAUX,EAAEu8B,OAAO,CAACjiB,OAAO,GAAO3Z,IACZwC,QAClBqF,EAAa3I,KAQjB,OAPAc,EAAQwC,QAAU,SAAS82B,GACzB,IAAIx3B,EAAS9B,EAAQ6hC,MAAQ,QAAU,MACvCh6B,EAAW/F,GAAQw3B,EAAMt5B,GACrBwC,GAASA,EAAQ3C,KAAKG,EAAQsI,QAAST,EAAYyxB,EAAMt5B,GAC7D6H,EAAWjG,QAAQ,OAAQiG,EAAYyxB,EAAMt5B,EAC/C,EACAkhC,EAAUhiC,KAAMc,GACTd,KAAK0gC,KAAK,OAAQ1gC,KAAMc,EACjC,EAKA0D,OAAQ,SAASyB,EAAOnF,GAEtB,IAAIohC,GADJphC,EAAUA,EAAUX,EAAE6T,MAAMlT,GAAW,CAAC,GACrBohC,KAEnB,KADAj8B,EAAQjG,KAAKikC,cAAch+B,EAAOnF,IACtB,OAAO,EACdohC,GAAMliC,KAAK6iC,IAAI58B,EAAOnF,GAC3B,IAAI6H,EAAa3I,KACbsD,EAAUxC,EAAQwC,QAoBtB,OAnBAxC,EAAQwC,QAAU,SAASuc,EAAGua,EAAM4K,GAC9B9C,IACFriB,EAAEqH,IAAI,QAASve,EAAWs8B,sBAAuBt8B,GACjDA,EAAWk6B,IAAIhjB,EAAGmlB,IAEhB1hC,GAASA,EAAQ3C,KAAKqkC,EAAa57B,QAASyW,EAAGua,EAAM4K,EAC3D,EASI9C,GACFj8B,EAAMg5B,KAAK,QAASj/B,KAAKilC,sBAAuBjlC,MAElDiG,EAAMg8B,KAAK,KAAMnhC,GACVmF,CACT,EAIAwU,MAAO,SAAS2f,EAAMt5B,GACpB,OAAOs5B,CACT,EAGApmB,MAAO,WACL,OAAO,IAAIhU,KAAK41B,YAAY51B,KAAKwiC,OAAQ,CACvCv8B,MAAOjG,KAAKiG,MACZw8B,WAAYziC,KAAKyiC,YAErB,EAGAgC,QAAS,SAASr+B,EAAOq6B,GACvB,OAAOr6B,EAAMq6B,GAAezgC,KAAKiG,MAAMgD,UAAUw3B,aAAe,KAClE,EAGAyE,OAAQ,WACN,OAAO,IAAIC,EAAmBnlC,KAAMolC,EACtC,EAGAlZ,KAAM,WACJ,OAAO,IAAIiZ,EAAmBnlC,KAAMqlC,EACtC,EAGApZ,QAAS,WACP,OAAO,IAAIkZ,EAAmBnlC,KAAMslC,EACtC,EAIA5C,OAAQ,WACN1iC,KAAKgC,OAAS,EACdhC,KAAKwiC,OAAS,GACdxiC,KAAKwkC,MAAS,CAAC,CACjB,EAIAP,cAAe,SAAS79B,EAAOtF,GAC7B,OAAId,KAAKwjC,SAASp9B,IACXA,EAAMuC,aAAYvC,EAAMuC,WAAa3I,MACnCoG,KAETtF,EAAUA,EAAUX,EAAE6T,MAAMlT,GAAW,CAAC,GAChC6H,WAAa3I,MAInBiG,EADEjG,KAAKiG,MAAMgD,UACL,IAAIjJ,KAAKiG,MAAMG,EAAOtF,GAGtBd,KAAKiG,MAAMG,EAAOtF,IAGjB0/B,iBACXxgC,KAAK0C,QAAQ,UAAW1C,KAAMiG,EAAMu6B,gBAAiB1/B,IAC9C,GAF4BmF,GARnC,IAAIA,CAWN,EAGAo9B,cAAe,SAASb,EAAQ1hC,GAE9B,IADA,IAAIsiC,EAAU,GACLhxB,EAAI,EAAGA,EAAIowB,EAAOxgC,OAAQoQ,IAAK,CACtC,IAAInM,EAAQjG,KAAKyoB,IAAI+Z,EAAOpwB,IAC5B,GAAKnM,EAAL,CAEA,IAAIkoB,EAAQnuB,KAAK0F,QAAQO,GACzBjG,KAAKwiC,OAAOQ,OAAO7U,EAAO,GAC1BnuB,KAAKgC,gBAIEhC,KAAKwkC,MAAMv+B,EAAMm6B,KACxB,IAAI76B,EAAKvF,KAAKykC,QAAQx+B,EAAMwH,WAAYxH,EAAMw6B,aACpC,MAANl7B,UAAmBvF,KAAKwkC,MAAMj/B,GAE7BzE,EAAQigC,SACXjgC,EAAQqtB,MAAQA,EAChBloB,EAAMvD,QAAQ,SAAUuD,EAAOjG,KAAMc,IAGvCsiC,EAAQx1B,KAAK3H,GACbjG,KAAKqkC,iBAAiBp+B,EAAOnF,EAlBT,CAmBtB,CAEA,OADI0hC,EAAOxgC,OAAS,IAAMlB,EAAQigC,eAAejgC,EAAQqtB,MAClDiV,CACT,EAIAI,SAAU,SAASv9B,GACjB,OAAOA,aAAiBi6B,CAC1B,EAGAgE,cAAe,SAASj+B,EAAOnF,GAC7Bd,KAAKwkC,MAAMv+B,EAAMm6B,KAAOn6B,EACxB,IAAIV,EAAKvF,KAAKykC,QAAQx+B,EAAMwH,WAAYxH,EAAMw6B,aACpC,MAANl7B,IAAYvF,KAAKwkC,MAAMj/B,GAAMU,GACjCA,EAAMyS,GAAG,MAAO1Y,KAAKulC,cAAevlC,KACtC,EAGAqkC,iBAAkB,SAASp+B,EAAOnF,UACzBd,KAAKwkC,MAAMv+B,EAAMm6B,KACxB,IAAI76B,EAAKvF,KAAKykC,QAAQx+B,EAAMwH,WAAYxH,EAAMw6B,aACpC,MAANl7B,UAAmBvF,KAAKwkC,MAAMj/B,GAC9BvF,OAASiG,EAAM0C,mBAAmB1C,EAAM0C,WAC5C1C,EAAMihB,IAAI,MAAOlnB,KAAKulC,cAAevlC,KACvC,EAMAulC,cAAe,SAAS3e,EAAO3gB,EAAO0C,EAAY7H,GAChD,GAAImF,EAAO,CACT,IAAe,QAAV2gB,GAA6B,WAAVA,IAAuBje,IAAe3I,KAAM,OAEpE,GADc,YAAV4mB,GAAqB5mB,KAAKqY,OAAOpS,EAAOnF,GAC9B,aAAV8lB,EAAsB,CACxB,IAAI2a,EAASvhC,KAAKykC,QAAQx+B,EAAM47B,qBAAsB57B,EAAMw6B,aACxDl7B,EAAKvF,KAAKykC,QAAQx+B,EAAMwH,WAAYxH,EAAMw6B,aAChC,MAAVc,UAAuBvhC,KAAKwkC,MAAMjD,GAC5B,MAANh8B,IAAYvF,KAAKwkC,MAAMj/B,GAAMU,EACnC,CACF,CACAjG,KAAK0C,QAAQ2Y,MAAMrb,KAAM6K,UAC3B,EAOAo6B,sBAAuB,SAASh/B,EAAO0C,EAAY7H,GAG7Cd,KAAK2gC,IAAI16B,IACbjG,KAAKulC,cAAc,QAASt/B,EAAO0C,EAAY7H,EACjD,IAMF,IAAI0kC,EAA+B,mBAAX9Z,QAAyBA,OAAO+Z,SACpDD,IACFh9B,EAAWS,UAAUu8B,GAAch9B,EAAWS,UAAUi8B,QAU1D,IAAIC,EAAqB,SAASx8B,EAAY+8B,GAC5C1lC,KAAK2lC,YAAch9B,EACnB3I,KAAK4lC,MAAQF,EACb1lC,KAAK6lC,OAAS,CAChB,EAKIT,EAAkB,EAClBC,EAAgB,EAChBC,EAAsB,EAGtBE,IACFL,EAAmBl8B,UAAUu8B,GAAc,WACzC,OAAOxlC,IACT,GAGFmlC,EAAmBl8B,UAAU68B,KAAO,WAClC,GAAI9lC,KAAK2lC,YAAa,CAGpB,GAAI3lC,KAAK6lC,OAAS7lC,KAAK2lC,YAAY3jC,OAAQ,CACzC,IAIIkC,EAJA+B,EAAQjG,KAAK2lC,YAAYzC,GAAGljC,KAAK6lC,QAKrC,GAJA7lC,KAAK6lC,SAID7lC,KAAK4lC,QAAUR,EACjBlhC,EAAQ+B,MACH,CACL,IAAIV,EAAKvF,KAAK2lC,YAAYlB,QAAQx+B,EAAMwH,WAAYxH,EAAMw6B,aAExDv8B,EADElE,KAAK4lC,QAAUP,EACT9/B,EAEA,CAACA,EAAIU,EAEjB,CACA,MAAO,CAAC/B,MAAOA,EAAO0W,MAAM,EAC9B,CAIA5a,KAAK2lC,iBAAc,CACrB,CAEA,MAAO,CAACzhC,WAAO,EAAQ0W,MAAM,EAC/B,EAeA,IAAImrB,EAAOp/B,EAASo/B,KAAO,SAASjlC,GAClCd,KAAKogC,IAAMjgC,EAAEi+B,SAAS,QACtBp+B,KAAKmgC,cAAc9kB,MAAMrb,KAAM6K,WAC/B1K,EAAEu8B,OAAO18B,KAAMG,EAAE2P,KAAKhP,EAASklC,IAC/BhmC,KAAKimC,iBACLjmC,KAAKugC,WAAWllB,MAAMrb,KAAM6K,UAC9B,EAGIq7B,EAAwB,iBAGxBF,EAAc,CAAC,QAAS,aAAc,KAAM,KAAM,aAAc,YAAa,UAAW,UAG5F7lC,EAAEu8B,OAAOqJ,EAAK98B,UAAWm0B,EAAQ,CAG/B+I,QAAS,MAIT7lC,EAAG,SAAS2b,GACV,OAAOjc,KAAKwC,IAAIT,KAAKka,EACvB,EAIAkkB,cAAe,WAAW,EAI1BI,WAAY,WAAW,EAKvB6F,OAAQ,WACN,OAAOpmC,IACT,EAIAqY,OAAQ,WAGN,OAFArY,KAAKqmC,iBACLrmC,KAAK2+B,gBACE3+B,IACT,EAKAqmC,eAAgB,WACdrmC,KAAKwC,IAAI6V,QACX,EAIAiuB,WAAY,SAASC,GAInB,OAHAvmC,KAAKwmC,mBACLxmC,KAAKymC,YAAYF,GACjBvmC,KAAK0mC,iBACE1mC,IACT,EAOAymC,YAAa,SAASE,GACpB3mC,KAAKwC,IAAMmkC,aAAchgC,EAASrG,EAAIqmC,EAAKhgC,EAASrG,EAAEqmC,GACtD3mC,KAAK2mC,GAAK3mC,KAAKwC,IAAI,EACrB,EAeAkkC,eAAgB,SAASlJ,GAEvB,GADAA,IAAWA,EAASr9B,EAAE2E,OAAO9E,KAAM,YAC9Bw9B,EAAQ,OAAOx9B,KAEpB,IAAK,IAAI+D,KADT/D,KAAKwmC,mBACWhJ,EAAQ,CACtB,IAAI56B,EAAS46B,EAAOz5B,GAEpB,GADK5D,EAAE0kC,WAAWjiC,KAASA,EAAS5C,KAAK4C,IACpCA,EAAL,CACA,IAAIyd,EAAQtc,EAAIsc,MAAM6lB,GACtBlmC,KAAK4mC,SAASvmB,EAAM,GAAIA,EAAM,GAAIzd,EAAOY,KAAKxD,MAFzB,CAGvB,CACA,OAAOA,IACT,EAKA4mC,SAAU,SAASC,EAAW5qB,EAAU+jB,GAEtC,OADAhgC,KAAKwC,IAAIkW,GAAGmuB,EAAY,kBAAoB7mC,KAAKogC,IAAKnkB,EAAU+jB,GACzDhgC,IACT,EAKAwmC,iBAAkB,WAEhB,OADIxmC,KAAKwC,KAAKxC,KAAKwC,IAAI0kB,IAAI,kBAAoBlnB,KAAKogC,KAC7CpgC,IACT,EAIA8mC,WAAY,SAASD,EAAW5qB,EAAU+jB,GAExC,OADAhgC,KAAKwC,IAAI0kB,IAAI2f,EAAY,kBAAoB7mC,KAAKogC,IAAKnkB,EAAU+jB,GAC1DhgC,IACT,EAIA+mC,eAAgB,SAASZ,GACvB,OAAO58B,SAASyM,cAAcmwB,EAChC,EAMAF,eAAgB,WACd,GAAKjmC,KAAK2mC,GAOR3mC,KAAKsmC,WAAWnmC,EAAE2E,OAAO9E,KAAM,WAPnB,CACZ,IAAIoG,EAAQjG,EAAEu8B,OAAO,CAAC,EAAGv8B,EAAE2E,OAAO9E,KAAM,eACpCA,KAAKuF,KAAIa,EAAMb,GAAKpF,EAAE2E,OAAO9E,KAAM,OACnCA,KAAKgnC,YAAW5gC,EAAa,MAAIjG,EAAE2E,OAAO9E,KAAM,cACpDA,KAAKsmC,WAAWtmC,KAAK+mC,eAAe5mC,EAAE2E,OAAO9E,KAAM,aACnDA,KAAKinC,eAAe7gC,EACtB,CAGF,EAIA6gC,eAAgB,SAASx5B,GACvBzN,KAAKwC,IAAIkU,KAAKjJ,EAChB,IAWF,IAsBIy5B,EAAuB,SAASC,EAAO7E,EAAMzO,EAASuT,GACxDjnC,EAAEE,KAAKwzB,GAAS,SAAS7xB,EAAQY,GAC3B0/B,EAAK1/B,KAASukC,EAAMl+B,UAAUrG,GAxBtB,SAAS0/B,EAAMtgC,EAAQY,EAAQwkC,GAC7C,OAAQplC,GACN,KAAK,EAAG,OAAO,WACb,OAAOsgC,EAAK1/B,GAAQ5C,KAAKonC,GAC3B,EACA,KAAK,EAAG,OAAO,SAASljC,GACtB,OAAOo+B,EAAK1/B,GAAQ5C,KAAKonC,GAAYljC,EACvC,EACA,KAAK,EAAG,OAAO,SAASq5B,EAAUn0B,GAChC,OAAOk5B,EAAK1/B,GAAQ5C,KAAKonC,GAAYC,EAAG9J,EAAUv9B,MAAOoJ,EAC3D,EACA,KAAK,EAAG,OAAO,SAASm0B,EAAU+J,EAAYl+B,GAC5C,OAAOk5B,EAAK1/B,GAAQ5C,KAAKonC,GAAYC,EAAG9J,EAAUv9B,MAAOsnC,EAAYl+B,EACvE,EACA,QAAS,OAAO,WACd,IAAIi2B,EAAOxyB,EAAMlM,KAAKkK,WAEtB,OADAw0B,EAAKkF,QAAQvkC,KAAKonC,IACX9E,EAAK1/B,GAAQyY,MAAMinB,EAAMjD,EAClC,EAEJ,CAIgDkI,CAAUjF,EAAMtgC,EAAQY,EAAQwkC,GAC9E,GACF,EAGIC,EAAK,SAAS9J,EAAUiK,GAC1B,OAAIrnC,EAAE0kC,WAAWtH,GAAkBA,EAC/Bp9B,EAAEsnC,SAASlK,KAAciK,EAAShE,SAASjG,GAAkBmK,EAAanK,GAC1Ep9B,EAAE4jC,SAASxG,GAAkB,SAASt3B,GAAS,OAAOA,EAAMwiB,IAAI8U,EAAW,EACxEA,CACT,EACImK,EAAe,SAASthC,GAC1B,IAAIuhC,EAAUxnC,EAAEigB,QAAQha,GACxB,OAAO,SAASH,GACd,OAAO0hC,EAAQ1hC,EAAMwH,WACvB,CACF,EAsBAtN,EAAEE,KAAK,CACL,CAACmI,EAlBqB,CAAC0E,QAAS,EAAG7M,KAAM,EAAG0M,IAAK,EAAG66B,QAAS,EAAG9Z,OAAQ,EACxE+Z,MAAO,EAAGC,OAAQ,EAAGC,YAAa,EAAGC,MAAO,EAAGjmC,KAAM,EAAGkmC,OAAQ,EAAG35B,OAAQ,EAC3E45B,OAAQ,EAAG7xB,OAAQ,EAAGid,MAAO,EAAGmM,IAAK,EAAG2E,KAAM,EAAG+D,IAAK,EAAGC,QAAS,EAAGz4B,SAAU,EAC/E04B,SAAU,EAAGC,OAAQ,EAAG70B,IAAK,EAAGwC,IAAK,EAAGsyB,QAAS,EAAGl0B,KAAM,EAAGswB,MAAO,EACpE6D,KAAM,EAAGC,KAAM,EAAGC,QAAS,EAAGC,KAAM,EAAGhgB,KAAM,EAAGigB,KAAM,EAAGC,KAAM,EAC/DC,QAAS,EAAGC,WAAY,EAAGrjC,QAAS,EAAGsjC,QAAS,EAAG/kB,YAAa,EAChE4a,QAAS,EAAGoK,MAAO,EAAGC,OAAQ,EAAGC,UAAW,EAAGC,QAAS,EAAGC,QAAS,EACpEvE,OAAQ,EAAGwE,QAAS,EAAGC,UAAW,EAAGC,cAAe,GAWpB,UAChC,CAACtJ,EAPgB,CAAChU,KAAM,EAAGgZ,OAAQ,EAAGuE,MAAO,EAAGC,OAAQ,EAAG55B,KAAM,EACjE65B,KAAM,EAAGV,MAAO,EAAGpK,QAAS,GAMN,gBACrB,SAAS7Z,GACV,IAAI4kB,EAAO5kB,EAAO,GACd6O,EAAU7O,EAAO,GACjBoiB,EAAYpiB,EAAO,GAEvB4kB,EAAKpN,MAAQ,SAAS0B,GACpB,IAAI2L,EAAW1pC,EAAE2tB,OAAO3tB,EAAE2pC,UAAU5L,IAAM,SAAS6L,EAAMt+B,GAEvD,OADAs+B,EAAKt+B,GAAQ,EACNs+B,CACT,GAAG,CAAC,GACJ7C,EAAqB0C,EAAM1L,EAAK2L,EAAUzC,EAC5C,EAEAF,EAAqB0C,EAAMzpC,EAAG0zB,EAASuT,EACzC,IAoBAzgC,EAAS+5B,KAAO,SAAS99B,EAAQqD,EAAOnF,GACtC,IAAImC,EAAOsB,EAAU3B,GAGrBzC,EAAEmgC,SAASx/B,IAAYA,EAAU,CAAC,GAAI,CACpCm8B,YAAat2B,EAASs2B,YACtBC,YAAav2B,EAASu2B,cAIxB,IAAI50B,EAAS,CAACrF,KAAMA,EAAM+mC,SAAU,QAqBpC,GAlBKlpC,EAAQqC,MACXmF,EAAOnF,IAAMhD,EAAE2E,OAAOmB,EAAO,QAAU4C,KAIrB,MAAhB/H,EAAQuC,OAAgB4C,GAAqB,WAAXrD,GAAkC,WAAXA,GAAkC,UAAXA,IAClF0F,EAAO2hC,YAAc,mBACrB3hC,EAAOjF,KAAOyF,KAAKC,UAAUjI,EAAQsF,OAASH,EAAMS,OAAO5F,KAIzDA,EAAQo8B,cACV50B,EAAO2hC,YAAc,oCACrB3hC,EAAOjF,KAAOiF,EAAOjF,KAAO,CAAC4C,MAAOqC,EAAOjF,MAAQ,CAAC,GAKlDvC,EAAQm8B,cAAyB,QAATh6B,GAA2B,WAATA,GAA8B,UAATA,GAAmB,CACpFqF,EAAOrF,KAAO,OACVnC,EAAQo8B,cAAa50B,EAAOjF,KAAK6mC,QAAUjnC,GAC/C,IAAIknC,EAAarpC,EAAQqpC,WACzBrpC,EAAQqpC,WAAa,SAASjiC,GAE5B,GADAA,EAAIkiC,iBAAiB,yBAA0BnnC,GAC3CknC,EAAY,OAAOA,EAAW9uB,MAAMrb,KAAM6K,UAChD,CACF,CAGoB,QAAhBvC,EAAOrF,MAAmBnC,EAAQo8B,cACpC50B,EAAOU,aAAc,GAIvB,IAAItI,EAAQI,EAAQJ,MACpBI,EAAQJ,MAAQ,SAASwH,EAAKgB,EAAYC,GACxCrI,EAAQoI,WAAaA,EACrBpI,EAAQqI,YAAcA,EAClBzI,GAAOA,EAAMC,KAAKG,EAAQsI,QAASlB,EAAKgB,EAAYC,EAC1D,EAGA,IAAIjB,EAAMpH,EAAQoH,IAAMvB,EAAS0jC,KAAKlqC,EAAEu8B,OAAOp0B,EAAQxH,IAEvD,OADAmF,EAAMvD,QAAQ,UAAWuD,EAAOiC,EAAKpH,GAC9BoH,CACT,EAGA,IAAI3D,EAAY,CACd,OAAU,OACV,OAAU,MACV,MAAS,QACT,OAAU,SACV,KAAQ,OAKVoC,EAAS0jC,KAAO,WACd,OAAO1jC,EAASrG,EAAE+pC,KAAKhvB,MAAM1U,EAASrG,EAAGuK,UAC3C,EAOA,IAAIy/B,EAAS3jC,EAAS2jC,OAAS,SAASxpC,GACtCA,IAAYA,EAAU,CAAC,GACvBd,KAAKmgC,cAAc9kB,MAAMrb,KAAM6K,WAC3B/J,EAAQypC,SAAQvqC,KAAKuqC,OAASzpC,EAAQypC,QAC1CvqC,KAAKwqC,cACLxqC,KAAKugC,WAAWllB,MAAMrb,KAAM6K,UAC9B,EAII4/B,EAAgB,aAChBC,EAAgB,eAChBC,EAAgB,SAChBC,EAAgB,2BAGpBzqC,EAAEu8B,OAAO4N,EAAOrhC,UAAWm0B,EAAQ,CAIjC+C,cAAe,WAAW,EAI1BI,WAAY,WAAW,EAQvBsK,MAAO,SAASA,EAAOp/B,EAAM1L,GACtBI,EAAE2qC,SAASD,KAAQA,EAAQ7qC,KAAK+qC,eAAeF,IAChD1qC,EAAE0kC,WAAWp5B,KACf1L,EAAW0L,EACXA,EAAO,IAEJ1L,IAAUA,EAAWC,KAAKyL,IAC/B,IAAIu/B,EAAShrC,KASb,OARA2G,EAASgX,QAAQktB,MAAMA,GAAO,SAASI,GACrC,IAAI5L,EAAO2L,EAAOE,mBAAmBL,EAAOI,IACC,IAAzCD,EAAOG,QAAQprC,EAAUs/B,EAAM5zB,KACjCu/B,EAAOtoC,QAAQ2Y,MAAM2vB,EAAQ,CAAC,SAAWv/B,GAAM0e,OAAOkV,IACtD2L,EAAOtoC,QAAQ,QAAS+I,EAAM4zB,GAC9B14B,EAASgX,QAAQjb,QAAQ,QAASsoC,EAAQv/B,EAAM4zB,GAEpD,IACOr/B,IACT,EAIAmrC,QAAS,SAASprC,EAAUs/B,EAAM5zB,GAC5B1L,GAAUA,EAASsb,MAAMrb,KAAMq/B,EACrC,EAGA+L,SAAU,SAASH,EAAUnqC,GAE3B,OADA6F,EAASgX,QAAQytB,SAASH,EAAUnqC,GAC7Bd,IACT,EAKAwqC,YAAa,WACX,GAAKxqC,KAAKuqC,OAAV,CACAvqC,KAAKuqC,OAASpqC,EAAE2E,OAAO9E,KAAM,UAE7B,IADA,IAAI6qC,EAAON,EAASpqC,EAAE+rB,KAAKlsB,KAAKuqC,QACC,OAAzBM,EAAQN,EAAO1kC,QACrB7F,KAAK6qC,MAAMA,EAAO7qC,KAAKuqC,OAAOM,GAJR,CAM1B,EAIAE,eAAgB,SAASF,GAOvB,OANAA,EAAQA,EAAM51B,QAAQ21B,EAAc,QACnC31B,QAAQw1B,EAAe,WACvBx1B,QAAQy1B,GAAY,SAASrqB,EAAOgrB,GACnC,OAAOA,EAAWhrB,EAAQ,UAC5B,IACCpL,QAAQ01B,EAAY,YACd,IAAI7gB,OAAO,IAAM+gB,EAAQ,uBAClC,EAKAK,mBAAoB,SAASL,EAAOI,GAClC,IAAI3iC,EAASuiC,EAAM7e,KAAKif,GAAUp+B,MAAM,GACxC,OAAO1M,EAAE4M,IAAIzE,GAAQ,SAASgjC,EAAOl5B,GAEnC,OAAIA,IAAM9J,EAAOtG,OAAS,EAAUspC,GAAS,KACtCA,EAAQljB,mBAAmBkjB,GAAS,IAC7C,GACF,IAYF,IAAIxrB,EAAUnZ,EAASmZ,QAAU,WAC/B9f,KAAKy+B,SAAW,GAChBz+B,KAAKurC,SAAWvrC,KAAKurC,SAAS/nC,KAAKxD,MAGb,oBAAX0D,SACT1D,KAAK6d,SAAWna,OAAOma,SACvB7d,KAAK2d,QAAUja,OAAOia,QAE1B,EAGI6tB,EAAgB,eAGhBC,EAAe,aAGfC,EAAe,OAGnB5rB,EAAQ6rB,SAAU,EAGlBxrC,EAAEu8B,OAAO5c,EAAQ7W,UAAWm0B,EAAQ,CAIlC5Z,SAAU,GAGVooB,OAAQ,WAEN,OADW5rC,KAAK6d,SAASC,SAAS7I,QAAQ,SAAU,SACpCjV,KAAK2M,OAAS3M,KAAK6rC,WACrC,EAGAC,UAAW,WAGT,OAFW9rC,KAAK+rC,eAAe/rC,KAAK6d,SAASC,UACzBjR,MAAM,EAAG7M,KAAK2M,KAAK3K,OAAS,GAAK,MACjChC,KAAK2M,IAC3B,EAKAo/B,eAAgB,SAASd,GACvB,OAAOe,UAAUf,EAASh2B,QAAQ,OAAQ,SAC5C,EAIA42B,UAAW,WACT,IAAIxrB,EAAQrgB,KAAK6d,SAAS3Y,KAAK+P,QAAQ,MAAO,IAAIoL,MAAM,QACxD,OAAOA,EAAQA,EAAM,GAAK,EAC5B,EAIAuO,QAAS,SAASlrB,GAChB,IAAI2c,GAAS3c,GAAU1D,MAAM6d,SAAS3Y,KAAKmb,MAAM,UACjD,OAAOA,EAAQA,EAAM,GAAK,EAC5B,EAGA5T,QAAS,WACP,IAAIH,EAAOtM,KAAK+rC,eACd/rC,KAAK6d,SAASC,SAAW9d,KAAK6rC,aAC9Bh/B,MAAM7M,KAAK2M,KAAK3K,OAAS,GAC3B,MAA0B,MAAnBsK,EAAKsT,OAAO,GAAatT,EAAKO,MAAM,GAAKP,CAClD,EAGA2/B,YAAa,SAAShB,GAQpB,OAPgB,MAAZA,IAEAA,EADEjrC,KAAKksC,gBAAkBlsC,KAAKmsC,iBACnBnsC,KAAKyM,UAELzM,KAAK4uB,WAGbqc,EAASh2B,QAAQu2B,EAAe,GACzC,EAIAY,MAAO,SAAStrC,GACd,GAAIgf,EAAQ6rB,QAAS,MAAM,IAAI/iC,MAAM,6CAqBrC,GApBAkX,EAAQ6rB,SAAU,EAIlB3rC,KAAKc,QAAmBX,EAAEu8B,OAAO,CAAC/vB,KAAM,KAAM3M,KAAKc,QAASA,GAC5Dd,KAAK2M,KAAmB3M,KAAKc,QAAQ6L,KACrC3M,KAAKqsC,eAAmBrsC,KAAKc,QAAQwrC,cACrCtsC,KAAKmsC,kBAA+C,IAA5BnsC,KAAKc,QAAQyrC,WACrCvsC,KAAKwsC,eAAmB,iBAAkB9oC,cAAqC,IAA1B6F,SAASkjC,cAA2BljC,SAASkjC,aAAe,GACjHzsC,KAAK0sC,eAAmB1sC,KAAKmsC,kBAAoBnsC,KAAKwsC,eACtDxsC,KAAK2sC,kBAAqB3sC,KAAKc,QAAQ8c,UACvC5d,KAAK4sC,iBAAsB5sC,KAAK2d,UAAW3d,KAAK2d,QAAQC,WACxD5d,KAAKksC,cAAmBlsC,KAAK2sC,iBAAmB3sC,KAAK4sC,cACrD5sC,KAAKirC,SAAmBjrC,KAAKisC,cAG7BjsC,KAAK2M,MAAQ,IAAM3M,KAAK2M,KAAO,KAAKsI,QAAQw2B,EAAc,KAItDzrC,KAAKmsC,kBAAoBnsC,KAAK2sC,gBAAiB,CAIjD,IAAK3sC,KAAK4sC,gBAAkB5sC,KAAK4rC,SAAU,CACzC,IAAIiB,EAAW7sC,KAAK2M,KAAKE,MAAM,GAAI,IAAM,IAGzC,OAFA7M,KAAK6d,SAAS5I,QAAQ43B,EAAW,IAAM7sC,KAAKyM,YAErC,CAIT,CAAWzM,KAAK4sC,eAAiB5sC,KAAK4rC,UACpC5rC,KAAKorC,SAASprC,KAAK4uB,UAAW,CAAC3Z,SAAS,GAG5C,CAKA,IAAKjV,KAAKwsC,gBAAkBxsC,KAAKmsC,mBAAqBnsC,KAAKksC,cAAe,CACxElsC,KAAKsa,OAAS/Q,SAASyM,cAAc,UACrChW,KAAKsa,OAAOvE,IAAM,eAClB/V,KAAKsa,OAAOiE,MAAMuuB,QAAU,OAC5B9sC,KAAKsa,OAAOyyB,UAAY,EACxB,IAAIplC,EAAO4B,SAAS5B,KAEhBqlC,EAAUrlC,EAAKslC,aAAajtC,KAAKsa,OAAQ3S,EAAKulC,YAAYC,cAC9DH,EAAQzjC,SAAS6jC,OACjBJ,EAAQzjC,SAAS6O,QACjB40B,EAAQnvB,SAASgB,KAAO,IAAM7e,KAAKirC,QACrC,CAGA,IAAInwB,EAAmBpX,OAAOoX,kBAAoB,SAAS+rB,EAAW7G,GACpE,OAAOqN,YAAY,KAAOxG,EAAW7G,EACvC,EAYA,GARIhgC,KAAKksC,cACPpxB,EAAiB,WAAY9a,KAAKurC,UAAU,GACnCvrC,KAAK0sC,iBAAmB1sC,KAAKsa,OACtCQ,EAAiB,aAAc9a,KAAKurC,UAAU,GACrCvrC,KAAKmsC,mBACdnsC,KAAKstC,kBAAoBznB,YAAY7lB,KAAKurC,SAAUvrC,KAAKwjB,YAGtDxjB,KAAKc,QAAQigC,OAAQ,OAAO/gC,KAAKutC,SACxC,EAIApxB,KAAM,WAEJ,IAAIqxB,EAAsB9pC,OAAO8pC,qBAAuB,SAAS3G,EAAW7G,GAC1E,OAAOyN,YAAY,KAAO5G,EAAW7G,EACvC,EAGIhgC,KAAKksC,cACPsB,EAAoB,WAAYxtC,KAAKurC,UAAU,GACtCvrC,KAAK0sC,iBAAmB1sC,KAAKsa,QACtCkzB,EAAoB,aAAcxtC,KAAKurC,UAAU,GAI/CvrC,KAAKsa,SACP/Q,SAAS5B,KAAK4a,YAAYviB,KAAKsa,QAC/Bta,KAAKsa,OAAS,MAIZta,KAAKstC,mBAAmBxnB,cAAc9lB,KAAKstC,mBAC/CxtB,EAAQ6rB,SAAU,CACpB,EAIAd,MAAO,SAASA,EAAO9qC,GACrBC,KAAKy+B,SAAS8F,QAAQ,CAACsG,MAAOA,EAAO9qC,SAAUA,GACjD,EAIAwrC,SAAU,SAASj2B,GACjB,IAAI8rB,EAAUphC,KAAKisC,cAQnB,GAJI7K,IAAYphC,KAAKirC,UAAYjrC,KAAKsa,SACpC8mB,EAAUphC,KAAK4uB,QAAQ5uB,KAAKsa,OAAO6yB,gBAGjC/L,IAAYphC,KAAKirC,SACnB,OAAKjrC,KAAK8rC,aAAoB9rC,KAAK0tC,WAGjC1tC,KAAKsa,QAAQta,KAAKorC,SAAShK,GAC/BphC,KAAKutC,SACP,EAKAA,QAAS,SAAStC,GAEhB,OAAKjrC,KAAK8rC,aACVb,EAAWjrC,KAAKirC,SAAWjrC,KAAKisC,YAAYhB,GACrC9qC,EAAEikC,KAAKpkC,KAAKy+B,UAAU,SAASzf,GACpC,GAAIA,EAAQ6rB,MAAMxd,KAAK4d,GAErB,OADAjsB,EAAQjf,SAASkrC,IACV,CAEX,KAAMjrC,KAAK0tC,YAPmB1tC,KAAK0tC,UAQrC,EAKAA,SAAU,WAER,OADA1tC,KAAK0C,QAAQ,aACN,CACT,EASA0oC,SAAU,SAASH,EAAUnqC,GAC3B,IAAKgf,EAAQ6rB,QAAS,OAAO,EACxB7qC,IAAuB,IAAZA,IAAkBA,EAAU,CAAC4B,UAAW5B,IAGxDmqC,EAAWjrC,KAAKisC,YAAYhB,GAAY,IAGxC,IAAI4B,EAAW7sC,KAAK2M,KACf3M,KAAKqsC,gBAAgC,KAAbpB,GAA0C,MAAvBA,EAASrrB,OAAO,KAC9DitB,EAAWA,EAAShgC,MAAM,GAAI,IAAM,KAEtC,IAAI1J,EAAM0pC,EAAW5B,EAGrBA,EAAWA,EAASh2B,QAAQy2B,EAAc,IAG1C,IAAIiC,EAAkB3tC,KAAK+rC,eAAed,GAE1C,GAAIjrC,KAAKirC,WAAa0C,EAAtB,CAIA,GAHA3tC,KAAKirC,SAAW0C,EAGZ3tC,KAAKksC,cACPlsC,KAAK2d,QAAQ7c,EAAQmU,QAAU,eAAiB,aAAa,CAAC,EAAG1L,SAASc,MAAOlH,OAI5E,KAAInD,KAAKmsC,iBAmBd,OAAOnsC,KAAK6d,SAAS/W,OAAO3D,GAjB5B,GADAnD,KAAK4tC,YAAY5tC,KAAK6d,SAAUotB,EAAUnqC,EAAQmU,SAC9CjV,KAAKsa,QAAU2wB,IAAajrC,KAAK4uB,QAAQ5uB,KAAKsa,OAAO6yB,eAAgB,CACvE,IAAIH,EAAUhtC,KAAKsa,OAAO6yB,cAKrBrsC,EAAQmU,UACX+3B,EAAQzjC,SAAS6jC,OACjBJ,EAAQzjC,SAAS6O,SAGnBpY,KAAK4tC,YAAYZ,EAAQnvB,SAAUotB,EAAUnqC,EAAQmU,QACvD,CAMF,CACA,OAAInU,EAAQ4B,QAAgB1C,KAAKutC,QAAQtC,QAAzC,CA9B6C,CA+B/C,EAIA2C,YAAa,SAAS/vB,EAAUotB,EAAUh2B,GACxC,GAAIA,EAAS,CACX,IAAI/P,EAAO2Y,EAAS3Y,KAAK+P,QAAQ,qBAAsB,IACvD4I,EAAS5I,QAAQ/P,EAAO,IAAM+lC,EAChC,MAEEptB,EAASgB,KAAO,IAAMosB,CAE1B,IAKFtkC,EAASgX,QAAU,IAAImC,EAqCvBogB,EAAMxD,OAASl0B,EAAWk0B,OAAS4N,EAAO5N,OAASqJ,EAAKrJ,OAAS5c,EAAQ4c,OA7B5D,SAASmR,EAAYC,GAChC,IACIC,EADA92B,EAASjX,KAwBb,OAjBE+tC,EADEF,GAAc1tC,EAAEwgC,IAAIkN,EAAY,eAC1BA,EAAWjY,YAEX,WAAY,OAAO3e,EAAOoE,MAAMrb,KAAM6K,UAAY,EAI5D1K,EAAEu8B,OAAOqR,EAAO92B,EAAQ62B,GAIxBC,EAAM9kC,UAAY9I,EAAEqE,OAAOyS,EAAOhO,UAAW4kC,GAC7CE,EAAM9kC,UAAU2sB,YAAcmY,EAI9BA,EAAMC,UAAY/2B,EAAOhO,UAElB8kC,CACT,EAMA,IAAIllC,EAAW,WACb,MAAM,IAAID,MAAM,iDAClB,EAGIo5B,EAAY,SAAS/7B,EAAOnF,GAC9B,IAAIJ,EAAQI,EAAQJ,MACpBI,EAAQJ,MAAQ,SAAS05B,GACnB15B,GAAOA,EAAMC,KAAKG,EAAQsI,QAASnD,EAAOm0B,EAAMt5B,GACpDmF,EAAMvD,QAAQ,QAASuD,EAAOm0B,EAAMt5B,EACtC,CACF,EASA,OAJA6F,EAASsnC,OAAS,WAChB,MAAO,CAACthC,KAAMA,EAAMxM,EAAGA,EACzB,EAEOwG,CACT,CAvlEsBunC,CAAQvhC,EAAMkwB,EAAS18B,EAAGG,EAC3C,yHCjBD6tC,QAA0B,GAA4B,KAE1DA,EAAwBvgC,KAAK,CAACwgC,EAAO7oC,GAAI,iDAAkD,GAAG,CAAC,QAAU,EAAE,QAAU,CAAC,yDAAyD,MAAQ,GAAG,SAAW,mBAAmB,eAAiB,CAAC,8CAA8C,WAAa,MAErS,4FCJI4oC,QAA0B,GAA4B,KAE1DA,EAAwBvgC,KAAK,CAACwgC,EAAO7oC,GAAI,8OAA+O,GAAG,CAAC,QAAU,EAAE,QAAU,CAAC,uDAAuD,MAAQ,GAAG,SAAW,uGAAuG,eAAiB,CAAC,4PAA4P,WAAa,MAElwB,4FCJI4oC,QAA0B,GAA4B,KAE1DA,EAAwBvgC,KAAK,CAACwgC,EAAO7oC,GAAI,oKAAqK,GAAG,CAAC,QAAU,EAAE,QAAU,CAAC,mEAAmE,MAAQ,GAAG,SAAW,wEAAwE,eAAiB,CAAC,wKAAwK,WAAa,MAEjlB,4FCJI4oC,QAA0B,GAA4B,KAE1DA,EAAwBvgC,KAAK,CAACwgC,EAAO7oC,GAAI,kWAAmW,GAAG,CAAC,QAAU,EAAE,QAAU,CAAC,2DAA2D,MAAQ,GAAG,SAAW,4JAA4J,eAAiB,CAAC,mZAAmZ,WAAa,MAEtkC,4FCJI4oC,QAA0B,GAA4B,KAE1DA,EAAwBvgC,KAAK,CAACwgC,EAAO7oC,GAAI,keAAme,GAAG,CAAC,QAAU,EAAE,QAAU,CAAC,wCAAwC,MAAQ,GAAG,SAAW,+MAA+M,eAAiB,CAAC,osBAAosB,WAAa,MAEvhD,4FCJI4oC,QAA0B,GAA4B,KAE1DA,EAAwBvgC,KAAK,CAACwgC,EAAO7oC,GAAI,2HAOtC,GAAG,CAAC,QAAU,EAAE,QAAU,CAAC,4DAA4D,MAAQ,GAAG,SAAW,8CAA8C,eAAiB,CAAC,moGAA4nG,WAAa,MAEzzG,qBCTmB,oBAARyB,MAAuBA,IAAM,CAAC,GAEzCA,IAAIqnC,cAAgB,CAChB,IAAK,OACL,IAAK,OACL,IAAK,QACL,IAAK,SACL,IAAK,UAGTrnC,IAAIsnC,WAAa,SAASruB,GACtB,OAAOA,EAAEhL,QAAQ,YAAY,SAAUs5B,GACnC,OAAOvnC,IAAIqnC,cAAcE,EAC7B,GACJ,EAEAvnC,IAAIC,OAAS,SAASnG,GAClB,IAAIsR,EACJ,IAAIA,KAAKtR,EACLd,KAAKoS,GAAKtR,EAAQsR,EAG1B,EAEApL,IAAIC,OAAOgC,UAAY,CAEnB/B,QAAU,KAEVsnC,SAAW,KAEX9iC,SAAW,KAGXvE,cAAgB,CACZ,OAAS,KAYbG,SAAW,SAASnE,EAAKkC,EAAYkC,EAAOrB,QAEpB,IAAVqB,IACNA,EAAQ,KAIZA,EAAQ,GAAKA,GAEbrB,EAAUA,GAAW,CAAC,GAEP,MAAIqB,EACnBrB,EAAQ,gBAAkB,iCAE1B,IAGIuoC,EAHA9mC,EACA,sCAGJ,IAAK8mC,KAAazuC,KAAKmH,cACnBQ,GAAQ,UAAY3H,KAAKmH,cAAcsnC,GAAa,KAAOA,EAAY,IAK3E,IAAI,IAAInwB,KAHR3W,GAAQ,kBAGMtC,EACV,GAAKA,EAAWqpC,eAAepwB,GAA/B,CAIA,IAAIqwB,EAAW3uC,KAAK4uC,mBAAmBvpC,EAAWiZ,IAC9Cte,KAAKmH,cAAcwnC,EAASF,WAC5B9mC,GAAM,QAAU3H,KAAKmH,cAAcwnC,EAASF,WAAa,IAAME,EAASljC,KAAO,QAE/E9D,GAAM,UAAYgnC,EAASljC,KAAO,aAAekjC,EAASF,UAAY,QAN1E,CAaJ,OAHA9mC,GAAM,gBACNA,GAAM,gBAEC3H,KAAK8H,QAAQ,WAAY3E,EAAK+C,EAASyB,GAAMlB,KAChD,SAAS3B,GAEL,MAAc,MAAVyC,EACO,CACHnC,OAAQN,EAAOM,OACfuC,KAAM7C,EAAO6C,KAAK,GAClBO,IAAKpD,EAAOoD,KAGT,CACH9C,OAAQN,EAAOM,OACfuC,KAAM7C,EAAO6C,KACbO,IAAKpD,EAAOoD,IAIxB,EAAE1E,KAAKxD,MAGf,EAQA6uC,eAAgB,SAASxpC,GACrB,IAAIsC,EAAO,2BAGX,IAAI,IAAI2W,KAAMjZ,EACV,GAAKA,EAAWqpC,eAAepwB,GAA/B,CAIA,IACIwwB,EADAH,EAAW3uC,KAAK4uC,mBAAmBtwB,GAEnCywB,EAAY1pC,EAAWiZ,GASV,mBAPbwwB,EADA9uC,KAAKmH,cAAcwnC,EAASF,WACjBzuC,KAAKmH,cAAcwnC,EAASF,WAAa,IAAME,EAASljC,KAExD,KAAOkjC,EAASljC,KAAO,aAAekjC,EAASF,UAAY,OAMtEM,EAAY/nC,IAAIsnC,WAAWS,IAE/BpnC,GAAQ,UAAYmnC,EAAW,IAAMC,EAAY,KAAOD,EAAW,KAhBnE,CAoBJ,OAFAnnC,GAAO,mBACA,cAEX,EAUAxB,UAAY,SAAShD,EAAKkC,EAAYa,IAClCA,EAAUA,GAAW,CAAC,GAEd,gBAAkB,iCAE1B,IAGIuoC,EAHA9mC,EACA,4CAGJ,IAAK8mC,KAAazuC,KAAKmH,cACnBQ,GAAQ,UAAY3H,KAAKmH,cAAcsnC,GAAa,KAAOA,EAAY,IAK3E,OAHA9mC,GAAQ,MAAQ3H,KAAK6uC,eAAexpC,GACpCsC,GAAQ,sBAED3H,KAAK8H,QAAQ,YAAa3E,EAAK+C,EAASyB,GAAMlB,KACjD,SAAS3B,GACL,MAAO,CACHM,OAAQN,EAAOM,OACfuC,KAAM7C,EAAO6C,KACbO,IAAKpD,EAAOoD,IAEpB,EAAE1E,KAAKxD,MAGf,EAWAgvC,MAAQ,SAAS7rC,EAAKkC,EAAYa,GAC9B,IAAIyB,EAAO,GAIX,IAHAzB,EAAUA,GAAW,CAAC,GACd,gBAAkB,iCAEtBb,EAAY,CAIZ,IAAIopC,EACJ,IAAKA,KAJL9mC,EACI,kCAGc3H,KAAKmH,cACnBQ,GAAQ,UAAY3H,KAAKmH,cAAcsnC,GAAa,KAAOA,EAAY,IAE3E9mC,GAAQ,MAAQ3H,KAAK6uC,eAAexpC,GACpCsC,GAAO,YACX,CAEA,OAAO3H,KAAK8H,QAAQ,QAAS3E,EAAK+C,EAASyB,GAAMlB,KAC7C,SAAS3B,GACL,MAAO,CACHM,OAAQN,EAAOM,OACfuC,KAAM7C,EAAO6C,KACbO,IAAKpD,EAAOoD,IAEpB,EAAE1E,KAAKxD,MAGf,EAcA8H,QAAU,SAASlF,EAAQO,EAAK+C,EAASyB,EAAMsnC,EAAcnuC,GAEzD,IAUIwd,EAVAvN,EAAO/Q,KACPkI,EAAMlI,KAAKkvC,cAUf,IAAI5wB,KATJpY,EAAUA,GAAW,CAAC,EACtB+oC,EAAeA,GAAgB,GAE3BjvC,KAAKwuC,WACLtoC,EAAuB,cAAI,SAAW2uB,KAAK70B,KAAKwuC,SAAW,IAAMxuC,KAAK0L,WAG1ExD,EAAIklC,KAAKxqC,EAAQ5C,KAAKoH,WAAWjE,IAAM,GAE7B+C,EACNgC,EAAIkiC,iBAAiB9rB,EAAIpY,EAAQoY,IAwBrC,OAtBApW,EAAI+mC,aAAeA,EAEfnuC,GAA0C,mBAAxBA,EAAQquC,aACX,QAAXvsC,GAA+B,SAAXA,EACpBsF,EAAIknC,OAAOt0B,iBAAiB,YAAY,SAAUxF,GAChDxU,EAAQquC,WAAW75B,EACrB,IAAG,GAGHpN,EAAI4S,iBAAiB,YAAY,SAAUxF,GACzCxU,EAAQquC,WAAW75B,EACrB,IAAG,SAKElV,IAATuH,EACAO,EAAImnC,OAEJnnC,EAAImnC,KAAK1nC,GAGN,IAAIgE,SAAQ,SAAS2jC,EAASj5B,GAEjCnO,EAAIqnC,mBAAqB,WAErB,GAAuB,IAAnBrnC,EAAIge,WAAR,CAIA,IAAIspB,EAAatnC,EAAIV,SACF,MAAfU,EAAI9C,SACJoqC,EAAaz+B,EAAK0+B,iBAAiBvnC,EAAIV,WAG3C8nC,EAAQ,CACJ3nC,KAAM6nC,EACNpqC,OAAQ8C,EAAI9C,OACZ8C,IAAKA,GAVT,CAaJ,EAEAA,EAAIwnC,UAAY,WAEZr5B,EAAO,IAAIzN,MAAM,oBAErB,CAEJ,GAEJ,EASAsmC,YAAc,WAEV,OAAO,IAAIS,cAEf,EAWAC,eAAgB,SAASC,GACrB,IAAI9/B,EAAU,KACd,GAAI8/B,EAASC,YAAcD,EAASC,WAAW9tC,OAAS,EAAG,CAGvD,IAFA,IAAI+tC,EAAW,GAEN59B,EAAI,EAAGA,EAAI09B,EAASC,WAAW9tC,OAAQmQ,IAAK,CACjD,IAAIzF,EAAOmjC,EAASC,WAAW39B,GACT,IAAlBzF,EAAKsjC,UACLD,EAASniC,KAAKlB,EAEtB,CACIqjC,EAAS/tC,SACT+N,EAAUggC,EAElB,CAEA,OAAOhgC,GAAW8/B,EAASI,aAAeJ,EAASvuC,MAAQ,EAC/D,EAQAmuC,iBAAmB,SAASS,GAmBxB,IAjBA,IACIC,GADS,IAAIC,WACAC,gBAAgBH,EAAS,mBAEtCI,EAAW,SAASC,GACpB,IAAIjyB,EACJ,IAAIA,KAAMte,KAAKmH,cACX,GAAInH,KAAKmH,cAAcmX,KAAQiyB,EAC3B,OAAOjyB,CAGnB,EAAE9a,KAAKxD,MAEHwwC,EAAmBL,EAAIM,SAAS,4BAA6BN,EAAKG,EAAUI,YAAYC,SAAU,MAElG7rC,EAAS,GACT8rC,EAAeJ,EAAiBK,cAE9BD,GAAc,CAEhB,IAAIppC,EAAW,CACXtC,KAAO,KACPC,SAAW,IAGfqC,EAAStC,KAAOirC,EAAIM,SAAS,iBAAkBG,EAAcN,EAAUI,YAAYC,SAAU,MAAMG,YAKnG,IAHA,IAAIC,EAAmBZ,EAAIM,SAAS,aAAcG,EAAcN,EAAUI,YAAYC,SAAU,MAC5FK,EAAeD,EAAiBF,cAE9BG,GAAc,CAShB,IARA,IAAI7rC,EAAW,CACXC,OAAS+qC,EAAIM,SAAS,mBAAoBO,EAAcV,EAAUI,YAAYC,SAAU,MAAMG,YAC9FzrC,WAAa,CAAC,GAGd4rC,EAAed,EAAIM,SAAS,WAAYO,EAAcV,EAAUI,YAAYC,SAAU,MAEtFd,EAAWoB,EAAaJ,cACtBhB,GAAU,CACZ,IAAI9/B,EAAU/P,KAAK4vC,eAAeC,GAClC1qC,EAASE,WAAW,IAAMwqC,EAASqB,aAAe,IAAMrB,EAASsB,WAAaphC,EAC9E8/B,EAAWoB,EAAaJ,aAE5B,CACArpC,EAASrC,SAASyI,KAAKzI,GACvB6rC,EAAeD,EAAiBF,aAGpC,CAEA/rC,EAAO8I,KAAKpG,GACZopC,EAAeJ,EAAiBK,aAEpC,CAEA,OAAO/rC,CAEX,EAQAsC,WAAa,SAASjE,GAGlB,GAAI,gBAAgBkqB,KAAKlqB,GAErB,OAAOA,EAGX,IAAIiuC,EAAYpxC,KAAKuuB,SAASvuB,KAAKkH,SACnC,OAAI/D,EAAIyc,OAAO,KAEJwxB,EAAUzkC,KAAOxJ,GAIfiuC,EAAUzkC,MACgB,IAAnCykC,EAAU9kC,KAAK2X,YAAY,MACTmtB,EAAU9kC,KAAK+kC,UAAU,EAAGD,EAAU9kC,KAAK2X,YAAY,MAGtE9gB,EAEX,EAQAorB,SAAW,SAASprB,GAEf,IAAIyC,EAAQzC,EAAIkd,MAAM,mGAClBvb,EAAS,CACT3B,IAAMyC,EAAM,GACZ0rC,OAAS1rC,EAAM,GACf4hB,KAAO5hB,EAAM,GACbgiB,KAAOhiB,EAAM,GACb0G,KAAO1G,EAAM,GACbwZ,MAAQxZ,EAAM,GACdqlC,SAAWrlC,EAAM,IAOrB,OALAd,EAAO6H,KACJ7H,EAAOwsC,OAAS,MAChBxsC,EAAO0iB,MACN1iB,EAAO8iB,KAAO,IAAM9iB,EAAO8iB,KAAO,IAE/B9iB,CAEZ,EAEA8pC,mBAAqB,SAAS2C,GAE1B,IAAIzsC,EAASysC,EAAalxB,MAAM,mBAChC,GAAKvb,EAIL,MAAO,CACH2G,KAAO3G,EAAO,GACd2pC,UAAY3pC,EAAO,GAG3B,QAI2D,IAAnBspC,EAAOvR,UAC/CuR,EAAOvR,QAAQ51B,OAASD,IAAIC,yCCrehC,IAAI8F,EAAM,CACT,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,aAAc,MACd,UAAW,MACX,aAAc,MACd,UAAW,MACX,aAAc,MACd,UAAW,MACX,aAAc,MACd,UAAW,KACX,aAAc,KACd,UAAW,MACX,aAAc,MACd,UAAW,MACX,aAAc,MACd,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,aAAc,MACd,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,KACR,UAAW,KACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,aAAc,MACd,UAAW,MACX,aAAc,MACd,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,UAAW,MACX,aAAc,MACd,UAAW,MACX,aAAc,MACd,UAAW,MACX,aAAc,MACd,UAAW,MACX,aAAc,MACd,UAAW,MACX,aAAc,MACd,UAAW,KACX,aAAc,KACd,UAAW,MACX,aAAc,MACd,UAAW,MACX,aAAc,MACd,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,aAAc,MACd,UAAW,MACX,aAAc,MACd,UAAW,MACX,aAAc,MACd,UAAW,MACX,OAAQ,KACR,UAAW,KACX,OAAQ,KACR,UAAW,KACX,OAAQ,IACR,UAAW,IACX,OAAQ,MACR,UAAW,MACX,QAAS,MACT,WAAY,MACZ,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,aAAc,MACd,UAAW,MACX,aAAc,MACd,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,aAAc,MACd,gBAAiB,MACjB,aAAc,MACd,gBAAiB,MACjB,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,UAAW,MACX,aAAc,MACd,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,aAAc,MACd,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,WAAY,KACZ,cAAe,KACf,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,aAAc,MACd,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,KACR,UAAW,KACX,OAAQ,MACR,UAAW,MACX,aAAc,MACd,UAAW,MACX,OAAQ,MACR,UAAW,MACX,WAAY,MACZ,cAAe,MACf,UAAW,MACX,aAAc,MACd,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,aAAc,MACd,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,KACR,UAAW,KACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,KACR,UAAW,KACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,YAAa,KACb,eAAgB,KAChB,UAAW,MACX,OAAQ,KACR,UAAW,KACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,QAAS,MACT,WAAY,MACZ,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,UAAW,MACX,aAAc,MACd,QAAS,MACT,WAAY,MACZ,OAAQ,MACR,UAAW,MACX,QAAS,MACT,WAAY,MACZ,QAAS,MACT,aAAc,MACd,gBAAiB,MACjB,WAAY,MACZ,UAAW,MACX,aAAc,MACd,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,YAAa,MACb,eAAgB,MAChB,UAAW,MACX,OAAQ,MACR,UAAW,MACX,aAAc,MACd,gBAAiB,MACjB,OAAQ,MACR,UAAW,MACX,UAAW,MACX,aAAc,MACd,UAAW,KACX,aAAc,KACd,UAAW,MACX,aAAc,MACd,UAAW,MACX,aAAc,OAIf,SAASykC,EAAeC,GACvB,IAAIlsC,EAAKmsC,EAAsBD,GAC/B,OAAOE,EAAoBpsC,EAC5B,CACA,SAASmsC,EAAsBD,GAC9B,IAAIE,EAAoBC,EAAE7kC,EAAK0kC,GAAM,CACpC,IAAIn8B,EAAI,IAAI1M,MAAM,uBAAyB6oC,EAAM,KAEjD,MADAn8B,EAAEugB,KAAO,mBACHvgB,CACP,CACA,OAAOvI,EAAI0kC,EACZ,CACAD,EAAetlB,KAAO,WACrB,OAAOrlB,OAAOqlB,KAAKnf,EACpB,EACAykC,EAAe5lC,QAAU8lC,EACzBtD,EAAOvR,QAAU2U,EACjBA,EAAejsC,GAAK,kIC1QR+P,0FAAY,QAAZA,GAAmG,YAAhF,UAAIshB,OAAO,SAASvrB,SAAU,UAAIurB,OAAO,SAASC,OAAOvhB,EAAE6P,KAAK9Z,QA+D/F,MAyBMwmC,EAAI,CAAC,IAAK,KAAM,KAAM,KAAM,KAAM,MAAOC,EAAI,CAAC,IAAK,MAAO,MAAO,MAAO,MAAO,OACrF,SAASC,EAAGz8B,EAAGnT,GAAI,EAAI6vC,GAAI,EAAI/xB,GAAI,GACjC+xB,EAAIA,IAAM/xB,EAAe,iBAAL3K,IAAkBA,EAAI6N,OAAO7N,IACjD,IAAI0B,EAAI1B,EAAI,EAAI/D,KAAKwB,MAAMxB,KAAK0gC,IAAI38B,GAAK/D,KAAK0gC,IAAIhyB,EAAI,IAAM,OAAS,EACrEjJ,EAAIzF,KAAK0E,KAAK+7B,EAAIF,EAAE9vC,OAAS6vC,EAAE7vC,QAAU,EAAGgV,GAC5C,MAAM5E,EAAI4/B,EAAIF,EAAE96B,GAAK66B,EAAE76B,GACvB,IAAIk7B,GAAK58B,EAAI/D,KAAK4gC,IAAIlyB,EAAI,IAAM,KAAMjJ,IAAIo7B,QAAQ,GAClD,OAAa,IAANjwC,GAAkB,IAAN6U,GAAiB,QAANk7B,EAAc,OAAS,OAASF,EAAIF,EAAE,GAAKD,EAAE,KAAeK,EAARl7B,EAAI,EAAQsJ,WAAW4xB,GAAGE,QAAQ,GAAS9xB,WAAW4xB,GAAGG,gBAAe,WAAOH,EAAI,IAAM9/B,EAC7K,CA4MA,IAAIkgC,EAAoB,CAAEh9B,IAAOA,EAAEA,EAAEi9B,KAAO,GAAK,OAAQj9B,EAAEA,EAAEk9B,OAAS,GAAK,SAAUl9B,EAAEA,EAAEm9B,KAAO,GAAK,OAAQn9B,EAAEA,EAAEo9B,OAAS,GAAK,SAAUp9B,EAAEA,EAAEq9B,OAAS,GAAK,SAAUr9B,EAAEA,EAAEs9B,MAAQ,IAAM,QAASt9B,EAAEA,EAAEu9B,IAAM,IAAM,MAAOv9B,GAA/L,CAAmMg9B,GAAK,CAAC,GAuBjO,MAAMQ,EAAI,CACR,qBACA,mBACA,YACA,oBACA,0BACA,iBACA,iBACA,kBACA,gBACA,qBACA,cACA,YACA,wBACA,cACA,iBACA,WACC3gC,EAAI,CACL+/B,EAAG,OACHa,GAAI,0BACJC,GAAI,yBACJC,IAAK,6CAUJC,EAAI,WACL,cAAcxvC,OAAOyvC,mBAAqB,MAAQzvC,OAAOyvC,mBAAqB,IAAIL,IAAKpvC,OAAOyvC,mBAAmBpmC,KAAKuI,GAAM,IAAIA,SAAQ7T,KAAK,IAC/I,EAAG2xC,EAAI,WACL,cAAc1vC,OAAO2vC,mBAAqB,MAAQ3vC,OAAO2vC,mBAAqB,IAAKlhC,IAAMtL,OAAOqlB,KAAKxoB,OAAO2vC,oBAAoBtmC,KAAKuI,GAAM,SAASA,MAAM5R,OAAO2vC,qBAAqB/9B,QAAO7T,KAAK,IACpM,EAAG6xC,EAAK,WACN,MAAO,0CACOF,iCAEVF,yCAGN,EAUGK,EAAK,SAASj+B,GACf,MAAO,4DACU89B,8HAKbF,iGAKe,WAAK/tB,0nBA0BR7P,yXAkBlB,EAgDA,IAAIk+B,EAAoB,CAAEl+B,IAAOA,EAAEm+B,OAAS,SAAUn+B,EAAEo+B,KAAO,OAAQp+B,GAA/C,CAAmDk+B,GAAK,CAAC,GAsBjF,MAAMG,EAAI,SAASr+B,EAAGnT,GACpB,OAAsB,OAAfmT,EAAE+K,MAAMle,EACjB,EAAGyxC,EAAI,CAACt+B,EAAGnT,KACT,GAAImT,EAAE/P,IAAqB,iBAAR+P,EAAE/P,GACnB,MAAM,IAAIqD,MAAM,4BAClB,IAAK0M,EAAEiF,OACL,MAAM,IAAI3R,MAAM,4BAClB,IACE,IAAI6M,IAAIH,EAAEiF,OACZ,CAAE,MACA,MAAM,IAAI3R,MAAM,oDAClB,CACA,IAAK0M,EAAEiF,OAAO3N,WAAW,QACvB,MAAM,IAAIhE,MAAM,oDAClB,GAAI0M,EAAEtG,SAAWsG,EAAEtG,iBAAiB0T,MAClC,MAAM,IAAI9Z,MAAM,sBAClB,GAAI0M,EAAEu+B,UAAYv+B,EAAEu+B,kBAAkBnxB,MACpC,MAAM,IAAI9Z,MAAM,uBAClB,IAAK0M,EAAEvG,MAAyB,iBAAVuG,EAAEvG,OAAqBuG,EAAEvG,KAAKsR,MAAM,yBACxD,MAAM,IAAIzX,MAAM,qCAClB,GAAI,SAAU0M,GAAsB,iBAAVA,EAAEjB,WAA+B,IAAXiB,EAAEjB,KAChD,MAAM,IAAIzL,MAAM,qBAClB,GAAI,gBAAiB0M,QAAuB,IAAlBA,EAAEpG,eAAoD,iBAAjBoG,EAAEpG,aAA2BoG,EAAEpG,aAAeojC,EAAEC,MAAQj9B,EAAEpG,aAAeojC,EAAEO,KACxI,MAAM,IAAIjqC,MAAM,uBAClB,GAAI0M,EAAEw+B,OAAqB,OAAZx+B,EAAEw+B,OAAoC,iBAAXx+B,EAAEw+B,MAC1C,MAAM,IAAIlrC,MAAM,sBAClB,GAAI0M,EAAE7H,YAAqC,iBAAhB6H,EAAE7H,WAC3B,MAAM,IAAI7E,MAAM,2BAClB,GAAI0M,EAAE3I,MAAyB,iBAAV2I,EAAE3I,KACrB,MAAM,IAAI/D,MAAM,qBAClB,GAAI0M,EAAE3I,OAAS2I,EAAE3I,KAAKC,WAAW,KAC/B,MAAM,IAAIhE,MAAM,wCAClB,GAAI0M,EAAE3I,OAAS2I,EAAEiF,OAAO5K,SAAS2F,EAAE3I,MACjC,MAAM,IAAI/D,MAAM,mCAClB,GAAI0M,EAAE3I,MAAQgnC,EAAEr+B,EAAEiF,OAAQpY,GAAI,CAC5B,MAAM6vC,EAAI18B,EAAEiF,OAAO8F,MAAMle,GAAG,GAC5B,IAAKmT,EAAEiF,OAAO5K,UAAS,UAAGqiC,EAAG18B,EAAE3I,OAC7B,MAAM,IAAI/D,MAAM,4DACpB,CACA,GAAI0M,EAAElQ,SAAWyB,OAAOq+B,OAAO6O,GAAGpkC,SAAS2F,EAAElQ,QAC3C,MAAM,IAAIwD,MAAM,oCAAoC,EAuBxD,IAAImrC,EAAoB,CAAEz+B,IAAOA,EAAE0+B,IAAM,MAAO1+B,EAAE2+B,OAAS,SAAU3+B,EAAE4+B,QAAU,UAAW5+B,EAAE6+B,OAAS,SAAU7+B,GAAzF,CAA6Fy+B,GAAK,CAAC,GAC3H,MAAMK,EACJC,MACAC,YACAC,iBAAmB,mCACnB,WAAA3e,CAAYzzB,EAAG6vC,GACb4B,EAAEzxC,EAAG6vC,GAAKhyC,KAAKu0C,kBAAmBv0C,KAAKq0C,MAAQlyC,EAC/C,MAAM8d,EAAI,CAER2I,IAAK,CAAC5R,EAAG5E,EAAG8/B,KAAOlyC,KAAKw0C,cAAerpB,QAAQvC,IAAI5R,EAAG5E,EAAG8/B,IACzDuC,eAAgB,CAACz9B,EAAG5E,KAAOpS,KAAKw0C,cAAerpB,QAAQspB,eAAez9B,EAAG5E,KAG3EpS,KAAKs0C,YAAc,IAAII,MAAMvyC,EAAEsL,YAAc,CAAC,EAAGwS,UAAWjgB,KAAKq0C,MAAM5mC,WAAYukC,IAAMhyC,KAAKu0C,iBAAmBvC,EACnH,CAIA,UAAIz3B,GACF,OAAOva,KAAKq0C,MAAM95B,OAAOtF,QAAQ,OAAQ,GAC3C,CAIA,iBAAI0/B,GACF,MAAQC,OAAQzyC,GAAM,IAAIsT,IAAIzV,KAAKua,QACnC,OAAOpY,GAAI,QAAGnC,KAAKua,OAAO1N,MAAM1K,EAAEH,QACpC,CAIA,YAAI0L,GACF,OAAO,cAAG1N,KAAKua,OACjB,CAIA,aAAIs6B,GACF,OAAO,aAAG70C,KAAKua,OACjB,CAKA,WAAI6M,GACF,GAAIpnB,KAAK2M,KAAM,CACb,IAAIqlC,EAAIhyC,KAAKua,OACbva,KAAK80C,iBAAmB9C,EAAIA,EAAExwC,MAAMxB,KAAKu0C,kBAAkB1uC,OAC3D,MAAMoa,EAAI+xB,EAAEtsC,QAAQ1F,KAAK2M,MAAOqK,EAAIhX,KAAK2M,KAAKsI,QAAQ,MAAO,IAC7D,OAAO,aAAE+8B,EAAEnlC,MAAMoT,EAAIjJ,EAAEhV,SAAW,IACpC,CACA,MAAMG,EAAI,IAAIsT,IAAIzV,KAAKua,QACvB,OAAO,aAAEpY,EAAE2b,SACb,CAIA,QAAI/O,GACF,OAAO/O,KAAKq0C,MAAMtlC,IACpB,CAIA,SAAIC,GACF,OAAOhP,KAAKq0C,MAAMrlC,KACpB,CAIA,UAAI6kC,GACF,OAAO7zC,KAAKq0C,MAAMR,MACpB,CAIA,QAAIx/B,GACF,OAAOrU,KAAKq0C,MAAMhgC,IACpB,CAIA,cAAI5G,GACF,OAAOzN,KAAKs0C,WACd,CAIA,eAAIplC,GACF,OAAsB,OAAflP,KAAK8zC,OAAmB9zC,KAAK80C,oBAAqD,IAA3B90C,KAAKq0C,MAAMnlC,YAAyBlP,KAAKq0C,MAAMnlC,YAAcojC,EAAEC,KAAxED,EAAEG,IACzD,CAIA,SAAIqB,GACF,OAAO9zC,KAAK80C,eAAiB90C,KAAKq0C,MAAMP,MAAQ,IAClD,CAIA,kBAAIgB,GACF,OAAOnB,EAAE3zC,KAAKua,OAAQva,KAAKu0C,iBAC7B,CAIA,QAAI5nC,GACF,OAAO3M,KAAKq0C,MAAM1nC,KAAO3M,KAAKq0C,MAAM1nC,KAAKsI,QAAQ,WAAY,MAAQjV,KAAK80C,iBAAkB,aAAE90C,KAAKua,QAAQ/Y,MAAMxB,KAAKu0C,kBAAkB1uC,OAAS,IACnJ,CAIA,QAAIyG,GACF,GAAItM,KAAK2M,KAAM,CACb,IAAIxK,EAAInC,KAAKua,OACbva,KAAK80C,iBAAmB3yC,EAAIA,EAAEX,MAAMxB,KAAKu0C,kBAAkB1uC,OAC3D,MAAMmsC,EAAI7vC,EAAEuD,QAAQ1F,KAAK2M,MAAOsT,EAAIjgB,KAAK2M,KAAKsI,QAAQ,MAAO,IAC7D,OAAO9S,EAAE0K,MAAMmlC,EAAI/xB,EAAEje,SAAW,GAClC,CACA,OAAQhC,KAAKonB,QAAU,IAAMpnB,KAAK0N,UAAUuH,QAAQ,QAAS,IAC/D,CAKA,UAAInG,GACF,OAAO9O,KAAKq0C,OAAO9uC,IAAMvF,KAAKyN,YAAYqB,MAC5C,CAIA,UAAI1J,GACF,OAAOpF,KAAKq0C,OAAOjvC,MACrB,CAIA,UAAIA,CAAOjD,GACTnC,KAAKq0C,MAAMjvC,OAASjD,CACtB,CAOA,IAAA4yC,CAAK5yC,GACHyxC,EAAE,IAAK5zC,KAAKq0C,MAAO95B,OAAQpY,GAAKnC,KAAKu0C,kBAAmBv0C,KAAKq0C,MAAM95B,OAASpY,EAAGnC,KAAKw0C,aACtF,CAOA,MAAAQ,CAAO7yC,GACL,GAAIA,EAAEwN,SAAS,KACb,MAAM,IAAI/G,MAAM,oBAClB5I,KAAK+0C,MAAK,aAAE/0C,KAAKua,QAAU,IAAMpY,EACnC,CAIA,WAAAqyC,GACEx0C,KAAKq0C,MAAMrlC,QAAUhP,KAAKq0C,MAAMrlC,MAAwB,IAAI0T,KAC9D,EAuBF,MAAMuR,UAAWmgB,EACf,QAAInxC,GACF,OAAOuwC,EAAEE,IACX,EAuBF,MAAMuB,UAAWb,EACf,WAAAxe,CAAYzzB,GACV4zB,MAAM,IACD5zB,EACH4M,KAAM,wBAEV,CACA,QAAI9L,GACF,OAAOuwC,EAAEC,MACX,CACA,aAAIoB,GACF,OAAO,IACT,CACA,QAAI9lC,GACF,MAAO,sBACT,EAwBF,MAAMmmC,EAAI,WAAU,WAAK/vB,MAAOgwB,GAAK,QAAG,OAAQC,EAAK,SAAS9/B,EAAI6/B,EAAIhzC,EAAI,CAAC,GACzE,MAAM6vC,GAAI,QAAG18B,EAAG,CAAEpP,QAAS/D,IAC3B,SAAS8d,EAAE7N,GACT4/B,EAAEqD,WAAW,IACRlzC,EAEH,mBAAoB,iBAEpBmzC,aAAcljC,GAAK,IAEvB,CACA,OAAO,QAAG6N,GAAIA,GAAE,YAAO,UAAKvb,MAAM,SAAS,CAAC0N,EAAG8/B,KAC7C,MAAMqD,EAAIrD,EAAEhsC,QACZ,OAAOqvC,GAAG3yC,SAAWsvC,EAAEtvC,OAAS2yC,EAAE3yC,cAAe2yC,EAAE3yC,QAASk/B,MAAM1vB,EAAG8/B,EAAE,IACrEF,CACN,EAAGwD,EAAK,CAAClgC,EAAGnT,EAAI,IAAK6vC,EAAIkD,KACvB,MAAMj1B,EAAI,IAAIoW,gBACd,OAAO,IAAI,qBAAGuB,MAAO5gB,EAAG5E,EAAG8/B,KACzBA,GAAE,IAAMjyB,EAAEkW,UACV,IAWEnf,SAViB1B,EAAEmgC,qBAAqB,GAAGzD,IAAI7vC,IAAK,CAClDm0B,OAAQrW,EAAEqW,OACVof,SAAS,EACTryC,KAzdC,+CACY+vC,iCAEfF,wIAudEhtC,QAAS,CAEPtD,OAAQ,UAEV+yC,aAAa,KACXtyC,KAAKiL,QAAQyU,GAAMA,EAAE6yB,WAAazzC,IAAG4K,KAAKgW,GAAM8yB,EAAG9yB,EAAGivB,KAE5D,CAAE,MAAOuD,GACPnjC,EAAEmjC,EACJ,IACA,EACDM,EAAK,SAASvgC,EAAGnT,EAAI+yC,EAAGlD,EAAImD,GAC7B,MAAMl1B,GAAI,WAAKkF,IACf,IAAKlF,EACH,MAAM,IAAIrX,MAAM,oBAClB,MAAMoO,EAAI1B,EAAErQ,MAAOmN,EAjZV,SAASkD,EAAI,IACtB,IAAInT,EAAImwC,EAAEC,KACV,OAAOj9B,KAAOA,EAAE3F,SAAS,MAAQ2F,EAAE3F,SAAS,QAAUxN,GAAKmwC,EAAEE,QAASl9B,EAAE3F,SAAS,OAASxN,GAAKmwC,EAAEG,OAAQn9B,EAAE3F,SAAS,MAAQ2F,EAAE3F,SAAS,MAAQ2F,EAAE3F,SAAS,QAAUxN,GAAKmwC,EAAEI,QAASp9B,EAAE3F,SAAS,OAASxN,GAAKmwC,EAAEK,QAASr9B,EAAE3F,SAAS,OAASxN,GAAKmwC,EAAEM,QAASzwC,CAC9P,CA8YyB2zC,CAAG9+B,GAAG9H,aAAcgjC,GAAKl7B,IAAI,aAAeiJ,GAAG1e,WAAYg0C,EAAI,CACpFhwC,GAAIyR,GAAGlI,QAAU,EACjByL,OAAQ,GAAGy3B,IAAI18B,EAAEsgC,WACjB5mC,MAAO,IAAI0T,KAAKA,KAAKjI,MAAMnF,EAAEygC,UAC7BhnC,KAAMuG,EAAEvG,MAAQ,2BAChBsF,KAAM2C,GAAG3C,MAAQ8O,OAAOjF,SAASlH,EAAEg/B,kBAAoB,KACvD9mC,YAAakD,EACb0hC,MAAO5B,EACPvlC,KAAMxK,EACNsL,WAAY,IACP6H,KACA0B,EACH5H,WAAY4H,IAAI,iBAGpB,cAAcu+B,EAAE9nC,YAAYxI,MAAkB,SAAXqQ,EAAErS,KAAkB,IAAIgxB,EAAGshB,GAAK,IAAIN,EAAGM,EAC5E,EAsGA,IAAYU,EAAI,CAAC,GACjB,SAAU3gC,GACR,MAAMnT,EAAI,gLAAyO8d,EAAI,IAAM9d,EAAI,KAAlEA,EAAwD,iDAA2B6U,EAAI,IAAI8S,OAAO,IAAM7J,EAAI,KAgB3S3K,EAAE4gC,QAAU,SAASX,GACnB,cAAcA,EAAI,GACpB,EAAGjgC,EAAE6gC,cAAgB,SAASZ,GAC5B,OAAiC,IAA1B1uC,OAAOqlB,KAAKqpB,GAAGvzC,MACxB,EAAGsT,EAAEwtB,MAAQ,SAASyS,EAAG3D,EAAG7uB,GAC1B,GAAI6uB,EAAG,CACL,MAAMhS,EAAI/4B,OAAOqlB,KAAK0lB,GAAIwE,EAAIxW,EAAE59B,OAChC,IAAK,IAAI4S,EAAI,EAAGA,EAAIwhC,EAAGxhC,IACJ2gC,EAAE3V,EAAEhrB,IAAf,WAANmO,EAA2B,CAAC6uB,EAAEhS,EAAEhrB,KAAiBg9B,EAAEhS,EAAEhrB,GACzD,CACF,EAAGU,EAAEzR,SAAW,SAAS0xC,GACvB,OAAOjgC,EAAE4gC,QAAQX,GAAKA,EAAI,EAC5B,EAAGjgC,EAAE+gC,OAhBE,SAASd,GACd,MAAM3D,EAAI56B,EAAEgV,KAAKupB,GACjB,QAAe,OAAN3D,UAAqBA,EAAI,IACpC,EAaiBt8B,EAAEghC,cA5BkS,SAASf,EAAG3D,GAC/T,MAAM7uB,EAAI,GACV,IAAI6c,EAAIgS,EAAE5lB,KAAKupB,GACf,KAAO3V,GAAK,CACV,MAAMwW,EAAI,GACVA,EAAEG,WAAa3E,EAAE4E,UAAY5W,EAAE,GAAG59B,OAClC,MAAM4S,EAAIgrB,EAAE59B,OACZ,IAAK,IAAI6e,EAAI,EAAGA,EAAIjM,EAAGiM,IACrBu1B,EAAExoC,KAAKgyB,EAAE/e,IACXkC,EAAEnV,KAAKwoC,GAAIxW,EAAIgS,EAAE5lB,KAAKupB,EACxB,CACA,OAAOxyB,CACT,EAgBsCzN,EAAEmhC,WAAax2B,CACtD,CA9BD,CA8BGg2B,GAkKQ,IAAInsB,OAAO,0DAA0D,KAuEhF,IAAIrJ,EAAI,CAAC,EACT,MAAMi2B,EAAK,CACTC,eAAe,EACfC,oBAAqB,KACrBC,qBAAqB,EACrBC,aAAc,QACdC,kBAAkB,EAClBC,gBAAgB,EAEhBC,wBAAwB,EAGxBC,eAAe,EACfC,qBAAqB,EACrBC,YAAY,EAEZC,eAAe,EACfC,mBAAoB,CAClBC,KAAK,EACLC,cAAc,EACdC,WAAW,GAEbC,kBAAmB,SAASpiC,EAAGnT,GAC7B,OAAOA,CACT,EACAw1C,wBAAyB,SAASriC,EAAGnT,GACnC,OAAOA,CACT,EACAy1C,UAAW,GAEXC,sBAAsB,EACtB/sB,QAAS,KAAM,EACfgtB,iBAAiB,EACjBC,aAAc,GACdC,iBAAiB,EACjBC,cAAc,EACdC,mBAAmB,EACnBC,cAAc,EACdC,kBAAkB,EAClBC,wBAAwB,EACxBC,UAAW,SAAShjC,EAAGnT,EAAG6vC,GACxB,OAAO18B,CACT,GAKFmL,EAAE83B,aAHM,SAASjjC,GACf,OAAOzO,OAAOC,OAAO,CAAC,EAAG4vC,EAAIphC,EAC/B,EAEAmL,EAAE+3B,eAAiB9B,GAkFlBvzB,OAAOjF,UAAYxa,OAAOwa,WAAaiF,OAAOjF,SAAWxa,OAAOwa,WAChEiF,OAAO7C,YAAc5c,OAAO4c,aAAe6C,OAAO7C,WAAa5c,OAAO4c,YA2F5D,IAAIwJ,OAAO,+CAA+C,MAyOrE,IAAa2uB,EAAK,CAAC,EAInB,SAASC,EAAGpjC,EAAGnT,EAAG6vC,GAChB,IAAI/xB,EACJ,MAAMjJ,EAAI,CAAC,EACX,IAAK,IAAI5E,EAAI,EAAGA,EAAIkD,EAAEtT,OAAQoQ,IAAK,CACjC,MAAM8/B,EAAI58B,EAAElD,GAAImjC,EAAIoD,EAAGzG,GACvB,IAAIN,EAAI,GACR,GAAmBA,OAAT,IAANI,EAAmBuD,EAAQvD,EAAI,IAAMuD,EAAGA,IAAMpzC,EAAE20C,kBAC5C,IAAN72B,EAAeA,EAAIiyB,EAAEqD,GAAKt1B,GAAK,GAAKiyB,EAAEqD,OACnC,CACH,QAAU,IAANA,EACF,SACF,GAAIrD,EAAEqD,GAAI,CACR,IAAIxyB,EAAI21B,EAAGxG,EAAEqD,GAAIpzC,EAAGyvC,GACpB,MAAMhS,EAAIgZ,EAAG71B,EAAG5gB,GAChB+vC,EAAE,MAAQ2G,EAAG91B,EAAGmvB,EAAE,MAAON,EAAGzvC,GAA+B,IAA1B0E,OAAOqlB,KAAKnJ,GAAG/gB,aAAsC,IAAtB+gB,EAAE5gB,EAAE20C,eAA6B30C,EAAE01C,qBAAyE,IAA1BhxC,OAAOqlB,KAAKnJ,GAAG/gB,SAAiBG,EAAE01C,qBAAuB90B,EAAE5gB,EAAE20C,cAAgB,GAAK/zB,EAAI,IAA9GA,EAAIA,EAAE5gB,EAAE20C,mBAAoH,IAAT9/B,EAAEu+B,IAAiBv+B,EAAE03B,eAAe6G,IAAMrrB,MAAMY,QAAQ9T,EAAEu+B,MAAQv+B,EAAEu+B,GAAK,CAACv+B,EAAEu+B,KAAMv+B,EAAEu+B,GAAG3nC,KAAKmV,IAAM5gB,EAAE2oB,QAAQyqB,EAAG3D,EAAGhS,GAAK5oB,EAAEu+B,GAAK,CAACxyB,GAAK/L,EAAEu+B,GAAKxyB,CAC1X,CACF,CACF,CACA,MAAmB,iBAAL9C,EAAgBA,EAAEje,OAAS,IAAMgV,EAAE7U,EAAE20C,cAAgB72B,QAAW,IAANA,IAAiBjJ,EAAE7U,EAAE20C,cAAgB72B,GAAIjJ,CACnH,CACA,SAAS2hC,EAAGrjC,GACV,MAAMnT,EAAI0E,OAAOqlB,KAAK5W,GACtB,IAAK,IAAI08B,EAAI,EAAGA,EAAI7vC,EAAEH,OAAQgwC,IAAK,CACjC,MAAM/xB,EAAI9d,EAAE6vC,GACZ,GAAU,OAAN/xB,EACF,OAAOA,CACX,CACF,CACA,SAAS44B,EAAGvjC,EAAGnT,EAAG6vC,EAAG/xB,GACnB,GAAI9d,EAAG,CACL,MAAM6U,EAAInQ,OAAOqlB,KAAK/pB,GAAIiQ,EAAI4E,EAAEhV,OAChC,IAAK,IAAIkwC,EAAI,EAAGA,EAAI9/B,EAAG8/B,IAAK,CAC1B,MAAMqD,EAAIv+B,EAAEk7B,GACZjyB,EAAE6K,QAAQyqB,EAAGvD,EAAI,IAAMuD,GAAG,GAAI,GAAMjgC,EAAEigC,GAAK,CAACpzC,EAAEozC,IAAMjgC,EAAEigC,GAAKpzC,EAAEozC,EAC/D,CACF,CACF,CACA,SAASqD,EAAGtjC,EAAGnT,GACb,MAAQ20C,aAAc9E,GAAM7vC,EAAG8d,EAAIpZ,OAAOqlB,KAAK5W,GAAGtT,OAClD,QAAgB,IAANie,IAAiB,IAANA,IAAY3K,EAAE08B,IAAqB,kBAAR18B,EAAE08B,IAA4B,IAAT18B,EAAE08B,IACzE,CACAyG,EAAGK,SA5CH,SAAYxjC,EAAGnT,GACb,OAAOu2C,EAAGpjC,EAAGnT,EACf,EA2CA,MAAQo2C,aAAcQ,GAAOt4B,GAAcq4B,SAAUE,GAAOP,EAiD5D,SAASQ,EAAG3jC,EAAGnT,EAAG6vC,EAAG/xB,GACnB,IAAIjJ,EAAI,GAAI5E,GAAI,EAChB,IAAK,IAAI8/B,EAAI,EAAGA,EAAI58B,EAAEtT,OAAQkwC,IAAK,CACjC,MAAMqD,EAAIjgC,EAAE48B,GAAIN,EAAIsH,EAAG3D,GACvB,QAAU,IAAN3D,EACF,SACF,IAAI7uB,EAAI,GACR,GAAqBA,EAAJ,IAAbivB,EAAEhwC,OAAmB4vC,EAAQ,GAAGI,KAAKJ,IAAKA,IAAMzvC,EAAE20C,aAAc,CAClE,IAAIqC,EAAI5D,EAAE3D,GACVwH,EAAGr2B,EAAG5gB,KAAOg3C,EAAIh3C,EAAEu1C,kBAAkB9F,EAAGuH,GAAIA,EAAIE,EAAGF,EAAGh3C,IAAKiQ,IAAM4E,GAAKiJ,GAAIjJ,GAAKmiC,EAAG/mC,GAAI,EACtF,QACF,CAAO,GAAIw/B,IAAMzvC,EAAEk1C,cAAe,CAChCjlC,IAAM4E,GAAKiJ,GAAIjJ,GAAK,YAAYu+B,EAAE3D,GAAG,GAAGzvC,EAAE20C,mBAAoB1kC,GAAI,EAClE,QACF,CAAO,GAAIw/B,IAAMzvC,EAAE21C,gBAAiB,CAClC9gC,GAAKiJ,EAAI,UAAOs1B,EAAE3D,GAAG,GAAGzvC,EAAE20C,sBAAoB1kC,GAAI,EAClD,QACF,CAAO,GAAa,MAATw/B,EAAE,GAAY,CACvB,MAAMuH,EAAI/nC,EAAEmkC,EAAE,MAAOpzC,GAAIhC,EAAU,SAANyxC,EAAe,GAAK3xB,EACjD,IAAIq5B,EAAI/D,EAAE3D,GAAG,GAAGzvC,EAAE20C,cAClBwC,EAAiB,IAAbA,EAAEt3C,OAAe,IAAMs3C,EAAI,GAAItiC,GAAK7W,EAAI,IAAIyxC,IAAI0H,IAAIH,MAAO/mC,GAAI,EACnE,QACF,CACA,IAAIwtB,EAAI3f,EACF,KAAN2f,IAAaA,GAAKz9B,EAAEo3C,UACpB,MAAyB3kC,EAAIqL,EAAI,IAAI2xB,IAA3BxgC,EAAEmkC,EAAE,MAAOpzC,KAAyB0e,EAAIo4B,EAAG1D,EAAE3D,GAAIzvC,EAAG4gB,EAAG6c,IAClC,IAA/Bz9B,EAAE41C,aAAaryC,QAAQksC,GAAYzvC,EAAEq3C,qBAAuBxiC,GAAKpC,EAAI,IAAMoC,GAAKpC,EAAI,KAASiM,GAAkB,IAAbA,EAAE7e,SAAiBG,EAAEs3C,kBAAoC54B,GAAKA,EAAE64B,SAAS,KAAO1iC,GAAKpC,EAAI,IAAIiM,IAAIZ,MAAM2xB,MAAQ56B,GAAKpC,EAAI,IAAKiM,GAAW,KAANZ,IAAaY,EAAElR,SAAS,OAASkR,EAAElR,SAAS,OAASqH,GAAKiJ,EAAI9d,EAAEo3C,SAAW14B,EAAIZ,EAAIjJ,GAAK6J,EAAG7J,GAAK,KAAK46B,MAA9L56B,GAAKpC,EAAI,KAA4LxC,GAAI,CACtV,CACA,OAAO4E,CACT,CACA,SAASkiC,EAAG5jC,GACV,MAAMnT,EAAI0E,OAAOqlB,KAAK5W,GACtB,IAAK,IAAI08B,EAAI,EAAGA,EAAI7vC,EAAEH,OAAQgwC,IAAK,CACjC,MAAM/xB,EAAI9d,EAAE6vC,GACZ,GAAI18B,EAAEo5B,eAAezuB,IAAY,OAANA,EACzB,OAAOA,CACX,CACF,CACA,SAAS7O,EAAEkE,EAAGnT,GACZ,IAAI6vC,EAAI,GACR,GAAI18B,IAAMnT,EAAE40C,iBACV,IAAK,IAAI92B,KAAK3K,EAAG,CACf,IAAKA,EAAEo5B,eAAezuB,GACpB,SACF,IAAIjJ,EAAI7U,EAAEw1C,wBAAwB13B,EAAG3K,EAAE2K,IACvCjJ,EAAIqiC,EAAGriC,EAAG7U,IAAU,IAAN6U,GAAY7U,EAAEw3C,0BAA4B3H,GAAK,IAAI/xB,EAAEta,OAAOxD,EAAEy0C,oBAAoB50C,UAAYgwC,GAAK,IAAI/xB,EAAEta,OAAOxD,EAAEy0C,oBAAoB50C,YAAYgV,IAClK,CACF,OAAOg7B,CACT,CACA,SAASoH,EAAG9jC,EAAGnT,GAEb,IAAI6vC,GADJ18B,EAAIA,EAAE3P,OAAO,EAAG2P,EAAEtT,OAASG,EAAE20C,aAAa90C,OAAS,IACzC2D,OAAO2P,EAAE2O,YAAY,KAAO,GACtC,IAAK,IAAIhE,KAAK9d,EAAEy1C,UACd,GAAIz1C,EAAEy1C,UAAU33B,KAAO3K,GAAKnT,EAAEy1C,UAAU33B,KAAO,KAAO+xB,EACpD,OAAO,EACX,OAAO,CACT,CACA,SAASqH,EAAG/jC,EAAGnT,GACb,GAAImT,GAAKA,EAAEtT,OAAS,GAAKG,EAAE61C,gBACzB,IAAK,IAAIhG,EAAI,EAAGA,EAAI7vC,EAAEy3C,SAAS53C,OAAQgwC,IAAK,CAC1C,MAAM/xB,EAAI9d,EAAEy3C,SAAS5H,GACrB18B,EAAIA,EAAEL,QAAQgL,EAAE45B,MAAO55B,EAAE2gB,IAC3B,CACF,OAAOtrB,CACT,CAEA,MAAMwkC,EAtEN,SAAYxkC,EAAGnT,GACb,IAAI6vC,EAAI,GACR,OAAO7vC,EAAE+e,QAAU/e,EAAEo3C,SAASv3C,OAAS,IAAMgwC,EAJpC,MAI6CiH,EAAG3jC,EAAGnT,EAAG,GAAI6vC,EACrE,EAmEe+H,EAAK,CAClBnD,oBAAqB,KACrBC,qBAAqB,EACrBC,aAAc,QACdC,kBAAkB,EAClBM,eAAe,EACfn2B,QAAQ,EACRq4B,SAAU,KACVE,mBAAmB,EACnBD,sBAAsB,EACtBG,2BAA2B,EAC3BjC,kBAAmB,SAASpiC,EAAGnT,GAC7B,OAAOA,CACT,EACAw1C,wBAAyB,SAASriC,EAAGnT,GACnC,OAAOA,CACT,EACAw0C,eAAe,EACfmB,iBAAiB,EACjBC,aAAc,GACd6B,SAAU,CACR,CAAEC,MAAO,IAAI/vB,OAAO,IAAK,KAAM8W,IAAK,SAEpC,CAAEiZ,MAAO,IAAI/vB,OAAO,IAAK,KAAM8W,IAAK,QACpC,CAAEiZ,MAAO,IAAI/vB,OAAO,IAAK,KAAM8W,IAAK,QACpC,CAAEiZ,MAAO,IAAI/vB,OAAO,IAAK,KAAM8W,IAAK,UACpC,CAAEiZ,MAAO,IAAI/vB,OAAO,IAAK,KAAM8W,IAAK,WAEtCoX,iBAAiB,EACjBJ,UAAW,GAGXoC,cAAc,GAEhB,SAASx5B,EAAElL,GACTtV,KAAKc,QAAU+F,OAAOC,OAAO,CAAC,EAAGizC,EAAIzkC,GAAItV,KAAKc,QAAQi2C,kBAAoB/2C,KAAKc,QAAQ+1C,oBAAsB72C,KAAKi6C,YAAc,WAC9H,OAAO,CACT,GAAKj6C,KAAKk6C,cAAgBl6C,KAAKc,QAAQ81C,oBAAoB50C,OAAQhC,KAAKi6C,YAAcE,IAAKn6C,KAAKo6C,qBAAuBC,EAAIr6C,KAAKc,QAAQogB,QAAUlhB,KAAKs6C,UAAYC,EAAIv6C,KAAKw6C,WAAa,MACxLx6C,KAAKy6C,QAAU,OACZz6C,KAAKs6C,UAAY,WACnB,MAAO,EACT,EAAGt6C,KAAKw6C,WAAa,IAAKx6C,KAAKy6C,QAAU,GAC3C,CA4CA,SAASJ,EAAG/kC,EAAGnT,EAAG6vC,GAChB,MAAM/xB,EAAIjgB,KAAK06C,IAAIplC,EAAG08B,EAAI,GAC1B,YAAwC,IAAjC18B,EAAEtV,KAAKc,QAAQg2C,eAAsD,IAA1BjwC,OAAOqlB,KAAK5W,GAAGtT,OAAehC,KAAK26C,iBAAiBrlC,EAAEtV,KAAKc,QAAQg2C,cAAe30C,EAAG8d,EAAE26B,QAAS5I,GAAKhyC,KAAK66C,gBAAgB56B,EAAE2gB,IAAKz+B,EAAG8d,EAAE26B,QAAS5I,EACnM,CAiCA,SAASuI,EAAGjlC,GACV,OAAOtV,KAAKc,QAAQy4C,SAASuB,OAAOxlC,EACtC,CACA,SAAS6kC,GAAG7kC,GACV,SAAOA,EAAE1I,WAAW5M,KAAKc,QAAQ81C,sBAAwBthC,IAAMtV,KAAKc,QAAQg2C,eAAexhC,EAAE3P,OAAO3F,KAAKk6C,cAC3G,CApFA15B,EAAEvX,UAAUoC,MAAQ,SAASiK,GAC3B,OAAOtV,KAAKc,QAAQ61C,cAAgBmD,EAAGxkC,EAAGtV,KAAKc,UAAYopB,MAAMY,QAAQxV,IAAMtV,KAAKc,QAAQi6C,eAAiB/6C,KAAKc,QAAQi6C,cAAc/4C,OAAS,IAAMsT,EAAI,CACzJ,CAACtV,KAAKc,QAAQi6C,eAAgBzlC,IAC5BtV,KAAK06C,IAAIplC,EAAG,GAAGsrB,IACrB,EACApgB,EAAEvX,UAAUyxC,IAAM,SAASplC,EAAGnT,GAC5B,IAAI6vC,EAAI,GAAI/xB,EAAI,GAChB,IAAK,IAAIjJ,KAAK1B,EACZ,GAAIzO,OAAOoC,UAAUylC,eAAe/tC,KAAK2U,EAAG0B,GAC1C,UAAW1B,EAAE0B,GAAK,IAChBhX,KAAKi6C,YAAYjjC,KAAOiJ,GAAK,SAC1B,GAAa,OAAT3K,EAAE0B,GACThX,KAAKi6C,YAAYjjC,GAAKiJ,GAAK,GAAc,MAATjJ,EAAE,GAAaiJ,GAAKjgB,KAAKs6C,UAAUn4C,GAAK,IAAM6U,EAAI,IAAMhX,KAAKw6C,WAAav6B,GAAKjgB,KAAKs6C,UAAUn4C,GAAK,IAAM6U,EAAI,IAAMhX,KAAKw6C,gBACrJ,GAAIllC,EAAE0B,aAAc0L,KACvBzC,GAAKjgB,KAAK26C,iBAAiBrlC,EAAE0B,GAAIA,EAAG,GAAI7U,QACrC,GAAmB,iBAARmT,EAAE0B,GAAgB,CAChC,MAAM5E,EAAIpS,KAAKi6C,YAAYjjC,GAC3B,GAAI5E,EACF4/B,GAAKhyC,KAAKg7C,iBAAiB5oC,EAAG,GAAKkD,EAAE0B,SAClC,GAAIA,IAAMhX,KAAKc,QAAQg2C,aAAc,CACxC,IAAI5E,EAAIlyC,KAAKc,QAAQ42C,kBAAkB1gC,EAAG,GAAK1B,EAAE0B,IACjDiJ,GAAKjgB,KAAKi7C,qBAAqB/I,EACjC,MACEjyB,GAAKjgB,KAAK26C,iBAAiBrlC,EAAE0B,GAAIA,EAAG,GAAI7U,EAC5C,MAAO,GAAI+nB,MAAMY,QAAQxV,EAAE0B,IAAK,CAC9B,MAAM5E,EAAIkD,EAAE0B,GAAGhV,OACf,IAAIkwC,EAAI,GACR,IAAK,IAAIqD,EAAI,EAAGA,EAAInjC,EAAGmjC,IAAK,CAC1B,MAAM3D,EAAIt8B,EAAE0B,GAAGu+B,UACR3D,EAAI,MAAc,OAANA,EAAsB,MAAT56B,EAAE,GAAaiJ,GAAKjgB,KAAKs6C,UAAUn4C,GAAK,IAAM6U,EAAI,IAAMhX,KAAKw6C,WAAav6B,GAAKjgB,KAAKs6C,UAAUn4C,GAAK,IAAM6U,EAAI,IAAMhX,KAAKw6C,WAAyB,iBAAL5I,EAAgB5xC,KAAKc,QAAQk5C,aAAe9H,GAAKlyC,KAAK06C,IAAI9I,EAAGzvC,EAAI,GAAGy+B,IAAMsR,GAAKlyC,KAAKo6C,qBAAqBxI,EAAG56B,EAAG7U,GAAK+vC,GAAKlyC,KAAK26C,iBAAiB/I,EAAG56B,EAAG,GAAI7U,GACvU,CACAnC,KAAKc,QAAQk5C,eAAiB9H,EAAIlyC,KAAK66C,gBAAgB3I,EAAGl7B,EAAG,GAAI7U,IAAK8d,GAAKiyB,CAC7E,MAAO,GAAIlyC,KAAKc,QAAQ+1C,qBAAuB7/B,IAAMhX,KAAKc,QAAQ+1C,oBAAqB,CACrF,MAAMzkC,EAAIvL,OAAOqlB,KAAK5W,EAAE0B,IAAKk7B,EAAI9/B,EAAEpQ,OACnC,IAAK,IAAIuzC,EAAI,EAAGA,EAAIrD,EAAGqD,IACrBvD,GAAKhyC,KAAKg7C,iBAAiB5oC,EAAEmjC,GAAI,GAAKjgC,EAAE0B,GAAG5E,EAAEmjC,IACjD,MACEt1B,GAAKjgB,KAAKo6C,qBAAqB9kC,EAAE0B,GAAIA,EAAG7U,GAC9C,MAAO,CAAEy4C,QAAS5I,EAAGpR,IAAK3gB,EAC5B,EACAO,EAAEvX,UAAU+xC,iBAAmB,SAAS1lC,EAAGnT,GACzC,OAAOA,EAAInC,KAAKc,QAAQ62C,wBAAwBriC,EAAG,GAAKnT,GAAIA,EAAInC,KAAKi7C,qBAAqB94C,GAAInC,KAAKc,QAAQ64C,2BAAmC,SAANx3C,EAAe,IAAMmT,EAAI,IAAMA,EAAI,KAAOnT,EAAI,GACxL,EAKAqe,EAAEvX,UAAU4xC,gBAAkB,SAASvlC,EAAGnT,EAAG6vC,EAAG/xB,GAC9C,GAAU,KAAN3K,EACF,MAAgB,MAATnT,EAAE,GAAanC,KAAKs6C,UAAUr6B,GAAK,IAAM9d,EAAI6vC,EAAI,IAAMhyC,KAAKw6C,WAAax6C,KAAKs6C,UAAUr6B,GAAK,IAAM9d,EAAI6vC,EAAIhyC,KAAKk7C,SAAS/4C,GAAKnC,KAAKw6C,WAC5I,CACE,IAAIxjC,EAAI,KAAO7U,EAAInC,KAAKw6C,WAAYpoC,EAAI,GACxC,MAAgB,MAATjQ,EAAE,KAAeiQ,EAAI,IAAK4E,EAAI,KAAMg7B,GAAW,KAANA,IAAiC,IAApB18B,EAAE5P,QAAQ,MAAmG,IAAjC1F,KAAKc,QAAQg3C,iBAA0B31C,IAAMnC,KAAKc,QAAQg3C,iBAAgC,IAAb1lC,EAAEpQ,OAAehC,KAAKs6C,UAAUr6B,GAAK,UAAO3K,UAAStV,KAAKy6C,QAAUz6C,KAAKs6C,UAAUr6B,GAAK,IAAM9d,EAAI6vC,EAAI5/B,EAAIpS,KAAKw6C,WAAallC,EAAItV,KAAKs6C,UAAUr6B,GAAKjJ,EAArRhX,KAAKs6C,UAAUr6B,GAAK,IAAM9d,EAAI6vC,EAAI5/B,EAAI,IAAMkD,EAAI0B,CACvI,CACF,EACAwJ,EAAEvX,UAAUiyC,SAAW,SAAS5lC,GAC9B,IAAInT,EAAI,GACR,OAAiD,IAA1CnC,KAAKc,QAAQi3C,aAAaryC,QAAQ4P,GAAYtV,KAAKc,QAAQ04C,uBAAyBr3C,EAAI,KAAwCA,EAAjCnC,KAAKc,QAAQ24C,kBAAwB,IAAU,MAAMnkC,IAAKnT,CAClK,EACAqe,EAAEvX,UAAU0xC,iBAAmB,SAASrlC,EAAGnT,EAAG6vC,EAAG/xB,GAC/C,IAAmC,IAA/BjgB,KAAKc,QAAQu2C,eAAwBl1C,IAAMnC,KAAKc,QAAQu2C,cAC1D,OAAOr3C,KAAKs6C,UAAUr6B,GAAK,YAAY3K,OAAStV,KAAKy6C,QACvD,IAAqC,IAAjCz6C,KAAKc,QAAQg3C,iBAA0B31C,IAAMnC,KAAKc,QAAQg3C,gBAC5D,OAAO93C,KAAKs6C,UAAUr6B,GAAK,UAAO3K,UAAStV,KAAKy6C,QAClD,GAAa,MAATt4C,EAAE,GACJ,OAAOnC,KAAKs6C,UAAUr6B,GAAK,IAAM9d,EAAI6vC,EAAI,IAAMhyC,KAAKw6C,WACtD,CACE,IAAIxjC,EAAIhX,KAAKc,QAAQ42C,kBAAkBv1C,EAAGmT,GAC1C,OAAO0B,EAAIhX,KAAKi7C,qBAAqBjkC,GAAU,KAANA,EAAWhX,KAAKs6C,UAAUr6B,GAAK,IAAM9d,EAAI6vC,EAAIhyC,KAAKk7C,SAAS/4C,GAAKnC,KAAKw6C,WAAax6C,KAAKs6C,UAAUr6B,GAAK,IAAM9d,EAAI6vC,EAAI,IAAMh7B,EAAI,KAAO7U,EAAInC,KAAKw6C,UACzL,CACF,EACAh6B,EAAEvX,UAAUgyC,qBAAuB,SAAS3lC,GAC1C,GAAIA,GAAKA,EAAEtT,OAAS,GAAKhC,KAAKc,QAAQk3C,gBACpC,IAAK,IAAI71C,EAAI,EAAGA,EAAInC,KAAKc,QAAQ84C,SAAS53C,OAAQG,IAAK,CACrD,MAAM6vC,EAAIhyC,KAAKc,QAAQ84C,SAASz3C,GAChCmT,EAAIA,EAAEL,QAAQ+8B,EAAE6H,MAAO7H,EAAEpR,IAC3B,CACF,OAAOtrB,CACT,otICl9DO,IAAIynB,EAAU,SAKVpwB,EAAuB,iBAARoE,MAAoBA,KAAKA,OAASA,MAAQA,MACxC,iBAAVqI,QAAsBA,OAAOA,SAAWA,QAAUA,QAC1D+hC,SAAS,cAATA,IACA,CAAC,EAGAC,EAAalxB,MAAMjhB,UAAWoyC,EAAWx0C,OAAOoC,UAChDqyC,EAAgC,oBAAX5vB,OAAyBA,OAAOziB,UAAY,KAGjE2E,EAAOwtC,EAAWxtC,KACzBf,EAAQuuC,EAAWvuC,MACnB,EAAWwuC,EAAS95C,SACpB,EAAiB85C,EAAS3M,eAGnB6M,EAA6C,oBAAhBjmB,YACpCkmB,EAAuC,oBAAbC,SAInBC,EAAgBxxB,MAAMY,QAC7B6wB,EAAa90C,OAAOqlB,KACpB0vB,EAAe/0C,OAAOrC,OACtBq3C,EAAeN,GAAuBjmB,YAAYwmB,OAG3CC,EAASrvB,MAChBsvB,EAAYz7B,SAGL07B,GAAc,CAAC16C,SAAU,MAAM26C,qBAAqB,YACpDC,EAAqB,CAAC,UAAW,gBAAiB,WAC3D,uBAAwB,iBAAkB,kBAGjCC,EAAkB7qC,KAAK4gC,IAAI,EAAG,IAAM,ECrChC,SAASkK,EAAcC,EAAM/F,GAE1C,OADAA,EAA2B,MAAdA,EAAqB+F,EAAKt6C,OAAS,GAAKu0C,EAC9C,WAIL,IAHA,IAAIv0C,EAASuP,KAAKkC,IAAI5I,UAAU7I,OAASu0C,EAAY,GACjD5N,EAAOze,MAAMloB,GACbmsB,EAAQ,EACLA,EAAQnsB,EAAQmsB,IACrBwa,EAAKxa,GAAStjB,UAAUsjB,EAAQooB,GAElC,OAAQA,GACN,KAAK,EAAG,OAAO+F,EAAK37C,KAAKX,KAAM2oC,GAC/B,KAAK,EAAG,OAAO2T,EAAK37C,KAAKX,KAAM6K,UAAU,GAAI89B,GAC7C,KAAK,EAAG,OAAO2T,EAAK37C,KAAKX,KAAM6K,UAAU,GAAIA,UAAU,GAAI89B,GAE7D,IAAItJ,EAAOnV,MAAMqsB,EAAa,GAC9B,IAAKpoB,EAAQ,EAAGA,EAAQooB,EAAYpoB,IAClCkR,EAAKlR,GAAStjB,UAAUsjB,GAG1B,OADAkR,EAAKkX,GAAc5N,EACZ2T,EAAKjhC,MAAMrb,KAAMq/B,EAC1B,CACF,CCzBe,SAASoI,EAASvJ,GAC/B,IAAIj7B,SAAci7B,EAClB,MAAgB,aAATj7B,GAAiC,WAATA,KAAuBi7B,CACxD,CCHe,SAASqe,EAAOre,GAC7B,OAAe,OAARA,CACT,CCFe,SAASse,EAAYte,GAClC,YAAe,IAARA,CACT,CCAe,SAASue,EAAUve,GAChC,OAAe,IAARA,IAAwB,IAARA,GAAwC,qBAAvB,EAASv9B,KAAKu9B,EACxD,CCJe,SAASwe,EAAUxe,GAChC,SAAUA,GAAwB,IAAjBA,EAAI8R,SACvB,CCAe,SAAS2M,EAAUlxC,GAChC,IAAImxC,EAAM,WAAanxC,EAAO,IAC9B,OAAO,SAASyyB,GACd,OAAO,EAASv9B,KAAKu9B,KAAS0e,CAChC,CACF,CCNA,QAAeD,EAAU,UCAzB,EAAeA,EAAU,UCAzB,EAAeA,EAAU,QCAzB,EAAeA,EAAU,UCAzB,EAAeA,EAAU,SCAzB,EAAeA,EAAU,UCAzB,EAAeA,EAAU,eCCzB,IAAI9X,EAAa8X,EAAU,YAIvBE,EAAWlwC,EAAKpD,UAAYoD,EAAKpD,SAASumC,WACM,iBAAbgN,WAA4C,mBAAZD,IACrEhY,EAAa,SAAS3G,GACpB,MAAqB,mBAAPA,IAAqB,CACrC,GAGF,UCZA,EAAeye,EAAU,UCIlB,IAAII,EACLvB,GAAoB,EAAa,IAAIC,SAAS,IAAInmB,YAAY,KAEhE0nB,EAAyB,oBAARC,KAAuB,EAAa,IAAIA,KCJzDC,EAAaP,EAAU,YAQ3B,QAAgBI,EAJhB,SAAwB7e,GACtB,OAAc,MAAPA,GAAe,EAAWA,EAAIif,UAAYC,EAAclf,EAAI1J,OACrE,EAEmD0oB,ECRnD,EAAexB,GAAiBiB,EAAU,SCF3B,SAAShc,EAAIzC,EAAKn6B,GAC/B,OAAc,MAAPm6B,GAAe,EAAev9B,KAAKu9B,EAAKn6B,EACjD,CCFA,IAAIs5C,EAAcV,EAAU,cAI3B,WACMU,EAAYxyC,aACfwyC,EAAc,SAASnf,GACrB,OAAOyC,EAAIzC,EAAK,SAClB,EAEJ,CANA,GAQA,UCXe,SAAS,EAASA,GAC/B,OAAQof,EAASpf,IAAQ8d,EAAU9d,KAASxR,MAAMpM,WAAW4d,GAC/D,CCFe,SAAS,EAAMA,GAC5B,OAAOqf,EAASrf,IAAQ6d,EAAO7d,EACjC,CCLe,SAASsf,EAASt5C,GAC/B,OAAO,WACL,OAAOA,CACT,CACF,CCFe,SAASu5C,EAAwBC,GAC9C,OAAO,SAAS/0C,GACd,IAAIg1C,EAAeD,EAAgB/0C,GACnC,MAA8B,iBAAhBg1C,GAA4BA,GAAgB,GAAKA,GAAgBvB,CACjF,CACF,CCPe,SAASwB,GAAgB75C,GACtC,OAAO,SAASm6B,GACd,OAAc,MAAPA,OAAc,EAASA,EAAIn6B,EACpC,CACF,CCFA,SAAe65C,GAAgB,cCE/B,GAAeH,EAAwB,ICCvC,IAAII,GAAoB,8EAQxB,SAAetC,EAPf,SAAsBrd,GAGpB,OAAO2d,EAAgBA,EAAa3d,KAAS,EAAWA,GAC1C,GAAaA,IAAQ2f,GAAkBxwB,KAAK,EAAS1sB,KAAKu9B,GAC1E,EAEoDsf,GAAS,GCX7D,GAAeI,GAAgB,UCoBhB,SAASE,GAAoB5f,EAAKhS,GAC/CA,EAhBF,SAAqBA,GAEnB,IADA,IAAIrN,EAAO,CAAC,EACH+gB,EAAI1T,EAAKlqB,OAAQoQ,EAAI,EAAGA,EAAIwtB,IAAKxtB,EAAGyM,EAAKqN,EAAK9Z,KAAM,EAC7D,MAAO,CACLi2B,SAAU,SAAStkC,GAAO,OAAqB,IAAd8a,EAAK9a,EAAe,EACrD6J,KAAM,SAAS7J,GAEb,OADA8a,EAAK9a,IAAO,EACLmoB,EAAKte,KAAK7J,EACnB,EAEJ,CAMSg6C,CAAY7xB,GACnB,IAAI8xB,EAAa7B,EAAmBn6C,OAChC4zB,EAAcsI,EAAItI,YAClBqoB,EAAS,EAAWroB,IAAgBA,EAAY3sB,WAAcoyC,EAG9DzkC,EAAO,cAGX,IAFI+pB,EAAIzC,EAAKtnB,KAAUsV,EAAKmc,SAASzxB,IAAOsV,EAAKte,KAAKgJ,GAE/ConC,MACLpnC,EAAOulC,EAAmB6B,MACd9f,GAAOA,EAAItnB,KAAUqnC,EAAMrnC,KAAUsV,EAAKmc,SAASzxB,IAC7DsV,EAAKte,KAAKgJ,EAGhB,CChCe,SAASsV,GAAKgS,GAC3B,IAAKuJ,EAASvJ,GAAM,MAAO,GAC3B,GAAIyd,EAAY,OAAOA,EAAWzd,GAClC,IAAIhS,EAAO,GACX,IAAK,IAAInoB,KAAOm6B,EAASyC,EAAIzC,EAAKn6B,IAAMmoB,EAAKte,KAAK7J,GAGlD,OADIk4C,GAAY6B,GAAoB5f,EAAKhS,GAClCA,CACT,CCPe,SAAS2S,GAAQX,GAC9B,GAAW,MAAPA,EAAa,OAAO,EAGxB,IAAIl8B,EAAS,GAAUk8B,GACvB,MAAqB,iBAAVl8B,IACT8oB,EAAQoT,IAAQ6F,EAAS7F,IAAQ,EAAYA,IAC1B,IAAXl8B,EACsB,IAAzB,GAAUkqB,GAAKgS,GACxB,CCde,SAASggB,GAAQtzB,EAAQxkB,GACtC,IAAI+3C,EAAQjyB,GAAK9lB,GAAQpE,EAASm8C,EAAMn8C,OACxC,GAAc,MAAV4oB,EAAgB,OAAQ5oB,EAE5B,IADA,IAAIk8B,EAAMr3B,OAAO+jB,GACRxY,EAAI,EAAGA,EAAIpQ,EAAQoQ,IAAK,CAC/B,IAAIrO,EAAMo6C,EAAM/rC,GAChB,GAAIhM,EAAMrC,KAASm6B,EAAIn6B,MAAUA,KAAOm6B,GAAM,OAAO,CACvD,CACA,OAAO,CACT,CCPe,SAAS/9B,GAAE+9B,GACxB,OAAIA,aAAe/9B,GAAU+9B,EACvBl+B,gBAAgBG,QACtBH,KAAKo+C,SAAWlgB,GADiB,IAAI/9B,GAAE+9B,EAEzC,CCLe,SAASmgB,GAAaC,GACnC,OAAO,IAAI7pB,WACT6pB,EAAa9pB,QAAU8pB,EACvBA,EAAaC,YAAc,EAC3B,GAAcD,GAElB,CDCAn+C,GAAE48B,QAAUA,EAGZ58B,GAAE8I,UAAU/E,MAAQ,WAClB,OAAOlE,KAAKo+C,QACd,EAIAj+C,GAAE8I,UAAUu1C,QAAUr+C,GAAE8I,UAAUvC,OAASvG,GAAE8I,UAAU/E,MAEvD/D,GAAE8I,UAAU1H,SAAW,WACrB,OAAO8tB,OAAOrvB,KAAKo+C,SACrB,EEZA,IAAIK,GAAc,oBAGlB,SAASC,GAAG37B,EAAGvC,EAAGm+B,EAAQC,GAGxB,GAAI77B,IAAMvC,EAAG,OAAa,IAANuC,GAAW,EAAIA,GAAM,EAAIvC,EAE7C,GAAS,MAALuC,GAAkB,MAALvC,EAAW,OAAO,EAEnC,GAAIuC,GAAMA,EAAG,OAAOvC,GAAMA,EAE1B,IAAIvd,SAAc8f,EAClB,OAAa,aAAT9f,GAAgC,WAATA,GAAiC,iBAALud,IAChDq+B,GAAO97B,EAAGvC,EAAGm+B,EAAQC,EAC9B,CAGA,SAASC,GAAO97B,EAAGvC,EAAGm+B,EAAQC,GAExB77B,aAAa5iB,KAAG4iB,EAAIA,EAAEq7B,UACtB59B,aAAargB,KAAGqgB,EAAIA,EAAE49B,UAE1B,IAAIpX,EAAY,EAASrmC,KAAKoiB,GAC9B,GAAIikB,IAAc,EAASrmC,KAAK6f,GAAI,OAAO,EAE3C,GAAIu8B,GAAgC,mBAAb/V,GAAkC,EAAWjkB,GAAI,CACtE,IAAK,EAAWvC,GAAI,OAAO,EAC3BwmB,EAAYyX,EACd,CACA,OAAQzX,GAEN,IAAK,kBAEL,IAAK,kBAGH,MAAO,GAAKjkB,GAAM,GAAKvC,EACzB,IAAK,kBAGH,OAAKuC,IAAOA,GAAWvC,IAAOA,EAEhB,IAANuC,EAAU,GAAKA,GAAM,EAAIvC,GAAKuC,IAAOvC,EAC/C,IAAK,gBACL,IAAK,mBAIH,OAAQuC,IAAOvC,EACjB,IAAK,kBACH,OAAO86B,EAAYkD,QAAQ79C,KAAKoiB,KAAOu4B,EAAYkD,QAAQ79C,KAAK6f,GAClE,IAAK,uBACL,KAAKi+B,GAEH,OAAOI,GAAOR,GAAat7B,GAAIs7B,GAAa79B,GAAIm+B,EAAQC,GAG5D,IAAIE,EAA0B,mBAAd9X,EAChB,IAAK8X,GAAa,GAAa/7B,GAAI,CAE/B,GADiB,GAAcA,KACZ,GAAcvC,GAAI,OAAO,EAC5C,GAAIuC,EAAEyR,SAAWhU,EAAEgU,QAAUzR,EAAEw7B,aAAe/9B,EAAE+9B,WAAY,OAAO,EACnEO,GAAY,CAChB,CACA,IAAKA,EAAW,CACd,GAAgB,iBAAL/7B,GAA6B,iBAALvC,EAAe,OAAO,EAIzD,IAAIu+B,EAAQh8B,EAAE6S,YAAaopB,EAAQx+B,EAAEoV,YACrC,GAAImpB,IAAUC,KAAW,EAAWD,IAAUA,aAAiBA,GACtC,EAAWC,IAAUA,aAAiBA,IACvC,gBAAiBj8B,GAAK,gBAAiBvC,EAC7D,OAAO,CAEX,CAOAo+B,EAASA,GAAU,GAEnB,IADA,IAAI58C,GAFJ28C,EAASA,GAAU,IAEC38C,OACbA,KAGL,GAAI28C,EAAO38C,KAAY+gB,EAAG,OAAO67B,EAAO58C,KAAYwe,EAQtD,GAJAm+B,EAAO/wC,KAAKmV,GACZ67B,EAAOhxC,KAAK4S,GAGRs+B,EAAW,CAGb,IADA98C,EAAS+gB,EAAE/gB,UACIwe,EAAExe,OAAQ,OAAO,EAEhC,KAAOA,KACL,IAAK08C,GAAG37B,EAAE/gB,GAASwe,EAAExe,GAAS28C,EAAQC,GAAS,OAAO,CAE1D,KAAO,CAEL,IAAqB76C,EAAjBo6C,EAAQjyB,GAAKnJ,GAGjB,GAFA/gB,EAASm8C,EAAMn8C,OAEXkqB,GAAK1L,GAAGxe,SAAWA,EAAQ,OAAO,EACtC,KAAOA,KAGL,IAAM2+B,EAAIngB,EADVzc,EAAMo6C,EAAMn8C,MACS08C,GAAG37B,EAAEhf,GAAMyc,EAAEzc,GAAM46C,EAAQC,GAAU,OAAO,CAErE,CAIA,OAFAD,EAAO94C,MACP+4C,EAAO/4C,OACA,CACT,CAGe,SAASy7B,GAAQve,EAAGvC,GACjC,OAAOk+B,GAAG37B,EAAGvC,EACf,CCpIe,SAASy+B,GAAQ/gB,GAC9B,IAAKuJ,EAASvJ,GAAM,MAAO,GAC3B,IAAIhS,EAAO,GACX,IAAK,IAAInoB,KAAOm6B,EAAKhS,EAAKte,KAAK7J,GAG/B,OADIk4C,GAAY6B,GAAoB5f,EAAKhS,GAClCA,CACT,CCJO,SAASgzB,GAAgBrrB,GAC9B,IAAI7xB,EAAS,GAAU6xB,GACvB,OAAO,SAASqK,GACd,GAAW,MAAPA,EAAa,OAAO,EAExB,IAAIhS,EAAO+yB,GAAQ/gB,GACnB,GAAI,GAAUhS,GAAO,OAAO,EAC5B,IAAK,IAAI9Z,EAAI,EAAGA,EAAIpQ,EAAQoQ,IAC1B,IAAK,EAAW8rB,EAAIrK,EAAQzhB,KAAM,OAAO,EAK3C,OAAOyhB,IAAYsrB,KAAmB,EAAWjhB,EAAIkhB,IACvD,CACF,CAIA,IAAIA,GAAc,UAEdC,GAAa,CAAC,QAAS,UACvBC,GAAU,CAAC,MAFD,MAEiB,OAIpBC,GAAaF,GAAWl1B,OAAOi1B,GAAaE,IACnDH,GAAiBE,GAAWl1B,OAAOm1B,IACnCE,GAAa,CAAC,OAAOr1B,OAAOk1B,GAAYD,GAR9B,OCxBd,SAAepC,EAASkC,GAAgBK,IAAc5C,EAAU,OCAhE,GAAeK,EAASkC,GAAgBC,IAAkBxC,EAAU,WCApE,GAAeK,EAASkC,GAAgBM,IAAc7C,EAAU,OCFhE,GAAeA,EAAU,WCCV,SAASzX,GAAOhH,GAI7B,IAHA,IAAIigB,EAAQjyB,GAAKgS,GACbl8B,EAASm8C,EAAMn8C,OACfkjC,EAAShb,MAAMloB,GACVoQ,EAAI,EAAGA,EAAIpQ,EAAQoQ,IAC1B8yB,EAAO9yB,GAAK8rB,EAAIigB,EAAM/rC,IAExB,OAAO8yB,CACT,CCPe,SAASuE,GAAMvL,GAI5B,IAHA,IAAIigB,EAAQjyB,GAAKgS,GACbl8B,EAASm8C,EAAMn8C,OACfynC,EAAQvf,MAAMloB,GACToQ,EAAI,EAAGA,EAAIpQ,EAAQoQ,IAC1Bq3B,EAAMr3B,GAAK,CAAC+rC,EAAM/rC,GAAI8rB,EAAIigB,EAAM/rC,KAElC,OAAOq3B,CACT,CCTe,SAASC,GAAOxL,GAG7B,IAFA,IAAIp5B,EAAS,CAAC,EACVq5C,EAAQjyB,GAAKgS,GACR9rB,EAAI,EAAGpQ,EAASm8C,EAAMn8C,OAAQoQ,EAAIpQ,EAAQoQ,IACjDtN,EAAOo5B,EAAIigB,EAAM/rC,KAAO+rC,EAAM/rC,GAEhC,OAAOtN,CACT,CCPe,SAASglC,GAAU5L,GAChC,IAAIR,EAAQ,GACZ,IAAK,IAAI35B,KAAOm6B,EACV,EAAWA,EAAIn6B,KAAO25B,EAAM9vB,KAAK7J,GAEvC,OAAO25B,EAAMrR,MACf,CCRe,SAASozB,GAAeC,EAAUpf,GAC/C,OAAO,SAASpC,GACd,IAAIl8B,EAAS6I,UAAU7I,OAEvB,GADIs+B,IAAUpC,EAAMr3B,OAAOq3B,IACvBl8B,EAAS,GAAY,MAAPk8B,EAAa,OAAOA,EACtC,IAAK,IAAI/P,EAAQ,EAAGA,EAAQnsB,EAAQmsB,IAIlC,IAHA,IAAI5T,EAAS1P,UAAUsjB,GACnBjC,EAAOwzB,EAASnlC,GAChBqlB,EAAI1T,EAAKlqB,OACJoQ,EAAI,EAAGA,EAAIwtB,EAAGxtB,IAAK,CAC1B,IAAIrO,EAAMmoB,EAAK9Z,GACVkuB,QAAyB,IAAbpC,EAAIn6B,KAAiBm6B,EAAIn6B,GAAOwW,EAAOxW,GAC1D,CAEF,OAAOm6B,CACT,CACF,CCbA,SAAeuhB,GAAeR,ICE9B,GAAeQ,GAAevzB,ICF9B,GAAeuzB,GAAeR,IAAS,GCKxB,SAASU,GAAW12C,GACjC,IAAKw+B,EAASx+B,GAAY,MAAO,CAAC,EAClC,GAAI2yC,EAAc,OAAOA,EAAa3yC,GACtC,IAAI22C,EAPG,WAAW,EAQlBA,EAAK32C,UAAYA,EACjB,IAAInE,EAAS,IAAI86C,EAEjB,OADAA,EAAK32C,UAAY,KACVnE,CACT,CCXe,SAASN,GAAOyE,EAAWhE,GACxC,IAAIH,EAAS66C,GAAW12C,GAExB,OADIhE,GAAO46C,GAAU/6C,EAAQG,GACtBH,CACT,CCLe,SAASkP,GAAMkqB,GAC5B,OAAKuJ,EAASvJ,GACPpT,EAAQoT,GAAOA,EAAIrxB,QAAU6vB,GAAO,CAAC,EAAGwB,GADpBA,CAE7B,CCLe,SAAS4hB,GAAI5hB,EAAK6hB,GAE/B,OADAA,EAAY7hB,GACLA,CACT,CCDe,SAAS8hB,GAAO1zC,GAC7B,OAAOwe,EAAQxe,GAAQA,EAAO,CAACA,EACjC,CCFe,SAAS,GAAOA,GAC7B,OAAOnM,GAAE6/C,OAAO1zC,EAClB,CCNe,SAAS2zC,GAAQ/hB,EAAK5xB,GAEnC,IADA,IAAItK,EAASsK,EAAKtK,OACToQ,EAAI,EAAGA,EAAIpQ,EAAQoQ,IAAK,CAC/B,GAAW,MAAP8rB,EAAa,OACjBA,EAAMA,EAAI5xB,EAAK8F,GACjB,CACA,OAAOpQ,EAASk8B,OAAM,CACxB,CCAe,SAASzV,GAAImC,EAAQte,EAAMtI,GACxC,IAAIE,EAAQ+7C,GAAQr1B,EAAQ,GAAOte,IACnC,OAAOkwC,EAAYt4C,GAASF,EAAeE,CAC7C,CCLe,SAAS,GAAIg6B,EAAK5xB,GAG/B,IADA,IAAItK,GADJsK,EAAO,GAAOA,IACItK,OACToQ,EAAI,EAAGA,EAAIpQ,EAAQoQ,IAAK,CAC/B,IAAIrO,EAAMuI,EAAK8F,GACf,IAAK,EAAK8rB,EAAKn6B,GAAM,OAAO,EAC5Bm6B,EAAMA,EAAIn6B,EACZ,CACA,QAAS/B,CACX,CCde,SAASk+C,GAASh8C,GAC/B,OAAOA,CACT,CCEe,SAASyjC,GAAQvhC,GAE9B,OADAA,EAAQy5C,GAAU,CAAC,EAAGz5C,GACf,SAAS83B,GACd,OAAOggB,GAAQhgB,EAAK93B,EACtB,CACF,CCLe,SAASuoC,GAASriC,GAE/B,OADAA,EAAO,GAAOA,GACP,SAAS4xB,GACd,OAAO+hB,GAAQ/hB,EAAK5xB,EACtB,CACF,CCPe,SAAS6zC,GAAW7D,EAAMlzC,EAASg3C,GAChD,QAAgB,IAAZh3C,EAAoB,OAAOkzC,EAC/B,OAAoB,MAAZ8D,EAAmB,EAAIA,GAC7B,KAAK,EAAG,OAAO,SAASl8C,GACtB,OAAOo4C,EAAK37C,KAAKyI,EAASlF,EAC5B,EAEA,KAAK,EAAG,OAAO,SAASA,EAAOiqB,EAAOxlB,GACpC,OAAO2zC,EAAK37C,KAAKyI,EAASlF,EAAOiqB,EAAOxlB,EAC1C,EACA,KAAK,EAAG,OAAO,SAASskB,EAAa/oB,EAAOiqB,EAAOxlB,GACjD,OAAO2zC,EAAK37C,KAAKyI,EAAS6jB,EAAa/oB,EAAOiqB,EAAOxlB,EACvD,EAEF,OAAO,WACL,OAAO2zC,EAAKjhC,MAAMjS,EAASyB,UAC7B,CACF,CCTe,SAASw1C,GAAan8C,EAAOkF,EAASg3C,GACnD,OAAa,MAATl8C,EAAsBg8C,GACtB,EAAWh8C,GAAei8C,GAAWj8C,EAAOkF,EAASg3C,GACrD3Y,EAASvjC,KAAW4mB,EAAQ5mB,GAAeyjC,GAAQzjC,GAChDyqC,GAASzqC,EAClB,CCVe,SAASq5B,GAASr5B,EAAOkF,GACtC,OAAOi3C,GAAan8C,EAAOkF,EAASk3C,IACtC,CCFe,SAASjZ,GAAGnjC,EAAOkF,EAASg3C,GACzC,OAAIjgD,GAAEo9B,WAAaA,GAAiBp9B,GAAEo9B,SAASr5B,EAAOkF,GAC/Ci3C,GAAan8C,EAAOkF,EAASg3C,EACtC,CCJe,SAASG,GAAUriB,EAAKX,EAAUn0B,GAC/Cm0B,EAAW8J,GAAG9J,EAAUn0B,GAIxB,IAHA,IAAI+0C,EAAQjyB,GAAKgS,GACbl8B,EAASm8C,EAAMn8C,OACf0F,EAAU,CAAC,EACNymB,EAAQ,EAAGA,EAAQnsB,EAAQmsB,IAAS,CAC3C,IAAIqyB,EAAarC,EAAMhwB,GACvBzmB,EAAQ84C,GAAcjjB,EAASW,EAAIsiB,GAAaA,EAAYtiB,EAC9D,CACA,OAAOx2B,CACT,CCde,SAAS+4C,KAAO,CCGhB,SAASC,GAAWxiB,GACjC,OAAW,MAAPA,EAAoBuiB,GACjB,SAASn0C,GACd,OAAOmc,GAAIyV,EAAK5xB,EAClB,CACF,CCNe,SAASq0C,GAAM3pC,EAAGumB,EAAUn0B,GACzC,IAAIw3C,EAAQ12B,MAAM3Y,KAAKkC,IAAI,EAAGuD,IAC9BumB,EAAW4iB,GAAW5iB,EAAUn0B,EAAS,GACzC,IAAK,IAAIgJ,EAAI,EAAGA,EAAI4E,EAAG5E,IAAKwuC,EAAMxuC,GAAKmrB,EAASnrB,GAChD,OAAOwuC,CACT,CCPe,SAASC,GAAO5qC,EAAKxC,GAKlC,OAJW,MAAPA,IACFA,EAAMwC,EACNA,EAAM,GAEDA,EAAM1E,KAAKwB,MAAMxB,KAAKsvC,UAAYptC,EAAMwC,EAAM,GACvD,ChBCA9V,GAAE6/C,OAASA,GUCX7/C,GAAEo9B,SAAWA,GORb,SAAe7a,KAAKo+B,KAAO,WACzB,OAAO,IAAIp+B,MAAOzT,SACpB,ECCe,SAAS8xC,GAAch0C,GACpC,IAAIi0C,EAAU,SAAS3gC,GACrB,OAAOtT,EAAIsT,EACb,EAEI9F,EAAS,MAAQ2R,GAAKnf,GAAKtL,KAAK,KAAO,IACvCw/C,EAAan3B,OAAOvP,GACpB2mC,EAAgBp3B,OAAOvP,EAAQ,KACnC,OAAO,SAASyF,GAEd,OADAA,EAAmB,MAAVA,EAAiB,GAAK,GAAKA,EAC7BihC,EAAW5zB,KAAKrN,GAAUA,EAAO/K,QAAQisC,EAAeF,GAAWhhC,CAC5E,CACF,CCfA,UACE,IAAK,QACL,IAAK,OACL,IAAK,OACL,IAAK,SACL,IAAK,SACL,IAAK,UCHP,GAAe+gC,GAAc,ICA7B,GAAeA,GCAArX,GAAO,KCAtB,GAAevpC,GAAEghD,iBAAmB,CAClC1Q,SAAU,kBACV2Q,YAAa,mBACbrvB,OAAQ,oBCAV,IAAIsvB,GAAU,OAIVC,GAAU,CACZ,IAAK,IACL,KAAM,KACN,KAAM,IACN,KAAM,IACN,SAAU,QACV,SAAU,SAGR1W,GAAe,4BAEnB,SAAS2W,GAAWlhC,GAClB,MAAO,KAAOihC,GAAQjhC,EACxB,CAOA,IAAImhC,GAAiB,mBAMN,SAASC,GAASngD,EAAMogD,EAAUC,IAC1CD,GAAYC,IAAaD,EAAWC,GACzCD,EAAWphB,GAAS,CAAC,EAAGohB,EAAUvhD,GAAEghD,kBAGpC,IAAIxZ,EAAU7d,OAAO,EAClB43B,EAAS3vB,QAAUsvB,IAAS9mC,QAC5BmnC,EAASN,aAAeC,IAAS9mC,QACjCmnC,EAASjR,UAAY4Q,IAAS9mC,QAC/B9Y,KAAK,KAAO,KAAM,KAGhB0sB,EAAQ,EACR5T,EAAS,SACbjZ,EAAK2T,QAAQ0yB,GAAS,SAAStnB,EAAO0R,EAAQqvB,EAAa3Q,EAAUmR,GAanE,OAZArnC,GAAUjZ,EAAKuL,MAAMshB,EAAOyzB,GAAQ3sC,QAAQ21B,GAAc2W,IAC1DpzB,EAAQyzB,EAASvhC,EAAMre,OAEnB+vB,EACFxX,GAAU,cAAgBwX,EAAS,iCAC1BqvB,EACT7mC,GAAU,cAAgB6mC,EAAc,uBAC/B3Q,IACTl2B,GAAU,OAASk2B,EAAW,YAIzBpwB,CACT,IACA9F,GAAU,OAEV,IAgBI6rB,EAhBAyb,EAAWH,EAASI,SACxB,GAAID,GAEF,IAAKL,GAAen0B,KAAKw0B,GAAW,MAAM,IAAIj5C,MAC5C,sCAAwCi5C,QAI1CtnC,EAAS,mBAAqBA,EAAS,MACvCsnC,EAAW,MAGbtnC,EAAS,4FAEPA,EAAS,gBAGX,IACE6rB,EAAS,IAAI+U,SAAS0G,EAAU,IAAKtnC,EACvC,CAAE,MAAOjF,GAEP,MADAA,EAAEiF,OAASA,EACLjF,CACR,CAEA,IAAImsC,EAAW,SAASp+C,GACtB,OAAO+iC,EAAOzlC,KAAKX,KAAMqD,EAAMlD,GACjC,EAKA,OAFAshD,EAASlnC,OAAS,YAAcsnC,EAAW,OAAStnC,EAAS,IAEtDknC,CACT,CC9Fe,SAAS38C,GAAOo5B,EAAK5xB,EAAMy1C,GAExC,IAAI//C,GADJsK,EAAO,GAAOA,IACItK,OAClB,IAAKA,EACH,OAAO,EAAW+/C,GAAYA,EAASphD,KAAKu9B,GAAO6jB,EAErD,IAAK,IAAI3vC,EAAI,EAAGA,EAAIpQ,EAAQoQ,IAAK,CAC/B,IAAIwE,EAAc,MAAPsnB,OAAc,EAASA,EAAI5xB,EAAK8F,SAC9B,IAATwE,IACFA,EAAOmrC,EACP3vC,EAAIpQ,GAENk8B,EAAM,EAAWtnB,GAAQA,EAAKjW,KAAKu9B,GAAOtnB,CAC5C,CACA,OAAOsnB,CACT,CCnBA,IAAI8jB,GAAY,EACD,SAAS5jB,GAAS6jB,GAC/B,IAAI18C,IAAOy8C,GAAY,GACvB,OAAOC,EAASA,EAAS18C,EAAKA,CAChC,CCHe,SAAS0jC,GAAM/K,GAC5B,IAAIsJ,EAAWrnC,GAAE+9B,GAEjB,OADAsJ,EAAS0a,QAAS,EACX1a,CACT,CCDe,SAAS2a,GAAaC,EAAYC,EAAWj5C,EAASk5C,EAAgBjjB,GACnF,KAAMijB,aAA0BD,GAAY,OAAOD,EAAW/mC,MAAMjS,EAASi2B,GAC7E,IAAItuB,EAAO4uC,GAAWyC,EAAWn5C,WAC7BnE,EAASs9C,EAAW/mC,MAAMtK,EAAMsuB,GACpC,OAAIoI,EAAS3iC,GAAgBA,EACtBiM,CACT,CCJA,IAAIwxC,GAAUlG,GAAc,SAASC,EAAMkG,GACzC,IAAIC,EAAcF,GAAQE,YACtBC,EAAQ,WAGV,IAFA,IAAI7gC,EAAW,EAAG7f,EAASwgD,EAAUxgD,OACjCq9B,EAAOnV,MAAMloB,GACRoQ,EAAI,EAAGA,EAAIpQ,EAAQoQ,IAC1BitB,EAAKjtB,GAAKowC,EAAUpwC,KAAOqwC,EAAc53C,UAAUgX,KAAc2gC,EAAUpwC,GAE7E,KAAOyP,EAAWhX,UAAU7I,QAAQq9B,EAAKzxB,KAAK/C,UAAUgX,MACxD,OAAOsgC,GAAa7F,EAAMoG,EAAO1iD,KAAMA,KAAMq/B,EAC/C,EACA,OAAOqjB,CACT,IAEAH,GAAQE,YAActiD,GACtB,YCjBA,GAAek8C,GAAc,SAASC,EAAMlzC,EAASi2B,GACnD,IAAK,EAAWid,GAAO,MAAM,IAAI7xB,UAAU,qCAC3C,IAAIi4B,EAAQrG,GAAc,SAASsG,GACjC,OAAOR,GAAa7F,EAAMoG,EAAOt5C,EAASpJ,KAAMq/B,EAAKlV,OAAOw4B,GAC9D,IACA,OAAOD,CACT,ICLA,GAAejF,EAAwB,ICDxB,SAASmF,GAAQv4B,EAAO9iB,EAAOskB,EAAQg3B,GAEpD,GADAA,EAASA,GAAU,GACdt7C,GAAmB,IAAVA,GAEP,GAAIA,GAAS,EAClB,OAAOs7C,EAAO14B,OAAOE,QAFrB9iB,EAAQ+4C,IAKV,IADA,IAAIwC,EAAMD,EAAO7gD,OACRoQ,EAAI,EAAGpQ,EAAS,GAAUqoB,GAAQjY,EAAIpQ,EAAQoQ,IAAK,CAC1D,IAAIlO,EAAQmmB,EAAMjY,GAClB,GAAI,GAAYlO,KAAW4mB,EAAQ5mB,IAAU,EAAYA,IAEvD,GAAIqD,EAAQ,EACVq7C,GAAQ1+C,EAAOqD,EAAQ,EAAGskB,EAAQg3B,GAClCC,EAAMD,EAAO7gD,YAGb,IADA,IAAImQ,EAAI,EAAG4wC,EAAM7+C,EAAMlC,OAChBmQ,EAAI4wC,GAAKF,EAAOC,KAAS5+C,EAAMiO,UAE9B0Z,IACVg3B,EAAOC,KAAS5+C,EAEpB,CACA,OAAO2+C,CACT,CCvBA,SAAexG,GAAc,SAASne,EAAKhS,GAEzC,IAAIiC,GADJjC,EAAO02B,GAAQ12B,GAAM,GAAO,IACXlqB,OACjB,GAAImsB,EAAQ,EAAG,MAAM,IAAIvlB,MAAM,yCAC/B,KAAOulB,KAAS,CACd,IAAIpqB,EAAMmoB,EAAKiC,GACf+P,EAAIn6B,GAAOP,GAAK06B,EAAIn6B,GAAMm6B,EAC5B,CACA,OAAOA,CACT,ICbe,SAAS8kB,GAAQ1G,EAAM2G,GACpC,IAAID,EAAU,SAASj/C,GACrB,IAAIm/C,EAAQF,EAAQE,MAChBC,EAAU,IAAMF,EAASA,EAAO5nC,MAAMrb,KAAM6K,WAAa9G,GAE7D,OADK48B,EAAIuiB,EAAOC,KAAUD,EAAMC,GAAW7G,EAAKjhC,MAAMrb,KAAM6K,YACrDq4C,EAAMC,EACf,EAEA,OADAH,EAAQE,MAAQ,CAAC,EACVF,CACT,CCRA,SAAe3G,GAAc,SAASC,EAAMpa,EAAM7C,GAChD,OAAO3b,YAAW,WAChB,OAAO44B,EAAKjhC,MAAM,KAAMgkB,EAC1B,GAAG6C,EACL,ICFA,GAAe,GAAQ1lB,GAAOrc,GAAG,GCClB,SAASijD,GAAS9G,EAAMpa,EAAMphC,GAC3C,IAAIE,EAASoI,EAASi2B,EAAMv6B,EACxB88B,EAAW,EACV9gC,IAASA,EAAU,CAAC,GAEzB,IAAIuiD,EAAQ,WACVzhB,GAA+B,IAApB9gC,EAAQwiD,QAAoB,EAAIxC,KAC3C9/C,EAAU,KACV8D,EAASw3C,EAAKjhC,MAAMjS,EAASi2B,GACxBr+B,IAASoI,EAAUi2B,EAAO,KACjC,EAEIkkB,EAAY,WACd,IAAIC,EAAO1C,KACNlf,IAAgC,IAApB9gC,EAAQwiD,UAAmB1hB,EAAW4hB,GACvD,IAAI1kB,EAAYoD,GAAQshB,EAAO5hB,GAc/B,OAbAx4B,EAAUpJ,KACVq/B,EAAOx0B,UACHi0B,GAAa,GAAKA,EAAYoD,GAC5BlhC,IACFyiD,aAAaziD,GACbA,EAAU,MAEZ4gC,EAAW4hB,EACX1+C,EAASw3C,EAAKjhC,MAAMjS,EAASi2B,GACxBr+B,IAASoI,EAAUi2B,EAAO,OACrBr+B,IAAgC,IAArBF,EAAQsB,WAC7BpB,EAAU0iB,WAAW2/B,EAAOvkB,IAEvBh6B,CACT,EAQA,OANAy+C,EAAU9yC,OAAS,WACjBgzC,aAAaziD,GACb4gC,EAAW,EACX5gC,EAAUoI,EAAUi2B,EAAO,IAC7B,EAEOkkB,CACT,CCvCe,SAAS7wB,GAAS4pB,EAAMpa,EAAMwhB,GAC3C,IAAI1iD,EAAS4gC,EAAUvC,EAAMv6B,EAAQsE,EAEjCi6C,EAAQ,WACV,IAAIM,EAAS7C,KAAQlf,EACjBM,EAAOyhB,EACT3iD,EAAU0iB,WAAW2/B,EAAOnhB,EAAOyhB,IAEnC3iD,EAAU,KACL0iD,IAAW5+C,EAASw3C,EAAKjhC,MAAMjS,EAASi2B,IAExCr+B,IAASq+B,EAAOj2B,EAAU,MAEnC,EAEIw6C,EAAYvH,GAAc,SAASwH,GAQrC,OAPAz6C,EAAUpJ,KACVq/B,EAAOwkB,EACPjiB,EAAWkf,KACN9/C,IACHA,EAAU0iB,WAAW2/B,EAAOnhB,GACxBwhB,IAAW5+C,EAASw3C,EAAKjhC,MAAMjS,EAASi2B,KAEvCv6B,CACT,IAOA,OALA8+C,EAAUnzC,OAAS,WACjBgzC,aAAaziD,GACbA,EAAUq+B,EAAOj2B,EAAU,IAC7B,EAEOw6C,CACT,CClCe,SAASE,GAAKxH,EAAMyH,GACjC,OAAO,GAAQA,EAASzH,EAC1B,CCNe,SAAS0H,GAAOn5B,GAC7B,OAAO,WACL,OAAQA,EAAUxP,MAAMrb,KAAM6K,UAChC,CACF,CCHe,SAASo5C,KACtB,IAAI5kB,EAAOx0B,UACPuhC,EAAQ/M,EAAKr9B,OAAS,EAC1B,OAAO,WAGL,IAFA,IAAIoQ,EAAIg6B,EACJtnC,EAASu6B,EAAK+M,GAAO/wB,MAAMrb,KAAM6K,WAC9BuH,KAAKtN,EAASu6B,EAAKjtB,GAAGzR,KAAKX,KAAM8E,GACxC,OAAOA,CACT,CACF,CCVe,SAASo/C,GAAMvD,EAAOrE,GACnC,OAAO,WACL,KAAMqE,EAAQ,EACZ,OAAOrE,EAAKjhC,MAAMrb,KAAM6K,UAE5B,CACF,CCLe,SAASs5C,GAAOxD,EAAOrE,GACpC,IAAIvS,EACJ,OAAO,WAKL,QAJM4W,EAAQ,IACZ5W,EAAOuS,EAAKjhC,MAAMrb,KAAM6K,YAEtB81C,GAAS,IAAGrE,EAAO,MAChBvS,CACT,CACF,CCNA,SAAe,GAAQoa,GAAQ,GCDhB,SAASC,GAAQlmB,EAAKrT,EAAWzhB,GAC9CyhB,EAAYwc,GAAGxc,EAAWzhB,GAE1B,IADA,IAAuBrF,EAAnBo6C,EAAQjyB,GAAKgS,GACR9rB,EAAI,EAAGpQ,EAASm8C,EAAMn8C,OAAQoQ,EAAIpQ,EAAQoQ,IAEjD,GAAIyY,EAAUqT,EADdn6B,EAAMo6C,EAAM/rC,IACYrO,EAAKm6B,GAAM,OAAOn6B,CAE9C,CCPe,SAASsgD,GAA2BC,GACjD,OAAO,SAASrhB,EAAOpY,EAAWzhB,GAChCyhB,EAAYwc,GAAGxc,EAAWzhB,GAG1B,IAFA,IAAIpH,EAAS,GAAUihC,GACnB9U,EAAQm2B,EAAM,EAAI,EAAItiD,EAAS,EAC5BmsB,GAAS,GAAKA,EAAQnsB,EAAQmsB,GAASm2B,EAC5C,GAAIz5B,EAAUoY,EAAM9U,GAAQA,EAAO8U,GAAQ,OAAO9U,EAEpD,OAAQ,CACV,CACF,CCXA,SAAek2B,GAA2B,GCA1C,GAAeA,IAA4B,GCE5B,SAASE,GAAYthB,EAAO/E,EAAKX,EAAUn0B,GAIxD,IAFA,IAAIlF,GADJq5B,EAAW8J,GAAG9J,EAAUn0B,EAAS,IACZ80B,GACjBsmB,EAAM,EAAGC,EAAO,GAAUxhB,GACvBuhB,EAAMC,GAAM,CACjB,IAAIC,EAAMnzC,KAAKwB,OAAOyxC,EAAMC,GAAQ,GAChClnB,EAAS0F,EAAMyhB,IAAQxgD,EAAOsgD,EAAME,EAAM,EAAQD,EAAOC,CAC/D,CACA,OAAOF,CACT,CCTe,SAASG,GAAkBL,EAAKM,EAAeL,GAC5D,OAAO,SAASthB,EAAO7V,EAAM01B,GAC3B,IAAI1wC,EAAI,EAAGpQ,EAAS,GAAUihC,GAC9B,GAAkB,iBAAP6f,EACLwB,EAAM,EACRlyC,EAAI0wC,GAAO,EAAIA,EAAMvxC,KAAKkC,IAAIqvC,EAAM9gD,EAAQoQ,GAE5CpQ,EAAS8gD,GAAO,EAAIvxC,KAAK0E,IAAI6sC,EAAM,EAAG9gD,GAAU8gD,EAAM9gD,EAAS,OAE5D,GAAIuiD,GAAezB,GAAO9gD,EAE/B,OAAOihC,EADP6f,EAAMyB,EAAYthB,EAAO7V,MACHA,EAAO01B,GAAO,EAEtC,GAAI11B,GAASA,EAEX,OADA01B,EAAM8B,EAAc/3C,EAAMlM,KAAKsiC,EAAO7wB,EAAGpQ,GAAS,KACpC,EAAI8gD,EAAM1wC,GAAK,EAE/B,IAAK0wC,EAAMwB,EAAM,EAAIlyC,EAAIpQ,EAAS,EAAG8gD,GAAO,GAAKA,EAAM9gD,EAAQ8gD,GAAOwB,EACpE,GAAIrhB,EAAM6f,KAAS11B,EAAM,OAAO01B,EAElC,OAAQ,CACV,CACF,CCnBA,SAAe6B,GAAkB,EAAGpb,GAAWgb,ICH/C,GAAeI,IAAmB,EAAGnb,ICAtB,SAASznC,GAAKm8B,EAAKrT,EAAWzhB,GAC3C,IACIrF,GADY,GAAYm6B,GAAOqL,GAAY6a,IAC3BlmB,EAAKrT,EAAWzhB,GACpC,QAAY,IAARrF,IAA2B,IAATA,EAAY,OAAOm6B,EAAIn6B,EAC/C,CCJe,SAAS6gC,GAAU1G,EAAK93B,GACrC,OAAOrE,GAAKm8B,EAAKyJ,GAAQvhC,GAC3B,CCCe,SAAS/F,GAAK69B,EAAKX,EAAUn0B,GAE1C,IAAIgJ,EAAGpQ,EACP,GAFAu7B,EAAW4iB,GAAW5iB,EAAUn0B,GAE5B,GAAY80B,GACd,IAAK9rB,EAAI,EAAGpQ,EAASk8B,EAAIl8B,OAAQoQ,EAAIpQ,EAAQoQ,IAC3CmrB,EAASW,EAAI9rB,GAAIA,EAAG8rB,OAEjB,CACL,IAAIigB,EAAQjyB,GAAKgS,GACjB,IAAK9rB,EAAI,EAAGpQ,EAASm8C,EAAMn8C,OAAQoQ,EAAIpQ,EAAQoQ,IAC7CmrB,EAASW,EAAIigB,EAAM/rC,IAAK+rC,EAAM/rC,GAAI8rB,EAEtC,CACA,OAAOA,CACT,CCjBe,SAASnxB,GAAImxB,EAAKX,EAAUn0B,GACzCm0B,EAAW8J,GAAG9J,EAAUn0B,GAIxB,IAHA,IAAI+0C,GAAS,GAAYjgB,IAAQhS,GAAKgS,GAClCl8B,GAAUm8C,GAASjgB,GAAKl8B,OACxB0F,EAAUwiB,MAAMloB,GACXmsB,EAAQ,EAAGA,EAAQnsB,EAAQmsB,IAAS,CAC3C,IAAIqyB,EAAarC,EAAQA,EAAMhwB,GAASA,EACxCzmB,EAAQymB,GAASoP,EAASW,EAAIsiB,GAAaA,EAAYtiB,EACzD,CACA,OAAOx2B,CACT,CCVe,SAASm9C,GAAaP,GAkBnC,OAAO,SAASpmB,EAAKX,EAAUwM,EAAM3gC,GACnC,IAAIs/B,EAAU79B,UAAU7I,QAAU,EAClC,OAjBY,SAASk8B,EAAKX,EAAUwM,EAAMrB,GAC1C,IAAIyV,GAAS,GAAYjgB,IAAQhS,GAAKgS,GAClCl8B,GAAUm8C,GAASjgB,GAAKl8B,OACxBmsB,EAAQm2B,EAAM,EAAI,EAAItiD,EAAS,EAKnC,IAJK0mC,IACHqB,EAAO7L,EAAIigB,EAAQA,EAAMhwB,GAASA,GAClCA,GAASm2B,GAEJn2B,GAAS,GAAKA,EAAQnsB,EAAQmsB,GAASm2B,EAAK,CACjD,IAAI9D,EAAarC,EAAQA,EAAMhwB,GAASA,EACxC4b,EAAOxM,EAASwM,EAAM7L,EAAIsiB,GAAaA,EAAYtiB,EACrD,CACA,OAAO6L,CACT,CAIS+a,CAAQ5mB,EAAKiiB,GAAW5iB,EAAUn0B,EAAS,GAAI2gC,EAAMrB,EAC9D,CACF,CCvBA,SAAemc,GAAa,GCD5B,GAAeA,IAAc,GCCd,SAASv2C,GAAO4vB,EAAKrT,EAAWzhB,GAC7C,IAAI1B,EAAU,GAKd,OAJAmjB,EAAYwc,GAAGxc,EAAWzhB,GAC1B/I,GAAK69B,GAAK,SAASh6B,EAAOiqB,EAAO42B,GAC3Bl6B,EAAU3mB,EAAOiqB,EAAO42B,IAAOr9C,EAAQkG,KAAK1J,EAClD,IACOwD,CACT,CCNe,SAAS2O,GAAO6nB,EAAKrT,EAAWzhB,GAC7C,OAAOkF,GAAO4vB,EAAK8lB,GAAO3c,GAAGxc,IAAazhB,EAC5C,CCFe,SAASkqB,GAAM4K,EAAKrT,EAAWzhB,GAC5CyhB,EAAYwc,GAAGxc,EAAWzhB,GAG1B,IAFA,IAAI+0C,GAAS,GAAYjgB,IAAQhS,GAAKgS,GAClCl8B,GAAUm8C,GAASjgB,GAAKl8B,OACnBmsB,EAAQ,EAAGA,EAAQnsB,EAAQmsB,IAAS,CAC3C,IAAIqyB,EAAarC,EAAQA,EAAMhwB,GAASA,EACxC,IAAKtD,EAAUqT,EAAIsiB,GAAaA,EAAYtiB,GAAM,OAAO,CAC3D,CACA,OAAO,CACT,CCTe,SAASkG,GAAKlG,EAAKrT,EAAWzhB,GAC3CyhB,EAAYwc,GAAGxc,EAAWzhB,GAG1B,IAFA,IAAI+0C,GAAS,GAAYjgB,IAAQhS,GAAKgS,GAClCl8B,GAAUm8C,GAASjgB,GAAKl8B,OACnBmsB,EAAQ,EAAGA,EAAQnsB,EAAQmsB,IAAS,CAC3C,IAAIqyB,EAAarC,EAAQA,EAAMhwB,GAASA,EACxC,GAAItD,EAAUqT,EAAIsiB,GAAaA,EAAYtiB,GAAM,OAAO,CAC1D,CACA,OAAO,CACT,CCTe,SAASmK,GAASnK,EAAK9Q,EAAM43B,EAAWC,GAGrD,OAFK,GAAY/mB,KAAMA,EAAMgH,GAAOhH,KACZ,iBAAb8mB,GAAyBC,KAAOD,EAAY,GAChDt/C,GAAQw4B,EAAK9Q,EAAM43B,IAAc,CAC1C,CCFA,SAAe3I,GAAc,SAASne,EAAK5xB,EAAM+yB,GAC/C,IAAI6lB,EAAa5I,EAQjB,OAPI,EAAWhwC,GACbgwC,EAAOhwC,GAEPA,EAAO,GAAOA,GACd44C,EAAc54C,EAAKO,MAAM,GAAI,GAC7BP,EAAOA,EAAKA,EAAKtK,OAAS,IAErB+K,GAAImxB,GAAK,SAAS90B,GACvB,IAAIxG,EAAS05C,EACb,IAAK15C,EAAQ,CAIX,GAHIsiD,GAAeA,EAAYljD,SAC7BoH,EAAU62C,GAAQ72C,EAAS87C,IAEd,MAAX97C,EAAiB,OACrBxG,EAASwG,EAAQkD,EACnB,CACA,OAAiB,MAAV1J,EAAiBA,EAASA,EAAOyY,MAAMjS,EAASi2B,EACzD,GACF,ICvBe,SAAS0F,GAAM7G,EAAKn6B,GACjC,OAAOgJ,GAAImxB,EAAKyQ,GAAS5qC,GAC3B,CCDe,SAAS2gC,GAAMxG,EAAK93B,GACjC,OAAOkI,GAAO4vB,EAAKyJ,GAAQvhC,GAC7B,CCDe,SAASqN,GAAIyqB,EAAKX,EAAUn0B,GACzC,IACIlF,EAAO6qB,EADPjqB,GAAS,IAAWqgD,GAAe,IAEvC,GAAgB,MAAZ5nB,GAAwC,iBAAZA,GAAyC,iBAAVW,EAAI,IAAyB,MAAPA,EAEnF,IAAK,IAAI9rB,EAAI,EAAGpQ,GADhBk8B,EAAM,GAAYA,GAAOA,EAAMgH,GAAOhH,IACTl8B,OAAQoQ,EAAIpQ,EAAQoQ,IAElC,OADblO,EAAQg6B,EAAI9rB,KACSlO,EAAQY,IAC3BA,EAASZ,QAIbq5B,EAAW8J,GAAG9J,EAAUn0B,GACxB/I,GAAK69B,GAAK,SAASknB,EAAGj3B,EAAO42B,KAC3Bh2B,EAAWwO,EAAS6nB,EAAGj3B,EAAO42B,IACfI,GAAiBp2B,KAAa,KAAajqB,KAAW,OACnEA,EAASsgD,EACTD,EAAep2B,EAEnB,IAEF,OAAOjqB,CACT,CCtBe,SAASmR,GAAIioB,EAAKX,EAAUn0B,GACzC,IACIlF,EAAO6qB,EADPjqB,EAASw7C,IAAU6E,EAAe7E,IAEtC,GAAgB,MAAZ/iB,GAAwC,iBAAZA,GAAyC,iBAAVW,EAAI,IAAyB,MAAPA,EAEnF,IAAK,IAAI9rB,EAAI,EAAGpQ,GADhBk8B,EAAM,GAAYA,GAAOA,EAAMgH,GAAOhH,IACTl8B,OAAQoQ,EAAIpQ,EAAQoQ,IAElC,OADblO,EAAQg6B,EAAI9rB,KACSlO,EAAQY,IAC3BA,EAASZ,QAIbq5B,EAAW8J,GAAG9J,EAAUn0B,GACxB/I,GAAK69B,GAAK,SAASknB,EAAGj3B,EAAO42B,KAC3Bh2B,EAAWwO,EAAS6nB,EAAGj3B,EAAO42B,IACfI,GAAiBp2B,IAAauxB,KAAYx7C,IAAWw7C,OAClEx7C,EAASsgD,EACTD,EAAep2B,EAEnB,IAEF,OAAOjqB,CACT,CCnBA,IAAIugD,GAAc,mEACH,SAAS9c,GAAQrK,GAC9B,OAAKA,EACDpT,EAAQoT,GAAarxB,EAAMlM,KAAKu9B,GAChC6F,EAAS7F,GAEJA,EAAI7d,MAAMglC,IAEf,GAAYnnB,GAAanxB,GAAImxB,EAAKgiB,IAC/Bhb,GAAOhH,GAPG,EAQnB,CCTe,SAASgL,GAAOhL,EAAKlnB,EAAGiuC,GACrC,GAAS,MAALjuC,GAAaiuC,EAEf,OADK,GAAY/mB,KAAMA,EAAMgH,GAAOhH,IAC7BA,EAAI2iB,GAAO3iB,EAAIl8B,OAAS,IAEjC,IAAIknC,EAASX,GAAQrK,GACjBl8B,EAAS,GAAUknC,GACvBlyB,EAAIzF,KAAKkC,IAAIlC,KAAK0E,IAAIe,EAAGhV,GAAS,GAElC,IADA,IAAI6mC,EAAO7mC,EAAS,EACXmsB,EAAQ,EAAGA,EAAQnX,EAAGmX,IAAS,CACtC,IAAIm3B,EAAOzE,GAAO1yB,EAAO0a,GACrB0c,EAAOrc,EAAO/a,GAClB+a,EAAO/a,GAAS+a,EAAOoc,GACvBpc,EAAOoc,GAAQC,CACjB,CACA,OAAOrc,EAAOr8B,MAAM,EAAGmK,EACzB,CCvBe,SAASgyB,GAAQ9K,GAC9B,OAAOgL,GAAOhL,EAAKoiB,IACrB,CCAe,SAASxb,GAAO5G,EAAKX,EAAUn0B,GAC5C,IAAI+kB,EAAQ,EAEZ,OADAoP,EAAW8J,GAAG9J,EAAUn0B,GACjB27B,GAAMh4B,GAAImxB,GAAK,SAASh6B,EAAOH,EAAKghD,GACzC,MAAO,CACL7gD,MAAOA,EACPiqB,MAAOA,IACPq3B,SAAUjoB,EAASr5B,EAAOH,EAAKghD,GAEnC,IAAG14B,MAAK,SAAStK,EAAMkI,GACrB,IAAIlH,EAAIhB,EAAKyjC,SACThlC,EAAIyJ,EAAMu7B,SACd,GAAIziC,IAAMvC,EAAG,CACX,GAAIuC,EAAIvC,QAAW,IAANuC,EAAc,OAAO,EAClC,GAAIA,EAAIvC,QAAW,IAANA,EAAc,OAAQ,CACrC,CACA,OAAOuB,EAAKoM,MAAQlE,EAAMkE,KAC5B,IAAI,QACN,CCnBe,SAASs3B,GAAMC,EAAUvc,GACtC,OAAO,SAASjL,EAAKX,EAAUn0B,GAC7B,IAAItE,EAASqkC,EAAY,CAAC,GAAI,IAAM,CAAC,EAMrC,OALA5L,EAAW8J,GAAG9J,EAAUn0B,GACxB/I,GAAK69B,GAAK,SAASh6B,EAAOiqB,GACxB,IAAIpqB,EAAMw5B,EAASr5B,EAAOiqB,EAAO+P,GACjCwnB,EAAS5gD,EAAQZ,EAAOH,EAC1B,IACOe,CACT,CACF,CCTA,SAAe2gD,IAAM,SAAS3gD,EAAQZ,EAAOH,GACvC48B,EAAI77B,EAAQf,GAAMe,EAAOf,GAAK6J,KAAK1J,GAAaY,EAAOf,GAAO,CAACG,EACrE,ICHA,GAAeuhD,IAAM,SAAS3gD,EAAQZ,EAAOH,GAC3Ce,EAAOf,GAAOG,CAChB,ICAA,GAAeuhD,IAAM,SAAS3gD,EAAQZ,EAAOH,GACvC48B,EAAI77B,EAAQf,GAAMe,EAAOf,KAAae,EAAOf,GAAO,CAC1D,ICJA,GAAe0hD,IAAM,SAAS3gD,EAAQZ,EAAOyhD,GAC3C7gD,EAAO6gD,EAAO,EAAI,GAAG/3C,KAAK1J,EAC5B,IAAG,GCFY,SAASmQ,GAAK6pB,GAC3B,OAAW,MAAPA,EAAoB,EACjB,GAAYA,GAAOA,EAAIl8B,OAASkqB,GAAKgS,GAAKl8B,MACnD,CCLe,SAAS4jD,GAAS1hD,EAAOH,EAAKm6B,GAC3C,OAAOn6B,KAAOm6B,CAChB,CCIA,SAAeme,GAAc,SAASne,EAAKhS,GACzC,IAAIpnB,EAAS,CAAC,EAAGy4B,EAAWrR,EAAK,GACjC,GAAW,MAAPgS,EAAa,OAAOp5B,EACpB,EAAWy4B,IACTrR,EAAKlqB,OAAS,IAAGu7B,EAAW4iB,GAAW5iB,EAAUrR,EAAK,KAC1DA,EAAO+yB,GAAQ/gB,KAEfX,EAAWqoB,GACX15B,EAAO02B,GAAQ12B,GAAM,GAAO,GAC5BgS,EAAMr3B,OAAOq3B,IAEf,IAAK,IAAI9rB,EAAI,EAAGpQ,EAASkqB,EAAKlqB,OAAQoQ,EAAIpQ,EAAQoQ,IAAK,CACrD,IAAIrO,EAAMmoB,EAAK9Z,GACXlO,EAAQg6B,EAAIn6B,GACZw5B,EAASr5B,EAAOH,EAAKm6B,KAAMp5B,EAAOf,GAAOG,EAC/C,CACA,OAAOY,CACT,IChBA,GAAeu3C,GAAc,SAASne,EAAKhS,GACzC,IAAwB9iB,EAApBm0B,EAAWrR,EAAK,GAUpB,OATI,EAAWqR,IACbA,EAAWymB,GAAOzmB,GACdrR,EAAKlqB,OAAS,IAAGoH,EAAU8iB,EAAK,MAEpCA,EAAOnf,GAAI61C,GAAQ12B,GAAM,GAAO,GAAQmD,QACxCkO,EAAW,SAASr5B,EAAOH,GACzB,OAAQskC,GAASnc,EAAMnoB,EACzB,GAEK+L,GAAKouB,EAAKX,EAAUn0B,EAC7B,IChBe,SAASs/B,GAAQzF,EAAOjsB,EAAGiuC,GACxC,OAAOp4C,EAAMlM,KAAKsiC,EAAO,EAAG1xB,KAAKkC,IAAI,EAAGwvB,EAAMjhC,QAAe,MAALgV,GAAaiuC,EAAQ,EAAIjuC,IACnF,CCHe,SAAS2tB,GAAM1B,EAAOjsB,EAAGiuC,GACtC,OAAa,MAAThiB,GAAiBA,EAAMjhC,OAAS,EAAe,MAALgV,GAAaiuC,OAAQ,EAAS,GACnE,MAALjuC,GAAaiuC,EAAchiB,EAAM,GAC9ByF,GAAQzF,EAAOA,EAAMjhC,OAASgV,EACvC,CCHe,SAAS2xB,GAAK1F,EAAOjsB,EAAGiuC,GACrC,OAAOp4C,EAAMlM,KAAKsiC,EAAY,MAALjsB,GAAaiuC,EAAQ,EAAIjuC,EACpD,CCHe,SAAS6xB,GAAK5F,EAAOjsB,EAAGiuC,GACrC,OAAa,MAAThiB,GAAiBA,EAAMjhC,OAAS,EAAe,MAALgV,GAAaiuC,OAAQ,EAAS,GACnE,MAALjuC,GAAaiuC,EAAchiB,EAAMA,EAAMjhC,OAAS,GAC7C2mC,GAAK1F,EAAO1xB,KAAKkC,IAAI,EAAGwvB,EAAMjhC,OAASgV,GAChD,CCLe,SAAS6uC,GAAQ5iB,GAC9B,OAAO30B,GAAO20B,EAAOlV,QACvB,CCDe,SAAS,GAAQkV,EAAO17B,GACrC,OAAO,GAAS07B,EAAO17B,GAAO,EAChC,CCCA,SAAe80C,GAAc,SAASpZ,EAAO0F,GAE3C,OADAA,EAAOia,GAAQja,GAAM,GAAM,GACpBr6B,GAAO20B,GAAO,SAAS/+B,GAC5B,OAAQmkC,GAASM,EAAMzkC,EACzB,GACF,ICRA,GAAem4C,GAAc,SAASpZ,EAAO6iB,GAC3C,OAAO/c,GAAW9F,EAAO6iB,EAC3B,ICIe,SAASC,GAAK9iB,EAAO+iB,EAAUzoB,EAAUn0B,GACjDqzC,EAAUuJ,KACb58C,EAAUm0B,EACVA,EAAWyoB,EACXA,GAAW,GAEG,MAAZzoB,IAAkBA,EAAW8J,GAAG9J,EAAUn0B,IAG9C,IAFA,IAAItE,EAAS,GACTmhD,EAAO,GACF7zC,EAAI,EAAGpQ,EAAS,GAAUihC,GAAQ7wB,EAAIpQ,EAAQoQ,IAAK,CAC1D,IAAIlO,EAAQ++B,EAAM7wB,GACd2c,EAAWwO,EAAWA,EAASr5B,EAAOkO,EAAG6wB,GAAS/+B,EAClD8hD,IAAazoB,GACVnrB,GAAK6zC,IAASl3B,GAAUjqB,EAAO8I,KAAK1J,GACzC+hD,EAAOl3B,GACEwO,EACJ8K,GAAS4d,EAAMl3B,KAClBk3B,EAAKr4C,KAAKmhB,GACVjqB,EAAO8I,KAAK1J,IAEJmkC,GAASvjC,EAAQZ,IAC3BY,EAAO8I,KAAK1J,EAEhB,CACA,OAAOY,CACT,CC7BA,SAAeu3C,GAAc,SAAS6J,GACpC,OAAOH,GAAKnD,GAAQsD,GAAQ,GAAM,GACpC,ICHe,SAASC,GAAaljB,GAGnC,IAFA,IAAIn+B,EAAS,GACTshD,EAAav7C,UAAU7I,OAClBoQ,EAAI,EAAGpQ,EAAS,GAAUihC,GAAQ7wB,EAAIpQ,EAAQoQ,IAAK,CAC1D,IAAIgb,EAAO6V,EAAM7wB,GACjB,IAAIi2B,GAASvjC,EAAQsoB,GAArB,CACA,IAAIjb,EACJ,IAAKA,EAAI,EAAGA,EAAIi0C,GACT/d,GAASx9B,UAAUsH,GAAIib,GADFjb,KAGxBA,IAAMi0C,GAAYthD,EAAO8I,KAAKwf,EALE,CAMtC,CACA,OAAOtoB,CACT,CCZe,SAASuhD,GAAMpjB,GAI5B,IAHA,IAAIjhC,EAAUihC,GAASxvB,GAAIwvB,EAAO,IAAWjhC,QAAW,EACpD8C,EAASolB,MAAMloB,GAEVmsB,EAAQ,EAAGA,EAAQnsB,EAAQmsB,IAClCrpB,EAAOqpB,GAAS4W,GAAM9B,EAAO9U,GAE/B,OAAOrpB,CACT,CCTA,SAAeu3C,EAAcgK,ICAd,SAASz7B,GAAOm6B,EAAM7f,GAEnC,IADA,IAAIpgC,EAAS,CAAC,EACLsN,EAAI,EAAGpQ,EAAS,GAAU+iD,GAAO3yC,EAAIpQ,EAAQoQ,IAChD8yB,EACFpgC,EAAOigD,EAAK3yC,IAAM8yB,EAAO9yB,GAEzBtN,EAAOigD,EAAK3yC,GAAG,IAAM2yC,EAAK3yC,GAAG,GAGjC,OAAOtN,CACT,CCZe,SAASwhD,GAAMla,EAAOjwB,EAAMoqC,GAC7B,MAARpqC,IACFA,EAAOiwB,GAAS,EAChBA,EAAQ,GAELma,IACHA,EAAOpqC,EAAOiwB,GAAS,EAAI,GAM7B,IAHA,IAAIpqC,EAASuP,KAAKkC,IAAIlC,KAAKU,MAAMkK,EAAOiwB,GAASma,GAAO,GACpDD,EAAQp8B,MAAMloB,GAET8gD,EAAM,EAAGA,EAAM9gD,EAAQ8gD,IAAO1W,GAASma,EAC9CD,EAAMxD,GAAO1W,EAGf,OAAOka,CACT,CChBe,SAASE,GAAMvjB,EAAOlsB,GACnC,GAAa,MAATA,GAAiBA,EAAQ,EAAG,MAAO,GAGvC,IAFA,IAAIjS,EAAS,GACTsN,EAAI,EAAGpQ,EAASihC,EAAMjhC,OACnBoQ,EAAIpQ,GACT8C,EAAO8I,KAAKf,EAAMlM,KAAKsiC,EAAO7wB,EAAGA,GAAK2E,IAExC,OAAOjS,CACT,CCTe,SAAS2hD,GAAYjf,EAAUtJ,GAC5C,OAAOsJ,EAAS0a,OAAS/hD,GAAE+9B,GAAK+K,QAAU/K,CAC5C,CCEe,SAAS1B,GAAM0B,GAS5B,OARA79B,GAAKypC,GAAU5L,IAAM,SAASzyB,GAC5B,IAAI6wC,EAAOn8C,GAAEsL,GAAQyyB,EAAIzyB,GACzBtL,GAAE8I,UAAUwC,GAAQ,WAClB,IAAI4zB,EAAO,CAACr/B,KAAKo+C,UAEjB,OADAxwC,EAAKyN,MAAMgkB,EAAMx0B,WACV47C,GAAYzmD,KAAMs8C,EAAKjhC,MAAMlb,GAAGk/B,GACzC,CACF,IACOl/B,EACT,CCXAE,GAAK,CAAC,MAAO,OAAQ,UAAW,QAAS,OAAQ,SAAU,YAAY,SAASoL,GAC9E,IAAI7I,EAASw4C,EAAW3vC,GACxBtL,GAAE8I,UAAUwC,GAAQ,WAClB,IAAIyyB,EAAMl+B,KAAKo+C,SAOf,OANW,MAAPlgB,IACFt7B,EAAOyY,MAAM6iB,EAAKrzB,WACJ,UAATY,GAA6B,WAATA,GAAqC,IAAfyyB,EAAIl8B,eAC1Ck8B,EAAI,IAGRuoB,GAAYzmD,KAAMk+B,EAC3B,CACF,IAGA79B,GAAK,CAAC,SAAU,OAAQ,UAAU,SAASoL,GACzC,IAAI7I,EAASw4C,EAAW3vC,GACxBtL,GAAE8I,UAAUwC,GAAQ,WAClB,IAAIyyB,EAAMl+B,KAAKo+C,SAEf,OADW,MAAPlgB,IAAaA,EAAMt7B,EAAOyY,MAAM6iB,EAAKrzB,YAClC47C,GAAYzmD,KAAMk+B,EAC3B,CACF,IAEA,YCRA,IAAI,GAAI1B,GAAM,GAEd,GAAEr8B,EAAI,GAEN,cCzBIumD,EAA2B,CAAC,EAGhC,SAAS/U,EAAoBgV,GAE5B,IAAIC,EAAeF,EAAyBC,GAC5C,QAAqBvmD,IAAjBwmD,EACH,OAAOA,EAAa/pB,QAGrB,IAAIuR,EAASsY,EAAyBC,GAAY,CACjDphD,GAAIohD,EACJE,QAAQ,EACRhqB,QAAS,CAAC,GAUX,OANAiqB,EAAoBH,GAAUhmD,KAAKytC,EAAOvR,QAASuR,EAAQA,EAAOvR,QAAS8U,GAG3EvD,EAAOyY,QAAS,EAGTzY,EAAOvR,OACf,CAGA8U,EAAoB9xB,EAAIinC,E5P5BpBrnD,EAAW,GACfkyC,EAAoBE,EAAI,CAAC/sC,EAAQiiD,EAAUv6C,EAAIw6C,KAC9C,IAAGD,EAAH,CAMA,IAAIE,EAAe3G,IACnB,IAASluC,EAAI,EAAGA,EAAI3S,EAASuC,OAAQoQ,IAAK,CACrC20C,EAAWtnD,EAAS2S,GAAG,GACvB5F,EAAK/M,EAAS2S,GAAG,GACjB40C,EAAWvnD,EAAS2S,GAAG,GAE3B,IAJA,IAGI80C,GAAY,EACP/0C,EAAI,EAAGA,EAAI40C,EAAS/kD,OAAQmQ,MACpB,EAAX60C,GAAsBC,GAAgBD,IAAangD,OAAOqlB,KAAKylB,EAAoBE,GAAGve,OAAOvvB,GAAS4tC,EAAoBE,EAAE9tC,GAAKgjD,EAAS50C,MAC9I40C,EAAS/jB,OAAO7wB,IAAK,IAErB+0C,GAAY,EACTF,EAAWC,IAAcA,EAAeD,IAG7C,GAAGE,EAAW,CACbznD,EAASujC,OAAO5wB,IAAK,GACrB,IAAI4/B,EAAIxlC,SACEpM,IAAN4xC,IAAiBltC,EAASktC,EAC/B,CACD,CACA,OAAOltC,CArBP,CAJCkiD,EAAWA,GAAY,EACvB,IAAI,IAAI50C,EAAI3S,EAASuC,OAAQoQ,EAAI,GAAK3S,EAAS2S,EAAI,GAAG,GAAK40C,EAAU50C,IAAK3S,EAAS2S,GAAK3S,EAAS2S,EAAI,GACrG3S,EAAS2S,GAAK,CAAC20C,EAAUv6C,EAAIw6C,EAuBjB,E6P3BdrV,EAAoB36B,EAAKo3B,IACxB,IAAI+Y,EAAS/Y,GAAUA,EAAOgZ,WAC7B,IAAOhZ,EAAiB,QACxB,IAAM,EAEP,OADAuD,EAAoBO,EAAEiV,EAAQ,CAAEpkC,EAAGokC,IAC5BA,CAAM,ECLdxV,EAAoBO,EAAI,CAACrV,EAASwqB,KACjC,IAAI,IAAItjD,KAAOsjD,EACX1V,EAAoBC,EAAEyV,EAAYtjD,KAAS4tC,EAAoBC,EAAE/U,EAAS94B,IAC5E8C,OAAOqkB,eAAe2R,EAAS94B,EAAK,CAAEknB,YAAY,EAAMxC,IAAK4+B,EAAWtjD,IAE1E,ECND4tC,EAAoByE,EAAI,CAAC,EAGzBzE,EAAoBr8B,EAAKgyC,GACjB37C,QAAQ8zB,IAAI54B,OAAOqlB,KAAKylB,EAAoByE,GAAGtoB,QAAO,CAACy5B,EAAUxjD,KACvE4tC,EAAoByE,EAAEryC,GAAKujD,EAASC,GAC7BA,IACL,KCNJ5V,EAAoB4D,EAAK+R,GAEZA,EAAU,IAAMA,EAAU,SAAW,CAAC,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,wBAAwBA,GCH9I3V,EAAoB9wB,EAAI,WACvB,GAA0B,iBAAf2mC,WAAyB,OAAOA,WAC3C,IACC,OAAOxnD,MAAQ,IAAIm7C,SAAS,cAAb,EAChB,CAAE,MAAO7lC,GACR,GAAsB,iBAAX5R,OAAqB,OAAOA,MACxC,CACA,CAPuB,GCAxBiuC,EAAoBC,EAAI,CAAC1T,EAAKtnB,IAAU/P,OAAOoC,UAAUylC,eAAe/tC,KAAKu9B,EAAKtnB,GjQA9ElX,EAAa,CAAC,EACdC,EAAoB,aAExBgyC,EAAoB/R,EAAI,CAACz8B,EAAKyX,EAAM7W,EAAKujD,KACxC,GAAG5nD,EAAWyD,GAAQzD,EAAWyD,GAAKyK,KAAKgN,OAA3C,CACA,IAAI6sC,EAAQC,EACZ,QAAWtnD,IAAR2D,EAEF,IADA,IAAI4jD,EAAUp+C,SAASC,qBAAqB,UACpC4I,EAAI,EAAGA,EAAIu1C,EAAQ3lD,OAAQoQ,IAAK,CACvC,IAAI6N,EAAI0nC,EAAQv1C,GAChB,GAAG6N,EAAExW,aAAa,QAAUtG,GAAO8c,EAAExW,aAAa,iBAAmB9J,EAAoBoE,EAAK,CAAE0jD,EAASxnC,EAAG,KAAO,CACpH,CAEGwnC,IACHC,GAAa,GACbD,EAASl+C,SAASyM,cAAc,WAEzB4xC,QAAU,QACjBH,EAAOzmD,QAAU,IACb2wC,EAAoBoB,IACvB0U,EAAO9oC,aAAa,QAASgzB,EAAoBoB,IAElD0U,EAAO9oC,aAAa,eAAgBhf,EAAoBoE,GAExD0jD,EAAO1xC,IAAM5S,GAEdzD,EAAWyD,GAAO,CAACyX,GACnB,IAAIitC,EAAmB,CAACxmB,EAAMza,KAE7B6gC,EAAOK,QAAUL,EAAOpyC,OAAS,KACjCouC,aAAaziD,GACb,IAAI+mD,EAAUroD,EAAWyD,GAIzB,UAHOzD,EAAWyD,GAClBskD,EAAOO,YAAcP,EAAOO,WAAWzlC,YAAYklC,GACnDM,GAAWA,EAAQ76C,SAASV,GAAQA,EAAGoa,KACpCya,EAAM,OAAOA,EAAKza,EAAM,EAExB5lB,EAAU0iB,WAAWmkC,EAAiBrkD,KAAK,UAAMpD,EAAW,CAAE6C,KAAM,UAAW0K,OAAQ85C,IAAW,MACtGA,EAAOK,QAAUD,EAAiBrkD,KAAK,KAAMikD,EAAOK,SACpDL,EAAOpyC,OAASwyC,EAAiBrkD,KAAK,KAAMikD,EAAOpyC,QACnDqyC,GAAcn+C,SAASi/B,KAAKtmB,YAAYulC,EApCkB,CAoCX,EkQvChD9V,EAAoBK,EAAKnV,IACH,oBAAXnR,QAA0BA,OAAOu8B,aAC1CphD,OAAOqkB,eAAe2R,EAASnR,OAAOu8B,YAAa,CAAE/jD,MAAO,WAE7D2C,OAAOqkB,eAAe2R,EAAS,aAAc,CAAE34B,OAAO,GAAO,ECL9DytC,EAAoBuW,IAAO9Z,IAC1BA,EAAO+Z,MAAQ,GACV/Z,EAAOl3B,WAAUk3B,EAAOl3B,SAAW,IACjCk3B,GCHRuD,EAAoBx/B,EAAI,WCAxB,IAAIi2C,EACAzW,EAAoB9wB,EAAEwnC,gBAAeD,EAAYzW,EAAoB9wB,EAAEhD,SAAW,IACtF,IAAItU,EAAWooC,EAAoB9wB,EAAEtX,SACrC,IAAK6+C,GAAa7+C,IACbA,EAAS++C,gBACZF,EAAY7+C,EAAS++C,cAAcvyC,MAC/BqyC,GAAW,CACf,IAAIT,EAAUp+C,EAASC,qBAAqB,UAC5C,GAAGm+C,EAAQ3lD,OAEV,IADA,IAAIoQ,EAAIu1C,EAAQ3lD,OAAS,EAClBoQ,GAAK,KAAOg2C,IAAc,aAAa/6B,KAAK+6B,KAAaA,EAAYT,EAAQv1C,KAAK2D,GAE3F,CAID,IAAKqyC,EAAW,MAAM,IAAIx/C,MAAM,yDAChCw/C,EAAYA,EAAUnzC,QAAQ,OAAQ,IAAIA,QAAQ,QAAS,IAAIA,QAAQ,YAAa,KACpF08B,EAAoB3wB,EAAIonC,YClBxBzW,EAAoBnxB,EAAIjX,SAASg/C,SAAWx3C,KAAK8M,SAAS3Y,KAK1D,IAAIsjD,EAAkB,CACrB,KAAM,GAGP7W,EAAoByE,EAAEjkC,EAAI,CAACm1C,EAASC,KAElC,IAAIkB,EAAqB9W,EAAoBC,EAAE4W,EAAiBlB,GAAWkB,EAAgBlB,QAAWlnD,EACtG,GAA0B,IAAvBqoD,EAGF,GAAGA,EACFlB,EAAS35C,KAAK66C,EAAmB,QAC3B,CAGL,IAAI5vC,EAAU,IAAIlN,SAAQ,CAACC,EAASyK,IAAYoyC,EAAqBD,EAAgBlB,GAAW,CAAC17C,EAASyK,KAC1GkxC,EAAS35C,KAAK66C,EAAmB,GAAK5vC,GAGtC,IAAI1V,EAAMwuC,EAAoB3wB,EAAI2wB,EAAoB4D,EAAE+R,GAEpD5mD,EAAQ,IAAIkI,MAgBhB+oC,EAAoB/R,EAAEz8B,GAfFyjB,IACnB,GAAG+qB,EAAoBC,EAAE4W,EAAiBlB,KAEf,KAD1BmB,EAAqBD,EAAgBlB,MACRkB,EAAgBlB,QAAWlnD,GACrDqoD,GAAoB,CACtB,IAAIC,EAAY9hC,IAAyB,SAAfA,EAAM3jB,KAAkB,UAAY2jB,EAAM3jB,MAChE0lD,EAAU/hC,GAASA,EAAMjZ,QAAUiZ,EAAMjZ,OAAOoI,IACpDrV,EAAM6J,QAAU,iBAAmB+8C,EAAU,cAAgBoB,EAAY,KAAOC,EAAU,IAC1FjoD,EAAM+K,KAAO,iBACb/K,EAAMuC,KAAOylD,EACbhoD,EAAMoH,QAAU6gD,EAChBF,EAAmB,GAAG/nD,EACvB,CACD,GAEwC,SAAW4mD,EAASA,EAE/D,CACD,EAWF3V,EAAoBE,EAAE1/B,EAAKm1C,GAA0C,IAA7BkB,EAAgBlB,GAGxD,IAAIsB,EAAuB,CAACC,EAA4BxlD,KACvD,IAKIsjD,EAAUW,EALVP,EAAW1jD,EAAK,GAChBylD,EAAczlD,EAAK,GACnB0lD,EAAU1lD,EAAK,GAGI+O,EAAI,EAC3B,GAAG20C,EAAS3iB,MAAM7+B,GAAgC,IAAxBijD,EAAgBjjD,KAAa,CACtD,IAAIohD,KAAYmC,EACZnX,EAAoBC,EAAEkX,EAAanC,KACrChV,EAAoB9xB,EAAE8mC,GAAYmC,EAAYnC,IAGhD,GAAGoC,EAAS,IAAIjkD,EAASikD,EAAQpX,EAClC,CAEA,IADGkX,GAA4BA,EAA2BxlD,GACrD+O,EAAI20C,EAAS/kD,OAAQoQ,IACzBk1C,EAAUP,EAAS30C,GAChBu/B,EAAoBC,EAAE4W,EAAiBlB,IAAYkB,EAAgBlB,IACrEkB,EAAgBlB,GAAS,KAE1BkB,EAAgBlB,GAAW,EAE5B,OAAO3V,EAAoBE,EAAE/sC,EAAO,EAGjCkkD,EAAqBj4C,KAA4B,sBAAIA,KAA4B,uBAAK,GAC1Fi4C,EAAmB97C,QAAQ07C,EAAqBplD,KAAK,KAAM,IAC3DwlD,EAAmBp7C,KAAOg7C,EAAqBplD,KAAK,KAAMwlD,EAAmBp7C,KAAKpK,KAAKwlD,QCvFvFrX,EAAoBoB,QAAK3yC,ECGzB,IAAI6oD,EAAsBtX,EAAoBE,OAAEzxC,EAAW,CAAC,OAAO,IAAOuxC,EAAoB,SAC9FsX,EAAsBtX,EAAoBE,EAAEoX","sources":["webpack:///nextcloud/webpack/runtime/chunk loaded","webpack:///nextcloud/webpack/runtime/load script","webpack:///nextcloud/core/src/OC/notification.js","webpack:///nextcloud/core/src/OC/xhr-error.js","webpack:///nextcloud/core/src/OC/apps.js","webpack:///nextcloud/core/src/OCP/appconfig.js","webpack:///nextcloud/core/src/OC/appconfig.js","webpack:///nextcloud/core/src/OC/appswebroots.js","webpack:///nextcloud/core/src/OC/backbone-webdav.js","webpack:///nextcloud/core/src/OC/backbone.js","webpack:///nextcloud/core/src/OC/query-string.js","webpack:///nextcloud/core/src/OC/config.js","webpack:///nextcloud/core/src/OC/currentuser.js","webpack:///nextcloud/core/src/OC/dialogs.js","webpack:///nextcloud/core/src/OC/requesttoken.js","webpack:///nextcloud/core/src/OC/eventsource.js","webpack:///nextcloud/core/src/OC/menu.js","webpack:///nextcloud/core/src/OC/constants.js","webpack:///nextcloud/core/src/OC/admin.js","webpack:///nextcloud/core/src/OC/l10n.js","webpack:///nextcloud/core/src/OC/routing.js","webpack:///nextcloud/core/src/OC/msg.js","webpack:///nextcloud/core/src/OC/password-confirmation.js","webpack:///nextcloud/core/src/OC/plugins.js","webpack:///nextcloud/core/src/OC/theme.js","webpack:///nextcloud/core/src/OC/util-history.js","webpack:///nextcloud/core/src/OC/util.js","webpack:///nextcloud/core/src/OC/debug.js","webpack:///nextcloud/core/src/OC/webroot.js","webpack:///nextcloud/core/src/OC/index.js","webpack:///nextcloud/core/src/OC/capabilities.js","webpack:///nextcloud/core/src/OC/host.js","webpack:///nextcloud/core/src/OC/get_set.js","webpack:///nextcloud/core/src/OC/navigation.js","webpack://nextcloud/./core/src/views/Login.vue?ae59","webpack:///nextcloud/node_modules/decode-uri-component/index.js","webpack:///nextcloud/node_modules/split-on-first/index.js","webpack:///nextcloud/node_modules/query-string/node_modules/filter-obj/index.js","webpack:///nextcloud/node_modules/query-string/base.js","webpack:///nextcloud/node_modules/query-string/index.js","webpack://nextcloud/./core/src/components/login/LoginForm.vue?4366","webpack:///nextcloud/core/src/mixins/auth.js","webpack://nextcloud/./core/src/components/login/LoginButton.vue?82aa","webpack:///nextcloud/core/src/components/login/LoginButton.vue","webpack:///nextcloud/core/src/components/login/LoginButton.vue?vue&type=script&lang=js","webpack://nextcloud/./core/src/components/login/LoginButton.vue?9f29","webpack://nextcloud/./core/src/components/login/LoginButton.vue?14f0","webpack:///nextcloud/core/src/components/login/LoginForm.vue?vue&type=script&lang=js","webpack:///nextcloud/core/src/components/login/LoginForm.vue","webpack://nextcloud/./core/src/components/login/LoginForm.vue?42f3","webpack://nextcloud/./core/src/components/login/LoginForm.vue?a678","webpack:///nextcloud/node_modules/@simplewebauthn/browser/dist/bundle/index.js","webpack:///nextcloud/core/src/logger.js","webpack:///nextcloud/core/src/services/WebAuthnAuthenticationService.ts","webpack:///nextcloud/node_modules/vue-material-design-icons/Information.vue","webpack:///nextcloud/node_modules/vue-material-design-icons/Information.vue?vue&type=script&lang=js","webpack://nextcloud/./node_modules/vue-material-design-icons/Information.vue?8a14","webpack:///nextcloud/node_modules/vue-material-design-icons/Information.vue?vue&type=template&id=70e6f3ef","webpack:///nextcloud/node_modules/vue-material-design-icons/LockOpen.vue?vue&type=script&lang=js","webpack:///nextcloud/node_modules/vue-material-design-icons/LockOpen.vue","webpack://nextcloud/./node_modules/vue-material-design-icons/LockOpen.vue?104d","webpack:///nextcloud/node_modules/vue-material-design-icons/LockOpen.vue?vue&type=template&id=1b7ea4e7","webpack:///nextcloud/core/src/components/login/PasswordLessLoginForm.vue","webpack:///nextcloud/core/src/components/login/PasswordLessLoginForm.vue?vue&type=script&lang=js","webpack://nextcloud/./core/src/components/login/PasswordLessLoginForm.vue?5774","webpack://nextcloud/./core/src/components/login/PasswordLessLoginForm.vue?09eb","webpack://nextcloud/./core/src/components/login/PasswordLessLoginForm.vue?16ec","webpack://nextcloud/./core/src/components/login/ResetPassword.vue?7cf3","webpack:///nextcloud/core/src/components/login/ResetPassword.vue","webpack:///nextcloud/core/src/components/login/ResetPassword.vue?vue&type=script&lang=js","webpack://nextcloud/./core/src/components/login/ResetPassword.vue?e272","webpack://nextcloud/./core/src/components/login/ResetPassword.vue?9d75","webpack:///nextcloud/core/src/components/login/UpdatePassword.vue?vue&type=script&lang=js","webpack:///nextcloud/core/src/components/login/UpdatePassword.vue","webpack://nextcloud/./core/src/components/login/UpdatePassword.vue?6d61","webpack://nextcloud/./core/src/components/login/UpdatePassword.vue?30ca","webpack://nextcloud/./core/src/components/login/UpdatePassword.vue?1c8f","webpack:///nextcloud/core/src/views/Login.vue","webpack:///nextcloud/core/src/views/Login.vue?vue&type=script&lang=js","webpack://nextcloud/./core/src/views/Login.vue?f290","webpack://nextcloud/./core/src/views/Login.vue?3468","webpack:///nextcloud/core/src/mixins/Nextcloud.js","webpack:///nextcloud/core/src/login.js","webpack:///nextcloud/node_modules/backbone/backbone.js","webpack:///nextcloud/core/src/components/login/LoginButton.vue?vue&type=style&index=0&id=d2cd6448&prod&lang=scss&scoped=true","webpack:///nextcloud/core/src/components/login/LoginForm.vue?vue&type=style&index=0&id=7d917450&prod&lang=scss&scoped=true","webpack:///nextcloud/core/src/components/login/PasswordLessLoginForm.vue?vue&type=style&index=0&id=4a6bfc86&prod&lang=scss&scoped=true","webpack:///nextcloud/core/src/components/login/ResetPassword.vue?vue&type=style&index=0&id=cd5425c6&prod&lang=scss&scoped=true","webpack:///nextcloud/core/src/views/Login.vue?vue&type=style&index=0&id=6adceba0&prod&lang=scss","webpack:///nextcloud/core/src/components/login/UpdatePassword.vue?vue&type=style&index=0&id=6bdd5975&prod&scoped=true&lang=css","webpack:///nextcloud/node_modules/davclient.js/lib/client.js","webpack:///nextcloud/node_modules/moment/locale|sync|/^\\.\\/.*$","webpack:///nextcloud/node_modules/@nextcloud/files/dist/index.mjs","webpack:///nextcloud/node_modules/underscore/modules/_setup.js","webpack:///nextcloud/node_modules/underscore/modules/restArguments.js","webpack:///nextcloud/node_modules/underscore/modules/isObject.js","webpack:///nextcloud/node_modules/underscore/modules/isNull.js","webpack:///nextcloud/node_modules/underscore/modules/isUndefined.js","webpack:///nextcloud/node_modules/underscore/modules/isBoolean.js","webpack:///nextcloud/node_modules/underscore/modules/isElement.js","webpack:///nextcloud/node_modules/underscore/modules/_tagTester.js","webpack:///nextcloud/node_modules/underscore/modules/isString.js","webpack:///nextcloud/node_modules/underscore/modules/isNumber.js","webpack:///nextcloud/node_modules/underscore/modules/isDate.js","webpack:///nextcloud/node_modules/underscore/modules/isRegExp.js","webpack:///nextcloud/node_modules/underscore/modules/isError.js","webpack:///nextcloud/node_modules/underscore/modules/isSymbol.js","webpack:///nextcloud/node_modules/underscore/modules/isArrayBuffer.js","webpack:///nextcloud/node_modules/underscore/modules/isFunction.js","webpack:///nextcloud/node_modules/underscore/modules/_hasObjectTag.js","webpack:///nextcloud/node_modules/underscore/modules/_stringTagBug.js","webpack:///nextcloud/node_modules/underscore/modules/isDataView.js","webpack:///nextcloud/node_modules/underscore/modules/isArray.js","webpack:///nextcloud/node_modules/underscore/modules/_has.js","webpack:///nextcloud/node_modules/underscore/modules/isArguments.js","webpack:///nextcloud/node_modules/underscore/modules/isFinite.js","webpack:///nextcloud/node_modules/underscore/modules/isNaN.js","webpack:///nextcloud/node_modules/underscore/modules/constant.js","webpack:///nextcloud/node_modules/underscore/modules/_createSizePropertyCheck.js","webpack:///nextcloud/node_modules/underscore/modules/_shallowProperty.js","webpack:///nextcloud/node_modules/underscore/modules/_getByteLength.js","webpack:///nextcloud/node_modules/underscore/modules/_isBufferLike.js","webpack:///nextcloud/node_modules/underscore/modules/isTypedArray.js","webpack:///nextcloud/node_modules/underscore/modules/_getLength.js","webpack:///nextcloud/node_modules/underscore/modules/_collectNonEnumProps.js","webpack:///nextcloud/node_modules/underscore/modules/keys.js","webpack:///nextcloud/node_modules/underscore/modules/isEmpty.js","webpack:///nextcloud/node_modules/underscore/modules/isMatch.js","webpack:///nextcloud/node_modules/underscore/modules/underscore.js","webpack:///nextcloud/node_modules/underscore/modules/_toBufferView.js","webpack:///nextcloud/node_modules/underscore/modules/isEqual.js","webpack:///nextcloud/node_modules/underscore/modules/allKeys.js","webpack:///nextcloud/node_modules/underscore/modules/_methodFingerprint.js","webpack:///nextcloud/node_modules/underscore/modules/isMap.js","webpack:///nextcloud/node_modules/underscore/modules/isWeakMap.js","webpack:///nextcloud/node_modules/underscore/modules/isSet.js","webpack:///nextcloud/node_modules/underscore/modules/isWeakSet.js","webpack:///nextcloud/node_modules/underscore/modules/values.js","webpack:///nextcloud/node_modules/underscore/modules/pairs.js","webpack:///nextcloud/node_modules/underscore/modules/invert.js","webpack:///nextcloud/node_modules/underscore/modules/functions.js","webpack:///nextcloud/node_modules/underscore/modules/_createAssigner.js","webpack:///nextcloud/node_modules/underscore/modules/extend.js","webpack:///nextcloud/node_modules/underscore/modules/extendOwn.js","webpack:///nextcloud/node_modules/underscore/modules/defaults.js","webpack:///nextcloud/node_modules/underscore/modules/_baseCreate.js","webpack:///nextcloud/node_modules/underscore/modules/create.js","webpack:///nextcloud/node_modules/underscore/modules/clone.js","webpack:///nextcloud/node_modules/underscore/modules/tap.js","webpack:///nextcloud/node_modules/underscore/modules/toPath.js","webpack:///nextcloud/node_modules/underscore/modules/_toPath.js","webpack:///nextcloud/node_modules/underscore/modules/_deepGet.js","webpack:///nextcloud/node_modules/underscore/modules/get.js","webpack:///nextcloud/node_modules/underscore/modules/has.js","webpack:///nextcloud/node_modules/underscore/modules/identity.js","webpack:///nextcloud/node_modules/underscore/modules/matcher.js","webpack:///nextcloud/node_modules/underscore/modules/property.js","webpack:///nextcloud/node_modules/underscore/modules/_optimizeCb.js","webpack:///nextcloud/node_modules/underscore/modules/_baseIteratee.js","webpack:///nextcloud/node_modules/underscore/modules/iteratee.js","webpack:///nextcloud/node_modules/underscore/modules/_cb.js","webpack:///nextcloud/node_modules/underscore/modules/mapObject.js","webpack:///nextcloud/node_modules/underscore/modules/noop.js","webpack:///nextcloud/node_modules/underscore/modules/propertyOf.js","webpack:///nextcloud/node_modules/underscore/modules/times.js","webpack:///nextcloud/node_modules/underscore/modules/random.js","webpack:///nextcloud/node_modules/underscore/modules/now.js","webpack:///nextcloud/node_modules/underscore/modules/_createEscaper.js","webpack:///nextcloud/node_modules/underscore/modules/_escapeMap.js","webpack:///nextcloud/node_modules/underscore/modules/escape.js","webpack:///nextcloud/node_modules/underscore/modules/unescape.js","webpack:///nextcloud/node_modules/underscore/modules/_unescapeMap.js","webpack:///nextcloud/node_modules/underscore/modules/templateSettings.js","webpack:///nextcloud/node_modules/underscore/modules/template.js","webpack:///nextcloud/node_modules/underscore/modules/result.js","webpack:///nextcloud/node_modules/underscore/modules/uniqueId.js","webpack:///nextcloud/node_modules/underscore/modules/chain.js","webpack:///nextcloud/node_modules/underscore/modules/_executeBound.js","webpack:///nextcloud/node_modules/underscore/modules/partial.js","webpack:///nextcloud/node_modules/underscore/modules/bind.js","webpack:///nextcloud/node_modules/underscore/modules/_isArrayLike.js","webpack:///nextcloud/node_modules/underscore/modules/_flatten.js","webpack:///nextcloud/node_modules/underscore/modules/bindAll.js","webpack:///nextcloud/node_modules/underscore/modules/memoize.js","webpack:///nextcloud/node_modules/underscore/modules/delay.js","webpack:///nextcloud/node_modules/underscore/modules/defer.js","webpack:///nextcloud/node_modules/underscore/modules/throttle.js","webpack:///nextcloud/node_modules/underscore/modules/debounce.js","webpack:///nextcloud/node_modules/underscore/modules/wrap.js","webpack:///nextcloud/node_modules/underscore/modules/negate.js","webpack:///nextcloud/node_modules/underscore/modules/compose.js","webpack:///nextcloud/node_modules/underscore/modules/after.js","webpack:///nextcloud/node_modules/underscore/modules/before.js","webpack:///nextcloud/node_modules/underscore/modules/once.js","webpack:///nextcloud/node_modules/underscore/modules/findKey.js","webpack:///nextcloud/node_modules/underscore/modules/_createPredicateIndexFinder.js","webpack:///nextcloud/node_modules/underscore/modules/findIndex.js","webpack:///nextcloud/node_modules/underscore/modules/findLastIndex.js","webpack:///nextcloud/node_modules/underscore/modules/sortedIndex.js","webpack:///nextcloud/node_modules/underscore/modules/_createIndexFinder.js","webpack:///nextcloud/node_modules/underscore/modules/indexOf.js","webpack:///nextcloud/node_modules/underscore/modules/lastIndexOf.js","webpack:///nextcloud/node_modules/underscore/modules/find.js","webpack:///nextcloud/node_modules/underscore/modules/findWhere.js","webpack:///nextcloud/node_modules/underscore/modules/each.js","webpack:///nextcloud/node_modules/underscore/modules/map.js","webpack:///nextcloud/node_modules/underscore/modules/_createReduce.js","webpack:///nextcloud/node_modules/underscore/modules/reduce.js","webpack:///nextcloud/node_modules/underscore/modules/reduceRight.js","webpack:///nextcloud/node_modules/underscore/modules/filter.js","webpack:///nextcloud/node_modules/underscore/modules/reject.js","webpack:///nextcloud/node_modules/underscore/modules/every.js","webpack:///nextcloud/node_modules/underscore/modules/some.js","webpack:///nextcloud/node_modules/underscore/modules/contains.js","webpack:///nextcloud/node_modules/underscore/modules/invoke.js","webpack:///nextcloud/node_modules/underscore/modules/pluck.js","webpack:///nextcloud/node_modules/underscore/modules/where.js","webpack:///nextcloud/node_modules/underscore/modules/max.js","webpack:///nextcloud/node_modules/underscore/modules/min.js","webpack:///nextcloud/node_modules/underscore/modules/toArray.js","webpack:///nextcloud/node_modules/underscore/modules/sample.js","webpack:///nextcloud/node_modules/underscore/modules/shuffle.js","webpack:///nextcloud/node_modules/underscore/modules/sortBy.js","webpack:///nextcloud/node_modules/underscore/modules/_group.js","webpack:///nextcloud/node_modules/underscore/modules/groupBy.js","webpack:///nextcloud/node_modules/underscore/modules/indexBy.js","webpack:///nextcloud/node_modules/underscore/modules/countBy.js","webpack:///nextcloud/node_modules/underscore/modules/partition.js","webpack:///nextcloud/node_modules/underscore/modules/size.js","webpack:///nextcloud/node_modules/underscore/modules/_keyInObj.js","webpack:///nextcloud/node_modules/underscore/modules/pick.js","webpack:///nextcloud/node_modules/underscore/modules/omit.js","webpack:///nextcloud/node_modules/underscore/modules/initial.js","webpack:///nextcloud/node_modules/underscore/modules/first.js","webpack:///nextcloud/node_modules/underscore/modules/rest.js","webpack:///nextcloud/node_modules/underscore/modules/last.js","webpack:///nextcloud/node_modules/underscore/modules/compact.js","webpack:///nextcloud/node_modules/underscore/modules/flatten.js","webpack:///nextcloud/node_modules/underscore/modules/difference.js","webpack:///nextcloud/node_modules/underscore/modules/without.js","webpack:///nextcloud/node_modules/underscore/modules/uniq.js","webpack:///nextcloud/node_modules/underscore/modules/union.js","webpack:///nextcloud/node_modules/underscore/modules/intersection.js","webpack:///nextcloud/node_modules/underscore/modules/unzip.js","webpack:///nextcloud/node_modules/underscore/modules/zip.js","webpack:///nextcloud/node_modules/underscore/modules/object.js","webpack:///nextcloud/node_modules/underscore/modules/range.js","webpack:///nextcloud/node_modules/underscore/modules/chunk.js","webpack:///nextcloud/node_modules/underscore/modules/_chainResult.js","webpack:///nextcloud/node_modules/underscore/modules/mixin.js","webpack:///nextcloud/node_modules/underscore/modules/underscore-array-methods.js","webpack:///nextcloud/node_modules/underscore/modules/index-default.js","webpack:///nextcloud/webpack/bootstrap","webpack:///nextcloud/webpack/runtime/compat get default export","webpack:///nextcloud/webpack/runtime/define property getters","webpack:///nextcloud/webpack/runtime/ensure chunk","webpack:///nextcloud/webpack/runtime/get javascript chunk filename","webpack:///nextcloud/webpack/runtime/global","webpack:///nextcloud/webpack/runtime/hasOwnProperty shorthand","webpack:///nextcloud/webpack/runtime/make namespace object","webpack:///nextcloud/webpack/runtime/node module decorator","webpack:///nextcloud/webpack/runtime/runtimeId","webpack:///nextcloud/webpack/runtime/publicPath","webpack:///nextcloud/webpack/runtime/jsonp chunk loading","webpack:///nextcloud/webpack/runtime/nonce","webpack:///nextcloud/webpack/startup"],"sourcesContent":["var deferred = [];\n__webpack_require__.O = (result, chunkIds, fn, priority) => {\n\tif(chunkIds) {\n\t\tpriority = priority || 0;\n\t\tfor(var i = deferred.length; i > 0 && deferred[i - 1][2] > priority; i--) deferred[i] = deferred[i - 1];\n\t\tdeferred[i] = [chunkIds, fn, priority];\n\t\treturn;\n\t}\n\tvar notFulfilled = Infinity;\n\tfor (var i = 0; i < deferred.length; i++) {\n\t\tvar chunkIds = deferred[i][0];\n\t\tvar fn = deferred[i][1];\n\t\tvar priority = deferred[i][2];\n\t\tvar fulfilled = true;\n\t\tfor (var j = 0; j < chunkIds.length; j++) {\n\t\t\tif ((priority & 1 === 0 || notFulfilled >= priority) && Object.keys(__webpack_require__.O).every((key) => (__webpack_require__.O[key](chunkIds[j])))) {\n\t\t\t\tchunkIds.splice(j--, 1);\n\t\t\t} else {\n\t\t\t\tfulfilled = false;\n\t\t\t\tif(priority < notFulfilled) notFulfilled = priority;\n\t\t\t}\n\t\t}\n\t\tif(fulfilled) {\n\t\t\tdeferred.splice(i--, 1)\n\t\t\tvar r = fn();\n\t\t\tif (r !== undefined) result = r;\n\t\t}\n\t}\n\treturn result;\n};","var inProgress = {};\nvar dataWebpackPrefix = \"nextcloud:\";\n// loadScript function to load a script via script tag\n__webpack_require__.l = (url, done, key, chunkId) => {\n\tif(inProgress[url]) { inProgress[url].push(done); return; }\n\tvar script, needAttach;\n\tif(key !== undefined) {\n\t\tvar scripts = document.getElementsByTagName(\"script\");\n\t\tfor(var i = 0; i < scripts.length; i++) {\n\t\t\tvar s = scripts[i];\n\t\t\tif(s.getAttribute(\"src\") == url || s.getAttribute(\"data-webpack\") == dataWebpackPrefix + key) { script = s; break; }\n\t\t}\n\t}\n\tif(!script) {\n\t\tneedAttach = true;\n\t\tscript = document.createElement('script');\n\n\t\tscript.charset = 'utf-8';\n\t\tscript.timeout = 120;\n\t\tif (__webpack_require__.nc) {\n\t\t\tscript.setAttribute(\"nonce\", __webpack_require__.nc);\n\t\t}\n\t\tscript.setAttribute(\"data-webpack\", dataWebpackPrefix + key);\n\n\t\tscript.src = url;\n\t}\n\tinProgress[url] = [done];\n\tvar onScriptComplete = (prev, event) => {\n\t\t// avoid mem leaks in IE.\n\t\tscript.onerror = script.onload = null;\n\t\tclearTimeout(timeout);\n\t\tvar doneFns = inProgress[url];\n\t\tdelete inProgress[url];\n\t\tscript.parentNode && script.parentNode.removeChild(script);\n\t\tdoneFns && doneFns.forEach((fn) => (fn(event)));\n\t\tif(prev) return prev(event);\n\t}\n\tvar timeout = setTimeout(onScriptComplete.bind(null, undefined, { type: 'timeout', target: script }), 120000);\n\tscript.onerror = onScriptComplete.bind(null, script.onerror);\n\tscript.onload = onScriptComplete.bind(null, script.onload);\n\tneedAttach && document.head.appendChild(script);\n};","/**\n * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport _ from 'underscore'\n/** @typedef {import('jquery')} jQuery */\nimport $ from 'jquery'\nimport { showMessage, TOAST_DEFAULT_TIMEOUT, TOAST_PERMANENT_TIMEOUT } from '@nextcloud/dialogs'\n\n/**\n * @todo Write documentation\n * @deprecated 17.0.0 use the `@nextcloud/dialogs` package instead\n * @namespace OC.Notification\n */\nexport default {\n\n\tupdatableNotification: null,\n\n\tgetDefaultNotificationFunction: null,\n\n\t/**\n\t * @param {Function} callback callback function\n\t * @deprecated 17.0.0 use the `@nextcloud/dialogs` package\n\t */\n\tsetDefault(callback) {\n\t\tthis.getDefaultNotificationFunction = callback\n\t},\n\n\t/**\n\t * Hides a notification.\n\t *\n\t * If a row is given, only hide that one.\n\t * If no row is given, hide all notifications.\n\t *\n\t * @param {jQuery} [$row] notification row\n\t * @param {Function} [callback] callback\n\t * @deprecated 17.0.0 use the `@nextcloud/dialogs` package\n\t */\n\thide($row, callback) {\n\t\tif (_.isFunction($row)) {\n\t\t\t// first arg is the callback\n\t\t\tcallback = $row\n\t\t\t$row = undefined\n\t\t}\n\n\t\tif (!$row) {\n\t\t\tconsole.error('Missing argument $row in OC.Notification.hide() call, caller needs to be adjusted to only dismiss its own notification')\n\t\t\treturn\n\t\t}\n\n\t\t// remove the row directly\n\t\t$row.each(function() {\n\t\t\tif ($(this)[0].toastify) {\n\t\t\t\t$(this)[0].toastify.hideToast()\n\t\t\t} else {\n\t\t\t\tconsole.error('cannot hide toast because object is not set')\n\t\t\t}\n\t\t\tif (this === this.updatableNotification) {\n\t\t\t\tthis.updatableNotification = null\n\t\t\t}\n\t\t})\n\t\tif (callback) {\n\t\t\tcallback.call()\n\t\t}\n\t\tif (this.getDefaultNotificationFunction) {\n\t\t\tthis.getDefaultNotificationFunction()\n\t\t}\n\t},\n\n\t/**\n\t * Shows a notification as HTML without being sanitized before.\n\t * If you pass unsanitized user input this may lead to a XSS vulnerability.\n\t * Consider using show() instead of showHTML()\n\t *\n\t * @param {string} html Message to display\n\t * @param {object} [options] options\n\t * @param {string} [options.type] notification type\n\t * @param {number} [options.timeout=0] timeout value, defaults to 0 (permanent)\n\t * @return {jQuery} jQuery element for notification row\n\t * @deprecated 17.0.0 use the `@nextcloud/dialogs` package\n\t */\n\tshowHtml(html, options) {\n\t\toptions = options || {}\n\t\toptions.isHTML = true\n\t\toptions.timeout = (!options.timeout) ? TOAST_PERMANENT_TIMEOUT : options.timeout\n\t\tconst toast = showMessage(html, options)\n\t\ttoast.toastElement.toastify = toast\n\t\treturn $(toast.toastElement)\n\t},\n\n\t/**\n\t * Shows a sanitized notification\n\t *\n\t * @param {string} text Message to display\n\t * @param {object} [options] options\n\t * @param {string} [options.type] notification type\n\t * @param {number} [options.timeout=0] timeout value, defaults to 0 (permanent)\n\t * @return {jQuery} jQuery element for notification row\n\t * @deprecated 17.0.0 use the `@nextcloud/dialogs` package\n\t */\n\tshow(text, options) {\n\t\tconst escapeHTML = function(text) {\n\t\t\treturn text.toString()\n\t\t\t\t.split('&').join('&')\n\t\t\t\t.split('<').join('<')\n\t\t\t\t.split('>').join('>')\n\t\t\t\t.split('\"').join('"')\n\t\t\t\t.split('\\'').join(''')\n\t\t}\n\n\t\toptions = options || {}\n\t\toptions.timeout = (!options.timeout) ? TOAST_PERMANENT_TIMEOUT : options.timeout\n\t\tconst toast = showMessage(escapeHTML(text), options)\n\t\ttoast.toastElement.toastify = toast\n\t\treturn $(toast.toastElement)\n\t},\n\n\t/**\n\t * Updates (replaces) a sanitized notification.\n\t *\n\t * @param {string} text Message to display\n\t * @return {jQuery} JQuery element for notificaiton row\n\t * @deprecated 17.0.0 use the `@nextcloud/dialogs` package\n\t */\n\tshowUpdate(text) {\n\t\tif (this.updatableNotification) {\n\t\t\tthis.updatableNotification.hideToast()\n\t\t}\n\t\tthis.updatableNotification = showMessage(text, { timeout: TOAST_PERMANENT_TIMEOUT })\n\t\tthis.updatableNotification.toastElement.toastify = this.updatableNotification\n\t\treturn $(this.updatableNotification.toastElement)\n\t},\n\n\t/**\n\t * Shows a notification that disappears after x seconds, default is\n\t * 7 seconds\n\t *\n\t * @param {string} text Message to show\n\t * @param {Array} [options] options array\n\t * @param {number} [options.timeout=7] timeout in seconds, if this is 0 it will show the message permanently\n\t * @param {boolean} [options.isHTML=false] an indicator for HTML notifications (true) or text (false)\n\t * @param {string} [options.type] notification type\n\t * @return {JQuery} the toast element\n\t * @deprecated 17.0.0 use the `@nextcloud/dialogs` package\n\t */\n\tshowTemporary(text, options) {\n\t\toptions = options || {}\n\t\toptions.timeout = options.timeout || TOAST_DEFAULT_TIMEOUT\n\t\tconst toast = showMessage(text, options)\n\t\ttoast.toastElement.toastify = toast\n\t\treturn $(toast.toastElement)\n\t},\n\n\t/**\n\t * Returns whether a notification is hidden.\n\t *\n\t * @return {boolean}\n\t * @deprecated 17.0.0 use the `@nextcloud/dialogs` package\n\t */\n\tisHidden() {\n\t\treturn !$('#content').find('.toastify').length\n\t},\n}\n","/**\n * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport _ from 'underscore'\nimport $ from 'jquery'\n\nimport OC from './index.js'\nimport Notification from './notification.js'\n\n/**\n * Warn users that the connection to the server was lost temporarily\n *\n * This function is throttled to prevent stacked notfications.\n * After 7sec the first notification is gone, then we can show another one\n * if necessary.\n */\nexport const ajaxConnectionLostHandler = _.throttle(() => {\n\tNotification.showTemporary(t('core', 'Connection to server lost'))\n}, 7 * 1000, { trailing: false })\n\n/**\n * Process ajax error, redirects to main page\n * if an error/auth error status was returned.\n *\n * @param {XMLHttpRequest} xhr xhr request\n */\nexport const processAjaxError = xhr => {\n\t// purposefully aborted request ?\n\t// OC._userIsNavigatingAway needed to distinguish ajax calls cancelled by navigating away\n\t// from calls cancelled by failed cross-domain ajax due to SSO redirect\n\tif (xhr.status === 0 && (xhr.statusText === 'abort' || xhr.statusText === 'timeout' || OC._reloadCalled)) {\n\t\treturn\n\t}\n\n\tif (_.contains([302, 303, 307, 401], xhr.status) && OC.currentUser) {\n\t\t// sometimes \"beforeunload\" happens later, so need to defer the reload a bit\n\t\tsetTimeout(function() {\n\t\t\tif (!OC._userIsNavigatingAway && !OC._reloadCalled) {\n\t\t\t\tlet timer = 0\n\t\t\t\tconst seconds = 5\n\t\t\t\tconst interval = setInterval(function() {\n\t\t\t\t\tNotification.showUpdate(n('core', 'Problem loading page, reloading in %n second', 'Problem loading page, reloading in %n seconds', seconds - timer))\n\t\t\t\t\tif (timer >= seconds) {\n\t\t\t\t\t\tclearInterval(interval)\n\t\t\t\t\t\tOC.reload()\n\t\t\t\t\t}\n\t\t\t\t\ttimer++\n\t\t\t\t}, 1000 // 1 second interval\n\t\t\t\t)\n\n\t\t\t\t// only call reload once\n\t\t\t\tOC._reloadCalled = true\n\t\t\t}\n\t\t}, 100)\n\t} else if (xhr.status === 0) {\n\t\t// Connection lost (e.g. WiFi disconnected or server is down)\n\t\tsetTimeout(function() {\n\t\t\tif (!OC._userIsNavigatingAway && !OC._reloadCalled) {\n\t\t\t\t// TODO: call method above directly\n\t\t\t\tOC._ajaxConnectionLostHandler()\n\t\t\t}\n\t\t}, 100)\n\t}\n}\n\n/**\n * Registers XmlHttpRequest object for global error processing.\n *\n * This means that if this XHR object returns 401 or session timeout errors,\n * the current page will automatically be reloaded.\n *\n * @param {XMLHttpRequest} xhr xhr request\n */\nexport const registerXHRForErrorProcessing = xhr => {\n\tconst loadCallback = () => {\n\t\tif (xhr.readyState !== 4) {\n\t\t\treturn\n\t\t}\n\n\t\tif ((xhr.status >= 200 && xhr.status < 300) || xhr.status === 304) {\n\t\t\treturn\n\t\t}\n\n\t\t// fire jquery global ajax error handler\n\t\t$(document).trigger(new $.Event('ajaxError'), xhr)\n\t}\n\n\tconst errorCallback = () => {\n\t\t// fire jquery global ajax error handler\n\t\t$(document).trigger(new $.Event('ajaxError'), xhr)\n\t}\n\n\tif (xhr.addEventListener) {\n\t\txhr.addEventListener('load', loadCallback)\n\t\txhr.addEventListener('error', errorCallback)\n\t}\n\n}\n","/**\n * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\n * SPDX-FileCopyrightText: 2014 ownCloud, Inc.\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport $ from 'jquery'\n\nlet dynamicSlideToggleEnabled = false\n\nconst Apps = {\n\tenableDynamicSlideToggle() {\n\t\tdynamicSlideToggleEnabled = true\n\t},\n}\n\n/**\n * Shows the #app-sidebar and add .with-app-sidebar to subsequent siblings\n *\n * @param {object} [$el] sidebar element to show, defaults to $('#app-sidebar')\n */\nApps.showAppSidebar = function($el) {\n\tconst $appSidebar = $el || $('#app-sidebar')\n\t$appSidebar.removeClass('disappear').show()\n\t$('#app-content').trigger(new $.Event('appresized'))\n}\n\n/**\n * Shows the #app-sidebar and removes .with-app-sidebar from subsequent\n * siblings\n *\n * @param {object} [$el] sidebar element to hide, defaults to $('#app-sidebar')\n */\nApps.hideAppSidebar = function($el) {\n\tconst $appSidebar = $el || $('#app-sidebar')\n\t$appSidebar.hide().addClass('disappear')\n\t$('#app-content').trigger(new $.Event('appresized'))\n}\n\n/**\n * Provides a way to slide down a target area through a button and slide it\n * up if the user clicks somewhere else. Used for the news app settings and\n * add new field.\n *\n * Usage:\n * <button data-apps-slide-toggle=\".slide-area\">slide</button>\n * <div class=\".slide-area\" class=\"hidden\">I'm sliding up</div>\n */\nexport const registerAppsSlideToggle = () => {\n\tlet buttons = $('[data-apps-slide-toggle]')\n\n\tif (buttons.length === 0) {\n\t\t$('#app-navigation').addClass('without-app-settings')\n\t}\n\n\t$(document).click(function(event) {\n\n\t\tif (dynamicSlideToggleEnabled) {\n\t\t\tbuttons = $('[data-apps-slide-toggle]')\n\t\t}\n\n\t\tbuttons.each(function(index, button) {\n\n\t\t\tconst areaSelector = $(button).data('apps-slide-toggle')\n\t\t\tconst area = $(areaSelector)\n\n\t\t\t/**\n\t\t\t *\n\t\t\t */\n\t\t\tfunction hideArea() {\n\t\t\t\tarea.slideUp(OC.menuSpeed * 4, function() {\n\t\t\t\t\tarea.trigger(new $.Event('hide'))\n\t\t\t\t})\n\t\t\t\tarea.removeClass('opened')\n\t\t\t\t$(button).removeClass('opened')\n\t\t\t\t$(button).attr('aria-expanded', 'false')\n\t\t\t}\n\n\t\t\t/**\n\t\t\t *\n\t\t\t */\n\t\t\tfunction showArea() {\n\t\t\t\tarea.slideDown(OC.menuSpeed * 4, function() {\n\t\t\t\t\tarea.trigger(new $.Event('show'))\n\t\t\t\t})\n\t\t\t\tarea.addClass('opened')\n\t\t\t\t$(button).addClass('opened')\n\t\t\t\t$(button).attr('aria-expanded', 'true')\n\t\t\t\tconst input = $(areaSelector + ' [autofocus]')\n\t\t\t\tif (input.length === 1) {\n\t\t\t\t\tinput.focus()\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// do nothing if the area is animated\n\t\t\tif (!area.is(':animated')) {\n\n\t\t\t\t// button toggles the area\n\t\t\t\tif ($(button).is($(event.target).closest('[data-apps-slide-toggle]'))) {\n\t\t\t\t\tif (area.is(':visible')) {\n\t\t\t\t\t\thideArea()\n\t\t\t\t\t} else {\n\t\t\t\t\t\tshowArea()\n\t\t\t\t\t}\n\n\t\t\t\t\t// all other areas that have not been clicked but are open\n\t\t\t\t\t// should be slid up\n\t\t\t\t} else {\n\t\t\t\t\tconst closest = $(event.target).closest(areaSelector)\n\t\t\t\t\tif (area.is(':visible') && closest[0] !== area[0]) {\n\t\t\t\t\t\thideArea()\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t})\n\n\t})\n}\n\nexport default Apps\n","/**\n * SPDX-FileCopyrightText: 2016 Nextcloud GmbH and Nextcloud contributors\n * SPDX-FileCopyrightText: 2016 ownCloud, Inc.\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport $ from 'jquery'\nimport { generateOcsUrl } from '@nextcloud/router'\n\nimport OC from '../OC/index.js'\n\n/**\n * @param {string} method 'post' or 'delete'\n * @param {string} endpoint endpoint\n * @param {object} [options] destructuring object\n * @param {object} [options.data] option data\n * @param {Function} [options.success] success callback\n * @param {Function} [options.error] error callback\n */\nfunction call(method, endpoint, options) {\n\tif ((method === 'post' || method === 'delete') && OC.PasswordConfirmation.requiresPasswordConfirmation()) {\n\t\tOC.PasswordConfirmation.requirePasswordConfirmation(_.bind(call, this, method, endpoint, options))\n\t\treturn\n\t}\n\n\toptions = options || {}\n\t$.ajax({\n\t\ttype: method.toUpperCase(),\n\t\turl: generateOcsUrl('apps/provisioning_api/api/v1/config/apps') + endpoint,\n\t\tdata: options.data || {},\n\t\tsuccess: options.success,\n\t\terror: options.error,\n\t})\n}\n\n/**\n * @param {object} [options] destructuring object\n * @param {Function} [options.success] success callback\n * @since 11.0.0\n */\nexport function getApps(options) {\n\tcall('get', '', options)\n}\n\n/**\n * @param {string} app app id\n * @param {object} [options] destructuring object\n * @param {Function} [options.success] success callback\n * @param {Function} [options.error] error callback\n * @since 11.0.0\n */\nexport function getKeys(app, options) {\n\tcall('get', '/' + app, options)\n}\n\n/**\n * @param {string} app app id\n * @param {string} key key\n * @param {string | Function} defaultValue default value\n * @param {object} [options] destructuring object\n * @param {Function} [options.success] success callback\n * @param {Function} [options.error] error callback\n * @since 11.0.0\n */\nexport function getValue(app, key, defaultValue, options) {\n\toptions = options || {}\n\toptions.data = {\n\t\tdefaultValue,\n\t}\n\n\tcall('get', '/' + app + '/' + key, options)\n}\n\n/**\n * @param {string} app app id\n * @param {string} key key\n * @param {string} value value\n * @param {object} [options] destructuring object\n * @param {Function} [options.success] success callback\n * @param {Function} [options.error] error callback\n * @since 11.0.0\n */\nexport function setValue(app, key, value, options) {\n\toptions = options || {}\n\toptions.data = {\n\t\tvalue,\n\t}\n\n\tcall('post', '/' + app + '/' + key, options)\n}\n\n/**\n * @param {string} app app id\n * @param {string} key key\n * @param {object} [options] destructuring object\n * @param {Function} [options.success] success callback\n * @param {Function} [options.error] error callback\n * @since 11.0.0\n */\nexport function deleteKey(app, key, options) {\n\tcall('delete', '/' + app + '/' + key, options)\n}\n","/**\n * SPDX-FileCopyrightText: 2016 Nextcloud GmbH and Nextcloud contributors\n * SPDX-FileCopyrightText: 2014 ownCloud, Inc.\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\n/* eslint-disable */\n import { getValue, setValue, getApps, getKeys, deleteKey } from '../OCP/appconfig.js'\n\nexport const appConfig = window.oc_appconfig || {}\n\n/**\n * @namespace\n * @deprecated 16.0.0 Use OCP.AppConfig instead\n */\nexport const AppConfig = {\n\t/**\n\t * @deprecated Use OCP.AppConfig.getValue() instead\n\t */\n\tgetValue: function(app, key, defaultValue, callback) {\n\t\tgetValue(app, key, defaultValue, {\n\t\t\tsuccess: callback\n\t\t})\n\t},\n\n\t/**\n\t * @deprecated Use OCP.AppConfig.setValue() instead\n\t */\n\tsetValue: function(app, key, value) {\n\t\tsetValue(app, key, value)\n\t},\n\n\t/**\n\t * @deprecated Use OCP.AppConfig.getApps() instead\n\t */\n\tgetApps: function(callback) {\n\t\tgetApps({\n\t\t\tsuccess: callback\n\t\t})\n\t},\n\n\t/**\n\t * @deprecated Use OCP.AppConfig.getKeys() instead\n\t */\n\tgetKeys: function(app, callback) {\n\t\tgetKeys(app, {\n\t\t\tsuccess: callback\n\t\t})\n\t},\n\n\t/**\n\t * @deprecated Use OCP.AppConfig.deleteKey() instead\n\t */\n\tdeleteKey: function(app, key) {\n\t\tdeleteKey(app, key)\n\t}\n\n}\n","/**\n * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nconst appswebroots = (window._oc_appswebroots !== undefined) ? window._oc_appswebroots : false\n\nexport default appswebroots\n","/**\n * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\n/* eslint-disable */\nimport _ from 'underscore'\nimport { dav } from 'davclient.js'\n\nconst methodMap = {\n\tcreate: 'POST',\n\tupdate: 'PROPPATCH',\n\tpatch: 'PROPPATCH',\n\tdelete: 'DELETE',\n\tread: 'PROPFIND'\n}\n\n// Throw an error when a URL is needed, and none is supplied.\nfunction urlError() {\n\tthrow new Error('A \"url\" property or function must be specified')\n}\n\n/**\n * Convert a single propfind result to JSON\n *\n * @param {Object} result\n * @param {Object} davProperties properties mapping\n */\nfunction parsePropFindResult(result, davProperties) {\n\tif (_.isArray(result)) {\n\t\treturn _.map(result, function(subResult) {\n\t\t\treturn parsePropFindResult(subResult, davProperties)\n\t\t})\n\t}\n\tvar props = {\n\t\thref: result.href\n\t}\n\n\t_.each(result.propStat, function(propStat) {\n\t\tif (propStat.status !== 'HTTP/1.1 200 OK') {\n\t\t\treturn\n\t\t}\n\n\t\tfor (var key in propStat.properties) {\n\t\t\tvar propKey = key\n\t\t\tif (key in davProperties) {\n\t\t\t\tpropKey = davProperties[key]\n\t\t\t}\n\t\t\tprops[propKey] = propStat.properties[key]\n\t\t}\n\t})\n\n\tif (!props.id) {\n\t\t// parse id from href\n\t\tprops.id = parseIdFromLocation(props.href)\n\t}\n\n\treturn props\n}\n\n/**\n * Parse ID from location\n *\n * @param {string} url url\n * @returns {string} id\n */\nfunction parseIdFromLocation(url) {\n\tvar queryPos = url.indexOf('?')\n\tif (queryPos > 0) {\n\t\turl = url.substr(0, queryPos)\n\t}\n\n\tvar parts = url.split('/')\n\tvar result\n\tdo {\n\t\tresult = parts[parts.length - 1]\n\t\tparts.pop()\n\t\t// note: first result can be empty when there is a trailing slash,\n\t\t// so we take the part before that\n\t} while (!result && parts.length > 0)\n\n\treturn result\n}\n\nfunction isSuccessStatus(status) {\n\treturn status >= 200 && status <= 299\n}\n\nfunction convertModelAttributesToDavProperties(attrs, davProperties) {\n\tvar props = {}\n\tvar key\n\tfor (key in attrs) {\n\t\tvar changedProp = davProperties[key]\n\t\tvar value = attrs[key]\n\t\tif (!changedProp) {\n\t\t\tconsole.warn('No matching DAV property for property \"' + key)\n\t\t\tchangedProp = key\n\t\t}\n\t\tif (_.isBoolean(value) || _.isNumber(value)) {\n\t\t\t// convert to string\n\t\t\tvalue = '' + value\n\t\t}\n\t\tprops[changedProp] = value\n\t}\n\treturn props\n}\n\nfunction callPropFind(client, options, model, headers) {\n\treturn client.propFind(\n\t\toptions.url,\n\t\t_.values(options.davProperties) || [],\n\t\toptions.depth,\n\t\theaders\n\t).then(function(response) {\n\t\tif (isSuccessStatus(response.status)) {\n\t\t\tif (_.isFunction(options.success)) {\n\t\t\t\tvar propsMapping = _.invert(options.davProperties)\n\t\t\t\tvar results = parsePropFindResult(response.body, propsMapping)\n\t\t\t\tif (options.depth > 0) {\n\t\t\t\t\t// discard root entry\n\t\t\t\t\tresults.shift()\n\t\t\t\t}\n\n\t\t\t\toptions.success(results)\n\n\t\t\t}\n\t\t} else if (_.isFunction(options.error)) {\n\t\t\toptions.error(response)\n\t\t}\n\t})\n}\n\nfunction callPropPatch(client, options, model, headers) {\n\treturn client.propPatch(\n\t\toptions.url,\n\t\tconvertModelAttributesToDavProperties(model.changed, options.davProperties),\n\t\theaders\n\t).then(function(result) {\n\t\tif (isSuccessStatus(result.status)) {\n\t\t\tif (_.isFunction(options.success)) {\n\t\t\t\t// pass the object's own values because the server\n\t\t\t\t// does not return the updated model\n\t\t\t\toptions.success(model.toJSON())\n\t\t\t}\n\t\t} else if (_.isFunction(options.error)) {\n\t\t\toptions.error(result)\n\t\t}\n\t})\n\n}\n\nfunction callMkCol(client, options, model, headers) {\n\t// call MKCOL without data, followed by PROPPATCH\n\treturn client.request(\n\t\toptions.type,\n\t\toptions.url,\n\t\theaders,\n\t\tnull\n\t).then(function(result) {\n\t\tif (!isSuccessStatus(result.status)) {\n\t\t\tif (_.isFunction(options.error)) {\n\t\t\t\toptions.error(result)\n\t\t\t}\n\t\t\treturn\n\t\t}\n\n\t\tcallPropPatch(client, options, model, headers)\n\t})\n}\n\nfunction callMethod(client, options, model, headers) {\n\theaders['Content-Type'] = 'application/json'\n\treturn client.request(\n\t\toptions.type,\n\t\toptions.url,\n\t\theaders,\n\t\toptions.data\n\t).then(function(result) {\n\t\tif (!isSuccessStatus(result.status)) {\n\t\t\tif (_.isFunction(options.error)) {\n\t\t\t\toptions.error(result)\n\t\t\t}\n\t\t\treturn\n\t\t}\n\n\t\tif (_.isFunction(options.success)) {\n\t\t\tif (options.type === 'PUT' || options.type === 'POST' || options.type === 'MKCOL') {\n\t\t\t\t// pass the object's own values because the server\n\t\t\t\t// does not return anything\n\t\t\t\tvar responseJson = result.body || model.toJSON()\n\t\t\t\tvar locationHeader = result.xhr.getResponseHeader('Content-Location')\n\t\t\t\tif (options.type === 'POST' && locationHeader) {\n\t\t\t\t\tresponseJson.id = parseIdFromLocation(locationHeader)\n\t\t\t\t}\n\t\t\t\toptions.success(responseJson)\n\t\t\t\treturn\n\t\t\t}\n\t\t\t// if multi-status, parse\n\t\t\tif (result.status === 207) {\n\t\t\t\tvar propsMapping = _.invert(options.davProperties)\n\t\t\t\toptions.success(parsePropFindResult(result.body, propsMapping))\n\t\t\t} else {\n\t\t\t\toptions.success(result.body)\n\t\t\t}\n\t\t}\n\t})\n}\n\nexport const davCall = (options, model) => {\n\tvar client = new dav.Client({\n\t\tbaseUrl: options.url,\n\t\txmlNamespaces: _.extend({\n\t\t\t'DAV:': 'd',\n\t\t\t'http://owncloud.org/ns': 'oc'\n\t\t}, options.xmlNamespaces || {})\n\t})\n\tclient.resolveUrl = function() {\n\t\treturn options.url\n\t}\n\tvar headers = _.extend({\n\t\t'X-Requested-With': 'XMLHttpRequest',\n\t\t'requesttoken': OC.requestToken\n\t}, options.headers)\n\tif (options.type === 'PROPFIND') {\n\t\treturn callPropFind(client, options, model, headers)\n\t} else if (options.type === 'PROPPATCH') {\n\t\treturn callPropPatch(client, options, model, headers)\n\t} else if (options.type === 'MKCOL') {\n\t\treturn callMkCol(client, options, model, headers)\n\t} else {\n\t\treturn callMethod(client, options, model, headers)\n\t}\n}\n\n/**\n * DAV transport\n */\nexport const davSync = Backbone => (method, model, options) => {\n\tvar params = { type: methodMap[method] || method }\n\tvar isCollection = (model instanceof Backbone.Collection)\n\n\tif (method === 'update') {\n\t\t// if a model has an inner collection, it must define an\n\t\t// attribute \"hasInnerCollection\" that evaluates to true\n\t\tif (model.hasInnerCollection) {\n\t\t\t// if the model itself is a Webdav collection, use MKCOL\n\t\t\tparams.type = 'MKCOL'\n\t\t} else if (model.usePUT || (model.collection && model.collection.usePUT)) {\n\t\t\t// use PUT instead of PROPPATCH\n\t\t\tparams.type = 'PUT'\n\t\t}\n\t}\n\n\t// Ensure that we have a URL.\n\tif (!options.url) {\n\t\tparams.url = _.result(model, 'url') || urlError()\n\t}\n\n\t// Ensure that we have the appropriate request data.\n\tif (options.data == null && model && (method === 'create' || method === 'update' || method === 'patch')) {\n\t\tparams.data = JSON.stringify(options.attrs || model.toJSON(options))\n\t}\n\n\t// Don't process data on a non-GET request.\n\tif (params.type !== 'PROPFIND') {\n\t\tparams.processData = false\n\t}\n\n\tif (params.type === 'PROPFIND' || params.type === 'PROPPATCH') {\n\t\tvar davProperties = model.davProperties\n\t\tif (!davProperties && model.model) {\n\t\t\t// use dav properties from model in case of collection\n\t\t\tdavProperties = model.model.prototype.davProperties\n\t\t}\n\t\tif (davProperties) {\n\t\t\tif (_.isFunction(davProperties)) {\n\t\t\t\tparams.davProperties = davProperties.call(model)\n\t\t\t} else {\n\t\t\t\tparams.davProperties = davProperties\n\t\t\t}\n\t\t}\n\n\t\tparams.davProperties = _.extend(params.davProperties || {}, options.davProperties)\n\n\t\tif (_.isUndefined(options.depth)) {\n\t\t\tif (isCollection) {\n\t\t\t\toptions.depth = 1\n\t\t\t} else {\n\t\t\t\toptions.depth = 0\n\t\t\t}\n\t\t}\n\t}\n\n\t// Pass along `textStatus` and `errorThrown` from jQuery.\n\tvar error = options.error\n\toptions.error = function(xhr, textStatus, errorThrown) {\n\t\toptions.textStatus = textStatus\n\t\toptions.errorThrown = errorThrown\n\t\tif (error) {\n\t\t\terror.call(options.context, xhr, textStatus, errorThrown)\n\t\t}\n\t}\n\n\t// Make the request, allowing the user to override any Ajax options.\n\tvar xhr = options.xhr = Backbone.davCall(_.extend(params, options), model)\n\tmodel.trigger('request', model, xhr, options)\n\treturn xhr\n}\n","/**\n * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport VendorBackbone from 'backbone'\nimport { davCall, davSync } from './backbone-webdav.js'\n\nconst Backbone = VendorBackbone.noConflict()\n\n// Patch Backbone for DAV\nObject.assign(Backbone, {\n\tdavCall,\n\tdavSync: davSync(Backbone),\n})\n\nexport default Backbone\n","/**\n * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport $ from 'jquery'\n\n/**\n * Parses a URL query string into a JS map\n *\n * @param {string} queryString query string in the format param1=1234¶m2=abcde¶m3=xyz\n * @return {Object<string, string>} map containing key/values matching the URL parameters\n */\nexport const parse = queryString => {\n\tlet pos\n\tlet components\n\tconst result = {}\n\tlet key\n\tif (!queryString) {\n\t\treturn null\n\t}\n\tpos = queryString.indexOf('?')\n\tif (pos >= 0) {\n\t\tqueryString = queryString.substr(pos + 1)\n\t}\n\tconst parts = queryString.replace(/\\+/g, '%20').split('&')\n\tfor (let i = 0; i < parts.length; i++) {\n\t\t// split on first equal sign\n\t\tconst part = parts[i]\n\t\tpos = part.indexOf('=')\n\t\tif (pos >= 0) {\n\t\t\tcomponents = [\n\t\t\t\tpart.substr(0, pos),\n\t\t\t\tpart.substr(pos + 1),\n\t\t\t]\n\t\t} else {\n\t\t\t// key only\n\t\t\tcomponents = [part]\n\t\t}\n\t\tif (!components.length) {\n\t\t\tcontinue\n\t\t}\n\t\tkey = decodeURIComponent(components[0])\n\t\tif (!key) {\n\t\t\tcontinue\n\t\t}\n\t\t// if equal sign was there, return string\n\t\tif (components.length > 1) {\n\t\t\tresult[key] = decodeURIComponent(components[1])\n\t\t} else {\n\t\t\t// no equal sign => null value\n\t\t\tresult[key] = null\n\t\t}\n\t}\n\treturn result\n}\n\n/**\n * Builds a URL query from a JS map.\n *\n * @param {Object<string, string>} params map containing key/values matching the URL parameters\n * @return {string} String containing a URL query (without question) mark\n */\nexport const build = params => {\n\tif (!params) {\n\t\treturn ''\n\t}\n\treturn $.map(params, function(value, key) {\n\t\tlet s = encodeURIComponent(key)\n\t\tif (value !== null && typeof (value) !== 'undefined') {\n\t\t\ts += '=' + encodeURIComponent(value)\n\t\t}\n\t\treturn s\n\t}).join('&')\n}\n","/**\n * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nconst config = window._oc_config || {}\n\nexport default config\n","/**\n * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nconst rawUid = document\n\t.getElementsByTagName('head')[0]\n\t.getAttribute('data-user')\nconst displayName = document\n\t.getElementsByTagName('head')[0]\n\t.getAttribute('data-user-displayname')\n\nexport const currentUser = rawUid !== undefined ? rawUid : false\n\nexport const getCurrentUser = () => {\n\treturn {\n\t\tuid: currentUser,\n\t\tdisplayName,\n\t}\n}\n","/**\n * SPDX-FileCopyrightText: 2016 Nextcloud GmbH and Nextcloud contributors\n * SPDX-FileCopyrightText: 2015 ownCloud, Inc.\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\n/* eslint-disable */\nimport _ from 'underscore'\nimport $ from 'jquery'\n\nimport IconMove from '@mdi/svg/svg/folder-move.svg?raw'\nimport IconCopy from '@mdi/svg/svg/folder-multiple.svg?raw'\n\nimport OC from './index.js'\nimport { DialogBuilder, FilePickerType, getFilePickerBuilder, spawnDialog } from '@nextcloud/dialogs'\nimport { translate as t } from '@nextcloud/l10n'\nimport { basename } from 'path'\nimport { defineAsyncComponent } from 'vue'\n\n/**\n * this class to ease the usage of jquery dialogs\n */\nconst Dialogs = {\n\t// dialog button types\n\t/** @deprecated use `@nextcloud/dialogs` */\n\tYES_NO_BUTTONS: 70,\n\t/** @deprecated use `@nextcloud/dialogs` */\n\tOK_BUTTONS: 71,\n\n\t/** @deprecated use FilePickerType from `@nextcloud/dialogs` */\n\tFILEPICKER_TYPE_CHOOSE: 1,\n\t/** @deprecated use FilePickerType from `@nextcloud/dialogs` */\n\tFILEPICKER_TYPE_MOVE: 2,\n\t/** @deprecated use FilePickerType from `@nextcloud/dialogs` */\n\tFILEPICKER_TYPE_COPY: 3,\n\t/** @deprecated use FilePickerType from `@nextcloud/dialogs` */\n\tFILEPICKER_TYPE_COPY_MOVE: 4,\n\t/** @deprecated use FilePickerType from `@nextcloud/dialogs` */\n\tFILEPICKER_TYPE_CUSTOM: 5,\n\n\t/**\n\t * displays alert dialog\n\t * @param {string} text content of dialog\n\t * @param {string} title dialog title\n\t * @param {function} callback which will be triggered when user presses OK\n\t * @param {boolean} [modal] make the dialog modal\n\t *\n\t * @deprecated 30.0.0 Use `@nextcloud/dialogs` instead or build your own with `@nextcloud/vue` NcDialog\n\t */\n\talert: function(text, title, callback, modal) {\n\t\tthis.message(\n\t\t\ttext,\n\t\t\ttitle,\n\t\t\t'alert',\n\t\t\tDialogs.OK_BUTTON,\n\t\t\tcallback,\n\t\t\tmodal\n\t\t)\n\t},\n\n\t/**\n\t * displays info dialog\n\t * @param {string} text content of dialog\n\t * @param {string} title dialog title\n\t * @param {function} callback which will be triggered when user presses OK\n\t * @param {boolean} [modal] make the dialog modal\n\t *\n\t * @deprecated 30.0.0 Use `@nextcloud/dialogs` instead or build your own with `@nextcloud/vue` NcDialog\n\t */\n\tinfo: function(text, title, callback, modal) {\n\t\tthis.message(text, title, 'info', Dialogs.OK_BUTTON, callback, modal)\n\t},\n\n\t/**\n\t * displays confirmation dialog\n\t * @param {string} text content of dialog\n\t * @param {string} title dialog title\n\t * @param {function} callback which will be triggered when user presses OK (true or false would be passed to callback respectively)\n\t * @param {boolean} [modal] make the dialog modal\n\t * @returns {Promise}\n\t *\n\t * @deprecated 30.0.0 Use `@nextcloud/dialogs` instead or build your own with `@nextcloud/vue` NcDialog\n\t */\n\tconfirm: function(text, title, callback, modal) {\n\t\treturn this.message(\n\t\t\ttext,\n\t\t\ttitle,\n\t\t\t'notice',\n\t\t\tDialogs.YES_NO_BUTTONS,\n\t\t\tcallback,\n\t\t\tmodal\n\t\t)\n\t},\n\t/**\n\t * displays confirmation dialog\n\t * @param {string} text content of dialog\n\t * @param {string} title dialog title\n\t * @param {(number|{type: number, confirm: string, cancel: string, confirmClasses: string})} buttons text content of buttons\n\t * @param {function} callback which will be triggered when user presses OK (true or false would be passed to callback respectively)\n\t * @param {boolean} [modal] make the dialog modal\n\t * @returns {Promise}\n\t *\n\t * @deprecated 30.0.0 Use `@nextcloud/dialogs` instead or build your own with `@nextcloud/vue` NcDialog\n\t */\n\tconfirmDestructive: function(text, title, buttons = Dialogs.OK_BUTTONS, callback = () => {}, modal) {\n\t\treturn (new DialogBuilder())\n\t\t\t.setName(title)\n\t\t\t.setText(text)\n\t\t\t.setButtons(\n\t\t\t\tbuttons === Dialogs.OK_BUTTONS\n\t\t\t\t? [\n\t\t\t\t\t{\n\t\t\t\t\t\tlabel: t('core', 'Yes'),\n\t\t\t\t\t\ttype: 'error',\n\t\t\t\t\t\tcallback: () => {\n\t\t\t\t\t\t\tcallback.clicked = true\n\t\t\t\t\t\t\tcallback(true)\n\t\t\t\t\t\t},\n\t\t\t\t\t}\n\t\t\t\t]\n\t\t\t\t: Dialogs._getLegacyButtons(buttons, callback)\n\t\t\t)\n\t\t\t.build()\n\t\t\t.show()\n\t\t\t.then(() => {\n\t\t\t\tif (!callback.clicked) {\n\t\t\t\t\tcallback(false)\n\t\t\t\t}\n\t\t\t})\n\t},\n\t/**\n\t * displays confirmation dialog\n\t * @param {string} text content of dialog\n\t * @param {string} title dialog title\n\t * @param {function} callback which will be triggered when user presses OK (true or false would be passed to callback respectively)\n\t * @param {boolean} [modal] make the dialog modal\n\t * @returns {Promise}\n\t *\n\t * @deprecated 30.0.0 Use `@nextcloud/dialogs` instead or build your own with `@nextcloud/vue` NcDialog\n\t */\n\tconfirmHtml: function(text, title, callback, modal) {\n\t\treturn (new DialogBuilder())\n\t\t\t.setName(title)\n\t\t\t.setText('')\n\t\t\t.setButtons([\n\t\t\t\t{\n\t\t\t\t\tlabel: t('core', 'No'),\n\t\t\t\t\tcallback: () => {},\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tlabel: t('core', 'Yes'),\n\t\t\t\t\ttype: 'primary',\n\t\t\t\t\tcallback: () => {\n\t\t\t\t\t\tcallback.clicked = true\n\t\t\t\t\t\tcallback(true)\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t])\n\t\t\t.build()\n\t\t\t.setHTML(text)\n\t\t\t.show()\n\t\t\t.then(() => {\n\t\t\t\tif (!callback.clicked) {\n\t\t\t\t\tcallback(false)\n\t\t\t\t}\n\t\t\t})\n\t},\n\t/**\n\t * displays prompt dialog\n\t * @param {string} text content of dialog\n\t * @param {string} title dialog title\n\t * @param {function} callback which will be triggered when user presses OK (true or false would be passed to callback respectively)\n\t * @param {boolean} [modal] make the dialog modal\n\t * @param {string} name name of the input field\n\t * @param {boolean} password whether the input should be a password input\n\t * @returns {Promise}\n\t *\n\t * @deprecated Use NcDialog from `@nextcloud/vue` instead\n\t */\n\tprompt: function(text, title, callback, modal, name, password) {\n\t\treturn new Promise((resolve) => {\n\t\t\tspawnDialog(\n\t\t\t\tdefineAsyncComponent(() => import('../components/LegacyDialogPrompt.vue')),\n\t\t\t\t{\n\t\t\t\t\ttext,\n\t\t\t\t\tname: title,\n\t\t\t\t\tcallback,\n\t\t\t\t\tinputName: name,\n\t\t\t\t\tisPassword: !!password\n\t\t\t\t},\n\t\t\t\t(...args) => {\n\t\t\t\t\tcallback(...args)\n\t\t\t\t\tresolve()\n\t\t\t\t},\n\t\t\t)\n\t\t})\n\t},\n\n\t/**\n\t * Legacy wrapper to the new Vue based filepicker from `@nextcloud/dialogs`\n\t *\n\t * Prefer to use the Vue filepicker directly instead.\n\t *\n\t * In order to pick several types of mime types they need to be passed as an\n\t * array of strings.\n\t *\n\t * When no mime type filter is given only files can be selected. In order to\n\t * be able to select both files and folders \"['*', 'httpd/unix-directory']\"\n\t * should be used instead.\n\t *\n\t * @param {string} title dialog title\n\t * @param {Function} callback which will be triggered when user presses Choose\n\t * @param {boolean} [multiselect] whether it should be possible to select multiple files\n\t * @param {string[]} [mimetype] mimetype to filter by - directories will always be included\n\t * @param {boolean} [_modal] do not use\n\t * @param {string} [type] Type of file picker : Choose, copy, move, copy and move\n\t * @param {string} [path] path to the folder that the the file can be picket from\n\t * @param {object} [options] additonal options that need to be set\n\t * @param {Function} [options.filter] filter function for advanced filtering\n\t * @param {boolean} [options.allowDirectoryChooser] Allow to select directories\n\t * @deprecated since 27.1.0 use the filepicker from `@nextcloud/dialogs` instead\n\t */\n\tfilepicker(title, callback, multiselect = false, mimetype = undefined, _modal = undefined, type = FilePickerType.Choose, path = undefined, options = undefined) {\n\n\t\t/**\n\t\t * Create legacy callback wrapper to support old filepicker syntax\n\t\t * @param fn The original callback\n\t\t * @param type The file picker type which was used to pick the file(s)\n\t\t */\n\t\tconst legacyCallback = (fn, type) => {\n\t\t\tconst getPath = (node) => {\n\t\t\t\tconst root = node?.root || ''\n\t\t\t\tlet path = node?.path || ''\n\t\t\t\t// TODO: Fix this in @nextcloud/files\n\t\t\t\tif (path.startsWith(root)) {\n\t\t\t\t\tpath = path.slice(root.length) || '/'\n\t\t\t\t}\n\t\t\t\treturn path\n\t\t\t}\n\n\t\t\tif (multiselect) {\n\t\t\t\treturn (nodes) => fn(nodes.map(getPath), type)\n\t\t\t} else {\n\t\t\t\treturn (nodes) => fn(getPath(nodes[0]), type)\n\t\t\t}\n\t\t}\n\n\t\t/**\n\t\t * Coverting a Node into a legacy file info to support the OC.dialogs.filepicker filter function\n\t\t * @param node The node to convert\n\t\t */\n\t\tconst nodeToLegacyFile = (node) => ({\n\t\t\tid: node.fileid || null,\n\t\t\tpath: node.path,\n\t\t\tmimetype: node.mime || null,\n\t\t\tmtime: node.mtime?.getTime() || null,\n\t\t\tpermissions: node.permissions,\n\t\t\tname: node.attributes?.displayName || node.basename,\n\t\t\tetag: node.attributes?.etag || null,\n\t\t\thasPreview: node.attributes?.hasPreview || null,\n\t\t\tmountType: node.attributes?.mountType || null,\n\t\t\tquotaAvailableBytes: node.attributes?.quotaAvailableBytes || null,\n\t\t\ticon: null,\n\t\t\tsharePermissions: null,\n\t\t})\n\n\t\tconst builder = getFilePickerBuilder(title)\n\n\t\t// Setup buttons\n\t\tif (type === this.FILEPICKER_TYPE_CUSTOM) {\n\t\t\t(options.buttons || []).forEach((button) => {\n\t\t\t\tbuilder.addButton({\n\t\t\t\t\tcallback: legacyCallback(callback, button.type),\n\t\t\t\t\tlabel: button.text,\n\t\t\t\t\ttype: button.defaultButton ? 'primary' : 'secondary',\n\t\t\t\t})\n\t\t\t})\n\t\t} else {\n\t\t\tbuilder.setButtonFactory((nodes, path) => {\n\t\t\t\tconst buttons = []\n\t\t\t\tconst node = nodes?.[0]?.attributes?.displayName || nodes?.[0]?.basename\n\t\t\t\tconst target = node || basename(path)\n\n\t\t\t\tif (type === FilePickerType.Choose) {\n\t\t\t\t\tbuttons.push({\n\t\t\t\t\t\tcallback: legacyCallback(callback, FilePickerType.Choose),\n\t\t\t\t\t\tlabel: node && !this.multiSelect ? t('core', 'Choose {file}', { file: node }) : t('core', 'Choose'),\n\t\t\t\t\t\ttype: 'primary',\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t\tif (type === FilePickerType.CopyMove || type === FilePickerType.Copy) {\n\t\t\t\t\tbuttons.push({\n\t\t\t\t\t\tcallback: legacyCallback(callback, FilePickerType.Copy),\n\t\t\t\t\t\tlabel: target ? t('core', 'Copy to {target}', { target }) : t('core', 'Copy'),\n\t\t\t\t\t\ttype: 'primary',\n\t\t\t\t\t\ticon: IconCopy,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t\tif (type === FilePickerType.Move || type === FilePickerType.CopyMove) {\n\t\t\t\t\tbuttons.push({\n\t\t\t\t\t\tcallback: legacyCallback(callback, FilePickerType.Move),\n\t\t\t\t\t\tlabel: target ? t('core', 'Move to {target}', { target }) : t('core', 'Move'),\n\t\t\t\t\t\ttype: type === FilePickerType.Move ? 'primary' : 'secondary',\n\t\t\t\t\t\ticon: IconMove,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t\treturn buttons\n\t\t\t})\n\t\t}\n\n\t\tif (mimetype) {\n\t\t\tbuilder.setMimeTypeFilter(typeof mimetype === 'string' ? [mimetype] : (mimetype || []))\n\t\t}\n\t\tif (typeof options?.filter === 'function') {\n\t\t\tbuilder.setFilter((node) => options.filter(nodeToLegacyFile(node)))\n\t\t}\n\t\tbuilder.allowDirectories(options?.allowDirectoryChooser === true || mimetype?.includes('httpd/unix-directory') || false)\n\t\t\t.setMultiSelect(multiselect)\n\t\t\t.startAt(path)\n\t\t\t.build()\n\t\t\t.pick()\n\t},\n\n\t/**\n\t * Displays raw dialog\n\t * You better use a wrapper instead ...\n\t *\n\t * @deprecated 30.0.0 Use `@nextcloud/dialogs` instead or build your own with `@nextcloud/vue` NcDialog\n\t */\n\tmessage: function(content, title, dialogType, buttons, callback = () => {}, modal, allowHtml) {\n\t\tconst builder = (new DialogBuilder())\n\t\t\t.setName(title)\n\t\t\t.setText(allowHtml ? '' : content)\n\t\t\t.setButtons(Dialogs._getLegacyButtons(buttons, callback))\n\n\t\tswitch (dialogType) {\n\t\t\tcase 'alert':\n\t\t\t\tbuilder.setSeverity('warning')\n\t\t\t\tbreak\n\t\t\tcase 'notice':\n\t\t\t\tbuilder.setSeverity('info')\n\t\t\t\tbreak\n\t\t\tdefault:\n\t\t\t\tbreak\n\t\t}\n\n\t\tconst dialog = builder.build()\n\t\n\t\tif (allowHtml) {\n\t\t\tdialog.setHTML(content)\n\t\t}\n\n\t\treturn dialog.show().then(() => {\n\t\t\tif(!callback._clicked) {\n\t\t\t\tcallback(false)\n\t\t\t}\n\t\t})\n\t},\n\n\t/**\n\t * Helper for legacy API\n\t * @deprecated\n\t */\n\t_getLegacyButtons(buttons, callback) {\n\t\tconst buttonList = []\n\n\t\tswitch (typeof buttons === 'object' ? buttons.type : buttons) {\n\t\t\tcase Dialogs.YES_NO_BUTTONS:\n\t\t\t\tbuttonList.push({\n\t\t\t\t\tlabel: buttons?.cancel ?? t('core', 'No'),\n\t\t\t\t\tcallback: () => {\n\t\t\t\t\t\tcallback._clicked = true\n\t\t\t\t\t\tcallback(false)\n\t\t\t\t\t},\n\t\t\t\t})\n\t\t\t\tbuttonList.push({\n\t\t\t\t\tlabel: buttons?.confirm ?? t('core', 'Yes'),\n\t\t\t\t\ttype: 'primary',\n\t\t\t\t\tcallback: () => {\n\t\t\t\t\t\tcallback._clicked = true\n\t\t\t\t\t\tcallback(true)\n\t\t\t\t\t},\n\t\t\t\t})\n\t\t\t\tbreak\n\t\t\tcase Dialogs.OK_BUTTONS:\n\t\t\t\tbuttonList.push({\n\t\t\t\t\tlabel: buttons?.confirm ?? t('core', 'OK'),\n\t\t\t\t\ttype: 'primary',\n\t\t\t\t\tcallback: () => {\n\t\t\t\t\t\tcallback._clicked = true\n\t\t\t\t\t\tcallback(true)\n\t\t\t\t\t},\n\t\t\t\t})\n\t\t\t\tbreak\n\t\t\tdefault:\n\t\t\t\tconsole.error('Invalid call to OC.dialogs')\n\t\t\t\tbreak\n\t\t}\n\t\treturn buttonList\n\t},\n\n\t_fileexistsshown: false,\n\t/**\n\t * Displays file exists dialog\n\t * @param {object} data upload object\n\t * @param {object} original file with name, size and mtime\n\t * @param {object} replacement file with name, size and mtime\n\t * @param {object} controller with onCancel, onSkip, onReplace and onRename methods\n\t * @returns {Promise} jquery promise that resolves after the dialog template was loaded\n\t *\n\t * @deprecated 29.0.0 Use openConflictPicker from the @nextcloud/upload package instead\n\t */\n\tfileexists: function(data, original, replacement, controller) {\n\t\tvar self = this\n\t\tvar dialogDeferred = new $.Deferred()\n\n\t\tvar getCroppedPreview = function(file) {\n\t\t\tvar deferred = new $.Deferred()\n\t\t\t// Only process image files.\n\t\t\tvar type = file.type && file.type.split('/').shift()\n\t\t\tif (window.FileReader && type === 'image') {\n\t\t\t\tvar reader = new FileReader()\n\t\t\t\treader.onload = function(e) {\n\t\t\t\t\tvar blob = new Blob([e.target.result])\n\t\t\t\t\twindow.URL = window.URL || window.webkitURL\n\t\t\t\t\tvar originalUrl = window.URL.createObjectURL(blob)\n\t\t\t\t\tvar image = new Image()\n\t\t\t\t\timage.src = originalUrl\n\t\t\t\t\timage.onload = function() {\n\t\t\t\t\t\tvar url = crop(image)\n\t\t\t\t\t\tdeferred.resolve(url)\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treader.readAsArrayBuffer(file)\n\t\t\t} else {\n\t\t\t\tdeferred.reject()\n\t\t\t}\n\t\t\treturn deferred\n\t\t}\n\n\t\tvar crop = function(img) {\n\t\t\tvar canvas = document.createElement('canvas')\n\t\t\tvar targetSize = 96\n\t\t\tvar width = img.width\n\t\t\tvar height = img.height\n\t\t\tvar x; var y; var size\n\n\t\t\t// Calculate the width and height, constraining the proportions\n\t\t\tif (width > height) {\n\t\t\t\ty = 0\n\t\t\t\tx = (width - height) / 2\n\t\t\t} else {\n\t\t\t\ty = (height - width) / 2\n\t\t\t\tx = 0\n\t\t\t}\n\t\t\tsize = Math.min(width, height)\n\n\t\t\t// Set canvas size to the cropped area\n\t\t\tcanvas.width = size\n\t\t\tcanvas.height = size\n\t\t\tvar ctx = canvas.getContext('2d')\n\t\t\tctx.drawImage(img, x, y, size, size, 0, 0, size, size)\n\n\t\t\t// Resize the canvas to match the destination (right size uses 96px)\n\t\t\tresampleHermite(canvas, size, size, targetSize, targetSize)\n\n\t\t\treturn canvas.toDataURL('image/png', 0.7)\n\t\t}\n\n\t\t/**\n\t\t * Fast image resize/resample using Hermite filter with JavaScript.\n\t\t *\n\t\t * @author: ViliusL\n\t\t *\n\t\t * @param {*} canvas\n\t\t * @param {number} W\n\t\t * @param {number} H\n\t\t * @param {number} W2\n\t\t * @param {number} H2\n\t\t */\n\t\tvar resampleHermite = function(canvas, W, H, W2, H2) {\n\t\t\tW2 = Math.round(W2)\n\t\t\tH2 = Math.round(H2)\n\t\t\tvar img = canvas.getContext('2d').getImageData(0, 0, W, H)\n\t\t\tvar img2 = canvas.getContext('2d').getImageData(0, 0, W2, H2)\n\t\t\tvar data = img.data\n\t\t\tvar data2 = img2.data\n\t\t\tvar ratio_w = W / W2\n\t\t\tvar ratio_h = H / H2\n\t\t\tvar ratio_w_half = Math.ceil(ratio_w / 2)\n\t\t\tvar ratio_h_half = Math.ceil(ratio_h / 2)\n\n\t\t\tfor (var j = 0; j < H2; j++) {\n\t\t\t\tfor (var i = 0; i < W2; i++) {\n\t\t\t\t\tvar x2 = (i + j * W2) * 4\n\t\t\t\t\tvar weight = 0\n\t\t\t\t\tvar weights = 0\n\t\t\t\t\tvar weights_alpha = 0\n\t\t\t\t\tvar gx_r = 0\n\t\t\t\t\tvar gx_g = 0\n\t\t\t\t\tvar gx_b = 0\n\t\t\t\t\tvar gx_a = 0\n\t\t\t\t\tvar center_y = (j + 0.5) * ratio_h\n\t\t\t\t\tfor (var yy = Math.floor(j * ratio_h); yy < (j + 1) * ratio_h; yy++) {\n\t\t\t\t\t\tvar dy = Math.abs(center_y - (yy + 0.5)) / ratio_h_half\n\t\t\t\t\t\tvar center_x = (i + 0.5) * ratio_w\n\t\t\t\t\t\tvar w0 = dy * dy // pre-calc part of w\n\t\t\t\t\t\tfor (var xx = Math.floor(i * ratio_w); xx < (i + 1) * ratio_w; xx++) {\n\t\t\t\t\t\t\tvar dx = Math.abs(center_x - (xx + 0.5)) / ratio_w_half\n\t\t\t\t\t\t\tvar w = Math.sqrt(w0 + dx * dx)\n\t\t\t\t\t\t\tif (w >= -1 && w <= 1) {\n\t\t\t\t\t\t\t\t// hermite filter\n\t\t\t\t\t\t\t\tweight = 2 * w * w * w - 3 * w * w + 1\n\t\t\t\t\t\t\t\tif (weight > 0) {\n\t\t\t\t\t\t\t\t\tdx = 4 * (xx + yy * W)\n\t\t\t\t\t\t\t\t\t// alpha\n\t\t\t\t\t\t\t\t\tgx_a += weight * data[dx + 3]\n\t\t\t\t\t\t\t\t\tweights_alpha += weight\n\t\t\t\t\t\t\t\t\t// colors\n\t\t\t\t\t\t\t\t\tif (data[dx + 3] < 255) { weight = weight * data[dx + 3] / 250 }\n\t\t\t\t\t\t\t\t\tgx_r += weight * data[dx]\n\t\t\t\t\t\t\t\t\tgx_g += weight * data[dx + 1]\n\t\t\t\t\t\t\t\t\tgx_b += weight * data[dx + 2]\n\t\t\t\t\t\t\t\t\tweights += weight\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tdata2[x2] = gx_r / weights\n\t\t\t\t\tdata2[x2 + 1] = gx_g / weights\n\t\t\t\t\tdata2[x2 + 2] = gx_b / weights\n\t\t\t\t\tdata2[x2 + 3] = gx_a / weights_alpha\n\t\t\t\t}\n\t\t\t}\n\t\t\tcanvas.getContext('2d').clearRect(0, 0, Math.max(W, W2), Math.max(H, H2))\n\t\t\tcanvas.width = W2\n\t\t\tcanvas.height = H2\n\t\t\tcanvas.getContext('2d').putImageData(img2, 0, 0)\n\t\t}\n\n\t\tvar addConflict = function($conflicts, original, replacement) {\n\n\t\t\tvar $conflict = $conflicts.find('.template').clone().removeClass('template').addClass('conflict')\n\t\t\tvar $originalDiv = $conflict.find('.original')\n\t\t\tvar $replacementDiv = $conflict.find('.replacement')\n\n\t\t\t$conflict.data('data', data)\n\n\t\t\t$conflict.find('.filename').text(original.name)\n\t\t\t$originalDiv.find('.size').text(OC.Util.humanFileSize(original.size))\n\t\t\t$originalDiv.find('.mtime').text(OC.Util.formatDate(original.mtime))\n\t\t\t// ie sucks\n\t\t\tif (replacement.size && replacement.lastModified) {\n\t\t\t\t$replacementDiv.find('.size').text(OC.Util.humanFileSize(replacement.size))\n\t\t\t\t$replacementDiv.find('.mtime').text(OC.Util.formatDate(replacement.lastModified))\n\t\t\t}\n\t\t\tvar path = original.directory + '/' + original.name\n\t\t\tvar urlSpec = {\n\t\t\t\tfile: path,\n\t\t\t\tx: 96,\n\t\t\t\ty: 96,\n\t\t\t\tc: original.etag,\n\t\t\t\tforceIcon: 0\n\t\t\t}\n\t\t\tvar previewpath = Files.generatePreviewUrl(urlSpec)\n\t\t\t// Escaping single quotes\n\t\t\tpreviewpath = previewpath.replace(/'/g, '%27')\n\t\t\t$originalDiv.find('.icon').css({ 'background-image': \"url('\" + previewpath + \"')\" })\n\t\t\tgetCroppedPreview(replacement).then(\n\t\t\t\tfunction(path) {\n\t\t\t\t\t$replacementDiv.find('.icon').css('background-image', 'url(' + path + ')')\n\t\t\t\t}, function() {\n\t\t\t\t\tpath = OC.MimeType.getIconUrl(replacement.type)\n\t\t\t\t\t$replacementDiv.find('.icon').css('background-image', 'url(' + path + ')')\n\t\t\t\t}\n\t\t\t)\n\t\t\t// connect checkboxes with labels\n\t\t\tvar checkboxId = $conflicts.find('.conflict').length\n\t\t\t$originalDiv.find('input:checkbox').attr('id', 'checkbox_original_' + checkboxId)\n\t\t\t$replacementDiv.find('input:checkbox').attr('id', 'checkbox_replacement_' + checkboxId)\n\n\t\t\t$conflicts.append($conflict)\n\n\t\t\t// set more recent mtime bold\n\t\t\t// ie sucks\n\t\t\tif (replacement.lastModified > original.mtime) {\n\t\t\t\t$replacementDiv.find('.mtime').css('font-weight', 'bold')\n\t\t\t} else if (replacement.lastModified < original.mtime) {\n\t\t\t\t$originalDiv.find('.mtime').css('font-weight', 'bold')\n\t\t\t} else {\n\t\t\t\t// TODO add to same mtime collection?\n\t\t\t}\n\n\t\t\t// set bigger size bold\n\t\t\tif (replacement.size && replacement.size > original.size) {\n\t\t\t\t$replacementDiv.find('.size').css('font-weight', 'bold')\n\t\t\t} else if (replacement.size && replacement.size < original.size) {\n\t\t\t\t$originalDiv.find('.size').css('font-weight', 'bold')\n\t\t\t} else {\n\t\t\t\t// TODO add to same size collection?\n\t\t\t}\n\n\t\t\t// TODO show skip action for files with same size and mtime in bottom row\n\n\t\t\t// always keep readonly files\n\n\t\t\tif (original.status === 'readonly') {\n\t\t\t\t$originalDiv\n\t\t\t\t\t.addClass('readonly')\n\t\t\t\t\t.find('input[type=\"checkbox\"]')\n\t\t\t\t\t.prop('checked', true)\n\t\t\t\t\t.prop('disabled', true)\n\t\t\t\t$originalDiv.find('.message')\n\t\t\t\t\t.text(t('core', 'read-only'))\n\t\t\t}\n\t\t}\n\t\t// var selection = controller.getSelection(data.originalFiles);\n\t\t// if (selection.defaultAction) {\n\t\t//\tcontroller[selection.defaultAction](data);\n\t\t// } else {\n\t\tvar dialogName = 'oc-dialog-fileexists-content'\n\t\tvar dialogId = '#' + dialogName\n\t\tif (this._fileexistsshown) {\n\t\t\t// add conflict\n\n\t\t\tvar $conflicts = $(dialogId + ' .conflicts')\n\t\t\taddConflict($conflicts, original, replacement)\n\n\t\t\tvar count = $(dialogId + ' .conflict').length\n\t\t\tvar title = n('core',\n\t\t\t\t'{count} file conflict',\n\t\t\t\t'{count} file conflicts',\n\t\t\t\tcount,\n\t\t\t\t{ count: count }\n\t\t\t)\n\t\t\t$(dialogId).parent().children('.oc-dialog-title').text(title)\n\n\t\t\t// recalculate dimensions\n\t\t\t$(window).trigger('resize')\n\t\t\tdialogDeferred.resolve()\n\t\t} else {\n\t\t\t// create dialog\n\t\t\tthis._fileexistsshown = true\n\t\t\t$.when(this._getFileExistsTemplate()).then(function($tmpl) {\n\t\t\t\tvar title = t('core', 'One file conflict')\n\t\t\t\tvar $dlg = $tmpl.octemplate({\n\t\t\t\t\tdialog_name: dialogName,\n\t\t\t\t\ttitle: title,\n\t\t\t\t\ttype: 'fileexists',\n\n\t\t\t\t\tallnewfiles: t('core', 'New Files'),\n\t\t\t\t\tallexistingfiles: t('core', 'Already existing files'),\n\n\t\t\t\t\twhy: t('core', 'Which files do you want to keep?'),\n\t\t\t\t\twhat: t('core', 'If you select both versions, the copied file will have a number added to its name.')\n\t\t\t\t})\n\t\t\t\t$('body').append($dlg)\n\n\t\t\t\tif (original && replacement) {\n\t\t\t\t\tvar $conflicts = $dlg.find('.conflicts')\n\t\t\t\t\taddConflict($conflicts, original, replacement)\n\t\t\t\t}\n\n\t\t\t\tvar buttonlist = [{\n\t\t\t\t\ttext: t('core', 'Cancel'),\n\t\t\t\t\tclasses: 'cancel',\n\t\t\t\t\tclick: function() {\n\t\t\t\t\t\tif (typeof controller.onCancel !== 'undefined') {\n\t\t\t\t\t\t\tcontroller.onCancel(data)\n\t\t\t\t\t\t}\n\t\t\t\t\t\t$(dialogId).ocdialog('close')\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\ttext: t('core', 'Continue'),\n\t\t\t\t\tclasses: 'continue',\n\t\t\t\t\tclick: function() {\n\t\t\t\t\t\tif (typeof controller.onContinue !== 'undefined') {\n\t\t\t\t\t\t\tcontroller.onContinue($(dialogId + ' .conflict'))\n\t\t\t\t\t\t}\n\t\t\t\t\t\t$(dialogId).ocdialog('close')\n\t\t\t\t\t}\n\t\t\t\t}]\n\n\t\t\t\t$(dialogId).ocdialog({\n\t\t\t\t\twidth: 500,\n\t\t\t\t\tcloseOnEscape: true,\n\t\t\t\t\tmodal: true,\n\t\t\t\t\tbuttons: buttonlist,\n\t\t\t\t\tcloseButton: null,\n\t\t\t\t\tclose: function() {\n\t\t\t\t\t\tself._fileexistsshown = false\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t$(this).ocdialog('destroy').remove()\n\t\t\t\t\t\t} catch (e) {\n\t\t\t\t\t\t\t// ignore\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t})\n\n\t\t\t\t$(dialogId).css('height', 'auto')\n\n\t\t\t\tvar $primaryButton = $dlg.closest('.oc-dialog').find('button.continue')\n\t\t\t\t$primaryButton.prop('disabled', true)\n\n\t\t\t\tfunction updatePrimaryButton() {\n\t\t\t\t\tvar checkedCount = $dlg.find('.conflicts .checkbox:checked').length\n\t\t\t\t\t$primaryButton.prop('disabled', checkedCount === 0)\n\t\t\t\t}\n\n\t\t\t\t// add checkbox toggling actions\n\t\t\t\t$(dialogId).find('.allnewfiles').on('click', function() {\n\t\t\t\t\tvar $checkboxes = $(dialogId).find('.conflict .replacement input[type=\"checkbox\"]')\n\t\t\t\t\t$checkboxes.prop('checked', $(this).prop('checked'))\n\t\t\t\t})\n\t\t\t\t$(dialogId).find('.allexistingfiles').on('click', function() {\n\t\t\t\t\tvar $checkboxes = $(dialogId).find('.conflict .original:not(.readonly) input[type=\"checkbox\"]')\n\t\t\t\t\t$checkboxes.prop('checked', $(this).prop('checked'))\n\t\t\t\t})\n\t\t\t\t$(dialogId).find('.conflicts').on('click', '.replacement,.original:not(.readonly)', function() {\n\t\t\t\t\tvar $checkbox = $(this).find('input[type=\"checkbox\"]')\n\t\t\t\t\t$checkbox.prop('checked', !$checkbox.prop('checked'))\n\t\t\t\t})\n\t\t\t\t$(dialogId).find('.conflicts').on('click', '.replacement input[type=\"checkbox\"],.original:not(.readonly) input[type=\"checkbox\"]', function() {\n\t\t\t\t\tvar $checkbox = $(this)\n\t\t\t\t\t$checkbox.prop('checked', !$checkbox.prop('checked'))\n\t\t\t\t})\n\n\t\t\t\t// update counters\n\t\t\t\t$(dialogId).on('click', '.replacement,.allnewfiles', function() {\n\t\t\t\t\tvar count = $(dialogId).find('.conflict .replacement input[type=\"checkbox\"]:checked').length\n\t\t\t\t\tif (count === $(dialogId + ' .conflict').length) {\n\t\t\t\t\t\t$(dialogId).find('.allnewfiles').prop('checked', true)\n\t\t\t\t\t\t$(dialogId).find('.allnewfiles + .count').text(t('core', '(all selected)'))\n\t\t\t\t\t} else if (count > 0) {\n\t\t\t\t\t\t$(dialogId).find('.allnewfiles').prop('checked', false)\n\t\t\t\t\t\t$(dialogId).find('.allnewfiles + .count').text(t('core', '({count} selected)', { count: count }))\n\t\t\t\t\t} else {\n\t\t\t\t\t\t$(dialogId).find('.allnewfiles').prop('checked', false)\n\t\t\t\t\t\t$(dialogId).find('.allnewfiles + .count').text('')\n\t\t\t\t\t}\n\t\t\t\t\tupdatePrimaryButton()\n\t\t\t\t})\n\t\t\t\t$(dialogId).on('click', '.original,.allexistingfiles', function() {\n\t\t\t\t\tvar count = $(dialogId).find('.conflict .original input[type=\"checkbox\"]:checked').length\n\t\t\t\t\tif (count === $(dialogId + ' .conflict').length) {\n\t\t\t\t\t\t$(dialogId).find('.allexistingfiles').prop('checked', true)\n\t\t\t\t\t\t$(dialogId).find('.allexistingfiles + .count').text(t('core', '(all selected)'))\n\t\t\t\t\t} else if (count > 0) {\n\t\t\t\t\t\t$(dialogId).find('.allexistingfiles').prop('checked', false)\n\t\t\t\t\t\t$(dialogId).find('.allexistingfiles + .count')\n\t\t\t\t\t\t\t.text(t('core', '({count} selected)', { count: count }))\n\t\t\t\t\t} else {\n\t\t\t\t\t\t$(dialogId).find('.allexistingfiles').prop('checked', false)\n\t\t\t\t\t\t$(dialogId).find('.allexistingfiles + .count').text('')\n\t\t\t\t\t}\n\t\t\t\t\tupdatePrimaryButton()\n\t\t\t\t})\n\n\t\t\t\tdialogDeferred.resolve()\n\t\t\t})\n\t\t\t\t.fail(function() {\n\t\t\t\t\tdialogDeferred.reject()\n\t\t\t\t\talert(t('core', 'Error loading file exists template'))\n\t\t\t\t})\n\t\t}\n\t\t// }\n\t\treturn dialogDeferred.promise()\n\t},\n\n\t_getFileExistsTemplate: function() {\n\t\tvar defer = $.Deferred()\n\t\tif (!this.$fileexistsTemplate) {\n\t\t\tvar self = this\n\t\t\t$.get(OC.filePath('files', 'templates', 'fileexists.html'), function(tmpl) {\n\t\t\t\tself.$fileexistsTemplate = $(tmpl)\n\t\t\t\tdefer.resolve(self.$fileexistsTemplate)\n\t\t\t})\n\t\t\t\t.fail(function() {\n\t\t\t\t\tdefer.reject()\n\t\t\t\t})\n\t\t} else {\n\t\t\tdefer.resolve(this.$fileexistsTemplate)\n\t\t}\n\t\treturn defer.promise()\n\t},\n}\n\nexport default Dialogs\n","/**\n * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport { emit } from '@nextcloud/event-bus'\n\n/**\n * @private\n * @param {Document} global the document to read the initial value from\n * @param {Function} emit the function to invoke for every new token\n * @return {object}\n */\nexport const manageToken = (global, emit) => {\n\tlet token = global.getElementsByTagName('head')[0].getAttribute('data-requesttoken')\n\n\treturn {\n\t\tgetToken: () => token,\n\t\tsetToken: newToken => {\n\t\t\ttoken = newToken\n\n\t\t\temit('csrf-token-update', {\n\t\t\t\ttoken,\n\t\t\t})\n\t\t},\n\t}\n}\n\nconst manageFromDocument = manageToken(document, emit)\n\n/**\n * @return {string}\n */\nexport const getToken = manageFromDocument.getToken\n\n/**\n * @param {string} newToken new token\n */\nexport const setToken = manageFromDocument.setToken\n","/**\n * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\n * SPDX-FileCopyrightText: 2015 ownCloud, Inc.\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\n/* eslint-disable */\nimport $ from 'jquery'\n\nimport { getToken } from './requesttoken.js'\n\n/**\n * Create a new event source\n * @param {string} src\n * @param {object} [data] to be send as GET\n *\n * @constructs OCEventSource\n */\nconst OCEventSource = function(src, data) {\n\tvar dataStr = ''\n\tvar name\n\tvar joinChar\n\tthis.typelessListeners = []\n\tthis.closed = false\n\tthis.listeners = {}\n\tif (data) {\n\t\tfor (name in data) {\n\t\t\tdataStr += name + '=' + encodeURIComponent(data[name]) + '&'\n\t\t}\n\t}\n\tdataStr += 'requesttoken=' + encodeURIComponent(getToken())\n\tif (!this.useFallBack && typeof EventSource !== 'undefined') {\n\t\tjoinChar = '&'\n\t\tif (src.indexOf('?') === -1) {\n\t\t\tjoinChar = '?'\n\t\t}\n\t\tthis.source = new EventSource(src + joinChar + dataStr)\n\t\tthis.source.onmessage = function(e) {\n\t\t\tfor (var i = 0; i < this.typelessListeners.length; i++) {\n\t\t\t\tthis.typelessListeners[i](JSON.parse(e.data))\n\t\t\t}\n\t\t}.bind(this)\n\t} else {\n\t\tvar iframeId = 'oc_eventsource_iframe_' + OCEventSource.iframeCount\n\t\tOCEventSource.fallBackSources[OCEventSource.iframeCount] = this\n\t\tthis.iframe = $('<iframe></iframe>')\n\t\tthis.iframe.attr('id', iframeId)\n\t\tthis.iframe.hide()\n\n\t\tjoinChar = '&'\n\t\tif (src.indexOf('?') === -1) {\n\t\t\tjoinChar = '?'\n\t\t}\n\t\tthis.iframe.attr('src', src + joinChar + 'fallback=true&fallback_id=' + OCEventSource.iframeCount + '&' + dataStr)\n\t\t$('body').append(this.iframe)\n\t\tthis.useFallBack = true\n\t\tOCEventSource.iframeCount++\n\t}\n\t// add close listener\n\tthis.listen('__internal__', function(data) {\n\t\tif (data === 'close') {\n\t\t\tthis.close()\n\t\t}\n\t}.bind(this))\n}\nOCEventSource.fallBackSources = []\nOCEventSource.iframeCount = 0// number of fallback iframes\nOCEventSource.fallBackCallBack = function(id, type, data) {\n\tOCEventSource.fallBackSources[id].fallBackCallBack(type, data)\n}\nOCEventSource.prototype = {\n\ttypelessListeners: [],\n\tiframe: null,\n\tlisteners: {}, // only for fallback\n\tuseFallBack: false,\n\t/**\n\t * Fallback callback for browsers that don't have the\n\t * native EventSource object.\n\t *\n\t * Calls the registered listeners.\n\t *\n\t * @private\n\t * @param {String} type event type\n\t * @param {Object} data received data\n\t */\n\tfallBackCallBack: function(type, data) {\n\t\tvar i\n\t\t// ignore messages that might appear after closing\n\t\tif (this.closed) {\n\t\t\treturn\n\t\t}\n\t\tif (type) {\n\t\t\tif (typeof this.listeners.done !== 'undefined') {\n\t\t\t\tfor (i = 0; i < this.listeners[type].length; i++) {\n\t\t\t\t\tthis.listeners[type][i](data)\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tfor (i = 0; i < this.typelessListeners.length; i++) {\n\t\t\t\tthis.typelessListeners[i](data)\n\t\t\t}\n\t\t}\n\t},\n\tlastLength: 0, // for fallback\n\t/**\n\t * Listen to a given type of events.\n\t *\n\t * @param {String} type event type\n\t * @param {Function} callback event callback\n\t */\n\tlisten: function(type, callback) {\n\t\tif (callback && callback.call) {\n\n\t\t\tif (type) {\n\t\t\t\tif (this.useFallBack) {\n\t\t\t\t\tif (!this.listeners[type]) {\n\t\t\t\t\t\tthis.listeners[type] = []\n\t\t\t\t\t}\n\t\t\t\t\tthis.listeners[type].push(callback)\n\t\t\t\t} else {\n\t\t\t\t\tthis.source.addEventListener(type, function(e) {\n\t\t\t\t\t\tif (typeof e.data !== 'undefined') {\n\t\t\t\t\t\t\tcallback(JSON.parse(e.data))\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tcallback('')\n\t\t\t\t\t\t}\n\t\t\t\t\t}, false)\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tthis.typelessListeners.push(callback)\n\t\t\t}\n\t\t}\n\t},\n\t/**\n\t * Closes this event source.\n\t */\n\tclose: function() {\n\t\tthis.closed = true\n\t\tif (typeof this.source !== 'undefined') {\n\t\t\tthis.source.close()\n\t\t}\n\t}\n}\n\nexport default OCEventSource\n","/**\n * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport _ from 'underscore'\n/** @typedef {import('jquery')} jQuery */\nimport $ from 'jquery'\n\nimport { menuSpeed } from './constants.js'\n\nexport let currentMenu = null\nexport let currentMenuToggle = null\n\n/**\n * For menu toggling\n *\n * @param {jQuery} $toggle the toggle element\n * @param {jQuery} $menuEl the menu container element\n * @param {Function | undefined} toggle callback invoked everytime the menu is opened\n * @param {boolean} headerMenu is this a top right header menu?\n * @return {void}\n */\nexport const registerMenu = function($toggle, $menuEl, toggle, headerMenu) {\n\t$menuEl.addClass('menu')\n\tconst isClickableElement = $toggle.prop('tagName') === 'A' || $toggle.prop('tagName') === 'BUTTON'\n\n\t// On link and button, the enter key trigger a click event\n\t// Only use the click to avoid two fired events\n\t$toggle.on(isClickableElement ? 'click.menu' : 'click.menu keyup.menu', function(event) {\n\t\t// prevent the link event (append anchor to URL)\n\t\tevent.preventDefault()\n\n\t\t// allow enter key as a trigger\n\t\tif (event.key && event.key !== 'Enter') {\n\t\t\treturn\n\t\t}\n\n\t\tif ($menuEl.is(currentMenu)) {\n\t\t\thideMenus()\n\t\t\treturn\n\t\t} else if (currentMenu) {\n\t\t\t// another menu was open?\n\t\t\t// close it\n\t\t\thideMenus()\n\t\t}\n\n\t\tif (headerMenu === true) {\n\t\t\t$menuEl.parent().addClass('openedMenu')\n\t\t}\n\n\t\t// Set menu to expanded\n\t\t$toggle.attr('aria-expanded', true)\n\n\t\t$menuEl.slideToggle(menuSpeed, toggle)\n\t\tcurrentMenu = $menuEl\n\t\tcurrentMenuToggle = $toggle\n\t})\n}\n\n/**\n * Unregister a previously registered menu\n *\n * @param {jQuery} $toggle the toggle element\n * @param {jQuery} $menuEl the menu container element\n */\nexport const unregisterMenu = ($toggle, $menuEl) => {\n\t// close menu if opened\n\tif ($menuEl.is(currentMenu)) {\n\t\thideMenus()\n\t}\n\t$toggle.off('click.menu').removeClass('menutoggle')\n\t$menuEl.removeClass('menu')\n}\n\n/**\n * Hides any open menus\n *\n * @param {Function} complete callback when the hiding animation is done\n */\nexport const hideMenus = function(complete) {\n\tif (currentMenu) {\n\t\tconst lastMenu = currentMenu\n\t\tcurrentMenu.trigger(new $.Event('beforeHide'))\n\t\tcurrentMenu.slideUp(menuSpeed, function() {\n\t\t\tlastMenu.trigger(new $.Event('afterHide'))\n\t\t\tif (complete) {\n\t\t\t\tcomplete.apply(this, arguments)\n\t\t\t}\n\t\t})\n\t}\n\n\t// Set menu to closed\n\t$('.menutoggle').attr('aria-expanded', false)\n\tif (currentMenuToggle) {\n\t\tcurrentMenuToggle.attr('aria-expanded', false)\n\t}\n\n\t$('.openedMenu').removeClass('openedMenu')\n\tcurrentMenu = null\n\tcurrentMenuToggle = null\n}\n\n/**\n * Shows a given element as menu\n *\n * @param {object} [$toggle=null] menu toggle\n * @param {object} $menuEl menu element\n * @param {Function} complete callback when the showing animation is done\n */\nexport const showMenu = ($toggle, $menuEl, complete) => {\n\tif ($menuEl.is(currentMenu)) {\n\t\treturn\n\t}\n\thideMenus()\n\tcurrentMenu = $menuEl\n\tcurrentMenuToggle = $toggle\n\t$menuEl.trigger(new $.Event('beforeShow'))\n\t$menuEl.show()\n\t$menuEl.trigger(new $.Event('afterShow'))\n\t// no animation\n\tif (_.isFunction(complete)) {\n\t\tcomplete()\n\t}\n}\n","/**\n * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nexport const coreApps = ['', 'admin', 'log', 'core/search', 'core', '3rdparty']\nexport const menuSpeed = 50\nexport const PERMISSION_NONE = 0\nexport const PERMISSION_CREATE = 4\nexport const PERMISSION_READ = 1\nexport const PERMISSION_UPDATE = 2\nexport const PERMISSION_DELETE = 8\nexport const PERMISSION_SHARE = 16\nexport const PERMISSION_ALL = 31\nexport const TAG_FAVORITE = '_$!<Favorite>!$_'\n","/**\n * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nconst isAdmin = !!window._oc_isadmin\n\n/**\n * Returns whether the current user is an administrator\n *\n * @return {boolean} true if the user is an admin, false otherwise\n * @since 9.0.0\n */\nexport const isUserAdmin = () => isAdmin\n","/**\n * SPDX-FileCopyrightText: 2017 Nextcloud GmbH and Nextcloud contributors\n * SPDX-FileCopyrightText: 2014 ownCloud, Inc.\n * SPDX-FileCopyrightText: 2005-2010 Zend Technologies USA Inc. (http://www.zend.com)\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport Handlebars from 'handlebars'\nimport {\n\tloadTranslations,\n\ttranslate,\n\ttranslatePlural,\n\tregister,\n\tunregister,\n} from '@nextcloud/l10n'\n\n/**\n * L10N namespace with localization functions.\n *\n * @namespace OC.L10n\n * @deprecated 26.0.0 use https://www.npmjs.com/package/@nextcloud/l10n\n */\nconst L10n = {\n\n\t/**\n\t * Load an app's translation bundle if not loaded already.\n\t *\n\t * @deprecated 26.0.0 use `loadTranslations` from https://www.npmjs.com/package/@nextcloud/l10n\n\t *\n\t * @param {string} appName name of the app\n\t * @param {Function} callback callback to be called when\n\t * the translations are loaded\n\t * @return {Promise} promise\n\t */\n\tload: loadTranslations,\n\n\t/**\n\t * Register an app's translation bundle.\n\t *\n\t * @deprecated 26.0.0 use `register` from https://www.npmjs.com/package/@nextcloud/l10\n\t *\n\t * @param {string} appName name of the app\n\t * @param {Object<string, string>} bundle bundle\n\t */\n\tregister,\n\n\t/**\n\t * @private\n\t * @deprecated 26.0.0 use `unregister` from https://www.npmjs.com/package/@nextcloud/l10n\n\t */\n\t_unregister: unregister,\n\n\t/**\n\t * Translate a string\n\t *\n\t * @deprecated 26.0.0 use `translate` from https://www.npmjs.com/package/@nextcloud/l10n\n\t *\n\t * @param {string} app the id of the app for which to translate the string\n\t * @param {string} text the string to translate\n\t * @param {object} [vars] map of placeholder key to value\n\t * @param {number} [count] number to replace %n with\n\t * @param {Array} [options] options array\n\t * @param {boolean} [options.escape=true] enable/disable auto escape of placeholders (by default enabled)\n\t * @param {boolean} [options.sanitize=true] enable/disable sanitization (by default enabled)\n\t * @return {string}\n\t */\n\ttranslate,\n\n\t/**\n\t * Translate a plural string\n\t *\n\t * @deprecated 26.0.0 use `translatePlural` from https://www.npmjs.com/package/@nextcloud/l10n\n\t *\n\t * @param {string} app the id of the app for which to translate the string\n\t * @param {string} textSingular the string to translate for exactly one object\n\t * @param {string} textPlural the string to translate for n objects\n\t * @param {number} count number to determine whether to use singular or plural\n\t * @param {object} [vars] map of placeholder key to value\n\t * @param {Array} [options] options array\n\t * @param {boolean} [options.escape=true] enable/disable auto escape of placeholders (by default enabled)\n\t * @return {string} Translated string\n\t */\n\ttranslatePlural,\n}\n\nexport default L10n\n\nHandlebars.registerHelper('t', function(app, text) {\n\treturn translate(app, text)\n})\n","/**\n * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport {\n\tgetRootUrl as realGetRootUrl,\n} from '@nextcloud/router'\n\n/**\n * Creates a relative url for remote use\n *\n * @param {string} service id\n * @return {string} the url\n */\nexport const linkToRemoteBase = service => {\n\treturn realGetRootUrl() + '/remote.php/' + service\n}\n","/**\n * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport $ from 'jquery'\n\n/**\n * A little class to manage a status field for a \"saving\" process.\n * It can be used to display a starting message (e.g. \"Saving...\") and then\n * replace it with a green success message or a red error message.\n *\n * @namespace OC.msg\n */\nexport default {\n\t/**\n\t * Displayes a \"Saving...\" message in the given message placeholder\n\t *\n\t * @param {object} selector Placeholder to display the message in\n\t */\n\tstartSaving(selector) {\n\t\tthis.startAction(selector, t('core', 'Saving …'))\n\t},\n\n\t/**\n\t * Displayes a custom message in the given message placeholder\n\t *\n\t * @param {object} selector Placeholder to display the message in\n\t * @param {string} message Plain text message to display (no HTML allowed)\n\t */\n\tstartAction(selector, message) {\n\t\t$(selector).text(message)\n\t\t\t.removeClass('success')\n\t\t\t.removeClass('error')\n\t\t\t.stop(true, true)\n\t\t\t.show()\n\t},\n\n\t/**\n\t * Displayes an success/error message in the given selector\n\t *\n\t * @param {object} selector Placeholder to display the message in\n\t * @param {object} response Response of the server\n\t * @param {object} response.data Data of the servers response\n\t * @param {string} response.data.message Plain text message to display (no HTML allowed)\n\t * @param {string} response.status is being used to decide whether the message\n\t * is displayed as an error/success\n\t */\n\tfinishedSaving(selector, response) {\n\t\tthis.finishedAction(selector, response)\n\t},\n\n\t/**\n\t * Displayes an success/error message in the given selector\n\t *\n\t * @param {object} selector Placeholder to display the message in\n\t * @param {object} response Response of the server\n\t * @param {object} response.data Data of the servers response\n\t * @param {string} response.data.message Plain text message to display (no HTML allowed)\n\t * @param {string} response.status is being used to decide whether the message\n\t * is displayed as an error/success\n\t */\n\tfinishedAction(selector, response) {\n\t\tif (response.status === 'success') {\n\t\t\tthis.finishedSuccess(selector, response.data.message)\n\t\t} else {\n\t\t\tthis.finishedError(selector, response.data.message)\n\t\t}\n\t},\n\n\t/**\n\t * Displayes an success message in the given selector\n\t *\n\t * @param {object} selector Placeholder to display the message in\n\t * @param {string} message Plain text success message to display (no HTML allowed)\n\t */\n\tfinishedSuccess(selector, message) {\n\t\t$(selector).text(message)\n\t\t\t.addClass('success')\n\t\t\t.removeClass('error')\n\t\t\t.stop(true, true)\n\t\t\t.delay(3000)\n\t\t\t.fadeOut(900)\n\t\t\t.show()\n\t},\n\n\t/**\n\t * Displayes an error message in the given selector\n\t *\n\t * @param {object} selector Placeholder to display the message in\n\t * @param {string} message Plain text error message to display (no HTML allowed)\n\t */\n\tfinishedError(selector, message) {\n\t\t$(selector).text(message)\n\t\t\t.addClass('error')\n\t\t\t.removeClass('success')\n\t\t\t.show()\n\t},\n}\n","/**\n * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport { confirmPassword, isPasswordConfirmationRequired } from '@nextcloud/password-confirmation'\nimport '@nextcloud/password-confirmation/dist/style.css'\n\n/**\n * @namespace OC.PasswordConfirmation\n */\nexport default {\n\n\trequiresPasswordConfirmation() {\n\t\treturn isPasswordConfirmationRequired()\n\t},\n\n\t/**\n\t * @param {Function} callback success callback function\n\t * @param {object} options options currently not used by confirmPassword\n\t * @param {Function} rejectCallback error callback function\n\t */\n\trequirePasswordConfirmation(callback, options, rejectCallback) {\n\t\tconfirmPassword().then(callback, rejectCallback)\n\t},\n}\n","/**\n * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nexport default {\n\n\t/**\n\t * @type {Array.<OC.Plugin>}\n\t */\n\t_plugins: {},\n\n\t/**\n\t * Register plugin\n\t *\n\t * @param {string} targetName app name / class name to hook into\n\t * @param {OC.Plugin} plugin plugin\n\t */\n\tregister(targetName, plugin) {\n\t\tlet plugins = this._plugins[targetName]\n\t\tif (!plugins) {\n\t\t\tplugins = this._plugins[targetName] = []\n\t\t}\n\t\tplugins.push(plugin)\n\t},\n\n\t/**\n\t * Returns all plugin registered to the given target\n\t * name / app name / class name.\n\t *\n\t * @param {string} targetName app name / class name to hook into\n\t * @return {Array.<OC.Plugin>} array of plugins\n\t */\n\tgetPlugins(targetName) {\n\t\treturn this._plugins[targetName] || []\n\t},\n\n\t/**\n\t * Call attach() on all plugins registered to the given target name.\n\t *\n\t * @param {string} targetName app name / class name\n\t * @param {object} targetObject to be extended\n\t * @param {object} [options] options\n\t */\n\tattach(targetName, targetObject, options) {\n\t\tconst plugins = this.getPlugins(targetName)\n\t\tfor (let i = 0; i < plugins.length; i++) {\n\t\t\tif (plugins[i].attach) {\n\t\t\t\tplugins[i].attach(targetObject, options)\n\t\t\t}\n\t\t}\n\t},\n\n\t/**\n\t * Call detach() on all plugins registered to the given target name.\n\t *\n\t * @param {string} targetName app name / class name\n\t * @param {object} targetObject to be extended\n\t * @param {object} [options] options\n\t */\n\tdetach(targetName, targetObject, options) {\n\t\tconst plugins = this.getPlugins(targetName)\n\t\tfor (let i = 0; i < plugins.length; i++) {\n\t\t\tif (plugins[i].detach) {\n\t\t\t\tplugins[i].detach(targetObject, options)\n\t\t\t}\n\t\t}\n\t},\n\n}\n","/**\n * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nexport const theme = window._theme || {}\n","/**\n * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport _ from 'underscore'\nimport OC from './index.js'\n\n/**\n * Utility class for the history API,\n * includes fallback to using the URL hash when\n * the browser doesn't support the history API.\n *\n * @namespace OC.Util.History\n */\nexport default {\n\n\t_handlers: [],\n\n\t/**\n\t * Push the current URL parameters to the history stack\n\t * and change the visible URL.\n\t * Note: this includes a workaround for IE8/IE9 that uses\n\t * the hash part instead of the search part.\n\t *\n\t * @param {object | string} params to append to the URL, can be either a string\n\t * or a map\n\t * @param {string} [url] URL to be used, otherwise the current URL will be used,\n\t * using the params as query string\n\t * @param {boolean} [replace=false] whether to replace instead of pushing\n\t */\n\t_pushState(params, url, replace) {\n\t\tlet strParams\n\t\tif (typeof (params) === 'string') {\n\t\t\tstrParams = params\n\t\t} else {\n\t\t\tstrParams = OC.buildQueryString(params)\n\t\t}\n\n\t\tif (window.history.pushState) {\n\t\t\turl = url || location.pathname + '?' + strParams\n\t\t\t// Workaround for bug with SVG and window.history.pushState on Firefox < 51\n\t\t\t// https://bugzilla.mozilla.org/show_bug.cgi?id=652991\n\t\t\tconst isFirefox = navigator.userAgent.toLowerCase().indexOf('firefox') > -1\n\t\t\tif (isFirefox && parseInt(navigator.userAgent.split('/').pop()) < 51) {\n\t\t\t\tconst patterns = document.querySelectorAll('[fill^=\"url(#\"], [stroke^=\"url(#\"], [filter^=\"url(#invert\"]')\n\t\t\t\tfor (let i = 0, ii = patterns.length, pattern; i < ii; i++) {\n\t\t\t\t\tpattern = patterns[i]\n\t\t\t\t\t// eslint-disable-next-line no-self-assign\n\t\t\t\t\tpattern.style.fill = pattern.style.fill\n\t\t\t\t\t// eslint-disable-next-line no-self-assign\n\t\t\t\t\tpattern.style.stroke = pattern.style.stroke\n\t\t\t\t\tpattern.removeAttribute('filter')\n\t\t\t\t\tpattern.setAttribute('filter', 'url(#invert)')\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (replace) {\n\t\t\t\twindow.history.replaceState(params, '', url)\n\t\t\t} else {\n\t\t\t\twindow.history.pushState(params, '', url)\n\t\t\t}\n\t\t} else {\n\t\t\t// use URL hash for IE8\n\t\t\twindow.location.hash = '?' + strParams\n\t\t\t// inhibit next onhashchange that just added itself\n\t\t\t// to the event queue\n\t\t\tthis._cancelPop = true\n\t\t}\n\t},\n\n\t/**\n\t * Push the current URL parameters to the history stack\n\t * and change the visible URL.\n\t * Note: this includes a workaround for IE8/IE9 that uses\n\t * the hash part instead of the search part.\n\t *\n\t * @param {object | string} params to append to the URL, can be either a string or a map\n\t * @param {string} [url] URL to be used, otherwise the current URL will be used, using the params as query string\n\t */\n\tpushState(params, url) {\n\t\tthis._pushState(params, url, false)\n\t},\n\n\t/**\n\t * Push the current URL parameters to the history stack\n\t * and change the visible URL.\n\t * Note: this includes a workaround for IE8/IE9 that uses\n\t * the hash part instead of the search part.\n\t *\n\t * @param {object | string} params to append to the URL, can be either a string\n\t * or a map\n\t * @param {string} [url] URL to be used, otherwise the current URL will be used,\n\t * using the params as query string\n\t */\n\treplaceState(params, url) {\n\t\tthis._pushState(params, url, true)\n\t},\n\n\t/**\n\t * Add a popstate handler\n\t *\n\t * @param {Function} handler handler\n\t */\n\taddOnPopStateHandler(handler) {\n\t\tthis._handlers.push(handler)\n\t},\n\n\t/**\n\t * Parse a query string from the hash part of the URL.\n\t * (workaround for IE8 / IE9)\n\t *\n\t * @return {string}\n\t */\n\t_parseHashQuery() {\n\t\tconst hash = window.location.hash\n\t\tconst pos = hash.indexOf('?')\n\t\tif (pos >= 0) {\n\t\t\treturn hash.substr(pos + 1)\n\t\t}\n\t\tif (hash.length) {\n\t\t\t// remove hash sign\n\t\t\treturn hash.substr(1)\n\t\t}\n\t\treturn ''\n\t},\n\n\t_decodeQuery(query) {\n\t\treturn query.replace(/\\+/g, ' ')\n\t},\n\n\t/**\n\t * Parse the query/search part of the URL.\n\t * Also try and parse it from the URL hash (for IE8)\n\t *\n\t * @return {object} map of parameters\n\t */\n\tparseUrlQuery() {\n\t\tconst query = this._parseHashQuery()\n\t\tlet params\n\t\t// try and parse from URL hash first\n\t\tif (query) {\n\t\t\tparams = OC.parseQueryString(this._decodeQuery(query))\n\t\t}\n\t\t// else read from query attributes\n\t\tparams = _.extend(params || {}, OC.parseQueryString(this._decodeQuery(location.search)))\n\t\treturn params || {}\n\t},\n\n\t_onPopState(e) {\n\t\tif (this._cancelPop) {\n\t\t\tthis._cancelPop = false\n\t\t\treturn\n\t\t}\n\t\tlet params\n\t\tif (!this._handlers.length) {\n\t\t\treturn\n\t\t}\n\t\tparams = (e && e.state)\n\t\tif (_.isString(params)) {\n\t\t\tparams = OC.parseQueryString(params)\n\t\t} else if (!params) {\n\t\t\tparams = this.parseUrlQuery() || {}\n\t\t}\n\t\tfor (let i = 0; i < this._handlers.length; i++) {\n\t\t\tthis._handlers[i](params)\n\t\t}\n\t},\n}\n","/**\n * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport moment from 'moment'\n\nimport History from './util-history.js'\nimport OC from './index.js'\nimport { formatFileSize as humanFileSize } from '@nextcloud/files'\n\n/**\n * @param {any} t -\n */\nfunction chunkify(t) {\n\t// Adapted from http://my.opera.com/GreyWyvern/blog/show.dml/1671288\n\tconst tz = []\n\tlet x = 0\n\tlet y = -1\n\tlet n = 0\n\tlet c\n\n\twhile (x < t.length) {\n\t\tc = t.charAt(x)\n\t\t// only include the dot in strings\n\t\tconst m = ((!n && c === '.') || (c >= '0' && c <= '9'))\n\t\tif (m !== n) {\n\t\t\t// next chunk\n\t\t\ty++\n\t\t\ttz[y] = ''\n\t\t\tn = m\n\t\t}\n\t\ttz[y] += c\n\t\tx++\n\t}\n\treturn tz\n}\n\n/**\n * Utility functions\n *\n * @namespace OC.Util\n */\nexport default {\n\n\tHistory,\n\n\t/**\n\t * @deprecated use https://nextcloud.github.io/nextcloud-files/functions/formatFileSize.html\n\t */\n\thumanFileSize,\n\n\t/**\n\t * Returns a file size in bytes from a humanly readable string\n\t * Makes 2kB to 2048.\n\t * Inspired by computerFileSize in helper.php\n\t *\n\t * @param {string} string file size in human-readable format\n\t * @return {number} or null if string could not be parsed\n\t *\n\t *\n\t */\n\tcomputerFileSize(string) {\n\t\tif (typeof string !== 'string') {\n\t\t\treturn null\n\t\t}\n\n\t\tconst s = string.toLowerCase().trim()\n\t\tlet bytes = null\n\n\t\tconst bytesArray = {\n\t\t\tb: 1,\n\t\t\tk: 1024,\n\t\t\tkb: 1024,\n\t\t\tmb: 1024 * 1024,\n\t\t\tm: 1024 * 1024,\n\t\t\tgb: 1024 * 1024 * 1024,\n\t\t\tg: 1024 * 1024 * 1024,\n\t\t\ttb: 1024 * 1024 * 1024 * 1024,\n\t\t\tt: 1024 * 1024 * 1024 * 1024,\n\t\t\tpb: 1024 * 1024 * 1024 * 1024 * 1024,\n\t\t\tp: 1024 * 1024 * 1024 * 1024 * 1024,\n\t\t}\n\n\t\tconst matches = s.match(/^[\\s+]?([0-9]*)(\\.([0-9]+))?( +)?([kmgtp]?b?)$/i)\n\t\tif (matches !== null) {\n\t\t\tbytes = parseFloat(s)\n\t\t\tif (!isFinite(bytes)) {\n\t\t\t\treturn null\n\t\t\t}\n\t\t} else {\n\t\t\treturn null\n\t\t}\n\t\tif (matches[5]) {\n\t\t\tbytes = bytes * bytesArray[matches[5]]\n\t\t}\n\n\t\tbytes = Math.round(bytes)\n\t\treturn bytes\n\t},\n\n\t/**\n\t * @param {string|number} timestamp timestamp\n\t * @param {string} format date format, see momentjs docs\n\t * @return {string} timestamp formatted as requested\n\t */\n\tformatDate(timestamp, format) {\n\t\tif (window.TESTING === undefined) {\n\t\t\tOC.debug && console.warn('OC.Util.formatDate is deprecated and will be removed in Nextcloud 21. See @nextcloud/moment')\n\t\t}\n\t\tformat = format || 'LLL'\n\t\treturn moment(timestamp).format(format)\n\t},\n\n\t/**\n\t * @param {string|number} timestamp timestamp\n\t * @return {string} human readable difference from now\n\t */\n\trelativeModifiedDate(timestamp) {\n\t\tif (window.TESTING === undefined) {\n\t\t\tOC.debug && console.warn('OC.Util.relativeModifiedDate is deprecated and will be removed in Nextcloud 21. See @nextcloud/moment')\n\t\t}\n\t\tconst diff = moment().diff(moment(timestamp))\n\t\tif (diff >= 0 && diff < 45000) {\n\t\t\treturn t('core', 'seconds ago')\n\t\t}\n\t\treturn moment(timestamp).fromNow()\n\t},\n\n\t/**\n\t * Returns the width of a generic browser scrollbar\n\t *\n\t * @return {number} width of scrollbar\n\t */\n\tgetScrollBarWidth() {\n\t\tif (this._scrollBarWidth) {\n\t\t\treturn this._scrollBarWidth\n\t\t}\n\n\t\tconst inner = document.createElement('p')\n\t\tinner.style.width = '100%'\n\t\tinner.style.height = '200px'\n\n\t\tconst outer = document.createElement('div')\n\t\touter.style.position = 'absolute'\n\t\touter.style.top = '0px'\n\t\touter.style.left = '0px'\n\t\touter.style.visibility = 'hidden'\n\t\touter.style.width = '200px'\n\t\touter.style.height = '150px'\n\t\touter.style.overflow = 'hidden'\n\t\touter.appendChild(inner)\n\n\t\tdocument.body.appendChild(outer)\n\t\tconst w1 = inner.offsetWidth\n\t\touter.style.overflow = 'scroll'\n\t\tlet w2 = inner.offsetWidth\n\t\tif (w1 === w2) {\n\t\t\tw2 = outer.clientWidth\n\t\t}\n\n\t\tdocument.body.removeChild(outer)\n\n\t\tthis._scrollBarWidth = (w1 - w2)\n\n\t\treturn this._scrollBarWidth\n\t},\n\n\t/**\n\t * Remove the time component from a given date\n\t *\n\t * @param {Date} date date\n\t * @return {Date} date with stripped time\n\t */\n\tstripTime(date) {\n\t\t// FIXME: likely to break when crossing DST\n\t\t// would be better to use a library like momentJS\n\t\treturn new Date(date.getFullYear(), date.getMonth(), date.getDate())\n\t},\n\n\t/**\n\t * Compare two strings to provide a natural sort\n\t *\n\t * @param {string} a first string to compare\n\t * @param {string} b second string to compare\n\t * @return {number} -1 if b comes before a, 1 if a comes before b\n\t * or 0 if the strings are identical\n\t */\n\tnaturalSortCompare(a, b) {\n\t\tlet x\n\t\tconst aa = chunkify(a)\n\t\tconst bb = chunkify(b)\n\n\t\tfor (x = 0; aa[x] && bb[x]; x++) {\n\t\t\tif (aa[x] !== bb[x]) {\n\t\t\t\tconst aNum = Number(aa[x]); const bNum = Number(bb[x])\n\t\t\t\t// note: == is correct here\n\t\t\t\t/* eslint-disable-next-line */\n\t\t\t\tif (aNum == aa[x] && bNum == bb[x]) {\n\t\t\t\t\treturn aNum - bNum\n\t\t\t\t} else {\n\t\t\t\t\t// Note: This locale setting isn't supported by all browsers but for the ones\n\t\t\t\t\t// that do there will be more consistency between client-server sorting\n\t\t\t\t\treturn aa[x].localeCompare(bb[x], OC.getLanguage())\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn aa.length - bb.length\n\t},\n\n\t/**\n\t * Calls the callback in a given interval until it returns true\n\t *\n\t * @param {Function} callback function to call on success\n\t * @param {number} interval in milliseconds\n\t */\n\twaitFor(callback, interval) {\n\t\tconst internalCallback = function() {\n\t\t\tif (callback() !== true) {\n\t\t\t\tsetTimeout(internalCallback, interval)\n\t\t\t}\n\t\t}\n\n\t\tinternalCallback()\n\t},\n\n\t/**\n\t * Checks if a cookie with the given name is present and is set to the provided value.\n\t *\n\t * @param {string} name name of the cookie\n\t * @param {string} value value of the cookie\n\t * @return {boolean} true if the cookie with the given name has the given value\n\t */\n\tisCookieSetToValue(name, value) {\n\t\tconst cookies = document.cookie.split(';')\n\t\tfor (let i = 0; i < cookies.length; i++) {\n\t\t\tconst cookie = cookies[i].split('=')\n\t\t\tif (cookie[0].trim() === name && cookie[1].trim() === value) {\n\t\t\t\treturn true\n\t\t\t}\n\t\t}\n\t\treturn false\n\t},\n}\n","/**\n * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nconst base = window._oc_debug\n\nexport const debug = base\n","/**\n * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nlet webroot = window._oc_webroot\n\nif (typeof webroot === 'undefined') {\n\twebroot = location.pathname\n\tconst pos = webroot.indexOf('/index.php/')\n\tif (pos !== -1) {\n\t\twebroot = webroot.substr(0, pos)\n\t} else {\n\t\twebroot = webroot.substr(0, webroot.lastIndexOf('/'))\n\t}\n}\n\nexport default webroot\n","/**\n * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport { subscribe } from '@nextcloud/event-bus'\n\nimport {\n\tajaxConnectionLostHandler,\n\tprocessAjaxError,\n\tregisterXHRForErrorProcessing,\n} from './xhr-error.js'\nimport Apps from './apps.js'\nimport { AppConfig, appConfig } from './appconfig.js'\nimport appswebroots from './appswebroots.js'\nimport Backbone from './backbone.js'\nimport {\n\tbasename,\n\tdirname,\n\tencodePath,\n\tisSamePath,\n\tjoinPaths,\n} from '@nextcloud/paths'\nimport {\n\tbuild as buildQueryString,\n\tparse as parseQueryString,\n} from './query-string.js'\nimport Config from './config.js'\nimport {\n\tcoreApps,\n\tmenuSpeed,\n\tPERMISSION_ALL,\n\tPERMISSION_CREATE,\n\tPERMISSION_DELETE,\n\tPERMISSION_NONE,\n\tPERMISSION_READ,\n\tPERMISSION_SHARE,\n\tPERMISSION_UPDATE,\n\tTAG_FAVORITE,\n} from './constants.js'\nimport { currentUser, getCurrentUser } from './currentuser.js'\nimport Dialogs from './dialogs.js'\nimport EventSource from './eventsource.js'\nimport { get, set } from './get_set.js'\nimport { getCapabilities } from './capabilities.js'\nimport {\n\tgetHost,\n\tgetHostName,\n\tgetPort,\n\tgetProtocol,\n} from './host.js'\nimport {\n\tgetToken as getRequestToken,\n} from './requesttoken.js'\nimport {\n\thideMenus,\n\tregisterMenu,\n\tshowMenu,\n\tunregisterMenu,\n} from './menu.js'\nimport { isUserAdmin } from './admin.js'\nimport L10N from './l10n.js'\nimport {\n\tgetCanonicalLocale,\n\tgetLanguage,\n\tgetLocale,\n} from '@nextcloud/l10n'\n\nimport {\n\tgenerateUrl,\n\tgenerateFilePath,\n\tgenerateOcsUrl,\n\tgenerateRemoteUrl,\n\tgetRootUrl,\n\timagePath,\n\tlinkTo,\n} from '@nextcloud/router'\n\nimport {\n\tlinkToRemoteBase,\n} from './routing.js'\nimport msg from './msg.js'\nimport Notification from './notification.js'\nimport PasswordConfirmation from './password-confirmation.js'\nimport Plugins from './plugins.js'\nimport { theme } from './theme.js'\nimport Util from './util.js'\nimport { debug } from './debug.js'\nimport { redirect, reload } from './navigation.js'\nimport webroot from './webroot.js'\n\n/** @namespace OC */\nexport default {\n\t/*\n\t * Constants\n\t */\n\tcoreApps,\n\tmenuSpeed,\n\tPERMISSION_ALL,\n\tPERMISSION_CREATE,\n\tPERMISSION_DELETE,\n\tPERMISSION_NONE,\n\tPERMISSION_READ,\n\tPERMISSION_SHARE,\n\tPERMISSION_UPDATE,\n\tTAG_FAVORITE,\n\n\t/*\n\t * Deprecated helpers to be removed\n\t */\n\t/**\n\t * Check if a user file is allowed to be handled.\n\t *\n\t * @param {string} file to check\n\t * @return {boolean}\n\t * @deprecated 17.0.0\n\t */\n\tfileIsBlacklisted: file => !!(file.match(Config.blacklist_files_regex)),\n\tApps,\n\tAppConfig,\n\tappConfig,\n\tappswebroots,\n\tBackbone,\n\tconfig: Config,\n\t/**\n\t * Currently logged in user or null if none\n\t *\n\t * @type {string}\n\t * @deprecated use `getCurrentUser` from https://www.npmjs.com/package/@nextcloud/auth\n\t */\n\tcurrentUser,\n\tdialogs: Dialogs,\n\tEventSource,\n\t/**\n\t * Returns the currently logged in user or null if there is no logged in\n\t * user (public page mode)\n\t *\n\t * @since 9.0.0\n\t * @deprecated 19.0.0 use `getCurrentUser` from https://www.npmjs.com/package/@nextcloud/auth\n\t */\n\tgetCurrentUser,\n\tisUserAdmin,\n\tL10N,\n\n\t/**\n\t * Ajax error handlers\n\t *\n\t * @todo remove from here and keep internally -> requires new tests\n\t */\n\t_ajaxConnectionLostHandler: ajaxConnectionLostHandler,\n\t_processAjaxError: processAjaxError,\n\tregisterXHRForErrorProcessing,\n\n\t/**\n\t * Capabilities\n\t *\n\t * @type {Array}\n\t * @deprecated 20.0.0 use @nextcloud/capabilities instead\n\t */\n\tgetCapabilities,\n\n\t/*\n\t * Legacy menu helpers\n\t */\n\thideMenus,\n\tregisterMenu,\n\tshowMenu,\n\tunregisterMenu,\n\n\t/*\n\t * Path helpers\n\t */\n\t/**\n\t * @deprecated 18.0.0 use https://www.npmjs.com/package/@nextcloud/paths\n\t */\n\tbasename,\n\t/**\n\t * @deprecated 18.0.0 use https://www.npmjs.com/package/@nextcloud/paths\n\t */\n\tencodePath,\n\t/**\n\t * @deprecated 18.0.0 use https://www.npmjs.com/package/@nextcloud/paths\n\t */\n\tdirname,\n\t/**\n\t * @deprecated 18.0.0 use https://www.npmjs.com/package/@nextcloud/paths\n\t */\n\tisSamePath,\n\t/**\n\t * @deprecated 18.0.0 use https://www.npmjs.com/package/@nextcloud/paths\n\t */\n\tjoinPaths,\n\n\t/**\n\t * Host (url) helpers\n\t */\n\tgetHost,\n\tgetHostName,\n\tgetPort,\n\tgetProtocol,\n\n\t/**\n\t * @deprecated 20.0.0 use `getCanonicalLocale` from https://www.npmjs.com/package/@nextcloud/l10n\n\t */\n\tgetCanonicalLocale,\n\t/**\n\t * @deprecated 26.0.0 use `getLocale` from https://www.npmjs.com/package/@nextcloud/l10n\n\t */\n\tgetLocale,\n\t/**\n\t * @deprecated 26.0.0 use `getLanguage` from https://www.npmjs.com/package/@nextcloud/l10n\n\t */\n\tgetLanguage,\n\n\t/**\n\t * Query string helpers\n\t */\n\tbuildQueryString,\n\tparseQueryString,\n\n\tmsg,\n\tNotification,\n\t/**\n\t * @deprecated 28.0.0 use methods from '@nextcloud/password-confirmation'\n\t */\n\tPasswordConfirmation,\n\tPlugins,\n\ttheme,\n\tUtil,\n\tdebug,\n\t/**\n\t * @deprecated 19.0.0 use `generateFilePath` from https://www.npmjs.com/package/@nextcloud/router\n\t */\n\tfilePath: generateFilePath,\n\t/**\n\t * @deprecated 19.0.0 use `generateUrl` from https://www.npmjs.com/package/@nextcloud/router\n\t */\n\tgenerateUrl,\n\t/**\n\t * @deprecated 19.0.0 use https://lodash.com/docs#get\n\t */\n\tget: get(window),\n\t/**\n\t * @deprecated 19.0.0 use https://lodash.com/docs#set\n\t */\n\tset: set(window),\n\t/**\n\t * @deprecated 19.0.0 use `getRootUrl` from https://www.npmjs.com/package/@nextcloud/router\n\t */\n\tgetRootPath: getRootUrl,\n\t/**\n\t * @deprecated 19.0.0 use `imagePath` from https://www.npmjs.com/package/@nextcloud/router\n\t */\n\timagePath,\n\tredirect,\n\treload,\n\trequestToken: getRequestToken(),\n\t/**\n\t * @deprecated 19.0.0 use `linkTo` from https://www.npmjs.com/package/@nextcloud/router\n\t */\n\tlinkTo,\n\t/**\n\t * @param {string} service service name\n\t * @param {number} version OCS API version\n\t * @return {string} OCS API base path\n\t * @deprecated 19.0.0 use `generateOcsUrl` from https://www.npmjs.com/package/@nextcloud/router\n\t */\n\tlinkToOCS: (service, version) => {\n\t\treturn generateOcsUrl(service, {}, {\n\t\t\tocsVersion: version || 1,\n\t\t}) + '/'\n\t},\n\t/**\n\t * @deprecated 19.0.0 use `generateRemoteUrl` from https://www.npmjs.com/package/@nextcloud/router\n\t */\n\tlinkToRemote: generateRemoteUrl,\n\tlinkToRemoteBase,\n\t/**\n\t * Relative path to Nextcloud root.\n\t * For example: \"/nextcloud\"\n\t *\n\t * @type {string}\n\t *\n\t * @deprecated 19.0.0 use `getRootUrl` from https://www.npmjs.com/package/@nextcloud/router\n\t * @see OC#getRootPath\n\t */\n\twebroot,\n}\n\n// Keep the request token prop in sync\nsubscribe('csrf-token-update', e => {\n\tOC.requestToken = e.token\n\n\t// Logging might help debug (Sentry) issues\n\tconsole.info('OC.requestToken changed', e.token)\n})\n","/**\n * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport { getCapabilities as realGetCapabilities } from '@nextcloud/capabilities'\n\n/**\n * Returns the capabilities\n *\n * @return {Array} capabilities\n *\n * @since 14.0.0\n */\nexport const getCapabilities = () => {\n\tOC.debug && console.warn('OC.getCapabilities is deprecated and will be removed in Nextcloud 21. See @nextcloud/capabilities')\n\treturn realGetCapabilities()\n}\n","/**\n * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nexport const getProtocol = () => window.location.protocol.split(':')[0]\n\n/**\n * Returns the host used to access this Nextcloud instance\n * Host is sometimes the same as the hostname but now always.\n *\n * Examples:\n * http://example.com => example.com\n * https://example.com => example.com\n * http://example.com:8080 => example.com:8080\n *\n * @return {string} host\n *\n * @since 8.2.0\n * @deprecated 17.0.0 use window.location.host directly\n */\nexport const getHost = () => window.location.host\n\n/**\n * Returns the hostname used to access this Nextcloud instance\n * The hostname is always stripped of the port\n *\n * @return {string} hostname\n * @since 9.0.0\n * @deprecated 17.0.0 use window.location.hostname directly\n */\nexport const getHostName = () => window.location.hostname\n\n/**\n * Returns the port number used to access this Nextcloud instance\n *\n * @return {number} port number\n *\n * @since 8.2.0\n * @deprecated 17.0.0 use window.location.port directly\n */\nexport const getPort = () => window.location.port\n","/**\n * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nexport const get = context => name => {\n\tconst namespaces = name.split('.')\n\tconst tail = namespaces.pop()\n\n\tfor (let i = 0; i < namespaces.length; i++) {\n\t\tcontext = context[namespaces[i]]\n\t\tif (!context) {\n\t\t\treturn false\n\t\t}\n\t}\n\treturn context[tail]\n}\n\n/**\n * Set a variable by name\n *\n * @param {string} context context\n * @return {Function} setter\n * @deprecated 19.0.0 use https://lodash.com/docs#set\n */\nexport const set = context => (name, value) => {\n\tconst namespaces = name.split('.')\n\tconst tail = namespaces.pop()\n\n\tfor (let i = 0; i < namespaces.length; i++) {\n\t\tif (!context[namespaces[i]]) {\n\t\t\tcontext[namespaces[i]] = {}\n\t\t}\n\t\tcontext = context[namespaces[i]]\n\t}\n\tcontext[tail] = value\n\treturn value\n}\n","/**\n * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nexport const redirect = targetURL => { window.location = targetURL }\n\n/**\n * Reloads the current page\n *\n * @deprecated 17.0.0 use window.location.reload directly\n */\nexport const reload = () => { window.location.reload() }\n","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"guest-box login-box\"},[(!_vm.hideLoginForm || _vm.directLogin)?[_c('transition',{attrs:{\"name\":\"fade\",\"mode\":\"out-in\"}},[(!_vm.passwordlessLogin && !_vm.resetPassword && _vm.resetPasswordTarget === '')?_c('div',[_c('LoginForm',{attrs:{\"username\":_vm.user,\"redirect-url\":_vm.redirectUrl,\"direct-login\":_vm.directLogin,\"messages\":_vm.messages,\"errors\":_vm.errors,\"throttle-delay\":_vm.throttleDelay,\"auto-complete-allowed\":_vm.autoCompleteAllowed,\"email-states\":_vm.emailStates},on:{\"update:username\":function($event){_vm.user=$event},\"submit\":function($event){_vm.loading = true}}}),_vm._v(\" \"),(_vm.canResetPassword && _vm.resetPasswordLink !== '')?_c('a',{staticClass:\"login-box__link\",attrs:{\"id\":\"lost-password\",\"href\":_vm.resetPasswordLink}},[_vm._v(\"\\n\\t\\t\\t\\t\\t\"+_vm._s(_vm.t('core', 'Forgot password?'))+\"\\n\\t\\t\\t\\t\")]):(_vm.canResetPassword && !_vm.resetPassword)?_c('a',{staticClass:\"login-box__link\",attrs:{\"id\":\"lost-password\",\"href\":_vm.resetPasswordLink},on:{\"click\":function($event){$event.preventDefault();_vm.resetPassword = true}}},[_vm._v(\"\\n\\t\\t\\t\\t\\t\"+_vm._s(_vm.t('core', 'Forgot password?'))+\"\\n\\t\\t\\t\\t\")]):_vm._e(),_vm._v(\" \"),(_vm.hasPasswordless)?[(_vm.countAlternativeLogins)?_c('div',{staticClass:\"alternative-logins\"},[(_vm.hasPasswordless)?_c('a',{staticClass:\"button\",class:{ 'single-alt-login-option': _vm.countAlternativeLogins },attrs:{\"href\":\"#\"},on:{\"click\":function($event){$event.preventDefault();_vm.passwordlessLogin = true}}},[_vm._v(\"\\n\\t\\t\\t\\t\\t\\t\\t\"+_vm._s(_vm.t('core', 'Log in with a device'))+\"\\n\\t\\t\\t\\t\\t\\t\")]):_vm._e()]):_c('a',{attrs:{\"href\":\"#\"},on:{\"click\":function($event){$event.preventDefault();_vm.passwordlessLogin = true}}},[_vm._v(\"\\n\\t\\t\\t\\t\\t\\t\"+_vm._s(_vm.t('core', 'Log in with a device'))+\"\\n\\t\\t\\t\\t\\t\")])]:_vm._e()],2):(!_vm.loading && _vm.passwordlessLogin)?_c('div',{key:\"reset-pw-less\",staticClass:\"login-additional login-passwordless\"},[_c('PasswordLessLoginForm',{attrs:{\"username\":_vm.user,\"redirect-url\":_vm.redirectUrl,\"auto-complete-allowed\":_vm.autoCompleteAllowed,\"is-https\":_vm.isHttps,\"is-localhost\":_vm.isLocalhost},on:{\"update:username\":function($event){_vm.user=$event},\"submit\":function($event){_vm.loading = true}}}),_vm._v(\" \"),_c('NcButton',{attrs:{\"type\":\"tertiary\",\"aria-label\":_vm.t('core', 'Back to login form'),\"wide\":true},on:{\"click\":function($event){_vm.passwordlessLogin = false}}},[_vm._v(\"\\n\\t\\t\\t\\t\\t\"+_vm._s(_vm.t('core', 'Back'))+\"\\n\\t\\t\\t\\t\")])],1):(!_vm.loading && _vm.canResetPassword)?_c('div',{key:\"reset-can-reset\",staticClass:\"login-additional\"},[_c('div',{staticClass:\"lost-password-container\"},[(_vm.resetPassword)?_c('ResetPassword',{attrs:{\"username\":_vm.user,\"reset-password-link\":_vm.resetPasswordLink},on:{\"update:username\":function($event){_vm.user=$event},\"abort\":function($event){_vm.resetPassword = false}}}):_vm._e()],1)]):(_vm.resetPasswordTarget !== '')?_c('div',[_c('UpdatePassword',{attrs:{\"username\":_vm.user,\"reset-password-target\":_vm.resetPasswordTarget},on:{\"update:username\":function($event){_vm.user=$event},\"done\":_vm.passwordResetFinished}})],1):_vm._e()])]:[_c('transition',{attrs:{\"name\":\"fade\",\"mode\":\"out-in\"}},[_c('NcNoteCard',{attrs:{\"type\":\"info\",\"title\":_vm.t('core', 'Login form is disabled.')}},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('core', 'The Nextcloud login form is disabled. Use another login option if available or contact your administration.'))+\"\\n\\t\\t\\t\")])],1)],_vm._v(\" \"),_c('div',{staticClass:\"alternative-logins\",attrs:{\"id\":\"alternative-logins\"}},_vm._l((_vm.alternativeLogins),function(alternativeLogin,index){return _c('NcButton',{key:index,class:[alternativeLogin.class],attrs:{\"type\":\"secondary\",\"wide\":true,\"role\":\"link\",\"href\":alternativeLogin.href}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(alternativeLogin.name)+\"\\n\\t\\t\")])}),1)],2)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","const token = '%[a-f0-9]{2}';\nconst singleMatcher = new RegExp('(' + token + ')|([^%]+?)', 'gi');\nconst multiMatcher = new RegExp('(' + token + ')+', 'gi');\n\nfunction decodeComponents(components, split) {\n\ttry {\n\t\t// Try to decode the entire string first\n\t\treturn [decodeURIComponent(components.join(''))];\n\t} catch {\n\t\t// Do nothing\n\t}\n\n\tif (components.length === 1) {\n\t\treturn components;\n\t}\n\n\tsplit = split || 1;\n\n\t// Split the array in 2 parts\n\tconst left = components.slice(0, split);\n\tconst right = components.slice(split);\n\n\treturn Array.prototype.concat.call([], decodeComponents(left), decodeComponents(right));\n}\n\nfunction decode(input) {\n\ttry {\n\t\treturn decodeURIComponent(input);\n\t} catch {\n\t\tlet tokens = input.match(singleMatcher) || [];\n\n\t\tfor (let i = 1; i < tokens.length; i++) {\n\t\t\tinput = decodeComponents(tokens, i).join('');\n\n\t\t\ttokens = input.match(singleMatcher) || [];\n\t\t}\n\n\t\treturn input;\n\t}\n}\n\nfunction customDecodeURIComponent(input) {\n\t// Keep track of all the replacements and prefill the map with the `BOM`\n\tconst replaceMap = {\n\t\t'%FE%FF': '\\uFFFD\\uFFFD',\n\t\t'%FF%FE': '\\uFFFD\\uFFFD',\n\t};\n\n\tlet match = multiMatcher.exec(input);\n\twhile (match) {\n\t\ttry {\n\t\t\t// Decode as big chunks as possible\n\t\t\treplaceMap[match[0]] = decodeURIComponent(match[0]);\n\t\t} catch {\n\t\t\tconst result = decode(match[0]);\n\n\t\t\tif (result !== match[0]) {\n\t\t\t\treplaceMap[match[0]] = result;\n\t\t\t}\n\t\t}\n\n\t\tmatch = multiMatcher.exec(input);\n\t}\n\n\t// Add `%C2` at the end of the map to make sure it does not replace the combinator before everything else\n\treplaceMap['%C2'] = '\\uFFFD';\n\n\tconst entries = Object.keys(replaceMap);\n\n\tfor (const key of entries) {\n\t\t// Replace all decoded components\n\t\tinput = input.replace(new RegExp(key, 'g'), replaceMap[key]);\n\t}\n\n\treturn input;\n}\n\nexport default function decodeUriComponent(encodedURI) {\n\tif (typeof encodedURI !== 'string') {\n\t\tthrow new TypeError('Expected `encodedURI` to be of type `string`, got `' + typeof encodedURI + '`');\n\t}\n\n\ttry {\n\t\t// Try the built in decoder first\n\t\treturn decodeURIComponent(encodedURI);\n\t} catch {\n\t\t// Fallback to a more advanced decoder\n\t\treturn customDecodeURIComponent(encodedURI);\n\t}\n}\n","export default function splitOnFirst(string, separator) {\n\tif (!(typeof string === 'string' && typeof separator === 'string')) {\n\t\tthrow new TypeError('Expected the arguments to be of type `string`');\n\t}\n\n\tif (string === '' || separator === '') {\n\t\treturn [];\n\t}\n\n\tconst separatorIndex = string.indexOf(separator);\n\n\tif (separatorIndex === -1) {\n\t\treturn [];\n\t}\n\n\treturn [\n\t\tstring.slice(0, separatorIndex),\n\t\tstring.slice(separatorIndex + separator.length)\n\t];\n}\n","export function includeKeys(object, predicate) {\n\tconst result = {};\n\n\tif (Array.isArray(predicate)) {\n\t\tfor (const key of predicate) {\n\t\t\tconst descriptor = Object.getOwnPropertyDescriptor(object, key);\n\t\t\tif (descriptor?.enumerable) {\n\t\t\t\tObject.defineProperty(result, key, descriptor);\n\t\t\t}\n\t\t}\n\t} else {\n\t\t// `Reflect.ownKeys()` is required to retrieve symbol properties\n\t\tfor (const key of Reflect.ownKeys(object)) {\n\t\t\tconst descriptor = Object.getOwnPropertyDescriptor(object, key);\n\t\t\tif (descriptor.enumerable) {\n\t\t\t\tconst value = object[key];\n\t\t\t\tif (predicate(key, value, object)) {\n\t\t\t\t\tObject.defineProperty(result, key, descriptor);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn result;\n}\n\nexport function excludeKeys(object, predicate) {\n\tif (Array.isArray(predicate)) {\n\t\tconst set = new Set(predicate);\n\t\treturn includeKeys(object, key => !set.has(key));\n\t}\n\n\treturn includeKeys(object, (key, value, object) => !predicate(key, value, object));\n}\n","import decodeComponent from 'decode-uri-component';\nimport splitOnFirst from 'split-on-first';\nimport {includeKeys} from 'filter-obj';\n\nconst isNullOrUndefined = value => value === null || value === undefined;\n\n// eslint-disable-next-line unicorn/prefer-code-point\nconst strictUriEncode = string => encodeURIComponent(string).replaceAll(/[!'()*]/g, x => `%${x.charCodeAt(0).toString(16).toUpperCase()}`);\n\nconst encodeFragmentIdentifier = Symbol('encodeFragmentIdentifier');\n\nfunction encoderForArrayFormat(options) {\n\tswitch (options.arrayFormat) {\n\t\tcase 'index': {\n\t\t\treturn key => (result, value) => {\n\t\t\t\tconst index = result.length;\n\n\t\t\t\tif (\n\t\t\t\t\tvalue === undefined\n\t\t\t\t\t|| (options.skipNull && value === null)\n\t\t\t\t\t|| (options.skipEmptyString && value === '')\n\t\t\t\t) {\n\t\t\t\t\treturn result;\n\t\t\t\t}\n\n\t\t\t\tif (value === null) {\n\t\t\t\t\treturn [\n\t\t\t\t\t\t...result, [encode(key, options), '[', index, ']'].join(''),\n\t\t\t\t\t];\n\t\t\t\t}\n\n\t\t\t\treturn [\n\t\t\t\t\t...result,\n\t\t\t\t\t[encode(key, options), '[', encode(index, options), ']=', encode(value, options)].join(''),\n\t\t\t\t];\n\t\t\t};\n\t\t}\n\n\t\tcase 'bracket': {\n\t\t\treturn key => (result, value) => {\n\t\t\t\tif (\n\t\t\t\t\tvalue === undefined\n\t\t\t\t\t|| (options.skipNull && value === null)\n\t\t\t\t\t|| (options.skipEmptyString && value === '')\n\t\t\t\t) {\n\t\t\t\t\treturn result;\n\t\t\t\t}\n\n\t\t\t\tif (value === null) {\n\t\t\t\t\treturn [\n\t\t\t\t\t\t...result,\n\t\t\t\t\t\t[encode(key, options), '[]'].join(''),\n\t\t\t\t\t];\n\t\t\t\t}\n\n\t\t\t\treturn [\n\t\t\t\t\t...result,\n\t\t\t\t\t[encode(key, options), '[]=', encode(value, options)].join(''),\n\t\t\t\t];\n\t\t\t};\n\t\t}\n\n\t\tcase 'colon-list-separator': {\n\t\t\treturn key => (result, value) => {\n\t\t\t\tif (\n\t\t\t\t\tvalue === undefined\n\t\t\t\t\t|| (options.skipNull && value === null)\n\t\t\t\t\t|| (options.skipEmptyString && value === '')\n\t\t\t\t) {\n\t\t\t\t\treturn result;\n\t\t\t\t}\n\n\t\t\t\tif (value === null) {\n\t\t\t\t\treturn [\n\t\t\t\t\t\t...result,\n\t\t\t\t\t\t[encode(key, options), ':list='].join(''),\n\t\t\t\t\t];\n\t\t\t\t}\n\n\t\t\t\treturn [\n\t\t\t\t\t...result,\n\t\t\t\t\t[encode(key, options), ':list=', encode(value, options)].join(''),\n\t\t\t\t];\n\t\t\t};\n\t\t}\n\n\t\tcase 'comma':\n\t\tcase 'separator':\n\t\tcase 'bracket-separator': {\n\t\t\tconst keyValueSeparator = options.arrayFormat === 'bracket-separator'\n\t\t\t\t? '[]='\n\t\t\t\t: '=';\n\n\t\t\treturn key => (result, value) => {\n\t\t\t\tif (\n\t\t\t\t\tvalue === undefined\n\t\t\t\t\t|| (options.skipNull && value === null)\n\t\t\t\t\t|| (options.skipEmptyString && value === '')\n\t\t\t\t) {\n\t\t\t\t\treturn result;\n\t\t\t\t}\n\n\t\t\t\t// Translate null to an empty string so that it doesn't serialize as 'null'\n\t\t\t\tvalue = value === null ? '' : value;\n\n\t\t\t\tif (result.length === 0) {\n\t\t\t\t\treturn [[encode(key, options), keyValueSeparator, encode(value, options)].join('')];\n\t\t\t\t}\n\n\t\t\t\treturn [[result, encode(value, options)].join(options.arrayFormatSeparator)];\n\t\t\t};\n\t\t}\n\n\t\tdefault: {\n\t\t\treturn key => (result, value) => {\n\t\t\t\tif (\n\t\t\t\t\tvalue === undefined\n\t\t\t\t\t|| (options.skipNull && value === null)\n\t\t\t\t\t|| (options.skipEmptyString && value === '')\n\t\t\t\t) {\n\t\t\t\t\treturn result;\n\t\t\t\t}\n\n\t\t\t\tif (value === null) {\n\t\t\t\t\treturn [\n\t\t\t\t\t\t...result,\n\t\t\t\t\t\tencode(key, options),\n\t\t\t\t\t];\n\t\t\t\t}\n\n\t\t\t\treturn [\n\t\t\t\t\t...result,\n\t\t\t\t\t[encode(key, options), '=', encode(value, options)].join(''),\n\t\t\t\t];\n\t\t\t};\n\t\t}\n\t}\n}\n\nfunction parserForArrayFormat(options) {\n\tlet result;\n\n\tswitch (options.arrayFormat) {\n\t\tcase 'index': {\n\t\t\treturn (key, value, accumulator) => {\n\t\t\t\tresult = /\\[(\\d*)]$/.exec(key);\n\n\t\t\t\tkey = key.replace(/\\[\\d*]$/, '');\n\n\t\t\t\tif (!result) {\n\t\t\t\t\taccumulator[key] = value;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif (accumulator[key] === undefined) {\n\t\t\t\t\taccumulator[key] = {};\n\t\t\t\t}\n\n\t\t\t\taccumulator[key][result[1]] = value;\n\t\t\t};\n\t\t}\n\n\t\tcase 'bracket': {\n\t\t\treturn (key, value, accumulator) => {\n\t\t\t\tresult = /(\\[])$/.exec(key);\n\t\t\t\tkey = key.replace(/\\[]$/, '');\n\n\t\t\t\tif (!result) {\n\t\t\t\t\taccumulator[key] = value;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif (accumulator[key] === undefined) {\n\t\t\t\t\taccumulator[key] = [value];\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\taccumulator[key] = [...accumulator[key], value];\n\t\t\t};\n\t\t}\n\n\t\tcase 'colon-list-separator': {\n\t\t\treturn (key, value, accumulator) => {\n\t\t\t\tresult = /(:list)$/.exec(key);\n\t\t\t\tkey = key.replace(/:list$/, '');\n\n\t\t\t\tif (!result) {\n\t\t\t\t\taccumulator[key] = value;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif (accumulator[key] === undefined) {\n\t\t\t\t\taccumulator[key] = [value];\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\taccumulator[key] = [...accumulator[key], value];\n\t\t\t};\n\t\t}\n\n\t\tcase 'comma':\n\t\tcase 'separator': {\n\t\t\treturn (key, value, accumulator) => {\n\t\t\t\tconst isArray = typeof value === 'string' && value.includes(options.arrayFormatSeparator);\n\t\t\t\tconst isEncodedArray = (typeof value === 'string' && !isArray && decode(value, options).includes(options.arrayFormatSeparator));\n\t\t\t\tvalue = isEncodedArray ? decode(value, options) : value;\n\t\t\t\tconst newValue = isArray || isEncodedArray ? value.split(options.arrayFormatSeparator).map(item => decode(item, options)) : (value === null ? value : decode(value, options));\n\t\t\t\taccumulator[key] = newValue;\n\t\t\t};\n\t\t}\n\n\t\tcase 'bracket-separator': {\n\t\t\treturn (key, value, accumulator) => {\n\t\t\t\tconst isArray = /(\\[])$/.test(key);\n\t\t\t\tkey = key.replace(/\\[]$/, '');\n\n\t\t\t\tif (!isArray) {\n\t\t\t\t\taccumulator[key] = value ? decode(value, options) : value;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tconst arrayValue = value === null\n\t\t\t\t\t? []\n\t\t\t\t\t: value.split(options.arrayFormatSeparator).map(item => decode(item, options));\n\n\t\t\t\tif (accumulator[key] === undefined) {\n\t\t\t\t\taccumulator[key] = arrayValue;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\taccumulator[key] = [...accumulator[key], ...arrayValue];\n\t\t\t};\n\t\t}\n\n\t\tdefault: {\n\t\t\treturn (key, value, accumulator) => {\n\t\t\t\tif (accumulator[key] === undefined) {\n\t\t\t\t\taccumulator[key] = value;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\taccumulator[key] = [...[accumulator[key]].flat(), value];\n\t\t\t};\n\t\t}\n\t}\n}\n\nfunction validateArrayFormatSeparator(value) {\n\tif (typeof value !== 'string' || value.length !== 1) {\n\t\tthrow new TypeError('arrayFormatSeparator must be single character string');\n\t}\n}\n\nfunction encode(value, options) {\n\tif (options.encode) {\n\t\treturn options.strict ? strictUriEncode(value) : encodeURIComponent(value);\n\t}\n\n\treturn value;\n}\n\nfunction decode(value, options) {\n\tif (options.decode) {\n\t\treturn decodeComponent(value);\n\t}\n\n\treturn value;\n}\n\nfunction keysSorter(input) {\n\tif (Array.isArray(input)) {\n\t\treturn input.sort();\n\t}\n\n\tif (typeof input === 'object') {\n\t\treturn keysSorter(Object.keys(input))\n\t\t\t.sort((a, b) => Number(a) - Number(b))\n\t\t\t.map(key => input[key]);\n\t}\n\n\treturn input;\n}\n\nfunction removeHash(input) {\n\tconst hashStart = input.indexOf('#');\n\tif (hashStart !== -1) {\n\t\tinput = input.slice(0, hashStart);\n\t}\n\n\treturn input;\n}\n\nfunction getHash(url) {\n\tlet hash = '';\n\tconst hashStart = url.indexOf('#');\n\tif (hashStart !== -1) {\n\t\thash = url.slice(hashStart);\n\t}\n\n\treturn hash;\n}\n\nfunction parseValue(value, options) {\n\tif (options.parseNumbers && !Number.isNaN(Number(value)) && (typeof value === 'string' && value.trim() !== '')) {\n\t\tvalue = Number(value);\n\t} else if (options.parseBooleans && value !== null && (value.toLowerCase() === 'true' || value.toLowerCase() === 'false')) {\n\t\tvalue = value.toLowerCase() === 'true';\n\t}\n\n\treturn value;\n}\n\nexport function extract(input) {\n\tinput = removeHash(input);\n\tconst queryStart = input.indexOf('?');\n\tif (queryStart === -1) {\n\t\treturn '';\n\t}\n\n\treturn input.slice(queryStart + 1);\n}\n\nexport function parse(query, options) {\n\toptions = {\n\t\tdecode: true,\n\t\tsort: true,\n\t\tarrayFormat: 'none',\n\t\tarrayFormatSeparator: ',',\n\t\tparseNumbers: false,\n\t\tparseBooleans: false,\n\t\t...options,\n\t};\n\n\tvalidateArrayFormatSeparator(options.arrayFormatSeparator);\n\n\tconst formatter = parserForArrayFormat(options);\n\n\t// Create an object with no prototype\n\tconst returnValue = Object.create(null);\n\n\tif (typeof query !== 'string') {\n\t\treturn returnValue;\n\t}\n\n\tquery = query.trim().replace(/^[?#&]/, '');\n\n\tif (!query) {\n\t\treturn returnValue;\n\t}\n\n\tfor (const parameter of query.split('&')) {\n\t\tif (parameter === '') {\n\t\t\tcontinue;\n\t\t}\n\n\t\tconst parameter_ = options.decode ? parameter.replaceAll('+', ' ') : parameter;\n\n\t\tlet [key, value] = splitOnFirst(parameter_, '=');\n\n\t\tif (key === undefined) {\n\t\t\tkey = parameter_;\n\t\t}\n\n\t\t// Missing `=` should be `null`:\n\t\t// http://w3.org/TR/2012/WD-url-20120524/#collect-url-parameters\n\t\tvalue = value === undefined ? null : (['comma', 'separator', 'bracket-separator'].includes(options.arrayFormat) ? value : decode(value, options));\n\t\tformatter(decode(key, options), value, returnValue);\n\t}\n\n\tfor (const [key, value] of Object.entries(returnValue)) {\n\t\tif (typeof value === 'object' && value !== null) {\n\t\t\tfor (const [key2, value2] of Object.entries(value)) {\n\t\t\t\tvalue[key2] = parseValue(value2, options);\n\t\t\t}\n\t\t} else {\n\t\t\treturnValue[key] = parseValue(value, options);\n\t\t}\n\t}\n\n\tif (options.sort === false) {\n\t\treturn returnValue;\n\t}\n\n\t// TODO: Remove the use of `reduce`.\n\t// eslint-disable-next-line unicorn/no-array-reduce\n\treturn (options.sort === true ? Object.keys(returnValue).sort() : Object.keys(returnValue).sort(options.sort)).reduce((result, key) => {\n\t\tconst value = returnValue[key];\n\t\tresult[key] = Boolean(value) && typeof value === 'object' && !Array.isArray(value) ? keysSorter(value) : value;\n\t\treturn result;\n\t}, Object.create(null));\n}\n\nexport function stringify(object, options) {\n\tif (!object) {\n\t\treturn '';\n\t}\n\n\toptions = {\n\t\tencode: true,\n\t\tstrict: true,\n\t\tarrayFormat: 'none',\n\t\tarrayFormatSeparator: ',',\n\t\t...options,\n\t};\n\n\tvalidateArrayFormatSeparator(options.arrayFormatSeparator);\n\n\tconst shouldFilter = key => (\n\t\t(options.skipNull && isNullOrUndefined(object[key]))\n\t\t|| (options.skipEmptyString && object[key] === '')\n\t);\n\n\tconst formatter = encoderForArrayFormat(options);\n\n\tconst objectCopy = {};\n\n\tfor (const [key, value] of Object.entries(object)) {\n\t\tif (!shouldFilter(key)) {\n\t\t\tobjectCopy[key] = value;\n\t\t}\n\t}\n\n\tconst keys = Object.keys(objectCopy);\n\n\tif (options.sort !== false) {\n\t\tkeys.sort(options.sort);\n\t}\n\n\treturn keys.map(key => {\n\t\tconst value = object[key];\n\n\t\tif (value === undefined) {\n\t\t\treturn '';\n\t\t}\n\n\t\tif (value === null) {\n\t\t\treturn encode(key, options);\n\t\t}\n\n\t\tif (Array.isArray(value)) {\n\t\t\tif (value.length === 0 && options.arrayFormat === 'bracket-separator') {\n\t\t\t\treturn encode(key, options) + '[]';\n\t\t\t}\n\n\t\t\treturn value\n\t\t\t\t.reduce(formatter(key), [])\n\t\t\t\t.join('&');\n\t\t}\n\n\t\treturn encode(key, options) + '=' + encode(value, options);\n\t}).filter(x => x.length > 0).join('&');\n}\n\nexport function parseUrl(url, options) {\n\toptions = {\n\t\tdecode: true,\n\t\t...options,\n\t};\n\n\tlet [url_, hash] = splitOnFirst(url, '#');\n\n\tif (url_ === undefined) {\n\t\turl_ = url;\n\t}\n\n\treturn {\n\t\turl: url_?.split('?')?.[0] ?? '',\n\t\tquery: parse(extract(url), options),\n\t\t...(options && options.parseFragmentIdentifier && hash ? {fragmentIdentifier: decode(hash, options)} : {}),\n\t};\n}\n\nexport function stringifyUrl(object, options) {\n\toptions = {\n\t\tencode: true,\n\t\tstrict: true,\n\t\t[encodeFragmentIdentifier]: true,\n\t\t...options,\n\t};\n\n\tconst url = removeHash(object.url).split('?')[0] || '';\n\tconst queryFromUrl = extract(object.url);\n\n\tconst query = {\n\t\t...parse(queryFromUrl, {sort: false}),\n\t\t...object.query,\n\t};\n\n\tlet queryString = stringify(query, options);\n\tqueryString &&= `?${queryString}`;\n\n\tlet hash = getHash(object.url);\n\tif (typeof object.fragmentIdentifier === 'string') {\n\t\tconst urlObjectForFragmentEncode = new URL(url);\n\t\turlObjectForFragmentEncode.hash = object.fragmentIdentifier;\n\t\thash = options[encodeFragmentIdentifier] ? urlObjectForFragmentEncode.hash : `#${object.fragmentIdentifier}`;\n\t}\n\n\treturn `${url}${queryString}${hash}`;\n}\n\nexport function pick(input, filter, options) {\n\toptions = {\n\t\tparseFragmentIdentifier: true,\n\t\t[encodeFragmentIdentifier]: false,\n\t\t...options,\n\t};\n\n\tconst {url, query, fragmentIdentifier} = parseUrl(input, options);\n\n\treturn stringifyUrl({\n\t\turl,\n\t\tquery: includeKeys(query, filter),\n\t\tfragmentIdentifier,\n\t}, options);\n}\n\nexport function exclude(input, filter, options) {\n\tconst exclusionFilter = Array.isArray(filter) ? key => !filter.includes(key) : (key, value) => !filter(key, value);\n\n\treturn pick(input, exclusionFilter, options);\n}\n","import * as queryString from './base.js';\n\nexport default queryString;\n","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('form',{ref:\"loginForm\",staticClass:\"login-form\",attrs:{\"method\":\"post\",\"name\":\"login\",\"action\":_vm.loginActionUrl},on:{\"submit\":_vm.submit}},[_c('fieldset',{staticClass:\"login-form__fieldset\",attrs:{\"data-login-form\":\"\"}},[(_vm.apacheAuthFailed)?_c('NcNoteCard',{attrs:{\"title\":_vm.t('core', 'Server side authentication failed!'),\"type\":\"warning\"}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('core', 'Please contact your administrator.'))+\"\\n\\t\\t\")]):_vm._e(),_vm._v(\" \"),(_vm.csrfCheckFailed)?_c('NcNoteCard',{attrs:{\"heading\":_vm.t('core', 'Temporary error'),\"type\":\"error\"}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('core', 'Please try again.'))+\"\\n\\t\\t\")]):_vm._e(),_vm._v(\" \"),(_vm.messages.length > 0)?_c('NcNoteCard',_vm._l((_vm.messages),function(message,index){return _c('div',{key:index},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(message)),_c('br')])}),0):_vm._e(),_vm._v(\" \"),(_vm.internalException)?_c('NcNoteCard',{class:_vm.t('core', 'An internal error occurred.'),attrs:{\"type\":\"warning\"}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('core', 'Please try again or contact your administrator.'))+\"\\n\\t\\t\")]):_vm._e(),_vm._v(\" \"),_c('div',{staticClass:\"hidden\",attrs:{\"id\":\"message\"}},[_c('img',{staticClass:\"float-spinner\",attrs:{\"alt\":\"\",\"src\":_vm.loadingIcon}}),_vm._v(\" \"),_c('span',{attrs:{\"id\":\"messageText\"}}),_vm._v(\" \"),_c('div',{staticStyle:{\"clear\":\"both\"}})]),_vm._v(\" \"),_c('h2',{staticClass:\"login-form__headline\",attrs:{\"data-login-form-headline\":\"\"}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.headlineText)+\"\\n\\t\\t\")]),_vm._v(\" \"),_c('NcTextField',{ref:\"user\",class:{shake: _vm.invalidPassword},attrs:{\"id\":\"user\",\"label\":_vm.loginText,\"name\":\"user\",\"maxlength\":255,\"value\":_vm.user,\"autocapitalize\":\"none\",\"spellchecking\":false,\"autocomplete\":_vm.autoCompleteAllowed ? 'username' : 'off',\"required\":\"\",\"error\":_vm.userNameInputLengthIs255,\"helper-text\":_vm.userInputHelperText,\"data-login-form-input-user\":\"\"},on:{\"update:value\":function($event){_vm.user=$event},\"change\":_vm.updateUsername}}),_vm._v(\" \"),_c('NcPasswordField',{ref:\"password\",class:{shake: _vm.invalidPassword},attrs:{\"id\":\"password\",\"name\":\"password\",\"value\":_vm.password,\"spellchecking\":false,\"autocapitalize\":\"none\",\"autocomplete\":_vm.autoCompleteAllowed ? 'current-password' : 'off',\"label\":_vm.t('core', 'Password'),\"helper-text\":_vm.errorLabel,\"error\":_vm.isError,\"data-login-form-input-password\":\"\",\"required\":\"\"},on:{\"update:value\":function($event){_vm.password=$event}}}),_vm._v(\" \"),_c('LoginButton',{attrs:{\"data-login-form-submit\":\"\",\"loading\":_vm.loading}}),_vm._v(\" \"),(_vm.redirectUrl)?_c('input',{attrs:{\"type\":\"hidden\",\"name\":\"redirect_url\"},domProps:{\"value\":_vm.redirectUrl}}):_vm._e(),_vm._v(\" \"),_c('input',{attrs:{\"type\":\"hidden\",\"name\":\"timezone\"},domProps:{\"value\":_vm.timezone}}),_vm._v(\" \"),_c('input',{attrs:{\"type\":\"hidden\",\"name\":\"timezone_offset\"},domProps:{\"value\":_vm.timezoneOffset}}),_vm._v(\" \"),_c('input',{attrs:{\"type\":\"hidden\",\"name\":\"requesttoken\"},domProps:{\"value\":_vm.requestToken}}),_vm._v(\" \"),(_vm.directLogin)?_c('input',{attrs:{\"type\":\"hidden\",\"name\":\"direct\",\"value\":\"1\"}}):_vm._e()],1)])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","/**\n * SPDX-FileCopyrightText: 2024 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nexport default {\n\n\tcomputed: {\n\t\tuserNameInputLengthIs255() {\n\t\t\treturn this.user.length >= 255\n\t\t},\n\t\tuserInputHelperText() {\n\t\t\tif (this.userNameInputLengthIs255) {\n\t\t\t\treturn t('core', 'Email length is at max (255)')\n\t\t\t}\n\t\t\treturn undefined\n\t\t},\n\t},\n}\n","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('NcButton',{attrs:{\"type\":\"primary\",\"native-type\":\"submit\",\"wide\":true},on:{\"click\":function($event){return _vm.$emit('click')}},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [(_vm.loading)?_c('div',{staticClass:\"submit-wrapper__icon icon-loading-small-dark\"}):_c('ArrowRight',{staticClass:\"submit-wrapper__icon\"})]},proxy:true}])},[_vm._v(\"\\n\\t\"+_vm._s(!_vm.loading ? _vm.value : _vm.valueLoading)+\"\\n\\t\")])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\n - SPDX-FileCopyrightText: 2020 Nextcloud GmbH and Nextcloud contributors\n - SPDX-License-Identifier: AGPL-3.0-or-later\n-->\n\n<template>\n\t<NcButton type=\"primary\"\n\t\tnative-type=\"submit\"\n\t\t:wide=\"true\"\n\t\t@click=\"$emit('click')\">\n\t\t{{ !loading ? value : valueLoading }}\n\t\t<template #icon>\n\t\t\t<div v-if=\"loading\" class=\"submit-wrapper__icon icon-loading-small-dark\" />\n\t\t\t<ArrowRight v-else class=\"submit-wrapper__icon\" />\n\t\t</template>\n\t</NcButton>\n</template>\n\n<script>\nimport { translate as t } from '@nextcloud/l10n'\n\nimport NcButton from '@nextcloud/vue/dist/Components/NcButton.js'\nimport ArrowRight from 'vue-material-design-icons/ArrowRight.vue'\n\nexport default {\n\tname: 'LoginButton',\n\tcomponents: {\n\t\tArrowRight,\n\t\tNcButton,\n\t},\n\tprops: {\n\t\tvalue: {\n\t\t\ttype: String,\n\t\t\tdefault: t('core', 'Log in'),\n\t\t},\n\t\tvalueLoading: {\n\t\t\ttype: String,\n\t\t\tdefault: t('core', 'Logging in …'),\n\t\t},\n\t\tloading: {\n\t\t\ttype: Boolean,\n\t\t\trequired: true,\n\t\t},\n\t\tinvertedColors: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\n.button-vue {\n\tmargin-top: .5rem;\n}\n</style>\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./LoginButton.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./LoginButton.vue?vue&type=script&lang=js\"","\n import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./LoginButton.vue?vue&type=style&index=0&id=d2cd6448&prod&lang=scss&scoped=true\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./LoginButton.vue?vue&type=style&index=0&id=d2cd6448&prod&lang=scss&scoped=true\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./LoginButton.vue?vue&type=template&id=d2cd6448&scoped=true\"\nimport script from \"./LoginButton.vue?vue&type=script&lang=js\"\nexport * from \"./LoginButton.vue?vue&type=script&lang=js\"\nimport style0 from \"./LoginButton.vue?vue&type=style&index=0&id=d2cd6448&prod&lang=scss&scoped=true\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"d2cd6448\",\n null\n \n)\n\nexport default component.exports","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./LoginForm.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./LoginForm.vue?vue&type=script&lang=js\"","<!--\n - SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\n - SPDX-License-Identifier: AGPL-3.0-or-later\n-->\n\n<template>\n\t<form ref=\"loginForm\"\n\t\tclass=\"login-form\"\n\t\tmethod=\"post\"\n\t\tname=\"login\"\n\t\t:action=\"loginActionUrl\"\n\t\t@submit=\"submit\">\n\t\t<fieldset class=\"login-form__fieldset\" data-login-form>\n\t\t\t<NcNoteCard v-if=\"apacheAuthFailed\"\n\t\t\t\t:title=\"t('core', 'Server side authentication failed!')\"\n\t\t\t\ttype=\"warning\">\n\t\t\t\t{{ t('core', 'Please contact your administrator.') }}\n\t\t\t</NcNoteCard>\n\t\t\t<NcNoteCard v-if=\"csrfCheckFailed\"\n\t\t\t\t:heading=\"t('core', 'Temporary error')\"\n\t\t\t\ttype=\"error\">\n\t\t\t\t{{ t('core', 'Please try again.') }}\n\t\t\t</NcNoteCard>\n\t\t\t<NcNoteCard v-if=\"messages.length > 0\">\n\t\t\t\t<div v-for=\"(message, index) in messages\"\n\t\t\t\t\t:key=\"index\">\n\t\t\t\t\t{{ message }}<br>\n\t\t\t\t</div>\n\t\t\t</NcNoteCard>\n\t\t\t<NcNoteCard v-if=\"internalException\"\n\t\t\t\t:class=\"t('core', 'An internal error occurred.')\"\n\t\t\t\ttype=\"warning\">\n\t\t\t\t{{ t('core', 'Please try again or contact your administrator.') }}\n\t\t\t</NcNoteCard>\n\t\t\t<div id=\"message\"\n\t\t\t\tclass=\"hidden\">\n\t\t\t\t<img class=\"float-spinner\"\n\t\t\t\t\talt=\"\"\n\t\t\t\t\t:src=\"loadingIcon\">\n\t\t\t\t<span id=\"messageText\" />\n\t\t\t\t<!-- the following div ensures that the spinner is always inside the #message div -->\n\t\t\t\t<div style=\"clear: both;\" />\n\t\t\t</div>\n\t\t\t<h2 class=\"login-form__headline\" data-login-form-headline>\n\t\t\t\t{{ headlineText }}\n\t\t\t</h2>\n\t\t\t<NcTextField id=\"user\"\n\t\t\t\tref=\"user\"\n\t\t\t\t:label=\"loginText\"\n\t\t\t\tname=\"user\"\n\t\t\t\t:maxlength=\"255\"\n\t\t\t\t:value.sync=\"user\"\n\t\t\t\t:class=\"{shake: invalidPassword}\"\n\t\t\t\tautocapitalize=\"none\"\n\t\t\t\t:spellchecking=\"false\"\n\t\t\t\t:autocomplete=\"autoCompleteAllowed ? 'username' : 'off'\"\n\t\t\t\trequired\n\t\t\t\t:error=\"userNameInputLengthIs255\"\n\t\t\t\t:helper-text=\"userInputHelperText\"\n\t\t\t\tdata-login-form-input-user\n\t\t\t\t@change=\"updateUsername\" />\n\n\t\t\t<NcPasswordField id=\"password\"\n\t\t\t\tref=\"password\"\n\t\t\t\tname=\"password\"\n\t\t\t\t:class=\"{shake: invalidPassword}\"\n\t\t\t\t:value.sync=\"password\"\n\t\t\t\t:spellchecking=\"false\"\n\t\t\t\tautocapitalize=\"none\"\n\t\t\t\t:autocomplete=\"autoCompleteAllowed ? 'current-password' : 'off'\"\n\t\t\t\t:label=\"t('core', 'Password')\"\n\t\t\t\t:helper-text=\"errorLabel\"\n\t\t\t\t:error=\"isError\"\n\t\t\t\tdata-login-form-input-password\n\t\t\t\trequired />\n\n\t\t\t<LoginButton data-login-form-submit :loading=\"loading\" />\n\n\t\t\t<input v-if=\"redirectUrl\"\n\t\t\t\ttype=\"hidden\"\n\t\t\t\tname=\"redirect_url\"\n\t\t\t\t:value=\"redirectUrl\">\n\t\t\t<input type=\"hidden\"\n\t\t\t\tname=\"timezone\"\n\t\t\t\t:value=\"timezone\">\n\t\t\t<input type=\"hidden\"\n\t\t\t\tname=\"timezone_offset\"\n\t\t\t\t:value=\"timezoneOffset\">\n\t\t\t<input type=\"hidden\"\n\t\t\t\tname=\"requesttoken\"\n\t\t\t\t:value=\"requestToken\">\n\t\t\t<input v-if=\"directLogin\"\n\t\t\t\ttype=\"hidden\"\n\t\t\t\tname=\"direct\"\n\t\t\t\tvalue=\"1\">\n\t\t</fieldset>\n\t</form>\n</template>\n\n<script>\nimport { loadState } from '@nextcloud/initial-state'\nimport { translate as t } from '@nextcloud/l10n'\nimport { generateUrl, imagePath } from '@nextcloud/router'\nimport { debounce } from 'debounce'\n\nimport NcPasswordField from '@nextcloud/vue/dist/Components/NcPasswordField.js'\nimport NcTextField from '@nextcloud/vue/dist/Components/NcTextField.js'\nimport NcNoteCard from '@nextcloud/vue/dist/Components/NcNoteCard.js'\n\nimport AuthMixin from '../../mixins/auth.js'\nimport LoginButton from './LoginButton.vue'\n\nexport default {\n\tname: 'LoginForm',\n\n\tcomponents: {\n\t\tLoginButton,\n\t\tNcPasswordField,\n\t\tNcTextField,\n\t\tNcNoteCard,\n\t},\n\n\tmixins: [AuthMixin],\n\n\tprops: {\n\t\tusername: {\n\t\t\ttype: String,\n\t\t\tdefault: '',\n\t\t},\n\t\tredirectUrl: {\n\t\t\ttype: [String, Boolean],\n\t\t\tdefault: false,\n\t\t},\n\t\terrors: {\n\t\t\ttype: Array,\n\t\t\tdefault: () => [],\n\t\t},\n\t\tmessages: {\n\t\t\ttype: Array,\n\t\t\tdefault: () => [],\n\t\t},\n\t\tthrottleDelay: {\n\t\t\ttype: Number,\n\t\t\tdefault: 0,\n\t\t},\n\t\tautoCompleteAllowed: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: true,\n\t\t},\n\t\tdirectLogin: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\t\temailStates: {\n\t\t\ttype: Array,\n\t\t\tdefault() {\n\t\t\t\treturn []\n\t\t\t},\n\t\t},\n\t},\n\n\tsetup() {\n\t\t// non reactive props\n\t\treturn {\n\t\t\tt,\n\n\t\t\t// Disable escape and sanitize to prevent special characters to be html escaped\n\t\t\t// For example \"J's cloud\" would be escaped to \"J' cloud\". But we do not need escaping as Vue does this in `v-text` automatically\n\t\t\theadlineText: t('core', 'Log in to {productName}', { productName: OC.theme.name }, undefined, { sanitize: false, escape: false }),\n\n\t\t\tloginTimeout: loadState('core', 'loginTimeout', 300),\n\t\t\trequestToken: window.OC.requestToken,\n\t\t\ttimezone: (new Intl.DateTimeFormat())?.resolvedOptions()?.timeZone,\n\t\t\ttimezoneOffset: (-new Date().getTimezoneOffset() / 60),\n\t\t}\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\tloading: false,\n\t\t\tuser: '',\n\t\t\tpassword: '',\n\t\t}\n\t},\n\n\tcomputed: {\n\t\t/**\n\t\t * Reset the login form after a long idle time (debounced)\n\t\t */\n\t\tresetFormTimeout() {\n\t\t\t// Infinite timeout, do nothing\n\t\t\tif (this.loginTimeout <= 0) {\n\t\t\t\treturn () => {}\n\t\t\t}\n\t\t\t// Debounce for given timeout (in seconds so convert to milli seconds)\n\t\t\treturn debounce(this.handleResetForm, this.loginTimeout * 1000)\n\t\t},\n\n\t\tisError() {\n\t\t\treturn this.invalidPassword || this.userDisabled\n\t\t\t\t|| this.throttleDelay > 5000\n\t\t},\n\t\terrorLabel() {\n\t\t\tif (this.invalidPassword) {\n\t\t\t\treturn t('core', 'Wrong login or password.')\n\t\t\t}\n\t\t\tif (this.userDisabled) {\n\t\t\t\treturn t('core', 'This account is disabled')\n\t\t\t}\n\t\t\tif (this.throttleDelay > 5000) {\n\t\t\t\treturn t('core', 'We have detected multiple invalid login attempts from your IP. Therefore your next login is throttled up to 30 seconds.')\n\t\t\t}\n\t\t\treturn undefined\n\t\t},\n\t\tapacheAuthFailed() {\n\t\t\treturn this.errors.indexOf('apacheAuthFailed') !== -1\n\t\t},\n\t\tcsrfCheckFailed() {\n\t\t\treturn this.errors.indexOf('csrfCheckFailed') !== -1\n\t\t},\n\t\tinternalException() {\n\t\t\treturn this.errors.indexOf('internalexception') !== -1\n\t\t},\n\t\tinvalidPassword() {\n\t\t\treturn this.errors.indexOf('invalidpassword') !== -1\n\t\t},\n\t\tuserDisabled() {\n\t\t\treturn this.errors.indexOf('userdisabled') !== -1\n\t\t},\n\t\tloadingIcon() {\n\t\t\treturn imagePath('core', 'loading-dark.gif')\n\t\t},\n\t\tloginActionUrl() {\n\t\t\treturn generateUrl('login')\n\t\t},\n\t\temailEnabled() {\n\t\t\treturn this.emailStates ? this.emailStates.every((state) => state === '1') : 1\n\t\t},\n\t\tloginText() {\n\t\t\tif (this.emailEnabled) {\n\t\t\t\treturn t('core', 'Login with account name or email')\n\t\t\t}\n\t\t\treturn t('core', 'Login with account name')\n\t\t},\n\t},\n\n\twatch: {\n\t\t/**\n\t\t * Reset form reset after the password was changed\n\t\t */\n\t\tpassword() {\n\t\t\tthis.resetFormTimeout()\n\t\t},\n\t},\n\n\tmounted() {\n\t\tif (this.username === '') {\n\t\t\tthis.$refs.user.$refs.inputField.$refs.input.focus()\n\t\t} else {\n\t\t\tthis.user = this.username\n\t\t\tthis.$refs.password.$refs.inputField.$refs.input.focus()\n\t\t}\n\t},\n\n\tmethods: {\n\t\t/**\n\t\t * Handle reset of the login form after a long IDLE time\n\t\t * This is recommended security behavior to prevent password leak on public devices\n\t\t */\n\t\thandleResetForm() {\n\t\t\tthis.password = ''\n\t\t},\n\n\t\tupdateUsername() {\n\t\t\tthis.$emit('update:username', this.user)\n\t\t},\n\t\tsubmit() {\n\t\t\tthis.loading = true\n\t\t\tthis.$emit('submit')\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\n.login-form {\n\ttext-align: left;\n\tfont-size: 1rem;\n\n\t&__fieldset {\n\t\twidth: 100%;\n\t\tdisplay: flex;\n\t\tflex-direction: column;\n\t\tgap: .5rem;\n\t}\n\n\t&__headline {\n\t\ttext-align: center;\n\t\toverflow-wrap: anywhere;\n\t}\n}\n</style>\n","\n import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./LoginForm.vue?vue&type=style&index=0&id=7d917450&prod&lang=scss&scoped=true\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./LoginForm.vue?vue&type=style&index=0&id=7d917450&prod&lang=scss&scoped=true\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./LoginForm.vue?vue&type=template&id=7d917450&scoped=true\"\nimport script from \"./LoginForm.vue?vue&type=script&lang=js\"\nexport * from \"./LoginForm.vue?vue&type=script&lang=js\"\nimport style0 from \"./LoginForm.vue?vue&type=style&index=0&id=7d917450&prod&lang=scss&scoped=true\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"7d917450\",\n null\n \n)\n\nexport default component.exports","/* [@simplewebauthn/browser@10.0.0] */\nfunction bufferToBase64URLString(buffer) {\n const bytes = new Uint8Array(buffer);\n let str = '';\n for (const charCode of bytes) {\n str += String.fromCharCode(charCode);\n }\n const base64String = btoa(str);\n return base64String.replace(/\\+/g, '-').replace(/\\//g, '_').replace(/=/g, '');\n}\n\nfunction base64URLStringToBuffer(base64URLString) {\n const base64 = base64URLString.replace(/-/g, '+').replace(/_/g, '/');\n const padLength = (4 - (base64.length % 4)) % 4;\n const padded = base64.padEnd(base64.length + padLength, '=');\n const binary = atob(padded);\n const buffer = new ArrayBuffer(binary.length);\n const bytes = new Uint8Array(buffer);\n for (let i = 0; i < binary.length; i++) {\n bytes[i] = binary.charCodeAt(i);\n }\n return buffer;\n}\n\nfunction browserSupportsWebAuthn() {\n return (window?.PublicKeyCredential !== undefined &&\n typeof window.PublicKeyCredential === 'function');\n}\n\nfunction toPublicKeyCredentialDescriptor(descriptor) {\n const { id } = descriptor;\n return {\n ...descriptor,\n id: base64URLStringToBuffer(id),\n transports: descriptor.transports,\n };\n}\n\nfunction isValidDomain(hostname) {\n return (hostname === 'localhost' ||\n /^([a-z0-9]+(-[a-z0-9]+)*\\.)+[a-z]{2,}$/i.test(hostname));\n}\n\nclass WebAuthnError extends Error {\n constructor({ message, code, cause, name, }) {\n super(message, { cause });\n this.name = name ?? cause.name;\n this.code = code;\n }\n}\n\nfunction identifyRegistrationError({ error, options, }) {\n const { publicKey } = options;\n if (!publicKey) {\n throw Error('options was missing required publicKey property');\n }\n if (error.name === 'AbortError') {\n if (options.signal instanceof AbortSignal) {\n return new WebAuthnError({\n message: 'Registration ceremony was sent an abort signal',\n code: 'ERROR_CEREMONY_ABORTED',\n cause: error,\n });\n }\n }\n else if (error.name === 'ConstraintError') {\n if (publicKey.authenticatorSelection?.requireResidentKey === true) {\n return new WebAuthnError({\n message: 'Discoverable credentials were required but no available authenticator supported it',\n code: 'ERROR_AUTHENTICATOR_MISSING_DISCOVERABLE_CREDENTIAL_SUPPORT',\n cause: error,\n });\n }\n else if (publicKey.authenticatorSelection?.userVerification === 'required') {\n return new WebAuthnError({\n message: 'User verification was required but no available authenticator supported it',\n code: 'ERROR_AUTHENTICATOR_MISSING_USER_VERIFICATION_SUPPORT',\n cause: error,\n });\n }\n }\n else if (error.name === 'InvalidStateError') {\n return new WebAuthnError({\n message: 'The authenticator was previously registered',\n code: 'ERROR_AUTHENTICATOR_PREVIOUSLY_REGISTERED',\n cause: error,\n });\n }\n else if (error.name === 'NotAllowedError') {\n return new WebAuthnError({\n message: error.message,\n code: 'ERROR_PASSTHROUGH_SEE_CAUSE_PROPERTY',\n cause: error,\n });\n }\n else if (error.name === 'NotSupportedError') {\n const validPubKeyCredParams = publicKey.pubKeyCredParams.filter((param) => param.type === 'public-key');\n if (validPubKeyCredParams.length === 0) {\n return new WebAuthnError({\n message: 'No entry in pubKeyCredParams was of type \"public-key\"',\n code: 'ERROR_MALFORMED_PUBKEYCREDPARAMS',\n cause: error,\n });\n }\n return new WebAuthnError({\n message: 'No available authenticator supported any of the specified pubKeyCredParams algorithms',\n code: 'ERROR_AUTHENTICATOR_NO_SUPPORTED_PUBKEYCREDPARAMS_ALG',\n cause: error,\n });\n }\n else if (error.name === 'SecurityError') {\n const effectiveDomain = window.location.hostname;\n if (!isValidDomain(effectiveDomain)) {\n return new WebAuthnError({\n message: `${window.location.hostname} is an invalid domain`,\n code: 'ERROR_INVALID_DOMAIN',\n cause: error,\n });\n }\n else if (publicKey.rp.id !== effectiveDomain) {\n return new WebAuthnError({\n message: `The RP ID \"${publicKey.rp.id}\" is invalid for this domain`,\n code: 'ERROR_INVALID_RP_ID',\n cause: error,\n });\n }\n }\n else if (error.name === 'TypeError') {\n if (publicKey.user.id.byteLength < 1 || publicKey.user.id.byteLength > 64) {\n return new WebAuthnError({\n message: 'User ID was not between 1 and 64 characters',\n code: 'ERROR_INVALID_USER_ID_LENGTH',\n cause: error,\n });\n }\n }\n else if (error.name === 'UnknownError') {\n return new WebAuthnError({\n message: 'The authenticator was unable to process the specified options, or could not create a new credential',\n code: 'ERROR_AUTHENTICATOR_GENERAL_ERROR',\n cause: error,\n });\n }\n return error;\n}\n\nclass BaseWebAuthnAbortService {\n createNewAbortSignal() {\n if (this.controller) {\n const abortError = new Error('Cancelling existing WebAuthn API call for new one');\n abortError.name = 'AbortError';\n this.controller.abort(abortError);\n }\n const newController = new AbortController();\n this.controller = newController;\n return newController.signal;\n }\n cancelCeremony() {\n if (this.controller) {\n const abortError = new Error('Manually cancelling existing WebAuthn API call');\n abortError.name = 'AbortError';\n this.controller.abort(abortError);\n this.controller = undefined;\n }\n }\n}\nconst WebAuthnAbortService = new BaseWebAuthnAbortService();\n\nconst attachments = ['cross-platform', 'platform'];\nfunction toAuthenticatorAttachment(attachment) {\n if (!attachment) {\n return;\n }\n if (attachments.indexOf(attachment) < 0) {\n return;\n }\n return attachment;\n}\n\nasync function startRegistration(optionsJSON) {\n if (!browserSupportsWebAuthn()) {\n throw new Error('WebAuthn is not supported in this browser');\n }\n const publicKey = {\n ...optionsJSON,\n challenge: base64URLStringToBuffer(optionsJSON.challenge),\n user: {\n ...optionsJSON.user,\n id: base64URLStringToBuffer(optionsJSON.user.id),\n },\n excludeCredentials: optionsJSON.excludeCredentials?.map(toPublicKeyCredentialDescriptor),\n };\n const options = { publicKey };\n options.signal = WebAuthnAbortService.createNewAbortSignal();\n let credential;\n try {\n credential = (await navigator.credentials.create(options));\n }\n catch (err) {\n throw identifyRegistrationError({ error: err, options });\n }\n if (!credential) {\n throw new Error('Registration was not completed');\n }\n const { id, rawId, response, type } = credential;\n let transports = undefined;\n if (typeof response.getTransports === 'function') {\n transports = response.getTransports();\n }\n let responsePublicKeyAlgorithm = undefined;\n if (typeof response.getPublicKeyAlgorithm === 'function') {\n try {\n responsePublicKeyAlgorithm = response.getPublicKeyAlgorithm();\n }\n catch (error) {\n warnOnBrokenImplementation('getPublicKeyAlgorithm()', error);\n }\n }\n let responsePublicKey = undefined;\n if (typeof response.getPublicKey === 'function') {\n try {\n const _publicKey = response.getPublicKey();\n if (_publicKey !== null) {\n responsePublicKey = bufferToBase64URLString(_publicKey);\n }\n }\n catch (error) {\n warnOnBrokenImplementation('getPublicKey()', error);\n }\n }\n let responseAuthenticatorData;\n if (typeof response.getAuthenticatorData === 'function') {\n try {\n responseAuthenticatorData = bufferToBase64URLString(response.getAuthenticatorData());\n }\n catch (error) {\n warnOnBrokenImplementation('getAuthenticatorData()', error);\n }\n }\n return {\n id,\n rawId: bufferToBase64URLString(rawId),\n response: {\n attestationObject: bufferToBase64URLString(response.attestationObject),\n clientDataJSON: bufferToBase64URLString(response.clientDataJSON),\n transports,\n publicKeyAlgorithm: responsePublicKeyAlgorithm,\n publicKey: responsePublicKey,\n authenticatorData: responseAuthenticatorData,\n },\n type,\n clientExtensionResults: credential.getClientExtensionResults(),\n authenticatorAttachment: toAuthenticatorAttachment(credential.authenticatorAttachment),\n };\n}\nfunction warnOnBrokenImplementation(methodName, cause) {\n console.warn(`The browser extension that intercepted this WebAuthn API call incorrectly implemented ${methodName}. You should report this error to them.\\n`, cause);\n}\n\nfunction browserSupportsWebAuthnAutofill() {\n if (!browserSupportsWebAuthn()) {\n return new Promise((resolve) => resolve(false));\n }\n const globalPublicKeyCredential = window\n .PublicKeyCredential;\n if (globalPublicKeyCredential.isConditionalMediationAvailable === undefined) {\n return new Promise((resolve) => resolve(false));\n }\n return globalPublicKeyCredential.isConditionalMediationAvailable();\n}\n\nfunction identifyAuthenticationError({ error, options, }) {\n const { publicKey } = options;\n if (!publicKey) {\n throw Error('options was missing required publicKey property');\n }\n if (error.name === 'AbortError') {\n if (options.signal instanceof AbortSignal) {\n return new WebAuthnError({\n message: 'Authentication ceremony was sent an abort signal',\n code: 'ERROR_CEREMONY_ABORTED',\n cause: error,\n });\n }\n }\n else if (error.name === 'NotAllowedError') {\n return new WebAuthnError({\n message: error.message,\n code: 'ERROR_PASSTHROUGH_SEE_CAUSE_PROPERTY',\n cause: error,\n });\n }\n else if (error.name === 'SecurityError') {\n const effectiveDomain = window.location.hostname;\n if (!isValidDomain(effectiveDomain)) {\n return new WebAuthnError({\n message: `${window.location.hostname} is an invalid domain`,\n code: 'ERROR_INVALID_DOMAIN',\n cause: error,\n });\n }\n else if (publicKey.rpId !== effectiveDomain) {\n return new WebAuthnError({\n message: `The RP ID \"${publicKey.rpId}\" is invalid for this domain`,\n code: 'ERROR_INVALID_RP_ID',\n cause: error,\n });\n }\n }\n else if (error.name === 'UnknownError') {\n return new WebAuthnError({\n message: 'The authenticator was unable to process the specified options, or could not create a new assertion signature',\n code: 'ERROR_AUTHENTICATOR_GENERAL_ERROR',\n cause: error,\n });\n }\n return error;\n}\n\nasync function startAuthentication(optionsJSON, useBrowserAutofill = false) {\n if (!browserSupportsWebAuthn()) {\n throw new Error('WebAuthn is not supported in this browser');\n }\n let allowCredentials;\n if (optionsJSON.allowCredentials?.length !== 0) {\n allowCredentials = optionsJSON.allowCredentials?.map(toPublicKeyCredentialDescriptor);\n }\n const publicKey = {\n ...optionsJSON,\n challenge: base64URLStringToBuffer(optionsJSON.challenge),\n allowCredentials,\n };\n const options = {};\n if (useBrowserAutofill) {\n if (!(await browserSupportsWebAuthnAutofill())) {\n throw Error('Browser does not support WebAuthn autofill');\n }\n const eligibleInputs = document.querySelectorAll(\"input[autocomplete$='webauthn']\");\n if (eligibleInputs.length < 1) {\n throw Error('No <input> with \"webauthn\" as the only or last value in its `autocomplete` attribute was detected');\n }\n options.mediation = 'conditional';\n publicKey.allowCredentials = [];\n }\n options.publicKey = publicKey;\n options.signal = WebAuthnAbortService.createNewAbortSignal();\n let credential;\n try {\n credential = (await navigator.credentials.get(options));\n }\n catch (err) {\n throw identifyAuthenticationError({ error: err, options });\n }\n if (!credential) {\n throw new Error('Authentication was not completed');\n }\n const { id, rawId, response, type } = credential;\n let userHandle = undefined;\n if (response.userHandle) {\n userHandle = bufferToBase64URLString(response.userHandle);\n }\n return {\n id,\n rawId: bufferToBase64URLString(rawId),\n response: {\n authenticatorData: bufferToBase64URLString(response.authenticatorData),\n clientDataJSON: bufferToBase64URLString(response.clientDataJSON),\n signature: bufferToBase64URLString(response.signature),\n userHandle,\n },\n type,\n clientExtensionResults: credential.getClientExtensionResults(),\n authenticatorAttachment: toAuthenticatorAttachment(credential.authenticatorAttachment),\n };\n}\n\nfunction platformAuthenticatorIsAvailable() {\n if (!browserSupportsWebAuthn()) {\n return new Promise((resolve) => resolve(false));\n }\n return PublicKeyCredential.isUserVerifyingPlatformAuthenticatorAvailable();\n}\n\nexport { WebAuthnAbortService, WebAuthnError, base64URLStringToBuffer, browserSupportsWebAuthn, browserSupportsWebAuthnAutofill, bufferToBase64URLString, platformAuthenticatorIsAvailable, startAuthentication, startRegistration };\n","/**\n * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport { getCurrentUser } from '@nextcloud/auth'\nimport { getLoggerBuilder } from '@nextcloud/logger'\n\nconst getLogger = user => {\n\tif (user === null) {\n\t\treturn getLoggerBuilder()\n\t\t\t.setApp('core')\n\t\t\t.build()\n\t}\n\treturn getLoggerBuilder()\n\t\t.setApp('core')\n\t\t.setUid(user.uid)\n\t\t.build()\n}\n\nexport default getLogger(getCurrentUser())\n","/**\n * SPDX-FileCopyrightText: 2020 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport { startAuthentication as startWebauthnAuthentication } from '@simplewebauthn/browser';\nimport { generateUrl } from '@nextcloud/router';\nimport Axios from '@nextcloud/axios';\nimport logger from '../logger';\nexport class NoValidCredentials extends Error {\n}\n/**\n * Start webautn authentication\n * This loads the challenge, connects to the authenticator and returns the repose that needs to be sent to the server.\n *\n * @param loginName Name to login\n */\nexport async function startAuthentication(loginName) {\n const url = generateUrl('/login/webauthn/start');\n const { data } = await Axios.post(url, { loginName });\n if (!data.allowCredentials || data.allowCredentials.length === 0) {\n logger.error('No valid credentials returned for webauthn');\n throw new NoValidCredentials();\n }\n return await startWebauthnAuthentication(data);\n}\n/**\n * Verify webauthn authentication\n * @param authData The authentication data to sent to the server\n */\nexport async function finishAuthentication(authData) {\n const url = generateUrl('/login/webauthn/finish');\n const { data } = await Axios.post(url, { data: JSON.stringify(authData) });\n return data;\n}\n","<template>\n <span v-bind=\"$attrs\"\n :aria-hidden=\"title ? null : true\"\n :aria-label=\"title\"\n class=\"material-design-icon information-icon\"\n role=\"img\"\n @click=\"$emit('click', $event)\">\n <svg :fill=\"fillColor\"\n class=\"material-design-icon__svg\"\n :width=\"size\"\n :height=\"size\"\n viewBox=\"0 0 24 24\">\n <path d=\"M13,9H11V7H13M13,17H11V11H13M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2Z\">\n <title v-if=\"title\">{{ title }}</title>\n </path>\n </svg>\n </span>\n</template>\n\n<script>\nexport default {\n name: \"InformationIcon\",\n emits: ['click'],\n props: {\n title: {\n type: String,\n },\n fillColor: {\n type: String,\n default: \"currentColor\"\n },\n size: {\n type: Number,\n default: 24\n }\n }\n}\n</script>","import mod from \"-!../vue-loader/lib/index.js??vue-loader-options!./Information.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../vue-loader/lib/index.js??vue-loader-options!./Information.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./Information.vue?vue&type=template&id=70e6f3ef\"\nimport script from \"./Information.vue?vue&type=script&lang=js\"\nexport * from \"./Information.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('span',_vm._b({staticClass:\"material-design-icon information-icon\",attrs:{\"aria-hidden\":_vm.title ? null : true,\"aria-label\":_vm.title,\"role\":\"img\"},on:{\"click\":function($event){return _vm.$emit('click', $event)}}},'span',_vm.$attrs,false),[_c('svg',{staticClass:\"material-design-icon__svg\",attrs:{\"fill\":_vm.fillColor,\"width\":_vm.size,\"height\":_vm.size,\"viewBox\":\"0 0 24 24\"}},[_c('path',{attrs:{\"d\":\"M13,9H11V7H13M13,17H11V11H13M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2Z\"}},[(_vm.title)?_c('title',[_vm._v(_vm._s(_vm.title))]):_vm._e()])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../vue-loader/lib/index.js??vue-loader-options!./LockOpen.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../vue-loader/lib/index.js??vue-loader-options!./LockOpen.vue?vue&type=script&lang=js\"","<template>\n <span v-bind=\"$attrs\"\n :aria-hidden=\"title ? null : true\"\n :aria-label=\"title\"\n class=\"material-design-icon lock-open-icon\"\n role=\"img\"\n @click=\"$emit('click', $event)\">\n <svg :fill=\"fillColor\"\n class=\"material-design-icon__svg\"\n :width=\"size\"\n :height=\"size\"\n viewBox=\"0 0 24 24\">\n <path d=\"M18,8A2,2 0 0,1 20,10V20A2,2 0 0,1 18,22H6C4.89,22 4,21.1 4,20V10A2,2 0 0,1 6,8H15V6A3,3 0 0,0 12,3A3,3 0 0,0 9,6H7A5,5 0 0,1 12,1A5,5 0 0,1 17,6V8H18M12,17A2,2 0 0,0 14,15A2,2 0 0,0 12,13A2,2 0 0,0 10,15A2,2 0 0,0 12,17Z\">\n <title v-if=\"title\">{{ title }}</title>\n </path>\n </svg>\n </span>\n</template>\n\n<script>\nexport default {\n name: \"LockOpenIcon\",\n emits: ['click'],\n props: {\n title: {\n type: String,\n },\n fillColor: {\n type: String,\n default: \"currentColor\"\n },\n size: {\n type: Number,\n default: 24\n }\n }\n}\n</script>","import { render, staticRenderFns } from \"./LockOpen.vue?vue&type=template&id=1b7ea4e7\"\nimport script from \"./LockOpen.vue?vue&type=script&lang=js\"\nexport * from \"./LockOpen.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('span',_vm._b({staticClass:\"material-design-icon lock-open-icon\",attrs:{\"aria-hidden\":_vm.title ? null : true,\"aria-label\":_vm.title,\"role\":\"img\"},on:{\"click\":function($event){return _vm.$emit('click', $event)}}},'span',_vm.$attrs,false),[_c('svg',{staticClass:\"material-design-icon__svg\",attrs:{\"fill\":_vm.fillColor,\"width\":_vm.size,\"height\":_vm.size,\"viewBox\":\"0 0 24 24\"}},[_c('path',{attrs:{\"d\":\"M18,8A2,2 0 0,1 20,10V20A2,2 0 0,1 18,22H6C4.89,22 4,21.1 4,20V10A2,2 0 0,1 6,8H15V6A3,3 0 0,0 12,3A3,3 0 0,0 9,6H7A5,5 0 0,1 12,1A5,5 0 0,1 17,6V8H18M12,17A2,2 0 0,0 14,15A2,2 0 0,0 12,13A2,2 0 0,0 10,15A2,2 0 0,0 12,17Z\"}},[(_vm.title)?_c('title',[_vm._v(_vm._s(_vm.title))]):_vm._e()])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\n - SPDX-FileCopyrightText: 2020 Nextcloud GmbH and Nextcloud contributors\n - SPDX-License-Identifier: AGPL-3.0-or-later\n-->\n<template>\n\t<form v-if=\"(isHttps || isLocalhost) && supportsWebauthn\"\n\t\tref=\"loginForm\"\n\t\tmethod=\"post\"\n\t\tname=\"login\"\n\t\t@submit.prevent=\"submit\">\n\t\t<h2>{{ t('core', 'Log in with a device') }}</h2>\n\t\t<fieldset>\n\t\t\t<NcTextField required\n\t\t\t\t:value=\"user\"\n\t\t\t\t:autocomplete=\"autoCompleteAllowed ? 'on' : 'off'\"\n\t\t\t\t:error=\"!validCredentials\"\n\t\t\t\t:label=\"t('core', 'Login or email')\"\n\t\t\t\t:placeholder=\"t('core', 'Login or email')\"\n\t\t\t\t:helper-text=\"!validCredentials ? t('core', 'Your account is not setup for passwordless login.') : ''\"\n\t\t\t\t@update:value=\"changeUsername\" />\n\n\t\t\t<LoginButton v-if=\"validCredentials\"\n\t\t\t\t:loading=\"loading\"\n\t\t\t\t@click=\"authenticate\" />\n\t\t</fieldset>\n\t</form>\n\t<div v-else-if=\"!supportsWebauthn\" class=\"update\">\n\t\t<InformationIcon size=\"70\" />\n\t\t<h2>{{ t('core', 'Browser not supported') }}</h2>\n\t\t<p class=\"infogroup\">\n\t\t\t{{ t('core', 'Passwordless authentication is not supported in your browser.') }}\n\t\t</p>\n\t</div>\n\t<div v-else-if=\"!isHttps && !isLocalhost\" class=\"update\">\n\t\t<LockOpenIcon size=\"70\" />\n\t\t<h2>{{ t('core', 'Your connection is not secure') }}</h2>\n\t\t<p class=\"infogroup\">\n\t\t\t{{ t('core', 'Passwordless authentication is only available over a secure connection.') }}\n\t\t</p>\n\t</div>\n</template>\n\n<script>\nimport { browserSupportsWebAuthn } from '@simplewebauthn/browser'\nimport {\n\tstartAuthentication,\n\tfinishAuthentication,\n} from '../../services/WebAuthnAuthenticationService.ts'\nimport LoginButton from './LoginButton.vue'\nimport InformationIcon from 'vue-material-design-icons/Information.vue'\nimport LockOpenIcon from 'vue-material-design-icons/LockOpen.vue'\nimport NcTextField from '@nextcloud/vue/dist/Components/NcTextField.js'\nimport logger from '../../logger'\n\nexport default {\n\tname: 'PasswordLessLoginForm',\n\tcomponents: {\n\t\tLoginButton,\n\t\tInformationIcon,\n\t\tLockOpenIcon,\n\t\tNcTextField,\n\t},\n\tprops: {\n\t\tusername: {\n\t\t\ttype: String,\n\t\t\tdefault: '',\n\t\t},\n\t\tredirectUrl: {\n\t\t\ttype: [String, Boolean],\n\t\t\tdefault: false,\n\t\t},\n\t\tautoCompleteAllowed: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: true,\n\t\t},\n\t\tisHttps: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\t\tisLocalhost: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\t},\n\n\tsetup() {\n\t\treturn {\n\t\t\tsupportsWebauthn: browserSupportsWebAuthn(),\n\t\t}\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\tuser: this.username,\n\t\t\tloading: false,\n\t\t\tvalidCredentials: true,\n\t\t}\n\t},\n\tmethods: {\n\t\tasync authenticate() {\n\t\t\t// check required fields\n\t\t\tif (!this.$refs.loginForm.checkValidity()) {\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\tconsole.debug('passwordless login initiated')\n\n\t\t\ttry {\n\t\t\t\tconst params = await startAuthentication(this.user)\n\t\t\t\tawait this.completeAuthentication(params)\n\t\t\t} catch (error) {\n\t\t\t\tif (error instanceof NoValidCredentials) {\n\t\t\t\t\tthis.validCredentials = false\n\t\t\t\t\treturn\n\t\t\t\t}\n\t\t\t\tlogger.debug(error)\n\t\t\t}\n\t\t},\n\t\tchangeUsername(username) {\n\t\t\tthis.user = username\n\t\t\tthis.$emit('update:username', this.user)\n\t\t},\n\t\tcompleteAuthentication(challenge) {\n\t\t\tconst redirectUrl = this.redirectUrl\n\n\t\t\treturn finishAuthentication(challenge)\n\t\t\t\t.then(({ defaultRedirectUrl }) => {\n\t\t\t\t\tconsole.debug('Logged in redirecting')\n\t\t\t\t\t// Redirect url might be false so || should be used instead of ??.\n\t\t\t\t\twindow.location.href = redirectUrl || defaultRedirectUrl\n\t\t\t\t})\n\t\t\t\t.catch(error => {\n\t\t\t\t\tconsole.debug('GOT AN ERROR WHILE SUBMITTING CHALLENGE!')\n\t\t\t\t\tconsole.debug(error) // Example: timeout, interaction refused...\n\t\t\t\t})\n\t\t},\n\t\tsubmit() {\n\t\t\t// noop\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\n\tfieldset {\n\t\tdisplay: flex;\n\t\tflex-direction: column;\n\t\tgap: 0.5rem;\n\n\t\t:deep(label) {\n\t\t\ttext-align: initial;\n\t\t}\n\t}\n\n\t.update {\n\t\tmargin: 0 auto;\n\t}\n</style>\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PasswordLessLoginForm.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PasswordLessLoginForm.vue?vue&type=script&lang=js\"","\n import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PasswordLessLoginForm.vue?vue&type=style&index=0&id=4a6bfc86&prod&lang=scss&scoped=true\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PasswordLessLoginForm.vue?vue&type=style&index=0&id=4a6bfc86&prod&lang=scss&scoped=true\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./PasswordLessLoginForm.vue?vue&type=template&id=4a6bfc86&scoped=true\"\nimport script from \"./PasswordLessLoginForm.vue?vue&type=script&lang=js\"\nexport * from \"./PasswordLessLoginForm.vue?vue&type=script&lang=js\"\nimport style0 from \"./PasswordLessLoginForm.vue?vue&type=style&index=0&id=4a6bfc86&prod&lang=scss&scoped=true\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"4a6bfc86\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return ((_vm.isHttps || _vm.isLocalhost) && _vm.supportsWebauthn)?_c('form',{ref:\"loginForm\",attrs:{\"method\":\"post\",\"name\":\"login\"},on:{\"submit\":function($event){$event.preventDefault();return _vm.submit.apply(null, arguments)}}},[_c('h2',[_vm._v(_vm._s(_vm.t('core', 'Log in with a device')))]),_vm._v(\" \"),_c('fieldset',[_c('NcTextField',{attrs:{\"required\":\"\",\"value\":_vm.user,\"autocomplete\":_vm.autoCompleteAllowed ? 'on' : 'off',\"error\":!_vm.validCredentials,\"label\":_vm.t('core', 'Login or email'),\"placeholder\":_vm.t('core', 'Login or email'),\"helper-text\":!_vm.validCredentials ? _vm.t('core', 'Your account is not setup for passwordless login.') : ''},on:{\"update:value\":_vm.changeUsername}}),_vm._v(\" \"),(_vm.validCredentials)?_c('LoginButton',{attrs:{\"loading\":_vm.loading},on:{\"click\":_vm.authenticate}}):_vm._e()],1)]):(!_vm.supportsWebauthn)?_c('div',{staticClass:\"update\"},[_c('InformationIcon',{attrs:{\"size\":\"70\"}}),_vm._v(\" \"),_c('h2',[_vm._v(_vm._s(_vm.t('core', 'Browser not supported')))]),_vm._v(\" \"),_c('p',{staticClass:\"infogroup\"},[_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.t('core', 'Passwordless authentication is not supported in your browser.'))+\"\\n\\t\")])],1):(!_vm.isHttps && !_vm.isLocalhost)?_c('div',{staticClass:\"update\"},[_c('LockOpenIcon',{attrs:{\"size\":\"70\"}}),_vm._v(\" \"),_c('h2',[_vm._v(_vm._s(_vm.t('core', 'Your connection is not secure')))]),_vm._v(\" \"),_c('p',{staticClass:\"infogroup\"},[_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.t('core', 'Passwordless authentication is only available over a secure connection.'))+\"\\n\\t\")])],1):_vm._e()\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('form',{staticClass:\"login-form\",on:{\"submit\":function($event){$event.preventDefault();return _vm.submit.apply(null, arguments)}}},[_c('fieldset',{staticClass:\"login-form__fieldset\"},[_c('NcTextField',{attrs:{\"id\":\"user\",\"value\":_vm.user,\"name\":\"user\",\"maxlength\":255,\"autocapitalize\":\"off\",\"label\":_vm.t('core', 'Login or email'),\"error\":_vm.userNameInputLengthIs255,\"helper-text\":_vm.userInputHelperText,\"required\":\"\"},on:{\"update:value\":function($event){_vm.user=$event},\"change\":_vm.updateUsername}}),_vm._v(\" \"),_c('LoginButton',{attrs:{\"value\":_vm.t('core', 'Reset password')}}),_vm._v(\" \"),(_vm.message === 'send-success')?_c('NcNoteCard',{attrs:{\"type\":\"success\"}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('core', 'If this account exists, a password reset message has been sent to its email address. If you do not receive it, verify your email address and/or Login, check your spam/junk folders or ask your local administration for help.'))+\"\\n\\t\\t\")]):(_vm.message === 'send-error')?_c('NcNoteCard',{attrs:{\"type\":\"error\"}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('core', 'Couldn\\'t send reset email. Please contact your administrator.'))+\"\\n\\t\\t\")]):(_vm.message === 'reset-error')?_c('NcNoteCard',{attrs:{\"type\":\"error\"}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('core', 'Password cannot be changed. Please contact your administrator.'))+\"\\n\\t\\t\")]):_vm._e(),_vm._v(\" \"),_c('a',{staticClass:\"login-form__link\",attrs:{\"href\":\"#\"},on:{\"click\":function($event){$event.preventDefault();return _vm.$emit('abort')}}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('core', 'Back to login'))+\"\\n\\t\\t\")])],1)])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\n - SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\n - SPDX-License-Identifier: AGPL-3.0-or-later\n-->\n\n<template>\n\t<form class=\"login-form\" @submit.prevent=\"submit\">\n\t\t<fieldset class=\"login-form__fieldset\">\n\t\t\t<NcTextField id=\"user\"\n\t\t\t\t:value.sync=\"user\"\n\t\t\t\tname=\"user\"\n\t\t\t\t:maxlength=\"255\"\n\t\t\t\tautocapitalize=\"off\"\n\t\t\t\t:label=\"t('core', 'Login or email')\"\n\t\t\t\t:error=\"userNameInputLengthIs255\"\n\t\t\t\t:helper-text=\"userInputHelperText\"\n\t\t\t\trequired\n\t\t\t\t@change=\"updateUsername\" />\n\t\t\t<LoginButton :value=\"t('core', 'Reset password')\" />\n\n\t\t\t<NcNoteCard v-if=\"message === 'send-success'\"\n\t\t\t\ttype=\"success\">\n\t\t\t\t{{ t('core', 'If this account exists, a password reset message has been sent to its email address. If you do not receive it, verify your email address and/or Login, check your spam/junk folders or ask your local administration for help.') }}\n\t\t\t</NcNoteCard>\n\t\t\t<NcNoteCard v-else-if=\"message === 'send-error'\"\n\t\t\t\ttype=\"error\">\n\t\t\t\t{{ t('core', 'Couldn\\'t send reset email. Please contact your administrator.') }}\n\t\t\t</NcNoteCard>\n\t\t\t<NcNoteCard v-else-if=\"message === 'reset-error'\"\n\t\t\t\ttype=\"error\">\n\t\t\t\t{{ t('core', 'Password cannot be changed. Please contact your administrator.') }}\n\t\t\t</NcNoteCard>\n\n\t\t\t<a class=\"login-form__link\"\n\t\t\t\thref=\"#\"\n\t\t\t\t@click.prevent=\"$emit('abort')\">\n\t\t\t\t{{ t('core', 'Back to login') }}\n\t\t\t</a>\n\t\t</fieldset>\n\t</form>\n</template>\n\n<script>\nimport axios from '@nextcloud/axios'\nimport { generateUrl } from '@nextcloud/router'\nimport LoginButton from './LoginButton.vue'\nimport NcTextField from '@nextcloud/vue/dist/Components/NcTextField.js'\nimport NcNoteCard from '@nextcloud/vue/dist/Components/NcNoteCard.js'\n\nimport AuthMixin from '../../mixins/auth.js'\n\nexport default {\n\tname: 'ResetPassword',\n\tcomponents: {\n\t\tLoginButton,\n\t\tNcNoteCard,\n\t\tNcTextField,\n\t},\n\tmixins: [AuthMixin],\n\tprops: {\n\t\tusername: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t\tresetPasswordLink: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t},\n\tdata() {\n\t\treturn {\n\t\t\terror: false,\n\t\t\tloading: false,\n\t\t\tmessage: undefined,\n\t\t\tuser: this.username,\n\t\t}\n\t},\n\twatch: {\n\t\tusername(value) {\n\t\t\tthis.user = value\n\t\t},\n\t},\n\tmethods: {\n\t\tupdateUsername() {\n\t\t\tthis.$emit('update:username', this.user)\n\t\t},\n\t\tsubmit() {\n\t\t\tthis.loading = true\n\t\t\tthis.error = false\n\t\t\tthis.message = ''\n\t\t\tconst url = generateUrl('/lostpassword/email')\n\n\t\t\tconst data = {\n\t\t\t\tuser: this.user,\n\t\t\t}\n\n\t\t\treturn axios.post(url, data)\n\t\t\t\t.then(resp => resp.data)\n\t\t\t\t.then(data => {\n\t\t\t\t\tif (data.status !== 'success') {\n\t\t\t\t\t\tthrow new Error(`got status ${data.status}`)\n\t\t\t\t\t}\n\n\t\t\t\t\tthis.message = 'send-success'\n\t\t\t\t})\n\t\t\t\t.catch(e => {\n\t\t\t\t\tconsole.error('could not send reset email request', e)\n\n\t\t\t\t\tthis.error = true\n\t\t\t\t\tthis.message = 'send-error'\n\t\t\t\t})\n\t\t\t\t.then(() => { this.loading = false })\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\n.login-form {\n\ttext-align: left;\n\tfont-size: 1rem;\n\n\t&__fieldset {\n\t\twidth: 100%;\n\t\tdisplay: flex;\n\t\tflex-direction: column;\n\t\tgap: .5rem;\n\t}\n\n\t&__link {\n\t\tdisplay: block;\n\t\tfont-weight: normal !important;\n\t\tpadding-bottom: 1rem;\n\t\tcursor: pointer;\n\t\tfont-size: var(--default-font-size);\n\t\ttext-align: center;\n\t\tpadding: .5rem 1rem 1rem 1rem;\n\t}\n}\n</style>\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ResetPassword.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ResetPassword.vue?vue&type=script&lang=js\"","\n import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ResetPassword.vue?vue&type=style&index=0&id=cd5425c6&prod&lang=scss&scoped=true\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ResetPassword.vue?vue&type=style&index=0&id=cd5425c6&prod&lang=scss&scoped=true\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./ResetPassword.vue?vue&type=template&id=cd5425c6&scoped=true\"\nimport script from \"./ResetPassword.vue?vue&type=script&lang=js\"\nexport * from \"./ResetPassword.vue?vue&type=script&lang=js\"\nimport style0 from \"./ResetPassword.vue?vue&type=style&index=0&id=cd5425c6&prod&lang=scss&scoped=true\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"cd5425c6\",\n null\n \n)\n\nexport default component.exports","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./UpdatePassword.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./UpdatePassword.vue?vue&type=script&lang=js\"","<!--\n - SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\n - SPDX-License-Identifier: AGPL-3.0-or-later\n-->\n\n<template>\n\t<form @submit.prevent=\"submit\">\n\t\t<fieldset>\n\t\t\t<p>\n\t\t\t\t<label for=\"password\" class=\"infield\">{{ t('core', 'New password') }}</label>\n\t\t\t\t<input id=\"password\"\n\t\t\t\t\tv-model=\"password\"\n\t\t\t\t\ttype=\"password\"\n\t\t\t\t\tname=\"password\"\n\t\t\t\t\tautocomplete=\"new-password\"\n\t\t\t\t\tautocapitalize=\"none\"\n\t\t\t\t\tspellcheck=\"false\"\n\t\t\t\t\trequired\n\t\t\t\t\t:placeholder=\"t('core', 'New password')\">\n\t\t\t</p>\n\n\t\t\t<div v-if=\"encrypted\" class=\"update\">\n\t\t\t\t<p>\n\t\t\t\t\t{{ t('core', 'Your files are encrypted. There will be no way to get your data back after your password is reset. If you are not sure what to do, please contact your administrator before you continue. Do you really want to continue?') }}\n\t\t\t\t</p>\n\t\t\t\t<input id=\"encrypted-continue\"\n\t\t\t\t\tv-model=\"proceed\"\n\t\t\t\t\ttype=\"checkbox\"\n\t\t\t\t\tclass=\"checkbox\">\n\t\t\t\t<label for=\"encrypted-continue\">\n\t\t\t\t\t{{ t('core', 'I know what I\\'m doing') }}\n\t\t\t\t</label>\n\t\t\t</div>\n\n\t\t\t<LoginButton :loading=\"loading\"\n\t\t\t\t:value=\"t('core', 'Reset password')\"\n\t\t\t\t:value-loading=\"t('core', 'Resetting password')\" />\n\n\t\t\t<p v-if=\"error && message\" :class=\"{warning: error}\">\n\t\t\t\t{{ message }}\n\t\t\t</p>\n\t\t</fieldset>\n\t</form>\n</template>\n\n<script>\nimport Axios from '@nextcloud/axios'\nimport LoginButton from './LoginButton.vue'\n\nexport default {\n\tname: 'UpdatePassword',\n\tcomponents: {\n\t\tLoginButton,\n\t},\n\tprops: {\n\t\tusername: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t\tresetPasswordTarget: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t},\n\tdata() {\n\t\treturn {\n\t\t\terror: false,\n\t\t\tloading: false,\n\t\t\tmessage: undefined,\n\t\t\tuser: this.username,\n\t\t\tpassword: '',\n\t\t\tencrypted: false,\n\t\t\tproceed: false,\n\t\t}\n\t},\n\twatch: {\n\t\tusername(value) {\n\t\t\tthis.user = value\n\t\t},\n\t},\n\tmethods: {\n\t\tasync submit() {\n\t\t\tthis.loading = true\n\t\t\tthis.error = false\n\t\t\tthis.message = ''\n\n\t\t\ttry {\n\t\t\t\tconst { data } = await Axios.post(this.resetPasswordTarget, {\n\t\t\t\t\tpassword: this.password,\n\t\t\t\t\tproceed: this.proceed,\n\t\t\t\t})\n\t\t\t\tif (data && data.status === 'success') {\n\t\t\t\t\tthis.message = 'send-success'\n\t\t\t\t\tthis.$emit('update:username', this.user)\n\t\t\t\t\tthis.$emit('done')\n\t\t\t\t} else if (data && data.encryption) {\n\t\t\t\t\tthis.encrypted = true\n\t\t\t\t} else if (data && data.msg) {\n\t\t\t\t\tthrow new Error(data.msg)\n\t\t\t\t} else {\n\t\t\t\t\tthrow new Error()\n\t\t\t\t}\n\t\t\t} catch (e) {\n\t\t\t\tthis.error = true\n\t\t\t\tthis.message = e.message ? e.message : t('core', 'Password cannot be changed. Please contact your administrator.')\n\t\t\t} finally {\n\t\t\t\tthis.loading = false\n\t\t\t}\n\t\t},\n\t},\n}\n</script>\n\n<style scoped>\n\tfieldset {\n\t\ttext-align: center;\n\t}\n\n\tinput[type=submit] {\n\t\tmargin-top: 20px;\n\t}\n</style>\n","\n import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./UpdatePassword.vue?vue&type=style&index=0&id=6bdd5975&prod&scoped=true&lang=css\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./UpdatePassword.vue?vue&type=style&index=0&id=6bdd5975&prod&scoped=true&lang=css\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./UpdatePassword.vue?vue&type=template&id=6bdd5975&scoped=true\"\nimport script from \"./UpdatePassword.vue?vue&type=script&lang=js\"\nexport * from \"./UpdatePassword.vue?vue&type=script&lang=js\"\nimport style0 from \"./UpdatePassword.vue?vue&type=style&index=0&id=6bdd5975&prod&scoped=true&lang=css\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"6bdd5975\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('form',{on:{\"submit\":function($event){$event.preventDefault();return _vm.submit.apply(null, arguments)}}},[_c('fieldset',[_c('p',[_c('label',{staticClass:\"infield\",attrs:{\"for\":\"password\"}},[_vm._v(_vm._s(_vm.t('core', 'New password')))]),_vm._v(\" \"),_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.password),expression:\"password\"}],attrs:{\"id\":\"password\",\"type\":\"password\",\"name\":\"password\",\"autocomplete\":\"new-password\",\"autocapitalize\":\"none\",\"spellcheck\":\"false\",\"required\":\"\",\"placeholder\":_vm.t('core', 'New password')},domProps:{\"value\":(_vm.password)},on:{\"input\":function($event){if($event.target.composing)return;_vm.password=$event.target.value}}})]),_vm._v(\" \"),(_vm.encrypted)?_c('div',{staticClass:\"update\"},[_c('p',[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('core', 'Your files are encrypted. There will be no way to get your data back after your password is reset. If you are not sure what to do, please contact your administrator before you continue. Do you really want to continue?'))+\"\\n\\t\\t\\t\")]),_vm._v(\" \"),_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.proceed),expression:\"proceed\"}],staticClass:\"checkbox\",attrs:{\"id\":\"encrypted-continue\",\"type\":\"checkbox\"},domProps:{\"checked\":Array.isArray(_vm.proceed)?_vm._i(_vm.proceed,null)>-1:(_vm.proceed)},on:{\"change\":function($event){var $$a=_vm.proceed,$$el=$event.target,$$c=$$el.checked?(true):(false);if(Array.isArray($$a)){var $$v=null,$$i=_vm._i($$a,$$v);if($$el.checked){$$i<0&&(_vm.proceed=$$a.concat([$$v]))}else{$$i>-1&&(_vm.proceed=$$a.slice(0,$$i).concat($$a.slice($$i+1)))}}else{_vm.proceed=$$c}}}}),_vm._v(\" \"),_c('label',{attrs:{\"for\":\"encrypted-continue\"}},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('core', 'I know what I\\'m doing'))+\"\\n\\t\\t\\t\")])]):_vm._e(),_vm._v(\" \"),_c('LoginButton',{attrs:{\"loading\":_vm.loading,\"value\":_vm.t('core', 'Reset password'),\"value-loading\":_vm.t('core', 'Resetting password')}}),_vm._v(\" \"),(_vm.error && _vm.message)?_c('p',{class:{warning: _vm.error}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.message)+\"\\n\\t\\t\")]):_vm._e()],1)])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\n - SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\n - SPDX-License-Identifier: AGPL-3.0-or-later\n-->\n\n<template>\n\t<div class=\"guest-box login-box\">\n\t\t<template v-if=\"!hideLoginForm || directLogin\">\n\t\t\t<transition name=\"fade\" mode=\"out-in\">\n\t\t\t\t<div v-if=\"!passwordlessLogin && !resetPassword && resetPasswordTarget === ''\">\n\t\t\t\t\t<LoginForm :username.sync=\"user\"\n\t\t\t\t\t\t:redirect-url=\"redirectUrl\"\n\t\t\t\t\t\t:direct-login=\"directLogin\"\n\t\t\t\t\t\t:messages=\"messages\"\n\t\t\t\t\t\t:errors=\"errors\"\n\t\t\t\t\t\t:throttle-delay=\"throttleDelay\"\n\t\t\t\t\t\t:auto-complete-allowed=\"autoCompleteAllowed\"\n\t\t\t\t\t\t:email-states=\"emailStates\"\n\t\t\t\t\t\t@submit=\"loading = true\" />\n\t\t\t\t\t<a v-if=\"canResetPassword && resetPasswordLink !== ''\"\n\t\t\t\t\t\tid=\"lost-password\"\n\t\t\t\t\t\tclass=\"login-box__link\"\n\t\t\t\t\t\t:href=\"resetPasswordLink\">\n\t\t\t\t\t\t{{ t('core', 'Forgot password?') }}\n\t\t\t\t\t</a>\n\t\t\t\t\t<a v-else-if=\"canResetPassword && !resetPassword\"\n\t\t\t\t\t\tid=\"lost-password\"\n\t\t\t\t\t\tclass=\"login-box__link\"\n\t\t\t\t\t\t:href=\"resetPasswordLink\"\n\t\t\t\t\t\t@click.prevent=\"resetPassword = true\">\n\t\t\t\t\t\t{{ t('core', 'Forgot password?') }}\n\t\t\t\t\t</a>\n\t\t\t\t\t<template v-if=\"hasPasswordless\">\n\t\t\t\t\t\t<div v-if=\"countAlternativeLogins\"\n\t\t\t\t\t\t\tclass=\"alternative-logins\">\n\t\t\t\t\t\t\t<a v-if=\"hasPasswordless\"\n\t\t\t\t\t\t\t\tclass=\"button\"\n\t\t\t\t\t\t\t\t:class=\"{ 'single-alt-login-option': countAlternativeLogins }\"\n\t\t\t\t\t\t\t\thref=\"#\"\n\t\t\t\t\t\t\t\t@click.prevent=\"passwordlessLogin = true\">\n\t\t\t\t\t\t\t\t{{ t('core', 'Log in with a device') }}\n\t\t\t\t\t\t\t</a>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t<a v-else\n\t\t\t\t\t\t\thref=\"#\"\n\t\t\t\t\t\t\t@click.prevent=\"passwordlessLogin = true\">\n\t\t\t\t\t\t\t{{ t('core', 'Log in with a device') }}\n\t\t\t\t\t\t</a>\n\t\t\t\t\t</template>\n\t\t\t\t</div>\n\t\t\t\t<div v-else-if=\"!loading && passwordlessLogin\"\n\t\t\t\t\tkey=\"reset-pw-less\"\n\t\t\t\t\tclass=\"login-additional login-passwordless\">\n\t\t\t\t\t<PasswordLessLoginForm :username.sync=\"user\"\n\t\t\t\t\t\t:redirect-url=\"redirectUrl\"\n\t\t\t\t\t\t:auto-complete-allowed=\"autoCompleteAllowed\"\n\t\t\t\t\t\t:is-https=\"isHttps\"\n\t\t\t\t\t\t:is-localhost=\"isLocalhost\"\n\t\t\t\t\t\t@submit=\"loading = true\" />\n\t\t\t\t\t<NcButton type=\"tertiary\"\n\t\t\t\t\t\t:aria-label=\"t('core', 'Back to login form')\"\n\t\t\t\t\t\t:wide=\"true\"\n\t\t\t\t\t\t@click=\"passwordlessLogin = false\">\n\t\t\t\t\t\t{{ t('core', 'Back') }}\n\t\t\t\t\t</NcButton>\n\t\t\t\t</div>\n\t\t\t\t<div v-else-if=\"!loading && canResetPassword\"\n\t\t\t\t\tkey=\"reset-can-reset\"\n\t\t\t\t\tclass=\"login-additional\">\n\t\t\t\t\t<div class=\"lost-password-container\">\n\t\t\t\t\t\t<ResetPassword v-if=\"resetPassword\"\n\t\t\t\t\t\t\t:username.sync=\"user\"\n\t\t\t\t\t\t\t:reset-password-link=\"resetPasswordLink\"\n\t\t\t\t\t\t\t@abort=\"resetPassword = false\" />\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t\t<div v-else-if=\"resetPasswordTarget !== ''\">\n\t\t\t\t\t<UpdatePassword :username.sync=\"user\"\n\t\t\t\t\t\t:reset-password-target=\"resetPasswordTarget\"\n\t\t\t\t\t\t@done=\"passwordResetFinished\" />\n\t\t\t\t</div>\n\t\t\t</transition>\n\t\t</template>\n\t\t<template v-else>\n\t\t\t<transition name=\"fade\" mode=\"out-in\">\n\t\t\t\t<NcNoteCard type=\"info\" :title=\"t('core', 'Login form is disabled.')\">\n\t\t\t\t\t{{ t('core', 'The Nextcloud login form is disabled. Use another login option if available or contact your administration.') }}\n\t\t\t\t</NcNoteCard>\n\t\t\t</transition>\n\t\t</template>\n\n\t\t<div id=\"alternative-logins\" class=\"alternative-logins\">\n\t\t\t<NcButton v-for=\"(alternativeLogin, index) in alternativeLogins\"\n\t\t\t\t:key=\"index\"\n\t\t\t\ttype=\"secondary\"\n\t\t\t\t:wide=\"true\"\n\t\t\t\t:class=\"[alternativeLogin.class]\"\n\t\t\t\trole=\"link\"\n\t\t\t\t:href=\"alternativeLogin.href\">\n\t\t\t\t{{ alternativeLogin.name }}\n\t\t\t</NcButton>\n\t\t</div>\n\t</div>\n</template>\n\n<script>\nimport { loadState } from '@nextcloud/initial-state'\nimport queryString from 'query-string'\n\nimport LoginForm from '../components/login/LoginForm.vue'\nimport PasswordLessLoginForm from '../components/login/PasswordLessLoginForm.vue'\nimport ResetPassword from '../components/login/ResetPassword.vue'\nimport UpdatePassword from '../components/login/UpdatePassword.vue'\nimport NcButton from '@nextcloud/vue/dist/Components/NcButton.js'\nimport NcNoteCard from '@nextcloud/vue/dist/Components/NcNoteCard.js'\n\nconst query = queryString.parse(location.search)\nif (query.clear === '1') {\n\ttry {\n\t\twindow.localStorage.clear()\n\t\twindow.sessionStorage.clear()\n\t\tconsole.debug('Browser storage cleared')\n\t} catch (e) {\n\t\tconsole.error('Could not clear browser storage', e)\n\t}\n}\n\nexport default {\n\tname: 'Login',\n\n\tcomponents: {\n\t\tLoginForm,\n\t\tPasswordLessLoginForm,\n\t\tResetPassword,\n\t\tUpdatePassword,\n\t\tNcButton,\n\t\tNcNoteCard,\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\tloading: false,\n\t\t\tuser: loadState('core', 'loginUsername', ''),\n\t\t\tpasswordlessLogin: false,\n\t\t\tresetPassword: false,\n\n\t\t\t// Initial data\n\t\t\terrors: loadState('core', 'loginErrors', []),\n\t\t\tmessages: loadState('core', 'loginMessages', []),\n\t\t\tredirectUrl: loadState('core', 'loginRedirectUrl', false),\n\t\t\tthrottleDelay: loadState('core', 'loginThrottleDelay', 0),\n\t\t\tcanResetPassword: loadState('core', 'loginCanResetPassword', false),\n\t\t\tresetPasswordLink: loadState('core', 'loginResetPasswordLink', ''),\n\t\t\tautoCompleteAllowed: loadState('core', 'loginAutocomplete', true),\n\t\t\tresetPasswordTarget: loadState('core', 'resetPasswordTarget', ''),\n\t\t\tresetPasswordUser: loadState('core', 'resetPasswordUser', ''),\n\t\t\tdirectLogin: query.direct === '1',\n\t\t\thasPasswordless: loadState('core', 'webauthn-available', false),\n\t\t\tcountAlternativeLogins: loadState('core', 'countAlternativeLogins', false),\n\t\t\talternativeLogins: loadState('core', 'alternativeLogins', []),\n\t\t\tisHttps: window.location.protocol === 'https:',\n\t\t\tisLocalhost: window.location.hostname === 'localhost',\n\t\t\thideLoginForm: loadState('core', 'hideLoginForm', false),\n\t\t\temailStates: loadState('core', 'emailStates', []),\n\t\t}\n\t},\n\n\tmethods: {\n\t\tpasswordResetFinished() {\n\t\t\tthis.resetPasswordTarget = ''\n\t\t\tthis.directLogin = true\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\">\nbody {\n\tfont-size: var(--default-font-size);\n}\n\n.login-box {\n\t// Same size as dashboard panels\n\twidth: 320px;\n\tbox-sizing: border-box;\n\n\t&__link {\n\t\tdisplay: block;\n\t\tpadding: 1rem;\n\t\tfont-size: var(--default-font-size);\n\t\ttext-align: center;\n\t\tfont-weight: normal !important;\n\t}\n}\n\n.fade-enter-active, .fade-leave-active {\n\ttransition: opacity .3s;\n}\n.fade-enter, .fade-leave-to /* .fade-leave-active below version 2.1.8 */ {\n\topacity: 0;\n}\n\n.alternative-logins {\n\tdisplay: flex;\n\tflex-direction: column;\n\tgap: 0.75rem;\n\n\t.button-vue {\n\t\tbox-sizing: border-box;\n\t}\n}\n\n.login-passwordless {\n\t.button-vue {\n\t\tmargin-top: 0.5rem;\n\t}\n}\n</style>\n","import mod from \"-!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Login.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Login.vue?vue&type=script&lang=js\"","\n import API from \"!../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/sass-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Login.vue?vue&type=style&index=0&id=6adceba0&prod&lang=scss\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/sass-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Login.vue?vue&type=style&index=0&id=6adceba0&prod&lang=scss\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./Login.vue?vue&type=template&id=6adceba0\"\nimport script from \"./Login.vue?vue&type=script&lang=js\"\nexport * from \"./Login.vue?vue&type=script&lang=js\"\nimport style0 from \"./Login.vue?vue&type=style&index=0&id=6adceba0&prod&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","/**\n * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport L10n from '../OC/l10n.js'\nimport OC from '../OC/index.js'\n\nexport default {\n\tdata() {\n\t\treturn {\n\t\t\tOC,\n\t\t}\n\t},\n\tmethods: {\n\t\tt: L10n.translate.bind(L10n),\n\t\tn: L10n.translatePlural.bind(L10n),\n\t},\n}\n","/**\n * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport Vue from 'vue'\n\n// eslint-disable-next-line no-unused-vars\nimport OC from './OC/index.js' // TODO: Not needed but L10n breaks if removed\nimport LoginView from './views/Login.vue'\nimport Nextcloud from './mixins/Nextcloud.js'\n\nVue.mixin(Nextcloud)\n\nconst View = Vue.extend(LoginView)\nnew View().$mount('#login')\n","// Backbone.js 1.6.0\n\n// (c) 2010-2024 Jeremy Ashkenas and DocumentCloud\n// Backbone may be freely distributed under the MIT license.\n// For all details and documentation:\n// http://backbonejs.org\n\n(function(factory) {\n\n // Establish the root object, `window` (`self`) in the browser, or `global` on the server.\n // We use `self` instead of `window` for `WebWorker` support.\n var root = typeof self == 'object' && self.self === self && self ||\n typeof global == 'object' && global.global === global && global;\n\n // Set up Backbone appropriately for the environment. Start with AMD.\n if (typeof define === 'function' && define.amd) {\n define(['underscore', 'jquery', 'exports'], function(_, $, exports) {\n // Export global even in AMD case in case this script is loaded with\n // others that may still expect a global Backbone.\n root.Backbone = factory(root, exports, _, $);\n });\n\n // Next for Node.js or CommonJS. jQuery may not be needed as a module.\n } else if (typeof exports !== 'undefined') {\n var _ = require('underscore'), $;\n try { $ = require('jquery'); } catch (e) {}\n factory(root, exports, _, $);\n\n // Finally, as a browser global.\n } else {\n root.Backbone = factory(root, {}, root._, root.jQuery || root.Zepto || root.ender || root.$);\n }\n\n})(function(root, Backbone, _, $) {\n\n // Initial Setup\n // -------------\n\n // Save the previous value of the `Backbone` variable, so that it can be\n // restored later on, if `noConflict` is used.\n var previousBackbone = root.Backbone;\n\n // Create a local reference to a common array method we'll want to use later.\n var slice = Array.prototype.slice;\n\n // Current version of the library. Keep in sync with `package.json`.\n Backbone.VERSION = '1.6.0';\n\n // For Backbone's purposes, jQuery, Zepto, Ender, or My Library (kidding) owns\n // the `$` variable.\n Backbone.$ = $;\n\n // Runs Backbone.js in *noConflict* mode, returning the `Backbone` variable\n // to its previous owner. Returns a reference to this Backbone object.\n Backbone.noConflict = function() {\n root.Backbone = previousBackbone;\n return this;\n };\n\n // Turn on `emulateHTTP` to support legacy HTTP servers. Setting this option\n // will fake `\"PATCH\"`, `\"PUT\"` and `\"DELETE\"` requests via the `_method` parameter and\n // set a `X-Http-Method-Override` header.\n Backbone.emulateHTTP = false;\n\n // Turn on `emulateJSON` to support legacy servers that can't deal with direct\n // `application/json` requests ... this will encode the body as\n // `application/x-www-form-urlencoded` instead and will send the model in a\n // form param named `model`.\n Backbone.emulateJSON = false;\n\n // Backbone.Events\n // ---------------\n\n // A module that can be mixed in to *any object* in order to provide it with\n // a custom event channel. You may bind a callback to an event with `on` or\n // remove with `off`; `trigger`-ing an event fires all callbacks in\n // succession.\n //\n // var object = {};\n // _.extend(object, Backbone.Events);\n // object.on('expand', function(){ alert('expanded'); });\n // object.trigger('expand');\n //\n var Events = Backbone.Events = {};\n\n // Regular expression used to split event strings.\n var eventSplitter = /\\s+/;\n\n // A private global variable to share between listeners and listenees.\n var _listening;\n\n // Iterates over the standard `event, callback` (as well as the fancy multiple\n // space-separated events `\"change blur\", callback` and jQuery-style event\n // maps `{event: callback}`).\n var eventsApi = function(iteratee, events, name, callback, opts) {\n var i = 0, names;\n if (name && typeof name === 'object') {\n // Handle event maps.\n if (callback !== void 0 && 'context' in opts && opts.context === void 0) opts.context = callback;\n for (names = _.keys(name); i < names.length ; i++) {\n events = eventsApi(iteratee, events, names[i], name[names[i]], opts);\n }\n } else if (name && eventSplitter.test(name)) {\n // Handle space-separated event names by delegating them individually.\n for (names = name.split(eventSplitter); i < names.length; i++) {\n events = iteratee(events, names[i], callback, opts);\n }\n } else {\n // Finally, standard events.\n events = iteratee(events, name, callback, opts);\n }\n return events;\n };\n\n // Bind an event to a `callback` function. Passing `\"all\"` will bind\n // the callback to all events fired.\n Events.on = function(name, callback, context) {\n this._events = eventsApi(onApi, this._events || {}, name, callback, {\n context: context,\n ctx: this,\n listening: _listening\n });\n\n if (_listening) {\n var listeners = this._listeners || (this._listeners = {});\n listeners[_listening.id] = _listening;\n // Allow the listening to use a counter, instead of tracking\n // callbacks for library interop\n _listening.interop = false;\n }\n\n return this;\n };\n\n // Inversion-of-control versions of `on`. Tell *this* object to listen to\n // an event in another object... keeping track of what it's listening to\n // for easier unbinding later.\n Events.listenTo = function(obj, name, callback) {\n if (!obj) return this;\n var id = obj._listenId || (obj._listenId = _.uniqueId('l'));\n var listeningTo = this._listeningTo || (this._listeningTo = {});\n var listening = _listening = listeningTo[id];\n\n // This object is not listening to any other events on `obj` yet.\n // Setup the necessary references to track the listening callbacks.\n if (!listening) {\n this._listenId || (this._listenId = _.uniqueId('l'));\n listening = _listening = listeningTo[id] = new Listening(this, obj);\n }\n\n // Bind callbacks on obj.\n var error = tryCatchOn(obj, name, callback, this);\n _listening = void 0;\n\n if (error) throw error;\n // If the target obj is not Backbone.Events, track events manually.\n if (listening.interop) listening.on(name, callback);\n\n return this;\n };\n\n // The reducing API that adds a callback to the `events` object.\n var onApi = function(events, name, callback, options) {\n if (callback) {\n var handlers = events[name] || (events[name] = []);\n var context = options.context, ctx = options.ctx, listening = options.listening;\n if (listening) listening.count++;\n\n handlers.push({callback: callback, context: context, ctx: context || ctx, listening: listening});\n }\n return events;\n };\n\n // An try-catch guarded #on function, to prevent poisoning the global\n // `_listening` variable.\n var tryCatchOn = function(obj, name, callback, context) {\n try {\n obj.on(name, callback, context);\n } catch (e) {\n return e;\n }\n };\n\n // Remove one or many callbacks. If `context` is null, removes all\n // callbacks with that function. If `callback` is null, removes all\n // callbacks for the event. If `name` is null, removes all bound\n // callbacks for all events.\n Events.off = function(name, callback, context) {\n if (!this._events) return this;\n this._events = eventsApi(offApi, this._events, name, callback, {\n context: context,\n listeners: this._listeners\n });\n\n return this;\n };\n\n // Tell this object to stop listening to either specific events ... or\n // to every object it's currently listening to.\n Events.stopListening = function(obj, name, callback) {\n var listeningTo = this._listeningTo;\n if (!listeningTo) return this;\n\n var ids = obj ? [obj._listenId] : _.keys(listeningTo);\n for (var i = 0; i < ids.length; i++) {\n var listening = listeningTo[ids[i]];\n\n // If listening doesn't exist, this object is not currently\n // listening to obj. Break out early.\n if (!listening) break;\n\n listening.obj.off(name, callback, this);\n if (listening.interop) listening.off(name, callback);\n }\n if (_.isEmpty(listeningTo)) this._listeningTo = void 0;\n\n return this;\n };\n\n // The reducing API that removes a callback from the `events` object.\n var offApi = function(events, name, callback, options) {\n if (!events) return;\n\n var context = options.context, listeners = options.listeners;\n var i = 0, names;\n\n // Delete all event listeners and \"drop\" events.\n if (!name && !context && !callback) {\n for (names = _.keys(listeners); i < names.length; i++) {\n listeners[names[i]].cleanup();\n }\n return;\n }\n\n names = name ? [name] : _.keys(events);\n for (; i < names.length; i++) {\n name = names[i];\n var handlers = events[name];\n\n // Bail out if there are no events stored.\n if (!handlers) break;\n\n // Find any remaining events.\n var remaining = [];\n for (var j = 0; j < handlers.length; j++) {\n var handler = handlers[j];\n if (\n callback && callback !== handler.callback &&\n callback !== handler.callback._callback ||\n context && context !== handler.context\n ) {\n remaining.push(handler);\n } else {\n var listening = handler.listening;\n if (listening) listening.off(name, callback);\n }\n }\n\n // Replace events if there are any remaining. Otherwise, clean up.\n if (remaining.length) {\n events[name] = remaining;\n } else {\n delete events[name];\n }\n }\n\n return events;\n };\n\n // Bind an event to only be triggered a single time. After the first time\n // the callback is invoked, its listener will be removed. If multiple events\n // are passed in using the space-separated syntax, the handler will fire\n // once for each event, not once for a combination of all events.\n Events.once = function(name, callback, context) {\n // Map the event into a `{event: once}` object.\n var events = eventsApi(onceMap, {}, name, callback, this.off.bind(this));\n if (typeof name === 'string' && context == null) callback = void 0;\n return this.on(events, callback, context);\n };\n\n // Inversion-of-control versions of `once`.\n Events.listenToOnce = function(obj, name, callback) {\n // Map the event into a `{event: once}` object.\n var events = eventsApi(onceMap, {}, name, callback, this.stopListening.bind(this, obj));\n return this.listenTo(obj, events);\n };\n\n // Reduces the event callbacks into a map of `{event: onceWrapper}`.\n // `offer` unbinds the `onceWrapper` after it has been called.\n var onceMap = function(map, name, callback, offer) {\n if (callback) {\n var once = map[name] = _.once(function() {\n offer(name, once);\n callback.apply(this, arguments);\n });\n once._callback = callback;\n }\n return map;\n };\n\n // Trigger one or many events, firing all bound callbacks. Callbacks are\n // passed the same arguments as `trigger` is, apart from the event name\n // (unless you're listening on `\"all\"`, which will cause your callback to\n // receive the true name of the event as the first argument).\n Events.trigger = function(name) {\n if (!this._events) return this;\n\n var length = Math.max(0, arguments.length - 1);\n var args = Array(length);\n for (var i = 0; i < length; i++) args[i] = arguments[i + 1];\n\n eventsApi(triggerApi, this._events, name, void 0, args);\n return this;\n };\n\n // Handles triggering the appropriate event callbacks.\n var triggerApi = function(objEvents, name, callback, args) {\n if (objEvents) {\n var events = objEvents[name];\n var allEvents = objEvents.all;\n if (events && allEvents) allEvents = allEvents.slice();\n if (events) triggerEvents(events, args);\n if (allEvents) triggerEvents(allEvents, [name].concat(args));\n }\n return objEvents;\n };\n\n // A difficult-to-believe, but optimized internal dispatch function for\n // triggering events. Tries to keep the usual cases speedy (most internal\n // Backbone events have 3 arguments).\n var triggerEvents = function(events, args) {\n var ev, i = -1, l = events.length, a1 = args[0], a2 = args[1], a3 = args[2];\n switch (args.length) {\n case 0: while (++i < l) (ev = events[i]).callback.call(ev.ctx); return;\n case 1: while (++i < l) (ev = events[i]).callback.call(ev.ctx, a1); return;\n case 2: while (++i < l) (ev = events[i]).callback.call(ev.ctx, a1, a2); return;\n case 3: while (++i < l) (ev = events[i]).callback.call(ev.ctx, a1, a2, a3); return;\n default: while (++i < l) (ev = events[i]).callback.apply(ev.ctx, args); return;\n }\n };\n\n // A listening class that tracks and cleans up memory bindings\n // when all callbacks have been offed.\n var Listening = function(listener, obj) {\n this.id = listener._listenId;\n this.listener = listener;\n this.obj = obj;\n this.interop = true;\n this.count = 0;\n this._events = void 0;\n };\n\n Listening.prototype.on = Events.on;\n\n // Offs a callback (or several).\n // Uses an optimized counter if the listenee uses Backbone.Events.\n // Otherwise, falls back to manual tracking to support events\n // library interop.\n Listening.prototype.off = function(name, callback) {\n var cleanup;\n if (this.interop) {\n this._events = eventsApi(offApi, this._events, name, callback, {\n context: void 0,\n listeners: void 0\n });\n cleanup = !this._events;\n } else {\n this.count--;\n cleanup = this.count === 0;\n }\n if (cleanup) this.cleanup();\n };\n\n // Cleans up memory bindings between the listener and the listenee.\n Listening.prototype.cleanup = function() {\n delete this.listener._listeningTo[this.obj._listenId];\n if (!this.interop) delete this.obj._listeners[this.id];\n };\n\n // Aliases for backwards compatibility.\n Events.bind = Events.on;\n Events.unbind = Events.off;\n\n // Allow the `Backbone` object to serve as a global event bus, for folks who\n // want global \"pubsub\" in a convenient place.\n _.extend(Backbone, Events);\n\n // Backbone.Model\n // --------------\n\n // Backbone **Models** are the basic data object in the framework --\n // frequently representing a row in a table in a database on your server.\n // A discrete chunk of data and a bunch of useful, related methods for\n // performing computations and transformations on that data.\n\n // Create a new model with the specified attributes. A client id (`cid`)\n // is automatically generated and assigned for you.\n var Model = Backbone.Model = function(attributes, options) {\n var attrs = attributes || {};\n options || (options = {});\n this.preinitialize.apply(this, arguments);\n this.cid = _.uniqueId(this.cidPrefix);\n this.attributes = {};\n if (options.collection) this.collection = options.collection;\n if (options.parse) attrs = this.parse(attrs, options) || {};\n var defaults = _.result(this, 'defaults');\n\n // Just _.defaults would work fine, but the additional _.extends\n // is in there for historical reasons. See #3843.\n attrs = _.defaults(_.extend({}, defaults, attrs), defaults);\n\n this.set(attrs, options);\n this.changed = {};\n this.initialize.apply(this, arguments);\n };\n\n // Attach all inheritable methods to the Model prototype.\n _.extend(Model.prototype, Events, {\n\n // A hash of attributes whose current and previous value differ.\n changed: null,\n\n // The value returned during the last failed validation.\n validationError: null,\n\n // The default name for the JSON `id` attribute is `\"id\"`. MongoDB and\n // CouchDB users may want to set this to `\"_id\"`.\n idAttribute: 'id',\n\n // The prefix is used to create the client id which is used to identify models locally.\n // You may want to override this if you're experiencing name clashes with model ids.\n cidPrefix: 'c',\n\n // preinitialize is an empty function by default. You can override it with a function\n // or object. preinitialize will run before any instantiation logic is run in the Model.\n preinitialize: function(){},\n\n // Initialize is an empty function by default. Override it with your own\n // initialization logic.\n initialize: function(){},\n\n // Return a copy of the model's `attributes` object.\n toJSON: function(options) {\n return _.clone(this.attributes);\n },\n\n // Proxy `Backbone.sync` by default -- but override this if you need\n // custom syncing semantics for *this* particular model.\n sync: function() {\n return Backbone.sync.apply(this, arguments);\n },\n\n // Get the value of an attribute.\n get: function(attr) {\n return this.attributes[attr];\n },\n\n // Get the HTML-escaped value of an attribute.\n escape: function(attr) {\n return _.escape(this.get(attr));\n },\n\n // Returns `true` if the attribute contains a value that is not null\n // or undefined.\n has: function(attr) {\n return this.get(attr) != null;\n },\n\n // Special-cased proxy to underscore's `_.matches` method.\n matches: function(attrs) {\n return !!_.iteratee(attrs, this)(this.attributes);\n },\n\n // Set a hash of model attributes on the object, firing `\"change\"`. This is\n // the core primitive operation of a model, updating the data and notifying\n // anyone who needs to know about the change in state. The heart of the beast.\n set: function(key, val, options) {\n if (key == null) return this;\n\n // Handle both `\"key\", value` and `{key: value}` -style arguments.\n var attrs;\n if (typeof key === 'object') {\n attrs = key;\n options = val;\n } else {\n (attrs = {})[key] = val;\n }\n\n options || (options = {});\n\n // Run validation.\n if (!this._validate(attrs, options)) return false;\n\n // Extract attributes and options.\n var unset = options.unset;\n var silent = options.silent;\n var changes = [];\n var changing = this._changing;\n this._changing = true;\n\n if (!changing) {\n this._previousAttributes = _.clone(this.attributes);\n this.changed = {};\n }\n\n var current = this.attributes;\n var changed = this.changed;\n var prev = this._previousAttributes;\n\n // For each `set` attribute, update or delete the current value.\n for (var attr in attrs) {\n val = attrs[attr];\n if (!_.isEqual(current[attr], val)) changes.push(attr);\n if (!_.isEqual(prev[attr], val)) {\n changed[attr] = val;\n } else {\n delete changed[attr];\n }\n unset ? delete current[attr] : current[attr] = val;\n }\n\n // Update the `id`.\n if (this.idAttribute in attrs) {\n var prevId = this.id;\n this.id = this.get(this.idAttribute);\n this.trigger('changeId', this, prevId, options);\n }\n\n // Trigger all relevant attribute changes.\n if (!silent) {\n if (changes.length) this._pending = options;\n for (var i = 0; i < changes.length; i++) {\n this.trigger('change:' + changes[i], this, current[changes[i]], options);\n }\n }\n\n // You might be wondering why there's a `while` loop here. Changes can\n // be recursively nested within `\"change\"` events.\n if (changing) return this;\n if (!silent) {\n while (this._pending) {\n options = this._pending;\n this._pending = false;\n this.trigger('change', this, options);\n }\n }\n this._pending = false;\n this._changing = false;\n return this;\n },\n\n // Remove an attribute from the model, firing `\"change\"`. `unset` is a noop\n // if the attribute doesn't exist.\n unset: function(attr, options) {\n return this.set(attr, void 0, _.extend({}, options, {unset: true}));\n },\n\n // Clear all attributes on the model, firing `\"change\"`.\n clear: function(options) {\n var attrs = {};\n for (var key in this.attributes) attrs[key] = void 0;\n return this.set(attrs, _.extend({}, options, {unset: true}));\n },\n\n // Determine if the model has changed since the last `\"change\"` event.\n // If you specify an attribute name, determine if that attribute has changed.\n hasChanged: function(attr) {\n if (attr == null) return !_.isEmpty(this.changed);\n return _.has(this.changed, attr);\n },\n\n // Return an object containing all the attributes that have changed, or\n // false if there are no changed attributes. Useful for determining what\n // parts of a view need to be updated and/or what attributes need to be\n // persisted to the server. Unset attributes will be set to undefined.\n // You can also pass an attributes object to diff against the model,\n // determining if there *would be* a change.\n changedAttributes: function(diff) {\n if (!diff) return this.hasChanged() ? _.clone(this.changed) : false;\n var old = this._changing ? this._previousAttributes : this.attributes;\n var changed = {};\n var hasChanged;\n for (var attr in diff) {\n var val = diff[attr];\n if (_.isEqual(old[attr], val)) continue;\n changed[attr] = val;\n hasChanged = true;\n }\n return hasChanged ? changed : false;\n },\n\n // Get the previous value of an attribute, recorded at the time the last\n // `\"change\"` event was fired.\n previous: function(attr) {\n if (attr == null || !this._previousAttributes) return null;\n return this._previousAttributes[attr];\n },\n\n // Get all of the attributes of the model at the time of the previous\n // `\"change\"` event.\n previousAttributes: function() {\n return _.clone(this._previousAttributes);\n },\n\n // Fetch the model from the server, merging the response with the model's\n // local attributes. Any changed attributes will trigger a \"change\" event.\n fetch: function(options) {\n options = _.extend({parse: true}, options);\n var model = this;\n var success = options.success;\n options.success = function(resp) {\n var serverAttrs = options.parse ? model.parse(resp, options) : resp;\n if (!model.set(serverAttrs, options)) return false;\n if (success) success.call(options.context, model, resp, options);\n model.trigger('sync', model, resp, options);\n };\n wrapError(this, options);\n return this.sync('read', this, options);\n },\n\n // Set a hash of model attributes, and sync the model to the server.\n // If the server returns an attributes hash that differs, the model's\n // state will be `set` again.\n save: function(key, val, options) {\n // Handle both `\"key\", value` and `{key: value}` -style arguments.\n var attrs;\n if (key == null || typeof key === 'object') {\n attrs = key;\n options = val;\n } else {\n (attrs = {})[key] = val;\n }\n\n options = _.extend({validate: true, parse: true}, options);\n var wait = options.wait;\n\n // If we're not waiting and attributes exist, save acts as\n // `set(attr).save(null, opts)` with validation. Otherwise, check if\n // the model will be valid when the attributes, if any, are set.\n if (attrs && !wait) {\n if (!this.set(attrs, options)) return false;\n } else if (!this._validate(attrs, options)) {\n return false;\n }\n\n // After a successful server-side save, the client is (optionally)\n // updated with the server-side state.\n var model = this;\n var success = options.success;\n var attributes = this.attributes;\n options.success = function(resp) {\n // Ensure attributes are restored during synchronous saves.\n model.attributes = attributes;\n var serverAttrs = options.parse ? model.parse(resp, options) : resp;\n if (wait) serverAttrs = _.extend({}, attrs, serverAttrs);\n if (serverAttrs && !model.set(serverAttrs, options)) return false;\n if (success) success.call(options.context, model, resp, options);\n model.trigger('sync', model, resp, options);\n };\n wrapError(this, options);\n\n // Set temporary attributes if `{wait: true}` to properly find new ids.\n if (attrs && wait) this.attributes = _.extend({}, attributes, attrs);\n\n var method = this.isNew() ? 'create' : options.patch ? 'patch' : 'update';\n if (method === 'patch' && !options.attrs) options.attrs = attrs;\n var xhr = this.sync(method, this, options);\n\n // Restore attributes.\n this.attributes = attributes;\n\n return xhr;\n },\n\n // Destroy this model on the server if it was already persisted.\n // Optimistically removes the model from its collection, if it has one.\n // If `wait: true` is passed, waits for the server to respond before removal.\n destroy: function(options) {\n options = options ? _.clone(options) : {};\n var model = this;\n var success = options.success;\n var wait = options.wait;\n\n var destroy = function() {\n model.stopListening();\n model.trigger('destroy', model, model.collection, options);\n };\n\n options.success = function(resp) {\n if (wait) destroy();\n if (success) success.call(options.context, model, resp, options);\n if (!model.isNew()) model.trigger('sync', model, resp, options);\n };\n\n var xhr = false;\n if (this.isNew()) {\n _.defer(options.success);\n } else {\n wrapError(this, options);\n xhr = this.sync('delete', this, options);\n }\n if (!wait) destroy();\n return xhr;\n },\n\n // Default URL for the model's representation on the server -- if you're\n // using Backbone's restful methods, override this to change the endpoint\n // that will be called.\n url: function() {\n var base =\n _.result(this, 'urlRoot') ||\n _.result(this.collection, 'url') ||\n urlError();\n if (this.isNew()) return base;\n var id = this.get(this.idAttribute);\n return base.replace(/[^\\/]$/, '$&/') + encodeURIComponent(id);\n },\n\n // **parse** converts a response into the hash of attributes to be `set` on\n // the model. The default implementation is just to pass the response along.\n parse: function(resp, options) {\n return resp;\n },\n\n // Create a new model with identical attributes to this one.\n clone: function() {\n return new this.constructor(this.attributes);\n },\n\n // A model is new if it has never been saved to the server, and lacks an id.\n isNew: function() {\n return !this.has(this.idAttribute);\n },\n\n // Check if the model is currently in a valid state.\n isValid: function(options) {\n return this._validate({}, _.extend({}, options, {validate: true}));\n },\n\n // Run validation against the next complete set of model attributes,\n // returning `true` if all is well. Otherwise, fire an `\"invalid\"` event.\n _validate: function(attrs, options) {\n if (!options.validate || !this.validate) return true;\n attrs = _.extend({}, this.attributes, attrs);\n var error = this.validationError = this.validate(attrs, options) || null;\n if (!error) return true;\n this.trigger('invalid', this, error, _.extend(options, {validationError: error}));\n return false;\n }\n\n });\n\n // Backbone.Collection\n // -------------------\n\n // If models tend to represent a single row of data, a Backbone Collection is\n // more analogous to a table full of data ... or a small slice or page of that\n // table, or a collection of rows that belong together for a particular reason\n // -- all of the messages in this particular folder, all of the documents\n // belonging to this particular author, and so on. Collections maintain\n // indexes of their models, both in order, and for lookup by `id`.\n\n // Create a new **Collection**, perhaps to contain a specific type of `model`.\n // If a `comparator` is specified, the Collection will maintain\n // its models in sort order, as they're added and removed.\n var Collection = Backbone.Collection = function(models, options) {\n options || (options = {});\n this.preinitialize.apply(this, arguments);\n if (options.model) this.model = options.model;\n if (options.comparator !== void 0) this.comparator = options.comparator;\n this._reset();\n this.initialize.apply(this, arguments);\n if (models) this.reset(models, _.extend({silent: true}, options));\n };\n\n // Default options for `Collection#set`.\n var setOptions = {add: true, remove: true, merge: true};\n var addOptions = {add: true, remove: false};\n\n // Splices `insert` into `array` at index `at`.\n var splice = function(array, insert, at) {\n at = Math.min(Math.max(at, 0), array.length);\n var tail = Array(array.length - at);\n var length = insert.length;\n var i;\n for (i = 0; i < tail.length; i++) tail[i] = array[i + at];\n for (i = 0; i < length; i++) array[i + at] = insert[i];\n for (i = 0; i < tail.length; i++) array[i + length + at] = tail[i];\n };\n\n // Define the Collection's inheritable methods.\n _.extend(Collection.prototype, Events, {\n\n // The default model for a collection is just a **Backbone.Model**.\n // This should be overridden in most cases.\n model: Model,\n\n\n // preinitialize is an empty function by default. You can override it with a function\n // or object. preinitialize will run before any instantiation logic is run in the Collection.\n preinitialize: function(){},\n\n // Initialize is an empty function by default. Override it with your own\n // initialization logic.\n initialize: function(){},\n\n // The JSON representation of a Collection is an array of the\n // models' attributes.\n toJSON: function(options) {\n return this.map(function(model) { return model.toJSON(options); });\n },\n\n // Proxy `Backbone.sync` by default.\n sync: function() {\n return Backbone.sync.apply(this, arguments);\n },\n\n // Add a model, or list of models to the set. `models` may be Backbone\n // Models or raw JavaScript objects to be converted to Models, or any\n // combination of the two.\n add: function(models, options) {\n return this.set(models, _.extend({merge: false}, options, addOptions));\n },\n\n // Remove a model, or a list of models from the set.\n remove: function(models, options) {\n options = _.extend({}, options);\n var singular = !_.isArray(models);\n models = singular ? [models] : models.slice();\n var removed = this._removeModels(models, options);\n if (!options.silent && removed.length) {\n options.changes = {added: [], merged: [], removed: removed};\n this.trigger('update', this, options);\n }\n return singular ? removed[0] : removed;\n },\n\n // Update a collection by `set`-ing a new list of models, adding new ones,\n // removing models that are no longer present, and merging models that\n // already exist in the collection, as necessary. Similar to **Model#set**,\n // the core operation for updating the data contained by the collection.\n set: function(models, options) {\n if (models == null) return;\n\n options = _.extend({}, setOptions, options);\n if (options.parse && !this._isModel(models)) {\n models = this.parse(models, options) || [];\n }\n\n var singular = !_.isArray(models);\n models = singular ? [models] : models.slice();\n\n var at = options.at;\n if (at != null) at = +at;\n if (at > this.length) at = this.length;\n if (at < 0) at += this.length + 1;\n\n var set = [];\n var toAdd = [];\n var toMerge = [];\n var toRemove = [];\n var modelMap = {};\n\n var add = options.add;\n var merge = options.merge;\n var remove = options.remove;\n\n var sort = false;\n var sortable = this.comparator && at == null && options.sort !== false;\n var sortAttr = _.isString(this.comparator) ? this.comparator : null;\n\n // Turn bare objects into model references, and prevent invalid models\n // from being added.\n var model, i;\n for (i = 0; i < models.length; i++) {\n model = models[i];\n\n // If a duplicate is found, prevent it from being added and\n // optionally merge it into the existing model.\n var existing = this.get(model);\n if (existing) {\n if (merge && model !== existing) {\n var attrs = this._isModel(model) ? model.attributes : model;\n if (options.parse) attrs = existing.parse(attrs, options);\n existing.set(attrs, options);\n toMerge.push(existing);\n if (sortable && !sort) sort = existing.hasChanged(sortAttr);\n }\n if (!modelMap[existing.cid]) {\n modelMap[existing.cid] = true;\n set.push(existing);\n }\n models[i] = existing;\n\n // If this is a new, valid model, push it to the `toAdd` list.\n } else if (add) {\n model = models[i] = this._prepareModel(model, options);\n if (model) {\n toAdd.push(model);\n this._addReference(model, options);\n modelMap[model.cid] = true;\n set.push(model);\n }\n }\n }\n\n // Remove stale models.\n if (remove) {\n for (i = 0; i < this.length; i++) {\n model = this.models[i];\n if (!modelMap[model.cid]) toRemove.push(model);\n }\n if (toRemove.length) this._removeModels(toRemove, options);\n }\n\n // See if sorting is needed, update `length` and splice in new models.\n var orderChanged = false;\n var replace = !sortable && add && remove;\n if (set.length && replace) {\n orderChanged = this.length !== set.length || _.some(this.models, function(m, index) {\n return m !== set[index];\n });\n this.models.length = 0;\n splice(this.models, set, 0);\n this.length = this.models.length;\n } else if (toAdd.length) {\n if (sortable) sort = true;\n splice(this.models, toAdd, at == null ? this.length : at);\n this.length = this.models.length;\n }\n\n // Silently sort the collection if appropriate.\n if (sort) this.sort({silent: true});\n\n // Unless silenced, it's time to fire all appropriate add/sort/update events.\n if (!options.silent) {\n for (i = 0; i < toAdd.length; i++) {\n if (at != null) options.index = at + i;\n model = toAdd[i];\n model.trigger('add', model, this, options);\n }\n if (sort || orderChanged) this.trigger('sort', this, options);\n if (toAdd.length || toRemove.length || toMerge.length) {\n options.changes = {\n added: toAdd,\n removed: toRemove,\n merged: toMerge\n };\n this.trigger('update', this, options);\n }\n }\n\n // Return the added (or merged) model (or models).\n return singular ? models[0] : models;\n },\n\n // When you have more items than you want to add or remove individually,\n // you can reset the entire set with a new list of models, without firing\n // any granular `add` or `remove` events. Fires `reset` when finished.\n // Useful for bulk operations and optimizations.\n reset: function(models, options) {\n options = options ? _.clone(options) : {};\n for (var i = 0; i < this.models.length; i++) {\n this._removeReference(this.models[i], options);\n }\n options.previousModels = this.models;\n this._reset();\n models = this.add(models, _.extend({silent: true}, options));\n if (!options.silent) this.trigger('reset', this, options);\n return models;\n },\n\n // Add a model to the end of the collection.\n push: function(model, options) {\n return this.add(model, _.extend({at: this.length}, options));\n },\n\n // Remove a model from the end of the collection.\n pop: function(options) {\n var model = this.at(this.length - 1);\n return this.remove(model, options);\n },\n\n // Add a model to the beginning of the collection.\n unshift: function(model, options) {\n return this.add(model, _.extend({at: 0}, options));\n },\n\n // Remove a model from the beginning of the collection.\n shift: function(options) {\n var model = this.at(0);\n return this.remove(model, options);\n },\n\n // Slice out a sub-array of models from the collection.\n slice: function() {\n return slice.apply(this.models, arguments);\n },\n\n // Get a model from the set by id, cid, model object with id or cid\n // properties, or an attributes object that is transformed through modelId.\n get: function(obj) {\n if (obj == null) return void 0;\n return this._byId[obj] ||\n this._byId[this.modelId(this._isModel(obj) ? obj.attributes : obj, obj.idAttribute)] ||\n obj.cid && this._byId[obj.cid];\n },\n\n // Returns `true` if the model is in the collection.\n has: function(obj) {\n return this.get(obj) != null;\n },\n\n // Get the model at the given index.\n at: function(index) {\n if (index < 0) index += this.length;\n return this.models[index];\n },\n\n // Return models with matching attributes. Useful for simple cases of\n // `filter`.\n where: function(attrs, first) {\n return this[first ? 'find' : 'filter'](attrs);\n },\n\n // Return the first model with matching attributes. Useful for simple cases\n // of `find`.\n findWhere: function(attrs) {\n return this.where(attrs, true);\n },\n\n // Force the collection to re-sort itself. You don't need to call this under\n // normal circumstances, as the set will maintain sort order as each item\n // is added.\n sort: function(options) {\n var comparator = this.comparator;\n if (!comparator) throw new Error('Cannot sort a set without a comparator');\n options || (options = {});\n\n var length = comparator.length;\n if (_.isFunction(comparator)) comparator = comparator.bind(this);\n\n // Run sort based on type of `comparator`.\n if (length === 1 || _.isString(comparator)) {\n this.models = this.sortBy(comparator);\n } else {\n this.models.sort(comparator);\n }\n if (!options.silent) this.trigger('sort', this, options);\n return this;\n },\n\n // Pluck an attribute from each model in the collection.\n pluck: function(attr) {\n return this.map(attr + '');\n },\n\n // Fetch the default set of models for this collection, resetting the\n // collection when they arrive. If `reset: true` is passed, the response\n // data will be passed through the `reset` method instead of `set`.\n fetch: function(options) {\n options = _.extend({parse: true}, options);\n var success = options.success;\n var collection = this;\n options.success = function(resp) {\n var method = options.reset ? 'reset' : 'set';\n collection[method](resp, options);\n if (success) success.call(options.context, collection, resp, options);\n collection.trigger('sync', collection, resp, options);\n };\n wrapError(this, options);\n return this.sync('read', this, options);\n },\n\n // Create a new instance of a model in this collection. Add the model to the\n // collection immediately, unless `wait: true` is passed, in which case we\n // wait for the server to agree.\n create: function(model, options) {\n options = options ? _.clone(options) : {};\n var wait = options.wait;\n model = this._prepareModel(model, options);\n if (!model) return false;\n if (!wait) this.add(model, options);\n var collection = this;\n var success = options.success;\n options.success = function(m, resp, callbackOpts) {\n if (wait) {\n m.off('error', collection._forwardPristineError, collection);\n collection.add(m, callbackOpts);\n }\n if (success) success.call(callbackOpts.context, m, resp, callbackOpts);\n };\n // In case of wait:true, our collection is not listening to any\n // of the model's events yet, so it will not forward the error\n // event. In this special case, we need to listen for it\n // separately and handle the event just once.\n // (The reason we don't need to do this for the sync event is\n // in the success handler above: we add the model first, which\n // causes the collection to listen, and then invoke the callback\n // that triggers the event.)\n if (wait) {\n model.once('error', this._forwardPristineError, this);\n }\n model.save(null, options);\n return model;\n },\n\n // **parse** converts a response into a list of models to be added to the\n // collection. The default implementation is just to pass it through.\n parse: function(resp, options) {\n return resp;\n },\n\n // Create a new collection with an identical list of models as this one.\n clone: function() {\n return new this.constructor(this.models, {\n model: this.model,\n comparator: this.comparator\n });\n },\n\n // Define how to uniquely identify models in the collection.\n modelId: function(attrs, idAttribute) {\n return attrs[idAttribute || this.model.prototype.idAttribute || 'id'];\n },\n\n // Get an iterator of all models in this collection.\n values: function() {\n return new CollectionIterator(this, ITERATOR_VALUES);\n },\n\n // Get an iterator of all model IDs in this collection.\n keys: function() {\n return new CollectionIterator(this, ITERATOR_KEYS);\n },\n\n // Get an iterator of all [ID, model] tuples in this collection.\n entries: function() {\n return new CollectionIterator(this, ITERATOR_KEYSVALUES);\n },\n\n // Private method to reset all internal state. Called when the collection\n // is first initialized or reset.\n _reset: function() {\n this.length = 0;\n this.models = [];\n this._byId = {};\n },\n\n // Prepare a hash of attributes (or other model) to be added to this\n // collection.\n _prepareModel: function(attrs, options) {\n if (this._isModel(attrs)) {\n if (!attrs.collection) attrs.collection = this;\n return attrs;\n }\n options = options ? _.clone(options) : {};\n options.collection = this;\n\n var model;\n if (this.model.prototype) {\n model = new this.model(attrs, options);\n } else {\n // ES class methods didn't have prototype\n model = this.model(attrs, options);\n }\n\n if (!model.validationError) return model;\n this.trigger('invalid', this, model.validationError, options);\n return false;\n },\n\n // Internal method called by both remove and set.\n _removeModels: function(models, options) {\n var removed = [];\n for (var i = 0; i < models.length; i++) {\n var model = this.get(models[i]);\n if (!model) continue;\n\n var index = this.indexOf(model);\n this.models.splice(index, 1);\n this.length--;\n\n // Remove references before triggering 'remove' event to prevent an\n // infinite loop. #3693\n delete this._byId[model.cid];\n var id = this.modelId(model.attributes, model.idAttribute);\n if (id != null) delete this._byId[id];\n\n if (!options.silent) {\n options.index = index;\n model.trigger('remove', model, this, options);\n }\n\n removed.push(model);\n this._removeReference(model, options);\n }\n if (models.length > 0 && !options.silent) delete options.index;\n return removed;\n },\n\n // Method for checking whether an object should be considered a model for\n // the purposes of adding to the collection.\n _isModel: function(model) {\n return model instanceof Model;\n },\n\n // Internal method to create a model's ties to a collection.\n _addReference: function(model, options) {\n this._byId[model.cid] = model;\n var id = this.modelId(model.attributes, model.idAttribute);\n if (id != null) this._byId[id] = model;\n model.on('all', this._onModelEvent, this);\n },\n\n // Internal method to sever a model's ties to a collection.\n _removeReference: function(model, options) {\n delete this._byId[model.cid];\n var id = this.modelId(model.attributes, model.idAttribute);\n if (id != null) delete this._byId[id];\n if (this === model.collection) delete model.collection;\n model.off('all', this._onModelEvent, this);\n },\n\n // Internal method called every time a model in the set fires an event.\n // Sets need to update their indexes when models change ids. All other\n // events simply proxy through. \"add\" and \"remove\" events that originate\n // in other collections are ignored.\n _onModelEvent: function(event, model, collection, options) {\n if (model) {\n if ((event === 'add' || event === 'remove') && collection !== this) return;\n if (event === 'destroy') this.remove(model, options);\n if (event === 'changeId') {\n var prevId = this.modelId(model.previousAttributes(), model.idAttribute);\n var id = this.modelId(model.attributes, model.idAttribute);\n if (prevId != null) delete this._byId[prevId];\n if (id != null) this._byId[id] = model;\n }\n }\n this.trigger.apply(this, arguments);\n },\n\n // Internal callback method used in `create`. It serves as a\n // stand-in for the `_onModelEvent` method, which is not yet bound\n // during the `wait` period of the `create` call. We still want to\n // forward any `'error'` event at the end of the `wait` period,\n // hence a customized callback.\n _forwardPristineError: function(model, collection, options) {\n // Prevent double forward if the model was already in the\n // collection before the call to `create`.\n if (this.has(model)) return;\n this._onModelEvent('error', model, collection, options);\n }\n });\n\n // Defining an @@iterator method implements JavaScript's Iterable protocol.\n // In modern ES2015 browsers, this value is found at Symbol.iterator.\n /* global Symbol */\n var $$iterator = typeof Symbol === 'function' && Symbol.iterator;\n if ($$iterator) {\n Collection.prototype[$$iterator] = Collection.prototype.values;\n }\n\n // CollectionIterator\n // ------------------\n\n // A CollectionIterator implements JavaScript's Iterator protocol, allowing the\n // use of `for of` loops in modern browsers and interoperation between\n // Backbone.Collection and other JavaScript functions and third-party libraries\n // which can operate on Iterables.\n var CollectionIterator = function(collection, kind) {\n this._collection = collection;\n this._kind = kind;\n this._index = 0;\n };\n\n // This \"enum\" defines the three possible kinds of values which can be emitted\n // by a CollectionIterator that correspond to the values(), keys() and entries()\n // methods on Collection, respectively.\n var ITERATOR_VALUES = 1;\n var ITERATOR_KEYS = 2;\n var ITERATOR_KEYSVALUES = 3;\n\n // All Iterators should themselves be Iterable.\n if ($$iterator) {\n CollectionIterator.prototype[$$iterator] = function() {\n return this;\n };\n }\n\n CollectionIterator.prototype.next = function() {\n if (this._collection) {\n\n // Only continue iterating if the iterated collection is long enough.\n if (this._index < this._collection.length) {\n var model = this._collection.at(this._index);\n this._index++;\n\n // Construct a value depending on what kind of values should be iterated.\n var value;\n if (this._kind === ITERATOR_VALUES) {\n value = model;\n } else {\n var id = this._collection.modelId(model.attributes, model.idAttribute);\n if (this._kind === ITERATOR_KEYS) {\n value = id;\n } else { // ITERATOR_KEYSVALUES\n value = [id, model];\n }\n }\n return {value: value, done: false};\n }\n\n // Once exhausted, remove the reference to the collection so future\n // calls to the next method always return done.\n this._collection = void 0;\n }\n\n return {value: void 0, done: true};\n };\n\n // Backbone.View\n // -------------\n\n // Backbone Views are almost more convention than they are actual code. A View\n // is simply a JavaScript object that represents a logical chunk of UI in the\n // DOM. This might be a single item, an entire list, a sidebar or panel, or\n // even the surrounding frame which wraps your whole app. Defining a chunk of\n // UI as a **View** allows you to define your DOM events declaratively, without\n // having to worry about render order ... and makes it easy for the view to\n // react to specific changes in the state of your models.\n\n // Creating a Backbone.View creates its initial element outside of the DOM,\n // if an existing element is not provided...\n var View = Backbone.View = function(options) {\n this.cid = _.uniqueId('view');\n this.preinitialize.apply(this, arguments);\n _.extend(this, _.pick(options, viewOptions));\n this._ensureElement();\n this.initialize.apply(this, arguments);\n };\n\n // Cached regex to split keys for `delegate`.\n var delegateEventSplitter = /^(\\S+)\\s*(.*)$/;\n\n // List of view options to be set as properties.\n var viewOptions = ['model', 'collection', 'el', 'id', 'attributes', 'className', 'tagName', 'events'];\n\n // Set up all inheritable **Backbone.View** properties and methods.\n _.extend(View.prototype, Events, {\n\n // The default `tagName` of a View's element is `\"div\"`.\n tagName: 'div',\n\n // jQuery delegate for element lookup, scoped to DOM elements within the\n // current view. This should be preferred to global lookups where possible.\n $: function(selector) {\n return this.$el.find(selector);\n },\n\n // preinitialize is an empty function by default. You can override it with a function\n // or object. preinitialize will run before any instantiation logic is run in the View\n preinitialize: function(){},\n\n // Initialize is an empty function by default. Override it with your own\n // initialization logic.\n initialize: function(){},\n\n // **render** is the core function that your view should override, in order\n // to populate its element (`this.el`), with the appropriate HTML. The\n // convention is for **render** to always return `this`.\n render: function() {\n return this;\n },\n\n // Remove this view by taking the element out of the DOM, and removing any\n // applicable Backbone.Events listeners.\n remove: function() {\n this._removeElement();\n this.stopListening();\n return this;\n },\n\n // Remove this view's element from the document and all event listeners\n // attached to it. Exposed for subclasses using an alternative DOM\n // manipulation API.\n _removeElement: function() {\n this.$el.remove();\n },\n\n // Change the view's element (`this.el` property) and re-delegate the\n // view's events on the new element.\n setElement: function(element) {\n this.undelegateEvents();\n this._setElement(element);\n this.delegateEvents();\n return this;\n },\n\n // Creates the `this.el` and `this.$el` references for this view using the\n // given `el`. `el` can be a CSS selector or an HTML string, a jQuery\n // context or an element. Subclasses can override this to utilize an\n // alternative DOM manipulation API and are only required to set the\n // `this.el` property.\n _setElement: function(el) {\n this.$el = el instanceof Backbone.$ ? el : Backbone.$(el);\n this.el = this.$el[0];\n },\n\n // Set callbacks, where `this.events` is a hash of\n //\n // *{\"event selector\": \"callback\"}*\n //\n // {\n // 'mousedown .title': 'edit',\n // 'click .button': 'save',\n // 'click .open': function(e) { ... }\n // }\n //\n // pairs. Callbacks will be bound to the view, with `this` set properly.\n // Uses event delegation for efficiency.\n // Omitting the selector binds the event to `this.el`.\n delegateEvents: function(events) {\n events || (events = _.result(this, 'events'));\n if (!events) return this;\n this.undelegateEvents();\n for (var key in events) {\n var method = events[key];\n if (!_.isFunction(method)) method = this[method];\n if (!method) continue;\n var match = key.match(delegateEventSplitter);\n this.delegate(match[1], match[2], method.bind(this));\n }\n return this;\n },\n\n // Add a single event listener to the view's element (or a child element\n // using `selector`). This only works for delegate-able events: not `focus`,\n // `blur`, and not `change`, `submit`, and `reset` in Internet Explorer.\n delegate: function(eventName, selector, listener) {\n this.$el.on(eventName + '.delegateEvents' + this.cid, selector, listener);\n return this;\n },\n\n // Clears all callbacks previously bound to the view by `delegateEvents`.\n // You usually don't need to use this, but may wish to if you have multiple\n // Backbone views attached to the same DOM element.\n undelegateEvents: function() {\n if (this.$el) this.$el.off('.delegateEvents' + this.cid);\n return this;\n },\n\n // A finer-grained `undelegateEvents` for removing a single delegated event.\n // `selector` and `listener` are both optional.\n undelegate: function(eventName, selector, listener) {\n this.$el.off(eventName + '.delegateEvents' + this.cid, selector, listener);\n return this;\n },\n\n // Produces a DOM element to be assigned to your view. Exposed for\n // subclasses using an alternative DOM manipulation API.\n _createElement: function(tagName) {\n return document.createElement(tagName);\n },\n\n // Ensure that the View has a DOM element to render into.\n // If `this.el` is a string, pass it through `$()`, take the first\n // matching element, and re-assign it to `el`. Otherwise, create\n // an element from the `id`, `className` and `tagName` properties.\n _ensureElement: function() {\n if (!this.el) {\n var attrs = _.extend({}, _.result(this, 'attributes'));\n if (this.id) attrs.id = _.result(this, 'id');\n if (this.className) attrs['class'] = _.result(this, 'className');\n this.setElement(this._createElement(_.result(this, 'tagName')));\n this._setAttributes(attrs);\n } else {\n this.setElement(_.result(this, 'el'));\n }\n },\n\n // Set attributes from a hash on this view's element. Exposed for\n // subclasses using an alternative DOM manipulation API.\n _setAttributes: function(attributes) {\n this.$el.attr(attributes);\n }\n\n });\n\n // Proxy Backbone class methods to Underscore functions, wrapping the model's\n // `attributes` object or collection's `models` array behind the scenes.\n //\n // collection.filter(function(model) { return model.get('age') > 10 });\n // collection.each(this.addView);\n //\n // `Function#apply` can be slow so we use the method's arg count, if we know it.\n var addMethod = function(base, length, method, attribute) {\n switch (length) {\n case 1: return function() {\n return base[method](this[attribute]);\n };\n case 2: return function(value) {\n return base[method](this[attribute], value);\n };\n case 3: return function(iteratee, context) {\n return base[method](this[attribute], cb(iteratee, this), context);\n };\n case 4: return function(iteratee, defaultVal, context) {\n return base[method](this[attribute], cb(iteratee, this), defaultVal, context);\n };\n default: return function() {\n var args = slice.call(arguments);\n args.unshift(this[attribute]);\n return base[method].apply(base, args);\n };\n }\n };\n\n var addUnderscoreMethods = function(Class, base, methods, attribute) {\n _.each(methods, function(length, method) {\n if (base[method]) Class.prototype[method] = addMethod(base, length, method, attribute);\n });\n };\n\n // Support `collection.sortBy('attr')` and `collection.findWhere({id: 1})`.\n var cb = function(iteratee, instance) {\n if (_.isFunction(iteratee)) return iteratee;\n if (_.isObject(iteratee) && !instance._isModel(iteratee)) return modelMatcher(iteratee);\n if (_.isString(iteratee)) return function(model) { return model.get(iteratee); };\n return iteratee;\n };\n var modelMatcher = function(attrs) {\n var matcher = _.matches(attrs);\n return function(model) {\n return matcher(model.attributes);\n };\n };\n\n // Underscore methods that we want to implement on the Collection.\n // 90% of the core usefulness of Backbone Collections is actually implemented\n // right here:\n var collectionMethods = {forEach: 3, each: 3, map: 3, collect: 3, reduce: 0,\n foldl: 0, inject: 0, reduceRight: 0, foldr: 0, find: 3, detect: 3, filter: 3,\n select: 3, reject: 3, every: 3, all: 3, some: 3, any: 3, include: 3, includes: 3,\n contains: 3, invoke: 0, max: 3, min: 3, toArray: 1, size: 1, first: 3,\n head: 3, take: 3, initial: 3, rest: 3, tail: 3, drop: 3, last: 3,\n without: 0, difference: 0, indexOf: 3, shuffle: 1, lastIndexOf: 3,\n isEmpty: 1, chain: 1, sample: 3, partition: 3, groupBy: 3, countBy: 3,\n sortBy: 3, indexBy: 3, findIndex: 3, findLastIndex: 3};\n\n\n // Underscore methods that we want to implement on the Model, mapped to the\n // number of arguments they take.\n var modelMethods = {keys: 1, values: 1, pairs: 1, invert: 1, pick: 0,\n omit: 0, chain: 1, isEmpty: 1};\n\n // Mix in each Underscore method as a proxy to `Collection#models`.\n\n _.each([\n [Collection, collectionMethods, 'models'],\n [Model, modelMethods, 'attributes']\n ], function(config) {\n var Base = config[0],\n methods = config[1],\n attribute = config[2];\n\n Base.mixin = function(obj) {\n var mappings = _.reduce(_.functions(obj), function(memo, name) {\n memo[name] = 0;\n return memo;\n }, {});\n addUnderscoreMethods(Base, obj, mappings, attribute);\n };\n\n addUnderscoreMethods(Base, _, methods, attribute);\n });\n\n // Backbone.sync\n // -------------\n\n // Override this function to change the manner in which Backbone persists\n // models to the server. You will be passed the type of request, and the\n // model in question. By default, makes a RESTful Ajax request\n // to the model's `url()`. Some possible customizations could be:\n //\n // * Use `setTimeout` to batch rapid-fire updates into a single request.\n // * Send up the models as XML instead of JSON.\n // * Persist models via WebSockets instead of Ajax.\n //\n // Turn on `Backbone.emulateHTTP` in order to send `PUT` and `DELETE` requests\n // as `POST`, with a `_method` parameter containing the true HTTP method,\n // as well as all requests with the body as `application/x-www-form-urlencoded`\n // instead of `application/json` with the model in a param named `model`.\n // Useful when interfacing with server-side languages like **PHP** that make\n // it difficult to read the body of `PUT` requests.\n Backbone.sync = function(method, model, options) {\n var type = methodMap[method];\n\n // Default options, unless specified.\n _.defaults(options || (options = {}), {\n emulateHTTP: Backbone.emulateHTTP,\n emulateJSON: Backbone.emulateJSON\n });\n\n // Default JSON-request options.\n var params = {type: type, dataType: 'json'};\n\n // Ensure that we have a URL.\n if (!options.url) {\n params.url = _.result(model, 'url') || urlError();\n }\n\n // Ensure that we have the appropriate request data.\n if (options.data == null && model && (method === 'create' || method === 'update' || method === 'patch')) {\n params.contentType = 'application/json';\n params.data = JSON.stringify(options.attrs || model.toJSON(options));\n }\n\n // For older servers, emulate JSON by encoding the request into an HTML-form.\n if (options.emulateJSON) {\n params.contentType = 'application/x-www-form-urlencoded';\n params.data = params.data ? {model: params.data} : {};\n }\n\n // For older servers, emulate HTTP by mimicking the HTTP method with `_method`\n // And an `X-HTTP-Method-Override` header.\n if (options.emulateHTTP && (type === 'PUT' || type === 'DELETE' || type === 'PATCH')) {\n params.type = 'POST';\n if (options.emulateJSON) params.data._method = type;\n var beforeSend = options.beforeSend;\n options.beforeSend = function(xhr) {\n xhr.setRequestHeader('X-HTTP-Method-Override', type);\n if (beforeSend) return beforeSend.apply(this, arguments);\n };\n }\n\n // Don't process data on a non-GET request.\n if (params.type !== 'GET' && !options.emulateJSON) {\n params.processData = false;\n }\n\n // Pass along `textStatus` and `errorThrown` from jQuery.\n var error = options.error;\n options.error = function(xhr, textStatus, errorThrown) {\n options.textStatus = textStatus;\n options.errorThrown = errorThrown;\n if (error) error.call(options.context, xhr, textStatus, errorThrown);\n };\n\n // Make the request, allowing the user to override any Ajax options.\n var xhr = options.xhr = Backbone.ajax(_.extend(params, options));\n model.trigger('request', model, xhr, options);\n return xhr;\n };\n\n // Map from CRUD to HTTP for our default `Backbone.sync` implementation.\n var methodMap = {\n 'create': 'POST',\n 'update': 'PUT',\n 'patch': 'PATCH',\n 'delete': 'DELETE',\n 'read': 'GET'\n };\n\n // Set the default implementation of `Backbone.ajax` to proxy through to `$`.\n // Override this if you'd like to use a different library.\n Backbone.ajax = function() {\n return Backbone.$.ajax.apply(Backbone.$, arguments);\n };\n\n // Backbone.Router\n // ---------------\n\n // Routers map faux-URLs to actions, and fire events when routes are\n // matched. Creating a new one sets its `routes` hash, if not set statically.\n var Router = Backbone.Router = function(options) {\n options || (options = {});\n this.preinitialize.apply(this, arguments);\n if (options.routes) this.routes = options.routes;\n this._bindRoutes();\n this.initialize.apply(this, arguments);\n };\n\n // Cached regular expressions for matching named param parts and splatted\n // parts of route strings.\n var optionalParam = /\\((.*?)\\)/g;\n var namedParam = /(\\(\\?)?:\\w+/g;\n var splatParam = /\\*\\w+/g;\n var escapeRegExp = /[\\-{}\\[\\]+?.,\\\\\\^$|#\\s]/g;\n\n // Set up all inheritable **Backbone.Router** properties and methods.\n _.extend(Router.prototype, Events, {\n\n // preinitialize is an empty function by default. You can override it with a function\n // or object. preinitialize will run before any instantiation logic is run in the Router.\n preinitialize: function(){},\n\n // Initialize is an empty function by default. Override it with your own\n // initialization logic.\n initialize: function(){},\n\n // Manually bind a single named route to a callback. For example:\n //\n // this.route('search/:query/p:num', 'search', function(query, num) {\n // ...\n // });\n //\n route: function(route, name, callback) {\n if (!_.isRegExp(route)) route = this._routeToRegExp(route);\n if (_.isFunction(name)) {\n callback = name;\n name = '';\n }\n if (!callback) callback = this[name];\n var router = this;\n Backbone.history.route(route, function(fragment) {\n var args = router._extractParameters(route, fragment);\n if (router.execute(callback, args, name) !== false) {\n router.trigger.apply(router, ['route:' + name].concat(args));\n router.trigger('route', name, args);\n Backbone.history.trigger('route', router, name, args);\n }\n });\n return this;\n },\n\n // Execute a route handler with the provided parameters. This is an\n // excellent place to do pre-route setup or post-route cleanup.\n execute: function(callback, args, name) {\n if (callback) callback.apply(this, args);\n },\n\n // Simple proxy to `Backbone.history` to save a fragment into the history.\n navigate: function(fragment, options) {\n Backbone.history.navigate(fragment, options);\n return this;\n },\n\n // Bind all defined routes to `Backbone.history`. We have to reverse the\n // order of the routes here to support behavior where the most general\n // routes can be defined at the bottom of the route map.\n _bindRoutes: function() {\n if (!this.routes) return;\n this.routes = _.result(this, 'routes');\n var route, routes = _.keys(this.routes);\n while ((route = routes.pop()) != null) {\n this.route(route, this.routes[route]);\n }\n },\n\n // Convert a route string into a regular expression, suitable for matching\n // against the current location hash.\n _routeToRegExp: function(route) {\n route = route.replace(escapeRegExp, '\\\\$&')\n .replace(optionalParam, '(?:$1)?')\n .replace(namedParam, function(match, optional) {\n return optional ? match : '([^/?]+)';\n })\n .replace(splatParam, '([^?]*?)');\n return new RegExp('^' + route + '(?:\\\\?([\\\\s\\\\S]*))?$');\n },\n\n // Given a route, and a URL fragment that it matches, return the array of\n // extracted decoded parameters. Empty or unmatched parameters will be\n // treated as `null` to normalize cross-browser behavior.\n _extractParameters: function(route, fragment) {\n var params = route.exec(fragment).slice(1);\n return _.map(params, function(param, i) {\n // Don't decode the search params.\n if (i === params.length - 1) return param || null;\n return param ? decodeURIComponent(param) : null;\n });\n }\n\n });\n\n // Backbone.History\n // ----------------\n\n // Handles cross-browser history management, based on either\n // [pushState](http://diveintohtml5.info/history.html) and real URLs, or\n // [onhashchange](https://developer.mozilla.org/en-US/docs/DOM/window.onhashchange)\n // and URL fragments. If the browser supports neither (old IE, natch),\n // falls back to polling.\n var History = Backbone.History = function() {\n this.handlers = [];\n this.checkUrl = this.checkUrl.bind(this);\n\n // Ensure that `History` can be used outside of the browser.\n if (typeof window !== 'undefined') {\n this.location = window.location;\n this.history = window.history;\n }\n };\n\n // Cached regex for stripping a leading hash/slash and trailing space.\n var routeStripper = /^[#\\/]|\\s+$/g;\n\n // Cached regex for stripping leading and trailing slashes.\n var rootStripper = /^\\/+|\\/+$/g;\n\n // Cached regex for stripping urls of hash.\n var pathStripper = /#.*$/;\n\n // Has the history handling already been started?\n History.started = false;\n\n // Set up all inheritable **Backbone.History** properties and methods.\n _.extend(History.prototype, Events, {\n\n // The default interval to poll for hash changes, if necessary, is\n // twenty times a second.\n interval: 50,\n\n // Are we at the app root?\n atRoot: function() {\n var path = this.location.pathname.replace(/[^\\/]$/, '$&/');\n return path === this.root && !this.getSearch();\n },\n\n // Does the pathname match the root?\n matchRoot: function() {\n var path = this.decodeFragment(this.location.pathname);\n var rootPath = path.slice(0, this.root.length - 1) + '/';\n return rootPath === this.root;\n },\n\n // Unicode characters in `location.pathname` are percent encoded so they're\n // decoded for comparison. `%25` should not be decoded since it may be part\n // of an encoded parameter.\n decodeFragment: function(fragment) {\n return decodeURI(fragment.replace(/%25/g, '%2525'));\n },\n\n // In IE6, the hash fragment and search params are incorrect if the\n // fragment contains `?`.\n getSearch: function() {\n var match = this.location.href.replace(/#.*/, '').match(/\\?.+/);\n return match ? match[0] : '';\n },\n\n // Gets the true hash value. Cannot use location.hash directly due to bug\n // in Firefox where location.hash will always be decoded.\n getHash: function(window) {\n var match = (window || this).location.href.match(/#(.*)$/);\n return match ? match[1] : '';\n },\n\n // Get the pathname and search params, without the root.\n getPath: function() {\n var path = this.decodeFragment(\n this.location.pathname + this.getSearch()\n ).slice(this.root.length - 1);\n return path.charAt(0) === '/' ? path.slice(1) : path;\n },\n\n // Get the cross-browser normalized URL fragment from the path or hash.\n getFragment: function(fragment) {\n if (fragment == null) {\n if (this._usePushState || !this._wantsHashChange) {\n fragment = this.getPath();\n } else {\n fragment = this.getHash();\n }\n }\n return fragment.replace(routeStripper, '');\n },\n\n // Start the hash change handling, returning `true` if the current URL matches\n // an existing route, and `false` otherwise.\n start: function(options) {\n if (History.started) throw new Error('Backbone.history has already been started');\n History.started = true;\n\n // Figure out the initial configuration. Do we need an iframe?\n // Is pushState desired ... is it available?\n this.options = _.extend({root: '/'}, this.options, options);\n this.root = this.options.root;\n this._trailingSlash = this.options.trailingSlash;\n this._wantsHashChange = this.options.hashChange !== false;\n this._hasHashChange = 'onhashchange' in window && (document.documentMode === void 0 || document.documentMode > 7);\n this._useHashChange = this._wantsHashChange && this._hasHashChange;\n this._wantsPushState = !!this.options.pushState;\n this._hasPushState = !!(this.history && this.history.pushState);\n this._usePushState = this._wantsPushState && this._hasPushState;\n this.fragment = this.getFragment();\n\n // Normalize root to always include a leading and trailing slash.\n this.root = ('/' + this.root + '/').replace(rootStripper, '/');\n\n // Transition from hashChange to pushState or vice versa if both are\n // requested.\n if (this._wantsHashChange && this._wantsPushState) {\n\n // If we've started off with a route from a `pushState`-enabled\n // browser, but we're currently in a browser that doesn't support it...\n if (!this._hasPushState && !this.atRoot()) {\n var rootPath = this.root.slice(0, -1) || '/';\n this.location.replace(rootPath + '#' + this.getPath());\n // Return immediately as browser will do redirect to new url\n return true;\n\n // Or if we've started out with a hash-based route, but we're currently\n // in a browser where it could be `pushState`-based instead...\n } else if (this._hasPushState && this.atRoot()) {\n this.navigate(this.getHash(), {replace: true});\n }\n\n }\n\n // Proxy an iframe to handle location events if the browser doesn't\n // support the `hashchange` event, HTML5 history, or the user wants\n // `hashChange` but not `pushState`.\n if (!this._hasHashChange && this._wantsHashChange && !this._usePushState) {\n this.iframe = document.createElement('iframe');\n this.iframe.src = 'javascript:0';\n this.iframe.style.display = 'none';\n this.iframe.tabIndex = -1;\n var body = document.body;\n // Using `appendChild` will throw on IE < 9 if the document is not ready.\n var iWindow = body.insertBefore(this.iframe, body.firstChild).contentWindow;\n iWindow.document.open();\n iWindow.document.close();\n iWindow.location.hash = '#' + this.fragment;\n }\n\n // Add a cross-platform `addEventListener` shim for older browsers.\n var addEventListener = window.addEventListener || function(eventName, listener) {\n return attachEvent('on' + eventName, listener);\n };\n\n // Depending on whether we're using pushState or hashes, and whether\n // 'onhashchange' is supported, determine how we check the URL state.\n if (this._usePushState) {\n addEventListener('popstate', this.checkUrl, false);\n } else if (this._useHashChange && !this.iframe) {\n addEventListener('hashchange', this.checkUrl, false);\n } else if (this._wantsHashChange) {\n this._checkUrlInterval = setInterval(this.checkUrl, this.interval);\n }\n\n if (!this.options.silent) return this.loadUrl();\n },\n\n // Disable Backbone.history, perhaps temporarily. Not useful in a real app,\n // but possibly useful for unit testing Routers.\n stop: function() {\n // Add a cross-platform `removeEventListener` shim for older browsers.\n var removeEventListener = window.removeEventListener || function(eventName, listener) {\n return detachEvent('on' + eventName, listener);\n };\n\n // Remove window listeners.\n if (this._usePushState) {\n removeEventListener('popstate', this.checkUrl, false);\n } else if (this._useHashChange && !this.iframe) {\n removeEventListener('hashchange', this.checkUrl, false);\n }\n\n // Clean up the iframe if necessary.\n if (this.iframe) {\n document.body.removeChild(this.iframe);\n this.iframe = null;\n }\n\n // Some environments will throw when clearing an undefined interval.\n if (this._checkUrlInterval) clearInterval(this._checkUrlInterval);\n History.started = false;\n },\n\n // Add a route to be tested when the fragment changes. Routes added later\n // may override previous routes.\n route: function(route, callback) {\n this.handlers.unshift({route: route, callback: callback});\n },\n\n // Checks the current URL to see if it has changed, and if it has,\n // calls `loadUrl`, normalizing across the hidden iframe.\n checkUrl: function(e) {\n var current = this.getFragment();\n\n // If the user pressed the back button, the iframe's hash will have\n // changed and we should use that for comparison.\n if (current === this.fragment && this.iframe) {\n current = this.getHash(this.iframe.contentWindow);\n }\n\n if (current === this.fragment) {\n if (!this.matchRoot()) return this.notfound();\n return false;\n }\n if (this.iframe) this.navigate(current);\n this.loadUrl();\n },\n\n // Attempt to load the current URL fragment. If a route succeeds with a\n // match, returns `true`. If no defined routes matches the fragment,\n // returns `false`.\n loadUrl: function(fragment) {\n // If the root doesn't match, no routes can match either.\n if (!this.matchRoot()) return this.notfound();\n fragment = this.fragment = this.getFragment(fragment);\n return _.some(this.handlers, function(handler) {\n if (handler.route.test(fragment)) {\n handler.callback(fragment);\n return true;\n }\n }) || this.notfound();\n },\n\n // When no route could be matched, this method is called internally to\n // trigger the `'notfound'` event. It returns `false` so that it can be used\n // in tail position.\n notfound: function() {\n this.trigger('notfound');\n return false;\n },\n\n // Save a fragment into the hash history, or replace the URL state if the\n // 'replace' option is passed. You are responsible for properly URL-encoding\n // the fragment in advance.\n //\n // The options object can contain `trigger: true` if you wish to have the\n // route callback be fired (not usually desirable), or `replace: true`, if\n // you wish to modify the current URL without adding an entry to the history.\n navigate: function(fragment, options) {\n if (!History.started) return false;\n if (!options || options === true) options = {trigger: !!options};\n\n // Normalize the fragment.\n fragment = this.getFragment(fragment || '');\n\n // Strip trailing slash on the root unless _trailingSlash is true\n var rootPath = this.root;\n if (!this._trailingSlash && (fragment === '' || fragment.charAt(0) === '?')) {\n rootPath = rootPath.slice(0, -1) || '/';\n }\n var url = rootPath + fragment;\n\n // Strip the fragment of the query and hash for matching.\n fragment = fragment.replace(pathStripper, '');\n\n // Decode for matching.\n var decodedFragment = this.decodeFragment(fragment);\n\n if (this.fragment === decodedFragment) return;\n this.fragment = decodedFragment;\n\n // If pushState is available, we use it to set the fragment as a real URL.\n if (this._usePushState) {\n this.history[options.replace ? 'replaceState' : 'pushState']({}, document.title, url);\n\n // If hash changes haven't been explicitly disabled, update the hash\n // fragment to store history.\n } else if (this._wantsHashChange) {\n this._updateHash(this.location, fragment, options.replace);\n if (this.iframe && fragment !== this.getHash(this.iframe.contentWindow)) {\n var iWindow = this.iframe.contentWindow;\n\n // Opening and closing the iframe tricks IE7 and earlier to push a\n // history entry on hash-tag change. When replace is true, we don't\n // want this.\n if (!options.replace) {\n iWindow.document.open();\n iWindow.document.close();\n }\n\n this._updateHash(iWindow.location, fragment, options.replace);\n }\n\n // If you've told us that you explicitly don't want fallback hashchange-\n // based history, then `navigate` becomes a page refresh.\n } else {\n return this.location.assign(url);\n }\n if (options.trigger) return this.loadUrl(fragment);\n },\n\n // Update the hash location, either replacing the current entry, or adding\n // a new one to the browser history.\n _updateHash: function(location, fragment, replace) {\n if (replace) {\n var href = location.href.replace(/(javascript:|#).*$/, '');\n location.replace(href + '#' + fragment);\n } else {\n // Some browsers require that `hash` contains a leading #.\n location.hash = '#' + fragment;\n }\n }\n\n });\n\n // Create the default Backbone.history.\n Backbone.history = new History;\n\n // Helpers\n // -------\n\n // Helper function to correctly set up the prototype chain for subclasses.\n // Similar to `goog.inherits`, but uses a hash of prototype properties and\n // class properties to be extended.\n var extend = function(protoProps, staticProps) {\n var parent = this;\n var child;\n\n // The constructor function for the new subclass is either defined by you\n // (the \"constructor\" property in your `extend` definition), or defaulted\n // by us to simply call the parent constructor.\n if (protoProps && _.has(protoProps, 'constructor')) {\n child = protoProps.constructor;\n } else {\n child = function(){ return parent.apply(this, arguments); };\n }\n\n // Add static properties to the constructor function, if supplied.\n _.extend(child, parent, staticProps);\n\n // Set the prototype chain to inherit from `parent`, without calling\n // `parent`'s constructor function and add the prototype properties.\n child.prototype = _.create(parent.prototype, protoProps);\n child.prototype.constructor = child;\n\n // Set a convenience property in case the parent's prototype is needed\n // later.\n child.__super__ = parent.prototype;\n\n return child;\n };\n\n // Set up inheritance for the model, collection, router, view and history.\n Model.extend = Collection.extend = Router.extend = View.extend = History.extend = extend;\n\n // Throw an error when a URL is needed, and none is supplied.\n var urlError = function() {\n throw new Error('A \"url\" property or function must be specified');\n };\n\n // Wrap an optional error callback with a fallback error event.\n var wrapError = function(model, options) {\n var error = options.error;\n options.error = function(resp) {\n if (error) error.call(options.context, model, resp, options);\n model.trigger('error', model, resp, options);\n };\n };\n\n // Provide useful information when things go wrong. This method is not meant\n // to be used directly; it merely provides the necessary introspection for the\n // external `debugInfo` function.\n Backbone._debug = function() {\n return {root: root, _: _};\n };\n\n return Backbone;\n});\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.button-vue[data-v-d2cd6448]{margin-top:.5rem}`, \"\",{\"version\":3,\"sources\":[\"webpack://./core/src/components/login/LoginButton.vue\"],\"names\":[],\"mappings\":\"AACA,6BACC,gBAAA\",\"sourcesContent\":[\"\\n.button-vue {\\n\\tmargin-top: .5rem;\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.login-form[data-v-7d917450]{text-align:left;font-size:1rem}.login-form__fieldset[data-v-7d917450]{width:100%;display:flex;flex-direction:column;gap:.5rem}.login-form__headline[data-v-7d917450]{text-align:center;overflow-wrap:anywhere}`, \"\",{\"version\":3,\"sources\":[\"webpack://./core/src/components/login/LoginForm.vue\"],\"names\":[],\"mappings\":\"AACA,6BACC,eAAA,CACA,cAAA,CAEA,uCACC,UAAA,CACA,YAAA,CACA,qBAAA,CACA,SAAA,CAGD,uCACC,iBAAA,CACA,sBAAA\",\"sourcesContent\":[\"\\n.login-form {\\n\\ttext-align: left;\\n\\tfont-size: 1rem;\\n\\n\\t&__fieldset {\\n\\t\\twidth: 100%;\\n\\t\\tdisplay: flex;\\n\\t\\tflex-direction: column;\\n\\t\\tgap: .5rem;\\n\\t}\\n\\n\\t&__headline {\\n\\t\\ttext-align: center;\\n\\t\\toverflow-wrap: anywhere;\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `fieldset[data-v-4a6bfc86]{display:flex;flex-direction:column;gap:.5rem}fieldset[data-v-4a6bfc86] label{text-align:initial}.update[data-v-4a6bfc86]{margin:0 auto}`, \"\",{\"version\":3,\"sources\":[\"webpack://./core/src/components/login/PasswordLessLoginForm.vue\"],\"names\":[],\"mappings\":\"AACA,0BACC,YAAA,CACA,qBAAA,CACA,SAAA,CAEA,gCACC,kBAAA,CAIF,yBACC,aAAA\",\"sourcesContent\":[\"\\nfieldset {\\n\\tdisplay: flex;\\n\\tflex-direction: column;\\n\\tgap: 0.5rem;\\n\\n\\t:deep(label) {\\n\\t\\ttext-align: initial;\\n\\t}\\n}\\n\\n.update {\\n\\tmargin: 0 auto;\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.login-form[data-v-cd5425c6]{text-align:left;font-size:1rem}.login-form__fieldset[data-v-cd5425c6]{width:100%;display:flex;flex-direction:column;gap:.5rem}.login-form__link[data-v-cd5425c6]{display:block;font-weight:normal !important;padding-bottom:1rem;cursor:pointer;font-size:var(--default-font-size);text-align:center;padding:.5rem 1rem 1rem 1rem}`, \"\",{\"version\":3,\"sources\":[\"webpack://./core/src/components/login/ResetPassword.vue\"],\"names\":[],\"mappings\":\"AACA,6BACC,eAAA,CACA,cAAA,CAEA,uCACC,UAAA,CACA,YAAA,CACA,qBAAA,CACA,SAAA,CAGD,mCACC,aAAA,CACA,6BAAA,CACA,mBAAA,CACA,cAAA,CACA,kCAAA,CACA,iBAAA,CACA,4BAAA\",\"sourcesContent\":[\"\\n.login-form {\\n\\ttext-align: left;\\n\\tfont-size: 1rem;\\n\\n\\t&__fieldset {\\n\\t\\twidth: 100%;\\n\\t\\tdisplay: flex;\\n\\t\\tflex-direction: column;\\n\\t\\tgap: .5rem;\\n\\t}\\n\\n\\t&__link {\\n\\t\\tdisplay: block;\\n\\t\\tfont-weight: normal !important;\\n\\t\\tpadding-bottom: 1rem;\\n\\t\\tcursor: pointer;\\n\\t\\tfont-size: var(--default-font-size);\\n\\t\\ttext-align: center;\\n\\t\\tpadding: .5rem 1rem 1rem 1rem;\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `body{font-size:var(--default-font-size)}.login-box{width:320px;box-sizing:border-box}.login-box__link{display:block;padding:1rem;font-size:var(--default-font-size);text-align:center;font-weight:normal !important}.fade-enter-active,.fade-leave-active{transition:opacity .3s}.fade-enter,.fade-leave-to{opacity:0}.alternative-logins{display:flex;flex-direction:column;gap:.75rem}.alternative-logins .button-vue{box-sizing:border-box}.login-passwordless .button-vue{margin-top:.5rem}`, \"\",{\"version\":3,\"sources\":[\"webpack://./core/src/views/Login.vue\"],\"names\":[],\"mappings\":\"AACA,KACC,kCAAA,CAGD,WAEC,WAAA,CACA,qBAAA,CAEA,iBACC,aAAA,CACA,YAAA,CACA,kCAAA,CACA,iBAAA,CACA,6BAAA,CAIF,sCACC,sBAAA,CAED,2BACC,SAAA,CAGD,oBACC,YAAA,CACA,qBAAA,CACA,UAAA,CAEA,gCACC,qBAAA,CAKD,gCACC,gBAAA\",\"sourcesContent\":[\"\\nbody {\\n\\tfont-size: var(--default-font-size);\\n}\\n\\n.login-box {\\n\\t// Same size as dashboard panels\\n\\twidth: 320px;\\n\\tbox-sizing: border-box;\\n\\n\\t&__link {\\n\\t\\tdisplay: block;\\n\\t\\tpadding: 1rem;\\n\\t\\tfont-size: var(--default-font-size);\\n\\t\\ttext-align: center;\\n\\t\\tfont-weight: normal !important;\\n\\t}\\n}\\n\\n.fade-enter-active, .fade-leave-active {\\n\\ttransition: opacity .3s;\\n}\\n.fade-enter, .fade-leave-to /* .fade-leave-active below version 2.1.8 */ {\\n\\topacity: 0;\\n}\\n\\n.alternative-logins {\\n\\tdisplay: flex;\\n\\tflex-direction: column;\\n\\tgap: 0.75rem;\\n\\n\\t.button-vue {\\n\\t\\tbox-sizing: border-box;\\n\\t}\\n}\\n\\n.login-passwordless {\\n\\t.button-vue {\\n\\t\\tmargin-top: 0.5rem;\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `\nfieldset[data-v-6bdd5975] {\n\ttext-align: center;\n}\ninput[type=submit][data-v-6bdd5975] {\n\tmargin-top: 20px;\n}\n`, \"\",{\"version\":3,\"sources\":[\"webpack://./core/src/components/login/UpdatePassword.vue\"],\"names\":[],\"mappings\":\";AA2HA;CACA,kBAAA;AACA;AAEA;CACA,gBAAA;AACA\",\"sourcesContent\":[\"<!--\\n - SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\\n - SPDX-License-Identifier: AGPL-3.0-or-later\\n-->\\n\\n<template>\\n\\t<form @submit.prevent=\\\"submit\\\">\\n\\t\\t<fieldset>\\n\\t\\t\\t<p>\\n\\t\\t\\t\\t<label for=\\\"password\\\" class=\\\"infield\\\">{{ t('core', 'New password') }}</label>\\n\\t\\t\\t\\t<input id=\\\"password\\\"\\n\\t\\t\\t\\t\\tv-model=\\\"password\\\"\\n\\t\\t\\t\\t\\ttype=\\\"password\\\"\\n\\t\\t\\t\\t\\tname=\\\"password\\\"\\n\\t\\t\\t\\t\\tautocomplete=\\\"new-password\\\"\\n\\t\\t\\t\\t\\tautocapitalize=\\\"none\\\"\\n\\t\\t\\t\\t\\tspellcheck=\\\"false\\\"\\n\\t\\t\\t\\t\\trequired\\n\\t\\t\\t\\t\\t:placeholder=\\\"t('core', 'New password')\\\">\\n\\t\\t\\t</p>\\n\\n\\t\\t\\t<div v-if=\\\"encrypted\\\" class=\\\"update\\\">\\n\\t\\t\\t\\t<p>\\n\\t\\t\\t\\t\\t{{ t('core', 'Your files are encrypted. There will be no way to get your data back after your password is reset. If you are not sure what to do, please contact your administrator before you continue. Do you really want to continue?') }}\\n\\t\\t\\t\\t</p>\\n\\t\\t\\t\\t<input id=\\\"encrypted-continue\\\"\\n\\t\\t\\t\\t\\tv-model=\\\"proceed\\\"\\n\\t\\t\\t\\t\\ttype=\\\"checkbox\\\"\\n\\t\\t\\t\\t\\tclass=\\\"checkbox\\\">\\n\\t\\t\\t\\t<label for=\\\"encrypted-continue\\\">\\n\\t\\t\\t\\t\\t{{ t('core', 'I know what I\\\\'m doing') }}\\n\\t\\t\\t\\t</label>\\n\\t\\t\\t</div>\\n\\n\\t\\t\\t<LoginButton :loading=\\\"loading\\\"\\n\\t\\t\\t\\t:value=\\\"t('core', 'Reset password')\\\"\\n\\t\\t\\t\\t:value-loading=\\\"t('core', 'Resetting password')\\\" />\\n\\n\\t\\t\\t<p v-if=\\\"error && message\\\" :class=\\\"{warning: error}\\\">\\n\\t\\t\\t\\t{{ message }}\\n\\t\\t\\t</p>\\n\\t\\t</fieldset>\\n\\t</form>\\n</template>\\n\\n<script>\\nimport Axios from '@nextcloud/axios'\\nimport LoginButton from './LoginButton.vue'\\n\\nexport default {\\n\\tname: 'UpdatePassword',\\n\\tcomponents: {\\n\\t\\tLoginButton,\\n\\t},\\n\\tprops: {\\n\\t\\tusername: {\\n\\t\\t\\ttype: String,\\n\\t\\t\\trequired: true,\\n\\t\\t},\\n\\t\\tresetPasswordTarget: {\\n\\t\\t\\ttype: String,\\n\\t\\t\\trequired: true,\\n\\t\\t},\\n\\t},\\n\\tdata() {\\n\\t\\treturn {\\n\\t\\t\\terror: false,\\n\\t\\t\\tloading: false,\\n\\t\\t\\tmessage: undefined,\\n\\t\\t\\tuser: this.username,\\n\\t\\t\\tpassword: '',\\n\\t\\t\\tencrypted: false,\\n\\t\\t\\tproceed: false,\\n\\t\\t}\\n\\t},\\n\\twatch: {\\n\\t\\tusername(value) {\\n\\t\\t\\tthis.user = value\\n\\t\\t},\\n\\t},\\n\\tmethods: {\\n\\t\\tasync submit() {\\n\\t\\t\\tthis.loading = true\\n\\t\\t\\tthis.error = false\\n\\t\\t\\tthis.message = ''\\n\\n\\t\\t\\ttry {\\n\\t\\t\\t\\tconst { data } = await Axios.post(this.resetPasswordTarget, {\\n\\t\\t\\t\\t\\tpassword: this.password,\\n\\t\\t\\t\\t\\tproceed: this.proceed,\\n\\t\\t\\t\\t})\\n\\t\\t\\t\\tif (data && data.status === 'success') {\\n\\t\\t\\t\\t\\tthis.message = 'send-success'\\n\\t\\t\\t\\t\\tthis.$emit('update:username', this.user)\\n\\t\\t\\t\\t\\tthis.$emit('done')\\n\\t\\t\\t\\t} else if (data && data.encryption) {\\n\\t\\t\\t\\t\\tthis.encrypted = true\\n\\t\\t\\t\\t} else if (data && data.msg) {\\n\\t\\t\\t\\t\\tthrow new Error(data.msg)\\n\\t\\t\\t\\t} else {\\n\\t\\t\\t\\t\\tthrow new Error()\\n\\t\\t\\t\\t}\\n\\t\\t\\t} catch (e) {\\n\\t\\t\\t\\tthis.error = true\\n\\t\\t\\t\\tthis.message = e.message ? e.message : t('core', 'Password cannot be changed. Please contact your administrator.')\\n\\t\\t\\t} finally {\\n\\t\\t\\t\\tthis.loading = false\\n\\t\\t\\t}\\n\\t\\t},\\n\\t},\\n}\\n</script>\\n\\n<style scoped>\\n\\tfieldset {\\n\\t\\ttext-align: center;\\n\\t}\\n\\n\\tinput[type=submit] {\\n\\t\\tmargin-top: 20px;\\n\\t}\\n</style>\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","/*\n * vim: expandtab shiftwidth=4 softtabstop=4\n */\n\n/* global dav */\nif (typeof dav === 'undefined') { dav = {}; };\n\ndav._XML_CHAR_MAP = {\n '<': '<',\n '>': '>',\n '&': '&',\n '\"': '"',\n \"'\": '''\n};\n\ndav._escapeXml = function(s) {\n return s.replace(/[<>&\"']/g, function (ch) {\n return dav._XML_CHAR_MAP[ch];\n });\n};\n\ndav.Client = function(options) {\n var i;\n for(i in options) {\n this[i] = options[i];\n }\n\n};\n\ndav.Client.prototype = {\n\n baseUrl : null,\n\n userName : null,\n\n password : null,\n\n\n xmlNamespaces : {\n 'DAV:' : 'd'\n },\n\n /**\n * Generates a propFind request.\n *\n * @param {string} url Url to do the propfind request on\n * @param {Array} properties List of properties to retrieve.\n * @param {string} depth \"0\", \"1\" or \"infinity\"\n * @param {Object} [headers] headers\n * @return {Promise}\n */\n propFind : function(url, properties, depth, headers) {\n\n if(typeof depth === \"undefined\") {\n depth = '0';\n }\n\n // depth header must be a string, in case a number was passed in\n depth = '' + depth;\n\n headers = headers || {};\n\n headers['Depth'] = depth;\n headers['Content-Type'] = 'application/xml; charset=utf-8';\n\n var body =\n '<?xml version=\"1.0\"?>\\n' +\n '<d:propfind ';\n var namespace;\n for (namespace in this.xmlNamespaces) {\n body += ' xmlns:' + this.xmlNamespaces[namespace] + '=\"' + namespace + '\"';\n }\n body += '>\\n' +\n ' <d:prop>\\n';\n\n for(var ii in properties) {\n if (!properties.hasOwnProperty(ii)) {\n continue;\n }\n\n var property = this.parseClarkNotation(properties[ii]);\n if (this.xmlNamespaces[property.namespace]) {\n body+=' <' + this.xmlNamespaces[property.namespace] + ':' + property.name + ' />\\n';\n } else {\n body+=' <x:' + property.name + ' xmlns:x=\"' + property.namespace + '\" />\\n';\n }\n\n }\n body+=' </d:prop>\\n';\n body+='</d:propfind>';\n\n return this.request('PROPFIND', url, headers, body).then(\n function(result) {\n\n if (depth === '0') {\n return {\n status: result.status,\n body: result.body[0],\n xhr: result.xhr\n };\n } else {\n return {\n status: result.status,\n body: result.body,\n xhr: result.xhr\n };\n }\n\n }.bind(this)\n );\n\n },\n\n /**\n * Renders a \"d:set\" block for the given properties.\n *\n * @param {Object.<String,String>} properties\n * @return {String} XML \"<d:set>\" block\n */\n _renderPropSet: function(properties) {\n var body = ' <d:set>\\n' +\n ' <d:prop>\\n';\n\n for(var ii in properties) {\n if (!properties.hasOwnProperty(ii)) {\n continue;\n }\n\n var property = this.parseClarkNotation(ii);\n var propName;\n var propValue = properties[ii];\n if (this.xmlNamespaces[property.namespace]) {\n propName = this.xmlNamespaces[property.namespace] + ':' + property.name;\n } else {\n propName = 'x:' + property.name + ' xmlns:x=\"' + property.namespace + '\"';\n }\n\n // FIXME: hard-coded for now until we allow properties to\n // specify whether to be escaped or not\n if (propName !== 'd:resourcetype') {\n propValue = dav._escapeXml(propValue);\n }\n body += ' <' + propName + '>' + propValue + '</' + propName + '>\\n';\n }\n body +=' </d:prop>\\n';\n body +=' </d:set>\\n';\n return body;\n },\n\n /**\n * Generates a propPatch request.\n *\n * @param {string} url Url to do the proppatch request on\n * @param {Object.<String,String>} properties List of properties to store.\n * @param {Object} [headers] headers\n * @return {Promise}\n */\n propPatch : function(url, properties, headers) {\n headers = headers || {};\n\n headers['Content-Type'] = 'application/xml; charset=utf-8';\n\n var body =\n '<?xml version=\"1.0\"?>\\n' +\n '<d:propertyupdate ';\n var namespace;\n for (namespace in this.xmlNamespaces) {\n body += ' xmlns:' + this.xmlNamespaces[namespace] + '=\"' + namespace + '\"';\n }\n body += '>\\n' + this._renderPropSet(properties);\n body += '</d:propertyupdate>';\n\n return this.request('PROPPATCH', url, headers, body).then(\n function(result) {\n return {\n status: result.status,\n body: result.body,\n xhr: result.xhr\n };\n }.bind(this)\n );\n\n },\n\n /**\n * Generates a MKCOL request.\n * If attributes are given, it will use an extended MKCOL request.\n *\n * @param {string} url Url to do the proppatch request on\n * @param {Object.<String,String>} [properties] list of properties to store.\n * @param {Object} [headers] headers\n * @return {Promise}\n */\n mkcol : function(url, properties, headers) {\n var body = '';\n headers = headers || {};\n headers['Content-Type'] = 'application/xml; charset=utf-8';\n\n if (properties) {\n body =\n '<?xml version=\"1.0\"?>\\n' +\n '<d:mkcol';\n var namespace;\n for (namespace in this.xmlNamespaces) {\n body += ' xmlns:' + this.xmlNamespaces[namespace] + '=\"' + namespace + '\"';\n }\n body += '>\\n' + this._renderPropSet(properties);\n body +='</d:mkcol>';\n }\n\n return this.request('MKCOL', url, headers, body).then(\n function(result) {\n return {\n status: result.status,\n body: result.body,\n xhr: result.xhr\n };\n }.bind(this)\n );\n\n },\n\n /**\n * Performs a HTTP request, and returns a Promise\n *\n * @param {string} method HTTP method\n * @param {string} url Relative or absolute url\n * @param {Object} headers HTTP headers as an object.\n * @param {string} body HTTP request body.\n * @param {string} responseType HTTP request response type.\n * @param {Object} options\n * @param {Function} options.onProgress progress callback\n * @return {Promise}\n */\n request : function(method, url, headers, body, responseType, options) {\n\n var self = this;\n var xhr = this.xhrProvider();\n headers = headers || {};\n responseType = responseType || \"\";\n \n if (this.userName) {\n headers['Authorization'] = 'Basic ' + btoa(this.userName + ':' + this.password);\n // xhr.open(method, this.resolveUrl(url), true, this.userName, this.password);\n }\n xhr.open(method, this.resolveUrl(url), true);\n var ii;\n for(ii in headers) {\n xhr.setRequestHeader(ii, headers[ii]);\n }\n xhr.responseType = responseType;\n\n if (options && typeof(options.onProgress) === 'function') {\n if (method === 'PUT' || method === 'POST') {\n xhr.upload.addEventListener('progress', function (e) {\n options.onProgress(e)\n }, false)\n }\n else {\n xhr.addEventListener('progress', function (e) {\n options.onProgress(e)\n }, false)\n }\n }\n\n // Work around for edge\n if (body === undefined) {\n xhr.send();\n } else {\n xhr.send(body);\n }\n\n return new Promise(function(fulfill, reject) {\n\n xhr.onreadystatechange = function() {\n\n if (xhr.readyState !== 4) {\n return;\n }\n\n var resultBody = xhr.response;\n if (xhr.status === 207) {\n resultBody = self.parseMultiStatus(xhr.response);\n }\n\n fulfill({\n body: resultBody,\n status: xhr.status,\n xhr: xhr\n });\n\n };\n\n xhr.ontimeout = function() {\n\n reject(new Error('Timeout exceeded'));\n\n };\n\n });\n\n },\n\n /**\n * Returns an XMLHttpRequest object.\n *\n * This is in its own method, so it can be easily overridden.\n *\n * @return {XMLHttpRequest}\n */\n xhrProvider : function() {\n\n return new XMLHttpRequest();\n\n },\n\n /**\n * Parses a property node.\n *\n * Either returns a string if the node only contains text, or returns an\n * array of non-text subnodes.\n *\n * @param {Object} propNode node to parse\n * @return {string|Array} text content as string or array of subnodes, excluding text nodes\n */\n _parsePropNode: function(propNode) {\n var content = null;\n if (propNode.childNodes && propNode.childNodes.length > 0) {\n var subNodes = [];\n // filter out text nodes\n for (var j = 0; j < propNode.childNodes.length; j++) {\n var node = propNode.childNodes[j];\n if (node.nodeType === 1) {\n subNodes.push(node);\n }\n }\n if (subNodes.length) {\n content = subNodes;\n }\n }\n\n return content || propNode.textContent || propNode.text || '';\n },\n\n /**\n * Parses a multi-status response body.\n *\n * @param {string} xmlBody\n * @param {Array}\n */\n parseMultiStatus : function(xmlBody) {\n\n var parser = new DOMParser();\n var doc = parser.parseFromString(xmlBody, \"application/xml\");\n\n var resolver = function(foo) {\n var ii;\n for(ii in this.xmlNamespaces) {\n if (this.xmlNamespaces[ii] === foo) {\n return ii;\n }\n }\n }.bind(this);\n\n var responseIterator = doc.evaluate('/d:multistatus/d:response', doc, resolver, XPathResult.ANY_TYPE, null);\n\n var result = [];\n var responseNode = responseIterator.iterateNext();\n\n while(responseNode) {\n\n var response = {\n href : null,\n propStat : []\n };\n\n response.href = doc.evaluate('string(d:href)', responseNode, resolver, XPathResult.ANY_TYPE, null).stringValue;\n\n var propStatIterator = doc.evaluate('d:propstat', responseNode, resolver, XPathResult.ANY_TYPE, null);\n var propStatNode = propStatIterator.iterateNext();\n\n while(propStatNode) {\n var propStat = {\n status : doc.evaluate('string(d:status)', propStatNode, resolver, XPathResult.ANY_TYPE, null).stringValue,\n properties : {},\n };\n\n var propIterator = doc.evaluate('d:prop/*', propStatNode, resolver, XPathResult.ANY_TYPE, null);\n\n var propNode = propIterator.iterateNext();\n while(propNode) {\n var content = this._parsePropNode(propNode);\n propStat.properties['{' + propNode.namespaceURI + '}' + propNode.localName] = content;\n propNode = propIterator.iterateNext();\n\n }\n response.propStat.push(propStat);\n propStatNode = propStatIterator.iterateNext();\n\n\n }\n\n result.push(response);\n responseNode = responseIterator.iterateNext();\n\n }\n\n return result;\n\n },\n\n /**\n * Takes a relative url, and maps it to an absolute url, using the baseUrl\n *\n * @param {string} url\n * @return {string}\n */\n resolveUrl : function(url) {\n\n // Note: this is rudamentary.. not sure yet if it handles every case.\n if (/^https?:\\/\\//i.test(url)) {\n // absolute\n return url;\n }\n\n var baseParts = this.parseUrl(this.baseUrl);\n if (url.charAt('/')) {\n // Url starts with a slash\n return baseParts.root + url;\n }\n\n // Url does not start with a slash, we need grab the base url right up until the last slash.\n var newUrl = baseParts.root + '/';\n if (baseParts.path.lastIndexOf('/')!==-1) {\n newUrl = newUrl = baseParts.path.subString(0, baseParts.path.lastIndexOf('/')) + '/';\n }\n newUrl+=url;\n return url;\n\n },\n\n /**\n * Parses a url and returns its individual components.\n *\n * @param {String} url\n * @return {Object}\n */\n parseUrl : function(url) {\n\n var parts = url.match(/^(?:([A-Za-z]+):)?(\\/{0,3})([0-9.\\-A-Za-z]+)(?::(\\d+))?(?:\\/([^?#]*))?(?:\\?([^#]*))?(?:#(.*))?$/);\n var result = {\n url : parts[0],\n scheme : parts[1],\n host : parts[3],\n port : parts[4],\n path : parts[5],\n query : parts[6],\n fragment : parts[7],\n };\n result.root =\n result.scheme + '://' +\n result.host +\n (result.port ? ':' + result.port : '');\n\n return result;\n\n },\n\n parseClarkNotation : function(propertyName) {\n\n var result = propertyName.match(/^{([^}]+)}(.*)$/);\n if (!result) {\n return;\n }\n\n return {\n name : result[2],\n namespace : result[1]\n };\n\n }\n\n};\n\nif (typeof module !== 'undefined' && typeof module.exports !== 'undefined') {\n module.exports.Client = dav.Client;\n}\n","var map = {\n\t\"./af\": 25177,\n\t\"./af.js\": 25177,\n\t\"./ar\": 61509,\n\t\"./ar-dz\": 41488,\n\t\"./ar-dz.js\": 41488,\n\t\"./ar-kw\": 58676,\n\t\"./ar-kw.js\": 58676,\n\t\"./ar-ly\": 42353,\n\t\"./ar-ly.js\": 42353,\n\t\"./ar-ma\": 24496,\n\t\"./ar-ma.js\": 24496,\n\t\"./ar-ps\": 6947,\n\t\"./ar-ps.js\": 6947,\n\t\"./ar-sa\": 60301,\n\t\"./ar-sa.js\": 60301,\n\t\"./ar-tn\": 89756,\n\t\"./ar-tn.js\": 89756,\n\t\"./ar.js\": 61509,\n\t\"./az\": 95533,\n\t\"./az.js\": 95533,\n\t\"./be\": 28959,\n\t\"./be.js\": 28959,\n\t\"./bg\": 47777,\n\t\"./bg.js\": 47777,\n\t\"./bm\": 54903,\n\t\"./bm.js\": 54903,\n\t\"./bn\": 61290,\n\t\"./bn-bd\": 17357,\n\t\"./bn-bd.js\": 17357,\n\t\"./bn.js\": 61290,\n\t\"./bo\": 31545,\n\t\"./bo.js\": 31545,\n\t\"./br\": 11470,\n\t\"./br.js\": 11470,\n\t\"./bs\": 44429,\n\t\"./bs.js\": 44429,\n\t\"./ca\": 7306,\n\t\"./ca.js\": 7306,\n\t\"./cs\": 56464,\n\t\"./cs.js\": 56464,\n\t\"./cv\": 73635,\n\t\"./cv.js\": 73635,\n\t\"./cy\": 64226,\n\t\"./cy.js\": 64226,\n\t\"./da\": 93601,\n\t\"./da.js\": 93601,\n\t\"./de\": 77853,\n\t\"./de-at\": 26111,\n\t\"./de-at.js\": 26111,\n\t\"./de-ch\": 54697,\n\t\"./de-ch.js\": 54697,\n\t\"./de.js\": 77853,\n\t\"./dv\": 60708,\n\t\"./dv.js\": 60708,\n\t\"./el\": 54691,\n\t\"./el.js\": 54691,\n\t\"./en-au\": 53872,\n\t\"./en-au.js\": 53872,\n\t\"./en-ca\": 28298,\n\t\"./en-ca.js\": 28298,\n\t\"./en-gb\": 56195,\n\t\"./en-gb.js\": 56195,\n\t\"./en-ie\": 66584,\n\t\"./en-ie.js\": 66584,\n\t\"./en-il\": 65543,\n\t\"./en-il.js\": 65543,\n\t\"./en-in\": 9033,\n\t\"./en-in.js\": 9033,\n\t\"./en-nz\": 79402,\n\t\"./en-nz.js\": 79402,\n\t\"./en-sg\": 43004,\n\t\"./en-sg.js\": 43004,\n\t\"./eo\": 32934,\n\t\"./eo.js\": 32934,\n\t\"./es\": 97650,\n\t\"./es-do\": 20838,\n\t\"./es-do.js\": 20838,\n\t\"./es-mx\": 17730,\n\t\"./es-mx.js\": 17730,\n\t\"./es-us\": 56575,\n\t\"./es-us.js\": 56575,\n\t\"./es.js\": 97650,\n\t\"./et\": 3035,\n\t\"./et.js\": 3035,\n\t\"./eu\": 3508,\n\t\"./eu.js\": 3508,\n\t\"./fa\": 119,\n\t\"./fa.js\": 119,\n\t\"./fi\": 90527,\n\t\"./fi.js\": 90527,\n\t\"./fil\": 95995,\n\t\"./fil.js\": 95995,\n\t\"./fo\": 52477,\n\t\"./fo.js\": 52477,\n\t\"./fr\": 85498,\n\t\"./fr-ca\": 26435,\n\t\"./fr-ca.js\": 26435,\n\t\"./fr-ch\": 37892,\n\t\"./fr-ch.js\": 37892,\n\t\"./fr.js\": 85498,\n\t\"./fy\": 37071,\n\t\"./fy.js\": 37071,\n\t\"./ga\": 41734,\n\t\"./ga.js\": 41734,\n\t\"./gd\": 70217,\n\t\"./gd.js\": 70217,\n\t\"./gl\": 77329,\n\t\"./gl.js\": 77329,\n\t\"./gom-deva\": 32124,\n\t\"./gom-deva.js\": 32124,\n\t\"./gom-latn\": 93383,\n\t\"./gom-latn.js\": 93383,\n\t\"./gu\": 95050,\n\t\"./gu.js\": 95050,\n\t\"./he\": 11713,\n\t\"./he.js\": 11713,\n\t\"./hi\": 43861,\n\t\"./hi.js\": 43861,\n\t\"./hr\": 26308,\n\t\"./hr.js\": 26308,\n\t\"./hu\": 90609,\n\t\"./hu.js\": 90609,\n\t\"./hy-am\": 17160,\n\t\"./hy-am.js\": 17160,\n\t\"./id\": 74063,\n\t\"./id.js\": 74063,\n\t\"./is\": 89374,\n\t\"./is.js\": 89374,\n\t\"./it\": 88383,\n\t\"./it-ch\": 21827,\n\t\"./it-ch.js\": 21827,\n\t\"./it.js\": 88383,\n\t\"./ja\": 23827,\n\t\"./ja.js\": 23827,\n\t\"./jv\": 89722,\n\t\"./jv.js\": 89722,\n\t\"./ka\": 41794,\n\t\"./ka.js\": 41794,\n\t\"./kk\": 27088,\n\t\"./kk.js\": 27088,\n\t\"./km\": 96870,\n\t\"./km.js\": 96870,\n\t\"./kn\": 84451,\n\t\"./kn.js\": 84451,\n\t\"./ko\": 63164,\n\t\"./ko.js\": 63164,\n\t\"./ku\": 98174,\n\t\"./ku-kmr\": 6181,\n\t\"./ku-kmr.js\": 6181,\n\t\"./ku.js\": 98174,\n\t\"./ky\": 78474,\n\t\"./ky.js\": 78474,\n\t\"./lb\": 79680,\n\t\"./lb.js\": 79680,\n\t\"./lo\": 15867,\n\t\"./lo.js\": 15867,\n\t\"./lt\": 45766,\n\t\"./lt.js\": 45766,\n\t\"./lv\": 69532,\n\t\"./lv.js\": 69532,\n\t\"./me\": 58076,\n\t\"./me.js\": 58076,\n\t\"./mi\": 41848,\n\t\"./mi.js\": 41848,\n\t\"./mk\": 30306,\n\t\"./mk.js\": 30306,\n\t\"./ml\": 73739,\n\t\"./ml.js\": 73739,\n\t\"./mn\": 99053,\n\t\"./mn.js\": 99053,\n\t\"./mr\": 86169,\n\t\"./mr.js\": 86169,\n\t\"./ms\": 73386,\n\t\"./ms-my\": 92297,\n\t\"./ms-my.js\": 92297,\n\t\"./ms.js\": 73386,\n\t\"./mt\": 77075,\n\t\"./mt.js\": 77075,\n\t\"./my\": 72264,\n\t\"./my.js\": 72264,\n\t\"./nb\": 22274,\n\t\"./nb.js\": 22274,\n\t\"./ne\": 8235,\n\t\"./ne.js\": 8235,\n\t\"./nl\": 92572,\n\t\"./nl-be\": 43784,\n\t\"./nl-be.js\": 43784,\n\t\"./nl.js\": 92572,\n\t\"./nn\": 54566,\n\t\"./nn.js\": 54566,\n\t\"./oc-lnc\": 69330,\n\t\"./oc-lnc.js\": 69330,\n\t\"./pa-in\": 29849,\n\t\"./pa-in.js\": 29849,\n\t\"./pl\": 94418,\n\t\"./pl.js\": 94418,\n\t\"./pt\": 79834,\n\t\"./pt-br\": 48303,\n\t\"./pt-br.js\": 48303,\n\t\"./pt.js\": 79834,\n\t\"./ro\": 24457,\n\t\"./ro.js\": 24457,\n\t\"./ru\": 82271,\n\t\"./ru.js\": 82271,\n\t\"./sd\": 1221,\n\t\"./sd.js\": 1221,\n\t\"./se\": 33478,\n\t\"./se.js\": 33478,\n\t\"./si\": 17538,\n\t\"./si.js\": 17538,\n\t\"./sk\": 5784,\n\t\"./sk.js\": 5784,\n\t\"./sl\": 46637,\n\t\"./sl.js\": 46637,\n\t\"./sq\": 86794,\n\t\"./sq.js\": 86794,\n\t\"./sr\": 45719,\n\t\"./sr-cyrl\": 3322,\n\t\"./sr-cyrl.js\": 3322,\n\t\"./sr.js\": 45719,\n\t\"./ss\": 56000,\n\t\"./ss.js\": 56000,\n\t\"./sv\": 41011,\n\t\"./sv.js\": 41011,\n\t\"./sw\": 40748,\n\t\"./sw.js\": 40748,\n\t\"./ta\": 11025,\n\t\"./ta.js\": 11025,\n\t\"./te\": 11885,\n\t\"./te.js\": 11885,\n\t\"./tet\": 28861,\n\t\"./tet.js\": 28861,\n\t\"./tg\": 86571,\n\t\"./tg.js\": 86571,\n\t\"./th\": 55802,\n\t\"./th.js\": 55802,\n\t\"./tk\": 59527,\n\t\"./tk.js\": 59527,\n\t\"./tl-ph\": 29231,\n\t\"./tl-ph.js\": 29231,\n\t\"./tlh\": 31052,\n\t\"./tlh.js\": 31052,\n\t\"./tr\": 85096,\n\t\"./tr.js\": 85096,\n\t\"./tzl\": 79846,\n\t\"./tzl.js\": 79846,\n\t\"./tzm\": 81765,\n\t\"./tzm-latn\": 97711,\n\t\"./tzm-latn.js\": 97711,\n\t\"./tzm.js\": 81765,\n\t\"./ug-cn\": 48414,\n\t\"./ug-cn.js\": 48414,\n\t\"./uk\": 16618,\n\t\"./uk.js\": 16618,\n\t\"./ur\": 57777,\n\t\"./ur.js\": 57777,\n\t\"./uz\": 57609,\n\t\"./uz-latn\": 72475,\n\t\"./uz-latn.js\": 72475,\n\t\"./uz.js\": 57609,\n\t\"./vi\": 21135,\n\t\"./vi.js\": 21135,\n\t\"./x-pseudo\": 64051,\n\t\"./x-pseudo.js\": 64051,\n\t\"./yo\": 82218,\n\t\"./yo.js\": 82218,\n\t\"./zh-cn\": 52648,\n\t\"./zh-cn.js\": 52648,\n\t\"./zh-hk\": 1632,\n\t\"./zh-hk.js\": 1632,\n\t\"./zh-mo\": 31541,\n\t\"./zh-mo.js\": 31541,\n\t\"./zh-tw\": 50304,\n\t\"./zh-tw.js\": 50304\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn map[req];\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = 35358;","import { getCurrentUser as A, onRequestTokenUpdate as ue, getRequestToken as de } from \"@nextcloud/auth\";\nimport { getLoggerBuilder as B } from \"@nextcloud/logger\";\nimport { getCanonicalLocale as ae } from \"@nextcloud/l10n\";\nimport { join as le, basename as fe, extname as ce, dirname as I } from \"path\";\nimport { encodePath as he } from \"@nextcloud/paths\";\nimport { generateRemoteUrl as pe } from \"@nextcloud/router\";\nimport { createClient as ge, getPatcher as we } from \"webdav\";\nimport { CancelablePromise as me } from \"cancelable-promise\";\n/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\nconst Ne = (e) => e === null ? B().setApp(\"files\").build() : B().setApp(\"files\").setUid(e.uid).build(), m = Ne(A());\n/**\n * @copyright Copyright (c) 2021 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\nclass Ee {\n _entries = [];\n registerEntry(t) {\n this.validateEntry(t), this._entries.push(t);\n }\n unregisterEntry(t) {\n const r = typeof t == \"string\" ? this.getEntryIndex(t) : this.getEntryIndex(t.id);\n if (r === -1) {\n m.warn(\"Entry not found, nothing removed\", { entry: t, entries: this.getEntries() });\n return;\n }\n this._entries.splice(r, 1);\n }\n /**\n * Get the list of registered entries\n *\n * @param {Folder} context the creation context. Usually the current folder\n */\n getEntries(t) {\n return t ? this._entries.filter((r) => typeof r.enabled == \"function\" ? r.enabled(t) : !0) : this._entries;\n }\n getEntryIndex(t) {\n return this._entries.findIndex((r) => r.id === t);\n }\n validateEntry(t) {\n if (!t.id || !t.displayName || !(t.iconSvgInline || t.iconClass) || !t.handler)\n throw new Error(\"Invalid entry\");\n if (typeof t.id != \"string\" || typeof t.displayName != \"string\")\n throw new Error(\"Invalid id or displayName property\");\n if (t.iconClass && typeof t.iconClass != \"string\" || t.iconSvgInline && typeof t.iconSvgInline != \"string\")\n throw new Error(\"Invalid icon provided\");\n if (t.enabled !== void 0 && typeof t.enabled != \"function\")\n throw new Error(\"Invalid enabled property\");\n if (typeof t.handler != \"function\")\n throw new Error(\"Invalid handler property\");\n if (\"order\" in t && typeof t.order != \"number\")\n throw new Error(\"Invalid order property\");\n if (this.getEntryIndex(t.id) !== -1)\n throw new Error(\"Duplicate entry\");\n }\n}\nconst F = function() {\n return typeof window._nc_newfilemenu > \"u\" && (window._nc_newfilemenu = new Ee(), m.debug(\"NewFileMenu initialized\")), window._nc_newfilemenu;\n};\n/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\nconst O = [\"B\", \"KB\", \"MB\", \"GB\", \"TB\", \"PB\"], P = [\"B\", \"KiB\", \"MiB\", \"GiB\", \"TiB\", \"PiB\"];\nfunction Qt(e, t = !1, r = !1, s = !1) {\n r = r && !s, typeof e == \"string\" && (e = Number(e));\n let n = e > 0 ? Math.floor(Math.log(e) / Math.log(s ? 1e3 : 1024)) : 0;\n n = Math.min((r ? P.length : O.length) - 1, n);\n const i = r ? P[n] : O[n];\n let d = (e / Math.pow(s ? 1e3 : 1024, n)).toFixed(1);\n return t === !0 && n === 0 ? (d !== \"0.0\" ? \"< 1 \" : \"0 \") + (r ? P[1] : O[1]) : (n < 2 ? d = parseFloat(d).toFixed(0) : d = parseFloat(d).toLocaleString(ae()), d + \" \" + i);\n}\nfunction Dt(e, t = !1) {\n try {\n e = `${e}`.toLocaleLowerCase().replaceAll(/\\s+/g, \"\").replaceAll(\",\", \".\");\n } catch {\n return null;\n }\n const r = e.match(/^([0-9]*(\\.[0-9]*)?)([kmgtp]?)(i?)b?$/);\n if (r === null || r[1] === \".\" || r[1] === \"\")\n return null;\n const s = {\n \"\": 0,\n k: 1,\n m: 2,\n g: 3,\n t: 4,\n p: 5,\n e: 6\n }, n = `${r[1]}`, i = r[4] === \"i\" || t ? 1024 : 1e3;\n return Math.round(Number.parseFloat(n) * i ** s[r[3]]);\n}\n/**\n * @copyright Copyright (c) 2023 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\nvar W = /* @__PURE__ */ ((e) => (e.DEFAULT = \"default\", e.HIDDEN = \"hidden\", e))(W || {});\nclass er {\n _action;\n constructor(t) {\n this.validateAction(t), this._action = t;\n }\n get id() {\n return this._action.id;\n }\n get displayName() {\n return this._action.displayName;\n }\n get title() {\n return this._action.title;\n }\n get iconSvgInline() {\n return this._action.iconSvgInline;\n }\n get enabled() {\n return this._action.enabled;\n }\n get exec() {\n return this._action.exec;\n }\n get execBatch() {\n return this._action.execBatch;\n }\n get order() {\n return this._action.order;\n }\n get parent() {\n return this._action.parent;\n }\n get default() {\n return this._action.default;\n }\n get inline() {\n return this._action.inline;\n }\n get renderInline() {\n return this._action.renderInline;\n }\n validateAction(t) {\n if (!t.id || typeof t.id != \"string\")\n throw new Error(\"Invalid id\");\n if (!t.displayName || typeof t.displayName != \"function\")\n throw new Error(\"Invalid displayName function\");\n if (\"title\" in t && typeof t.title != \"function\")\n throw new Error(\"Invalid title function\");\n if (!t.iconSvgInline || typeof t.iconSvgInline != \"function\")\n throw new Error(\"Invalid iconSvgInline function\");\n if (!t.exec || typeof t.exec != \"function\")\n throw new Error(\"Invalid exec function\");\n if (\"enabled\" in t && typeof t.enabled != \"function\")\n throw new Error(\"Invalid enabled function\");\n if (\"execBatch\" in t && typeof t.execBatch != \"function\")\n throw new Error(\"Invalid execBatch function\");\n if (\"order\" in t && typeof t.order != \"number\")\n throw new Error(\"Invalid order\");\n if (\"parent\" in t && typeof t.parent != \"string\")\n throw new Error(\"Invalid parent\");\n if (t.default && !Object.values(W).includes(t.default))\n throw new Error(\"Invalid default\");\n if (\"inline\" in t && typeof t.inline != \"function\")\n throw new Error(\"Invalid inline function\");\n if (\"renderInline\" in t && typeof t.renderInline != \"function\")\n throw new Error(\"Invalid renderInline function\");\n }\n}\nconst tr = function(e) {\n if (typeof window._nc_fileactions > \"u\" && (window._nc_fileactions = [], m.debug(\"FileActions initialized\")), window._nc_fileactions.find((t) => t.id === e.id)) {\n m.error(`FileAction ${e.id} already registered`, { action: e });\n return;\n }\n window._nc_fileactions.push(e);\n}, rr = function() {\n return typeof window._nc_fileactions > \"u\" && (window._nc_fileactions = [], m.debug(\"FileActions initialized\")), window._nc_fileactions;\n};\n/**\n * @copyright Copyright (c) 2023 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\nclass nr {\n _header;\n constructor(t) {\n this.validateHeader(t), this._header = t;\n }\n get id() {\n return this._header.id;\n }\n get order() {\n return this._header.order;\n }\n get enabled() {\n return this._header.enabled;\n }\n get render() {\n return this._header.render;\n }\n get updated() {\n return this._header.updated;\n }\n validateHeader(t) {\n if (!t.id || !t.render || !t.updated)\n throw new Error(\"Invalid header: id, render and updated are required\");\n if (typeof t.id != \"string\")\n throw new Error(\"Invalid id property\");\n if (t.enabled !== void 0 && typeof t.enabled != \"function\")\n throw new Error(\"Invalid enabled property\");\n if (t.render && typeof t.render != \"function\")\n throw new Error(\"Invalid render property\");\n if (t.updated && typeof t.updated != \"function\")\n throw new Error(\"Invalid updated property\");\n }\n}\nconst ir = function(e) {\n if (typeof window._nc_filelistheader > \"u\" && (window._nc_filelistheader = [], m.debug(\"FileListHeaders initialized\")), window._nc_filelistheader.find((t) => t.id === e.id)) {\n m.error(`Header ${e.id} already registered`, { header: e });\n return;\n }\n window._nc_filelistheader.push(e);\n}, sr = function() {\n return typeof window._nc_filelistheader > \"u\" && (window._nc_filelistheader = [], m.debug(\"FileListHeaders initialized\")), window._nc_filelistheader;\n};\n/**\n * @copyright Copyright (c) 2022 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\nvar N = /* @__PURE__ */ ((e) => (e[e.NONE = 0] = \"NONE\", e[e.CREATE = 4] = \"CREATE\", e[e.READ = 1] = \"READ\", e[e.UPDATE = 2] = \"UPDATE\", e[e.DELETE = 8] = \"DELETE\", e[e.SHARE = 16] = \"SHARE\", e[e.ALL = 31] = \"ALL\", e))(N || {});\n/**\n * @copyright Copyright (c) 2023 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Ferdinand Thiessen <opensource@fthiessen.de>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\nconst Z = [\n \"d:getcontentlength\",\n \"d:getcontenttype\",\n \"d:getetag\",\n \"d:getlastmodified\",\n \"d:quota-available-bytes\",\n \"d:resourcetype\",\n \"nc:has-preview\",\n \"nc:is-encrypted\",\n \"nc:mount-type\",\n \"oc:comments-unread\",\n \"oc:favorite\",\n \"oc:fileid\",\n \"oc:owner-display-name\",\n \"oc:owner-id\",\n \"oc:permissions\",\n \"oc:size\"\n], j = {\n d: \"DAV:\",\n nc: \"http://nextcloud.org/ns\",\n oc: \"http://owncloud.org/ns\",\n ocs: \"http://open-collaboration-services.org/ns\"\n}, or = function(e, t = { nc: \"http://nextcloud.org/ns\" }) {\n typeof window._nc_dav_properties > \"u\" && (window._nc_dav_properties = [...Z], window._nc_dav_namespaces = { ...j });\n const r = { ...window._nc_dav_namespaces, ...t };\n if (window._nc_dav_properties.find((n) => n === e))\n return m.warn(`${e} already registered`, { prop: e }), !1;\n if (e.startsWith(\"<\") || e.split(\":\").length !== 2)\n return m.error(`${e} is not valid. See example: 'oc:fileid'`, { prop: e }), !1;\n const s = e.split(\":\")[0];\n return r[s] ? (window._nc_dav_properties.push(e), window._nc_dav_namespaces = r, !0) : (m.error(`${e} namespace unknown`, { prop: e, namespaces: r }), !1);\n}, V = function() {\n return typeof window._nc_dav_properties > \"u\" && (window._nc_dav_properties = [...Z]), window._nc_dav_properties.map((e) => `<${e} />`).join(\" \");\n}, S = function() {\n return typeof window._nc_dav_namespaces > \"u\" && (window._nc_dav_namespaces = { ...j }), Object.keys(window._nc_dav_namespaces).map((e) => `xmlns:${e}=\"${window._nc_dav_namespaces?.[e]}\"`).join(\" \");\n}, ur = function() {\n return `<?xml version=\"1.0\"?>\n\t\t<d:propfind ${S()}>\n\t\t\t<d:prop>\n\t\t\t\t${V()}\n\t\t\t</d:prop>\n\t\t</d:propfind>`;\n}, be = function() {\n return `<?xml version=\"1.0\"?>\n\t\t<oc:filter-files ${S()}>\n\t\t\t<d:prop>\n\t\t\t\t${V()}\n\t\t\t</d:prop>\n\t\t\t<oc:filter-rules>\n\t\t\t\t<oc:favorite>1</oc:favorite>\n\t\t\t</oc:filter-rules>\n\t\t</oc:filter-files>`;\n}, dr = function(e) {\n return `<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<d:searchrequest ${S()}\n\txmlns:ns=\"https://github.com/icewind1991/SearchDAV/ns\">\n\t<d:basicsearch>\n\t\t<d:select>\n\t\t\t<d:prop>\n\t\t\t\t${V()}\n\t\t\t</d:prop>\n\t\t</d:select>\n\t\t<d:from>\n\t\t\t<d:scope>\n\t\t\t\t<d:href>/files/${A()?.uid}/</d:href>\n\t\t\t\t<d:depth>infinity</d:depth>\n\t\t\t</d:scope>\n\t\t</d:from>\n\t\t<d:where>\n\t\t\t<d:and>\n\t\t\t\t<d:or>\n\t\t\t\t\t<d:not>\n\t\t\t\t\t\t<d:eq>\n\t\t\t\t\t\t\t<d:prop>\n\t\t\t\t\t\t\t\t<d:getcontenttype/>\n\t\t\t\t\t\t\t</d:prop>\n\t\t\t\t\t\t\t<d:literal>httpd/unix-directory</d:literal>\n\t\t\t\t\t\t</d:eq>\n\t\t\t\t\t</d:not>\n\t\t\t\t\t<d:eq>\n\t\t\t\t\t\t<d:prop>\n\t\t\t\t\t\t\t<oc:size/>\n\t\t\t\t\t\t</d:prop>\n\t\t\t\t\t\t<d:literal>0</d:literal>\n\t\t\t\t\t</d:eq>\n\t\t\t\t</d:or>\n\t\t\t\t<d:gt>\n\t\t\t\t\t<d:prop>\n\t\t\t\t\t\t<d:getlastmodified/>\n\t\t\t\t\t</d:prop>\n\t\t\t\t\t<d:literal>${e}</d:literal>\n\t\t\t\t</d:gt>\n\t\t\t</d:and>\n\t\t</d:where>\n\t\t<d:orderby>\n\t\t\t<d:order>\n\t\t\t\t<d:prop>\n\t\t\t\t\t<d:getlastmodified/>\n\t\t\t\t</d:prop>\n\t\t\t\t<d:descending/>\n\t\t\t</d:order>\n\t\t</d:orderby>\n\t\t<d:limit>\n\t\t\t<d:nresults>100</d:nresults>\n\t\t\t<ns:firstresult>0</ns:firstresult>\n\t\t</d:limit>\n\t</d:basicsearch>\n</d:searchrequest>`;\n};\n/**\n * @copyright Copyright (c) 2023 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Ferdinand Thiessen <opensource@fthiessen.de>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\nconst ye = function(e = \"\") {\n let t = N.NONE;\n return e && ((e.includes(\"C\") || e.includes(\"K\")) && (t |= N.CREATE), e.includes(\"G\") && (t |= N.READ), (e.includes(\"W\") || e.includes(\"N\") || e.includes(\"V\")) && (t |= N.UPDATE), e.includes(\"D\") && (t |= N.DELETE), e.includes(\"R\") && (t |= N.SHARE)), t;\n};\n/**\n * @copyright Copyright (c) 2022 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\nvar L = /* @__PURE__ */ ((e) => (e.Folder = \"folder\", e.File = \"file\", e))(L || {});\n/**\n * @copyright Copyright (c) 2022 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\nconst Y = function(e, t) {\n return e.match(t) !== null;\n}, q = (e, t) => {\n if (e.id && typeof e.id != \"number\")\n throw new Error(\"Invalid id type of value\");\n if (!e.source)\n throw new Error(\"Missing mandatory source\");\n try {\n new URL(e.source);\n } catch {\n throw new Error(\"Invalid source format, source must be a valid URL\");\n }\n if (!e.source.startsWith(\"http\"))\n throw new Error(\"Invalid source format, only http(s) is supported\");\n if (e.mtime && !(e.mtime instanceof Date))\n throw new Error(\"Invalid mtime type\");\n if (e.crtime && !(e.crtime instanceof Date))\n throw new Error(\"Invalid crtime type\");\n if (!e.mime || typeof e.mime != \"string\" || !e.mime.match(/^[-\\w.]+\\/[-+\\w.]+$/gi))\n throw new Error(\"Missing or invalid mandatory mime\");\n if (\"size\" in e && typeof e.size != \"number\" && e.size !== void 0)\n throw new Error(\"Invalid size type\");\n if (\"permissions\" in e && e.permissions !== void 0 && !(typeof e.permissions == \"number\" && e.permissions >= N.NONE && e.permissions <= N.ALL))\n throw new Error(\"Invalid permissions\");\n if (e.owner && e.owner !== null && typeof e.owner != \"string\")\n throw new Error(\"Invalid owner type\");\n if (e.attributes && typeof e.attributes != \"object\")\n throw new Error(\"Invalid attributes type\");\n if (e.root && typeof e.root != \"string\")\n throw new Error(\"Invalid root type\");\n if (e.root && !e.root.startsWith(\"/\"))\n throw new Error(\"Root must start with a leading slash\");\n if (e.root && !e.source.includes(e.root))\n throw new Error(\"Root must be part of the source\");\n if (e.root && Y(e.source, t)) {\n const r = e.source.match(t)[0];\n if (!e.source.includes(le(r, e.root)))\n throw new Error(\"The root must be relative to the service. e.g /files/emma\");\n }\n if (e.status && !Object.values(J).includes(e.status))\n throw new Error(\"Status must be a valid NodeStatus\");\n};\n/**\n * @copyright Copyright (c) 2022 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\nvar J = /* @__PURE__ */ ((e) => (e.NEW = \"new\", e.FAILED = \"failed\", e.LOADING = \"loading\", e.LOCKED = \"locked\", e))(J || {});\nclass Q {\n _data;\n _attributes;\n _knownDavService = /(remote|public)\\.php\\/(web)?dav/i;\n constructor(t, r) {\n q(t, r || this._knownDavService), this._data = t;\n const s = {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n set: (n, i, d) => (this.updateMtime(), Reflect.set(n, i, d)),\n deleteProperty: (n, i) => (this.updateMtime(), Reflect.deleteProperty(n, i))\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n };\n this._attributes = new Proxy(t.attributes || {}, s), delete this._data.attributes, r && (this._knownDavService = r);\n }\n /**\n * Get the source url to this object\n */\n get source() {\n return this._data.source.replace(/\\/$/i, \"\");\n }\n /**\n * Get the encoded source url to this object for requests purposes\n */\n get encodedSource() {\n const { origin: t } = new URL(this.source);\n return t + he(this.source.slice(t.length));\n }\n /**\n * Get this object name\n */\n get basename() {\n return fe(this.source);\n }\n /**\n * Get this object's extension\n */\n get extension() {\n return ce(this.source);\n }\n /**\n * Get the directory path leading to this object\n * Will use the relative path to root if available\n */\n get dirname() {\n if (this.root) {\n let r = this.source;\n this.isDavRessource && (r = r.split(this._knownDavService).pop());\n const s = r.indexOf(this.root), n = this.root.replace(/\\/$/, \"\");\n return I(r.slice(s + n.length) || \"/\");\n }\n const t = new URL(this.source);\n return I(t.pathname);\n }\n /**\n * Get the file mime\n */\n get mime() {\n return this._data.mime;\n }\n /**\n * Get the file modification time\n */\n get mtime() {\n return this._data.mtime;\n }\n /**\n * Get the file creation time\n */\n get crtime() {\n return this._data.crtime;\n }\n /**\n * Get the file size\n */\n get size() {\n return this._data.size;\n }\n /**\n * Get the file attribute\n */\n get attributes() {\n return this._attributes;\n }\n /**\n * Get the file permissions\n */\n get permissions() {\n return this.owner === null && !this.isDavRessource ? N.READ : this._data.permissions !== void 0 ? this._data.permissions : N.NONE;\n }\n /**\n * Get the file owner\n */\n get owner() {\n return this.isDavRessource ? this._data.owner : null;\n }\n /**\n * Is this a dav-related ressource ?\n */\n get isDavRessource() {\n return Y(this.source, this._knownDavService);\n }\n /**\n * Get the dav root of this object\n */\n get root() {\n return this._data.root ? this._data.root.replace(/^(.+)\\/$/, \"$1\") : this.isDavRessource && I(this.source).split(this._knownDavService).pop() || null;\n }\n /**\n * Get the absolute path of this object relative to the root\n */\n get path() {\n if (this.root) {\n let t = this.source;\n this.isDavRessource && (t = t.split(this._knownDavService).pop());\n const r = t.indexOf(this.root), s = this.root.replace(/\\/$/, \"\");\n return t.slice(r + s.length) || \"/\";\n }\n return (this.dirname + \"/\" + this.basename).replace(/\\/\\//g, \"/\");\n }\n /**\n * Get the node id if defined.\n * Will look for the fileid in attributes if undefined.\n */\n get fileid() {\n return this._data?.id || this.attributes?.fileid;\n }\n /**\n * Get the node status.\n */\n get status() {\n return this._data?.status;\n }\n /**\n * Set the node status.\n */\n set status(t) {\n this._data.status = t;\n }\n /**\n * Move the node to a new destination\n *\n * @param {string} destination the new source.\n * e.g. https://cloud.domain.com/remote.php/dav/files/emma/Photos/picture.jpg\n */\n move(t) {\n q({ ...this._data, source: t }, this._knownDavService), this._data.source = t, this.updateMtime();\n }\n /**\n * Rename the node\n * This aliases the move method for easier usage\n *\n * @param basename The new name of the node\n */\n rename(t) {\n if (t.includes(\"/\"))\n throw new Error(\"Invalid basename\");\n this.move(I(this.source) + \"/\" + t);\n }\n /**\n * Update the mtime if exists.\n */\n updateMtime() {\n this._data.mtime && (this._data.mtime = /* @__PURE__ */ new Date());\n }\n}\n/**\n * @copyright Copyright (c) 2022 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\nclass _e extends Q {\n get type() {\n return L.File;\n }\n}\n/**\n * @copyright Copyright (c) 2022 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\nclass ve extends Q {\n constructor(t) {\n super({\n ...t,\n mime: \"httpd/unix-directory\"\n });\n }\n get type() {\n return L.Folder;\n }\n get extension() {\n return null;\n }\n get mime() {\n return \"httpd/unix-directory\";\n }\n}\n/**\n * @copyright Copyright (c) 2023 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Ferdinand Thiessen <opensource@fthiessen.de>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\nconst D = `/files/${A()?.uid}`, ee = pe(\"dav\"), ar = function(e = ee, t = {}) {\n const r = ge(e, { headers: t });\n function s(i) {\n r.setHeaders({\n ...t,\n // Add this so the server knows it is an request from the browser\n \"X-Requested-With\": \"XMLHttpRequest\",\n // Inject user auth\n requesttoken: i ?? \"\"\n });\n }\n return ue(s), s(de()), we().patch(\"fetch\", (i, d) => {\n const u = d.headers;\n return u?.method && (d.method = u.method, delete u.method), fetch(i, d);\n }), r;\n}, lr = (e, t = \"/\", r = D) => {\n const s = new AbortController();\n return new me(async (n, i, d) => {\n d(() => s.abort());\n try {\n const o = (await e.getDirectoryContents(`${r}${t}`, {\n signal: s.signal,\n details: !0,\n data: be(),\n headers: {\n // see davGetClient for patched webdav client\n method: \"REPORT\"\n },\n includeSelf: !0\n })).data.filter((a) => a.filename !== t).map((a) => Te(a, r));\n n(o);\n } catch (u) {\n i(u);\n }\n });\n}, Te = function(e, t = D, r = ee) {\n const s = A()?.uid;\n if (!s)\n throw new Error(\"No user id found\");\n const n = e.props, i = ye(n?.permissions), d = (n?.[\"owner-id\"] || s).toString(), u = {\n id: n?.fileid || 0,\n source: `${r}${e.filename}`,\n mtime: new Date(Date.parse(e.lastmod)),\n mime: e.mime || \"application/octet-stream\",\n size: n?.size || Number.parseInt(n.getcontentlength || \"0\"),\n permissions: i,\n owner: d,\n root: t,\n attributes: {\n ...e,\n ...n,\n hasPreview: n?.[\"has-preview\"]\n }\n };\n return delete u.attributes?.props, e.type === \"file\" ? new _e(u) : new ve(u);\n};\n/**\n * @copyright Copyright (c) 2022 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\nclass Ie {\n _views = [];\n _currentView = null;\n register(t) {\n if (this._views.find((r) => r.id === t.id))\n throw new Error(`View id ${t.id} is already registered`);\n this._views.push(t);\n }\n remove(t) {\n const r = this._views.findIndex((s) => s.id === t);\n r !== -1 && this._views.splice(r, 1);\n }\n get views() {\n return this._views;\n }\n setActive(t) {\n this._currentView = t;\n }\n get active() {\n return this._currentView;\n }\n}\nconst fr = function() {\n return typeof window._nc_navigation > \"u\" && (window._nc_navigation = new Ie(), m.debug(\"Navigation service initialized\")), window._nc_navigation;\n};\n/**\n * @copyright Copyright (c) 2022 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\nclass Ae {\n _column;\n constructor(t) {\n Ce(t), this._column = t;\n }\n get id() {\n return this._column.id;\n }\n get title() {\n return this._column.title;\n }\n get render() {\n return this._column.render;\n }\n get sort() {\n return this._column.sort;\n }\n get summary() {\n return this._column.summary;\n }\n}\nconst Ce = function(e) {\n if (!e.id || typeof e.id != \"string\")\n throw new Error(\"A column id is required\");\n if (!e.title || typeof e.title != \"string\")\n throw new Error(\"A column title is required\");\n if (!e.render || typeof e.render != \"function\")\n throw new Error(\"A render function is required\");\n if (e.sort && typeof e.sort != \"function\")\n throw new Error(\"Column sortFunction must be a function\");\n if (e.summary && typeof e.summary != \"function\")\n throw new Error(\"Column summary must be a function\");\n return !0;\n};\nvar R = {}, C = {};\n(function(e) {\n const t = \":A-Za-z_\\\\u00C0-\\\\u00D6\\\\u00D8-\\\\u00F6\\\\u00F8-\\\\u02FF\\\\u0370-\\\\u037D\\\\u037F-\\\\u1FFF\\\\u200C-\\\\u200D\\\\u2070-\\\\u218F\\\\u2C00-\\\\u2FEF\\\\u3001-\\\\uD7FF\\\\uF900-\\\\uFDCF\\\\uFDF0-\\\\uFFFD\", r = t + \"\\\\-.\\\\d\\\\u00B7\\\\u0300-\\\\u036F\\\\u203F-\\\\u2040\", s = \"[\" + t + \"][\" + r + \"]*\", n = new RegExp(\"^\" + s + \"$\"), i = function(u, o) {\n const a = [];\n let l = o.exec(u);\n for (; l; ) {\n const f = [];\n f.startIndex = o.lastIndex - l[0].length;\n const c = l.length;\n for (let g = 0; g < c; g++)\n f.push(l[g]);\n a.push(f), l = o.exec(u);\n }\n return a;\n }, d = function(u) {\n const o = n.exec(u);\n return !(o === null || typeof o > \"u\");\n };\n e.isExist = function(u) {\n return typeof u < \"u\";\n }, e.isEmptyObject = function(u) {\n return Object.keys(u).length === 0;\n }, e.merge = function(u, o, a) {\n if (o) {\n const l = Object.keys(o), f = l.length;\n for (let c = 0; c < f; c++)\n a === \"strict\" ? u[l[c]] = [o[l[c]]] : u[l[c]] = o[l[c]];\n }\n }, e.getValue = function(u) {\n return e.isExist(u) ? u : \"\";\n }, e.isName = d, e.getAllMatches = i, e.nameRegexp = s;\n})(C);\nconst M = C, Oe = {\n allowBooleanAttributes: !1,\n //A tag can have attributes without any value\n unpairedTags: []\n};\nR.validate = function(e, t) {\n t = Object.assign({}, Oe, t);\n const r = [];\n let s = !1, n = !1;\n e[0] === \"\\uFEFF\" && (e = e.substr(1));\n for (let i = 0; i < e.length; i++)\n if (e[i] === \"<\" && e[i + 1] === \"?\") {\n if (i += 2, i = U(e, i), i.err)\n return i;\n } else if (e[i] === \"<\") {\n let d = i;\n if (i++, e[i] === \"!\") {\n i = G(e, i);\n continue;\n } else {\n let u = !1;\n e[i] === \"/\" && (u = !0, i++);\n let o = \"\";\n for (; i < e.length && e[i] !== \">\" && e[i] !== \" \" && e[i] !== \"\t\" && e[i] !== `\n` && e[i] !== \"\\r\"; i++)\n o += e[i];\n if (o = o.trim(), o[o.length - 1] === \"/\" && (o = o.substring(0, o.length - 1), i--), !Re(o)) {\n let f;\n return o.trim().length === 0 ? f = \"Invalid space after '<'.\" : f = \"Tag '\" + o + \"' is an invalid name.\", p(\"InvalidTag\", f, w(e, i));\n }\n const a = $e(e, i);\n if (a === !1)\n return p(\"InvalidAttr\", \"Attributes for '\" + o + \"' have open quote.\", w(e, i));\n let l = a.value;\n if (i = a.index, l[l.length - 1] === \"/\") {\n const f = i - l.length;\n l = l.substring(0, l.length - 1);\n const c = z(l, t);\n if (c === !0)\n s = !0;\n else\n return p(c.err.code, c.err.msg, w(e, f + c.err.line));\n } else if (u)\n if (a.tagClosed) {\n if (l.trim().length > 0)\n return p(\"InvalidTag\", \"Closing tag '\" + o + \"' can't have attributes or invalid starting.\", w(e, d));\n {\n const f = r.pop();\n if (o !== f.tagName) {\n let c = w(e, f.tagStartPos);\n return p(\n \"InvalidTag\",\n \"Expected closing tag '\" + f.tagName + \"' (opened in line \" + c.line + \", col \" + c.col + \") instead of closing tag '\" + o + \"'.\",\n w(e, d)\n );\n }\n r.length == 0 && (n = !0);\n }\n } else\n return p(\"InvalidTag\", \"Closing tag '\" + o + \"' doesn't have proper closing.\", w(e, i));\n else {\n const f = z(l, t);\n if (f !== !0)\n return p(f.err.code, f.err.msg, w(e, i - l.length + f.err.line));\n if (n === !0)\n return p(\"InvalidXml\", \"Multiple possible root nodes found.\", w(e, i));\n t.unpairedTags.indexOf(o) !== -1 || r.push({ tagName: o, tagStartPos: d }), s = !0;\n }\n for (i++; i < e.length; i++)\n if (e[i] === \"<\")\n if (e[i + 1] === \"!\") {\n i++, i = G(e, i);\n continue;\n } else if (e[i + 1] === \"?\") {\n if (i = U(e, ++i), i.err)\n return i;\n } else\n break;\n else if (e[i] === \"&\") {\n const f = Se(e, i);\n if (f == -1)\n return p(\"InvalidChar\", \"char '&' is not expected.\", w(e, i));\n i = f;\n } else if (n === !0 && !X(e[i]))\n return p(\"InvalidXml\", \"Extra text at the end\", w(e, i));\n e[i] === \"<\" && i--;\n }\n } else {\n if (X(e[i]))\n continue;\n return p(\"InvalidChar\", \"char '\" + e[i] + \"' is not expected.\", w(e, i));\n }\n if (s) {\n if (r.length == 1)\n return p(\"InvalidTag\", \"Unclosed tag '\" + r[0].tagName + \"'.\", w(e, r[0].tagStartPos));\n if (r.length > 0)\n return p(\"InvalidXml\", \"Invalid '\" + JSON.stringify(r.map((i) => i.tagName), null, 4).replace(/\\r?\\n/g, \"\") + \"' found.\", { line: 1, col: 1 });\n } else\n return p(\"InvalidXml\", \"Start tag expected.\", 1);\n return !0;\n};\nfunction X(e) {\n return e === \" \" || e === \"\t\" || e === `\n` || e === \"\\r\";\n}\nfunction U(e, t) {\n const r = t;\n for (; t < e.length; t++)\n if (e[t] == \"?\" || e[t] == \" \") {\n const s = e.substr(r, t - r);\n if (t > 5 && s === \"xml\")\n return p(\"InvalidXml\", \"XML declaration allowed only at the start of the document.\", w(e, t));\n if (e[t] == \"?\" && e[t + 1] == \">\") {\n t++;\n break;\n } else\n continue;\n }\n return t;\n}\nfunction G(e, t) {\n if (e.length > t + 5 && e[t + 1] === \"-\" && e[t + 2] === \"-\") {\n for (t += 3; t < e.length; t++)\n if (e[t] === \"-\" && e[t + 1] === \"-\" && e[t + 2] === \">\") {\n t += 2;\n break;\n }\n } else if (e.length > t + 8 && e[t + 1] === \"D\" && e[t + 2] === \"O\" && e[t + 3] === \"C\" && e[t + 4] === \"T\" && e[t + 5] === \"Y\" && e[t + 6] === \"P\" && e[t + 7] === \"E\") {\n let r = 1;\n for (t += 8; t < e.length; t++)\n if (e[t] === \"<\")\n r++;\n else if (e[t] === \">\" && (r--, r === 0))\n break;\n } else if (e.length > t + 9 && e[t + 1] === \"[\" && e[t + 2] === \"C\" && e[t + 3] === \"D\" && e[t + 4] === \"A\" && e[t + 5] === \"T\" && e[t + 6] === \"A\" && e[t + 7] === \"[\") {\n for (t += 8; t < e.length; t++)\n if (e[t] === \"]\" && e[t + 1] === \"]\" && e[t + 2] === \">\") {\n t += 2;\n break;\n }\n }\n return t;\n}\nconst Pe = '\"', xe = \"'\";\nfunction $e(e, t) {\n let r = \"\", s = \"\", n = !1;\n for (; t < e.length; t++) {\n if (e[t] === Pe || e[t] === xe)\n s === \"\" ? s = e[t] : s !== e[t] || (s = \"\");\n else if (e[t] === \">\" && s === \"\") {\n n = !0;\n break;\n }\n r += e[t];\n }\n return s !== \"\" ? !1 : {\n value: r,\n index: t,\n tagClosed: n\n };\n}\nconst Fe = new RegExp(`(\\\\s*)([^\\\\s=]+)(\\\\s*=)?(\\\\s*(['\"])(([\\\\s\\\\S])*?)\\\\5)?`, \"g\");\nfunction z(e, t) {\n const r = M.getAllMatches(e, Fe), s = {};\n for (let n = 0; n < r.length; n++) {\n if (r[n][1].length === 0)\n return p(\"InvalidAttr\", \"Attribute '\" + r[n][2] + \"' has no space in starting.\", v(r[n]));\n if (r[n][3] !== void 0 && r[n][4] === void 0)\n return p(\"InvalidAttr\", \"Attribute '\" + r[n][2] + \"' is without value.\", v(r[n]));\n if (r[n][3] === void 0 && !t.allowBooleanAttributes)\n return p(\"InvalidAttr\", \"boolean attribute '\" + r[n][2] + \"' is not allowed.\", v(r[n]));\n const i = r[n][2];\n if (!Le(i))\n return p(\"InvalidAttr\", \"Attribute '\" + i + \"' is an invalid name.\", v(r[n]));\n if (!s.hasOwnProperty(i))\n s[i] = 1;\n else\n return p(\"InvalidAttr\", \"Attribute '\" + i + \"' is repeated.\", v(r[n]));\n }\n return !0;\n}\nfunction Ve(e, t) {\n let r = /\\d/;\n for (e[t] === \"x\" && (t++, r = /[\\da-fA-F]/); t < e.length; t++) {\n if (e[t] === \";\")\n return t;\n if (!e[t].match(r))\n break;\n }\n return -1;\n}\nfunction Se(e, t) {\n if (t++, e[t] === \";\")\n return -1;\n if (e[t] === \"#\")\n return t++, Ve(e, t);\n let r = 0;\n for (; t < e.length; t++, r++)\n if (!(e[t].match(/\\w/) && r < 20)) {\n if (e[t] === \";\")\n break;\n return -1;\n }\n return t;\n}\nfunction p(e, t, r) {\n return {\n err: {\n code: e,\n msg: t,\n line: r.line || r,\n col: r.col\n }\n };\n}\nfunction Le(e) {\n return M.isName(e);\n}\nfunction Re(e) {\n return M.isName(e);\n}\nfunction w(e, t) {\n const r = e.substring(0, t).split(/\\r?\\n/);\n return {\n line: r.length,\n // column number is last line's length + 1, because column numbering starts at 1:\n col: r[r.length - 1].length + 1\n };\n}\nfunction v(e) {\n return e.startIndex + e[1].length;\n}\nvar k = {};\nconst te = {\n preserveOrder: !1,\n attributeNamePrefix: \"@_\",\n attributesGroupName: !1,\n textNodeName: \"#text\",\n ignoreAttributes: !0,\n removeNSPrefix: !1,\n // remove NS from tag name or attribute name if true\n allowBooleanAttributes: !1,\n //a tag can have attributes without any value\n //ignoreRootElement : false,\n parseTagValue: !0,\n parseAttributeValue: !1,\n trimValues: !0,\n //Trim string values of tag and attributes\n cdataPropName: !1,\n numberParseOptions: {\n hex: !0,\n leadingZeros: !0,\n eNotation: !0\n },\n tagValueProcessor: function(e, t) {\n return t;\n },\n attributeValueProcessor: function(e, t) {\n return t;\n },\n stopNodes: [],\n //nested tags will not be parsed even for errors\n alwaysCreateTextNode: !1,\n isArray: () => !1,\n commentPropName: !1,\n unpairedTags: [],\n processEntities: !0,\n htmlEntities: !1,\n ignoreDeclaration: !1,\n ignorePiTags: !1,\n transformTagName: !1,\n transformAttributeName: !1,\n updateTag: function(e, t, r) {\n return e;\n }\n // skipEmptyListItem: false\n}, Me = function(e) {\n return Object.assign({}, te, e);\n};\nk.buildOptions = Me;\nk.defaultOptions = te;\nclass ke {\n constructor(t) {\n this.tagname = t, this.child = [], this[\":@\"] = {};\n }\n add(t, r) {\n t === \"__proto__\" && (t = \"#__proto__\"), this.child.push({ [t]: r });\n }\n addChild(t) {\n t.tagname === \"__proto__\" && (t.tagname = \"#__proto__\"), t[\":@\"] && Object.keys(t[\":@\"]).length > 0 ? this.child.push({ [t.tagname]: t.child, \":@\": t[\":@\"] }) : this.child.push({ [t.tagname]: t.child });\n }\n}\nvar Be = ke;\nconst qe = C;\nfunction Xe(e, t) {\n const r = {};\n if (e[t + 3] === \"O\" && e[t + 4] === \"C\" && e[t + 5] === \"T\" && e[t + 6] === \"Y\" && e[t + 7] === \"P\" && e[t + 8] === \"E\") {\n t = t + 9;\n let s = 1, n = !1, i = !1, d = \"\";\n for (; t < e.length; t++)\n if (e[t] === \"<\" && !i) {\n if (n && ze(e, t))\n t += 7, [entityName, val, t] = Ue(e, t + 1), val.indexOf(\"&\") === -1 && (r[Ze(entityName)] = {\n regx: RegExp(`&${entityName};`, \"g\"),\n val\n });\n else if (n && He(e, t))\n t += 8;\n else if (n && Ke(e, t))\n t += 8;\n else if (n && We(e, t))\n t += 9;\n else if (Ge)\n i = !0;\n else\n throw new Error(\"Invalid DOCTYPE\");\n s++, d = \"\";\n } else if (e[t] === \">\") {\n if (i ? e[t - 1] === \"-\" && e[t - 2] === \"-\" && (i = !1, s--) : s--, s === 0)\n break;\n } else\n e[t] === \"[\" ? n = !0 : d += e[t];\n if (s !== 0)\n throw new Error(\"Unclosed DOCTYPE\");\n } else\n throw new Error(\"Invalid Tag instead of DOCTYPE\");\n return { entities: r, i: t };\n}\nfunction Ue(e, t) {\n let r = \"\";\n for (; t < e.length && e[t] !== \"'\" && e[t] !== '\"'; t++)\n r += e[t];\n if (r = r.trim(), r.indexOf(\" \") !== -1)\n throw new Error(\"External entites are not supported\");\n const s = e[t++];\n let n = \"\";\n for (; t < e.length && e[t] !== s; t++)\n n += e[t];\n return [r, n, t];\n}\nfunction Ge(e, t) {\n return e[t + 1] === \"!\" && e[t + 2] === \"-\" && e[t + 3] === \"-\";\n}\nfunction ze(e, t) {\n return e[t + 1] === \"!\" && e[t + 2] === \"E\" && e[t + 3] === \"N\" && e[t + 4] === \"T\" && e[t + 5] === \"I\" && e[t + 6] === \"T\" && e[t + 7] === \"Y\";\n}\nfunction He(e, t) {\n return e[t + 1] === \"!\" && e[t + 2] === \"E\" && e[t + 3] === \"L\" && e[t + 4] === \"E\" && e[t + 5] === \"M\" && e[t + 6] === \"E\" && e[t + 7] === \"N\" && e[t + 8] === \"T\";\n}\nfunction Ke(e, t) {\n return e[t + 1] === \"!\" && e[t + 2] === \"A\" && e[t + 3] === \"T\" && e[t + 4] === \"T\" && e[t + 5] === \"L\" && e[t + 6] === \"I\" && e[t + 7] === \"S\" && e[t + 8] === \"T\";\n}\nfunction We(e, t) {\n return e[t + 1] === \"!\" && e[t + 2] === \"N\" && e[t + 3] === \"O\" && e[t + 4] === \"T\" && e[t + 5] === \"A\" && e[t + 6] === \"T\" && e[t + 7] === \"I\" && e[t + 8] === \"O\" && e[t + 9] === \"N\";\n}\nfunction Ze(e) {\n if (qe.isName(e))\n return e;\n throw new Error(`Invalid entity name ${e}`);\n}\nvar je = Xe;\nconst Ye = /^[-+]?0x[a-fA-F0-9]+$/, Je = /^([\\-\\+])?(0*)(\\.[0-9]+([eE]\\-?[0-9]+)?|[0-9]+(\\.[0-9]+([eE]\\-?[0-9]+)?)?)$/;\n!Number.parseInt && window.parseInt && (Number.parseInt = window.parseInt);\n!Number.parseFloat && window.parseFloat && (Number.parseFloat = window.parseFloat);\nconst Qe = {\n hex: !0,\n leadingZeros: !0,\n decimalPoint: \".\",\n eNotation: !0\n //skipLike: /regex/\n};\nfunction De(e, t = {}) {\n if (t = Object.assign({}, Qe, t), !e || typeof e != \"string\")\n return e;\n let r = e.trim();\n if (t.skipLike !== void 0 && t.skipLike.test(r))\n return e;\n if (t.hex && Ye.test(r))\n return Number.parseInt(r, 16);\n {\n const s = Je.exec(r);\n if (s) {\n const n = s[1], i = s[2];\n let d = et(s[3]);\n const u = s[4] || s[6];\n if (!t.leadingZeros && i.length > 0 && n && r[2] !== \".\")\n return e;\n if (!t.leadingZeros && i.length > 0 && !n && r[1] !== \".\")\n return e;\n {\n const o = Number(r), a = \"\" + o;\n return a.search(/[eE]/) !== -1 || u ? t.eNotation ? o : e : r.indexOf(\".\") !== -1 ? a === \"0\" && d === \"\" || a === d || n && a === \"-\" + d ? o : e : i ? d === a || n + d === a ? o : e : r === a || r === n + a ? o : e;\n }\n } else\n return e;\n }\n}\nfunction et(e) {\n return e && e.indexOf(\".\") !== -1 && (e = e.replace(/0+$/, \"\"), e === \".\" ? e = \"0\" : e[0] === \".\" ? e = \"0\" + e : e[e.length - 1] === \".\" && (e = e.substr(0, e.length - 1))), e;\n}\nvar tt = De;\nconst re = C, T = Be, rt = je, nt = tt;\nlet it = class {\n constructor(t) {\n this.options = t, this.currentNode = null, this.tagsNodeStack = [], this.docTypeEntities = {}, this.lastEntities = {\n apos: { regex: /&(apos|#39|#x27);/g, val: \"'\" },\n gt: { regex: /&(gt|#62|#x3E);/g, val: \">\" },\n lt: { regex: /&(lt|#60|#x3C);/g, val: \"<\" },\n quot: { regex: /&(quot|#34|#x22);/g, val: '\"' }\n }, this.ampEntity = { regex: /&(amp|#38|#x26);/g, val: \"&\" }, this.htmlEntities = {\n space: { regex: /&(nbsp|#160);/g, val: \" \" },\n // \"lt\" : { regex: /&(lt|#60);/g, val: \"<\" },\n // \"gt\" : { regex: /&(gt|#62);/g, val: \">\" },\n // \"amp\" : { regex: /&(amp|#38);/g, val: \"&\" },\n // \"quot\" : { regex: /&(quot|#34);/g, val: \"\\\"\" },\n // \"apos\" : { regex: /&(apos|#39);/g, val: \"'\" },\n cent: { regex: /&(cent|#162);/g, val: \"¢\" },\n pound: { regex: /&(pound|#163);/g, val: \"£\" },\n yen: { regex: /&(yen|#165);/g, val: \"¥\" },\n euro: { regex: /&(euro|#8364);/g, val: \"€\" },\n copyright: { regex: /&(copy|#169);/g, val: \"©\" },\n reg: { regex: /&(reg|#174);/g, val: \"®\" },\n inr: { regex: /&(inr|#8377);/g, val: \"₹\" },\n num_dec: { regex: /&#([0-9]{1,7});/g, val: (r, s) => String.fromCharCode(Number.parseInt(s, 10)) },\n num_hex: { regex: /&#x([0-9a-fA-F]{1,6});/g, val: (r, s) => String.fromCharCode(Number.parseInt(s, 16)) }\n }, this.addExternalEntities = st, this.parseXml = lt, this.parseTextData = ot, this.resolveNameSpace = ut, this.buildAttributesMap = at, this.isItStopNode = pt, this.replaceEntitiesValue = ct, this.readStopNodeData = wt, this.saveTextToParentTag = ht, this.addChild = ft;\n }\n};\nfunction st(e) {\n const t = Object.keys(e);\n for (let r = 0; r < t.length; r++) {\n const s = t[r];\n this.lastEntities[s] = {\n regex: new RegExp(\"&\" + s + \";\", \"g\"),\n val: e[s]\n };\n }\n}\nfunction ot(e, t, r, s, n, i, d) {\n if (e !== void 0 && (this.options.trimValues && !s && (e = e.trim()), e.length > 0)) {\n d || (e = this.replaceEntitiesValue(e));\n const u = this.options.tagValueProcessor(t, e, r, n, i);\n return u == null ? e : typeof u != typeof e || u !== e ? u : this.options.trimValues ? $(e, this.options.parseTagValue, this.options.numberParseOptions) : e.trim() === e ? $(e, this.options.parseTagValue, this.options.numberParseOptions) : e;\n }\n}\nfunction ut(e) {\n if (this.options.removeNSPrefix) {\n const t = e.split(\":\"), r = e.charAt(0) === \"/\" ? \"/\" : \"\";\n if (t[0] === \"xmlns\")\n return \"\";\n t.length === 2 && (e = r + t[1]);\n }\n return e;\n}\nconst dt = new RegExp(`([^\\\\s=]+)\\\\s*(=\\\\s*(['\"])([\\\\s\\\\S]*?)\\\\3)?`, \"gm\");\nfunction at(e, t, r) {\n if (!this.options.ignoreAttributes && typeof e == \"string\") {\n const s = re.getAllMatches(e, dt), n = s.length, i = {};\n for (let d = 0; d < n; d++) {\n const u = this.resolveNameSpace(s[d][1]);\n let o = s[d][4], a = this.options.attributeNamePrefix + u;\n if (u.length)\n if (this.options.transformAttributeName && (a = this.options.transformAttributeName(a)), a === \"__proto__\" && (a = \"#__proto__\"), o !== void 0) {\n this.options.trimValues && (o = o.trim()), o = this.replaceEntitiesValue(o);\n const l = this.options.attributeValueProcessor(u, o, t);\n l == null ? i[a] = o : typeof l != typeof o || l !== o ? i[a] = l : i[a] = $(\n o,\n this.options.parseAttributeValue,\n this.options.numberParseOptions\n );\n } else\n this.options.allowBooleanAttributes && (i[a] = !0);\n }\n if (!Object.keys(i).length)\n return;\n if (this.options.attributesGroupName) {\n const d = {};\n return d[this.options.attributesGroupName] = i, d;\n }\n return i;\n }\n}\nconst lt = function(e) {\n e = e.replace(/\\r\\n?/g, `\n`);\n const t = new T(\"!xml\");\n let r = t, s = \"\", n = \"\";\n for (let i = 0; i < e.length; i++)\n if (e[i] === \"<\")\n if (e[i + 1] === \"/\") {\n const u = y(e, \">\", i, \"Closing Tag is not closed.\");\n let o = e.substring(i + 2, u).trim();\n if (this.options.removeNSPrefix) {\n const f = o.indexOf(\":\");\n f !== -1 && (o = o.substr(f + 1));\n }\n this.options.transformTagName && (o = this.options.transformTagName(o)), r && (s = this.saveTextToParentTag(s, r, n));\n const a = n.substring(n.lastIndexOf(\".\") + 1);\n if (o && this.options.unpairedTags.indexOf(o) !== -1)\n throw new Error(`Unpaired tag can not be used as closing tag: </${o}>`);\n let l = 0;\n a && this.options.unpairedTags.indexOf(a) !== -1 ? (l = n.lastIndexOf(\".\", n.lastIndexOf(\".\") - 1), this.tagsNodeStack.pop()) : l = n.lastIndexOf(\".\"), n = n.substring(0, l), r = this.tagsNodeStack.pop(), s = \"\", i = u;\n } else if (e[i + 1] === \"?\") {\n let u = x(e, i, !1, \"?>\");\n if (!u)\n throw new Error(\"Pi Tag is not closed.\");\n if (s = this.saveTextToParentTag(s, r, n), !(this.options.ignoreDeclaration && u.tagName === \"?xml\" || this.options.ignorePiTags)) {\n const o = new T(u.tagName);\n o.add(this.options.textNodeName, \"\"), u.tagName !== u.tagExp && u.attrExpPresent && (o[\":@\"] = this.buildAttributesMap(u.tagExp, n, u.tagName)), this.addChild(r, o, n);\n }\n i = u.closeIndex + 1;\n } else if (e.substr(i + 1, 3) === \"!--\") {\n const u = y(e, \"-->\", i + 4, \"Comment is not closed.\");\n if (this.options.commentPropName) {\n const o = e.substring(i + 4, u - 2);\n s = this.saveTextToParentTag(s, r, n), r.add(this.options.commentPropName, [{ [this.options.textNodeName]: o }]);\n }\n i = u;\n } else if (e.substr(i + 1, 2) === \"!D\") {\n const u = rt(e, i);\n this.docTypeEntities = u.entities, i = u.i;\n } else if (e.substr(i + 1, 2) === \"![\") {\n const u = y(e, \"]]>\", i, \"CDATA is not closed.\") - 2, o = e.substring(i + 9, u);\n s = this.saveTextToParentTag(s, r, n);\n let a = this.parseTextData(o, r.tagname, n, !0, !1, !0, !0);\n a == null && (a = \"\"), this.options.cdataPropName ? r.add(this.options.cdataPropName, [{ [this.options.textNodeName]: o }]) : r.add(this.options.textNodeName, a), i = u + 2;\n } else {\n let u = x(e, i, this.options.removeNSPrefix), o = u.tagName;\n const a = u.rawTagName;\n let l = u.tagExp, f = u.attrExpPresent, c = u.closeIndex;\n this.options.transformTagName && (o = this.options.transformTagName(o)), r && s && r.tagname !== \"!xml\" && (s = this.saveTextToParentTag(s, r, n, !1));\n const g = r;\n if (g && this.options.unpairedTags.indexOf(g.tagname) !== -1 && (r = this.tagsNodeStack.pop(), n = n.substring(0, n.lastIndexOf(\".\"))), o !== t.tagname && (n += n ? \".\" + o : o), this.isItStopNode(this.options.stopNodes, n, o)) {\n let h = \"\";\n if (l.length > 0 && l.lastIndexOf(\"/\") === l.length - 1)\n i = u.closeIndex;\n else if (this.options.unpairedTags.indexOf(o) !== -1)\n i = u.closeIndex;\n else {\n const E = this.readStopNodeData(e, a, c + 1);\n if (!E)\n throw new Error(`Unexpected end of ${a}`);\n i = E.i, h = E.tagContent;\n }\n const _ = new T(o);\n o !== l && f && (_[\":@\"] = this.buildAttributesMap(l, n, o)), h && (h = this.parseTextData(h, o, n, !0, f, !0, !0)), n = n.substr(0, n.lastIndexOf(\".\")), _.add(this.options.textNodeName, h), this.addChild(r, _, n);\n } else {\n if (l.length > 0 && l.lastIndexOf(\"/\") === l.length - 1) {\n o[o.length - 1] === \"/\" ? (o = o.substr(0, o.length - 1), n = n.substr(0, n.length - 1), l = o) : l = l.substr(0, l.length - 1), this.options.transformTagName && (o = this.options.transformTagName(o));\n const h = new T(o);\n o !== l && f && (h[\":@\"] = this.buildAttributesMap(l, n, o)), this.addChild(r, h, n), n = n.substr(0, n.lastIndexOf(\".\"));\n } else {\n const h = new T(o);\n this.tagsNodeStack.push(r), o !== l && f && (h[\":@\"] = this.buildAttributesMap(l, n, o)), this.addChild(r, h, n), r = h;\n }\n s = \"\", i = c;\n }\n }\n else\n s += e[i];\n return t.child;\n};\nfunction ft(e, t, r) {\n const s = this.options.updateTag(t.tagname, r, t[\":@\"]);\n s === !1 || (typeof s == \"string\" && (t.tagname = s), e.addChild(t));\n}\nconst ct = function(e) {\n if (this.options.processEntities) {\n for (let t in this.docTypeEntities) {\n const r = this.docTypeEntities[t];\n e = e.replace(r.regx, r.val);\n }\n for (let t in this.lastEntities) {\n const r = this.lastEntities[t];\n e = e.replace(r.regex, r.val);\n }\n if (this.options.htmlEntities)\n for (let t in this.htmlEntities) {\n const r = this.htmlEntities[t];\n e = e.replace(r.regex, r.val);\n }\n e = e.replace(this.ampEntity.regex, this.ampEntity.val);\n }\n return e;\n};\nfunction ht(e, t, r, s) {\n return e && (s === void 0 && (s = Object.keys(t.child).length === 0), e = this.parseTextData(\n e,\n t.tagname,\n r,\n !1,\n t[\":@\"] ? Object.keys(t[\":@\"]).length !== 0 : !1,\n s\n ), e !== void 0 && e !== \"\" && t.add(this.options.textNodeName, e), e = \"\"), e;\n}\nfunction pt(e, t, r) {\n const s = \"*.\" + r;\n for (const n in e) {\n const i = e[n];\n if (s === i || t === i)\n return !0;\n }\n return !1;\n}\nfunction gt(e, t, r = \">\") {\n let s, n = \"\";\n for (let i = t; i < e.length; i++) {\n let d = e[i];\n if (s)\n d === s && (s = \"\");\n else if (d === '\"' || d === \"'\")\n s = d;\n else if (d === r[0])\n if (r[1]) {\n if (e[i + 1] === r[1])\n return {\n data: n,\n index: i\n };\n } else\n return {\n data: n,\n index: i\n };\n else\n d === \"\t\" && (d = \" \");\n n += d;\n }\n}\nfunction y(e, t, r, s) {\n const n = e.indexOf(t, r);\n if (n === -1)\n throw new Error(s);\n return n + t.length - 1;\n}\nfunction x(e, t, r, s = \">\") {\n const n = gt(e, t + 1, s);\n if (!n)\n return;\n let i = n.data;\n const d = n.index, u = i.search(/\\s/);\n let o = i, a = !0;\n u !== -1 && (o = i.substring(0, u), i = i.substring(u + 1).trimStart());\n const l = o;\n if (r) {\n const f = o.indexOf(\":\");\n f !== -1 && (o = o.substr(f + 1), a = o !== n.data.substr(f + 1));\n }\n return {\n tagName: o,\n tagExp: i,\n closeIndex: d,\n attrExpPresent: a,\n rawTagName: l\n };\n}\nfunction wt(e, t, r) {\n const s = r;\n let n = 1;\n for (; r < e.length; r++)\n if (e[r] === \"<\")\n if (e[r + 1] === \"/\") {\n const i = y(e, \">\", r, `${t} is not closed`);\n if (e.substring(r + 2, i).trim() === t && (n--, n === 0))\n return {\n tagContent: e.substring(s, r),\n i\n };\n r = i;\n } else if (e[r + 1] === \"?\")\n r = y(e, \"?>\", r + 1, \"StopNode is not closed.\");\n else if (e.substr(r + 1, 3) === \"!--\")\n r = y(e, \"-->\", r + 3, \"StopNode is not closed.\");\n else if (e.substr(r + 1, 2) === \"![\")\n r = y(e, \"]]>\", r, \"StopNode is not closed.\") - 2;\n else {\n const i = x(e, r, \">\");\n i && ((i && i.tagName) === t && i.tagExp[i.tagExp.length - 1] !== \"/\" && n++, r = i.closeIndex);\n }\n}\nfunction $(e, t, r) {\n if (t && typeof e == \"string\") {\n const s = e.trim();\n return s === \"true\" ? !0 : s === \"false\" ? !1 : nt(e, r);\n } else\n return re.isExist(e) ? e : \"\";\n}\nvar mt = it, ne = {};\nfunction Nt(e, t) {\n return ie(e, t);\n}\nfunction ie(e, t, r) {\n let s;\n const n = {};\n for (let i = 0; i < e.length; i++) {\n const d = e[i], u = Et(d);\n let o = \"\";\n if (r === void 0 ? o = u : o = r + \".\" + u, u === t.textNodeName)\n s === void 0 ? s = d[u] : s += \"\" + d[u];\n else {\n if (u === void 0)\n continue;\n if (d[u]) {\n let a = ie(d[u], t, o);\n const l = yt(a, t);\n d[\":@\"] ? bt(a, d[\":@\"], o, t) : Object.keys(a).length === 1 && a[t.textNodeName] !== void 0 && !t.alwaysCreateTextNode ? a = a[t.textNodeName] : Object.keys(a).length === 0 && (t.alwaysCreateTextNode ? a[t.textNodeName] = \"\" : a = \"\"), n[u] !== void 0 && n.hasOwnProperty(u) ? (Array.isArray(n[u]) || (n[u] = [n[u]]), n[u].push(a)) : t.isArray(u, o, l) ? n[u] = [a] : n[u] = a;\n }\n }\n }\n return typeof s == \"string\" ? s.length > 0 && (n[t.textNodeName] = s) : s !== void 0 && (n[t.textNodeName] = s), n;\n}\nfunction Et(e) {\n const t = Object.keys(e);\n for (let r = 0; r < t.length; r++) {\n const s = t[r];\n if (s !== \":@\")\n return s;\n }\n}\nfunction bt(e, t, r, s) {\n if (t) {\n const n = Object.keys(t), i = n.length;\n for (let d = 0; d < i; d++) {\n const u = n[d];\n s.isArray(u, r + \".\" + u, !0, !0) ? e[u] = [t[u]] : e[u] = t[u];\n }\n }\n}\nfunction yt(e, t) {\n const { textNodeName: r } = t, s = Object.keys(e).length;\n return !!(s === 0 || s === 1 && (e[r] || typeof e[r] == \"boolean\" || e[r] === 0));\n}\nne.prettify = Nt;\nconst { buildOptions: _t } = k, vt = mt, { prettify: Tt } = ne, It = R;\nlet At = class {\n constructor(t) {\n this.externalEntities = {}, this.options = _t(t);\n }\n /**\n * Parse XML dats to JS object \n * @param {string|Buffer} xmlData \n * @param {boolean|Object} validationOption \n */\n parse(t, r) {\n if (typeof t != \"string\")\n if (t.toString)\n t = t.toString();\n else\n throw new Error(\"XML data is accepted in String or Bytes[] form.\");\n if (r) {\n r === !0 && (r = {});\n const i = It.validate(t, r);\n if (i !== !0)\n throw Error(`${i.err.msg}:${i.err.line}:${i.err.col}`);\n }\n const s = new vt(this.options);\n s.addExternalEntities(this.externalEntities);\n const n = s.parseXml(t);\n return this.options.preserveOrder || n === void 0 ? n : Tt(n, this.options);\n }\n /**\n * Add Entity which is not by default supported by this library\n * @param {string} key \n * @param {string} value \n */\n addEntity(t, r) {\n if (r.indexOf(\"&\") !== -1)\n throw new Error(\"Entity value can't have '&'\");\n if (t.indexOf(\"&\") !== -1 || t.indexOf(\";\") !== -1)\n throw new Error(\"An entity must be set without '&' and ';'. Eg. use '#xD' for '
'\");\n if (r === \"&\")\n throw new Error(\"An entity with value '&' is not permitted\");\n this.externalEntities[t] = r;\n }\n};\nvar Ct = At;\nconst Ot = `\n`;\nfunction Pt(e, t) {\n let r = \"\";\n return t.format && t.indentBy.length > 0 && (r = Ot), se(e, t, \"\", r);\n}\nfunction se(e, t, r, s) {\n let n = \"\", i = !1;\n for (let d = 0; d < e.length; d++) {\n const u = e[d], o = xt(u);\n if (o === void 0)\n continue;\n let a = \"\";\n if (r.length === 0 ? a = o : a = `${r}.${o}`, o === t.textNodeName) {\n let h = u[o];\n $t(a, t) || (h = t.tagValueProcessor(o, h), h = oe(h, t)), i && (n += s), n += h, i = !1;\n continue;\n } else if (o === t.cdataPropName) {\n i && (n += s), n += `<![CDATA[${u[o][0][t.textNodeName]}]]>`, i = !1;\n continue;\n } else if (o === t.commentPropName) {\n n += s + `<!--${u[o][0][t.textNodeName]}-->`, i = !0;\n continue;\n } else if (o[0] === \"?\") {\n const h = H(u[\":@\"], t), _ = o === \"?xml\" ? \"\" : s;\n let E = u[o][0][t.textNodeName];\n E = E.length !== 0 ? \" \" + E : \"\", n += _ + `<${o}${E}${h}?>`, i = !0;\n continue;\n }\n let l = s;\n l !== \"\" && (l += t.indentBy);\n const f = H(u[\":@\"], t), c = s + `<${o}${f}`, g = se(u[o], t, a, l);\n t.unpairedTags.indexOf(o) !== -1 ? t.suppressUnpairedNode ? n += c + \">\" : n += c + \"/>\" : (!g || g.length === 0) && t.suppressEmptyNode ? n += c + \"/>\" : g && g.endsWith(\">\") ? n += c + `>${g}${s}</${o}>` : (n += c + \">\", g && s !== \"\" && (g.includes(\"/>\") || g.includes(\"</\")) ? n += s + t.indentBy + g + s : n += g, n += `</${o}>`), i = !0;\n }\n return n;\n}\nfunction xt(e) {\n const t = Object.keys(e);\n for (let r = 0; r < t.length; r++) {\n const s = t[r];\n if (e.hasOwnProperty(s) && s !== \":@\")\n return s;\n }\n}\nfunction H(e, t) {\n let r = \"\";\n if (e && !t.ignoreAttributes)\n for (let s in e) {\n if (!e.hasOwnProperty(s))\n continue;\n let n = t.attributeValueProcessor(s, e[s]);\n n = oe(n, t), n === !0 && t.suppressBooleanAttributes ? r += ` ${s.substr(t.attributeNamePrefix.length)}` : r += ` ${s.substr(t.attributeNamePrefix.length)}=\"${n}\"`;\n }\n return r;\n}\nfunction $t(e, t) {\n e = e.substr(0, e.length - t.textNodeName.length - 1);\n let r = e.substr(e.lastIndexOf(\".\") + 1);\n for (let s in t.stopNodes)\n if (t.stopNodes[s] === e || t.stopNodes[s] === \"*.\" + r)\n return !0;\n return !1;\n}\nfunction oe(e, t) {\n if (e && e.length > 0 && t.processEntities)\n for (let r = 0; r < t.entities.length; r++) {\n const s = t.entities[r];\n e = e.replace(s.regex, s.val);\n }\n return e;\n}\nvar Ft = Pt;\nconst Vt = Ft, St = {\n attributeNamePrefix: \"@_\",\n attributesGroupName: !1,\n textNodeName: \"#text\",\n ignoreAttributes: !0,\n cdataPropName: !1,\n format: !1,\n indentBy: \" \",\n suppressEmptyNode: !1,\n suppressUnpairedNode: !0,\n suppressBooleanAttributes: !0,\n tagValueProcessor: function(e, t) {\n return t;\n },\n attributeValueProcessor: function(e, t) {\n return t;\n },\n preserveOrder: !1,\n commentPropName: !1,\n unpairedTags: [],\n entities: [\n { regex: new RegExp(\"&\", \"g\"), val: \"&\" },\n //it must be on top\n { regex: new RegExp(\">\", \"g\"), val: \">\" },\n { regex: new RegExp(\"<\", \"g\"), val: \"<\" },\n { regex: new RegExp(\"'\", \"g\"), val: \"'\" },\n { regex: new RegExp('\"', \"g\"), val: \""\" }\n ],\n processEntities: !0,\n stopNodes: [],\n // transformTagName: false,\n // transformAttributeName: false,\n oneListGroup: !1\n};\nfunction b(e) {\n this.options = Object.assign({}, St, e), this.options.ignoreAttributes || this.options.attributesGroupName ? this.isAttribute = function() {\n return !1;\n } : (this.attrPrefixLen = this.options.attributeNamePrefix.length, this.isAttribute = Mt), this.processTextOrObjNode = Lt, this.options.format ? (this.indentate = Rt, this.tagEndChar = `>\n`, this.newLine = `\n`) : (this.indentate = function() {\n return \"\";\n }, this.tagEndChar = \">\", this.newLine = \"\");\n}\nb.prototype.build = function(e) {\n return this.options.preserveOrder ? Vt(e, this.options) : (Array.isArray(e) && this.options.arrayNodeName && this.options.arrayNodeName.length > 1 && (e = {\n [this.options.arrayNodeName]: e\n }), this.j2x(e, 0).val);\n};\nb.prototype.j2x = function(e, t) {\n let r = \"\", s = \"\";\n for (let n in e)\n if (Object.prototype.hasOwnProperty.call(e, n))\n if (typeof e[n] > \"u\")\n this.isAttribute(n) && (s += \"\");\n else if (e[n] === null)\n this.isAttribute(n) ? s += \"\" : n[0] === \"?\" ? s += this.indentate(t) + \"<\" + n + \"?\" + this.tagEndChar : s += this.indentate(t) + \"<\" + n + \"/\" + this.tagEndChar;\n else if (e[n] instanceof Date)\n s += this.buildTextValNode(e[n], n, \"\", t);\n else if (typeof e[n] != \"object\") {\n const i = this.isAttribute(n);\n if (i)\n r += this.buildAttrPairStr(i, \"\" + e[n]);\n else if (n === this.options.textNodeName) {\n let d = this.options.tagValueProcessor(n, \"\" + e[n]);\n s += this.replaceEntitiesValue(d);\n } else\n s += this.buildTextValNode(e[n], n, \"\", t);\n } else if (Array.isArray(e[n])) {\n const i = e[n].length;\n let d = \"\";\n for (let u = 0; u < i; u++) {\n const o = e[n][u];\n typeof o > \"u\" || (o === null ? n[0] === \"?\" ? s += this.indentate(t) + \"<\" + n + \"?\" + this.tagEndChar : s += this.indentate(t) + \"<\" + n + \"/\" + this.tagEndChar : typeof o == \"object\" ? this.options.oneListGroup ? d += this.j2x(o, t + 1).val : d += this.processTextOrObjNode(o, n, t) : d += this.buildTextValNode(o, n, \"\", t));\n }\n this.options.oneListGroup && (d = this.buildObjectNode(d, n, \"\", t)), s += d;\n } else if (this.options.attributesGroupName && n === this.options.attributesGroupName) {\n const i = Object.keys(e[n]), d = i.length;\n for (let u = 0; u < d; u++)\n r += this.buildAttrPairStr(i[u], \"\" + e[n][i[u]]);\n } else\n s += this.processTextOrObjNode(e[n], n, t);\n return { attrStr: r, val: s };\n};\nb.prototype.buildAttrPairStr = function(e, t) {\n return t = this.options.attributeValueProcessor(e, \"\" + t), t = this.replaceEntitiesValue(t), this.options.suppressBooleanAttributes && t === \"true\" ? \" \" + e : \" \" + e + '=\"' + t + '\"';\n};\nfunction Lt(e, t, r) {\n const s = this.j2x(e, r + 1);\n return e[this.options.textNodeName] !== void 0 && Object.keys(e).length === 1 ? this.buildTextValNode(e[this.options.textNodeName], t, s.attrStr, r) : this.buildObjectNode(s.val, t, s.attrStr, r);\n}\nb.prototype.buildObjectNode = function(e, t, r, s) {\n if (e === \"\")\n return t[0] === \"?\" ? this.indentate(s) + \"<\" + t + r + \"?\" + this.tagEndChar : this.indentate(s) + \"<\" + t + r + this.closeTag(t) + this.tagEndChar;\n {\n let n = \"</\" + t + this.tagEndChar, i = \"\";\n return t[0] === \"?\" && (i = \"?\", n = \"\"), (r || r === \"\") && e.indexOf(\"<\") === -1 ? this.indentate(s) + \"<\" + t + r + i + \">\" + e + n : this.options.commentPropName !== !1 && t === this.options.commentPropName && i.length === 0 ? this.indentate(s) + `<!--${e}-->` + this.newLine : this.indentate(s) + \"<\" + t + r + i + this.tagEndChar + e + this.indentate(s) + n;\n }\n};\nb.prototype.closeTag = function(e) {\n let t = \"\";\n return this.options.unpairedTags.indexOf(e) !== -1 ? this.options.suppressUnpairedNode || (t = \"/\") : this.options.suppressEmptyNode ? t = \"/\" : t = `></${e}`, t;\n};\nb.prototype.buildTextValNode = function(e, t, r, s) {\n if (this.options.cdataPropName !== !1 && t === this.options.cdataPropName)\n return this.indentate(s) + `<![CDATA[${e}]]>` + this.newLine;\n if (this.options.commentPropName !== !1 && t === this.options.commentPropName)\n return this.indentate(s) + `<!--${e}-->` + this.newLine;\n if (t[0] === \"?\")\n return this.indentate(s) + \"<\" + t + r + \"?\" + this.tagEndChar;\n {\n let n = this.options.tagValueProcessor(t, e);\n return n = this.replaceEntitiesValue(n), n === \"\" ? this.indentate(s) + \"<\" + t + r + this.closeTag(t) + this.tagEndChar : this.indentate(s) + \"<\" + t + r + \">\" + n + \"</\" + t + this.tagEndChar;\n }\n};\nb.prototype.replaceEntitiesValue = function(e) {\n if (e && e.length > 0 && this.options.processEntities)\n for (let t = 0; t < this.options.entities.length; t++) {\n const r = this.options.entities[t];\n e = e.replace(r.regex, r.val);\n }\n return e;\n};\nfunction Rt(e) {\n return this.options.indentBy.repeat(e);\n}\nfunction Mt(e) {\n return e.startsWith(this.options.attributeNamePrefix) && e !== this.options.textNodeName ? e.substr(this.attrPrefixLen) : !1;\n}\nvar kt = b;\nconst Bt = R, qt = Ct, Xt = kt;\nvar K = {\n XMLParser: qt,\n XMLValidator: Bt,\n XMLBuilder: Xt\n};\nfunction Ut(e) {\n if (typeof e != \"string\")\n throw new TypeError(`Expected a \\`string\\`, got \\`${typeof e}\\``);\n if (e = e.trim(), e.length === 0 || K.XMLValidator.validate(e) !== !0)\n return !1;\n let t;\n const r = new K.XMLParser();\n try {\n t = r.parse(e);\n } catch {\n return !1;\n }\n return !(!t || !(\"svg\" in t));\n}\n/**\n * @copyright Copyright (c) 2022 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\nclass pr {\n _view;\n constructor(t) {\n Gt(t), this._view = t;\n }\n get id() {\n return this._view.id;\n }\n get name() {\n return this._view.name;\n }\n get caption() {\n return this._view.caption;\n }\n get emptyTitle() {\n return this._view.emptyTitle;\n }\n get emptyCaption() {\n return this._view.emptyCaption;\n }\n get getContents() {\n return this._view.getContents;\n }\n get icon() {\n return this._view.icon;\n }\n set icon(t) {\n this._view.icon = t;\n }\n get order() {\n return this._view.order;\n }\n set order(t) {\n this._view.order = t;\n }\n get params() {\n return this._view.params;\n }\n set params(t) {\n this._view.params = t;\n }\n get columns() {\n return this._view.columns;\n }\n get emptyView() {\n return this._view.emptyView;\n }\n get parent() {\n return this._view.parent;\n }\n get sticky() {\n return this._view.sticky;\n }\n get expanded() {\n return this._view.expanded;\n }\n set expanded(t) {\n this._view.expanded = t;\n }\n get defaultSortKey() {\n return this._view.defaultSortKey;\n }\n}\nconst Gt = function(e) {\n if (!e.id || typeof e.id != \"string\")\n throw new Error(\"View id is required and must be a string\");\n if (!e.name || typeof e.name != \"string\")\n throw new Error(\"View name is required and must be a string\");\n if (e.columns && e.columns.length > 0 && (!e.caption || typeof e.caption != \"string\"))\n throw new Error(\"View caption is required for top-level views and must be a string\");\n if (!e.getContents || typeof e.getContents != \"function\")\n throw new Error(\"View getContents is required and must be a function\");\n if (!e.icon || typeof e.icon != \"string\" || !Ut(e.icon))\n throw new Error(\"View icon is required and must be a valid svg string\");\n if (!(\"order\" in e) || typeof e.order != \"number\")\n throw new Error(\"View order is required and must be a number\");\n if (e.columns && e.columns.forEach((t) => {\n if (!(t instanceof Ae))\n throw new Error(\"View columns must be an array of Column. Invalid column found\");\n }), e.emptyView && typeof e.emptyView != \"function\")\n throw new Error(\"View emptyView must be a function\");\n if (e.parent && typeof e.parent != \"string\")\n throw new Error(\"View parent must be a string\");\n if (\"sticky\" in e && typeof e.sticky != \"boolean\")\n throw new Error(\"View sticky must be a boolean\");\n if (\"expanded\" in e && typeof e.expanded != \"boolean\")\n throw new Error(\"View expanded must be a boolean\");\n if (e.defaultSortKey && typeof e.defaultSortKey != \"string\")\n throw new Error(\"View defaultSortKey must be a string\");\n return !0;\n};\n/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\nconst gr = function(e) {\n return F().registerEntry(e);\n}, wr = function(e) {\n return F().unregisterEntry(e);\n}, mr = function(e) {\n return F().getEntries(e).sort((r, s) => r.order !== void 0 && s.order !== void 0 && r.order !== s.order ? r.order - s.order : r.displayName.localeCompare(s.displayName, void 0, { numeric: !0, sensitivity: \"base\" }));\n};\nexport {\n Ae as Column,\n W as DefaultType,\n _e as File,\n er as FileAction,\n L as FileType,\n ve as Folder,\n nr as Header,\n Ie as Navigation,\n Q as Node,\n J as NodeStatus,\n N as Permission,\n pr as View,\n gr as addNewFileMenuEntry,\n ar as davGetClient,\n ur as davGetDefaultPropfind,\n be as davGetFavoritesReport,\n dr as davGetRecentSearch,\n ye as davParsePermissions,\n ee as davRemoteURL,\n Te as davResultToNode,\n D as davRootPath,\n j as defaultDavNamespaces,\n Z as defaultDavProperties,\n Qt as formatFileSize,\n S as getDavNameSpaces,\n V as getDavProperties,\n lr as getFavoriteNodes,\n rr as getFileActions,\n sr as getFileListHeaders,\n fr as getNavigation,\n mr as getNewFileMenuEntries,\n Dt as parseFileSize,\n or as registerDavProperty,\n tr as registerFileAction,\n ir as registerFileListHeaders,\n wr as removeNewFileMenuEntry\n};\n","// Current version.\nexport var VERSION = '1.13.6';\n\n// Establish the root object, `window` (`self`) in the browser, `global`\n// on the server, or `this` in some virtual machines. We use `self`\n// instead of `window` for `WebWorker` support.\nexport var root = (typeof self == 'object' && self.self === self && self) ||\n (typeof global == 'object' && global.global === global && global) ||\n Function('return this')() ||\n {};\n\n// Save bytes in the minified (but not gzipped) version:\nexport var ArrayProto = Array.prototype, ObjProto = Object.prototype;\nexport var SymbolProto = typeof Symbol !== 'undefined' ? Symbol.prototype : null;\n\n// Create quick reference variables for speed access to core prototypes.\nexport var push = ArrayProto.push,\n slice = ArrayProto.slice,\n toString = ObjProto.toString,\n hasOwnProperty = ObjProto.hasOwnProperty;\n\n// Modern feature detection.\nexport var supportsArrayBuffer = typeof ArrayBuffer !== 'undefined',\n supportsDataView = typeof DataView !== 'undefined';\n\n// All **ECMAScript 5+** native function implementations that we hope to use\n// are declared here.\nexport var nativeIsArray = Array.isArray,\n nativeKeys = Object.keys,\n nativeCreate = Object.create,\n nativeIsView = supportsArrayBuffer && ArrayBuffer.isView;\n\n// Create references to these builtin functions because we override them.\nexport var _isNaN = isNaN,\n _isFinite = isFinite;\n\n// Keys in IE < 9 that won't be iterated by `for key in ...` and thus missed.\nexport var hasEnumBug = !{toString: null}.propertyIsEnumerable('toString');\nexport var nonEnumerableProps = ['valueOf', 'isPrototypeOf', 'toString',\n 'propertyIsEnumerable', 'hasOwnProperty', 'toLocaleString'];\n\n// The largest integer that can be represented exactly.\nexport var MAX_ARRAY_INDEX = Math.pow(2, 53) - 1;\n","// Some functions take a variable number of arguments, or a few expected\n// arguments at the beginning and then a variable number of values to operate\n// on. This helper accumulates all remaining arguments past the function’s\n// argument length (or an explicit `startIndex`), into an array that becomes\n// the last argument. Similar to ES6’s \"rest parameter\".\nexport default function restArguments(func, startIndex) {\n startIndex = startIndex == null ? func.length - 1 : +startIndex;\n return function() {\n var length = Math.max(arguments.length - startIndex, 0),\n rest = Array(length),\n index = 0;\n for (; index < length; index++) {\n rest[index] = arguments[index + startIndex];\n }\n switch (startIndex) {\n case 0: return func.call(this, rest);\n case 1: return func.call(this, arguments[0], rest);\n case 2: return func.call(this, arguments[0], arguments[1], rest);\n }\n var args = Array(startIndex + 1);\n for (index = 0; index < startIndex; index++) {\n args[index] = arguments[index];\n }\n args[startIndex] = rest;\n return func.apply(this, args);\n };\n}\n","// Is a given variable an object?\nexport default function isObject(obj) {\n var type = typeof obj;\n return type === 'function' || (type === 'object' && !!obj);\n}\n","// Is a given value equal to null?\nexport default function isNull(obj) {\n return obj === null;\n}\n","// Is a given variable undefined?\nexport default function isUndefined(obj) {\n return obj === void 0;\n}\n","import { toString } from './_setup.js';\n\n// Is a given value a boolean?\nexport default function isBoolean(obj) {\n return obj === true || obj === false || toString.call(obj) === '[object Boolean]';\n}\n","// Is a given value a DOM element?\nexport default function isElement(obj) {\n return !!(obj && obj.nodeType === 1);\n}\n","import { toString } from './_setup.js';\n\n// Internal function for creating a `toString`-based type tester.\nexport default function tagTester(name) {\n var tag = '[object ' + name + ']';\n return function(obj) {\n return toString.call(obj) === tag;\n };\n}\n","import tagTester from './_tagTester.js';\n\nexport default tagTester('String');\n","import tagTester from './_tagTester.js';\n\nexport default tagTester('Number');\n","import tagTester from './_tagTester.js';\n\nexport default tagTester('Date');\n","import tagTester from './_tagTester.js';\n\nexport default tagTester('RegExp');\n","import tagTester from './_tagTester.js';\n\nexport default tagTester('Error');\n","import tagTester from './_tagTester.js';\n\nexport default tagTester('Symbol');\n","import tagTester from './_tagTester.js';\n\nexport default tagTester('ArrayBuffer');\n","import tagTester from './_tagTester.js';\nimport { root } from './_setup.js';\n\nvar isFunction = tagTester('Function');\n\n// Optimize `isFunction` if appropriate. Work around some `typeof` bugs in old\n// v8, IE 11 (#1621), Safari 8 (#1929), and PhantomJS (#2236).\nvar nodelist = root.document && root.document.childNodes;\nif (typeof /./ != 'function' && typeof Int8Array != 'object' && typeof nodelist != 'function') {\n isFunction = function(obj) {\n return typeof obj == 'function' || false;\n };\n}\n\nexport default isFunction;\n","import tagTester from './_tagTester.js';\n\nexport default tagTester('Object');\n","import { supportsDataView } from './_setup.js';\nimport hasObjectTag from './_hasObjectTag.js';\n\n// In IE 10 - Edge 13, `DataView` has string tag `'[object Object]'`.\n// In IE 11, the most common among them, this problem also applies to\n// `Map`, `WeakMap` and `Set`.\nexport var hasStringTagBug = (\n supportsDataView && hasObjectTag(new DataView(new ArrayBuffer(8)))\n ),\n isIE11 = (typeof Map !== 'undefined' && hasObjectTag(new Map));\n","import tagTester from './_tagTester.js';\nimport isFunction from './isFunction.js';\nimport isArrayBuffer from './isArrayBuffer.js';\nimport { hasStringTagBug } from './_stringTagBug.js';\n\nvar isDataView = tagTester('DataView');\n\n// In IE 10 - Edge 13, we need a different heuristic\n// to determine whether an object is a `DataView`.\nfunction ie10IsDataView(obj) {\n return obj != null && isFunction(obj.getInt8) && isArrayBuffer(obj.buffer);\n}\n\nexport default (hasStringTagBug ? ie10IsDataView : isDataView);\n","import { nativeIsArray } from './_setup.js';\nimport tagTester from './_tagTester.js';\n\n// Is a given value an array?\n// Delegates to ECMA5's native `Array.isArray`.\nexport default nativeIsArray || tagTester('Array');\n","import { hasOwnProperty } from './_setup.js';\n\n// Internal function to check whether `key` is an own property name of `obj`.\nexport default function has(obj, key) {\n return obj != null && hasOwnProperty.call(obj, key);\n}\n","import tagTester from './_tagTester.js';\nimport has from './_has.js';\n\nvar isArguments = tagTester('Arguments');\n\n// Define a fallback version of the method in browsers (ahem, IE < 9), where\n// there isn't any inspectable \"Arguments\" type.\n(function() {\n if (!isArguments(arguments)) {\n isArguments = function(obj) {\n return has(obj, 'callee');\n };\n }\n}());\n\nexport default isArguments;\n","import { _isFinite } from './_setup.js';\nimport isSymbol from './isSymbol.js';\n\n// Is a given object a finite number?\nexport default function isFinite(obj) {\n return !isSymbol(obj) && _isFinite(obj) && !isNaN(parseFloat(obj));\n}\n","import { _isNaN } from './_setup.js';\nimport isNumber from './isNumber.js';\n\n// Is the given value `NaN`?\nexport default function isNaN(obj) {\n return isNumber(obj) && _isNaN(obj);\n}\n","// Predicate-generating function. Often useful outside of Underscore.\nexport default function constant(value) {\n return function() {\n return value;\n };\n}\n","import { MAX_ARRAY_INDEX } from './_setup.js';\n\n// Common internal logic for `isArrayLike` and `isBufferLike`.\nexport default function createSizePropertyCheck(getSizeProperty) {\n return function(collection) {\n var sizeProperty = getSizeProperty(collection);\n return typeof sizeProperty == 'number' && sizeProperty >= 0 && sizeProperty <= MAX_ARRAY_INDEX;\n }\n}\n","// Internal helper to generate a function to obtain property `key` from `obj`.\nexport default function shallowProperty(key) {\n return function(obj) {\n return obj == null ? void 0 : obj[key];\n };\n}\n","import shallowProperty from './_shallowProperty.js';\n\n// Internal helper to obtain the `byteLength` property of an object.\nexport default shallowProperty('byteLength');\n","import createSizePropertyCheck from './_createSizePropertyCheck.js';\nimport getByteLength from './_getByteLength.js';\n\n// Internal helper to determine whether we should spend extensive checks against\n// `ArrayBuffer` et al.\nexport default createSizePropertyCheck(getByteLength);\n","import { supportsArrayBuffer, nativeIsView, toString } from './_setup.js';\nimport isDataView from './isDataView.js';\nimport constant from './constant.js';\nimport isBufferLike from './_isBufferLike.js';\n\n// Is a given value a typed array?\nvar typedArrayPattern = /\\[object ((I|Ui)nt(8|16|32)|Float(32|64)|Uint8Clamped|Big(I|Ui)nt64)Array\\]/;\nfunction isTypedArray(obj) {\n // `ArrayBuffer.isView` is the most future-proof, so use it when available.\n // Otherwise, fall back on the above regular expression.\n return nativeIsView ? (nativeIsView(obj) && !isDataView(obj)) :\n isBufferLike(obj) && typedArrayPattern.test(toString.call(obj));\n}\n\nexport default supportsArrayBuffer ? isTypedArray : constant(false);\n","import shallowProperty from './_shallowProperty.js';\n\n// Internal helper to obtain the `length` property of an object.\nexport default shallowProperty('length');\n","import { nonEnumerableProps, ObjProto } from './_setup.js';\nimport isFunction from './isFunction.js';\nimport has from './_has.js';\n\n// Internal helper to create a simple lookup structure.\n// `collectNonEnumProps` used to depend on `_.contains`, but this led to\n// circular imports. `emulatedSet` is a one-off solution that only works for\n// arrays of strings.\nfunction emulatedSet(keys) {\n var hash = {};\n for (var l = keys.length, i = 0; i < l; ++i) hash[keys[i]] = true;\n return {\n contains: function(key) { return hash[key] === true; },\n push: function(key) {\n hash[key] = true;\n return keys.push(key);\n }\n };\n}\n\n// Internal helper. Checks `keys` for the presence of keys in IE < 9 that won't\n// be iterated by `for key in ...` and thus missed. Extends `keys` in place if\n// needed.\nexport default function collectNonEnumProps(obj, keys) {\n keys = emulatedSet(keys);\n var nonEnumIdx = nonEnumerableProps.length;\n var constructor = obj.constructor;\n var proto = (isFunction(constructor) && constructor.prototype) || ObjProto;\n\n // Constructor is a special case.\n var prop = 'constructor';\n if (has(obj, prop) && !keys.contains(prop)) keys.push(prop);\n\n while (nonEnumIdx--) {\n prop = nonEnumerableProps[nonEnumIdx];\n if (prop in obj && obj[prop] !== proto[prop] && !keys.contains(prop)) {\n keys.push(prop);\n }\n }\n}\n","import isObject from './isObject.js';\nimport { nativeKeys, hasEnumBug } from './_setup.js';\nimport has from './_has.js';\nimport collectNonEnumProps from './_collectNonEnumProps.js';\n\n// Retrieve the names of an object's own properties.\n// Delegates to **ECMAScript 5**'s native `Object.keys`.\nexport default function keys(obj) {\n if (!isObject(obj)) return [];\n if (nativeKeys) return nativeKeys(obj);\n var keys = [];\n for (var key in obj) if (has(obj, key)) keys.push(key);\n // Ahem, IE < 9.\n if (hasEnumBug) collectNonEnumProps(obj, keys);\n return keys;\n}\n","import getLength from './_getLength.js';\nimport isArray from './isArray.js';\nimport isString from './isString.js';\nimport isArguments from './isArguments.js';\nimport keys from './keys.js';\n\n// Is a given array, string, or object empty?\n// An \"empty\" object has no enumerable own-properties.\nexport default function isEmpty(obj) {\n if (obj == null) return true;\n // Skip the more expensive `toString`-based type checks if `obj` has no\n // `.length`.\n var length = getLength(obj);\n if (typeof length == 'number' && (\n isArray(obj) || isString(obj) || isArguments(obj)\n )) return length === 0;\n return getLength(keys(obj)) === 0;\n}\n","import keys from './keys.js';\n\n// Returns whether an object has a given set of `key:value` pairs.\nexport default function isMatch(object, attrs) {\n var _keys = keys(attrs), length = _keys.length;\n if (object == null) return !length;\n var obj = Object(object);\n for (var i = 0; i < length; i++) {\n var key = _keys[i];\n if (attrs[key] !== obj[key] || !(key in obj)) return false;\n }\n return true;\n}\n","import { VERSION } from './_setup.js';\n\n// If Underscore is called as a function, it returns a wrapped object that can\n// be used OO-style. This wrapper holds altered versions of all functions added\n// through `_.mixin`. Wrapped objects may be chained.\nexport default function _(obj) {\n if (obj instanceof _) return obj;\n if (!(this instanceof _)) return new _(obj);\n this._wrapped = obj;\n}\n\n_.VERSION = VERSION;\n\n// Extracts the result from a wrapped and chained object.\n_.prototype.value = function() {\n return this._wrapped;\n};\n\n// Provide unwrapping proxies for some methods used in engine operations\n// such as arithmetic and JSON stringification.\n_.prototype.valueOf = _.prototype.toJSON = _.prototype.value;\n\n_.prototype.toString = function() {\n return String(this._wrapped);\n};\n","import getByteLength from './_getByteLength.js';\n\n// Internal function to wrap or shallow-copy an ArrayBuffer,\n// typed array or DataView to a new view, reusing the buffer.\nexport default function toBufferView(bufferSource) {\n return new Uint8Array(\n bufferSource.buffer || bufferSource,\n bufferSource.byteOffset || 0,\n getByteLength(bufferSource)\n );\n}\n","import _ from './underscore.js';\nimport { toString, SymbolProto } from './_setup.js';\nimport getByteLength from './_getByteLength.js';\nimport isTypedArray from './isTypedArray.js';\nimport isFunction from './isFunction.js';\nimport { hasStringTagBug } from './_stringTagBug.js';\nimport isDataView from './isDataView.js';\nimport keys from './keys.js';\nimport has from './_has.js';\nimport toBufferView from './_toBufferView.js';\n\n// We use this string twice, so give it a name for minification.\nvar tagDataView = '[object DataView]';\n\n// Internal recursive comparison function for `_.isEqual`.\nfunction eq(a, b, aStack, bStack) {\n // Identical objects are equal. `0 === -0`, but they aren't identical.\n // See the [Harmony `egal` proposal](https://wiki.ecmascript.org/doku.php?id=harmony:egal).\n if (a === b) return a !== 0 || 1 / a === 1 / b;\n // `null` or `undefined` only equal to itself (strict comparison).\n if (a == null || b == null) return false;\n // `NaN`s are equivalent, but non-reflexive.\n if (a !== a) return b !== b;\n // Exhaust primitive checks\n var type = typeof a;\n if (type !== 'function' && type !== 'object' && typeof b != 'object') return false;\n return deepEq(a, b, aStack, bStack);\n}\n\n// Internal recursive comparison function for `_.isEqual`.\nfunction deepEq(a, b, aStack, bStack) {\n // Unwrap any wrapped objects.\n if (a instanceof _) a = a._wrapped;\n if (b instanceof _) b = b._wrapped;\n // Compare `[[Class]]` names.\n var className = toString.call(a);\n if (className !== toString.call(b)) return false;\n // Work around a bug in IE 10 - Edge 13.\n if (hasStringTagBug && className == '[object Object]' && isDataView(a)) {\n if (!isDataView(b)) return false;\n className = tagDataView;\n }\n switch (className) {\n // These types are compared by value.\n case '[object RegExp]':\n // RegExps are coerced to strings for comparison (Note: '' + /a/i === '/a/i')\n case '[object String]':\n // Primitives and their corresponding object wrappers are equivalent; thus, `\"5\"` is\n // equivalent to `new String(\"5\")`.\n return '' + a === '' + b;\n case '[object Number]':\n // `NaN`s are equivalent, but non-reflexive.\n // Object(NaN) is equivalent to NaN.\n if (+a !== +a) return +b !== +b;\n // An `egal` comparison is performed for other numeric values.\n return +a === 0 ? 1 / +a === 1 / b : +a === +b;\n case '[object Date]':\n case '[object Boolean]':\n // Coerce dates and booleans to numeric primitive values. Dates are compared by their\n // millisecond representations. Note that invalid dates with millisecond representations\n // of `NaN` are not equivalent.\n return +a === +b;\n case '[object Symbol]':\n return SymbolProto.valueOf.call(a) === SymbolProto.valueOf.call(b);\n case '[object ArrayBuffer]':\n case tagDataView:\n // Coerce to typed array so we can fall through.\n return deepEq(toBufferView(a), toBufferView(b), aStack, bStack);\n }\n\n var areArrays = className === '[object Array]';\n if (!areArrays && isTypedArray(a)) {\n var byteLength = getByteLength(a);\n if (byteLength !== getByteLength(b)) return false;\n if (a.buffer === b.buffer && a.byteOffset === b.byteOffset) return true;\n areArrays = true;\n }\n if (!areArrays) {\n if (typeof a != 'object' || typeof b != 'object') return false;\n\n // Objects with different constructors are not equivalent, but `Object`s or `Array`s\n // from different frames are.\n var aCtor = a.constructor, bCtor = b.constructor;\n if (aCtor !== bCtor && !(isFunction(aCtor) && aCtor instanceof aCtor &&\n isFunction(bCtor) && bCtor instanceof bCtor)\n && ('constructor' in a && 'constructor' in b)) {\n return false;\n }\n }\n // Assume equality for cyclic structures. The algorithm for detecting cyclic\n // structures is adapted from ES 5.1 section 15.12.3, abstract operation `JO`.\n\n // Initializing stack of traversed objects.\n // It's done here since we only need them for objects and arrays comparison.\n aStack = aStack || [];\n bStack = bStack || [];\n var length = aStack.length;\n while (length--) {\n // Linear search. Performance is inversely proportional to the number of\n // unique nested structures.\n if (aStack[length] === a) return bStack[length] === b;\n }\n\n // Add the first object to the stack of traversed objects.\n aStack.push(a);\n bStack.push(b);\n\n // Recursively compare objects and arrays.\n if (areArrays) {\n // Compare array lengths to determine if a deep comparison is necessary.\n length = a.length;\n if (length !== b.length) return false;\n // Deep compare the contents, ignoring non-numeric properties.\n while (length--) {\n if (!eq(a[length], b[length], aStack, bStack)) return false;\n }\n } else {\n // Deep compare objects.\n var _keys = keys(a), key;\n length = _keys.length;\n // Ensure that both objects contain the same number of properties before comparing deep equality.\n if (keys(b).length !== length) return false;\n while (length--) {\n // Deep compare each member\n key = _keys[length];\n if (!(has(b, key) && eq(a[key], b[key], aStack, bStack))) return false;\n }\n }\n // Remove the first object from the stack of traversed objects.\n aStack.pop();\n bStack.pop();\n return true;\n}\n\n// Perform a deep comparison to check if two objects are equal.\nexport default function isEqual(a, b) {\n return eq(a, b);\n}\n","import isObject from './isObject.js';\nimport { hasEnumBug } from './_setup.js';\nimport collectNonEnumProps from './_collectNonEnumProps.js';\n\n// Retrieve all the enumerable property names of an object.\nexport default function allKeys(obj) {\n if (!isObject(obj)) return [];\n var keys = [];\n for (var key in obj) keys.push(key);\n // Ahem, IE < 9.\n if (hasEnumBug) collectNonEnumProps(obj, keys);\n return keys;\n}\n","import getLength from './_getLength.js';\nimport isFunction from './isFunction.js';\nimport allKeys from './allKeys.js';\n\n// Since the regular `Object.prototype.toString` type tests don't work for\n// some types in IE 11, we use a fingerprinting heuristic instead, based\n// on the methods. It's not great, but it's the best we got.\n// The fingerprint method lists are defined below.\nexport function ie11fingerprint(methods) {\n var length = getLength(methods);\n return function(obj) {\n if (obj == null) return false;\n // `Map`, `WeakMap` and `Set` have no enumerable keys.\n var keys = allKeys(obj);\n if (getLength(keys)) return false;\n for (var i = 0; i < length; i++) {\n if (!isFunction(obj[methods[i]])) return false;\n }\n // If we are testing against `WeakMap`, we need to ensure that\n // `obj` doesn't have a `forEach` method in order to distinguish\n // it from a regular `Map`.\n return methods !== weakMapMethods || !isFunction(obj[forEachName]);\n };\n}\n\n// In the interest of compact minification, we write\n// each string in the fingerprints only once.\nvar forEachName = 'forEach',\n hasName = 'has',\n commonInit = ['clear', 'delete'],\n mapTail = ['get', hasName, 'set'];\n\n// `Map`, `WeakMap` and `Set` each have slightly different\n// combinations of the above sublists.\nexport var mapMethods = commonInit.concat(forEachName, mapTail),\n weakMapMethods = commonInit.concat(mapTail),\n setMethods = ['add'].concat(commonInit, forEachName, hasName);\n","import tagTester from './_tagTester.js';\nimport { isIE11 } from './_stringTagBug.js';\nimport { ie11fingerprint, mapMethods } from './_methodFingerprint.js';\n\nexport default isIE11 ? ie11fingerprint(mapMethods) : tagTester('Map');\n","import tagTester from './_tagTester.js';\nimport { isIE11 } from './_stringTagBug.js';\nimport { ie11fingerprint, weakMapMethods } from './_methodFingerprint.js';\n\nexport default isIE11 ? ie11fingerprint(weakMapMethods) : tagTester('WeakMap');\n","import tagTester from './_tagTester.js';\nimport { isIE11 } from './_stringTagBug.js';\nimport { ie11fingerprint, setMethods } from './_methodFingerprint.js';\n\nexport default isIE11 ? ie11fingerprint(setMethods) : tagTester('Set');\n","import tagTester from './_tagTester.js';\n\nexport default tagTester('WeakSet');\n","import keys from './keys.js';\n\n// Retrieve the values of an object's properties.\nexport default function values(obj) {\n var _keys = keys(obj);\n var length = _keys.length;\n var values = Array(length);\n for (var i = 0; i < length; i++) {\n values[i] = obj[_keys[i]];\n }\n return values;\n}\n","import keys from './keys.js';\n\n// Convert an object into a list of `[key, value]` pairs.\n// The opposite of `_.object` with one argument.\nexport default function pairs(obj) {\n var _keys = keys(obj);\n var length = _keys.length;\n var pairs = Array(length);\n for (var i = 0; i < length; i++) {\n pairs[i] = [_keys[i], obj[_keys[i]]];\n }\n return pairs;\n}\n","import keys from './keys.js';\n\n// Invert the keys and values of an object. The values must be serializable.\nexport default function invert(obj) {\n var result = {};\n var _keys = keys(obj);\n for (var i = 0, length = _keys.length; i < length; i++) {\n result[obj[_keys[i]]] = _keys[i];\n }\n return result;\n}\n","import isFunction from './isFunction.js';\n\n// Return a sorted list of the function names available on the object.\nexport default function functions(obj) {\n var names = [];\n for (var key in obj) {\n if (isFunction(obj[key])) names.push(key);\n }\n return names.sort();\n}\n","// An internal function for creating assigner functions.\nexport default function createAssigner(keysFunc, defaults) {\n return function(obj) {\n var length = arguments.length;\n if (defaults) obj = Object(obj);\n if (length < 2 || obj == null) return obj;\n for (var index = 1; index < length; index++) {\n var source = arguments[index],\n keys = keysFunc(source),\n l = keys.length;\n for (var i = 0; i < l; i++) {\n var key = keys[i];\n if (!defaults || obj[key] === void 0) obj[key] = source[key];\n }\n }\n return obj;\n };\n}\n","import createAssigner from './_createAssigner.js';\nimport allKeys from './allKeys.js';\n\n// Extend a given object with all the properties in passed-in object(s).\nexport default createAssigner(allKeys);\n","import createAssigner from './_createAssigner.js';\nimport keys from './keys.js';\n\n// Assigns a given object with all the own properties in the passed-in\n// object(s).\n// (https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object/assign)\nexport default createAssigner(keys);\n","import createAssigner from './_createAssigner.js';\nimport allKeys from './allKeys.js';\n\n// Fill in a given object with default properties.\nexport default createAssigner(allKeys, true);\n","import isObject from './isObject.js';\nimport { nativeCreate } from './_setup.js';\n\n// Create a naked function reference for surrogate-prototype-swapping.\nfunction ctor() {\n return function(){};\n}\n\n// An internal function for creating a new object that inherits from another.\nexport default function baseCreate(prototype) {\n if (!isObject(prototype)) return {};\n if (nativeCreate) return nativeCreate(prototype);\n var Ctor = ctor();\n Ctor.prototype = prototype;\n var result = new Ctor;\n Ctor.prototype = null;\n return result;\n}\n","import baseCreate from './_baseCreate.js';\nimport extendOwn from './extendOwn.js';\n\n// Creates an object that inherits from the given prototype object.\n// If additional properties are provided then they will be added to the\n// created object.\nexport default function create(prototype, props) {\n var result = baseCreate(prototype);\n if (props) extendOwn(result, props);\n return result;\n}\n","import isObject from './isObject.js';\nimport isArray from './isArray.js';\nimport extend from './extend.js';\n\n// Create a (shallow-cloned) duplicate of an object.\nexport default function clone(obj) {\n if (!isObject(obj)) return obj;\n return isArray(obj) ? obj.slice() : extend({}, obj);\n}\n","// Invokes `interceptor` with the `obj` and then returns `obj`.\n// The primary purpose of this method is to \"tap into\" a method chain, in\n// order to perform operations on intermediate results within the chain.\nexport default function tap(obj, interceptor) {\n interceptor(obj);\n return obj;\n}\n","import _ from './underscore.js';\nimport isArray from './isArray.js';\n\n// Normalize a (deep) property `path` to array.\n// Like `_.iteratee`, this function can be customized.\nexport default function toPath(path) {\n return isArray(path) ? path : [path];\n}\n_.toPath = toPath;\n","import _ from './underscore.js';\nimport './toPath.js';\n\n// Internal wrapper for `_.toPath` to enable minification.\n// Similar to `cb` for `_.iteratee`.\nexport default function toPath(path) {\n return _.toPath(path);\n}\n","// Internal function to obtain a nested property in `obj` along `path`.\nexport default function deepGet(obj, path) {\n var length = path.length;\n for (var i = 0; i < length; i++) {\n if (obj == null) return void 0;\n obj = obj[path[i]];\n }\n return length ? obj : void 0;\n}\n","import toPath from './_toPath.js';\nimport deepGet from './_deepGet.js';\nimport isUndefined from './isUndefined.js';\n\n// Get the value of the (deep) property on `path` from `object`.\n// If any property in `path` does not exist or if the value is\n// `undefined`, return `defaultValue` instead.\n// The `path` is normalized through `_.toPath`.\nexport default function get(object, path, defaultValue) {\n var value = deepGet(object, toPath(path));\n return isUndefined(value) ? defaultValue : value;\n}\n","import _has from './_has.js';\nimport toPath from './_toPath.js';\n\n// Shortcut function for checking if an object has a given property directly on\n// itself (in other words, not on a prototype). Unlike the internal `has`\n// function, this public version can also traverse nested properties.\nexport default function has(obj, path) {\n path = toPath(path);\n var length = path.length;\n for (var i = 0; i < length; i++) {\n var key = path[i];\n if (!_has(obj, key)) return false;\n obj = obj[key];\n }\n return !!length;\n}\n","// Keep the identity function around for default iteratees.\nexport default function identity(value) {\n return value;\n}\n","import extendOwn from './extendOwn.js';\nimport isMatch from './isMatch.js';\n\n// Returns a predicate for checking whether an object has a given set of\n// `key:value` pairs.\nexport default function matcher(attrs) {\n attrs = extendOwn({}, attrs);\n return function(obj) {\n return isMatch(obj, attrs);\n };\n}\n","import deepGet from './_deepGet.js';\nimport toPath from './_toPath.js';\n\n// Creates a function that, when passed an object, will traverse that object’s\n// properties down the given `path`, specified as an array of keys or indices.\nexport default function property(path) {\n path = toPath(path);\n return function(obj) {\n return deepGet(obj, path);\n };\n}\n","// Internal function that returns an efficient (for current engines) version\n// of the passed-in callback, to be repeatedly applied in other Underscore\n// functions.\nexport default function optimizeCb(func, context, argCount) {\n if (context === void 0) return func;\n switch (argCount == null ? 3 : argCount) {\n case 1: return function(value) {\n return func.call(context, value);\n };\n // The 2-argument case is omitted because we’re not using it.\n case 3: return function(value, index, collection) {\n return func.call(context, value, index, collection);\n };\n case 4: return function(accumulator, value, index, collection) {\n return func.call(context, accumulator, value, index, collection);\n };\n }\n return function() {\n return func.apply(context, arguments);\n };\n}\n","import identity from './identity.js';\nimport isFunction from './isFunction.js';\nimport isObject from './isObject.js';\nimport isArray from './isArray.js';\nimport matcher from './matcher.js';\nimport property from './property.js';\nimport optimizeCb from './_optimizeCb.js';\n\n// An internal function to generate callbacks that can be applied to each\n// element in a collection, returning the desired result — either `_.identity`,\n// an arbitrary callback, a property matcher, or a property accessor.\nexport default function baseIteratee(value, context, argCount) {\n if (value == null) return identity;\n if (isFunction(value)) return optimizeCb(value, context, argCount);\n if (isObject(value) && !isArray(value)) return matcher(value);\n return property(value);\n}\n","import _ from './underscore.js';\nimport baseIteratee from './_baseIteratee.js';\n\n// External wrapper for our callback generator. Users may customize\n// `_.iteratee` if they want additional predicate/iteratee shorthand styles.\n// This abstraction hides the internal-only `argCount` argument.\nexport default function iteratee(value, context) {\n return baseIteratee(value, context, Infinity);\n}\n_.iteratee = iteratee;\n","import _ from './underscore.js';\nimport baseIteratee from './_baseIteratee.js';\nimport iteratee from './iteratee.js';\n\n// The function we call internally to generate a callback. It invokes\n// `_.iteratee` if overridden, otherwise `baseIteratee`.\nexport default function cb(value, context, argCount) {\n if (_.iteratee !== iteratee) return _.iteratee(value, context);\n return baseIteratee(value, context, argCount);\n}\n","import cb from './_cb.js';\nimport keys from './keys.js';\n\n// Returns the results of applying the `iteratee` to each element of `obj`.\n// In contrast to `_.map` it returns an object.\nexport default function mapObject(obj, iteratee, context) {\n iteratee = cb(iteratee, context);\n var _keys = keys(obj),\n length = _keys.length,\n results = {};\n for (var index = 0; index < length; index++) {\n var currentKey = _keys[index];\n results[currentKey] = iteratee(obj[currentKey], currentKey, obj);\n }\n return results;\n}\n","// Predicate-generating function. Often useful outside of Underscore.\nexport default function noop(){}\n","import noop from './noop.js';\nimport get from './get.js';\n\n// Generates a function for a given object that returns a given property.\nexport default function propertyOf(obj) {\n if (obj == null) return noop;\n return function(path) {\n return get(obj, path);\n };\n}\n","import optimizeCb from './_optimizeCb.js';\n\n// Run a function **n** times.\nexport default function times(n, iteratee, context) {\n var accum = Array(Math.max(0, n));\n iteratee = optimizeCb(iteratee, context, 1);\n for (var i = 0; i < n; i++) accum[i] = iteratee(i);\n return accum;\n}\n","// Return a random integer between `min` and `max` (inclusive).\nexport default function random(min, max) {\n if (max == null) {\n max = min;\n min = 0;\n }\n return min + Math.floor(Math.random() * (max - min + 1));\n}\n","// A (possibly faster) way to get the current timestamp as an integer.\nexport default Date.now || function() {\n return new Date().getTime();\n};\n","import keys from './keys.js';\n\n// Internal helper to generate functions for escaping and unescaping strings\n// to/from HTML interpolation.\nexport default function createEscaper(map) {\n var escaper = function(match) {\n return map[match];\n };\n // Regexes for identifying a key that needs to be escaped.\n var source = '(?:' + keys(map).join('|') + ')';\n var testRegexp = RegExp(source);\n var replaceRegexp = RegExp(source, 'g');\n return function(string) {\n string = string == null ? '' : '' + string;\n return testRegexp.test(string) ? string.replace(replaceRegexp, escaper) : string;\n };\n}\n","// Internal list of HTML entities for escaping.\nexport default {\n '&': '&',\n '<': '<',\n '>': '>',\n '\"': '"',\n \"'\": ''',\n '`': '`'\n};\n","import createEscaper from './_createEscaper.js';\nimport escapeMap from './_escapeMap.js';\n\n// Function for escaping strings to HTML interpolation.\nexport default createEscaper(escapeMap);\n","import createEscaper from './_createEscaper.js';\nimport unescapeMap from './_unescapeMap.js';\n\n// Function for unescaping strings from HTML interpolation.\nexport default createEscaper(unescapeMap);\n","import invert from './invert.js';\nimport escapeMap from './_escapeMap.js';\n\n// Internal list of HTML entities for unescaping.\nexport default invert(escapeMap);\n","import _ from './underscore.js';\n\n// By default, Underscore uses ERB-style template delimiters. Change the\n// following template settings to use alternative delimiters.\nexport default _.templateSettings = {\n evaluate: /<%([\\s\\S]+?)%>/g,\n interpolate: /<%=([\\s\\S]+?)%>/g,\n escape: /<%-([\\s\\S]+?)%>/g\n};\n","import defaults from './defaults.js';\nimport _ from './underscore.js';\nimport './templateSettings.js';\n\n// When customizing `_.templateSettings`, if you don't want to define an\n// interpolation, evaluation or escaping regex, we need one that is\n// guaranteed not to match.\nvar noMatch = /(.)^/;\n\n// Certain characters need to be escaped so that they can be put into a\n// string literal.\nvar escapes = {\n \"'\": \"'\",\n '\\\\': '\\\\',\n '\\r': 'r',\n '\\n': 'n',\n '\\u2028': 'u2028',\n '\\u2029': 'u2029'\n};\n\nvar escapeRegExp = /\\\\|'|\\r|\\n|\\u2028|\\u2029/g;\n\nfunction escapeChar(match) {\n return '\\\\' + escapes[match];\n}\n\n// In order to prevent third-party code injection through\n// `_.templateSettings.variable`, we test it against the following regular\n// expression. It is intentionally a bit more liberal than just matching valid\n// identifiers, but still prevents possible loopholes through defaults or\n// destructuring assignment.\nvar bareIdentifier = /^\\s*(\\w|\\$)+\\s*$/;\n\n// JavaScript micro-templating, similar to John Resig's implementation.\n// Underscore templating handles arbitrary delimiters, preserves whitespace,\n// and correctly escapes quotes within interpolated code.\n// NB: `oldSettings` only exists for backwards compatibility.\nexport default function template(text, settings, oldSettings) {\n if (!settings && oldSettings) settings = oldSettings;\n settings = defaults({}, settings, _.templateSettings);\n\n // Combine delimiters into one regular expression via alternation.\n var matcher = RegExp([\n (settings.escape || noMatch).source,\n (settings.interpolate || noMatch).source,\n (settings.evaluate || noMatch).source\n ].join('|') + '|$', 'g');\n\n // Compile the template source, escaping string literals appropriately.\n var index = 0;\n var source = \"__p+='\";\n text.replace(matcher, function(match, escape, interpolate, evaluate, offset) {\n source += text.slice(index, offset).replace(escapeRegExp, escapeChar);\n index = offset + match.length;\n\n if (escape) {\n source += \"'+\\n((__t=(\" + escape + \"))==null?'':_.escape(__t))+\\n'\";\n } else if (interpolate) {\n source += \"'+\\n((__t=(\" + interpolate + \"))==null?'':__t)+\\n'\";\n } else if (evaluate) {\n source += \"';\\n\" + evaluate + \"\\n__p+='\";\n }\n\n // Adobe VMs need the match returned to produce the correct offset.\n return match;\n });\n source += \"';\\n\";\n\n var argument = settings.variable;\n if (argument) {\n // Insure against third-party code injection. (CVE-2021-23358)\n if (!bareIdentifier.test(argument)) throw new Error(\n 'variable is not a bare identifier: ' + argument\n );\n } else {\n // If a variable is not specified, place data values in local scope.\n source = 'with(obj||{}){\\n' + source + '}\\n';\n argument = 'obj';\n }\n\n source = \"var __t,__p='',__j=Array.prototype.join,\" +\n \"print=function(){__p+=__j.call(arguments,'');};\\n\" +\n source + 'return __p;\\n';\n\n var render;\n try {\n render = new Function(argument, '_', source);\n } catch (e) {\n e.source = source;\n throw e;\n }\n\n var template = function(data) {\n return render.call(this, data, _);\n };\n\n // Provide the compiled source as a convenience for precompilation.\n template.source = 'function(' + argument + '){\\n' + source + '}';\n\n return template;\n}\n","import isFunction from './isFunction.js';\nimport toPath from './_toPath.js';\n\n// Traverses the children of `obj` along `path`. If a child is a function, it\n// is invoked with its parent as context. Returns the value of the final\n// child, or `fallback` if any child is undefined.\nexport default function result(obj, path, fallback) {\n path = toPath(path);\n var length = path.length;\n if (!length) {\n return isFunction(fallback) ? fallback.call(obj) : fallback;\n }\n for (var i = 0; i < length; i++) {\n var prop = obj == null ? void 0 : obj[path[i]];\n if (prop === void 0) {\n prop = fallback;\n i = length; // Ensure we don't continue iterating.\n }\n obj = isFunction(prop) ? prop.call(obj) : prop;\n }\n return obj;\n}\n","// Generate a unique integer id (unique within the entire client session).\n// Useful for temporary DOM ids.\nvar idCounter = 0;\nexport default function uniqueId(prefix) {\n var id = ++idCounter + '';\n return prefix ? prefix + id : id;\n}\n","import _ from './underscore.js';\n\n// Start chaining a wrapped Underscore object.\nexport default function chain(obj) {\n var instance = _(obj);\n instance._chain = true;\n return instance;\n}\n","import baseCreate from './_baseCreate.js';\nimport isObject from './isObject.js';\n\n// Internal function to execute `sourceFunc` bound to `context` with optional\n// `args`. Determines whether to execute a function as a constructor or as a\n// normal function.\nexport default function executeBound(sourceFunc, boundFunc, context, callingContext, args) {\n if (!(callingContext instanceof boundFunc)) return sourceFunc.apply(context, args);\n var self = baseCreate(sourceFunc.prototype);\n var result = sourceFunc.apply(self, args);\n if (isObject(result)) return result;\n return self;\n}\n","import restArguments from './restArguments.js';\nimport executeBound from './_executeBound.js';\nimport _ from './underscore.js';\n\n// Partially apply a function by creating a version that has had some of its\n// arguments pre-filled, without changing its dynamic `this` context. `_` acts\n// as a placeholder by default, allowing any combination of arguments to be\n// pre-filled. Set `_.partial.placeholder` for a custom placeholder argument.\nvar partial = restArguments(function(func, boundArgs) {\n var placeholder = partial.placeholder;\n var bound = function() {\n var position = 0, length = boundArgs.length;\n var args = Array(length);\n for (var i = 0; i < length; i++) {\n args[i] = boundArgs[i] === placeholder ? arguments[position++] : boundArgs[i];\n }\n while (position < arguments.length) args.push(arguments[position++]);\n return executeBound(func, bound, this, this, args);\n };\n return bound;\n});\n\npartial.placeholder = _;\nexport default partial;\n","import restArguments from './restArguments.js';\nimport isFunction from './isFunction.js';\nimport executeBound from './_executeBound.js';\n\n// Create a function bound to a given object (assigning `this`, and arguments,\n// optionally).\nexport default restArguments(function(func, context, args) {\n if (!isFunction(func)) throw new TypeError('Bind must be called on a function');\n var bound = restArguments(function(callArgs) {\n return executeBound(func, bound, context, this, args.concat(callArgs));\n });\n return bound;\n});\n","import createSizePropertyCheck from './_createSizePropertyCheck.js';\nimport getLength from './_getLength.js';\n\n// Internal helper for collection methods to determine whether a collection\n// should be iterated as an array or as an object.\n// Related: https://people.mozilla.org/~jorendorff/es6-draft.html#sec-tolength\n// Avoids a very nasty iOS 8 JIT bug on ARM-64. #2094\nexport default createSizePropertyCheck(getLength);\n","import getLength from './_getLength.js';\nimport isArrayLike from './_isArrayLike.js';\nimport isArray from './isArray.js';\nimport isArguments from './isArguments.js';\n\n// Internal implementation of a recursive `flatten` function.\nexport default function flatten(input, depth, strict, output) {\n output = output || [];\n if (!depth && depth !== 0) {\n depth = Infinity;\n } else if (depth <= 0) {\n return output.concat(input);\n }\n var idx = output.length;\n for (var i = 0, length = getLength(input); i < length; i++) {\n var value = input[i];\n if (isArrayLike(value) && (isArray(value) || isArguments(value))) {\n // Flatten current level of array or arguments object.\n if (depth > 1) {\n flatten(value, depth - 1, strict, output);\n idx = output.length;\n } else {\n var j = 0, len = value.length;\n while (j < len) output[idx++] = value[j++];\n }\n } else if (!strict) {\n output[idx++] = value;\n }\n }\n return output;\n}\n","import restArguments from './restArguments.js';\nimport flatten from './_flatten.js';\nimport bind from './bind.js';\n\n// Bind a number of an object's methods to that object. Remaining arguments\n// are the method names to be bound. Useful for ensuring that all callbacks\n// defined on an object belong to it.\nexport default restArguments(function(obj, keys) {\n keys = flatten(keys, false, false);\n var index = keys.length;\n if (index < 1) throw new Error('bindAll must be passed function names');\n while (index--) {\n var key = keys[index];\n obj[key] = bind(obj[key], obj);\n }\n return obj;\n});\n","import has from './_has.js';\n\n// Memoize an expensive function by storing its results.\nexport default function memoize(func, hasher) {\n var memoize = function(key) {\n var cache = memoize.cache;\n var address = '' + (hasher ? hasher.apply(this, arguments) : key);\n if (!has(cache, address)) cache[address] = func.apply(this, arguments);\n return cache[address];\n };\n memoize.cache = {};\n return memoize;\n}\n","import restArguments from './restArguments.js';\n\n// Delays a function for the given number of milliseconds, and then calls\n// it with the arguments supplied.\nexport default restArguments(function(func, wait, args) {\n return setTimeout(function() {\n return func.apply(null, args);\n }, wait);\n});\n","import partial from './partial.js';\nimport delay from './delay.js';\nimport _ from './underscore.js';\n\n// Defers a function, scheduling it to run after the current call stack has\n// cleared.\nexport default partial(delay, _, 1);\n","import now from './now.js';\n\n// Returns a function, that, when invoked, will only be triggered at most once\n// during a given window of time. Normally, the throttled function will run\n// as much as it can, without ever going more than once per `wait` duration;\n// but if you'd like to disable the execution on the leading edge, pass\n// `{leading: false}`. To disable execution on the trailing edge, ditto.\nexport default function throttle(func, wait, options) {\n var timeout, context, args, result;\n var previous = 0;\n if (!options) options = {};\n\n var later = function() {\n previous = options.leading === false ? 0 : now();\n timeout = null;\n result = func.apply(context, args);\n if (!timeout) context = args = null;\n };\n\n var throttled = function() {\n var _now = now();\n if (!previous && options.leading === false) previous = _now;\n var remaining = wait - (_now - previous);\n context = this;\n args = arguments;\n if (remaining <= 0 || remaining > wait) {\n if (timeout) {\n clearTimeout(timeout);\n timeout = null;\n }\n previous = _now;\n result = func.apply(context, args);\n if (!timeout) context = args = null;\n } else if (!timeout && options.trailing !== false) {\n timeout = setTimeout(later, remaining);\n }\n return result;\n };\n\n throttled.cancel = function() {\n clearTimeout(timeout);\n previous = 0;\n timeout = context = args = null;\n };\n\n return throttled;\n}\n","import restArguments from './restArguments.js';\nimport now from './now.js';\n\n// When a sequence of calls of the returned function ends, the argument\n// function is triggered. The end of a sequence is defined by the `wait`\n// parameter. If `immediate` is passed, the argument function will be\n// triggered at the beginning of the sequence instead of at the end.\nexport default function debounce(func, wait, immediate) {\n var timeout, previous, args, result, context;\n\n var later = function() {\n var passed = now() - previous;\n if (wait > passed) {\n timeout = setTimeout(later, wait - passed);\n } else {\n timeout = null;\n if (!immediate) result = func.apply(context, args);\n // This check is needed because `func` can recursively invoke `debounced`.\n if (!timeout) args = context = null;\n }\n };\n\n var debounced = restArguments(function(_args) {\n context = this;\n args = _args;\n previous = now();\n if (!timeout) {\n timeout = setTimeout(later, wait);\n if (immediate) result = func.apply(context, args);\n }\n return result;\n });\n\n debounced.cancel = function() {\n clearTimeout(timeout);\n timeout = args = context = null;\n };\n\n return debounced;\n}\n","import partial from './partial.js';\n\n// Returns the first function passed as an argument to the second,\n// allowing you to adjust arguments, run code before and after, and\n// conditionally execute the original function.\nexport default function wrap(func, wrapper) {\n return partial(wrapper, func);\n}\n","// Returns a negated version of the passed-in predicate.\nexport default function negate(predicate) {\n return function() {\n return !predicate.apply(this, arguments);\n };\n}\n","// Returns a function that is the composition of a list of functions, each\n// consuming the return value of the function that follows.\nexport default function compose() {\n var args = arguments;\n var start = args.length - 1;\n return function() {\n var i = start;\n var result = args[start].apply(this, arguments);\n while (i--) result = args[i].call(this, result);\n return result;\n };\n}\n","// Returns a function that will only be executed on and after the Nth call.\nexport default function after(times, func) {\n return function() {\n if (--times < 1) {\n return func.apply(this, arguments);\n }\n };\n}\n","// Returns a function that will only be executed up to (but not including) the\n// Nth call.\nexport default function before(times, func) {\n var memo;\n return function() {\n if (--times > 0) {\n memo = func.apply(this, arguments);\n }\n if (times <= 1) func = null;\n return memo;\n };\n}\n","import partial from './partial.js';\nimport before from './before.js';\n\n// Returns a function that will be executed at most one time, no matter how\n// often you call it. Useful for lazy initialization.\nexport default partial(before, 2);\n","import cb from './_cb.js';\nimport keys from './keys.js';\n\n// Returns the first key on an object that passes a truth test.\nexport default function findKey(obj, predicate, context) {\n predicate = cb(predicate, context);\n var _keys = keys(obj), key;\n for (var i = 0, length = _keys.length; i < length; i++) {\n key = _keys[i];\n if (predicate(obj[key], key, obj)) return key;\n }\n}\n","import cb from './_cb.js';\nimport getLength from './_getLength.js';\n\n// Internal function to generate `_.findIndex` and `_.findLastIndex`.\nexport default function createPredicateIndexFinder(dir) {\n return function(array, predicate, context) {\n predicate = cb(predicate, context);\n var length = getLength(array);\n var index = dir > 0 ? 0 : length - 1;\n for (; index >= 0 && index < length; index += dir) {\n if (predicate(array[index], index, array)) return index;\n }\n return -1;\n };\n}\n","import createPredicateIndexFinder from './_createPredicateIndexFinder.js';\n\n// Returns the first index on an array-like that passes a truth test.\nexport default createPredicateIndexFinder(1);\n","import createPredicateIndexFinder from './_createPredicateIndexFinder.js';\n\n// Returns the last index on an array-like that passes a truth test.\nexport default createPredicateIndexFinder(-1);\n","import cb from './_cb.js';\nimport getLength from './_getLength.js';\n\n// Use a comparator function to figure out the smallest index at which\n// an object should be inserted so as to maintain order. Uses binary search.\nexport default function sortedIndex(array, obj, iteratee, context) {\n iteratee = cb(iteratee, context, 1);\n var value = iteratee(obj);\n var low = 0, high = getLength(array);\n while (low < high) {\n var mid = Math.floor((low + high) / 2);\n if (iteratee(array[mid]) < value) low = mid + 1; else high = mid;\n }\n return low;\n}\n","import getLength from './_getLength.js';\nimport { slice } from './_setup.js';\nimport isNaN from './isNaN.js';\n\n// Internal function to generate the `_.indexOf` and `_.lastIndexOf` functions.\nexport default function createIndexFinder(dir, predicateFind, sortedIndex) {\n return function(array, item, idx) {\n var i = 0, length = getLength(array);\n if (typeof idx == 'number') {\n if (dir > 0) {\n i = idx >= 0 ? idx : Math.max(idx + length, i);\n } else {\n length = idx >= 0 ? Math.min(idx + 1, length) : idx + length + 1;\n }\n } else if (sortedIndex && idx && length) {\n idx = sortedIndex(array, item);\n return array[idx] === item ? idx : -1;\n }\n if (item !== item) {\n idx = predicateFind(slice.call(array, i, length), isNaN);\n return idx >= 0 ? idx + i : -1;\n }\n for (idx = dir > 0 ? i : length - 1; idx >= 0 && idx < length; idx += dir) {\n if (array[idx] === item) return idx;\n }\n return -1;\n };\n}\n","import sortedIndex from './sortedIndex.js';\nimport findIndex from './findIndex.js';\nimport createIndexFinder from './_createIndexFinder.js';\n\n// Return the position of the first occurrence of an item in an array,\n// or -1 if the item is not included in the array.\n// If the array is large and already in sort order, pass `true`\n// for **isSorted** to use binary search.\nexport default createIndexFinder(1, findIndex, sortedIndex);\n","import findLastIndex from './findLastIndex.js';\nimport createIndexFinder from './_createIndexFinder.js';\n\n// Return the position of the last occurrence of an item in an array,\n// or -1 if the item is not included in the array.\nexport default createIndexFinder(-1, findLastIndex);\n","import isArrayLike from './_isArrayLike.js';\nimport findIndex from './findIndex.js';\nimport findKey from './findKey.js';\n\n// Return the first value which passes a truth test.\nexport default function find(obj, predicate, context) {\n var keyFinder = isArrayLike(obj) ? findIndex : findKey;\n var key = keyFinder(obj, predicate, context);\n if (key !== void 0 && key !== -1) return obj[key];\n}\n","import find from './find.js';\nimport matcher from './matcher.js';\n\n// Convenience version of a common use case of `_.find`: getting the first\n// object containing specific `key:value` pairs.\nexport default function findWhere(obj, attrs) {\n return find(obj, matcher(attrs));\n}\n","import optimizeCb from './_optimizeCb.js';\nimport isArrayLike from './_isArrayLike.js';\nimport keys from './keys.js';\n\n// The cornerstone for collection functions, an `each`\n// implementation, aka `forEach`.\n// Handles raw objects in addition to array-likes. Treats all\n// sparse array-likes as if they were dense.\nexport default function each(obj, iteratee, context) {\n iteratee = optimizeCb(iteratee, context);\n var i, length;\n if (isArrayLike(obj)) {\n for (i = 0, length = obj.length; i < length; i++) {\n iteratee(obj[i], i, obj);\n }\n } else {\n var _keys = keys(obj);\n for (i = 0, length = _keys.length; i < length; i++) {\n iteratee(obj[_keys[i]], _keys[i], obj);\n }\n }\n return obj;\n}\n","import cb from './_cb.js';\nimport isArrayLike from './_isArrayLike.js';\nimport keys from './keys.js';\n\n// Return the results of applying the iteratee to each element.\nexport default function map(obj, iteratee, context) {\n iteratee = cb(iteratee, context);\n var _keys = !isArrayLike(obj) && keys(obj),\n length = (_keys || obj).length,\n results = Array(length);\n for (var index = 0; index < length; index++) {\n var currentKey = _keys ? _keys[index] : index;\n results[index] = iteratee(obj[currentKey], currentKey, obj);\n }\n return results;\n}\n","import isArrayLike from './_isArrayLike.js';\nimport keys from './keys.js';\nimport optimizeCb from './_optimizeCb.js';\n\n// Internal helper to create a reducing function, iterating left or right.\nexport default function createReduce(dir) {\n // Wrap code that reassigns argument variables in a separate function than\n // the one that accesses `arguments.length` to avoid a perf hit. (#1991)\n var reducer = function(obj, iteratee, memo, initial) {\n var _keys = !isArrayLike(obj) && keys(obj),\n length = (_keys || obj).length,\n index = dir > 0 ? 0 : length - 1;\n if (!initial) {\n memo = obj[_keys ? _keys[index] : index];\n index += dir;\n }\n for (; index >= 0 && index < length; index += dir) {\n var currentKey = _keys ? _keys[index] : index;\n memo = iteratee(memo, obj[currentKey], currentKey, obj);\n }\n return memo;\n };\n\n return function(obj, iteratee, memo, context) {\n var initial = arguments.length >= 3;\n return reducer(obj, optimizeCb(iteratee, context, 4), memo, initial);\n };\n}\n","import createReduce from './_createReduce.js';\n\n// **Reduce** builds up a single result from a list of values, aka `inject`,\n// or `foldl`.\nexport default createReduce(1);\n","import createReduce from './_createReduce.js';\n\n// The right-associative version of reduce, also known as `foldr`.\nexport default createReduce(-1);\n","import cb from './_cb.js';\nimport each from './each.js';\n\n// Return all the elements that pass a truth test.\nexport default function filter(obj, predicate, context) {\n var results = [];\n predicate = cb(predicate, context);\n each(obj, function(value, index, list) {\n if (predicate(value, index, list)) results.push(value);\n });\n return results;\n}\n","import filter from './filter.js';\nimport negate from './negate.js';\nimport cb from './_cb.js';\n\n// Return all the elements for which a truth test fails.\nexport default function reject(obj, predicate, context) {\n return filter(obj, negate(cb(predicate)), context);\n}\n","import cb from './_cb.js';\nimport isArrayLike from './_isArrayLike.js';\nimport keys from './keys.js';\n\n// Determine whether all of the elements pass a truth test.\nexport default function every(obj, predicate, context) {\n predicate = cb(predicate, context);\n var _keys = !isArrayLike(obj) && keys(obj),\n length = (_keys || obj).length;\n for (var index = 0; index < length; index++) {\n var currentKey = _keys ? _keys[index] : index;\n if (!predicate(obj[currentKey], currentKey, obj)) return false;\n }\n return true;\n}\n","import cb from './_cb.js';\nimport isArrayLike from './_isArrayLike.js';\nimport keys from './keys.js';\n\n// Determine if at least one element in the object passes a truth test.\nexport default function some(obj, predicate, context) {\n predicate = cb(predicate, context);\n var _keys = !isArrayLike(obj) && keys(obj),\n length = (_keys || obj).length;\n for (var index = 0; index < length; index++) {\n var currentKey = _keys ? _keys[index] : index;\n if (predicate(obj[currentKey], currentKey, obj)) return true;\n }\n return false;\n}\n","import isArrayLike from './_isArrayLike.js';\nimport values from './values.js';\nimport indexOf from './indexOf.js';\n\n// Determine if the array or object contains a given item (using `===`).\nexport default function contains(obj, item, fromIndex, guard) {\n if (!isArrayLike(obj)) obj = values(obj);\n if (typeof fromIndex != 'number' || guard) fromIndex = 0;\n return indexOf(obj, item, fromIndex) >= 0;\n}\n","import restArguments from './restArguments.js';\nimport isFunction from './isFunction.js';\nimport map from './map.js';\nimport deepGet from './_deepGet.js';\nimport toPath from './_toPath.js';\n\n// Invoke a method (with arguments) on every item in a collection.\nexport default restArguments(function(obj, path, args) {\n var contextPath, func;\n if (isFunction(path)) {\n func = path;\n } else {\n path = toPath(path);\n contextPath = path.slice(0, -1);\n path = path[path.length - 1];\n }\n return map(obj, function(context) {\n var method = func;\n if (!method) {\n if (contextPath && contextPath.length) {\n context = deepGet(context, contextPath);\n }\n if (context == null) return void 0;\n method = context[path];\n }\n return method == null ? method : method.apply(context, args);\n });\n});\n","import map from './map.js';\nimport property from './property.js';\n\n// Convenience version of a common use case of `_.map`: fetching a property.\nexport default function pluck(obj, key) {\n return map(obj, property(key));\n}\n","import filter from './filter.js';\nimport matcher from './matcher.js';\n\n// Convenience version of a common use case of `_.filter`: selecting only\n// objects containing specific `key:value` pairs.\nexport default function where(obj, attrs) {\n return filter(obj, matcher(attrs));\n}\n","import isArrayLike from './_isArrayLike.js';\nimport values from './values.js';\nimport cb from './_cb.js';\nimport each from './each.js';\n\n// Return the maximum element (or element-based computation).\nexport default function max(obj, iteratee, context) {\n var result = -Infinity, lastComputed = -Infinity,\n value, computed;\n if (iteratee == null || (typeof iteratee == 'number' && typeof obj[0] != 'object' && obj != null)) {\n obj = isArrayLike(obj) ? obj : values(obj);\n for (var i = 0, length = obj.length; i < length; i++) {\n value = obj[i];\n if (value != null && value > result) {\n result = value;\n }\n }\n } else {\n iteratee = cb(iteratee, context);\n each(obj, function(v, index, list) {\n computed = iteratee(v, index, list);\n if (computed > lastComputed || (computed === -Infinity && result === -Infinity)) {\n result = v;\n lastComputed = computed;\n }\n });\n }\n return result;\n}\n","import isArrayLike from './_isArrayLike.js';\nimport values from './values.js';\nimport cb from './_cb.js';\nimport each from './each.js';\n\n// Return the minimum element (or element-based computation).\nexport default function min(obj, iteratee, context) {\n var result = Infinity, lastComputed = Infinity,\n value, computed;\n if (iteratee == null || (typeof iteratee == 'number' && typeof obj[0] != 'object' && obj != null)) {\n obj = isArrayLike(obj) ? obj : values(obj);\n for (var i = 0, length = obj.length; i < length; i++) {\n value = obj[i];\n if (value != null && value < result) {\n result = value;\n }\n }\n } else {\n iteratee = cb(iteratee, context);\n each(obj, function(v, index, list) {\n computed = iteratee(v, index, list);\n if (computed < lastComputed || (computed === Infinity && result === Infinity)) {\n result = v;\n lastComputed = computed;\n }\n });\n }\n return result;\n}\n","import isArray from './isArray.js';\nimport { slice } from './_setup.js';\nimport isString from './isString.js';\nimport isArrayLike from './_isArrayLike.js';\nimport map from './map.js';\nimport identity from './identity.js';\nimport values from './values.js';\n\n// Safely create a real, live array from anything iterable.\nvar reStrSymbol = /[^\\ud800-\\udfff]|[\\ud800-\\udbff][\\udc00-\\udfff]|[\\ud800-\\udfff]/g;\nexport default function toArray(obj) {\n if (!obj) return [];\n if (isArray(obj)) return slice.call(obj);\n if (isString(obj)) {\n // Keep surrogate pair characters together.\n return obj.match(reStrSymbol);\n }\n if (isArrayLike(obj)) return map(obj, identity);\n return values(obj);\n}\n","import isArrayLike from './_isArrayLike.js';\nimport values from './values.js';\nimport getLength from './_getLength.js';\nimport random from './random.js';\nimport toArray from './toArray.js';\n\n// Sample **n** random values from a collection using the modern version of the\n// [Fisher-Yates shuffle](https://en.wikipedia.org/wiki/Fisher–Yates_shuffle).\n// If **n** is not specified, returns a single random element.\n// The internal `guard` argument allows it to work with `_.map`.\nexport default function sample(obj, n, guard) {\n if (n == null || guard) {\n if (!isArrayLike(obj)) obj = values(obj);\n return obj[random(obj.length - 1)];\n }\n var sample = toArray(obj);\n var length = getLength(sample);\n n = Math.max(Math.min(n, length), 0);\n var last = length - 1;\n for (var index = 0; index < n; index++) {\n var rand = random(index, last);\n var temp = sample[index];\n sample[index] = sample[rand];\n sample[rand] = temp;\n }\n return sample.slice(0, n);\n}\n","import sample from './sample.js';\n\n// Shuffle a collection.\nexport default function shuffle(obj) {\n return sample(obj, Infinity);\n}\n","import cb from './_cb.js';\nimport pluck from './pluck.js';\nimport map from './map.js';\n\n// Sort the object's values by a criterion produced by an iteratee.\nexport default function sortBy(obj, iteratee, context) {\n var index = 0;\n iteratee = cb(iteratee, context);\n return pluck(map(obj, function(value, key, list) {\n return {\n value: value,\n index: index++,\n criteria: iteratee(value, key, list)\n };\n }).sort(function(left, right) {\n var a = left.criteria;\n var b = right.criteria;\n if (a !== b) {\n if (a > b || a === void 0) return 1;\n if (a < b || b === void 0) return -1;\n }\n return left.index - right.index;\n }), 'value');\n}\n","import cb from './_cb.js';\nimport each from './each.js';\n\n// An internal function used for aggregate \"group by\" operations.\nexport default function group(behavior, partition) {\n return function(obj, iteratee, context) {\n var result = partition ? [[], []] : {};\n iteratee = cb(iteratee, context);\n each(obj, function(value, index) {\n var key = iteratee(value, index, obj);\n behavior(result, value, key);\n });\n return result;\n };\n}\n","import group from './_group.js';\nimport has from './_has.js';\n\n// Groups the object's values by a criterion. Pass either a string attribute\n// to group by, or a function that returns the criterion.\nexport default group(function(result, value, key) {\n if (has(result, key)) result[key].push(value); else result[key] = [value];\n});\n","import group from './_group.js';\n\n// Indexes the object's values by a criterion, similar to `_.groupBy`, but for\n// when you know that your index values will be unique.\nexport default group(function(result, value, key) {\n result[key] = value;\n});\n","import group from './_group.js';\nimport has from './_has.js';\n\n// Counts instances of an object that group by a certain criterion. Pass\n// either a string attribute to count by, or a function that returns the\n// criterion.\nexport default group(function(result, value, key) {\n if (has(result, key)) result[key]++; else result[key] = 1;\n});\n","import group from './_group.js';\n\n// Split a collection into two arrays: one whose elements all pass the given\n// truth test, and one whose elements all do not pass the truth test.\nexport default group(function(result, value, pass) {\n result[pass ? 0 : 1].push(value);\n}, true);\n","import isArrayLike from './_isArrayLike.js';\nimport keys from './keys.js';\n\n// Return the number of elements in a collection.\nexport default function size(obj) {\n if (obj == null) return 0;\n return isArrayLike(obj) ? obj.length : keys(obj).length;\n}\n","// Internal `_.pick` helper function to determine whether `key` is an enumerable\n// property name of `obj`.\nexport default function keyInObj(value, key, obj) {\n return key in obj;\n}\n","import restArguments from './restArguments.js';\nimport isFunction from './isFunction.js';\nimport optimizeCb from './_optimizeCb.js';\nimport allKeys from './allKeys.js';\nimport keyInObj from './_keyInObj.js';\nimport flatten from './_flatten.js';\n\n// Return a copy of the object only containing the allowed properties.\nexport default restArguments(function(obj, keys) {\n var result = {}, iteratee = keys[0];\n if (obj == null) return result;\n if (isFunction(iteratee)) {\n if (keys.length > 1) iteratee = optimizeCb(iteratee, keys[1]);\n keys = allKeys(obj);\n } else {\n iteratee = keyInObj;\n keys = flatten(keys, false, false);\n obj = Object(obj);\n }\n for (var i = 0, length = keys.length; i < length; i++) {\n var key = keys[i];\n var value = obj[key];\n if (iteratee(value, key, obj)) result[key] = value;\n }\n return result;\n});\n","import restArguments from './restArguments.js';\nimport isFunction from './isFunction.js';\nimport negate from './negate.js';\nimport map from './map.js';\nimport flatten from './_flatten.js';\nimport contains from './contains.js';\nimport pick from './pick.js';\n\n// Return a copy of the object without the disallowed properties.\nexport default restArguments(function(obj, keys) {\n var iteratee = keys[0], context;\n if (isFunction(iteratee)) {\n iteratee = negate(iteratee);\n if (keys.length > 1) context = keys[1];\n } else {\n keys = map(flatten(keys, false, false), String);\n iteratee = function(value, key) {\n return !contains(keys, key);\n };\n }\n return pick(obj, iteratee, context);\n});\n","import { slice } from './_setup.js';\n\n// Returns everything but the last entry of the array. Especially useful on\n// the arguments object. Passing **n** will return all the values in\n// the array, excluding the last N.\nexport default function initial(array, n, guard) {\n return slice.call(array, 0, Math.max(0, array.length - (n == null || guard ? 1 : n)));\n}\n","import initial from './initial.js';\n\n// Get the first element of an array. Passing **n** will return the first N\n// values in the array. The **guard** check allows it to work with `_.map`.\nexport default function first(array, n, guard) {\n if (array == null || array.length < 1) return n == null || guard ? void 0 : [];\n if (n == null || guard) return array[0];\n return initial(array, array.length - n);\n}\n","import { slice } from './_setup.js';\n\n// Returns everything but the first entry of the `array`. Especially useful on\n// the `arguments` object. Passing an **n** will return the rest N values in the\n// `array`.\nexport default function rest(array, n, guard) {\n return slice.call(array, n == null || guard ? 1 : n);\n}\n","import rest from './rest.js';\n\n// Get the last element of an array. Passing **n** will return the last N\n// values in the array.\nexport default function last(array, n, guard) {\n if (array == null || array.length < 1) return n == null || guard ? void 0 : [];\n if (n == null || guard) return array[array.length - 1];\n return rest(array, Math.max(0, array.length - n));\n}\n","import filter from './filter.js';\n\n// Trim out all falsy values from an array.\nexport default function compact(array) {\n return filter(array, Boolean);\n}\n","import _flatten from './_flatten.js';\n\n// Flatten out an array, either recursively (by default), or up to `depth`.\n// Passing `true` or `false` as `depth` means `1` or `Infinity`, respectively.\nexport default function flatten(array, depth) {\n return _flatten(array, depth, false);\n}\n","import restArguments from './restArguments.js';\nimport flatten from './_flatten.js';\nimport filter from './filter.js';\nimport contains from './contains.js';\n\n// Take the difference between one array and a number of other arrays.\n// Only the elements present in just the first array will remain.\nexport default restArguments(function(array, rest) {\n rest = flatten(rest, true, true);\n return filter(array, function(value){\n return !contains(rest, value);\n });\n});\n","import restArguments from './restArguments.js';\nimport difference from './difference.js';\n\n// Return a version of the array that does not contain the specified value(s).\nexport default restArguments(function(array, otherArrays) {\n return difference(array, otherArrays);\n});\n","import isBoolean from './isBoolean.js';\nimport cb from './_cb.js';\nimport getLength from './_getLength.js';\nimport contains from './contains.js';\n\n// Produce a duplicate-free version of the array. If the array has already\n// been sorted, you have the option of using a faster algorithm.\n// The faster algorithm will not work with an iteratee if the iteratee\n// is not a one-to-one function, so providing an iteratee will disable\n// the faster algorithm.\nexport default function uniq(array, isSorted, iteratee, context) {\n if (!isBoolean(isSorted)) {\n context = iteratee;\n iteratee = isSorted;\n isSorted = false;\n }\n if (iteratee != null) iteratee = cb(iteratee, context);\n var result = [];\n var seen = [];\n for (var i = 0, length = getLength(array); i < length; i++) {\n var value = array[i],\n computed = iteratee ? iteratee(value, i, array) : value;\n if (isSorted && !iteratee) {\n if (!i || seen !== computed) result.push(value);\n seen = computed;\n } else if (iteratee) {\n if (!contains(seen, computed)) {\n seen.push(computed);\n result.push(value);\n }\n } else if (!contains(result, value)) {\n result.push(value);\n }\n }\n return result;\n}\n","import restArguments from './restArguments.js';\nimport uniq from './uniq.js';\nimport flatten from './_flatten.js';\n\n// Produce an array that contains the union: each distinct element from all of\n// the passed-in arrays.\nexport default restArguments(function(arrays) {\n return uniq(flatten(arrays, true, true));\n});\n","import getLength from './_getLength.js';\nimport contains from './contains.js';\n\n// Produce an array that contains every item shared between all the\n// passed-in arrays.\nexport default function intersection(array) {\n var result = [];\n var argsLength = arguments.length;\n for (var i = 0, length = getLength(array); i < length; i++) {\n var item = array[i];\n if (contains(result, item)) continue;\n var j;\n for (j = 1; j < argsLength; j++) {\n if (!contains(arguments[j], item)) break;\n }\n if (j === argsLength) result.push(item);\n }\n return result;\n}\n","import max from './max.js';\nimport getLength from './_getLength.js';\nimport pluck from './pluck.js';\n\n// Complement of zip. Unzip accepts an array of arrays and groups\n// each array's elements on shared indices.\nexport default function unzip(array) {\n var length = (array && max(array, getLength).length) || 0;\n var result = Array(length);\n\n for (var index = 0; index < length; index++) {\n result[index] = pluck(array, index);\n }\n return result;\n}\n","import restArguments from './restArguments.js';\nimport unzip from './unzip.js';\n\n// Zip together multiple lists into a single array -- elements that share\n// an index go together.\nexport default restArguments(unzip);\n","import getLength from './_getLength.js';\n\n// Converts lists into objects. Pass either a single array of `[key, value]`\n// pairs, or two parallel arrays of the same length -- one of keys, and one of\n// the corresponding values. Passing by pairs is the reverse of `_.pairs`.\nexport default function object(list, values) {\n var result = {};\n for (var i = 0, length = getLength(list); i < length; i++) {\n if (values) {\n result[list[i]] = values[i];\n } else {\n result[list[i][0]] = list[i][1];\n }\n }\n return result;\n}\n","// Generate an integer Array containing an arithmetic progression. A port of\n// the native Python `range()` function. See\n// [the Python documentation](https://docs.python.org/library/functions.html#range).\nexport default function range(start, stop, step) {\n if (stop == null) {\n stop = start || 0;\n start = 0;\n }\n if (!step) {\n step = stop < start ? -1 : 1;\n }\n\n var length = Math.max(Math.ceil((stop - start) / step), 0);\n var range = Array(length);\n\n for (var idx = 0; idx < length; idx++, start += step) {\n range[idx] = start;\n }\n\n return range;\n}\n","import { slice } from './_setup.js';\n\n// Chunk a single array into multiple arrays, each containing `count` or fewer\n// items.\nexport default function chunk(array, count) {\n if (count == null || count < 1) return [];\n var result = [];\n var i = 0, length = array.length;\n while (i < length) {\n result.push(slice.call(array, i, i += count));\n }\n return result;\n}\n","import _ from './underscore.js';\n\n// Helper function to continue chaining intermediate results.\nexport default function chainResult(instance, obj) {\n return instance._chain ? _(obj).chain() : obj;\n}\n","import _ from './underscore.js';\nimport each from './each.js';\nimport functions from './functions.js';\nimport { push } from './_setup.js';\nimport chainResult from './_chainResult.js';\n\n// Add your own custom functions to the Underscore object.\nexport default function mixin(obj) {\n each(functions(obj), function(name) {\n var func = _[name] = obj[name];\n _.prototype[name] = function() {\n var args = [this._wrapped];\n push.apply(args, arguments);\n return chainResult(this, func.apply(_, args));\n };\n });\n return _;\n}\n","import _ from './underscore.js';\nimport each from './each.js';\nimport { ArrayProto } from './_setup.js';\nimport chainResult from './_chainResult.js';\n\n// Add all mutator `Array` functions to the wrapper.\neach(['pop', 'push', 'reverse', 'shift', 'sort', 'splice', 'unshift'], function(name) {\n var method = ArrayProto[name];\n _.prototype[name] = function() {\n var obj = this._wrapped;\n if (obj != null) {\n method.apply(obj, arguments);\n if ((name === 'shift' || name === 'splice') && obj.length === 0) {\n delete obj[0];\n }\n }\n return chainResult(this, obj);\n };\n});\n\n// Add all accessor `Array` functions to the wrapper.\neach(['concat', 'join', 'slice'], function(name) {\n var method = ArrayProto[name];\n _.prototype[name] = function() {\n var obj = this._wrapped;\n if (obj != null) obj = method.apply(obj, arguments);\n return chainResult(this, obj);\n };\n});\n\nexport default _;\n","// Default Export\n// ==============\n// In this module, we mix our bundled exports into the `_` object and export\n// the result. This is analogous to setting `module.exports = _` in CommonJS.\n// Hence, this module is also the entry point of our UMD bundle and the package\n// entry point for CommonJS and AMD users. In other words, this is (the source\n// of) the module you are interfacing with when you do any of the following:\n//\n// ```js\n// // CommonJS\n// var _ = require('underscore');\n//\n// // AMD\n// define(['underscore'], function(_) {...});\n//\n// // UMD in the browser\n// // _ is available as a global variable\n// ```\nimport * as allExports from './index.js';\nimport { mixin } from './index.js';\n\n// Add all of the Underscore functions to the wrapper object.\nvar _ = mixin(allExports);\n// Legacy Node.js API.\n_._ = _;\n// Export the Underscore API.\nexport default _;\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\tid: moduleId,\n\t\tloaded: false,\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Flag the module as loaded\n\tmodule.loaded = true;\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n// expose the modules object (__webpack_modules__)\n__webpack_require__.m = __webpack_modules__;\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.f = {};\n// This file contains only the entry chunk.\n// The chunk loading function for additional chunks\n__webpack_require__.e = (chunkId) => {\n\treturn Promise.all(Object.keys(__webpack_require__.f).reduce((promises, key) => {\n\t\t__webpack_require__.f[key](chunkId, promises);\n\t\treturn promises;\n\t}, []));\n};","// This function allow to reference async chunks\n__webpack_require__.u = (chunkId) => {\n\t// return url for filenames based on template\n\treturn \"\" + chunkId + \"-\" + chunkId + \".js?v=\" + {\"1110\":\"a5d6e6f59aa058840a1e\",\"1642\":\"00f437770241bf2f3a71\",\"5455\":\"8915a218db5b7bc90f34\"}[chunkId] + \"\";\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","__webpack_require__.nmd = (module) => {\n\tmodule.paths = [];\n\tif (!module.children) module.children = [];\n\treturn module;\n};","__webpack_require__.j = 1418;","var scriptUrl;\nif (__webpack_require__.g.importScripts) scriptUrl = __webpack_require__.g.location + \"\";\nvar document = __webpack_require__.g.document;\nif (!scriptUrl && document) {\n\tif (document.currentScript)\n\t\tscriptUrl = document.currentScript.src;\n\tif (!scriptUrl) {\n\t\tvar scripts = document.getElementsByTagName(\"script\");\n\t\tif(scripts.length) {\n\t\t\tvar i = scripts.length - 1;\n\t\t\twhile (i > -1 && (!scriptUrl || !/^http(s?):/.test(scriptUrl))) scriptUrl = scripts[i--].src;\n\t\t}\n\t}\n}\n// When supporting browsers where an automatic publicPath is not supported you must specify an output.publicPath manually via configuration\n// or pass an empty string (\"\") and set the __webpack_public_path__ variable from your code to use your own logic.\nif (!scriptUrl) throw new Error(\"Automatic publicPath is not supported in this browser\");\nscriptUrl = scriptUrl.replace(/#.*$/, \"\").replace(/\\?.*$/, \"\").replace(/\\/[^\\/]+$/, \"/\");\n__webpack_require__.p = scriptUrl;","__webpack_require__.b = document.baseURI || self.location.href;\n\n// object to store loaded and loading chunks\n// undefined = chunk not loaded, null = chunk preloaded/prefetched\n// [resolve, reject, Promise] = chunk loading, 0 = chunk loaded\nvar installedChunks = {\n\t1418: 0\n};\n\n__webpack_require__.f.j = (chunkId, promises) => {\n\t\t// JSONP chunk loading for javascript\n\t\tvar installedChunkData = __webpack_require__.o(installedChunks, chunkId) ? installedChunks[chunkId] : undefined;\n\t\tif(installedChunkData !== 0) { // 0 means \"already installed\".\n\n\t\t\t// a Promise means \"currently loading\".\n\t\t\tif(installedChunkData) {\n\t\t\t\tpromises.push(installedChunkData[2]);\n\t\t\t} else {\n\t\t\t\tif(true) { // all chunks have JS\n\t\t\t\t\t// setup Promise in chunk cache\n\t\t\t\t\tvar promise = new Promise((resolve, reject) => (installedChunkData = installedChunks[chunkId] = [resolve, reject]));\n\t\t\t\t\tpromises.push(installedChunkData[2] = promise);\n\n\t\t\t\t\t// start chunk loading\n\t\t\t\t\tvar url = __webpack_require__.p + __webpack_require__.u(chunkId);\n\t\t\t\t\t// create error before stack unwound to get useful stacktrace later\n\t\t\t\t\tvar error = new Error();\n\t\t\t\t\tvar loadingEnded = (event) => {\n\t\t\t\t\t\tif(__webpack_require__.o(installedChunks, chunkId)) {\n\t\t\t\t\t\t\tinstalledChunkData = installedChunks[chunkId];\n\t\t\t\t\t\t\tif(installedChunkData !== 0) installedChunks[chunkId] = undefined;\n\t\t\t\t\t\t\tif(installedChunkData) {\n\t\t\t\t\t\t\t\tvar errorType = event && (event.type === 'load' ? 'missing' : event.type);\n\t\t\t\t\t\t\t\tvar realSrc = event && event.target && event.target.src;\n\t\t\t\t\t\t\t\terror.message = 'Loading chunk ' + chunkId + ' failed.\\n(' + errorType + ': ' + realSrc + ')';\n\t\t\t\t\t\t\t\terror.name = 'ChunkLoadError';\n\t\t\t\t\t\t\t\terror.type = errorType;\n\t\t\t\t\t\t\t\terror.request = realSrc;\n\t\t\t\t\t\t\t\tinstalledChunkData[1](error);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t\t__webpack_require__.l(url, loadingEnded, \"chunk-\" + chunkId, chunkId);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n};\n\n// no prefetching\n\n// no preloaded\n\n// no HMR\n\n// no HMR manifest\n\n__webpack_require__.O.j = (chunkId) => (installedChunks[chunkId] === 0);\n\n// install a JSONP callback for chunk loading\nvar webpackJsonpCallback = (parentChunkLoadingFunction, data) => {\n\tvar chunkIds = data[0];\n\tvar moreModules = data[1];\n\tvar runtime = data[2];\n\t// add \"moreModules\" to the modules object,\n\t// then flag all \"chunkIds\" as loaded and fire callback\n\tvar moduleId, chunkId, i = 0;\n\tif(chunkIds.some((id) => (installedChunks[id] !== 0))) {\n\t\tfor(moduleId in moreModules) {\n\t\t\tif(__webpack_require__.o(moreModules, moduleId)) {\n\t\t\t\t__webpack_require__.m[moduleId] = moreModules[moduleId];\n\t\t\t}\n\t\t}\n\t\tif(runtime) var result = runtime(__webpack_require__);\n\t}\n\tif(parentChunkLoadingFunction) parentChunkLoadingFunction(data);\n\tfor(;i < chunkIds.length; i++) {\n\t\tchunkId = chunkIds[i];\n\t\tif(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) {\n\t\t\tinstalledChunks[chunkId][0]();\n\t\t}\n\t\tinstalledChunks[chunkId] = 0;\n\t}\n\treturn __webpack_require__.O(result);\n}\n\nvar chunkLoadingGlobal = self[\"webpackChunknextcloud\"] = self[\"webpackChunknextcloud\"] || [];\nchunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0));\nchunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal));","__webpack_require__.nc = undefined;","// startup\n// Load entry module and return exports\n// This entry module depends on other loaded chunks and execution need to be delayed\nvar __webpack_exports__ = __webpack_require__.O(undefined, [4208], () => (__webpack_require__(33693)))\n__webpack_exports__ = __webpack_require__.O(__webpack_exports__);\n"],"names":["deferred","inProgress","dataWebpackPrefix","updatableNotification","getDefaultNotificationFunction","setDefault","callback","this","hide","$row","_","undefined","each","$","toastify","hideToast","console","error","call","showHtml","html","options","isHTML","timeout","TOAST_PERMANENT_TIMEOUT","toast","showMessage","toastElement","show","text","toString","split","join","escapeHTML","showUpdate","showTemporary","TOAST_DEFAULT_TIMEOUT","isHidden","find","length","ajaxConnectionLostHandler","Notification","t","trailing","dynamicSlideToggleEnabled","enableDynamicSlideToggle","Apps","$el","removeClass","trigger","addClass","method","endpoint","OC","PasswordConfirmation","requiresPasswordConfirmation","type","toUpperCase","url","generateOcsUrl","data","success","requirePasswordConfirmation","bind","appConfig","window","oc_appconfig","AppConfig","getValue","app","key","defaultValue","setValue","value","getApps","getKeys","deleteKey","_oc_appswebroots","methodMap","create","update","patch","delete","read","parsePropFindResult","result","davProperties","subResult","props","href","propStat","status","properties","propKey","id","parseIdFromLocation","queryPos","indexOf","substr","parts","pop","isSuccessStatus","callPropPatch","client","model","headers","propPatch","attrs","changedProp","warn","convertModelAttributesToDavProperties","changed","then","toJSON","Backbone","VendorBackbone","Object","assign","davCall","dav","Client","baseUrl","xmlNamespaces","resolveUrl","requestToken","propFind","depth","response","propsMapping","results","body","shift","callPropFind","request","callMkCol","responseJson","locationHeader","xhr","getResponseHeader","callMethod","davSync","params","isCollection","Collection","hasInnerCollection","usePUT","collection","Error","urlError","JSON","stringify","processData","prototype","textStatus","errorThrown","context","_oc_config","rawUid","document","getElementsByTagName","getAttribute","displayName","currentUser","Dialogs","YES_NO_BUTTONS","OK_BUTTONS","FILEPICKER_TYPE_CHOOSE","FILEPICKER_TYPE_MOVE","FILEPICKER_TYPE_COPY","FILEPICKER_TYPE_COPY_MOVE","FILEPICKER_TYPE_CUSTOM","alert","title","modal","message","OK_BUTTON","info","confirm","confirmDestructive","buttons","arguments","DialogBuilder","setName","setText","setButtons","label","clicked","_getLegacyButtons","build","confirmHtml","setHTML","prompt","name","password","Promise","resolve","spawnDialog","defineAsyncComponent","inputName","isPassword","filepicker","multiselect","mimetype","FilePickerType","Choose","path","legacyCallback","fn","getPath","node","root","startsWith","slice","nodes","map","builder","getFilePickerBuilder","forEach","button","addButton","defaultButton","setButtonFactory","_nodes$","_nodes$2","attributes","basename","target","push","multiSelect","file","CopyMove","Copy","icon","IconCopy","Move","IconMove","setMimeTypeFilter","filter","setFilter","_node$mtime","_node$attributes","_node$attributes2","_node$attributes3","_node$attributes4","_node$attributes5","fileid","mime","mtime","getTime","permissions","etag","hasPreview","mountType","quotaAvailableBytes","sharePermissions","nodeToLegacyFile","allowDirectories","allowDirectoryChooser","includes","setMultiSelect","startAt","pick","content","dialogType","allowHtml","setSeverity","dialog","_clicked","_buttons$cancel","_buttons$confirm","_buttons$confirm2","buttonList","cancel","_fileexistsshown","fileexists","original","replacement","controller","self","dialogDeferred","resampleHermite","canvas","W","H","W2","H2","Math","round","img","getContext","getImageData","img2","data2","ratio_w","ratio_h","ratio_w_half","ceil","ratio_h_half","j","i","x2","weight","weights","weights_alpha","gx_r","gx_g","gx_b","gx_a","center_y","yy","floor","dy","abs","center_x","w0","xx","dx","w","sqrt","clearRect","max","width","height","putImageData","addConflict","$conflicts","$conflict","clone","$originalDiv","$replacementDiv","Util","humanFileSize","size","formatDate","lastModified","directory","urlSpec","x","y","c","forceIcon","previewpath","Files","generatePreviewUrl","replace","css","FileReader","reader","onload","e","blob","Blob","URL","webkitURL","originalUrl","createObjectURL","image","Image","src","createElement","min","drawImage","toDataURL","readAsArrayBuffer","reject","getCroppedPreview","MimeType","getIconUrl","checkboxId","attr","append","prop","dialogName","dialogId","count","n","parent","children","_getFileExistsTemplate","$tmpl","$dlg","octemplate","dialog_name","allnewfiles","allexistingfiles","why","what","buttonlist","classes","click","onCancel","ocdialog","onContinue","closeOnEscape","closeButton","close","remove","$primaryButton","closest","updatePrimaryButton","checkedCount","on","$checkbox","fail","promise","defer","$fileexistsTemplate","filePath","tmpl","manageFromDocument","manageToken","global","emit","token","getToken","setToken","newToken","OCEventSource","joinChar","dataStr","typelessListeners","closed","listeners","encodeURIComponent","useFallBack","EventSource","iframeId","iframeCount","fallBackSources","iframe","source","onmessage","parse","listen","fallBackCallBack","done","lastLength","addEventListener","currentMenu","currentMenuToggle","hideMenus","complete","lastMenu","slideUp","apply","isAdmin","_oc_isadmin","load","loadTranslations","register","_unregister","unregister","translate","translatePlural","Handlebars","startSaving","selector","startAction","stop","finishedSaving","finishedAction","finishedSuccess","finishedError","delay","fadeOut","isPasswordConfirmationRequired","rejectCallback","confirmPassword","_plugins","targetName","plugin","plugins","getPlugins","attach","targetObject","detach","theme","_theme","_handlers","_pushState","strParams","buildQueryString","history","pushState","location","pathname","navigator","userAgent","toLowerCase","parseInt","patterns","querySelectorAll","pattern","ii","style","fill","stroke","removeAttribute","setAttribute","replaceState","hash","_cancelPop","addOnPopStateHandler","handler","_parseHashQuery","pos","_decodeQuery","query","parseUrlQuery","parseQueryString","search","_onPopState","state","chunkify","tz","charAt","m","History","computerFileSize","string","s","trim","bytes","matches","match","parseFloat","isFinite","b","k","kb","mb","gb","g","tb","pb","p","timestamp","format","TESTING","debug","moment","relativeModifiedDate","diff","fromNow","getScrollBarWidth","_scrollBarWidth","inner","outer","position","top","left","visibility","overflow","appendChild","w1","offsetWidth","w2","clientWidth","removeChild","stripTime","date","Date","getFullYear","getMonth","getDate","naturalSortCompare","a","aa","bb","aNum","Number","bNum","localeCompare","getLanguage","waitFor","interval","internalCallback","setTimeout","isCookieSetToValue","cookies","cookie","_oc_debug","webroot","_oc_webroot","lastIndexOf","coreApps","menuSpeed","PERMISSION_ALL","PERMISSION_CREATE","PERMISSION_DELETE","PERMISSION_NONE","PERMISSION_READ","PERMISSION_SHARE","PERMISSION_UPDATE","TAG_FAVORITE","fileIsBlacklisted","Config","blacklist_files_regex","appswebroots","config","dialogs","getCurrentUser","uid","isUserAdmin","L10N","_ajaxConnectionLostHandler","_processAjaxError","statusText","_reloadCalled","_userIsNavigatingAway","timer","seconds","setInterval","clearInterval","reload","registerXHRForErrorProcessing","loadCallback","readyState","errorCallback","getCapabilities","realGetCapabilities","registerMenu","$toggle","$menuEl","toggle","headerMenu","isClickableElement","event","preventDefault","is","slideToggle","showMenu","unregisterMenu","off","encodePath","dirname","isSamePath","joinPaths","getHost","host","getHostName","hostname","getPort","port","getProtocol","protocol","getCanonicalLocale","getLocale","queryString","components","part","decodeURIComponent","msg","Plugins","generateFilePath","generateUrl","get","namespaces","tail","set","getRootPath","getRootUrl","imagePath","redirect","targetURL","getRequestToken","linkTo","linkToOCS","service","version","ocsVersion","linkToRemote","generateRemoteUrl","linkToRemoteBase","realGetRootUrl","subscribe","singleMatcher","RegExp","multiMatcher","decodeComponents","right","Array","concat","decode","input","tokens","splitOnFirst","separator","TypeError","separatorIndex","includeKeys","object","predicate","isArray","descriptor","getOwnPropertyDescriptor","enumerable","defineProperty","Reflect","ownKeys","isNullOrUndefined","strictUriEncode","replaceAll","charCodeAt","encodeFragmentIdentifier","Symbol","validateArrayFormatSeparator","encode","strict","encodedURI","replaceMap","exec","entries","keys","customDecodeURIComponent","keysSorter","sort","removeHash","hashStart","parseValue","parseNumbers","isNaN","parseBooleans","extract","queryStart","arrayFormat","arrayFormatSeparator","formatter","accumulator","isEncodedArray","newValue","item","test","arrayValue","flat","parserForArrayFormat","returnValue","parameter","parameter_","key2","value2","reduce","Boolean","shouldFilter","skipNull","skipEmptyString","index","keyValueSeparator","encoderForArrayFormat","objectCopy","parseUrl","url_","parseFragmentIdentifier","fragmentIdentifier","stringifyUrl","getHash","urlObjectForFragmentEncode","exclude","computed","userNameInputLengthIs255","user","userInputHelperText","ArrowRight","NcButton","String","default","valueLoading","loading","required","invertedColors","styleTagTransform","setAttributes","insert","domAPI","insertStyleElement","locals","_vm","_c","_self","$event","$emit","scopedSlots","_u","staticClass","proxy","_v","_s","LoginButton","NcPasswordField","NcTextField","NcNoteCard","mixins","AuthMixin","username","redirectUrl","errors","messages","throttleDelay","autoCompleteAllowed","directLogin","emailStates","setup","_Intl$DateTimeFormat","headlineText","productName","sanitize","escape","loginTimeout","loadState","timezone","Intl","DateTimeFormat","resolvedOptions","timeZone","timezoneOffset","getTimezoneOffset","resetFormTimeout","debounce","handleResetForm","isError","invalidPassword","userDisabled","errorLabel","apacheAuthFailed","csrfCheckFailed","internalException","loadingIcon","loginActionUrl","emailEnabled","every","loginText","watch","mounted","$refs","inputField","focus","methods","updateUsername","submit","ref","_e","_l","class","staticStyle","shake","domProps","bufferToBase64URLString","buffer","Uint8Array","str","charCode","fromCharCode","btoa","base64URLStringToBuffer","base64URLString","base64","padLength","padded","padEnd","binary","atob","ArrayBuffer","browserSupportsWebAuthn","PublicKeyCredential","toPublicKeyCredentialDescriptor","transports","WebAuthnError","constructor","code","cause","super","WebAuthnAbortService","createNewAbortSignal","abortError","abort","newController","AbortController","signal","cancelCeremony","attachments","toAuthenticatorAttachment","attachment","getLoggerBuilder","setApp","setUid","NoValidCredentials","emits","fillColor","_b","$attrs","InformationIcon","LockOpenIcon","isHttps","isLocalhost","supportsWebauthn","validCredentials","authenticate","loginForm","checkValidity","async","loginName","Axios","post","allowCredentials","logger","optionsJSON","useBrowserAutofill","publicKey","challenge","globalPublicKeyCredential","isConditionalMediationAvailable","browserSupportsWebAuthnAutofill","mediation","credential","credentials","err","AbortSignal","effectiveDomain","rpId","identifyAuthenticationError","rawId","userHandle","authenticatorData","clientDataJSON","signature","clientExtensionResults","getClientExtensionResults","authenticatorAttachment","startWebauthnAuthentication","startAuthentication","completeAuthentication","changeUsername","authData","finishAuthentication","_ref","defaultRedirectUrl","catch","resetPasswordLink","axios","resp","resetPasswordTarget","encrypted","proceed","encryption","directives","rawName","expression","composing","_i","$$a","$$el","$$c","checked","$$i","warning","clear","localStorage","sessionStorage","LoginForm","PasswordLessLoginForm","ResetPassword","UpdatePassword","passwordlessLogin","resetPassword","canResetPassword","resetPasswordUser","direct","hasPasswordless","countAlternativeLogins","alternativeLogins","hideLoginForm","passwordResetFinished","alternativeLogin","L10n","Vue","mixin","Nextcloud","extend","LoginView","$mount","exports","previousBackbone","VERSION","noConflict","emulateHTTP","emulateJSON","_listening","Events","eventSplitter","eventsApi","iteratee","events","opts","names","_events","onApi","ctx","listening","_listeners","interop","listenTo","obj","_listenId","uniqueId","listeningTo","_listeningTo","Listening","tryCatchOn","handlers","offApi","stopListening","ids","isEmpty","remaining","_callback","cleanup","once","onceMap","listenToOnce","offer","args","triggerApi","objEvents","allEvents","all","triggerEvents","ev","l","a1","a2","a3","listener","unbind","Model","preinitialize","cid","cidPrefix","defaults","initialize","validationError","idAttribute","sync","has","val","_validate","unset","silent","changes","changing","_changing","_previousAttributes","current","prev","isEqual","prevId","_pending","hasChanged","changedAttributes","old","previous","previousAttributes","fetch","serverAttrs","wrapError","save","wait","validate","isNew","destroy","base","isValid","models","comparator","_reset","reset","setOptions","add","merge","addOptions","splice","array","at","singular","removed","_removeModels","added","merged","_isModel","toAdd","toMerge","toRemove","modelMap","sortable","sortAttr","isString","existing","_prepareModel","_addReference","orderChanged","some","_removeReference","previousModels","unshift","_byId","modelId","where","first","findWhere","isFunction","sortBy","pluck","callbackOpts","_forwardPristineError","values","CollectionIterator","ITERATOR_VALUES","ITERATOR_KEYS","ITERATOR_KEYSVALUES","_onModelEvent","$$iterator","iterator","kind","_collection","_kind","_index","next","View","viewOptions","_ensureElement","delegateEventSplitter","tagName","render","_removeElement","setElement","element","undelegateEvents","_setElement","delegateEvents","el","delegate","eventName","undelegate","_createElement","className","_setAttributes","addUnderscoreMethods","Class","attribute","cb","defaultVal","addMethod","instance","isObject","modelMatcher","matcher","collect","foldl","inject","reduceRight","foldr","detect","select","any","include","contains","invoke","toArray","head","take","initial","rest","drop","last","without","difference","shuffle","chain","sample","partition","groupBy","countBy","indexBy","findIndex","findLastIndex","pairs","invert","omit","Base","mappings","functions","memo","dataType","contentType","_method","beforeSend","setRequestHeader","ajax","Router","routes","_bindRoutes","optionalParam","namedParam","splatParam","escapeRegExp","route","isRegExp","_routeToRegExp","router","fragment","_extractParameters","execute","navigate","optional","param","checkUrl","routeStripper","rootStripper","pathStripper","started","atRoot","getSearch","matchRoot","decodeFragment","decodeURI","getFragment","_usePushState","_wantsHashChange","start","_trailingSlash","trailingSlash","hashChange","_hasHashChange","documentMode","_useHashChange","_wantsPushState","_hasPushState","rootPath","display","tabIndex","iWindow","insertBefore","firstChild","contentWindow","open","attachEvent","_checkUrlInterval","loadUrl","removeEventListener","detachEvent","notfound","decodedFragment","_updateHash","protoProps","staticProps","child","__super__","_debug","factory","___CSS_LOADER_EXPORT___","module","_XML_CHAR_MAP","_escapeXml","ch","userName","namespace","hasOwnProperty","property","parseClarkNotation","_renderPropSet","propName","propValue","mkcol","responseType","xhrProvider","onProgress","upload","send","fulfill","onreadystatechange","resultBody","parseMultiStatus","ontimeout","XMLHttpRequest","_parsePropNode","propNode","childNodes","subNodes","nodeType","textContent","xmlBody","doc","DOMParser","parseFromString","resolver","foo","responseIterator","evaluate","XPathResult","ANY_TYPE","responseNode","iterateNext","stringValue","propStatIterator","propStatNode","propIterator","namespaceURI","localName","baseParts","subString","scheme","propertyName","webpackContext","req","webpackContextResolve","__webpack_require__","o","O","P","Qt","r","log","d","pow","toFixed","toLocaleString","N","NONE","CREATE","READ","UPDATE","DELETE","SHARE","ALL","Z","nc","oc","ocs","V","_nc_dav_properties","S","_nc_dav_namespaces","ur","dr","L","Folder","File","Y","q","crtime","owner","J","NEW","FAILED","LOADING","LOCKED","Q","_data","_attributes","_knownDavService","updateMtime","deleteProperty","Proxy","encodedSource","origin","extension","isDavRessource","move","rename","ve","D","ee","ar","setHeaders","requesttoken","u","lr","getDirectoryContents","details","includeSelf","filename","Te","ye","lastmod","getcontentlength","C","isExist","isEmptyObject","f","isName","getAllMatches","startIndex","lastIndex","nameRegexp","te","preserveOrder","attributeNamePrefix","attributesGroupName","textNodeName","ignoreAttributes","removeNSPrefix","allowBooleanAttributes","parseTagValue","parseAttributeValue","trimValues","cdataPropName","numberParseOptions","hex","leadingZeros","eNotation","tagValueProcessor","attributeValueProcessor","stopNodes","alwaysCreateTextNode","commentPropName","unpairedTags","processEntities","htmlEntities","ignoreDeclaration","ignorePiTags","transformTagName","transformAttributeName","updateTag","buildOptions","defaultOptions","ne","ie","Et","yt","bt","prettify","_t","Tt","se","xt","h","$t","oe","E","indentBy","suppressUnpairedNode","suppressEmptyNode","endsWith","suppressBooleanAttributes","entities","regex","Vt","St","oneListGroup","isAttribute","attrPrefixLen","Mt","processTextOrObjNode","Lt","indentate","Rt","tagEndChar","newLine","j2x","buildTextValNode","attrStr","buildObjectNode","repeat","arrayNodeName","buildAttrPairStr","replaceEntitiesValue","closeTag","Function","ArrayProto","ObjProto","SymbolProto","supportsArrayBuffer","supportsDataView","DataView","nativeIsArray","nativeKeys","nativeCreate","nativeIsView","isView","_isNaN","_isFinite","hasEnumBug","propertyIsEnumerable","nonEnumerableProps","MAX_ARRAY_INDEX","restArguments","func","isNull","isUndefined","isBoolean","isElement","tagTester","tag","nodelist","Int8Array","hasStringTagBug","isIE11","Map","isDataView","getInt8","isArrayBuffer","isArguments","isSymbol","isNumber","constant","createSizePropertyCheck","getSizeProperty","sizeProperty","shallowProperty","typedArrayPattern","collectNonEnumProps","emulatedSet","nonEnumIdx","proto","isMatch","_keys","_wrapped","toBufferView","bufferSource","byteOffset","valueOf","tagDataView","eq","aStack","bStack","deepEq","areArrays","aCtor","bCtor","allKeys","ie11fingerprint","weakMapMethods","forEachName","commonInit","mapTail","mapMethods","setMethods","createAssigner","keysFunc","baseCreate","Ctor","extendOwn","tap","interceptor","toPath","deepGet","identity","optimizeCb","argCount","baseIteratee","Infinity","mapObject","currentKey","noop","propertyOf","times","accum","random","now","createEscaper","escaper","testRegexp","replaceRegexp","templateSettings","interpolate","noMatch","escapes","escapeChar","bareIdentifier","template","settings","oldSettings","offset","argument","variable","fallback","idCounter","prefix","_chain","executeBound","sourceFunc","boundFunc","callingContext","partial","boundArgs","placeholder","bound","callArgs","flatten","output","idx","len","memoize","hasher","cache","address","throttle","later","leading","throttled","_now","clearTimeout","immediate","passed","debounced","_args","wrap","wrapper","negate","compose","after","before","findKey","createPredicateIndexFinder","dir","sortedIndex","low","high","mid","createIndexFinder","predicateFind","createReduce","reducer","list","fromIndex","guard","contextPath","lastComputed","v","reStrSymbol","rand","temp","criteria","group","behavior","pass","keyInObj","compact","otherArrays","uniq","isSorted","seen","arrays","intersection","argsLength","unzip","range","step","chunk","chainResult","__webpack_module_cache__","moduleId","cachedModule","loaded","__webpack_modules__","chunkIds","priority","notFulfilled","fulfilled","getter","__esModule","definition","chunkId","promises","globalThis","script","needAttach","scripts","charset","onScriptComplete","onerror","doneFns","parentNode","toStringTag","nmd","paths","scriptUrl","importScripts","currentScript","baseURI","installedChunks","installedChunkData","errorType","realSrc","webpackJsonpCallback","parentChunkLoadingFunction","moreModules","runtime","chunkLoadingGlobal","__webpack_exports__"],"sourceRoot":""}
\ No newline at end of file diff --git a/dist/settings-users-3239.js b/dist/settings-users-3239.js index 50aad1f917d..814b4f93a23 100644 --- a/dist/settings-users-3239.js +++ b/dist/settings-users-3239.js @@ -1,3 +1,3 @@ -/*! For license information please see settings-users-3239.js.license?v=7e3101aa20fe47be15fe */ -"use strict";(self.webpackChunknextcloud=self.webpackChunknextcloud||[]).push([[3239],{95668:(e,s,a)=>{a.d(s,{HK:()=>r,MY:()=>i,SA:()=>n});const n={id:"none",label:t("settings","Unlimited")},i={id:"default",label:t("settings","Default quota")},r=t=>{const e=Object.keys(t);return 1===e.length&&"id"===e.at(0)}},96412:(t,e,s)=>{s.d(e,{A:()=>o});var a=s(71354),n=s.n(a),i=s(76314),r=s.n(i)()(n());r.push([t.id,".modal__header[data-v-17dd13c0]{margin:0}.modal__content[data-v-17dd13c0]{display:flex;flex-direction:column;align-items:center;padding:20px;gap:4px 0}.modal__button-row[data-v-17dd13c0]{display:flex;width:100%;justify-content:space-between}","",{version:3,sources:["webpack://./apps/settings/src/components/GroupListItem.vue"],names:[],mappings:"AAEC,gCACC,QAAA,CAGD,iCACC,YAAA,CACA,qBAAA,CACA,kBAAA,CACA,YAAA,CACA,SAAA,CAGD,oCACC,YAAA,CACA,UAAA,CACA,6BAAA",sourcesContent:["\n.modal {\n\t&__header {\n\t\tmargin: 0;\n\t}\n\n\t&__content {\n\t\tdisplay: flex;\n\t\tflex-direction: column;\n\t\talign-items: center;\n\t\tpadding: 20px;\n\t\tgap: 4px 0;\n\t}\n\n\t&__button-row {\n\t\tdisplay: flex;\n\t\twidth: 100%;\n\t\tjustify-content: space-between;\n\t}\n}\n"],sourceRoot:""}]);const o=r},63895:(t,e,s)=>{s.d(e,{A:()=>o});var a=s(71354),n=s.n(a),i=s(76314),r=s.n(i)()(n());r.push([t.id,".empty[data-v-a6e11582] .icon-vue{width:64px;height:64px}.empty[data-v-a6e11582] .icon-vue svg{max-width:64px;max-height:64px}","",{version:3,sources:["webpack://./apps/settings/src/components/UserList.vue"],names:[],mappings:"AAKE,kCACC,UAAA,CACA,WAAA,CAEA,sCACC,cAAA,CACA,eAAA",sourcesContent:["\n@import './Users/shared/styles.scss';\n\n.empty {\n\t:deep {\n\t\t.icon-vue {\n\t\t\twidth: 64px;\n\t\t\theight: 64px;\n\n\t\t\tsvg {\n\t\t\t\tmax-width: 64px;\n\t\t\t\tmax-height: 64px;\n\t\t\t}\n\t\t}\n\t}\n}\n"],sourceRoot:""}]);const o=r},9499:(t,e,s)=>{s.d(e,{A:()=>o});var a=s(71354),n=s.n(a),i=s(76314),r=s.n(i)()(n());r.push([t.id,".modal__form[data-v-2fe7d69f]{display:flex;flex-direction:column;align-items:center;padding:20px;gap:4px 0}.modal__item[data-v-2fe7d69f]{width:100%}.modal__item[data-v-2fe7d69f]:not(:focus):not(:active){border-color:var(--color-border-dark)}.modal__hint[data-v-2fe7d69f]{color:var(--color-text-maxcontrast);margin-top:8px;align-self:flex-start}.modal__label[data-v-2fe7d69f]{display:block;padding:4px 0}.modal__select[data-v-2fe7d69f]{width:100%}.modal__submit[data-v-2fe7d69f]{margin-top:20px}","",{version:3,sources:["webpack://./apps/settings/src/components/Users/NewUserModal.vue"],names:[],mappings:"AAEC,8BACC,YAAA,CACA,qBAAA,CACA,kBAAA,CACA,YAAA,CACA,SAAA,CAGD,8BACC,UAAA,CAEA,uDACC,qCAAA,CAIF,8BACC,mCAAA,CACA,cAAA,CACA,qBAAA,CAGD,+BACC,aAAA,CACA,aAAA,CAGD,gCACC,UAAA,CAGD,gCACC,eAAA",sourcesContent:["\n.modal {\n\t&__form {\n\t\tdisplay: flex;\n\t\tflex-direction: column;\n\t\talign-items: center;\n\t\tpadding: 20px;\n\t\tgap: 4px 0;\n\t}\n\n\t&__item {\n\t\twidth: 100%;\n\n\t\t&:not(:focus):not(:active) {\n\t\t\tborder-color: var(--color-border-dark);\n\t\t}\n\t}\n\n\t&__hint {\n\t\tcolor: var(--color-text-maxcontrast);\n\t\tmargin-top: 8px;\n\t\talign-self: flex-start;\n\t}\n\n\t&__label {\n\t\tdisplay: block;\n\t\tpadding: 4px 0;\n\t}\n\n\t&__select {\n\t\twidth: 100%;\n\t}\n\n\t&__submit {\n\t\tmargin-top: 20px;\n\t}\n}\n"],sourceRoot:""}]);const o=r},23599:(t,e,s)=>{s.d(e,{A:()=>o});var a=s(71354),n=s.n(a),i=s(76314),r=s.n(i)()(n());r.push([t.id,".footer[data-v-3ec0b16a]{position:relative;display:flex;min-width:100%;width:fit-content;height:var(--row-height);background-color:var(--color-main-background)}.footer__cell[data-v-3ec0b16a]{display:flex;flex-direction:column;justify-content:center;padding:0 var(--cell-padding);min-width:var(--cell-width);width:var(--cell-width);color:var(--color-main-text)}.footer__cell strong[data-v-3ec0b16a],.footer__cell span[data-v-3ec0b16a],.footer__cell label[data-v-3ec0b16a]{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;overflow-wrap:anywhere}@media(min-width: 670px){.footer__cell--avatar[data-v-3ec0b16a],.footer__cell--displayname[data-v-3ec0b16a]{position:sticky;z-index:var(--sticky-column-z-index);background-color:var(--color-main-background)}.footer__cell--avatar[data-v-3ec0b16a]{left:0}.footer__cell--displayname[data-v-3ec0b16a]{left:var(--avatar-cell-width);border-right:1px solid var(--color-border)}}.footer__cell--username[data-v-3ec0b16a]{padding-left:calc(var(--default-grid-baseline)*3)}.footer__cell--avatar[data-v-3ec0b16a]{min-width:var(--avatar-cell-width);width:var(--avatar-cell-width);align-items:center;padding:0;user-select:none}.footer__cell--multiline span[data-v-3ec0b16a]{line-height:1.3em;white-space:unset}@supports(-webkit-line-clamp: 2){.footer__cell--multiline span[data-v-3ec0b16a]{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}}.footer__cell--large[data-v-3ec0b16a]{min-width:var(--cell-width-large);width:var(--cell-width-large)}.footer__cell--obfuscated[data-v-3ec0b16a]{min-width:400px;width:400px}.footer__cell--fill[data-v-3ec0b16a]{min-width:var(--cell-width-large);width:100%}.footer__cell--actions[data-v-3ec0b16a]{position:sticky;right:0;z-index:var(--sticky-column-z-index);display:flex;flex-direction:row;align-items:center;min-width:110px;width:110px;background-color:var(--color-main-background);border-left:1px solid var(--color-border)}.footer__subtitle[data-v-3ec0b16a]{color:var(--color-text-maxcontrast)}.footer__cell[data-v-3ec0b16a]{position:sticky;color:var(--color-text-maxcontrast)}.footer__cell--loading[data-v-3ec0b16a]{left:0;min-width:var(--avatar-cell-width);width:var(--avatar-cell-width);align-items:center;padding:0}.footer__cell--count[data-v-3ec0b16a]{left:var(--avatar-cell-width);min-width:var(--cell-width);width:var(--cell-width)}","",{version:3,sources:["webpack://./apps/settings/src/components/Users/UserListFooter.vue","webpack://./apps/settings/src/components/Users/shared/styles.scss"],names:[],mappings:"AAGA,yBCoBC,iBAAA,CACA,YAAA,CACA,cAAA,CACA,iBAAA,CACA,wBAAA,CACA,6CAAA,CAIA,+BACC,YAAA,CACA,qBAAA,CACA,sBAAA,CACA,6BAAA,CACA,2BAAA,CACA,uBAAA,CACA,4BAAA,CAEA,+GAGC,eAAA,CACA,sBAAA,CACA,kBAAA,CACA,sBAAA,CAGD,yBACC,mFAEC,eAAA,CACA,oCAAA,CACA,6CAAA,CAGD,uCACC,MAAA,CAGD,4CACC,6BAAA,CACA,0CAAA,CAAA,CAIF,yCACC,iDAAA,CAGD,uCACC,kCAAA,CACA,8BAAA,CACA,kBAAA,CACA,SAAA,CACA,gBAAA,CAIA,+CACC,iBAAA,CACA,iBAAA,CAEA,iCAJD,+CAKE,mBAAA,CACA,oBAAA,CACA,2BAAA,CAAA,CAKH,sCACC,iCAAA,CACA,6BAAA,CAGD,2CACC,eAAA,CACA,WAAA,CAID,qCACC,iCAAA,CACA,UAAA,CAGD,wCACC,eAAA,CACA,OAAA,CACA,oCAAA,CACA,YAAA,CACA,kBAAA,CACA,kBAAA,CACA,eAAA,CACA,WAAA,CACA,6CAAA,CACA,yCAAA,CAIF,mCACC,mCAAA,CDrHD,+BACC,eAAA,CACA,mCAAA,CAEA,wCACC,MAAA,CACA,kCAAA,CACA,8BAAA,CACA,kBAAA,CACA,SAAA,CAGD,sCACC,6BAAA,CACA,2BAAA,CACA,uBAAA",sourcesContent:["\n@import './shared/styles.scss';\n\n.footer {\n\t@include row;\n\t@include cell;\n\n\t&__cell {\n\t\tposition: sticky;\n\t\tcolor: var(--color-text-maxcontrast);\n\n\t\t&--loading {\n\t\t\tleft: 0;\n\t\t\tmin-width: var(--avatar-cell-width);\n\t\t\twidth: var(--avatar-cell-width);\n\t\t\talign-items: center;\n\t\t\tpadding: 0;\n\t\t}\n\n\t\t&--count {\n\t\t\tleft: var(--avatar-cell-width);\n\t\t\tmin-width: var(--cell-width);\n\t\t\twidth: var(--cell-width);\n\t\t}\n\t}\n}\n","/**\n * @copyright 2023 Christopher Ng <chrng8@gmail.com>\n *\n * @author Christopher Ng <chrng8@gmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\n@mixin row {\n\tposition: relative;\n\tdisplay: flex;\n\tmin-width: 100%;\n\twidth: fit-content;\n\theight: var(--row-height);\n\tbackground-color: var(--color-main-background);\n}\n\n@mixin cell {\n\t&__cell {\n\t\tdisplay: flex;\n\t\tflex-direction: column;\n\t\tjustify-content: center;\n\t\tpadding: 0 var(--cell-padding);\n\t\tmin-width: var(--cell-width);\n\t\twidth: var(--cell-width);\n\t\tcolor: var(--color-main-text);\n\n\t\tstrong,\n\t\tspan,\n\t\tlabel {\n\t\t\toverflow: hidden;\n\t\t\ttext-overflow: ellipsis;\n\t\t\twhite-space: nowrap;\n\t\t\toverflow-wrap: anywhere;\n\t\t}\n\n\t\t@media (min-width: 670px) { /* Show one &--large column between stickied columns */\n\t\t\t&--avatar,\n\t\t\t&--displayname {\n\t\t\t\tposition: sticky;\n\t\t\t\tz-index: var(--sticky-column-z-index);\n\t\t\t\tbackground-color: var(--color-main-background);\n\t\t\t}\n\n\t\t\t&--avatar {\n\t\t\t\tleft: 0;\n\t\t\t}\n\n\t\t\t&--displayname {\n\t\t\t\tleft: var(--avatar-cell-width);\n\t\t\t\tborder-right: 1px solid var(--color-border);\n\t\t\t}\n\t\t}\n\n\t\t&--username {\n\t\t\tpadding-left: calc(var(--default-grid-baseline) * 3);\n\t\t}\n\n\t\t&--avatar {\n\t\t\tmin-width: var(--avatar-cell-width);\n\t\t\twidth: var(--avatar-cell-width);\n\t\t\talign-items: center;\n\t\t\tpadding: 0;\n\t\t\tuser-select: none;\n\t\t}\n\n\t\t&--multiline {\n\t\t\tspan {\n\t\t\t\tline-height: 1.3em;\n\t\t\t\twhite-space: unset;\n\n\t\t\t\t@supports (-webkit-line-clamp: 2) {\n\t\t\t\t\tdisplay: -webkit-box;\n\t\t\t\t\t-webkit-line-clamp: 2;\n\t\t\t\t\t-webkit-box-orient: vertical;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t&--large {\n\t\t\tmin-width: var(--cell-width-large);\n\t\t\twidth: var(--cell-width-large);\n\t\t}\n\n\t\t&--obfuscated {\n\t\t\tmin-width: 400px;\n\t\t\twidth: 400px;\n\t\t}\n\n\t\t// Fill remaining row space with cell\n\t\t&--fill {\n\t\t\tmin-width: var(--cell-width-large);\n\t\t\twidth: 100%;\n\t\t}\n\n\t\t&--actions {\n\t\t\tposition: sticky;\n\t\t\tright: 0;\n\t\t\tz-index: var(--sticky-column-z-index);\n\t\t\tdisplay: flex;\n\t\t\tflex-direction: row;\n\t\t\talign-items: center;\n\t\t\tmin-width: 110px;\n\t\t\twidth: 110px;\n\t\t\tbackground-color: var(--color-main-background);\n\t\t\tborder-left: 1px solid var(--color-border);\n\t\t}\n\t}\n\n\t&__subtitle {\n\t\tcolor: var(--color-text-maxcontrast);\n\t}\n}\n"],sourceRoot:""}]);const o=r},12863:(t,e,s)=>{s.d(e,{A:()=>o});var a=s(71354),n=s.n(a),i=s(76314),r=s.n(i)()(n());r.push([t.id,".header[data-v-3121155a]{position:relative;display:flex;min-width:100%;width:fit-content;height:var(--row-height);background-color:var(--color-main-background);border-bottom:1px solid var(--color-border)}.header__cell[data-v-3121155a]{display:flex;flex-direction:column;justify-content:center;padding:0 var(--cell-padding);min-width:var(--cell-width);width:var(--cell-width);color:var(--color-main-text)}.header__cell strong[data-v-3121155a],.header__cell span[data-v-3121155a],.header__cell label[data-v-3121155a]{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;overflow-wrap:anywhere}@media(min-width: 670px){.header__cell--avatar[data-v-3121155a],.header__cell--displayname[data-v-3121155a]{position:sticky;z-index:var(--sticky-column-z-index);background-color:var(--color-main-background)}.header__cell--avatar[data-v-3121155a]{left:0}.header__cell--displayname[data-v-3121155a]{left:var(--avatar-cell-width);border-right:1px solid var(--color-border)}}.header__cell--username[data-v-3121155a]{padding-left:calc(var(--default-grid-baseline)*3)}.header__cell--avatar[data-v-3121155a]{min-width:var(--avatar-cell-width);width:var(--avatar-cell-width);align-items:center;padding:0;user-select:none}.header__cell--multiline span[data-v-3121155a]{line-height:1.3em;white-space:unset}@supports(-webkit-line-clamp: 2){.header__cell--multiline span[data-v-3121155a]{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}}.header__cell--large[data-v-3121155a]{min-width:var(--cell-width-large);width:var(--cell-width-large)}.header__cell--obfuscated[data-v-3121155a]{min-width:400px;width:400px}.header__cell--fill[data-v-3121155a]{min-width:var(--cell-width-large);width:100%}.header__cell--actions[data-v-3121155a]{position:sticky;right:0;z-index:var(--sticky-column-z-index);display:flex;flex-direction:row;align-items:center;min-width:110px;width:110px;background-color:var(--color-main-background);border-left:1px solid var(--color-border)}.header__subtitle[data-v-3121155a]{color:var(--color-text-maxcontrast)}","",{version:3,sources:["webpack://./apps/settings/src/components/Users/UserListHeader.vue","webpack://./apps/settings/src/components/Users/shared/styles.scss"],names:[],mappings:"AAGA,yBCoBC,iBAAA,CACA,YAAA,CACA,cAAA,CACA,iBAAA,CACA,wBAAA,CACA,6CAAA,CDrBA,2CAAA,CCyBA,+BACC,YAAA,CACA,qBAAA,CACA,sBAAA,CACA,6BAAA,CACA,2BAAA,CACA,uBAAA,CACA,4BAAA,CAEA,+GAGC,eAAA,CACA,sBAAA,CACA,kBAAA,CACA,sBAAA,CAGD,yBACC,mFAEC,eAAA,CACA,oCAAA,CACA,6CAAA,CAGD,uCACC,MAAA,CAGD,4CACC,6BAAA,CACA,0CAAA,CAAA,CAIF,yCACC,iDAAA,CAGD,uCACC,kCAAA,CACA,8BAAA,CACA,kBAAA,CACA,SAAA,CACA,gBAAA,CAIA,+CACC,iBAAA,CACA,iBAAA,CAEA,iCAJD,+CAKE,mBAAA,CACA,oBAAA,CACA,2BAAA,CAAA,CAKH,sCACC,iCAAA,CACA,6BAAA,CAGD,2CACC,eAAA,CACA,WAAA,CAID,qCACC,iCAAA,CACA,UAAA,CAGD,wCACC,eAAA,CACA,OAAA,CACA,oCAAA,CACA,YAAA,CACA,kBAAA,CACA,kBAAA,CACA,eAAA,CACA,WAAA,CACA,6CAAA,CACA,yCAAA,CAIF,mCACC,mCAAA",sourcesContent:["\n@import './shared/styles.scss';\n\n.header {\n\t@include row;\n\t@include cell;\n\n\tborder-bottom: 1px solid var(--color-border);\n}\n","/**\n * @copyright 2023 Christopher Ng <chrng8@gmail.com>\n *\n * @author Christopher Ng <chrng8@gmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\n@mixin row {\n\tposition: relative;\n\tdisplay: flex;\n\tmin-width: 100%;\n\twidth: fit-content;\n\theight: var(--row-height);\n\tbackground-color: var(--color-main-background);\n}\n\n@mixin cell {\n\t&__cell {\n\t\tdisplay: flex;\n\t\tflex-direction: column;\n\t\tjustify-content: center;\n\t\tpadding: 0 var(--cell-padding);\n\t\tmin-width: var(--cell-width);\n\t\twidth: var(--cell-width);\n\t\tcolor: var(--color-main-text);\n\n\t\tstrong,\n\t\tspan,\n\t\tlabel {\n\t\t\toverflow: hidden;\n\t\t\ttext-overflow: ellipsis;\n\t\t\twhite-space: nowrap;\n\t\t\toverflow-wrap: anywhere;\n\t\t}\n\n\t\t@media (min-width: 670px) { /* Show one &--large column between stickied columns */\n\t\t\t&--avatar,\n\t\t\t&--displayname {\n\t\t\t\tposition: sticky;\n\t\t\t\tz-index: var(--sticky-column-z-index);\n\t\t\t\tbackground-color: var(--color-main-background);\n\t\t\t}\n\n\t\t\t&--avatar {\n\t\t\t\tleft: 0;\n\t\t\t}\n\n\t\t\t&--displayname {\n\t\t\t\tleft: var(--avatar-cell-width);\n\t\t\t\tborder-right: 1px solid var(--color-border);\n\t\t\t}\n\t\t}\n\n\t\t&--username {\n\t\t\tpadding-left: calc(var(--default-grid-baseline) * 3);\n\t\t}\n\n\t\t&--avatar {\n\t\t\tmin-width: var(--avatar-cell-width);\n\t\t\twidth: var(--avatar-cell-width);\n\t\t\talign-items: center;\n\t\t\tpadding: 0;\n\t\t\tuser-select: none;\n\t\t}\n\n\t\t&--multiline {\n\t\t\tspan {\n\t\t\t\tline-height: 1.3em;\n\t\t\t\twhite-space: unset;\n\n\t\t\t\t@supports (-webkit-line-clamp: 2) {\n\t\t\t\t\tdisplay: -webkit-box;\n\t\t\t\t\t-webkit-line-clamp: 2;\n\t\t\t\t\t-webkit-box-orient: vertical;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t&--large {\n\t\t\tmin-width: var(--cell-width-large);\n\t\t\twidth: var(--cell-width-large);\n\t\t}\n\n\t\t&--obfuscated {\n\t\t\tmin-width: 400px;\n\t\t\twidth: 400px;\n\t\t}\n\n\t\t// Fill remaining row space with cell\n\t\t&--fill {\n\t\t\tmin-width: var(--cell-width-large);\n\t\t\twidth: 100%;\n\t\t}\n\n\t\t&--actions {\n\t\t\tposition: sticky;\n\t\t\tright: 0;\n\t\t\tz-index: var(--sticky-column-z-index);\n\t\t\tdisplay: flex;\n\t\t\tflex-direction: row;\n\t\t\talign-items: center;\n\t\t\tmin-width: 110px;\n\t\t\twidth: 110px;\n\t\t\tbackground-color: var(--color-main-background);\n\t\t\tborder-left: 1px solid var(--color-border);\n\t\t}\n\t}\n\n\t&__subtitle {\n\t\tcolor: var(--color-text-maxcontrast);\n\t}\n}\n"],sourceRoot:""}]);const o=r},74140:(t,e,s)=>{s.d(e,{A:()=>o});var a=s(71354),n=s.n(a),i=s(76314),r=s.n(i)()(n());r.push([t.id,".user-list__row[data-v-2cdd4510]{position:relative;display:flex;min-width:100%;width:fit-content;height:var(--row-height);background-color:var(--color-main-background)}.user-list__row[data-v-2cdd4510]:hover{background-color:var(--color-background-hover)}.user-list__row:hover .row__cell[data-v-2cdd4510]:not(.row__cell--actions){background-color:var(--color-background-hover)}.user-list__row .select--fill[data-v-2cdd4510]{max-width:calc(var(--cell-width-large) - 2*var(--cell-padding))}.row__cell[data-v-2cdd4510]{display:flex;flex-direction:column;justify-content:center;padding:0 var(--cell-padding);min-width:var(--cell-width);width:var(--cell-width);color:var(--color-main-text)}.row__cell strong[data-v-2cdd4510],.row__cell span[data-v-2cdd4510],.row__cell label[data-v-2cdd4510]{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;overflow-wrap:anywhere}@media(min-width: 670px){.row__cell--avatar[data-v-2cdd4510],.row__cell--displayname[data-v-2cdd4510]{position:sticky;z-index:var(--sticky-column-z-index);background-color:var(--color-main-background)}.row__cell--avatar[data-v-2cdd4510]{left:0}.row__cell--displayname[data-v-2cdd4510]{left:var(--avatar-cell-width);border-right:1px solid var(--color-border)}}.row__cell--username[data-v-2cdd4510]{padding-left:calc(var(--default-grid-baseline)*3)}.row__cell--avatar[data-v-2cdd4510]{min-width:var(--avatar-cell-width);width:var(--avatar-cell-width);align-items:center;padding:0;user-select:none}.row__cell--multiline span[data-v-2cdd4510]{line-height:1.3em;white-space:unset}@supports(-webkit-line-clamp: 2){.row__cell--multiline span[data-v-2cdd4510]{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}}.row__cell--large[data-v-2cdd4510]{min-width:var(--cell-width-large);width:var(--cell-width-large)}.row__cell--obfuscated[data-v-2cdd4510]{min-width:400px;width:400px}.row__cell--fill[data-v-2cdd4510]{min-width:var(--cell-width-large);width:100%}.row__cell--actions[data-v-2cdd4510]{position:sticky;right:0;z-index:var(--sticky-column-z-index);display:flex;flex-direction:row;align-items:center;min-width:110px;width:110px;background-color:var(--color-main-background);border-left:1px solid var(--color-border)}.row__subtitle[data-v-2cdd4510]{color:var(--color-text-maxcontrast)}.row__cell[data-v-2cdd4510]{border-bottom:1px solid var(--color-border)}.row__cell[data-v-2cdd4510] .v-select.select{min-width:var(--cell-min-width)}.row__progress[data-v-2cdd4510]{margin-top:4px}.row__progress--warn[data-v-2cdd4510]::-moz-progress-bar{background:var(--color-warning) !important}.row__progress--warn[data-v-2cdd4510]::-webkit-progress-value{background:var(--color-warning) !important}","",{version:3,sources:["webpack://./apps/settings/src/components/Users/UserRow.vue","webpack://./apps/settings/src/components/Users/shared/styles.scss"],names:[],mappings:"AAGA,iCCoBC,iBAAA,CACA,YAAA,CACA,cAAA,CACA,iBAAA,CACA,wBAAA,CACA,6CAAA,CDtBA,uCACC,8CAAA,CAEA,2EACC,8CAAA,CAKF,+CACC,+DAAA,CCgBD,4BACC,YAAA,CACA,qBAAA,CACA,sBAAA,CACA,6BAAA,CACA,2BAAA,CACA,uBAAA,CACA,4BAAA,CAEA,sGAGC,eAAA,CACA,sBAAA,CACA,kBAAA,CACA,sBAAA,CAGD,yBACC,6EAEC,eAAA,CACA,oCAAA,CACA,6CAAA,CAGD,oCACC,MAAA,CAGD,yCACC,6BAAA,CACA,0CAAA,CAAA,CAIF,sCACC,iDAAA,CAGD,oCACC,kCAAA,CACA,8BAAA,CACA,kBAAA,CACA,SAAA,CACA,gBAAA,CAIA,4CACC,iBAAA,CACA,iBAAA,CAEA,iCAJD,4CAKE,mBAAA,CACA,oBAAA,CACA,2BAAA,CAAA,CAKH,mCACC,iCAAA,CACA,6BAAA,CAGD,wCACC,eAAA,CACA,WAAA,CAID,kCACC,iCAAA,CACA,UAAA,CAGD,qCACC,eAAA,CACA,OAAA,CACA,oCAAA,CACA,YAAA,CACA,kBAAA,CACA,kBAAA,CACA,eAAA,CACA,WAAA,CACA,6CAAA,CACA,yCAAA,CAIF,gCACC,mCAAA,CDrGD,4BACC,2CAAA,CAGC,6CACC,+BAAA,CAKH,gCACC,cAAA,CAGC,yDACC,0CAAA,CAED,8DACC,0CAAA",sourcesContent:["\n@import './shared/styles.scss';\n\n.user-list__row {\n\t@include row;\n\n\t&:hover {\n\t\tbackground-color: var(--color-background-hover);\n\n\t\t.row__cell:not(.row__cell--actions) {\n\t\t\tbackground-color: var(--color-background-hover);\n\t\t}\n\t}\n\n\t// Limit width of select in fill cell\n\t.select--fill {\n\t\tmax-width: calc(var(--cell-width-large) - (2 * var(--cell-padding)));\n\t}\n}\n\n.row {\n\t@include cell;\n\n\t&__cell {\n\t\tborder-bottom: 1px solid var(--color-border);\n\n\t\t:deep {\n\t\t\t.v-select.select {\n\t\t\t\tmin-width: var(--cell-min-width);\n\t\t\t}\n\t\t}\n\t}\n\n\t&__progress {\n\t\tmargin-top: 4px;\n\n\t\t&--warn {\n\t\t\t&::-moz-progress-bar {\n\t\t\t\tbackground: var(--color-warning) !important;\n\t\t\t}\n\t\t\t&::-webkit-progress-value {\n\t\t\t\tbackground: var(--color-warning) !important;\n\t\t\t}\n\t\t}\n\t}\n}\n","/**\n * @copyright 2023 Christopher Ng <chrng8@gmail.com>\n *\n * @author Christopher Ng <chrng8@gmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\n@mixin row {\n\tposition: relative;\n\tdisplay: flex;\n\tmin-width: 100%;\n\twidth: fit-content;\n\theight: var(--row-height);\n\tbackground-color: var(--color-main-background);\n}\n\n@mixin cell {\n\t&__cell {\n\t\tdisplay: flex;\n\t\tflex-direction: column;\n\t\tjustify-content: center;\n\t\tpadding: 0 var(--cell-padding);\n\t\tmin-width: var(--cell-width);\n\t\twidth: var(--cell-width);\n\t\tcolor: var(--color-main-text);\n\n\t\tstrong,\n\t\tspan,\n\t\tlabel {\n\t\t\toverflow: hidden;\n\t\t\ttext-overflow: ellipsis;\n\t\t\twhite-space: nowrap;\n\t\t\toverflow-wrap: anywhere;\n\t\t}\n\n\t\t@media (min-width: 670px) { /* Show one &--large column between stickied columns */\n\t\t\t&--avatar,\n\t\t\t&--displayname {\n\t\t\t\tposition: sticky;\n\t\t\t\tz-index: var(--sticky-column-z-index);\n\t\t\t\tbackground-color: var(--color-main-background);\n\t\t\t}\n\n\t\t\t&--avatar {\n\t\t\t\tleft: 0;\n\t\t\t}\n\n\t\t\t&--displayname {\n\t\t\t\tleft: var(--avatar-cell-width);\n\t\t\t\tborder-right: 1px solid var(--color-border);\n\t\t\t}\n\t\t}\n\n\t\t&--username {\n\t\t\tpadding-left: calc(var(--default-grid-baseline) * 3);\n\t\t}\n\n\t\t&--avatar {\n\t\t\tmin-width: var(--avatar-cell-width);\n\t\t\twidth: var(--avatar-cell-width);\n\t\t\talign-items: center;\n\t\t\tpadding: 0;\n\t\t\tuser-select: none;\n\t\t}\n\n\t\t&--multiline {\n\t\t\tspan {\n\t\t\t\tline-height: 1.3em;\n\t\t\t\twhite-space: unset;\n\n\t\t\t\t@supports (-webkit-line-clamp: 2) {\n\t\t\t\t\tdisplay: -webkit-box;\n\t\t\t\t\t-webkit-line-clamp: 2;\n\t\t\t\t\t-webkit-box-orient: vertical;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t&--large {\n\t\t\tmin-width: var(--cell-width-large);\n\t\t\twidth: var(--cell-width-large);\n\t\t}\n\n\t\t&--obfuscated {\n\t\t\tmin-width: 400px;\n\t\t\twidth: 400px;\n\t\t}\n\n\t\t// Fill remaining row space with cell\n\t\t&--fill {\n\t\t\tmin-width: var(--cell-width-large);\n\t\t\twidth: 100%;\n\t\t}\n\n\t\t&--actions {\n\t\t\tposition: sticky;\n\t\t\tright: 0;\n\t\t\tz-index: var(--sticky-column-z-index);\n\t\t\tdisplay: flex;\n\t\t\tflex-direction: row;\n\t\t\talign-items: center;\n\t\t\tmin-width: 110px;\n\t\t\twidth: 110px;\n\t\t\tbackground-color: var(--color-main-background);\n\t\t\tborder-left: 1px solid var(--color-border);\n\t\t}\n\t}\n\n\t&__subtitle {\n\t\tcolor: var(--color-text-maxcontrast);\n\t}\n}\n"],sourceRoot:""}]);const o=r},26893:(t,e,s)=>{s.d(e,{A:()=>o});var a=s(71354),n=s.n(a),i=s(76314),r=s.n(i)()(n());r.push([t.id,"fieldset[data-v-ab9299ba]{font-weight:bold}","",{version:3,sources:["webpack://./apps/settings/src/components/Users/UserSettingsDialog.vue"],names:[],mappings:"AACA,0BACC,gBAAA",sourcesContent:["\nfieldset {\n\tfont-weight: bold;\n}\n"],sourceRoot:""}]);const o=r},55772:(t,e,s)=>{s.d(e,{A:()=>o});var a=s(71354),n=s.n(a),i=s(76314),r=s.n(i)()(n());r.push([t.id,".user-list[data-v-a583d0b2]{--avatar-cell-width: 48px;--cell-padding: 7px;--cell-width: 200px;--cell-width-large: 300px;--cell-min-width: calc(var(--cell-width) - (2 * var(--cell-padding)));--sticky-column-z-index: calc(var(--vs-dropdown-z-index) + 1);display:block;overflow:auto;height:100%}.user-list__header[data-v-a583d0b2],.user-list__footer[data-v-a583d0b2]{position:sticky;display:block}.user-list__header[data-v-a583d0b2]{top:0;z-index:calc(var(--sticky-column-z-index) + 1)}.user-list__footer[data-v-a583d0b2]{left:0}.user-list__body[data-v-a583d0b2]{display:flex;flex-direction:column;width:100%}","",{version:3,sources:["webpack://./apps/settings/src/components/Users/VirtualList.vue"],names:[],mappings:"AACA,4BACC,yBAAA,CACA,mBAAA,CACA,mBAAA,CACA,yBAAA,CACA,qEAAA,CACA,6DAAA,CAGA,aAAA,CACA,aAAA,CACA,WAAA,CAEA,wEAEC,eAAA,CAEA,aAAA,CAGD,oCACC,KAAA,CACA,8CAAA,CAGD,oCACC,MAAA,CAGD,kCACC,YAAA,CACA,qBAAA,CACA,UAAA",sourcesContent:["\n.user-list {\n\t--avatar-cell-width: 48px;\n\t--cell-padding: 7px;\n\t--cell-width: 200px;\n\t--cell-width-large: 300px;\n\t--cell-min-width: calc(var(--cell-width) - (2 * var(--cell-padding)));\n\t--sticky-column-z-index: calc(var(--vs-dropdown-z-index) + 1); // Keep the sticky column on top of the select dropdown\n\n\t// Necessary for virtual scroll optimized rendering\n\tdisplay: block;\n\toverflow: auto;\n\theight: 100%;\n\n\t&__header,\n\t&__footer {\n\t\tposition: sticky;\n\t\t// Fix sticky positioning in Firefox\n\t\tdisplay: block;\n\t}\n\n\t&__header {\n\t\ttop: 0;\n\t\tz-index: calc(var(--sticky-column-z-index) + 1);\n\t}\n\n\t&__footer {\n\t\tleft: 0;\n\t}\n\n\t&__body {\n\t\tdisplay: flex;\n\t\tflex-direction: column;\n\t\twidth: 100%;\n\t}\n}\n"],sourceRoot:""}]);const o=r},73599:(t,e,s)=>{s.d(e,{A:()=>o});var a=s(71354),n=s.n(a),i=s(76314),r=s.n(i)()(n());r.push([t.id,".app-content[data-v-fc8857fc]{display:flex;overflow:hidden;flex-direction:column;max-height:100%}","",{version:3,sources:["webpack://./apps/settings/src/views/UserManagement.vue"],names:[],mappings:"AACA,8BAEC,YAAA,CACA,eAAA,CACA,qBAAA,CACA,eAAA",sourcesContent:["\n.app-content {\n\t// Virtual list needs to be full height and is scrollable\n\tdisplay: flex;\n\toverflow: hidden;\n\tflex-direction: column;\n\tmax-height: 100%;\n}\n"],sourceRoot:""}]);const o=r},69943:(t,e,s)=>{s.d(e,{A:()=>o});var a=s(71354),n=s.n(a),i=s(76314),r=s.n(i)()(n());r.push([t.id,".account-management__system-list[data-v-9b250646]{height:auto !important;overflow:visible !important}.account-management__group-list[data-v-9b250646]{height:100% !important}.account-management__settings-toggle[data-v-9b250646]{margin-bottom:12px}","",{version:3,sources:["webpack://./apps/settings/src/views/UserManagementNavigation.vue"],names:[],mappings:"AAEC,kDACC,sBAAA,CACA,2BAAA,CAGD,iDACC,sBAAA,CAGD,sDACC,kBAAA",sourcesContent:["\n.account-management{\n\t&__system-list {\n\t\theight: auto !important;\n\t\toverflow: visible !important;\n\t}\n\n\t&__group-list {\n\t\theight: 100% !important;\n\t}\n\n\t&__settings-toggle {\n\t\tmargin-bottom: 12px;\n\t}\n}\n"],sourceRoot:""}]);const o=r},91827:(e,s,a)=>{a.r(s),a.d(s,{default:()=>ft});var n=a(53334),i=a(85471),r=a(18195),o=a(9165),l=a(85168),d=a(61338),c=a(54914),u=a(10833),A=a(6695),g=a(46222),p=a(55042),h=a(17334),m=a(36620);i.Ay.directive("elementVisibility",p.Zx);const v=i.Ay.extend({name:"VirtualList",props:{dataComponent:{type:[Object,Function],required:!0},dataKey:{type:String,required:!0},dataSources:{type:Array,required:!0},itemHeight:{type:Number,required:!0},extraProps:{type:Object,default:()=>({})}},data:()=>({bufferItems:3,index:0,headerHeight:0,tableHeight:0,resizeObserver:null}),computed:{startIndex(){return Math.max(0,this.index-3)},shownItems(){return Math.ceil((this.tableHeight-this.headerHeight)/this.itemHeight)+6},renderedItems(){return this.dataSources.slice(this.startIndex,this.startIndex+this.shownItems)},tbodyStyle(){const t=this.startIndex+this.shownItems>this.dataSources.length,e=this.dataSources.length-this.startIndex-this.shownItems,s=Math.min(this.dataSources.length-this.startIndex,e);return{paddingTop:"".concat(this.startIndex*this.itemHeight,"px"),paddingBottom:t?0:"".concat(s*this.itemHeight,"px")}}},mounted(){var t,e;const s=this.$el,a=null===(t=this.$refs)||void 0===t?void 0:t.tfoot,n=null===(e=this.$refs)||void 0===e?void 0:e.thead;this.resizeObserver=new ResizeObserver((0,h.debounce)((()=>{var t,e;this.headerHeight=null!==(t=null==n?void 0:n.clientHeight)&&void 0!==t?t:0,this.tableHeight=null!==(e=null==s?void 0:s.clientHeight)&&void 0!==e?e:0,m.A.debug("VirtualList resizeObserver updated"),this.onScroll()}),100,!1)),this.resizeObserver.observe(s),this.resizeObserver.observe(a),this.resizeObserver.observe(n),this.$el.addEventListener("scroll",this.onScroll)},beforeDestroy(){this.resizeObserver&&this.resizeObserver.disconnect()},methods:{handleFooterVisibility(t){t&&this.$emit("scroll-end")},onScroll(){this.index=Math.max(0,Math.round(this.$el.scrollTop/this.itemHeight))}}});var C=a(85072),w=a.n(C),_=a(97825),f=a.n(_),b=a(77659),y=a.n(b),x=a(55056),k=a.n(x),U=a(10540),S=a.n(U),G=a(41113),N=a.n(G),L=a(55772),B={};B.styleTagTransform=N(),B.setAttributes=k(),B.insert=y().bind(null,"head"),B.domAPI=f(),B.insertStyleElement=S(),w()(L.A,B),L.A&&L.A.locals&&L.A.locals;var D=a(14486);const q=(0,D.A)(v,(function(){var t=this,e=t._self._c;return t._self._setupProxy,e("table",{staticClass:"user-list"},[t._t("before"),t._v(" "),e("thead",{ref:"thead",staticClass:"user-list__header",attrs:{role:"rowgroup"}},[t._t("header")],2),t._v(" "),e("tbody",{staticClass:"user-list__body",style:t.tbodyStyle},t._l(t.renderedItems,(function(s,a){return e(t.dataComponent,t._b({key:s[t.dataKey],tag:"component",attrs:{user:s,visible:(a>=t.bufferItems||t.index<=t.bufferItems)&&a<t.shownItems-t.bufferItems}},"component",t.extraProps,!1))})),1),t._v(" "),e("tfoot",{directives:[{name:"element-visibility",rawName:"v-element-visibility",value:t.handleFooterVisibility,expression:"handleFooterVisibility"}],ref:"tfoot",staticClass:"user-list__footer",attrs:{role:"rowgroup"}},[t._t("footer")],2)],2)}),[],!1,null,"a583d0b2",null).exports;var I=a(9518),M=a(53278),O=a(16044),$=a(67607),T=a(82182);const P={name:"NewUserModal",components:{NcButton:I.A,NcModal:M.A,NcPasswordField:O.A,NcSelect:$.A,NcTextField:T.A},props:{loading:{type:Object,required:!0},newUser:{type:Object,required:!0},quotaOptions:{type:Array,required:!0}},data:()=>({possibleManagers:[],managerLabel:t("settings","Set user manager")}),computed:{showConfig(){return this.$store.getters.getShowConfig},settings(){return this.$store.getters.getServerData},usernameLabel(){return this.settings.newUserGenerateUserID?t("settings","Username will be autogenerated"):t("settings","Username (required)")},minPasswordLength(){return this.$store.getters.getPasswordPolicyMinLength},groups(){return this.$store.getters.getGroups.filter((t=>"disabled"!==t.id)).sort(((t,e)=>t.name.localeCompare(e.name)))},subAdminsGroups(){return this.$store.getters.getSubadminGroups},canAddGroups(){return this.groups.map((t=>((t=Object.assign({},t)).$isDisabled=!1===t.canAdd,t)))},languages(){return[{name:t("settings","Common languages"),languages:this.settings.languages.commonLanguages},...this.settings.languages.commonLanguages,{name:t("settings","Other languages"),languages:this.settings.languages.otherLanguages},...this.settings.languages.otherLanguages]}},async beforeMount(){await this.searchUserManager()},methods:{async createUser(){this.loading.all=!0;try{var t,e;await this.$store.dispatch("addUser",{userid:this.newUser.id,password:this.newUser.password,displayName:this.newUser.displayName,email:this.newUser.mailAddress,groups:this.newUser.groups.map((t=>t.id)),subadmin:this.newUser.subAdminsGroups.map((t=>t.id)),quota:this.newUser.quota.id,language:this.newUser.language.code,manager:this.newUser.manager.id}),this.$emit("reset"),null===(t=this.$refs.username)||void 0===t||null===(t=t.$refs)||void 0===t||null===(t=t.inputField)||void 0===t||null===(t=t.$refs)||void 0===t||null===(t=t.input)||void 0===t||null===(e=t.focus)||void 0===e||e.call(t),this.$emit("close")}catch(t){if(this.loading.all=!1,t.response&&t.response.data&&t.response.data.ocs&&t.response.data.ocs.meta){const e=t.response.data.ocs.meta.statuscode;var s,a;if(102===e)null===(s=this.$refs.username)||void 0===s||null===(s=s.$refs)||void 0===s||null===(s=s.inputField)||void 0===s||null===(s=s.$refs)||void 0===s||null===(s=s.input)||void 0===s||null===(a=s.focus)||void 0===a||a.call(s);else if(107===e){var n,i;null===(n=this.$refs.password)||void 0===n||null===(n=n.$refs)||void 0===n||null===(n=n.inputField)||void 0===n||null===(n=n.$refs)||void 0===n||null===(n=n.input)||void 0===n||null===(i=n.focus)||void 0===i||i.call(n)}}}},handleGroupInput(t){this.newUser.groups=t.filter((t=>Boolean(t.id)))},async createGroup(t){let{name:e}=t;this.loading.groups=!0;try{await this.$store.dispatch("addGroup",e),this.newUser.groups.push(this.groups.find((t=>t.id===e))),this.loading.groups=!1}catch(t){this.loading.groups=!1}},validateQuota(t){const e=OC.Util.computerFileSize(t);return null!==e&&e>=0?(t=OC.Util.humanFileSize(OC.Util.computerFileSize(t)),this.newUser.quota={id:t,label:t},this.newUser.quota):(this.newUser.quota=this.quotaOptions[0],this.quotaOptions[0])},languageFilterBy:(t,e,s)=>t.languages?t.languages.some((t=>{let{name:e}=t;return e.toLocaleLowerCase().includes(s.toLocaleLowerCase())})):(e||"").toLocaleLowerCase().includes(s.toLocaleLowerCase()),async searchUserManager(t){await this.$store.dispatch("searchUsers",{offset:0,limit:10,search:t}).then((t=>{const e=null!=t&&t.data?Object.values(null==t?void 0:t.data.ocs.data.users):[];e.length>0&&(this.possibleManagers=e)}))}}};var E=a(9499),F={};F.styleTagTransform=N(),F.setAttributes=k(),F.insert=y().bind(null,"head"),F.domAPI=f(),F.insertStyleElement=S(),w()(E.A,F),E.A&&E.A.locals&&E.A.locals;const z=(0,D.A)(P,(function(){var t=this,e=t._self._c;return e("NcModal",t._g({staticClass:"modal",attrs:{size:"small"}},t.$listeners),[e("form",{staticClass:"modal__form",attrs:{"data-test":"form",disabled:t.loading.all},on:{submit:function(e){return e.preventDefault(),t.createUser.apply(null,arguments)}}},[e("h2",[t._v(t._s(t.t("settings","New user")))]),t._v(" "),e("NcTextField",{ref:"username",staticClass:"modal__item",attrs:{"data-test":"username",value:t.newUser.id,disabled:t.settings.newUserGenerateUserID,label:t.usernameLabel,autocapitalize:"none",autocomplete:"off",spellcheck:"false",pattern:"[a-zA-Z0-9 _\\.@\\-']+",required:""},on:{"update:value":function(e){return t.$set(t.newUser,"id",e)}}}),t._v(" "),e("NcTextField",{staticClass:"modal__item",attrs:{"data-test":"displayName",value:t.newUser.displayName,label:t.t("settings","Display name"),autocapitalize:"none",autocomplete:"off",spellcheck:"false"},on:{"update:value":function(e){return t.$set(t.newUser,"displayName",e)}}}),t._v(" "),t.settings.newUserRequireEmail?t._e():e("span",{staticClass:"modal__hint",attrs:{id:"password-email-hint"}},[t._v("\n\t\t\t"+t._s(t.t("settings","Either password or email is required"))+"\n\t\t")]),t._v(" "),e("NcPasswordField",{ref:"password",staticClass:"modal__item",attrs:{"data-test":"password",value:t.newUser.password,minlength:t.minPasswordLength,maxlength:469,"aria-describedby":"password-email-hint",label:""===t.newUser.mailAddress?t.t("settings","Password (required)"):t.t("settings","Password"),autocapitalize:"none",autocomplete:"new-password",spellcheck:"false",required:""===t.newUser.mailAddress},on:{"update:value":function(e){return t.$set(t.newUser,"password",e)}}}),t._v(" "),e("NcTextField",{staticClass:"modal__item",attrs:{"data-test":"email",type:"email",value:t.newUser.mailAddress,"aria-describedby":"password-email-hint",label:""===t.newUser.password||t.settings.newUserRequireEmail?t.t("settings","Email (required)"):t.t("settings","Email"),autocapitalize:"none",autocomplete:"off",spellcheck:"false",required:""===t.newUser.password||t.settings.newUserRequireEmail},on:{"update:value":function(e){return t.$set(t.newUser,"mailAddress",e)}}}),t._v(" "),e("div",{staticClass:"modal__item"},[e("label",{staticClass:"modal__label",attrs:{for:"new-user-groups"}},[t._v("\n\t\t\t\t"+t._s(t.settings.isAdmin?t.t("settings","Groups"):t.t("settings","Groups (required)"))+"\n\t\t\t")]),t._v(" "),e("NcSelect",{staticClass:"modal__select",attrs:{"input-id":"new-user-groups",placeholder:t.t("settings","Set user groups"),disabled:t.loading.groups||t.loading.all,options:t.canAddGroups,value:t.newUser.groups,label:"name","close-on-select":!1,multiple:!0,taggable:!0,required:!t.settings.isAdmin},on:{input:t.handleGroupInput,"option:created":t.createGroup}})],1),t._v(" "),t.subAdminsGroups.length>0?e("div",{staticClass:"modal__item"},[e("label",{staticClass:"modal__label",attrs:{for:"new-user-sub-admin"}},[t._v("\n\t\t\t\t"+t._s(t.t("settings","Administered groups"))+"\n\t\t\t")]),t._v(" "),e("NcSelect",{staticClass:"modal__select",attrs:{"input-id":"new-user-sub-admin",placeholder:t.t("settings","Set user as admin for …"),options:t.subAdminsGroups,"close-on-select":!1,multiple:!0,label:"name"},model:{value:t.newUser.subAdminsGroups,callback:function(e){t.$set(t.newUser,"subAdminsGroups",e)},expression:"newUser.subAdminsGroups"}})],1):t._e(),t._v(" "),e("div",{staticClass:"modal__item"},[e("label",{staticClass:"modal__label",attrs:{for:"new-user-quota"}},[t._v("\n\t\t\t\t"+t._s(t.t("settings","Quota"))+"\n\t\t\t")]),t._v(" "),e("NcSelect",{staticClass:"modal__select",attrs:{"input-id":"new-user-quota",placeholder:t.t("settings","Set user quota"),options:t.quotaOptions,clearable:!1,taggable:!0,"create-option":t.validateQuota},model:{value:t.newUser.quota,callback:function(e){t.$set(t.newUser,"quota",e)},expression:"newUser.quota"}})],1),t._v(" "),t.showConfig.showLanguages?e("div",{staticClass:"modal__item"},[e("label",{staticClass:"modal__label",attrs:{for:"new-user-language"}},[t._v("\n\t\t\t\t"+t._s(t.t("settings","Language"))+"\n\t\t\t")]),t._v(" "),e("NcSelect",{staticClass:"modal__select",attrs:{"input-id":"new-user-language",placeholder:t.t("settings","Set default language"),clearable:!1,selectable:t=>!t.languages,"filter-by":t.languageFilterBy,options:t.languages,label:"name"},model:{value:t.newUser.language,callback:function(e){t.$set(t.newUser,"language",e)},expression:"newUser.language"}})],1):t._e(),t._v(" "),e("div",{class:["modal__item managers",{"icon-loading-small":t.loading.manager}]},[e("label",{staticClass:"modal__label",attrs:{for:"new-user-manager"}},[t._v("\n\t\t\t\t"+t._s(t.t("settings","Manager"))+"\n\t\t\t")]),t._v(" "),e("NcSelect",{staticClass:"modal__select",attrs:{"input-id":"new-user-manager",placeholder:t.managerLabel,options:t.possibleManagers,"user-select":!0,label:"displayname"},on:{search:t.searchUserManager},model:{value:t.newUser.manager,callback:function(e){t.$set(t.newUser,"manager",e)},expression:"newUser.manager"}})],1),t._v(" "),e("NcButton",{staticClass:"modal__submit",attrs:{"data-test":"submit",type:"primary","native-type":"submit"}},[t._v("\n\t\t\t"+t._s(t.t("settings","Add new user"))+"\n\t\t")])],1)])}),[],!1,null,"2fe7d69f",null).exports,R=i.Ay.extend({name:"UserListFooter",components:{NcLoadingIcon:g.A},props:{loading:{type:Boolean,required:!0},filteredUsers:{type:Array,required:!0}},computed:{userCount(){return this.loading?this.n("settings","{userCount} user …","{userCount} users …",this.filteredUsers.length,{userCount:this.filteredUsers.length}):this.n("settings","{userCount} user","{userCount} users",this.filteredUsers.length,{userCount:this.filteredUsers.length})}},methods:{t:n.Tl,n:n.zw}});var Q=a(23599),W={};W.styleTagTransform=N(),W.setAttributes=k(),W.insert=y().bind(null,"head"),W.domAPI=f(),W.insertStyleElement=S(),w()(Q.A,W),Q.A&&Q.A.locals&&Q.A.locals;const H=(0,D.A)(R,(function(){var t=this,e=t._self._c;return t._self._setupProxy,e("tr",{staticClass:"footer"},[e("th",{attrs:{scope:"row"}},[e("span",{staticClass:"hidden-visually"},[t._v(t._s(t.t("settings","Total rows summary")))])]),t._v(" "),e("td",{staticClass:"footer__cell footer__cell--loading"},[t.loading?e("NcLoadingIcon",{attrs:{title:t.t("settings","Loading users …"),size:32}}):t._e()],1),t._v(" "),e("td",{staticClass:"footer__cell footer__cell--count footer__cell--multiline"},[e("span",{attrs:{"aria-describedby":"user-count-desc"}},[t._v(t._s(t.userCount))]),t._v(" "),e("span",{staticClass:"hidden-visually",attrs:{id:"user-count-desc"}},[t._v("\n\t\t\t"+t._s(t.t("settings","Scroll to load more rows"))+"\n\t\t")])])])}),[],!1,null,"3ec0b16a",null).exports,Y=i.Ay.extend({name:"UserListHeader",props:{hasObfuscated:{type:Boolean,required:!0}},computed:{showConfig(){return this.$store.getters.getShowConfig},settings(){return this.$store.getters.getServerData},subAdminsGroups(){return this.$store.getters.getSubadminGroups},passwordLabel(){return this.hasObfuscated?(0,n.Tl)("settings","Password or insufficient permissions message"):(0,n.Tl)("settings","Password")}},methods:{t:n.Tl}});var j=a(12863),K={};K.styleTagTransform=N(),K.setAttributes=k(),K.insert=y().bind(null,"head"),K.domAPI=f(),K.insertStyleElement=S(),w()(j.A,K),j.A&&j.A.locals&&j.A.locals;const V=(0,D.A)(Y,(function(){var t=this,e=t._self._c;return t._self._setupProxy,e("tr",{staticClass:"header"},[e("th",{staticClass:"header__cell header__cell--avatar",attrs:{"data-cy-user-list-header-avatar":"",scope:"col"}},[e("span",{staticClass:"hidden-visually"},[t._v("\n\t\t\t"+t._s(t.t("settings","Avatar"))+"\n\t\t")])]),t._v(" "),e("th",{staticClass:"header__cell header__cell--displayname",attrs:{"data-cy-user-list-header-displayname":"",scope:"col"}},[e("strong",[t._v("\n\t\t\t"+t._s(t.t("settings","Display name"))+"\n\t\t")])]),t._v(" "),e("th",{staticClass:"header__cell header__cell--username",attrs:{"data-cy-user-list-header-username":"",scope:"col"}},[e("span",[t._v("\n\t\t\t"+t._s(t.t("settings","Username"))+"\n\t\t")])]),t._v(" "),e("th",{staticClass:"header__cell",class:{"header__cell--obfuscated":t.hasObfuscated},attrs:{"data-cy-user-list-header-password":"",scope:"col"}},[e("span",[t._v(t._s(t.passwordLabel))])]),t._v(" "),e("th",{staticClass:"header__cell",attrs:{"data-cy-user-list-header-email":"",scope:"col"}},[e("span",[t._v(t._s(t.t("settings","Email")))])]),t._v(" "),e("th",{staticClass:"header__cell header__cell--large",attrs:{"data-cy-user-list-header-groups":"",scope:"col"}},[e("span",[t._v(t._s(t.t("settings","Groups")))])]),t._v(" "),t.subAdminsGroups.length>0&&t.settings.isAdmin?e("th",{staticClass:"header__cell header__cell--large",attrs:{"data-cy-user-list-header-subadmins":"",scope:"col"}},[e("span",[t._v(t._s(t.t("settings","Group admin for")))])]):t._e(),t._v(" "),e("th",{staticClass:"header__cell",attrs:{"data-cy-user-list-header-quota":"",scope:"col"}},[e("span",[t._v(t._s(t.t("settings","Quota")))])]),t._v(" "),t.showConfig.showLanguages?e("th",{staticClass:"header__cell header__cell--large",attrs:{"data-cy-user-list-header-languages":"",scope:"col"}},[e("span",[t._v(t._s(t.t("settings","Language")))])]):t._e(),t._v(" "),t.showConfig.showUserBackend||t.showConfig.showStoragePath?e("th",{staticClass:"header__cell header__cell--large",attrs:{"data-cy-user-list-header-storage-location":"",scope:"col"}},[t.showConfig.showUserBackend?e("span",[t._v("\n\t\t\t"+t._s(t.t("settings","User backend"))+"\n\t\t")]):t._e(),t._v(" "),t.showConfig.showStoragePath?e("span",{staticClass:"header__subtitle"},[t._v("\n\t\t\t"+t._s(t.t("settings","Storage location"))+"\n\t\t")]):t._e()]):t._e(),t._v(" "),t.showConfig.showLastLogin?e("th",{staticClass:"header__cell",attrs:{"data-cy-user-list-header-last-login":"",scope:"col"}},[e("span",[t._v(t._s(t.t("settings","Last login")))])]):t._e(),t._v(" "),e("th",{staticClass:"header__cell header__cell--large header__cell--fill",attrs:{"data-cy-user-list-header-manager":"",scope:"col"}},[e("span",[t._v(t._s(t.t("settings","Manager")))])]),t._v(" "),e("th",{staticClass:"header__cell header__cell--actions",attrs:{"data-cy-user-list-header-actions":"",scope:"col"}},[e("span",{staticClass:"hidden-visually"},[t._v("\n\t\t\t"+t._s(t.t("settings","User actions"))+"\n\t\t")])])])}),[],!1,null,"3121155a",null).exports;var J=a(35810),Z=a(92457),X=a(41944),tt=a(95101),et=a(63420),st=a(24764);const at=(0,i.pM)({components:{NcActionButton:et.A,NcActions:st.A,NcIconSvgWrapper:A.A},props:{actions:{type:Array,required:!0},disabled:{type:Boolean,required:!0},edit:{type:Boolean,required:!0},user:{type:Object,required:!0}},computed:{editSvg(){return this.edit?'<svg xmlns="http://www.w3.org/2000/svg" id="mdi-check" viewBox="0 0 24 24"><path d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z" /></svg>':'<svg xmlns="http://www.w3.org/2000/svg" id="mdi-pencil" viewBox="0 0 24 24"><path d="M20.71,7.04C21.1,6.65 21.1,6 20.71,5.63L18.37,3.29C18,2.9 17.35,2.9 16.96,3.29L15.12,5.12L18.87,8.87M3,17.25V21H6.75L17.81,9.93L14.06,6.18L3,17.25Z" /></svg>'}},methods:{toggleEdit(){this.$emit("update:edit",!this.edit)}}}),nt=(0,D.A)(at,(function(){var t=this,e=t._self._c;return t._self._setupProxy,e("NcActions",{attrs:{"aria-label":t.t("settings","Toggle account actions menu"),disabled:t.disabled,inline:1}},[e("NcActionButton",{attrs:{"data-cy-user-list-action-toggle-edit":"".concat(t.edit),disabled:t.disabled},on:{click:t.toggleEdit},scopedSlots:t._u([{key:"icon",fn:function(){return[e("NcIconSvgWrapper",{key:t.editSvg,attrs:{svg:t.editSvg,"aria-hidden":"true"}})]},proxy:!0}])},[t._v("\n\t\t"+t._s(t.edit?t.t("settings","Done"):t.t("settings","Edit"))+"\n\t\t")]),t._v(" "),t._l(t.actions,(function(s,a){let{action:n,icon:i,text:r}=s;return e("NcActionButton",{key:a,attrs:{disabled:t.disabled,"aria-label":r,icon:i},on:{click:e=>n(e,{...t.user})}},[t._v("\n\t\t"+t._s(r)+"\n\t")])}))],2)}),[],!1,null,null,null).exports,it={props:{user:{type:Object,required:!0},settings:{type:Object,default:()=>({})},groups:{type:Array,default:()=>[]},subAdminsGroups:{type:Array,default:()=>[]},quotaOptions:{type:Array,default:()=>[]},languages:{type:Array,required:!0},externalActions:{type:Array,default:()=>[]}},computed:{showConfig(){return this.$store.getters.getShowConfig},userGroups(){return this.groups.filter((t=>this.user.groups.includes(t.id)))},userSubAdminsGroups(){return this.subAdminsGroups.filter((t=>this.user.subadmin.includes(t.id)))},availableGroups(){return this.groups.map((t=>{const e=Object.assign({},t);return e.$isDisabled=!1===t.canAdd&&!this.user.groups.includes(t.id)||!1===t.canRemove&&this.user.groups.includes(t.id),e}))},usedSpace(){return this.user.quota.used?t("settings","{size} used",{size:OC.Util.humanFileSize(this.user.quota.used)}):t("settings","{size} used",{size:OC.Util.humanFileSize(0)})},usedQuota(){let t=this.user.quota.quota;return t=t>0?Math.min(100,Math.round(this.user.quota.used/t*100)):95*(1-1/(this.user.quota.used/(10*Math.pow(2,30))+1)),isNaN(t)?0:t},userQuota(){if(this.user.quota.quota>=0){const t=OC.Util.humanFileSize(this.user.quota.quota);return this.quotaOptions.find((e=>e.id===t))||{id:t,label:t}}return"default"===this.user.quota.quota?this.quotaOptions[0]:this.quotaOptions[1]},minPasswordLength(){return this.$store.getters.getPasswordPolicyMinLength},userLanguage(){const t=this.languages[0].languages.concat(this.languages[1].languages).find((t=>t.code===this.user.language));return"object"!=typeof t&&""!==this.user.language?{code:this.user.language,name:this.user.language}:""!==this.user.language&&t},userLastLoginTooltip(){return this.user.lastLogin>0?OC.Util.formatDate(this.user.lastLogin):""},userLastLogin(){return this.user.lastLogin>0?OC.Util.relativeModifiedDate(this.user.lastLogin):t("settings","Never")}}};var rt=a(95668),ot=a(96763);const lt={name:"UserRow",components:{NcAvatar:X.A,NcLoadingIcon:g.A,NcProgressBar:tt.A,NcSelect:$.A,NcTextField:T.A,UserRowActions:nt},mixins:[it],props:{user:{type:Object,required:!0},visible:{type:Boolean,required:!0},users:{type:Array,required:!0},hasObfuscated:{type:Boolean,required:!0},groups:{type:Array,default:()=>[]},subAdminsGroups:{type:Array,required:!0},quotaOptions:{type:Array,required:!0},languages:{type:Array,required:!0},settings:{type:Object,required:!0},externalActions:{type:Array,default:()=>[]}},data(){var t;return{selectedQuota:!1,rand:Math.random().toString(36).substring(2),loadingPossibleManagers:!1,possibleManagers:[],currentManager:"",editing:!1,loading:{all:!1,displayName:!1,password:!1,mailAddress:!1,groups:!1,subadmins:!1,quota:!1,delete:!1,disable:!1,languages:!1,wipe:!1,manager:!1},editedDisplayName:this.user.displayname,editedPassword:"",editedMail:null!==(t=this.user.email)&&void 0!==t?t:""}},computed:{managerLabel:()=>t("settings","Set line manager"),isObfuscated(){return(0,rt.HK)(this.user)},showConfig(){return this.$store.getters.getShowConfig},isLoadingUser(){return this.loading.delete||this.loading.disable||this.loading.wipe},isLoadingField(){return this.loading.delete||this.loading.disable||this.loading.all},uniqueId(){return encodeURIComponent(this.user.id+this.rand)},userGroupsLabels(){return this.userGroups.map((t=>t.name)).join(", ")},userSubAdminsGroupsLabels(){return this.userSubAdminsGroups.map((t=>t.name)).join(", ")},usedSpace(){var e,s;return null!==(e=this.user.quota)&&void 0!==e&&e.used?t("settings","{size} used",{size:(0,J.v7)(null===(s=this.user.quota)||void 0===s?void 0:s.used)}):t("settings","{size} used",{size:(0,J.v7)(0)})},canEdit(){return(0,Z.HW)().uid!==this.user.id||this.settings.isAdmin},userQuota(){var e;let s=null===(e=this.user.quota)||void 0===e?void 0:e.quota;return"default"===s&&(s=this.settings.defaultQuota,"none"!==s&&(s=(0,J.lT)(s,!0))),"none"===s||-3===s?t("settings","Unlimited"):s>=0?(0,J.v7)(s):(0,J.v7)(0)},userActions(){const e=[{icon:"icon-delete",text:t("settings","Delete account"),action:this.deleteUser},{icon:"icon-delete",text:t("settings","Disconnect all devices and delete local data"),action:this.wipeUserDevices},{icon:this.user.enabled?"icon-close":"icon-add",text:this.user.enabled?t("settings","Disable account"):t("settings","Enable account"),action:this.enableDisableUser}];return null!==this.user.email&&""!==this.user.email&&e.push({icon:"icon-mail",text:t("settings","Resend welcome email"),action:this.sendWelcomeMail}),e.concat(this.externalActions)},editedUserQuota:{get(){return!1!==this.selectedQuota?this.selectedQuota:this.settings.defaultQuota!==rt.SA.id&&(0,J.lT)(this.settings.defaultQuota,!0)>=0?{id:this.settings.defaultQuota,label:this.settings.defaultQuota}:rt.SA},set(t){this.selectedQuota=t}},availableLanguages(){return this.languages[0].languages.concat(this.languages[1].languages)}},async beforeMount(){this.user.manager&&await this.initManager(this.user.manager)},methods:{wipeUserDevices(){const e=this.user.id;OC.dialogs.confirmDestructive(t("settings","In case of lost device or exiting the organization, this can remotely wipe the Nextcloud data from all devices associated with {userid}. Only works if the devices are connected to the internet.",{userid:e}),t("settings","Remote wipe of devices"),{type:OC.dialogs.YES_NO_BUTTONS,confirm:t("settings","Wipe {userid}'s devices",{userid:e}),confirmClasses:"error",cancel:t("settings","Cancel")},(s=>{s&&(this.loading.wipe=!0,this.loading.all=!0,this.$store.dispatch("wipeUserDevices",e).then((()=>(0,l.Te)(t("settings","Wiped {userid}'s devices",{userid:e}))),{timeout:2e3}).finally((()=>{this.loading.wipe=!1,this.loading.all=!1})))}),!0)},filterManagers(t){return t.filter((t=>t.id!==this.user.id))},async initManager(t){await this.$store.dispatch("getUser",t).then((t=>{this.currentManager=null==t?void 0:t.data.ocs.data}))},async searchInitialUserManager(){this.loadingPossibleManagers=!0,await this.searchUserManager(),this.loadingPossibleManagers=!1},async searchUserManager(t){await this.$store.dispatch("searchUsers",{offset:0,limit:10,search:t}).then((t=>{const e=null!=t&&t.data?this.filterManagers(Object.values(null==t?void 0:t.data.ocs.data.users)):[];e.length>0&&(this.possibleManagers=e)}))},async updateUserManager(e){null===e&&(this.currentManager=""),this.loading.manager=!0;try{await this.$store.dispatch("setUserData",{userid:this.user.id,key:"manager",value:this.currentManager?this.currentManager.id:""})}catch(e){(0,l.Qg)(t("setting","Failed to update line manager")),ot.error(e)}finally{this.loading.manager=!1}},deleteUser(){const e=this.user.id;OC.dialogs.confirmDestructive(t("settings","Fully delete {userid}'s account including all their personal files, app data, etc.",{userid:e}),t("settings","Account deletion"),{type:OC.dialogs.YES_NO_BUTTONS,confirm:t("settings","Delete {userid}'s account",{userid:e}),confirmClasses:"error",cancel:t("settings","Cancel")},(t=>{if(t)return this.loading.delete=!0,this.loading.all=!0,this.$store.dispatch("deleteUser",e).then((()=>{this.loading.delete=!1,this.loading.all=!1}))}),!0)},enableDisableUser(){this.loading.delete=!0,this.loading.all=!0;const t=this.user.id,e=!this.user.enabled;return this.$store.dispatch("enableDisableUser",{userid:t,enabled:e}).then((()=>{this.loading.delete=!1,this.loading.all=!1}))},updateDisplayName(){this.loading.displayName=!0,this.$store.dispatch("setUserData",{userid:this.user.id,key:"displayname",value:this.editedDisplayName}).then((()=>{this.loading.displayName=!1,this.editedDisplayName===this.user.displayname&&(0,l.Te)(t("setting","Display name was successfully changed"))}))},updatePassword(){this.loading.password=!0,0===this.editedPassword.length?((0,l.Qg)(t("setting","Password can't be empty")),this.loading.password=!1):this.$store.dispatch("setUserData",{userid:this.user.id,key:"password",value:this.editedPassword}).then((()=>{this.loading.password=!1,this.editedPassword="",(0,l.Te)(t("setting","Password was successfully changed"))}))},updateEmail(){this.loading.mailAddress=!0,""===this.editedMail?((0,l.Qg)(t("setting","Email can't be empty")),this.loading.mailAddress=!1,this.editedMail=this.user.email):this.$store.dispatch("setUserData",{userid:this.user.id,key:"email",value:this.editedMail}).then((()=>{this.loading.mailAddress=!1,this.editedMail===this.user.email&&(0,l.Te)(t("setting","Email was successfully changed"))}))},async createGroup(t){let{name:e}=t;this.loading={groups:!0,subadmins:!0};try{await this.$store.dispatch("addGroup",e);const t=this.user.id;await this.$store.dispatch("addUserGroup",{userid:t,gid:e})}catch(t){ot.error(t)}finally{this.loading={groups:!1,subadmins:!1}}return this.$store.getters.getGroups[this.groups.length]},async addUserGroup(t){if(t.isCreating)return;this.loading.groups=!0;const e=this.user.id,s=t.id;if(!1===t.canAdd)return!1;try{await this.$store.dispatch("addUserGroup",{userid:e,gid:s})}catch(t){ot.error(t)}finally{this.loading.groups=!1}},async removeUserGroup(t){if(!1===t.canRemove)return!1;this.loading.groups=!0;const e=this.user.id,s=t.id;try{await this.$store.dispatch("removeUserGroup",{userid:e,gid:s}),this.loading.groups=!1,this.$route.params.selectedGroup===s&&this.$store.commit("deleteUser",e)}catch{this.loading.groups=!1}},async addUserSubAdmin(t){this.loading.subadmins=!0;const e=this.user.id,s=t.id;try{await this.$store.dispatch("addUserSubAdmin",{userid:e,gid:s}),this.loading.subadmins=!1}catch(t){ot.error(t)}},async removeUserSubAdmin(t){this.loading.subadmins=!0;const e=this.user.id,s=t.id;try{await this.$store.dispatch("removeUserSubAdmin",{userid:e,gid:s})}catch(t){ot.error(t)}finally{this.loading.subadmins=!1}},async setUserQuota(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"none";"none"===t&&(t=rt.SA),this.loading.quota=!0,t=t.id?t.id:t;try{const e=((0,J.lT)(t,!0)||t).toString();await this.$store.dispatch("setUserData",{userid:this.user.id,key:"quota",value:e})}catch(t){ot.error(t)}finally{this.loading.quota=!1}return t},validateQuota(t){var e;return"object"==typeof t&&(t=(null===(e=t)||void 0===e?void 0:e.id)||t.label),null===(0,J.lT)(t,!0)?rt.SA:{id:t=(0,J.v7)((0,J.lT)(t,!0)),label:t}},async setUserLanguage(t){this.loading.languages=!0;try{await this.$store.dispatch("setUserData",{userid:this.user.id,key:"language",value:t.code}),this.loading.languages=!1}catch(t){ot.error(t)}return t},sendWelcomeMail(){this.loading.all=!0,this.$store.dispatch("sendWelcomeMail",this.user.id).then((()=>(0,l.Te)(t("setting","Welcome mail sent!"),{timeout:2e3}))).finally((()=>{this.loading.all=!1}))},async toggleEdit(){var t;if(this.editing=!this.editing,this.editing&&(await this.$nextTick(),null===(t=this.$refs.displayNameField)||void 0===t||null===(t=t.$refs)||void 0===t||null===(t=t.inputField)||void 0===t||null===(t=t.$refs)||void 0===t||null===(t=t.input)||void 0===t||t.focus()),this.editedDisplayName!==this.user.displayname)this.editedDisplayName=this.user.displayname;else if(this.editedMail!==this.user.email){var e;this.editedMail=null!==(e=this.user.email)&&void 0!==e?e:""}}}};var dt=a(74140),ct={};ct.styleTagTransform=N(),ct.setAttributes=k(),ct.insert=y().bind(null,"head"),ct.domAPI=f(),ct.insertStyleElement=S(),w()(dt.A,ct),dt.A&&dt.A.locals&&dt.A.locals;var ut=(0,D.A)(lt,(function(){var t,e,s,a,n=this,i=n._self._c;return i("tr",{staticClass:"user-list__row",attrs:{"data-cy-user-row":n.user.id}},[i("td",{staticClass:"row__cell row__cell--avatar",attrs:{"data-cy-user-list-cell-avatar":""}},[n.isLoadingUser?i("NcLoadingIcon",{attrs:{name:n.t("settings","Loading account …"),size:32}}):n.visible?i("NcAvatar",{attrs:{"disable-menu":"","show-user-status":!1,user:n.user.id}}):n._e()],1),n._v(" "),i("td",{staticClass:"row__cell row__cell--displayname",attrs:{"data-cy-user-list-cell-displayname":""}},[n.editing&&n.user.backendCapabilities.setDisplayName?[i("NcTextField",{ref:"displayNameField",staticClass:"user-row-text-field",class:{"icon-loading-small":n.loading.displayName},attrs:{"data-cy-user-list-input-displayname":"","data-loading":n.loading.displayName||void 0,"trailing-button-label":n.t("settings","Submit"),"show-trailing-button":!0,disabled:n.loading.displayName||n.isLoadingField,label:n.t("settings","Change display name"),"trailing-button-icon":"arrowRight",value:n.editedDisplayName,autocapitalize:"off",autocomplete:"off",spellcheck:"false"},on:{"update:value":function(t){n.editedDisplayName=t},"trailing-button-click":n.updateDisplayName}})]:n.isObfuscated?n._e():i("strong",{attrs:{title:(null===(t=n.user.displayname)||void 0===t?void 0:t.length)>20?n.user.displayname:null}},[n._v("\n\t\t\t"+n._s(n.user.displayname)+"\n\t\t")])],2),n._v(" "),i("td",{staticClass:"row__cell row__cell--username",attrs:{"data-cy-user-list-cell-username":""}},[i("span",{staticClass:"row__subtitle"},[n._v(n._s(n.user.id))])]),n._v(" "),i("td",{staticClass:"row__cell",class:{"row__cell--obfuscated":n.hasObfuscated},attrs:{"data-cy-user-list-cell-password":""}},[n.editing&&n.settings.canChangePassword&&n.user.backendCapabilities.setPassword?[i("NcTextField",{staticClass:"user-row-text-field",class:{"icon-loading-small":n.loading.password},attrs:{"data-cy-user-list-input-password":"","data-loading":n.loading.password||void 0,"trailing-button-label":n.t("settings","Submit"),"show-trailing-button":!0,disabled:n.loading.password||n.isLoadingField,minlength:n.minPasswordLength,maxlength:"469",label:n.t("settings","Set new password"),"trailing-button-icon":"arrowRight",value:n.editedPassword,autocapitalize:"off",autocomplete:"new-password",required:"",spellcheck:"false",type:"password"},on:{"update:value":function(t){n.editedPassword=t},"trailing-button-click":n.updatePassword}})]:n.isObfuscated?i("span",[n._v("\n\t\t\t"+n._s(n.t("settings","You do not have permissions to see the details of this account"))+"\n\t\t")]):n._e()],2),n._v(" "),i("td",{staticClass:"row__cell",attrs:{"data-cy-user-list-cell-email":""}},[n.editing?[i("NcTextField",{staticClass:"user-row-text-field",class:{"icon-loading-small":n.loading.mailAddress},attrs:{"data-cy-user-list-input-email":"","data-loading":n.loading.mailAddress||void 0,"show-trailing-button":!0,"trailing-button-label":n.t("settings","Submit"),label:n.t("settings","Set new email address"),disabled:n.loading.mailAddress||n.isLoadingField,"trailing-button-icon":"arrowRight",value:n.editedMail,autocapitalize:"off",autocomplete:"email",spellcheck:"false",type:"email"},on:{"update:value":function(t){n.editedMail=t},"trailing-button-click":n.updateEmail}})]:n.isObfuscated?n._e():i("span",{attrs:{title:(null===(e=n.user.email)||void 0===e?void 0:e.length)>20?n.user.email:null}},[n._v("\n\t\t\t"+n._s(n.user.email)+"\n\t\t")])],2),n._v(" "),i("td",{staticClass:"row__cell row__cell--large row__cell--multiline",attrs:{"data-cy-user-list-cell-groups":""}},[n.editing?[i("label",{staticClass:"hidden-visually",attrs:{for:"groups"+n.uniqueId}},[n._v("\n\t\t\t\t"+n._s(n.t("settings","Add user to group"))+"\n\t\t\t")]),n._v(" "),i("NcSelect",{attrs:{"data-cy-user-list-input-groups":"","data-loading":n.loading.groups||void 0,"input-id":"groups"+n.uniqueId,"close-on-select":!1,disabled:n.isLoadingField,loading:n.loading.groups,multiple:!0,"append-to-body":!1,options:n.availableGroups,placeholder:n.t("settings","Add account to group"),taggable:n.settings.isAdmin,value:n.userGroups,label:"name","no-wrap":!0,"create-option":t=>({name:t,isCreating:!0})},on:{"option:created":n.createGroup,"option:selected":t=>n.addUserGroup(t.at(-1)),"option:deselected":n.removeUserGroup}})]:n.isObfuscated?n._e():i("span",{attrs:{title:(null===(s=n.userGroupsLabels)||void 0===s?void 0:s.length)>40?n.userGroupsLabels:null}},[n._v("\n\t\t\t"+n._s(n.userGroupsLabels)+"\n\t\t")])],2),n._v(" "),n.subAdminsGroups.length>0&&n.settings.isAdmin?i("td",{staticClass:"row__cell row__cell--large row__cell--multiline",attrs:{"data-cy-user-list-cell-subadmins":""}},[n.editing&&n.settings.isAdmin&&n.subAdminsGroups.length>0?[i("label",{staticClass:"hidden-visually",attrs:{for:"subadmins"+n.uniqueId}},[n._v("\n\t\t\t\t"+n._s(n.t("settings","Set account as admin for"))+"\n\t\t\t")]),n._v(" "),i("NcSelect",{attrs:{"data-cy-user-list-input-subadmins":"","data-loading":n.loading.subadmins||void 0,"input-id":"subadmins"+n.uniqueId,"close-on-select":!1,disabled:n.isLoadingField,loading:n.loading.subadmins,label:"name","append-to-body":!1,multiple:!0,"no-wrap":!0,options:n.subAdminsGroups,placeholder:n.t("settings","Set account as admin for"),value:n.userSubAdminsGroups},on:{"option:deselected":n.removeUserSubAdmin,"option:selected":t=>n.addUserSubAdmin(t.at(-1))}})]:n.isObfuscated?n._e():i("span",{attrs:{title:(null===(a=n.userSubAdminsGroupsLabels)||void 0===a?void 0:a.length)>40?n.userSubAdminsGroupsLabels:null}},[n._v("\n\t\t\t"+n._s(n.userSubAdminsGroupsLabels)+"\n\t\t")])],2):n._e(),n._v(" "),i("td",{staticClass:"row__cell",attrs:{"data-cy-user-list-cell-quota":""}},[n.editing?[i("label",{staticClass:"hidden-visually",attrs:{for:"quota"+n.uniqueId}},[n._v("\n\t\t\t\t"+n._s(n.t("settings","Select account quota"))+"\n\t\t\t")]),n._v(" "),i("NcSelect",{attrs:{"close-on-select":!0,"create-option":n.validateQuota,"data-cy-user-list-input-quota":"","data-loading":n.loading.quota||void 0,disabled:n.isLoadingField,loading:n.loading.quota,"append-to-body":!1,clearable:!1,"input-id":"quota"+n.uniqueId,options:n.quotaOptions,placeholder:n.t("settings","Select account quota"),taggable:!0},on:{"option:selected":n.setUserQuota},model:{value:n.editedUserQuota,callback:function(t){n.editedUserQuota=t},expression:"editedUserQuota"}})]:n.isObfuscated?n._e():[i("span",{attrs:{id:"quota-progress"+n.uniqueId}},[n._v(n._s(n.userQuota)+" ("+n._s(n.usedSpace)+")")]),n._v(" "),i("NcProgressBar",{staticClass:"row__progress",class:{"row__progress--warn":n.usedQuota>80},attrs:{"aria-labelledby":"quota-progress"+n.uniqueId,value:n.usedQuota}})]],2),n._v(" "),n.showConfig.showLanguages?i("td",{staticClass:"row__cell row__cell--large",attrs:{"data-cy-user-list-cell-language":""}},[n.editing?[i("label",{staticClass:"hidden-visually",attrs:{for:"language"+n.uniqueId}},[n._v("\n\t\t\t\t"+n._s(n.t("settings","Set the language"))+"\n\t\t\t")]),n._v(" "),i("NcSelect",{attrs:{id:"language"+n.uniqueId,"data-cy-user-list-input-language":"","data-loading":n.loading.languages||void 0,"allow-empty":!1,disabled:n.isLoadingField,loading:n.loading.languages,clearable:!1,"append-to-body":!1,options:n.availableLanguages,placeholder:n.t("settings","No language set"),value:n.userLanguage,label:"name"},on:{input:n.setUserLanguage}})]:n.isObfuscated?n._e():i("span",[n._v("\n\t\t\t"+n._s(n.userLanguage.name)+"\n\t\t")])],2):n._e(),n._v(" "),n.showConfig.showUserBackend||n.showConfig.showStoragePath?i("td",{staticClass:"row__cell row__cell--large",attrs:{"data-cy-user-list-cell-storage-location":""}},[n.isObfuscated?n._e():[n.showConfig.showUserBackend?i("span",[n._v(n._s(n.user.backend))]):n._e(),n._v(" "),n.showConfig.showStoragePath?i("span",{staticClass:"row__subtitle",attrs:{title:n.user.storageLocation}},[n._v("\n\t\t\t\t"+n._s(n.user.storageLocation)+"\n\t\t\t")]):n._e()]],2):n._e(),n._v(" "),n.showConfig.showLastLogin?i("td",{staticClass:"row__cell",attrs:{title:n.userLastLoginTooltip,"data-cy-user-list-cell-last-login":""}},[n.isObfuscated?n._e():i("span",[n._v(n._s(n.userLastLogin))])]):n._e(),n._v(" "),i("td",{staticClass:"row__cell row__cell--large row__cell--fill",attrs:{"data-cy-user-list-cell-manager":""}},[n.editing?[i("label",{staticClass:"hidden-visually",attrs:{for:"manager"+n.uniqueId}},[n._v("\n\t\t\t\t"+n._s(n.managerLabel)+"\n\t\t\t")]),n._v(" "),i("NcSelect",{staticClass:"select--fill",attrs:{"data-cy-user-list-input-manager":"","data-loading":n.loading.manager||void 0,"input-id":"manager"+n.uniqueId,"close-on-select":!0,disabled:n.isLoadingField,"append-to-body":!1,loading:n.loadingPossibleManagers||n.loading.manager,label:"displayname",options:n.possibleManagers,placeholder:n.managerLabel},on:{open:n.searchInitialUserManager,search:n.searchUserManager,"option:selected":n.updateUserManager},model:{value:n.currentManager,callback:function(t){n.currentManager=t},expression:"currentManager"}})]:n.isObfuscated?n._e():i("span",[n._v("\n\t\t\t"+n._s(n.user.manager)+"\n\t\t")])],2),n._v(" "),i("td",{staticClass:"row__cell row__cell--actions",attrs:{"data-cy-user-list-cell-actions":""}},[n.visible&&!n.isObfuscated&&n.canEdit&&!n.loading.all?i("UserRowActions",{attrs:{actions:n.userActions,disabled:n.isLoadingField,edit:n.editing,user:n.user},on:{"update:edit":n.toggleEdit}}):n._e()],1)])}),[],!1,null,"2cdd4510",null);const At=ut.exports,gt=Object.freeze({id:"",displayName:"",password:"",mailAddress:"",groups:[],manager:"",subAdminsGroups:[],quota:rt.MY,language:{code:"en",name:t("settings","Default language")}}),pt={name:"UserList",components:{Fragment:c.F,NcEmptyContent:u.A,NcIconSvgWrapper:A.A,NcLoadingIcon:g.A,NewUserModal:z,UserListFooter:H,UserListHeader:V,VirtualList:q},props:{selectedGroup:{type:String,default:null},externalActions:{type:Array,default:()=>[]}},setup:()=>({mdiAccountGroup:o.n7C,rowHeight:55,UserRow:At}),data:()=>({loading:{all:!1,groups:!1,users:!1},newUser:{...gt},isInitialLoad:!0,searchQuery:""}),computed:{showConfig(){return this.$store.getters.getShowConfig},settings(){return this.$store.getters.getServerData},style(){return{"--row-height":"".concat(this.rowHeight,"px")}},hasObfuscated(){return this.filteredUsers.some((t=>(0,rt.HK)(t)))},users(){return this.$store.getters.getUsers},filteredUsers(){return"disabled"===this.selectedGroup?this.users.filter((t=>!1===t.enabled)):(this.settings.isAdmin,this.users.filter((t=>!1!==t.enabled)))},groups(){return this.$store.getters.getGroups.filter((t=>"disabled"!==t.id)).sort(((t,e)=>t.name.localeCompare(e.name)))},subAdminsGroups(){return this.$store.getters.getSubadminGroups},quotaOptions(){const t=this.settings.quotaPreset.reduce(((t,e)=>t.concat({id:e,label:e})),[]);return this.settings.allowUnlimitedQuota&&t.unshift(rt.SA),t.unshift(rt.MY),t},usersOffset(){return this.$store.getters.getUsersOffset},usersLimit(){return this.$store.getters.getUsersLimit},disabledUsersOffset(){return this.$store.getters.getDisabledUsersOffset},disabledUsersLimit(){return this.$store.getters.getDisabledUsersLimit},usersCount(){return this.users.length},languages(){return[{label:t("settings","Common languages"),languages:this.settings.languages.commonLanguages},{label:t("settings","Other languages"),languages:this.settings.languages.otherLanguages}]}},watch:{async selectedGroup(t){this.isInitialLoad=!0,await this.redirectIfDisabled(),this.$store.commit("resetUsers"),await this.loadUsers(),this.setNewUserDefaultGroup(t)},filteredUsers(t){m.A.debug("".concat(t.length," filtered user(s)"))}},async created(){await this.loadUsers()},async mounted(){this.settings.canChangePassword||OC.Notification.showTemporary(t("settings","Password change is disabled because the master key is disabled")),this.resetForm(),(0,d.B1)("nextcloud:unified-search.search",this.search),(0,d.B1)("nextcloud:unified-search.reset",this.resetSearch),await this.redirectIfDisabled()},beforeDestroy(){(0,d.al)("nextcloud:unified-search.search",this.search),(0,d.al)("nextcloud:unified-search.reset",this.resetSearch)},methods:{async handleScrollEnd(){await this.loadUsers()},async loadUsers(){this.loading.users=!0;try{"disabled"===this.selectedGroup?await this.$store.dispatch("getDisabledUsers",{offset:this.disabledUsersOffset,limit:this.disabledUsersLimit}):await this.$store.dispatch("getUsers",{offset:this.usersOffset,limit:this.usersLimit,group:this.selectedGroup,search:this.searchQuery}),m.A.debug("".concat(this.users.length," total user(s) loaded"))}catch(t){m.A.error("Failed to load accounts",{error:t}),(0,l.Qg)("Failed to load accounts")}this.loading.users=!1,this.isInitialLoad=!1},closeModal(){this.$store.commit("setShowConfig",{key:"showNewUserForm",value:!1})},async search(t){let{query:e}=t;this.searchQuery=e,this.$store.commit("resetUsers"),await this.loadUsers()},resetSearch(){this.search({query:""})},resetForm(){this.newUser=Object.assign({},gt),this.settings.defaultLanguage&&i.Ay.set(this.newUser.language,"code",this.settings.defaultLanguage),this.setNewUserDefaultGroup(this.selectedGroup),this.loading.all=!1},setNewUserDefaultGroup(t){if(t&&t.length>0){const e=this.groups.find((e=>e.id===t));if(e)return void(this.newUser.groups=[e])}this.newUser.groups=[]},async redirectIfDisabled(){const t=this.$store.getters.getGroups;"disabled"===this.selectedGroup&&t.findIndex((t=>"disabled"===t.id&&0===t.usercount))>-1&&(this.$router.push({name:"users"}),await this.loadUsers())}}};var ht=a(63895),mt={};mt.styleTagTransform=N(),mt.setAttributes=k(),mt.insert=y().bind(null,"head"),mt.domAPI=f(),mt.insertStyleElement=S(),w()(ht.A,mt),ht.A&&ht.A.locals&&ht.A.locals;const vt=(0,D.A)(pt,(function(){var t=this,e=t._self._c;return e("Fragment",[t.showConfig.showNewUserForm?e("NewUserModal",{attrs:{loading:t.loading,"new-user":t.newUser,"quota-options":t.quotaOptions},on:{reset:t.resetForm,close:t.closeModal}}):t._e(),t._v(" "),0===t.filteredUsers.length?e("NcEmptyContent",{staticClass:"empty",attrs:{name:t.isInitialLoad&&t.loading.users?null:t.t("settings","No accounts")},scopedSlots:t._u([{key:"icon",fn:function(){return[t.isInitialLoad&&t.loading.users?e("NcLoadingIcon",{attrs:{name:t.t("settings","Loading accounts …"),size:64}}):e("NcIconSvgWrapper",{attrs:{path:t.mdiAccountGroup,size:64}})]},proxy:!0}],null,!1,226056511)}):e("VirtualList",{style:t.style,attrs:{"data-component":t.UserRow,"data-sources":t.filteredUsers,"data-key":"id","data-cy-user-list":"","item-height":t.rowHeight,"extra-props":{users:t.users,settings:t.settings,hasObfuscated:t.hasObfuscated,groups:t.groups,subAdminsGroups:t.subAdminsGroups,quotaOptions:t.quotaOptions,languages:t.languages,externalActions:t.externalActions}},on:{"scroll-end":t.handleScrollEnd},scopedSlots:t._u([{key:"before",fn:function(){return[e("caption",{staticClass:"hidden-visually"},[t._v("\n\t\t\t\t"+t._s(t.t("settings","List of accounts. This list is not fully rendered for performance reasons. The accounts will be rendered as you navigate through the list."))+"\n\t\t\t")])]},proxy:!0},{key:"header",fn:function(){return[e("UserListHeader",{attrs:{"has-obfuscated":t.hasObfuscated}})]},proxy:!0},{key:"footer",fn:function(){return[e("UserListFooter",{attrs:{loading:t.loading.users,"filtered-users":t.filteredUsers}})]},proxy:!0}])})],1)}),[],!1,null,"a6e11582",null).exports,Ct=(0,i.pM)({name:"UserManagement",components:{NcAppContent:r.A,UserList:vt},data:()=>({externalActions:[]}),computed:{pageHeading(){var t;return null===this.selectedGroupDecoded?(0,n.Tl)("settings","Active accounts"):null!==(t={admin:(0,n.Tl)("settings","Admins"),disabled:(0,n.Tl)("settings","Disabled accounts")}[this.selectedGroupDecoded])&&void 0!==t?t:(0,n.Tl)("settings","Account group: {group}",{group:this.selectedGroupDecoded})},selectedGroup(){return this.$route.params.selectedGroup},selectedGroupDecoded(){return this.selectedGroup?decodeURIComponent(this.selectedGroup):null}},beforeMount(){this.$store.commit("initGroups",{groups:this.$store.getters.getServerData.groups,orderBy:this.$store.getters.getServerData.sortGroups,userCount:this.$store.getters.getServerData.userCount}),this.$store.dispatch("getPasswordPolicyMinLength")},created(){var t,e,s;window.OCA=null!==(t=window.OCA)&&void 0!==t?t:{},window.OCA.Settings=null!==(e=window.OCA.Settings)&&void 0!==e?e:{},window.OCA.Settings.UserList=null!==(s=window.OCA.Settings.UserList)&&void 0!==s?s:{},window.OCA.Settings.UserList.registerAction=this.registerAction},methods:{t:n.Tl,registerAction(t,e,s){return this.externalActions.push({icon:t,text:e,action:s}),this.externalActions}}});var wt=a(73599),_t={};_t.styleTagTransform=N(),_t.setAttributes=k(),_t.insert=y().bind(null,"head"),_t.domAPI=f(),_t.insertStyleElement=S(),w()(wt.A,_t),wt.A&&wt.A.locals&&wt.A.locals;const ft=(0,D.A)(Ct,(function(){var t=this,e=t._self._c;return t._self._setupProxy,e("NcAppContent",{attrs:{"page-heading":t.pageHeading}},[e("UserList",{attrs:{"selected-group":t.selectedGroupDecoded,"external-actions":t.externalActions}})],1)}),[],!1,null,"fc8857fc",null).exports},38250:(e,s,a)=>{a.r(s),a.d(s,{default:()=>dt});var n=a(85471),i=a(9165),r=a(85168),o=a(53334),l=a(44131),d=a(63961),c=a(42530),u=a(19858),A=a(52439),g=a(71246),p=a(46447),h=a(9518),m=a(70563),v=a(6695),C=a(46222),w=a(54914),_=a(63420),f=a(53278),b=a(48934),y=a(72755),x=a(11037),k=a(93919);const U={name:"GroupListItem",components:{AccountGroup:y.A,Delete:x.A,Fragment:w.F,NcActionButton:_.A,NcActionInput:l.A,NcAppNavigationItem:A.A,NcButton:h.A,NcCounterBubble:m.A,NcModal:f.A,NcNoteCard:b.A,Pencil:k.A},props:{active:{type:Boolean,required:!0},count:{type:Number,default:null},id:{type:String,required:!0},name:{type:String,required:!0}},data:()=>({loadingRenameGroup:!1,openGroupMenu:!1,showRemoveGroupModal:!1}),computed:{settings(){return this.$store.getters.getServerData}},methods:{handleGroupMenuOpen(){this.openGroupMenu=!0},async renameGroup(t){if(""===t.trim())return;const e=this.$refs.displayNameInput.$el.querySelector('input[type="text"]').value;if(""!==e.trim())try{this.openGroupMenu=!1,this.loadingRenameGroup=!0,await this.$store.dispatch("renameGroup",{groupid:t.trim(),displayName:e.trim()}),this.loadingRenameGroup=!1}catch{this.openGroupMenu=!0,this.loadingRenameGroup=!1}},async removeGroup(){try{await this.$store.dispatch("removeGroup",this.id),this.showRemoveGroupModal=!1}catch(e){(0,r.Qg)(t("settings",'Failed to remove group "{group}"',{group:this.name}))}}}};var S=a(85072),G=a.n(S),N=a(97825),L=a.n(N),B=a(77659),D=a.n(B),q=a(55056),I=a.n(q),M=a(10540),O=a.n(M),$=a(41113),T=a.n($),P=a(96412),E={};E.styleTagTransform=T(),E.setAttributes=I(),E.insert=D().bind(null,"head"),E.domAPI=L(),E.insertStyleElement=O(),G()(P.A,E),P.A&&P.A.locals&&P.A.locals;var F=a(14486);const z=(0,F.A)(U,(function(){var t=this,e=t._self._c;return e("Fragment",[t.showRemoveGroupModal?e("NcModal",{on:{close:function(e){t.showRemoveGroupModal=!1}}},[e("div",{staticClass:"modal__content"},[e("h2",{staticClass:"modal__header"},[t._v("\n\t\t\t\t"+t._s(t.t("settings","Please confirm the group removal"))+"\n\t\t\t")]),t._v(" "),e("NcNoteCard",{attrs:{type:"warning","show-alert":""}},[t._v("\n\t\t\t\t"+t._s(t.t("settings",'You are about to remove the group "{group}". The accounts will NOT be deleted.',{group:t.name}))+"\n\t\t\t")]),t._v(" "),e("div",{staticClass:"modal__button-row"},[e("NcButton",{attrs:{type:"secondary"},on:{click:function(e){t.showRemoveGroupModal=!1}}},[t._v("\n\t\t\t\t\t"+t._s(t.t("settings","Cancel"))+"\n\t\t\t\t")]),t._v(" "),e("NcButton",{attrs:{type:"primary"},on:{click:t.removeGroup}},[t._v("\n\t\t\t\t\t"+t._s(t.t("settings","Confirm"))+"\n\t\t\t\t")])],1)],1)]):t._e(),t._v(" "),e("NcAppNavigationItem",{key:t.id,attrs:{exact:!0,name:t.name,to:{name:"group",params:{selectedGroup:encodeURIComponent(t.id)}},loading:t.loadingRenameGroup,"menu-open":t.openGroupMenu},on:{"update:menuOpen":t.handleGroupMenuOpen},scopedSlots:t._u([{key:"icon",fn:function(){return[e("AccountGroup",{attrs:{size:20}})]},proxy:!0},{key:"counter",fn:function(){return[t.count?e("NcCounterBubble",{attrs:{type:t.active?"highlighted":void 0}},[t._v("\n\t\t\t\t"+t._s(t.count)+"\n\t\t\t")]):t._e()]},proxy:!0},{key:"actions",fn:function(){return["admin"!==t.id&&"disabled"!==t.id&&t.settings.isAdmin?e("NcActionInput",{ref:"displayNameInput",attrs:{"trailing-button-label":t.t("settings","Submit"),type:"text",value:t.name,label:t.t("settings","Rename group")},on:{submit:function(e){return t.renameGroup(t.id)}},scopedSlots:t._u([{key:"icon",fn:function(){return[e("Pencil",{attrs:{size:20}})]},proxy:!0}],null,!1,580569589)}):t._e(),t._v(" "),"admin"!==t.id&&"disabled"!==t.id&&t.settings.isAdmin?e("NcActionButton",{on:{click:function(e){t.showRemoveGroupModal=!0}},scopedSlots:t._u([{key:"icon",fn:function(){return[e("Delete",{attrs:{size:20}})]},proxy:!0}],null,!1,2705356561)},[t._v("\n\t\t\t\t"+t._s(t.t("settings","Remove group"))+"\n\t\t\t")]):t._e()]},proxy:!0}])})],1)}),[],!1,null,"17dd13c0",null).exports;var R=a(35810),Q=a(63814),W=a(26287),H=a(89902),Y=a(947),j=a(32073),K=a(67607),V=a(15916),J=a(95668),Z=a(96763);const X={name:"UserSettingsDialog",components:{NcAppSettingsDialog:H.N,NcAppSettingsSection:Y.A,NcCheckboxRadioSwitch:j.A,NcNoteCard:b.A,NcSelect:K.A},props:{open:{type:Boolean,required:!0}},data:()=>({selectedQuota:!1,loadingSendMail:!1}),computed:{groupSorting:{get(){return this.$store.getters.getGroupSorting===V.q.GroupName?"name":"member-count"},set(t){this.$store.commit("setGroupSorting","name"===t?V.q.GroupName:V.q.UserCount)}},isGroupSortingEnforced(){return this.$store.getters.getServerData.forceSortGroupByName},isModalOpen:{get(){return this.open},set(t){this.$emit("update:open",t)}},showConfig(){return this.$store.getters.getShowConfig},settings(){return this.$store.getters.getServerData},showLanguages:{get(){return this.showConfig.showLanguages},set(t){this.setShowConfig("showLanguages",t)}},showLastLogin:{get(){return this.showConfig.showLastLogin},set(t){this.setShowConfig("showLastLogin",t)}},showUserBackend:{get(){return this.showConfig.showUserBackend},set(t){this.setShowConfig("showUserBackend",t)}},showStoragePath:{get(){return this.showConfig.showStoragePath},set(t){this.setShowConfig("showStoragePath",t)}},quotaOptions(){const t=this.settings.quotaPreset.reduce(((t,e)=>t.concat({id:e,label:e})),[]);return this.settings.allowUnlimitedQuota&&t.unshift(J.SA),t},defaultQuota:{get(){return!1!==this.selectedQuota?this.selectedQuota:this.settings.defaultQuota!==J.SA.id&&OC.Util.computerFileSize(this.settings.defaultQuota)>=0?{id:this.settings.defaultQuota,label:this.settings.defaultQuota}:J.SA},set(t){this.selectedQuota=t}},sendWelcomeMail:{get(){return this.settings.newUserSendEmail},async set(t){try{this.loadingSendMail=!0,this.$store.commit("setServerData",{...this.settings,newUserSendEmail:t}),await W.A.post((0,Q.Jv)("/settings/users/preferences/newUser.sendEmail"),{value:t?"yes":"no"})}catch(t){Z.error("could not update newUser.sendEmail preference: "+t.message,t)}finally{this.loadingSendMail=!1}}}},methods:{setShowConfig(t,e){this.$store.commit("setShowConfig",{key:t,value:e})},validateQuota(t){var e;return"object"==typeof t&&(t=(null===(e=t)||void 0===e?void 0:e.id)||t.label),null===(0,R.lT)(t)?J.SA:{id:t=(0,R.v7)((0,R.lT)(t)),label:t}},setDefaultQuota(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"none";"none"===t&&(t=J.SA),this.$store.dispatch("setAppConfig",{app:"files",key:"default_quota",value:t.id?t.id:t}).then((()=>{"object"!=typeof t&&(t={id:t,label:t}),this.defaultQuota=t}))}}};var tt=a(26893),et={};et.styleTagTransform=T(),et.setAttributes=I(),et.insert=D().bind(null,"head"),et.domAPI=L(),et.insertStyleElement=O(),G()(tt.A,et),tt.A&&tt.A.locals&&tt.A.locals;const st=(0,F.A)(X,(function(){var t=this,e=t._self._c;return e("NcAppSettingsDialog",{attrs:{open:t.isModalOpen,"show-navigation":!0,name:t.t("settings","Account management settings")},on:{"update:open":function(e){t.isModalOpen=e}}},[e("NcAppSettingsSection",{attrs:{id:"visibility-settings",name:t.t("settings","Visibility")}},[e("NcCheckboxRadioSwitch",{attrs:{type:"switch","data-test":"showLanguages",checked:t.showLanguages},on:{"update:checked":function(e){t.showLanguages=e}}},[t._v("\n\t\t\t"+t._s(t.t("settings","Show language"))+"\n\t\t")]),t._v(" "),e("NcCheckboxRadioSwitch",{attrs:{type:"switch","data-test":"showUserBackend",checked:t.showUserBackend},on:{"update:checked":function(e){t.showUserBackend=e}}},[t._v("\n\t\t\t"+t._s(t.t("settings","Show account backend"))+"\n\t\t")]),t._v(" "),e("NcCheckboxRadioSwitch",{attrs:{type:"switch","data-test":"showStoragePath",checked:t.showStoragePath},on:{"update:checked":function(e){t.showStoragePath=e}}},[t._v("\n\t\t\t"+t._s(t.t("settings","Show storage path"))+"\n\t\t")]),t._v(" "),e("NcCheckboxRadioSwitch",{attrs:{type:"switch","data-test":"showLastLogin",checked:t.showLastLogin},on:{"update:checked":function(e){t.showLastLogin=e}}},[t._v("\n\t\t\t"+t._s(t.t("settings","Show last login"))+"\n\t\t")])],1),t._v(" "),e("NcAppSettingsSection",{attrs:{id:"groups-sorting",name:t.t("settings","Sorting")}},[t.isGroupSortingEnforced?e("NcNoteCard",{attrs:{type:"warning"}},[t._v("\n\t\t\t"+t._s(t.t("settings","The system config enforces sorting the groups by name. This also disables showing the member count."))+"\n\t\t")]):t._e(),t._v(" "),e("fieldset",[e("legend",[t._v(t._s(t.t("settings","Group list sorting")))]),t._v(" "),e("NcCheckboxRadioSwitch",{attrs:{type:"radio",checked:t.groupSorting,"data-test":"sortGroupsByMemberCount",disabled:t.isGroupSortingEnforced,name:"group-sorting-mode",value:"member-count"},on:{"update:checked":function(e){t.groupSorting=e}}},[t._v("\n\t\t\t\t"+t._s(t.t("settings","By member count"))+"\n\t\t\t")]),t._v(" "),e("NcCheckboxRadioSwitch",{attrs:{type:"radio",checked:t.groupSorting,"data-test":"sortGroupsByName",disabled:t.isGroupSortingEnforced,name:"group-sorting-mode",value:"name"},on:{"update:checked":function(e){t.groupSorting=e}}},[t._v("\n\t\t\t\t"+t._s(t.t("settings","By name"))+"\n\t\t\t")])],1)],1),t._v(" "),e("NcAppSettingsSection",{attrs:{id:"email-settings",name:t.t("settings","Send email")}},[e("NcCheckboxRadioSwitch",{attrs:{type:"switch","data-test":"sendWelcomeMail",checked:t.sendWelcomeMail,disabled:t.loadingSendMail},on:{"update:checked":function(e){t.sendWelcomeMail=e}}},[t._v("\n\t\t\t"+t._s(t.t("settings","Send welcome email to new accounts"))+"\n\t\t")])],1),t._v(" "),e("NcAppSettingsSection",{attrs:{id:"default-settings",name:t.t("settings","Defaults")}},[e("NcSelect",{attrs:{"input-label":t.t("settings","Default quota"),placement:"top",taggable:!0,options:t.quotaOptions,"create-option":t.validateQuota,placeholder:t.t("settings","Select default quota"),clearable:!1},on:{"option:selected":t.setDefaultQuota},model:{value:t.defaultQuota,callback:function(e){t.defaultQuota=e},expression:"defaultQuota"}})],1)],1)}),[],!1,null,"ab9299ba",null).exports;var at=a(31755),nt=a(24387);function it(t){return void 0===t?null:{id:t.id,title:t.name,usercount:t.usercount,count:Math.max(0,t.usercount-t.disabled)}}const rt=(0,n.pM)({__name:"UserManagementNavigation",setup(t){const e=(0,nt.lq)(),s=(0,nt.rd)(),a=(0,at.P)(),w=(0,n.KR)(!1),_=(0,n.EW)((()=>{var t;return null===(t=e.params)||void 0===t?void 0:t.selectedGroup})),f=(0,n.EW)((()=>_.value?decodeURIComponent(_.value):null)),b=(0,n.EW)((()=>a.getters.getUserCount)),y=(0,n.EW)((()=>a.getters.getSortedGroups)),{adminGroup:x,disabledGroup:k,userGroups:U}=(t=>{const e=(0,n.EW)((()=>t.value.filter((t=>"disabled"!==t.id&&"admin"!==t.id)).map((t=>it(t))).filter((t=>null!==t))));return{adminGroup:(0,n.EW)((()=>it(t.value.find((t=>"admin"===t.id))))),disabledGroup:(0,n.EW)((()=>it(t.value.find((t=>"disabled"===t.id))))),userGroups:e}})(y),S=(0,n.EW)((()=>a.getters.getServerData.isAdmin)),G=(0,n.KR)(!1),N=(0,n.KR)(!1),L=(0,n.KR)(!1),B=(0,n.KR)("");return{__sfc:!0,route:e,router:s,store:a,isDialogOpen:w,selectedGroup:_,selectedGroupDecoded:f,userCount:b,groups:y,adminGroup:x,disabledGroup:k,userGroups:U,isAdmin:S,isAddGroupOpen:G,loadingAddGroup:N,hasAddGroupError:L,newGroupName:B,createGroup:async function(){L.value=!1;const t=B.value.trim();if(""!==t){G.value=!1,N.value=!0;try{await a.dispatch("addGroup",t),await s.push({name:"group",params:{selectedGroup:encodeURIComponent(t)}}),B.value=""}catch{(0,r.Qg)((0,o.Tl)("settings","Failed to create group"))}N.value=!1}else L.value=!0},showNewUserMenu:function(){a.commit("setShowConfig",{key:"showNewUserForm",value:!0})},mdiAccount:i.Gbn,mdiAccountOff:i.lBC,mdiCog:i.CZ3,mdiPlus:i.biz,mdiShieldAccount:i.Jey,t:o.Tl,NcActionInput:l.A,NcActionText:d.A,NcAppNavigation:c.A,NcAppNavigationCaption:u.N,NcAppNavigationItem:A.A,NcAppNavigationList:g.A,NcAppNavigationNew:p.A,NcButton:h.A,NcCounterBubble:m.A,NcIconSvgWrapper:v.A,NcLoadingIcon:C.A,GroupListItem:z,UserSettingsDialog:st}}});var ot=a(69943),lt={};lt.styleTagTransform=T(),lt.setAttributes=I(),lt.insert=D().bind(null,"head"),lt.domAPI=L(),lt.insertStyleElement=O(),G()(ot.A,lt),ot.A&&ot.A.locals&&ot.A.locals;const dt=(0,F.A)(rt,(function(){var t=this,e=t._self._c,s=t._self._setupProxy;return e(s.NcAppNavigation,{attrs:{"aria-label":s.t("settings","Account management")},scopedSlots:t._u([{key:"footer",fn:function(){return[e(s.NcButton,{staticClass:"account-management__settings-toggle",attrs:{type:"tertiary"},on:{click:function(t){s.isDialogOpen=!0}},scopedSlots:t._u([{key:"icon",fn:function(){return[e(s.NcIconSvgWrapper,{attrs:{path:s.mdiCog}})]},proxy:!0}])},[t._v("\n\t\t\t"+t._s(s.t("settings","Account management settings"))+"\n\t\t")]),t._v(" "),e(s.UserSettingsDialog,{attrs:{open:s.isDialogOpen},on:{"update:open":function(t){s.isDialogOpen=t}}})]},proxy:!0}])},[e(s.NcAppNavigationNew,{attrs:{"button-id":"new-user-button",text:s.t("settings","New account")},on:{click:s.showNewUserMenu,keyup:[function(e){return!e.type.indexOf("key")&&t._k(e.keyCode,"enter",13,e.key,"Enter")?null:s.showNewUserMenu.apply(null,arguments)},function(e){return!e.type.indexOf("key")&&t._k(e.keyCode,"space",32,e.key,[" ","Spacebar"])?null:s.showNewUserMenu.apply(null,arguments)}]},scopedSlots:t._u([{key:"icon",fn:function(){return[e(s.NcIconSvgWrapper,{attrs:{path:s.mdiPlus}})]},proxy:!0}])}),t._v(" "),e(s.NcAppNavigationList,{staticClass:"account-management__system-list",attrs:{"data-cy-users-settings-navigation-groups":"system"}},[e(s.NcAppNavigationItem,{attrs:{id:"everyone",exact:!0,name:s.t("settings","Active accounts"),to:{name:"users"}},scopedSlots:t._u([{key:"icon",fn:function(){return[e(s.NcIconSvgWrapper,{attrs:{path:s.mdiAccount}})]},proxy:!0},{key:"counter",fn:function(){return[s.userCount?e(s.NcCounterBubble,{attrs:{type:s.selectedGroupDecoded?void 0:"highlighted"}},[t._v("\n\t\t\t\t\t"+t._s(s.userCount)+"\n\t\t\t\t")]):t._e()]},proxy:!0}])}),t._v(" "),s.isAdmin?e(s.NcAppNavigationItem,{attrs:{id:"admin",exact:!0,name:s.t("settings","Admins"),to:{name:"group",params:{selectedGroup:"admin"}}},scopedSlots:t._u([{key:"icon",fn:function(){return[e(s.NcIconSvgWrapper,{attrs:{path:s.mdiShieldAccount}})]},proxy:!0},{key:"counter",fn:function(){return[s.adminGroup&&s.adminGroup.count>0?e(s.NcCounterBubble,{attrs:{type:"admin"===s.selectedGroupDecoded?"highlighted":void 0}},[t._v("\n\t\t\t\t\t"+t._s(s.adminGroup.count)+"\n\t\t\t\t")]):t._e()]},proxy:!0}],null,!1,2218088905)}):t._e(),t._v(" "),s.disabledGroup&&(s.disabledGroup.usercount>0||-1===s.disabledGroup.usercount)?e(s.NcAppNavigationItem,{attrs:{id:"disabled",exact:!0,name:s.t("settings","Disabled accounts"),to:{name:"group",params:{selectedGroup:"disabled"}}},scopedSlots:t._u([{key:"icon",fn:function(){return[e(s.NcIconSvgWrapper,{attrs:{path:s.mdiAccountOff}})]},proxy:!0},s.disabledGroup.usercount>0?{key:"counter",fn:function(){return[e(s.NcCounterBubble,{attrs:{type:"disabled"===s.selectedGroupDecoded?"highlighted":void 0}},[t._v("\n\t\t\t\t\t"+t._s(s.disabledGroup.usercount)+"\n\t\t\t\t")])]},proxy:!0}:null],null,!0)}):t._e()],1),t._v(" "),e(s.NcAppNavigationCaption,{attrs:{name:s.t("settings","Groups"),disabled:s.loadingAddGroup,"aria-label":s.loadingAddGroup?s.t("settings","Creating group…"):s.t("settings","Create group"),"force-menu":"","is-heading":"",open:s.isAddGroupOpen},on:{"update:open":function(t){s.isAddGroupOpen=t}},scopedSlots:t._u([{key:"actionsTriggerIcon",fn:function(){return[s.loadingAddGroup?e(s.NcLoadingIcon):e(s.NcIconSvgWrapper,{attrs:{path:s.mdiPlus}})]},proxy:!0},{key:"actions",fn:function(){return[e(s.NcActionText,{scopedSlots:t._u([{key:"icon",fn:function(){return[e("AccountGroup",{attrs:{size:20}})]},proxy:!0}])},[t._v("\n\t\t\t\t"+t._s(s.t("settings","Create group"))+"\n\t\t\t")]),t._v(" "),e(s.NcActionInput,{attrs:{label:s.t("settings","Group name"),"data-cy-users-settings-new-group-name":"","label-outside":!1,disabled:s.loadingAddGroup,value:s.newGroupName,error:s.hasAddGroupError,"helper-text":s.hasAddGroupError?s.t("settings","Please enter a valid group name"):""},on:{"update:value":function(t){s.newGroupName=t},submit:s.createGroup}})]},proxy:!0}])}),t._v(" "),e(s.NcAppNavigationList,{staticClass:"account-management__group-list",attrs:{"data-cy-users-settings-navigation-groups":"custom"}},t._l(s.userGroups,(function(t){return e(s.GroupListItem,{key:t.id,attrs:{id:t.id,active:s.selectedGroupDecoded===t.id,name:t.title,count:t.count}})})),1)],1)}),[],!1,null,"9b250646",null).exports},26734:t=>{t.exports="data:image/svg+xml,%3csvg%20xmlns=%27http://www.w3.org/2000/svg%27%20width=%2724%27%20height=%2724%27%20fill=%27%23222%27%3e%3cpath%20d=%27M15.4%2016.6L10.8%2012l4.6-4.6L14%206l-6%206%206%206%201.4-1.4z%27/%3e%3c/svg%3e"},51338:t=>{t.exports="data:image/svg+xml,%3csvg%20xmlns=%27http://www.w3.org/2000/svg%27%20width=%2724%27%20height=%2724%27%20fill=%27%23222%27%3e%3cpath%20d=%27M18.4%207.4L17%206l-6%206%206%206%201.4-1.4-4.6-4.6%204.6-4.6m-6%200L11%206l-6%206%206%206%201.4-1.4L7.8%2012l4.6-4.6z%27/%3e%3c/svg%3e"},57818:t=>{t.exports="data:image/svg+xml,%3csvg%20xmlns=%27http://www.w3.org/2000/svg%27%20width=%2724%27%20height=%2724%27%20fill=%27%23222%27%3e%3cpath%20d=%27M5.6%207.4L7%206l6%206-6%206-1.4-1.4%204.6-4.6-4.6-4.6m6%200L13%206l6%206-6%206-1.4-1.4%204.6-4.6-4.6-4.6z%27/%3e%3c/svg%3e"},31926:t=>{t.exports="data:image/svg+xml,%3csvg%20xmlns=%27http://www.w3.org/2000/svg%27%20width=%2724%27%20height=%2724%27%20fill=%27%23222%27%3e%3cpath%20d=%27M8.6%2016.6l4.6-4.6-4.6-4.6L10%206l6%206-6%206-1.4-1.4z%27/%3e%3c/svg%3e"}}]); -//# sourceMappingURL=settings-users-3239.js.map?v=7e3101aa20fe47be15fe
\ No newline at end of file +/*! For license information please see settings-users-3239.js.license?v=a0d2948d88455156ef59 */ +"use strict";(self.webpackChunknextcloud=self.webpackChunknextcloud||[]).push([[3239],{95668:(e,s,a)=>{a.d(s,{HK:()=>r,MY:()=>i,SA:()=>n});const n={id:"none",label:t("settings","Unlimited")},i={id:"default",label:t("settings","Default quota")},r=t=>{const e=Object.keys(t);return 1===e.length&&"id"===e.at(0)}},96412:(t,e,s)=>{s.d(e,{A:()=>o});var a=s(71354),n=s.n(a),i=s(76314),r=s.n(i)()(n());r.push([t.id,".modal__header[data-v-17dd13c0]{margin:0}.modal__content[data-v-17dd13c0]{display:flex;flex-direction:column;align-items:center;padding:20px;gap:4px 0}.modal__button-row[data-v-17dd13c0]{display:flex;width:100%;justify-content:space-between}","",{version:3,sources:["webpack://./apps/settings/src/components/GroupListItem.vue"],names:[],mappings:"AAEC,gCACC,QAAA,CAGD,iCACC,YAAA,CACA,qBAAA,CACA,kBAAA,CACA,YAAA,CACA,SAAA,CAGD,oCACC,YAAA,CACA,UAAA,CACA,6BAAA",sourcesContent:["\n.modal {\n\t&__header {\n\t\tmargin: 0;\n\t}\n\n\t&__content {\n\t\tdisplay: flex;\n\t\tflex-direction: column;\n\t\talign-items: center;\n\t\tpadding: 20px;\n\t\tgap: 4px 0;\n\t}\n\n\t&__button-row {\n\t\tdisplay: flex;\n\t\twidth: 100%;\n\t\tjustify-content: space-between;\n\t}\n}\n"],sourceRoot:""}]);const o=r},63895:(t,e,s)=>{s.d(e,{A:()=>o});var a=s(71354),n=s.n(a),i=s(76314),r=s.n(i)()(n());r.push([t.id,".empty[data-v-a6e11582] .icon-vue{width:64px;height:64px}.empty[data-v-a6e11582] .icon-vue svg{max-width:64px;max-height:64px}","",{version:3,sources:["webpack://./apps/settings/src/components/UserList.vue"],names:[],mappings:"AAKE,kCACC,UAAA,CACA,WAAA,CAEA,sCACC,cAAA,CACA,eAAA",sourcesContent:["\n@import './Users/shared/styles.scss';\n\n.empty {\n\t:deep {\n\t\t.icon-vue {\n\t\t\twidth: 64px;\n\t\t\theight: 64px;\n\n\t\t\tsvg {\n\t\t\t\tmax-width: 64px;\n\t\t\t\tmax-height: 64px;\n\t\t\t}\n\t\t}\n\t}\n}\n"],sourceRoot:""}]);const o=r},72353:(t,e,s)=>{s.d(e,{A:()=>o});var a=s(71354),n=s.n(a),i=s(76314),r=s.n(i)()(n());r.push([t.id,".modal__form[data-v-3647f8c2]{display:flex;flex-direction:column;align-items:center;padding:20px;gap:4px 0}.modal__item[data-v-3647f8c2]{width:100%}.modal__item[data-v-3647f8c2]:not(:focus):not(:active){border-color:var(--color-border-dark)}.modal__hint[data-v-3647f8c2]{color:var(--color-text-maxcontrast);margin-top:8px;align-self:flex-start}.modal__label[data-v-3647f8c2]{display:block;padding:4px 0}.modal__select[data-v-3647f8c2]{width:100%}.modal__submit[data-v-3647f8c2]{margin-top:20px}","",{version:3,sources:["webpack://./apps/settings/src/components/Users/NewUserModal.vue"],names:[],mappings:"AAEC,8BACC,YAAA,CACA,qBAAA,CACA,kBAAA,CACA,YAAA,CACA,SAAA,CAGD,8BACC,UAAA,CAEA,uDACC,qCAAA,CAIF,8BACC,mCAAA,CACA,cAAA,CACA,qBAAA,CAGD,+BACC,aAAA,CACA,aAAA,CAGD,gCACC,UAAA,CAGD,gCACC,eAAA",sourcesContent:["\n.modal {\n\t&__form {\n\t\tdisplay: flex;\n\t\tflex-direction: column;\n\t\talign-items: center;\n\t\tpadding: 20px;\n\t\tgap: 4px 0;\n\t}\n\n\t&__item {\n\t\twidth: 100%;\n\n\t\t&:not(:focus):not(:active) {\n\t\t\tborder-color: var(--color-border-dark);\n\t\t}\n\t}\n\n\t&__hint {\n\t\tcolor: var(--color-text-maxcontrast);\n\t\tmargin-top: 8px;\n\t\talign-self: flex-start;\n\t}\n\n\t&__label {\n\t\tdisplay: block;\n\t\tpadding: 4px 0;\n\t}\n\n\t&__select {\n\t\twidth: 100%;\n\t}\n\n\t&__submit {\n\t\tmargin-top: 20px;\n\t}\n}\n"],sourceRoot:""}]);const o=r},23599:(t,e,s)=>{s.d(e,{A:()=>o});var a=s(71354),n=s.n(a),i=s(76314),r=s.n(i)()(n());r.push([t.id,".footer[data-v-3ec0b16a]{position:relative;display:flex;min-width:100%;width:fit-content;height:var(--row-height);background-color:var(--color-main-background)}.footer__cell[data-v-3ec0b16a]{display:flex;flex-direction:column;justify-content:center;padding:0 var(--cell-padding);min-width:var(--cell-width);width:var(--cell-width);color:var(--color-main-text)}.footer__cell strong[data-v-3ec0b16a],.footer__cell span[data-v-3ec0b16a],.footer__cell label[data-v-3ec0b16a]{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;overflow-wrap:anywhere}@media(min-width: 670px){.footer__cell--avatar[data-v-3ec0b16a],.footer__cell--displayname[data-v-3ec0b16a]{position:sticky;z-index:var(--sticky-column-z-index);background-color:var(--color-main-background)}.footer__cell--avatar[data-v-3ec0b16a]{left:0}.footer__cell--displayname[data-v-3ec0b16a]{left:var(--avatar-cell-width);border-right:1px solid var(--color-border)}}.footer__cell--username[data-v-3ec0b16a]{padding-left:calc(var(--default-grid-baseline)*3)}.footer__cell--avatar[data-v-3ec0b16a]{min-width:var(--avatar-cell-width);width:var(--avatar-cell-width);align-items:center;padding:0;user-select:none}.footer__cell--multiline span[data-v-3ec0b16a]{line-height:1.3em;white-space:unset}@supports(-webkit-line-clamp: 2){.footer__cell--multiline span[data-v-3ec0b16a]{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}}.footer__cell--large[data-v-3ec0b16a]{min-width:var(--cell-width-large);width:var(--cell-width-large)}.footer__cell--obfuscated[data-v-3ec0b16a]{min-width:400px;width:400px}.footer__cell--fill[data-v-3ec0b16a]{min-width:var(--cell-width-large);width:100%}.footer__cell--actions[data-v-3ec0b16a]{position:sticky;right:0;z-index:var(--sticky-column-z-index);display:flex;flex-direction:row;align-items:center;min-width:110px;width:110px;background-color:var(--color-main-background);border-left:1px solid var(--color-border)}.footer__subtitle[data-v-3ec0b16a]{color:var(--color-text-maxcontrast)}.footer__cell[data-v-3ec0b16a]{position:sticky;color:var(--color-text-maxcontrast)}.footer__cell--loading[data-v-3ec0b16a]{left:0;min-width:var(--avatar-cell-width);width:var(--avatar-cell-width);align-items:center;padding:0}.footer__cell--count[data-v-3ec0b16a]{left:var(--avatar-cell-width);min-width:var(--cell-width);width:var(--cell-width)}","",{version:3,sources:["webpack://./apps/settings/src/components/Users/UserListFooter.vue","webpack://./apps/settings/src/components/Users/shared/styles.scss"],names:[],mappings:"AAGA,yBCoBC,iBAAA,CACA,YAAA,CACA,cAAA,CACA,iBAAA,CACA,wBAAA,CACA,6CAAA,CAIA,+BACC,YAAA,CACA,qBAAA,CACA,sBAAA,CACA,6BAAA,CACA,2BAAA,CACA,uBAAA,CACA,4BAAA,CAEA,+GAGC,eAAA,CACA,sBAAA,CACA,kBAAA,CACA,sBAAA,CAGD,yBACC,mFAEC,eAAA,CACA,oCAAA,CACA,6CAAA,CAGD,uCACC,MAAA,CAGD,4CACC,6BAAA,CACA,0CAAA,CAAA,CAIF,yCACC,iDAAA,CAGD,uCACC,kCAAA,CACA,8BAAA,CACA,kBAAA,CACA,SAAA,CACA,gBAAA,CAIA,+CACC,iBAAA,CACA,iBAAA,CAEA,iCAJD,+CAKE,mBAAA,CACA,oBAAA,CACA,2BAAA,CAAA,CAKH,sCACC,iCAAA,CACA,6BAAA,CAGD,2CACC,eAAA,CACA,WAAA,CAID,qCACC,iCAAA,CACA,UAAA,CAGD,wCACC,eAAA,CACA,OAAA,CACA,oCAAA,CACA,YAAA,CACA,kBAAA,CACA,kBAAA,CACA,eAAA,CACA,WAAA,CACA,6CAAA,CACA,yCAAA,CAIF,mCACC,mCAAA,CDrHD,+BACC,eAAA,CACA,mCAAA,CAEA,wCACC,MAAA,CACA,kCAAA,CACA,8BAAA,CACA,kBAAA,CACA,SAAA,CAGD,sCACC,6BAAA,CACA,2BAAA,CACA,uBAAA",sourcesContent:["\n@import './shared/styles.scss';\n\n.footer {\n\t@include row;\n\t@include cell;\n\n\t&__cell {\n\t\tposition: sticky;\n\t\tcolor: var(--color-text-maxcontrast);\n\n\t\t&--loading {\n\t\t\tleft: 0;\n\t\t\tmin-width: var(--avatar-cell-width);\n\t\t\twidth: var(--avatar-cell-width);\n\t\t\talign-items: center;\n\t\t\tpadding: 0;\n\t\t}\n\n\t\t&--count {\n\t\t\tleft: var(--avatar-cell-width);\n\t\t\tmin-width: var(--cell-width);\n\t\t\twidth: var(--cell-width);\n\t\t}\n\t}\n}\n","/**\n * @copyright 2023 Christopher Ng <chrng8@gmail.com>\n *\n * @author Christopher Ng <chrng8@gmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\n@mixin row {\n\tposition: relative;\n\tdisplay: flex;\n\tmin-width: 100%;\n\twidth: fit-content;\n\theight: var(--row-height);\n\tbackground-color: var(--color-main-background);\n}\n\n@mixin cell {\n\t&__cell {\n\t\tdisplay: flex;\n\t\tflex-direction: column;\n\t\tjustify-content: center;\n\t\tpadding: 0 var(--cell-padding);\n\t\tmin-width: var(--cell-width);\n\t\twidth: var(--cell-width);\n\t\tcolor: var(--color-main-text);\n\n\t\tstrong,\n\t\tspan,\n\t\tlabel {\n\t\t\toverflow: hidden;\n\t\t\ttext-overflow: ellipsis;\n\t\t\twhite-space: nowrap;\n\t\t\toverflow-wrap: anywhere;\n\t\t}\n\n\t\t@media (min-width: 670px) { /* Show one &--large column between stickied columns */\n\t\t\t&--avatar,\n\t\t\t&--displayname {\n\t\t\t\tposition: sticky;\n\t\t\t\tz-index: var(--sticky-column-z-index);\n\t\t\t\tbackground-color: var(--color-main-background);\n\t\t\t}\n\n\t\t\t&--avatar {\n\t\t\t\tleft: 0;\n\t\t\t}\n\n\t\t\t&--displayname {\n\t\t\t\tleft: var(--avatar-cell-width);\n\t\t\t\tborder-right: 1px solid var(--color-border);\n\t\t\t}\n\t\t}\n\n\t\t&--username {\n\t\t\tpadding-left: calc(var(--default-grid-baseline) * 3);\n\t\t}\n\n\t\t&--avatar {\n\t\t\tmin-width: var(--avatar-cell-width);\n\t\t\twidth: var(--avatar-cell-width);\n\t\t\talign-items: center;\n\t\t\tpadding: 0;\n\t\t\tuser-select: none;\n\t\t}\n\n\t\t&--multiline {\n\t\t\tspan {\n\t\t\t\tline-height: 1.3em;\n\t\t\t\twhite-space: unset;\n\n\t\t\t\t@supports (-webkit-line-clamp: 2) {\n\t\t\t\t\tdisplay: -webkit-box;\n\t\t\t\t\t-webkit-line-clamp: 2;\n\t\t\t\t\t-webkit-box-orient: vertical;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t&--large {\n\t\t\tmin-width: var(--cell-width-large);\n\t\t\twidth: var(--cell-width-large);\n\t\t}\n\n\t\t&--obfuscated {\n\t\t\tmin-width: 400px;\n\t\t\twidth: 400px;\n\t\t}\n\n\t\t// Fill remaining row space with cell\n\t\t&--fill {\n\t\t\tmin-width: var(--cell-width-large);\n\t\t\twidth: 100%;\n\t\t}\n\n\t\t&--actions {\n\t\t\tposition: sticky;\n\t\t\tright: 0;\n\t\t\tz-index: var(--sticky-column-z-index);\n\t\t\tdisplay: flex;\n\t\t\tflex-direction: row;\n\t\t\talign-items: center;\n\t\t\tmin-width: 110px;\n\t\t\twidth: 110px;\n\t\t\tbackground-color: var(--color-main-background);\n\t\t\tborder-left: 1px solid var(--color-border);\n\t\t}\n\t}\n\n\t&__subtitle {\n\t\tcolor: var(--color-text-maxcontrast);\n\t}\n}\n"],sourceRoot:""}]);const o=r},87637:(t,e,s)=>{s.d(e,{A:()=>o});var a=s(71354),n=s.n(a),i=s(76314),r=s.n(i)()(n());r.push([t.id,".header[data-v-3ec6e22e]{position:relative;display:flex;min-width:100%;width:fit-content;height:var(--row-height);background-color:var(--color-main-background);border-bottom:1px solid var(--color-border)}.header__cell[data-v-3ec6e22e]{display:flex;flex-direction:column;justify-content:center;padding:0 var(--cell-padding);min-width:var(--cell-width);width:var(--cell-width);color:var(--color-main-text)}.header__cell strong[data-v-3ec6e22e],.header__cell span[data-v-3ec6e22e],.header__cell label[data-v-3ec6e22e]{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;overflow-wrap:anywhere}@media(min-width: 670px){.header__cell--avatar[data-v-3ec6e22e],.header__cell--displayname[data-v-3ec6e22e]{position:sticky;z-index:var(--sticky-column-z-index);background-color:var(--color-main-background)}.header__cell--avatar[data-v-3ec6e22e]{left:0}.header__cell--displayname[data-v-3ec6e22e]{left:var(--avatar-cell-width);border-right:1px solid var(--color-border)}}.header__cell--username[data-v-3ec6e22e]{padding-left:calc(var(--default-grid-baseline)*3)}.header__cell--avatar[data-v-3ec6e22e]{min-width:var(--avatar-cell-width);width:var(--avatar-cell-width);align-items:center;padding:0;user-select:none}.header__cell--multiline span[data-v-3ec6e22e]{line-height:1.3em;white-space:unset}@supports(-webkit-line-clamp: 2){.header__cell--multiline span[data-v-3ec6e22e]{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}}.header__cell--large[data-v-3ec6e22e]{min-width:var(--cell-width-large);width:var(--cell-width-large)}.header__cell--obfuscated[data-v-3ec6e22e]{min-width:400px;width:400px}.header__cell--fill[data-v-3ec6e22e]{min-width:var(--cell-width-large);width:100%}.header__cell--actions[data-v-3ec6e22e]{position:sticky;right:0;z-index:var(--sticky-column-z-index);display:flex;flex-direction:row;align-items:center;min-width:110px;width:110px;background-color:var(--color-main-background);border-left:1px solid var(--color-border)}.header__subtitle[data-v-3ec6e22e]{color:var(--color-text-maxcontrast)}","",{version:3,sources:["webpack://./apps/settings/src/components/Users/UserListHeader.vue","webpack://./apps/settings/src/components/Users/shared/styles.scss"],names:[],mappings:"AAGA,yBCoBC,iBAAA,CACA,YAAA,CACA,cAAA,CACA,iBAAA,CACA,wBAAA,CACA,6CAAA,CDrBA,2CAAA,CCyBA,+BACC,YAAA,CACA,qBAAA,CACA,sBAAA,CACA,6BAAA,CACA,2BAAA,CACA,uBAAA,CACA,4BAAA,CAEA,+GAGC,eAAA,CACA,sBAAA,CACA,kBAAA,CACA,sBAAA,CAGD,yBACC,mFAEC,eAAA,CACA,oCAAA,CACA,6CAAA,CAGD,uCACC,MAAA,CAGD,4CACC,6BAAA,CACA,0CAAA,CAAA,CAIF,yCACC,iDAAA,CAGD,uCACC,kCAAA,CACA,8BAAA,CACA,kBAAA,CACA,SAAA,CACA,gBAAA,CAIA,+CACC,iBAAA,CACA,iBAAA,CAEA,iCAJD,+CAKE,mBAAA,CACA,oBAAA,CACA,2BAAA,CAAA,CAKH,sCACC,iCAAA,CACA,6BAAA,CAGD,2CACC,eAAA,CACA,WAAA,CAID,qCACC,iCAAA,CACA,UAAA,CAGD,wCACC,eAAA,CACA,OAAA,CACA,oCAAA,CACA,YAAA,CACA,kBAAA,CACA,kBAAA,CACA,eAAA,CACA,WAAA,CACA,6CAAA,CACA,yCAAA,CAIF,mCACC,mCAAA",sourcesContent:["\n@import './shared/styles.scss';\n\n.header {\n\t@include row;\n\t@include cell;\n\n\tborder-bottom: 1px solid var(--color-border);\n}\n","/**\n * @copyright 2023 Christopher Ng <chrng8@gmail.com>\n *\n * @author Christopher Ng <chrng8@gmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\n@mixin row {\n\tposition: relative;\n\tdisplay: flex;\n\tmin-width: 100%;\n\twidth: fit-content;\n\theight: var(--row-height);\n\tbackground-color: var(--color-main-background);\n}\n\n@mixin cell {\n\t&__cell {\n\t\tdisplay: flex;\n\t\tflex-direction: column;\n\t\tjustify-content: center;\n\t\tpadding: 0 var(--cell-padding);\n\t\tmin-width: var(--cell-width);\n\t\twidth: var(--cell-width);\n\t\tcolor: var(--color-main-text);\n\n\t\tstrong,\n\t\tspan,\n\t\tlabel {\n\t\t\toverflow: hidden;\n\t\t\ttext-overflow: ellipsis;\n\t\t\twhite-space: nowrap;\n\t\t\toverflow-wrap: anywhere;\n\t\t}\n\n\t\t@media (min-width: 670px) { /* Show one &--large column between stickied columns */\n\t\t\t&--avatar,\n\t\t\t&--displayname {\n\t\t\t\tposition: sticky;\n\t\t\t\tz-index: var(--sticky-column-z-index);\n\t\t\t\tbackground-color: var(--color-main-background);\n\t\t\t}\n\n\t\t\t&--avatar {\n\t\t\t\tleft: 0;\n\t\t\t}\n\n\t\t\t&--displayname {\n\t\t\t\tleft: var(--avatar-cell-width);\n\t\t\t\tborder-right: 1px solid var(--color-border);\n\t\t\t}\n\t\t}\n\n\t\t&--username {\n\t\t\tpadding-left: calc(var(--default-grid-baseline) * 3);\n\t\t}\n\n\t\t&--avatar {\n\t\t\tmin-width: var(--avatar-cell-width);\n\t\t\twidth: var(--avatar-cell-width);\n\t\t\talign-items: center;\n\t\t\tpadding: 0;\n\t\t\tuser-select: none;\n\t\t}\n\n\t\t&--multiline {\n\t\t\tspan {\n\t\t\t\tline-height: 1.3em;\n\t\t\t\twhite-space: unset;\n\n\t\t\t\t@supports (-webkit-line-clamp: 2) {\n\t\t\t\t\tdisplay: -webkit-box;\n\t\t\t\t\t-webkit-line-clamp: 2;\n\t\t\t\t\t-webkit-box-orient: vertical;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t&--large {\n\t\t\tmin-width: var(--cell-width-large);\n\t\t\twidth: var(--cell-width-large);\n\t\t}\n\n\t\t&--obfuscated {\n\t\t\tmin-width: 400px;\n\t\t\twidth: 400px;\n\t\t}\n\n\t\t// Fill remaining row space with cell\n\t\t&--fill {\n\t\t\tmin-width: var(--cell-width-large);\n\t\t\twidth: 100%;\n\t\t}\n\n\t\t&--actions {\n\t\t\tposition: sticky;\n\t\t\tright: 0;\n\t\t\tz-index: var(--sticky-column-z-index);\n\t\t\tdisplay: flex;\n\t\t\tflex-direction: row;\n\t\t\talign-items: center;\n\t\t\tmin-width: 110px;\n\t\t\twidth: 110px;\n\t\t\tbackground-color: var(--color-main-background);\n\t\t\tborder-left: 1px solid var(--color-border);\n\t\t}\n\t}\n\n\t&__subtitle {\n\t\tcolor: var(--color-text-maxcontrast);\n\t}\n}\n"],sourceRoot:""}]);const o=r},74140:(t,e,s)=>{s.d(e,{A:()=>o});var a=s(71354),n=s.n(a),i=s(76314),r=s.n(i)()(n());r.push([t.id,".user-list__row[data-v-2cdd4510]{position:relative;display:flex;min-width:100%;width:fit-content;height:var(--row-height);background-color:var(--color-main-background)}.user-list__row[data-v-2cdd4510]:hover{background-color:var(--color-background-hover)}.user-list__row:hover .row__cell[data-v-2cdd4510]:not(.row__cell--actions){background-color:var(--color-background-hover)}.user-list__row .select--fill[data-v-2cdd4510]{max-width:calc(var(--cell-width-large) - 2*var(--cell-padding))}.row__cell[data-v-2cdd4510]{display:flex;flex-direction:column;justify-content:center;padding:0 var(--cell-padding);min-width:var(--cell-width);width:var(--cell-width);color:var(--color-main-text)}.row__cell strong[data-v-2cdd4510],.row__cell span[data-v-2cdd4510],.row__cell label[data-v-2cdd4510]{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;overflow-wrap:anywhere}@media(min-width: 670px){.row__cell--avatar[data-v-2cdd4510],.row__cell--displayname[data-v-2cdd4510]{position:sticky;z-index:var(--sticky-column-z-index);background-color:var(--color-main-background)}.row__cell--avatar[data-v-2cdd4510]{left:0}.row__cell--displayname[data-v-2cdd4510]{left:var(--avatar-cell-width);border-right:1px solid var(--color-border)}}.row__cell--username[data-v-2cdd4510]{padding-left:calc(var(--default-grid-baseline)*3)}.row__cell--avatar[data-v-2cdd4510]{min-width:var(--avatar-cell-width);width:var(--avatar-cell-width);align-items:center;padding:0;user-select:none}.row__cell--multiline span[data-v-2cdd4510]{line-height:1.3em;white-space:unset}@supports(-webkit-line-clamp: 2){.row__cell--multiline span[data-v-2cdd4510]{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}}.row__cell--large[data-v-2cdd4510]{min-width:var(--cell-width-large);width:var(--cell-width-large)}.row__cell--obfuscated[data-v-2cdd4510]{min-width:400px;width:400px}.row__cell--fill[data-v-2cdd4510]{min-width:var(--cell-width-large);width:100%}.row__cell--actions[data-v-2cdd4510]{position:sticky;right:0;z-index:var(--sticky-column-z-index);display:flex;flex-direction:row;align-items:center;min-width:110px;width:110px;background-color:var(--color-main-background);border-left:1px solid var(--color-border)}.row__subtitle[data-v-2cdd4510]{color:var(--color-text-maxcontrast)}.row__cell[data-v-2cdd4510]{border-bottom:1px solid var(--color-border)}.row__cell[data-v-2cdd4510] .v-select.select{min-width:var(--cell-min-width)}.row__progress[data-v-2cdd4510]{margin-top:4px}.row__progress--warn[data-v-2cdd4510]::-moz-progress-bar{background:var(--color-warning) !important}.row__progress--warn[data-v-2cdd4510]::-webkit-progress-value{background:var(--color-warning) !important}","",{version:3,sources:["webpack://./apps/settings/src/components/Users/UserRow.vue","webpack://./apps/settings/src/components/Users/shared/styles.scss"],names:[],mappings:"AAGA,iCCoBC,iBAAA,CACA,YAAA,CACA,cAAA,CACA,iBAAA,CACA,wBAAA,CACA,6CAAA,CDtBA,uCACC,8CAAA,CAEA,2EACC,8CAAA,CAKF,+CACC,+DAAA,CCgBD,4BACC,YAAA,CACA,qBAAA,CACA,sBAAA,CACA,6BAAA,CACA,2BAAA,CACA,uBAAA,CACA,4BAAA,CAEA,sGAGC,eAAA,CACA,sBAAA,CACA,kBAAA,CACA,sBAAA,CAGD,yBACC,6EAEC,eAAA,CACA,oCAAA,CACA,6CAAA,CAGD,oCACC,MAAA,CAGD,yCACC,6BAAA,CACA,0CAAA,CAAA,CAIF,sCACC,iDAAA,CAGD,oCACC,kCAAA,CACA,8BAAA,CACA,kBAAA,CACA,SAAA,CACA,gBAAA,CAIA,4CACC,iBAAA,CACA,iBAAA,CAEA,iCAJD,4CAKE,mBAAA,CACA,oBAAA,CACA,2BAAA,CAAA,CAKH,mCACC,iCAAA,CACA,6BAAA,CAGD,wCACC,eAAA,CACA,WAAA,CAID,kCACC,iCAAA,CACA,UAAA,CAGD,qCACC,eAAA,CACA,OAAA,CACA,oCAAA,CACA,YAAA,CACA,kBAAA,CACA,kBAAA,CACA,eAAA,CACA,WAAA,CACA,6CAAA,CACA,yCAAA,CAIF,gCACC,mCAAA,CDrGD,4BACC,2CAAA,CAGC,6CACC,+BAAA,CAKH,gCACC,cAAA,CAGC,yDACC,0CAAA,CAED,8DACC,0CAAA",sourcesContent:["\n@import './shared/styles.scss';\n\n.user-list__row {\n\t@include row;\n\n\t&:hover {\n\t\tbackground-color: var(--color-background-hover);\n\n\t\t.row__cell:not(.row__cell--actions) {\n\t\t\tbackground-color: var(--color-background-hover);\n\t\t}\n\t}\n\n\t// Limit width of select in fill cell\n\t.select--fill {\n\t\tmax-width: calc(var(--cell-width-large) - (2 * var(--cell-padding)));\n\t}\n}\n\n.row {\n\t@include cell;\n\n\t&__cell {\n\t\tborder-bottom: 1px solid var(--color-border);\n\n\t\t:deep {\n\t\t\t.v-select.select {\n\t\t\t\tmin-width: var(--cell-min-width);\n\t\t\t}\n\t\t}\n\t}\n\n\t&__progress {\n\t\tmargin-top: 4px;\n\n\t\t&--warn {\n\t\t\t&::-moz-progress-bar {\n\t\t\t\tbackground: var(--color-warning) !important;\n\t\t\t}\n\t\t\t&::-webkit-progress-value {\n\t\t\t\tbackground: var(--color-warning) !important;\n\t\t\t}\n\t\t}\n\t}\n}\n","/**\n * @copyright 2023 Christopher Ng <chrng8@gmail.com>\n *\n * @author Christopher Ng <chrng8@gmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\n@mixin row {\n\tposition: relative;\n\tdisplay: flex;\n\tmin-width: 100%;\n\twidth: fit-content;\n\theight: var(--row-height);\n\tbackground-color: var(--color-main-background);\n}\n\n@mixin cell {\n\t&__cell {\n\t\tdisplay: flex;\n\t\tflex-direction: column;\n\t\tjustify-content: center;\n\t\tpadding: 0 var(--cell-padding);\n\t\tmin-width: var(--cell-width);\n\t\twidth: var(--cell-width);\n\t\tcolor: var(--color-main-text);\n\n\t\tstrong,\n\t\tspan,\n\t\tlabel {\n\t\t\toverflow: hidden;\n\t\t\ttext-overflow: ellipsis;\n\t\t\twhite-space: nowrap;\n\t\t\toverflow-wrap: anywhere;\n\t\t}\n\n\t\t@media (min-width: 670px) { /* Show one &--large column between stickied columns */\n\t\t\t&--avatar,\n\t\t\t&--displayname {\n\t\t\t\tposition: sticky;\n\t\t\t\tz-index: var(--sticky-column-z-index);\n\t\t\t\tbackground-color: var(--color-main-background);\n\t\t\t}\n\n\t\t\t&--avatar {\n\t\t\t\tleft: 0;\n\t\t\t}\n\n\t\t\t&--displayname {\n\t\t\t\tleft: var(--avatar-cell-width);\n\t\t\t\tborder-right: 1px solid var(--color-border);\n\t\t\t}\n\t\t}\n\n\t\t&--username {\n\t\t\tpadding-left: calc(var(--default-grid-baseline) * 3);\n\t\t}\n\n\t\t&--avatar {\n\t\t\tmin-width: var(--avatar-cell-width);\n\t\t\twidth: var(--avatar-cell-width);\n\t\t\talign-items: center;\n\t\t\tpadding: 0;\n\t\t\tuser-select: none;\n\t\t}\n\n\t\t&--multiline {\n\t\t\tspan {\n\t\t\t\tline-height: 1.3em;\n\t\t\t\twhite-space: unset;\n\n\t\t\t\t@supports (-webkit-line-clamp: 2) {\n\t\t\t\t\tdisplay: -webkit-box;\n\t\t\t\t\t-webkit-line-clamp: 2;\n\t\t\t\t\t-webkit-box-orient: vertical;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t&--large {\n\t\t\tmin-width: var(--cell-width-large);\n\t\t\twidth: var(--cell-width-large);\n\t\t}\n\n\t\t&--obfuscated {\n\t\t\tmin-width: 400px;\n\t\t\twidth: 400px;\n\t\t}\n\n\t\t// Fill remaining row space with cell\n\t\t&--fill {\n\t\t\tmin-width: var(--cell-width-large);\n\t\t\twidth: 100%;\n\t\t}\n\n\t\t&--actions {\n\t\t\tposition: sticky;\n\t\t\tright: 0;\n\t\t\tz-index: var(--sticky-column-z-index);\n\t\t\tdisplay: flex;\n\t\t\tflex-direction: row;\n\t\t\talign-items: center;\n\t\t\tmin-width: 110px;\n\t\t\twidth: 110px;\n\t\t\tbackground-color: var(--color-main-background);\n\t\t\tborder-left: 1px solid var(--color-border);\n\t\t}\n\t}\n\n\t&__subtitle {\n\t\tcolor: var(--color-text-maxcontrast);\n\t}\n}\n"],sourceRoot:""}]);const o=r},26893:(t,e,s)=>{s.d(e,{A:()=>o});var a=s(71354),n=s.n(a),i=s(76314),r=s.n(i)()(n());r.push([t.id,"fieldset[data-v-ab9299ba]{font-weight:bold}","",{version:3,sources:["webpack://./apps/settings/src/components/Users/UserSettingsDialog.vue"],names:[],mappings:"AACA,0BACC,gBAAA",sourcesContent:["\nfieldset {\n\tfont-weight: bold;\n}\n"],sourceRoot:""}]);const o=r},55772:(t,e,s)=>{s.d(e,{A:()=>o});var a=s(71354),n=s.n(a),i=s(76314),r=s.n(i)()(n());r.push([t.id,".user-list[data-v-a583d0b2]{--avatar-cell-width: 48px;--cell-padding: 7px;--cell-width: 200px;--cell-width-large: 300px;--cell-min-width: calc(var(--cell-width) - (2 * var(--cell-padding)));--sticky-column-z-index: calc(var(--vs-dropdown-z-index) + 1);display:block;overflow:auto;height:100%}.user-list__header[data-v-a583d0b2],.user-list__footer[data-v-a583d0b2]{position:sticky;display:block}.user-list__header[data-v-a583d0b2]{top:0;z-index:calc(var(--sticky-column-z-index) + 1)}.user-list__footer[data-v-a583d0b2]{left:0}.user-list__body[data-v-a583d0b2]{display:flex;flex-direction:column;width:100%}","",{version:3,sources:["webpack://./apps/settings/src/components/Users/VirtualList.vue"],names:[],mappings:"AACA,4BACC,yBAAA,CACA,mBAAA,CACA,mBAAA,CACA,yBAAA,CACA,qEAAA,CACA,6DAAA,CAGA,aAAA,CACA,aAAA,CACA,WAAA,CAEA,wEAEC,eAAA,CAEA,aAAA,CAGD,oCACC,KAAA,CACA,8CAAA,CAGD,oCACC,MAAA,CAGD,kCACC,YAAA,CACA,qBAAA,CACA,UAAA",sourcesContent:["\n.user-list {\n\t--avatar-cell-width: 48px;\n\t--cell-padding: 7px;\n\t--cell-width: 200px;\n\t--cell-width-large: 300px;\n\t--cell-min-width: calc(var(--cell-width) - (2 * var(--cell-padding)));\n\t--sticky-column-z-index: calc(var(--vs-dropdown-z-index) + 1); // Keep the sticky column on top of the select dropdown\n\n\t// Necessary for virtual scroll optimized rendering\n\tdisplay: block;\n\toverflow: auto;\n\theight: 100%;\n\n\t&__header,\n\t&__footer {\n\t\tposition: sticky;\n\t\t// Fix sticky positioning in Firefox\n\t\tdisplay: block;\n\t}\n\n\t&__header {\n\t\ttop: 0;\n\t\tz-index: calc(var(--sticky-column-z-index) + 1);\n\t}\n\n\t&__footer {\n\t\tleft: 0;\n\t}\n\n\t&__body {\n\t\tdisplay: flex;\n\t\tflex-direction: column;\n\t\twidth: 100%;\n\t}\n}\n"],sourceRoot:""}]);const o=r},73599:(t,e,s)=>{s.d(e,{A:()=>o});var a=s(71354),n=s.n(a),i=s(76314),r=s.n(i)()(n());r.push([t.id,".app-content[data-v-fc8857fc]{display:flex;overflow:hidden;flex-direction:column;max-height:100%}","",{version:3,sources:["webpack://./apps/settings/src/views/UserManagement.vue"],names:[],mappings:"AACA,8BAEC,YAAA,CACA,eAAA,CACA,qBAAA,CACA,eAAA",sourcesContent:["\n.app-content {\n\t// Virtual list needs to be full height and is scrollable\n\tdisplay: flex;\n\toverflow: hidden;\n\tflex-direction: column;\n\tmax-height: 100%;\n}\n"],sourceRoot:""}]);const o=r},69943:(t,e,s)=>{s.d(e,{A:()=>o});var a=s(71354),n=s.n(a),i=s(76314),r=s.n(i)()(n());r.push([t.id,".account-management__system-list[data-v-9b250646]{height:auto !important;overflow:visible !important}.account-management__group-list[data-v-9b250646]{height:100% !important}.account-management__settings-toggle[data-v-9b250646]{margin-bottom:12px}","",{version:3,sources:["webpack://./apps/settings/src/views/UserManagementNavigation.vue"],names:[],mappings:"AAEC,kDACC,sBAAA,CACA,2BAAA,CAGD,iDACC,sBAAA,CAGD,sDACC,kBAAA",sourcesContent:["\n.account-management{\n\t&__system-list {\n\t\theight: auto !important;\n\t\toverflow: visible !important;\n\t}\n\n\t&__group-list {\n\t\theight: 100% !important;\n\t}\n\n\t&__settings-toggle {\n\t\tmargin-bottom: 12px;\n\t}\n}\n"],sourceRoot:""}]);const o=r},47693:(e,s,a)=>{a.r(s),a.d(s,{default:()=>ft});var n=a(53334),i=a(85471),r=a(18195),o=a(9165),l=a(85168),d=a(61338),c=a(54914),u=a(10833),A=a(6695),g=a(46222),p=a(55042),h=a(17334),m=a(36620);i.Ay.directive("elementVisibility",p.Zx);const v=i.Ay.extend({name:"VirtualList",props:{dataComponent:{type:[Object,Function],required:!0},dataKey:{type:String,required:!0},dataSources:{type:Array,required:!0},itemHeight:{type:Number,required:!0},extraProps:{type:Object,default:()=>({})}},data:()=>({bufferItems:3,index:0,headerHeight:0,tableHeight:0,resizeObserver:null}),computed:{startIndex(){return Math.max(0,this.index-3)},shownItems(){return Math.ceil((this.tableHeight-this.headerHeight)/this.itemHeight)+6},renderedItems(){return this.dataSources.slice(this.startIndex,this.startIndex+this.shownItems)},tbodyStyle(){const t=this.startIndex+this.shownItems>this.dataSources.length,e=this.dataSources.length-this.startIndex-this.shownItems,s=Math.min(this.dataSources.length-this.startIndex,e);return{paddingTop:"".concat(this.startIndex*this.itemHeight,"px"),paddingBottom:t?0:"".concat(s*this.itemHeight,"px")}}},mounted(){var t,e;const s=this.$el,a=null===(t=this.$refs)||void 0===t?void 0:t.tfoot,n=null===(e=this.$refs)||void 0===e?void 0:e.thead;this.resizeObserver=new ResizeObserver((0,h.debounce)((()=>{var t,e;this.headerHeight=null!==(t=null==n?void 0:n.clientHeight)&&void 0!==t?t:0,this.tableHeight=null!==(e=null==s?void 0:s.clientHeight)&&void 0!==e?e:0,m.A.debug("VirtualList resizeObserver updated"),this.onScroll()}),100,!1)),this.resizeObserver.observe(s),this.resizeObserver.observe(a),this.resizeObserver.observe(n),this.$el.addEventListener("scroll",this.onScroll)},beforeDestroy(){this.resizeObserver&&this.resizeObserver.disconnect()},methods:{handleFooterVisibility(t){t&&this.$emit("scroll-end")},onScroll(){this.index=Math.max(0,Math.round(this.$el.scrollTop/this.itemHeight))}}});var C=a(85072),w=a.n(C),_=a(97825),f=a.n(_),b=a(77659),y=a.n(b),x=a(55056),k=a.n(x),U=a(10540),S=a.n(U),G=a(41113),N=a.n(G),L=a(55772),B={};B.styleTagTransform=N(),B.setAttributes=k(),B.insert=y().bind(null,"head"),B.domAPI=f(),B.insertStyleElement=S(),w()(L.A,B),L.A&&L.A.locals&&L.A.locals;var D=a(14486);const q=(0,D.A)(v,(function(){var t=this,e=t._self._c;return t._self._setupProxy,e("table",{staticClass:"user-list"},[t._t("before"),t._v(" "),e("thead",{ref:"thead",staticClass:"user-list__header",attrs:{role:"rowgroup"}},[t._t("header")],2),t._v(" "),e("tbody",{staticClass:"user-list__body",style:t.tbodyStyle},t._l(t.renderedItems,(function(s,a){return e(t.dataComponent,t._b({key:s[t.dataKey],tag:"component",attrs:{user:s,visible:(a>=t.bufferItems||t.index<=t.bufferItems)&&a<t.shownItems-t.bufferItems}},"component",t.extraProps,!1))})),1),t._v(" "),e("tfoot",{directives:[{name:"element-visibility",rawName:"v-element-visibility",value:t.handleFooterVisibility,expression:"handleFooterVisibility"}],ref:"tfoot",staticClass:"user-list__footer",attrs:{role:"rowgroup"}},[t._t("footer")],2)],2)}),[],!1,null,"a583d0b2",null).exports;var I=a(9518),M=a(53278),O=a(16044),$=a(67607),T=a(82182);const P={name:"NewUserModal",components:{NcButton:I.A,NcModal:M.A,NcPasswordField:O.A,NcSelect:$.A,NcTextField:T.A},props:{loading:{type:Object,required:!0},newUser:{type:Object,required:!0},quotaOptions:{type:Array,required:!0}},data:()=>({possibleManagers:[],managerLabel:t("settings","Set user manager")}),computed:{showConfig(){return this.$store.getters.getShowConfig},settings(){return this.$store.getters.getServerData},usernameLabel(){return this.settings.newUserGenerateUserID?t("settings","Account name will be autogenerated"):t("settings","Account name (required)")},minPasswordLength(){return this.$store.getters.getPasswordPolicyMinLength},groups(){return this.$store.getters.getGroups.filter((t=>"disabled"!==t.id)).sort(((t,e)=>t.name.localeCompare(e.name)))},subAdminsGroups(){return this.$store.getters.getSubadminGroups},canAddGroups(){return this.groups.map((t=>((t=Object.assign({},t)).$isDisabled=!1===t.canAdd,t)))},languages(){return[{name:t("settings","Common languages"),languages:this.settings.languages.commonLanguages},...this.settings.languages.commonLanguages,{name:t("settings","Other languages"),languages:this.settings.languages.otherLanguages},...this.settings.languages.otherLanguages]}},async beforeMount(){await this.searchUserManager()},methods:{async createUser(){this.loading.all=!0;try{var t,e;await this.$store.dispatch("addUser",{userid:this.newUser.id,password:this.newUser.password,displayName:this.newUser.displayName,email:this.newUser.mailAddress,groups:this.newUser.groups.map((t=>t.id)),subadmin:this.newUser.subAdminsGroups.map((t=>t.id)),quota:this.newUser.quota.id,language:this.newUser.language.code,manager:this.newUser.manager.id}),this.$emit("reset"),null===(t=this.$refs.username)||void 0===t||null===(t=t.$refs)||void 0===t||null===(t=t.inputField)||void 0===t||null===(t=t.$refs)||void 0===t||null===(t=t.input)||void 0===t||null===(e=t.focus)||void 0===e||e.call(t),this.$emit("close")}catch(t){if(this.loading.all=!1,t.response&&t.response.data&&t.response.data.ocs&&t.response.data.ocs.meta){const e=t.response.data.ocs.meta.statuscode;var s,a;if(102===e)null===(s=this.$refs.username)||void 0===s||null===(s=s.$refs)||void 0===s||null===(s=s.inputField)||void 0===s||null===(s=s.$refs)||void 0===s||null===(s=s.input)||void 0===s||null===(a=s.focus)||void 0===a||a.call(s);else if(107===e){var n,i;null===(n=this.$refs.password)||void 0===n||null===(n=n.$refs)||void 0===n||null===(n=n.inputField)||void 0===n||null===(n=n.$refs)||void 0===n||null===(n=n.input)||void 0===n||null===(i=n.focus)||void 0===i||i.call(n)}}}},handleGroupInput(t){this.newUser.groups=t.filter((t=>Boolean(t.id)))},async createGroup(t){let{name:e}=t;this.loading.groups=!0;try{await this.$store.dispatch("addGroup",e),this.newUser.groups.push(this.groups.find((t=>t.id===e))),this.loading.groups=!1}catch(t){this.loading.groups=!1}},validateQuota(t){const e=OC.Util.computerFileSize(t);return null!==e&&e>=0?(t=OC.Util.humanFileSize(OC.Util.computerFileSize(t)),this.newUser.quota={id:t,label:t},this.newUser.quota):(this.newUser.quota=this.quotaOptions[0],this.quotaOptions[0])},languageFilterBy:(t,e,s)=>t.languages?t.languages.some((t=>{let{name:e}=t;return e.toLocaleLowerCase().includes(s.toLocaleLowerCase())})):(e||"").toLocaleLowerCase().includes(s.toLocaleLowerCase()),async searchUserManager(t){await this.$store.dispatch("searchUsers",{offset:0,limit:10,search:t}).then((t=>{const e=null!=t&&t.data?Object.values(null==t?void 0:t.data.ocs.data.users):[];e.length>0&&(this.possibleManagers=e)}))}}};var E=a(72353),F={};F.styleTagTransform=N(),F.setAttributes=k(),F.insert=y().bind(null,"head"),F.domAPI=f(),F.insertStyleElement=S(),w()(E.A,F),E.A&&E.A.locals&&E.A.locals;const z=(0,D.A)(P,(function(){var t=this,e=t._self._c;return e("NcModal",t._g({staticClass:"modal",attrs:{size:"small"}},t.$listeners),[e("form",{staticClass:"modal__form",attrs:{"data-test":"form",disabled:t.loading.all},on:{submit:function(e){return e.preventDefault(),t.createUser.apply(null,arguments)}}},[e("h2",[t._v(t._s(t.t("settings","New user")))]),t._v(" "),e("NcTextField",{ref:"username",staticClass:"modal__item",attrs:{"data-test":"username",value:t.newUser.id,disabled:t.settings.newUserGenerateUserID,label:t.usernameLabel,autocapitalize:"none",autocomplete:"off",spellcheck:"false",pattern:"[a-zA-Z0-9 _\\.@\\-']+",required:""},on:{"update:value":function(e){return t.$set(t.newUser,"id",e)}}}),t._v(" "),e("NcTextField",{staticClass:"modal__item",attrs:{"data-test":"displayName",value:t.newUser.displayName,label:t.t("settings","Display name"),autocapitalize:"none",autocomplete:"off",spellcheck:"false"},on:{"update:value":function(e){return t.$set(t.newUser,"displayName",e)}}}),t._v(" "),t.settings.newUserRequireEmail?t._e():e("span",{staticClass:"modal__hint",attrs:{id:"password-email-hint"}},[t._v("\n\t\t\t"+t._s(t.t("settings","Either password or email is required"))+"\n\t\t")]),t._v(" "),e("NcPasswordField",{ref:"password",staticClass:"modal__item",attrs:{"data-test":"password",value:t.newUser.password,minlength:t.minPasswordLength,maxlength:469,"aria-describedby":"password-email-hint",label:""===t.newUser.mailAddress?t.t("settings","Password (required)"):t.t("settings","Password"),autocapitalize:"none",autocomplete:"new-password",spellcheck:"false",required:""===t.newUser.mailAddress},on:{"update:value":function(e){return t.$set(t.newUser,"password",e)}}}),t._v(" "),e("NcTextField",{staticClass:"modal__item",attrs:{"data-test":"email",type:"email",value:t.newUser.mailAddress,"aria-describedby":"password-email-hint",label:""===t.newUser.password||t.settings.newUserRequireEmail?t.t("settings","Email (required)"):t.t("settings","Email"),autocapitalize:"none",autocomplete:"off",spellcheck:"false",required:""===t.newUser.password||t.settings.newUserRequireEmail},on:{"update:value":function(e){return t.$set(t.newUser,"mailAddress",e)}}}),t._v(" "),e("div",{staticClass:"modal__item"},[e("label",{staticClass:"modal__label",attrs:{for:"new-user-groups"}},[t._v("\n\t\t\t\t"+t._s(t.settings.isAdmin?t.t("settings","Groups"):t.t("settings","Groups (required)"))+"\n\t\t\t")]),t._v(" "),e("NcSelect",{staticClass:"modal__select",attrs:{"input-id":"new-user-groups",placeholder:t.t("settings","Set user groups"),disabled:t.loading.groups||t.loading.all,options:t.canAddGroups,value:t.newUser.groups,label:"name","close-on-select":!1,multiple:!0,taggable:!0,required:!t.settings.isAdmin},on:{input:t.handleGroupInput,"option:created":t.createGroup}})],1),t._v(" "),t.subAdminsGroups.length>0?e("div",{staticClass:"modal__item"},[e("label",{staticClass:"modal__label",attrs:{for:"new-user-sub-admin"}},[t._v("\n\t\t\t\t"+t._s(t.t("settings","Administered groups"))+"\n\t\t\t")]),t._v(" "),e("NcSelect",{staticClass:"modal__select",attrs:{"input-id":"new-user-sub-admin",placeholder:t.t("settings","Set user as admin for …"),options:t.subAdminsGroups,"close-on-select":!1,multiple:!0,label:"name"},model:{value:t.newUser.subAdminsGroups,callback:function(e){t.$set(t.newUser,"subAdminsGroups",e)},expression:"newUser.subAdminsGroups"}})],1):t._e(),t._v(" "),e("div",{staticClass:"modal__item"},[e("label",{staticClass:"modal__label",attrs:{for:"new-user-quota"}},[t._v("\n\t\t\t\t"+t._s(t.t("settings","Quota"))+"\n\t\t\t")]),t._v(" "),e("NcSelect",{staticClass:"modal__select",attrs:{"input-id":"new-user-quota",placeholder:t.t("settings","Set user quota"),options:t.quotaOptions,clearable:!1,taggable:!0,"create-option":t.validateQuota},model:{value:t.newUser.quota,callback:function(e){t.$set(t.newUser,"quota",e)},expression:"newUser.quota"}})],1),t._v(" "),t.showConfig.showLanguages?e("div",{staticClass:"modal__item"},[e("label",{staticClass:"modal__label",attrs:{for:"new-user-language"}},[t._v("\n\t\t\t\t"+t._s(t.t("settings","Language"))+"\n\t\t\t")]),t._v(" "),e("NcSelect",{staticClass:"modal__select",attrs:{"input-id":"new-user-language",placeholder:t.t("settings","Set default language"),clearable:!1,selectable:t=>!t.languages,"filter-by":t.languageFilterBy,options:t.languages,label:"name"},model:{value:t.newUser.language,callback:function(e){t.$set(t.newUser,"language",e)},expression:"newUser.language"}})],1):t._e(),t._v(" "),e("div",{class:["modal__item managers",{"icon-loading-small":t.loading.manager}]},[e("label",{staticClass:"modal__label",attrs:{for:"new-user-manager"}},[t._v("\n\t\t\t\t"+t._s(t.t("settings","Manager"))+"\n\t\t\t")]),t._v(" "),e("NcSelect",{staticClass:"modal__select",attrs:{"input-id":"new-user-manager",placeholder:t.managerLabel,options:t.possibleManagers,"user-select":!0,label:"displayname"},on:{search:t.searchUserManager},model:{value:t.newUser.manager,callback:function(e){t.$set(t.newUser,"manager",e)},expression:"newUser.manager"}})],1),t._v(" "),e("NcButton",{staticClass:"modal__submit",attrs:{"data-test":"submit",type:"primary","native-type":"submit"}},[t._v("\n\t\t\t"+t._s(t.t("settings","Add new user"))+"\n\t\t")])],1)])}),[],!1,null,"3647f8c2",null).exports,R=i.Ay.extend({name:"UserListFooter",components:{NcLoadingIcon:g.A},props:{loading:{type:Boolean,required:!0},filteredUsers:{type:Array,required:!0}},computed:{userCount(){return this.loading?this.n("settings","{userCount} user …","{userCount} users …",this.filteredUsers.length,{userCount:this.filteredUsers.length}):this.n("settings","{userCount} user","{userCount} users",this.filteredUsers.length,{userCount:this.filteredUsers.length})}},methods:{t:n.Tl,n:n.zw}});var Q=a(23599),W={};W.styleTagTransform=N(),W.setAttributes=k(),W.insert=y().bind(null,"head"),W.domAPI=f(),W.insertStyleElement=S(),w()(Q.A,W),Q.A&&Q.A.locals&&Q.A.locals;const H=(0,D.A)(R,(function(){var t=this,e=t._self._c;return t._self._setupProxy,e("tr",{staticClass:"footer"},[e("th",{attrs:{scope:"row"}},[e("span",{staticClass:"hidden-visually"},[t._v(t._s(t.t("settings","Total rows summary")))])]),t._v(" "),e("td",{staticClass:"footer__cell footer__cell--loading"},[t.loading?e("NcLoadingIcon",{attrs:{title:t.t("settings","Loading users …"),size:32}}):t._e()],1),t._v(" "),e("td",{staticClass:"footer__cell footer__cell--count footer__cell--multiline"},[e("span",{attrs:{"aria-describedby":"user-count-desc"}},[t._v(t._s(t.userCount))]),t._v(" "),e("span",{staticClass:"hidden-visually",attrs:{id:"user-count-desc"}},[t._v("\n\t\t\t"+t._s(t.t("settings","Scroll to load more rows"))+"\n\t\t")])])])}),[],!1,null,"3ec0b16a",null).exports,Y=i.Ay.extend({name:"UserListHeader",props:{hasObfuscated:{type:Boolean,required:!0}},computed:{showConfig(){return this.$store.getters.getShowConfig},settings(){return this.$store.getters.getServerData},subAdminsGroups(){return this.$store.getters.getSubadminGroups},passwordLabel(){return this.hasObfuscated?(0,n.Tl)("settings","Password or insufficient permissions message"):(0,n.Tl)("settings","Password")}},methods:{t:n.Tl}});var j=a(87637),K={};K.styleTagTransform=N(),K.setAttributes=k(),K.insert=y().bind(null,"head"),K.domAPI=f(),K.insertStyleElement=S(),w()(j.A,K),j.A&&j.A.locals&&j.A.locals;const V=(0,D.A)(Y,(function(){var t=this,e=t._self._c;return t._self._setupProxy,e("tr",{staticClass:"header"},[e("th",{staticClass:"header__cell header__cell--avatar",attrs:{"data-cy-user-list-header-avatar":"",scope:"col"}},[e("span",{staticClass:"hidden-visually"},[t._v("\n\t\t\t"+t._s(t.t("settings","Avatar"))+"\n\t\t")])]),t._v(" "),e("th",{staticClass:"header__cell header__cell--displayname",attrs:{"data-cy-user-list-header-displayname":"",scope:"col"}},[e("strong",[t._v("\n\t\t\t"+t._s(t.t("settings","Display name"))+"\n\t\t")])]),t._v(" "),e("th",{staticClass:"header__cell header__cell--username",attrs:{"data-cy-user-list-header-username":"",scope:"col"}},[e("span",[t._v("\n\t\t\t"+t._s(t.t("settings","Account name"))+"\n\t\t")])]),t._v(" "),e("th",{staticClass:"header__cell",class:{"header__cell--obfuscated":t.hasObfuscated},attrs:{"data-cy-user-list-header-password":"",scope:"col"}},[e("span",[t._v(t._s(t.passwordLabel))])]),t._v(" "),e("th",{staticClass:"header__cell",attrs:{"data-cy-user-list-header-email":"",scope:"col"}},[e("span",[t._v(t._s(t.t("settings","Email")))])]),t._v(" "),e("th",{staticClass:"header__cell header__cell--large",attrs:{"data-cy-user-list-header-groups":"",scope:"col"}},[e("span",[t._v(t._s(t.t("settings","Groups")))])]),t._v(" "),t.subAdminsGroups.length>0&&t.settings.isAdmin?e("th",{staticClass:"header__cell header__cell--large",attrs:{"data-cy-user-list-header-subadmins":"",scope:"col"}},[e("span",[t._v(t._s(t.t("settings","Group admin for")))])]):t._e(),t._v(" "),e("th",{staticClass:"header__cell",attrs:{"data-cy-user-list-header-quota":"",scope:"col"}},[e("span",[t._v(t._s(t.t("settings","Quota")))])]),t._v(" "),t.showConfig.showLanguages?e("th",{staticClass:"header__cell header__cell--large",attrs:{"data-cy-user-list-header-languages":"",scope:"col"}},[e("span",[t._v(t._s(t.t("settings","Language")))])]):t._e(),t._v(" "),t.showConfig.showUserBackend||t.showConfig.showStoragePath?e("th",{staticClass:"header__cell header__cell--large",attrs:{"data-cy-user-list-header-storage-location":"",scope:"col"}},[t.showConfig.showUserBackend?e("span",[t._v("\n\t\t\t"+t._s(t.t("settings","Account backend"))+"\n\t\t")]):t._e(),t._v(" "),t.showConfig.showStoragePath?e("span",{staticClass:"header__subtitle"},[t._v("\n\t\t\t"+t._s(t.t("settings","Storage location"))+"\n\t\t")]):t._e()]):t._e(),t._v(" "),t.showConfig.showLastLogin?e("th",{staticClass:"header__cell",attrs:{"data-cy-user-list-header-last-login":"",scope:"col"}},[e("span",[t._v(t._s(t.t("settings","Last login")))])]):t._e(),t._v(" "),e("th",{staticClass:"header__cell header__cell--large header__cell--fill",attrs:{"data-cy-user-list-header-manager":"",scope:"col"}},[e("span",[t._v(t._s(t.t("settings","Manager")))])]),t._v(" "),e("th",{staticClass:"header__cell header__cell--actions",attrs:{"data-cy-user-list-header-actions":"",scope:"col"}},[e("span",{staticClass:"hidden-visually"},[t._v("\n\t\t\t"+t._s(t.t("settings","User actions"))+"\n\t\t")])])])}),[],!1,null,"3ec6e22e",null).exports;var J=a(35810),Z=a(92457),X=a(41944),tt=a(95101),et=a(63420),st=a(24764);const at=(0,i.pM)({components:{NcActionButton:et.A,NcActions:st.A,NcIconSvgWrapper:A.A},props:{actions:{type:Array,required:!0},disabled:{type:Boolean,required:!0},edit:{type:Boolean,required:!0},user:{type:Object,required:!0}},computed:{editSvg(){return this.edit?'<svg xmlns="http://www.w3.org/2000/svg" id="mdi-check" viewBox="0 0 24 24"><path d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z" /></svg>':'<svg xmlns="http://www.w3.org/2000/svg" id="mdi-pencil" viewBox="0 0 24 24"><path d="M20.71,7.04C21.1,6.65 21.1,6 20.71,5.63L18.37,3.29C18,2.9 17.35,2.9 16.96,3.29L15.12,5.12L18.87,8.87M3,17.25V21H6.75L17.81,9.93L14.06,6.18L3,17.25Z" /></svg>'}},methods:{toggleEdit(){this.$emit("update:edit",!this.edit)}}}),nt=(0,D.A)(at,(function(){var t=this,e=t._self._c;return t._self._setupProxy,e("NcActions",{attrs:{"aria-label":t.t("settings","Toggle account actions menu"),disabled:t.disabled,inline:1}},[e("NcActionButton",{attrs:{"data-cy-user-list-action-toggle-edit":"".concat(t.edit),disabled:t.disabled},on:{click:t.toggleEdit},scopedSlots:t._u([{key:"icon",fn:function(){return[e("NcIconSvgWrapper",{key:t.editSvg,attrs:{svg:t.editSvg,"aria-hidden":"true"}})]},proxy:!0}])},[t._v("\n\t\t"+t._s(t.edit?t.t("settings","Done"):t.t("settings","Edit"))+"\n\t\t")]),t._v(" "),t._l(t.actions,(function(s,a){let{action:n,icon:i,text:r}=s;return e("NcActionButton",{key:a,attrs:{disabled:t.disabled,"aria-label":r,icon:i},on:{click:e=>n(e,{...t.user})}},[t._v("\n\t\t"+t._s(r)+"\n\t")])}))],2)}),[],!1,null,null,null).exports,it={props:{user:{type:Object,required:!0},settings:{type:Object,default:()=>({})},groups:{type:Array,default:()=>[]},subAdminsGroups:{type:Array,default:()=>[]},quotaOptions:{type:Array,default:()=>[]},languages:{type:Array,required:!0},externalActions:{type:Array,default:()=>[]}},computed:{showConfig(){return this.$store.getters.getShowConfig},userGroups(){return this.groups.filter((t=>this.user.groups.includes(t.id)))},userSubAdminsGroups(){return this.subAdminsGroups.filter((t=>this.user.subadmin.includes(t.id)))},availableGroups(){return this.groups.map((t=>{const e=Object.assign({},t);return e.$isDisabled=!1===t.canAdd&&!this.user.groups.includes(t.id)||!1===t.canRemove&&this.user.groups.includes(t.id),e}))},usedSpace(){return this.user.quota.used?t("settings","{size} used",{size:OC.Util.humanFileSize(this.user.quota.used)}):t("settings","{size} used",{size:OC.Util.humanFileSize(0)})},usedQuota(){let t=this.user.quota.quota;return t=t>0?Math.min(100,Math.round(this.user.quota.used/t*100)):95*(1-1/(this.user.quota.used/(10*Math.pow(2,30))+1)),isNaN(t)?0:t},userQuota(){if(this.user.quota.quota>=0){const t=OC.Util.humanFileSize(this.user.quota.quota);return this.quotaOptions.find((e=>e.id===t))||{id:t,label:t}}return"default"===this.user.quota.quota?this.quotaOptions[0]:this.quotaOptions[1]},minPasswordLength(){return this.$store.getters.getPasswordPolicyMinLength},userLanguage(){const t=this.languages[0].languages.concat(this.languages[1].languages).find((t=>t.code===this.user.language));return"object"!=typeof t&&""!==this.user.language?{code:this.user.language,name:this.user.language}:""!==this.user.language&&t},userLastLoginTooltip(){return this.user.lastLogin>0?OC.Util.formatDate(this.user.lastLogin):""},userLastLogin(){return this.user.lastLogin>0?OC.Util.relativeModifiedDate(this.user.lastLogin):t("settings","Never")}}};var rt=a(95668),ot=a(96763);const lt={name:"UserRow",components:{NcAvatar:X.A,NcLoadingIcon:g.A,NcProgressBar:tt.A,NcSelect:$.A,NcTextField:T.A,UserRowActions:nt},mixins:[it],props:{user:{type:Object,required:!0},visible:{type:Boolean,required:!0},users:{type:Array,required:!0},hasObfuscated:{type:Boolean,required:!0},groups:{type:Array,default:()=>[]},subAdminsGroups:{type:Array,required:!0},quotaOptions:{type:Array,required:!0},languages:{type:Array,required:!0},settings:{type:Object,required:!0},externalActions:{type:Array,default:()=>[]}},data(){var t;return{selectedQuota:!1,rand:Math.random().toString(36).substring(2),loadingPossibleManagers:!1,possibleManagers:[],currentManager:"",editing:!1,loading:{all:!1,displayName:!1,password:!1,mailAddress:!1,groups:!1,subadmins:!1,quota:!1,delete:!1,disable:!1,languages:!1,wipe:!1,manager:!1},editedDisplayName:this.user.displayname,editedPassword:"",editedMail:null!==(t=this.user.email)&&void 0!==t?t:""}},computed:{managerLabel:()=>t("settings","Set line manager"),isObfuscated(){return(0,rt.HK)(this.user)},showConfig(){return this.$store.getters.getShowConfig},isLoadingUser(){return this.loading.delete||this.loading.disable||this.loading.wipe},isLoadingField(){return this.loading.delete||this.loading.disable||this.loading.all},uniqueId(){return encodeURIComponent(this.user.id+this.rand)},userGroupsLabels(){return this.userGroups.map((t=>t.name)).join(", ")},userSubAdminsGroupsLabels(){return this.userSubAdminsGroups.map((t=>t.name)).join(", ")},usedSpace(){var e,s;return null!==(e=this.user.quota)&&void 0!==e&&e.used?t("settings","{size} used",{size:(0,J.v7)(null===(s=this.user.quota)||void 0===s?void 0:s.used)}):t("settings","{size} used",{size:(0,J.v7)(0)})},canEdit(){return(0,Z.HW)().uid!==this.user.id||this.settings.isAdmin},userQuota(){var e;let s=null===(e=this.user.quota)||void 0===e?void 0:e.quota;return"default"===s&&(s=this.settings.defaultQuota,"none"!==s&&(s=(0,J.lT)(s,!0))),"none"===s||-3===s?t("settings","Unlimited"):s>=0?(0,J.v7)(s):(0,J.v7)(0)},userActions(){const e=[{icon:"icon-delete",text:t("settings","Delete account"),action:this.deleteUser},{icon:"icon-delete",text:t("settings","Disconnect all devices and delete local data"),action:this.wipeUserDevices},{icon:this.user.enabled?"icon-close":"icon-add",text:this.user.enabled?t("settings","Disable account"):t("settings","Enable account"),action:this.enableDisableUser}];return null!==this.user.email&&""!==this.user.email&&e.push({icon:"icon-mail",text:t("settings","Resend welcome email"),action:this.sendWelcomeMail}),e.concat(this.externalActions)},editedUserQuota:{get(){return!1!==this.selectedQuota?this.selectedQuota:this.settings.defaultQuota!==rt.SA.id&&(0,J.lT)(this.settings.defaultQuota,!0)>=0?{id:this.settings.defaultQuota,label:this.settings.defaultQuota}:rt.SA},set(t){this.selectedQuota=t}},availableLanguages(){return this.languages[0].languages.concat(this.languages[1].languages)}},async beforeMount(){this.user.manager&&await this.initManager(this.user.manager)},methods:{wipeUserDevices(){const e=this.user.id;OC.dialogs.confirmDestructive(t("settings","In case of lost device or exiting the organization, this can remotely wipe the Nextcloud data from all devices associated with {userid}. Only works if the devices are connected to the internet.",{userid:e}),t("settings","Remote wipe of devices"),{type:OC.dialogs.YES_NO_BUTTONS,confirm:t("settings","Wipe {userid}'s devices",{userid:e}),confirmClasses:"error",cancel:t("settings","Cancel")},(s=>{s&&(this.loading.wipe=!0,this.loading.all=!0,this.$store.dispatch("wipeUserDevices",e).then((()=>(0,l.Te)(t("settings","Wiped {userid}'s devices",{userid:e}))),{timeout:2e3}).finally((()=>{this.loading.wipe=!1,this.loading.all=!1})))}),!0)},filterManagers(t){return t.filter((t=>t.id!==this.user.id))},async initManager(t){await this.$store.dispatch("getUser",t).then((t=>{this.currentManager=null==t?void 0:t.data.ocs.data}))},async searchInitialUserManager(){this.loadingPossibleManagers=!0,await this.searchUserManager(),this.loadingPossibleManagers=!1},async searchUserManager(t){await this.$store.dispatch("searchUsers",{offset:0,limit:10,search:t}).then((t=>{const e=null!=t&&t.data?this.filterManagers(Object.values(null==t?void 0:t.data.ocs.data.users)):[];e.length>0&&(this.possibleManagers=e)}))},async updateUserManager(e){null===e&&(this.currentManager=""),this.loading.manager=!0;try{await this.$store.dispatch("setUserData",{userid:this.user.id,key:"manager",value:this.currentManager?this.currentManager.id:""})}catch(e){(0,l.Qg)(t("setting","Failed to update line manager")),ot.error(e)}finally{this.loading.manager=!1}},deleteUser(){const e=this.user.id;OC.dialogs.confirmDestructive(t("settings","Fully delete {userid}'s account including all their personal files, app data, etc.",{userid:e}),t("settings","Account deletion"),{type:OC.dialogs.YES_NO_BUTTONS,confirm:t("settings","Delete {userid}'s account",{userid:e}),confirmClasses:"error",cancel:t("settings","Cancel")},(t=>{if(t)return this.loading.delete=!0,this.loading.all=!0,this.$store.dispatch("deleteUser",e).then((()=>{this.loading.delete=!1,this.loading.all=!1}))}),!0)},enableDisableUser(){this.loading.delete=!0,this.loading.all=!0;const t=this.user.id,e=!this.user.enabled;return this.$store.dispatch("enableDisableUser",{userid:t,enabled:e}).then((()=>{this.loading.delete=!1,this.loading.all=!1}))},updateDisplayName(){this.loading.displayName=!0,this.$store.dispatch("setUserData",{userid:this.user.id,key:"displayname",value:this.editedDisplayName}).then((()=>{this.loading.displayName=!1,this.editedDisplayName===this.user.displayname&&(0,l.Te)(t("setting","Display name was successfully changed"))}))},updatePassword(){this.loading.password=!0,0===this.editedPassword.length?((0,l.Qg)(t("setting","Password can't be empty")),this.loading.password=!1):this.$store.dispatch("setUserData",{userid:this.user.id,key:"password",value:this.editedPassword}).then((()=>{this.loading.password=!1,this.editedPassword="",(0,l.Te)(t("setting","Password was successfully changed"))}))},updateEmail(){this.loading.mailAddress=!0,""===this.editedMail?((0,l.Qg)(t("setting","Email can't be empty")),this.loading.mailAddress=!1,this.editedMail=this.user.email):this.$store.dispatch("setUserData",{userid:this.user.id,key:"email",value:this.editedMail}).then((()=>{this.loading.mailAddress=!1,this.editedMail===this.user.email&&(0,l.Te)(t("setting","Email was successfully changed"))}))},async createGroup(t){let{name:e}=t;this.loading={groups:!0,subadmins:!0};try{await this.$store.dispatch("addGroup",e);const t=this.user.id;await this.$store.dispatch("addUserGroup",{userid:t,gid:e})}catch(t){ot.error(t)}finally{this.loading={groups:!1,subadmins:!1}}return this.$store.getters.getGroups[this.groups.length]},async addUserGroup(t){if(t.isCreating)return;this.loading.groups=!0;const e=this.user.id,s=t.id;if(!1===t.canAdd)return!1;try{await this.$store.dispatch("addUserGroup",{userid:e,gid:s})}catch(t){ot.error(t)}finally{this.loading.groups=!1}},async removeUserGroup(t){if(!1===t.canRemove)return!1;this.loading.groups=!0;const e=this.user.id,s=t.id;try{await this.$store.dispatch("removeUserGroup",{userid:e,gid:s}),this.loading.groups=!1,this.$route.params.selectedGroup===s&&this.$store.commit("deleteUser",e)}catch{this.loading.groups=!1}},async addUserSubAdmin(t){this.loading.subadmins=!0;const e=this.user.id,s=t.id;try{await this.$store.dispatch("addUserSubAdmin",{userid:e,gid:s}),this.loading.subadmins=!1}catch(t){ot.error(t)}},async removeUserSubAdmin(t){this.loading.subadmins=!0;const e=this.user.id,s=t.id;try{await this.$store.dispatch("removeUserSubAdmin",{userid:e,gid:s})}catch(t){ot.error(t)}finally{this.loading.subadmins=!1}},async setUserQuota(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"none";"none"===t&&(t=rt.SA),this.loading.quota=!0,t=t.id?t.id:t;try{const e=((0,J.lT)(t,!0)||t).toString();await this.$store.dispatch("setUserData",{userid:this.user.id,key:"quota",value:e})}catch(t){ot.error(t)}finally{this.loading.quota=!1}return t},validateQuota(t){var e;return"object"==typeof t&&(t=(null===(e=t)||void 0===e?void 0:e.id)||t.label),null===(0,J.lT)(t,!0)?rt.SA:{id:t=(0,J.v7)((0,J.lT)(t,!0)),label:t}},async setUserLanguage(t){this.loading.languages=!0;try{await this.$store.dispatch("setUserData",{userid:this.user.id,key:"language",value:t.code}),this.loading.languages=!1}catch(t){ot.error(t)}return t},sendWelcomeMail(){this.loading.all=!0,this.$store.dispatch("sendWelcomeMail",this.user.id).then((()=>(0,l.Te)(t("setting","Welcome mail sent!"),{timeout:2e3}))).finally((()=>{this.loading.all=!1}))},async toggleEdit(){var t;if(this.editing=!this.editing,this.editing&&(await this.$nextTick(),null===(t=this.$refs.displayNameField)||void 0===t||null===(t=t.$refs)||void 0===t||null===(t=t.inputField)||void 0===t||null===(t=t.$refs)||void 0===t||null===(t=t.input)||void 0===t||t.focus()),this.editedDisplayName!==this.user.displayname)this.editedDisplayName=this.user.displayname;else if(this.editedMail!==this.user.email){var e;this.editedMail=null!==(e=this.user.email)&&void 0!==e?e:""}}}};var dt=a(74140),ct={};ct.styleTagTransform=N(),ct.setAttributes=k(),ct.insert=y().bind(null,"head"),ct.domAPI=f(),ct.insertStyleElement=S(),w()(dt.A,ct),dt.A&&dt.A.locals&&dt.A.locals;var ut=(0,D.A)(lt,(function(){var t,e,s,a,n=this,i=n._self._c;return i("tr",{staticClass:"user-list__row",attrs:{"data-cy-user-row":n.user.id}},[i("td",{staticClass:"row__cell row__cell--avatar",attrs:{"data-cy-user-list-cell-avatar":""}},[n.isLoadingUser?i("NcLoadingIcon",{attrs:{name:n.t("settings","Loading account …"),size:32}}):n.visible?i("NcAvatar",{attrs:{"disable-menu":"","show-user-status":!1,user:n.user.id}}):n._e()],1),n._v(" "),i("td",{staticClass:"row__cell row__cell--displayname",attrs:{"data-cy-user-list-cell-displayname":""}},[n.editing&&n.user.backendCapabilities.setDisplayName?[i("NcTextField",{ref:"displayNameField",staticClass:"user-row-text-field",class:{"icon-loading-small":n.loading.displayName},attrs:{"data-cy-user-list-input-displayname":"","data-loading":n.loading.displayName||void 0,"trailing-button-label":n.t("settings","Submit"),"show-trailing-button":!0,disabled:n.loading.displayName||n.isLoadingField,label:n.t("settings","Change display name"),"trailing-button-icon":"arrowRight",value:n.editedDisplayName,autocapitalize:"off",autocomplete:"off",spellcheck:"false"},on:{"update:value":function(t){n.editedDisplayName=t},"trailing-button-click":n.updateDisplayName}})]:n.isObfuscated?n._e():i("strong",{attrs:{title:(null===(t=n.user.displayname)||void 0===t?void 0:t.length)>20?n.user.displayname:null}},[n._v("\n\t\t\t"+n._s(n.user.displayname)+"\n\t\t")])],2),n._v(" "),i("td",{staticClass:"row__cell row__cell--username",attrs:{"data-cy-user-list-cell-username":""}},[i("span",{staticClass:"row__subtitle"},[n._v(n._s(n.user.id))])]),n._v(" "),i("td",{staticClass:"row__cell",class:{"row__cell--obfuscated":n.hasObfuscated},attrs:{"data-cy-user-list-cell-password":""}},[n.editing&&n.settings.canChangePassword&&n.user.backendCapabilities.setPassword?[i("NcTextField",{staticClass:"user-row-text-field",class:{"icon-loading-small":n.loading.password},attrs:{"data-cy-user-list-input-password":"","data-loading":n.loading.password||void 0,"trailing-button-label":n.t("settings","Submit"),"show-trailing-button":!0,disabled:n.loading.password||n.isLoadingField,minlength:n.minPasswordLength,maxlength:"469",label:n.t("settings","Set new password"),"trailing-button-icon":"arrowRight",value:n.editedPassword,autocapitalize:"off",autocomplete:"new-password",required:"",spellcheck:"false",type:"password"},on:{"update:value":function(t){n.editedPassword=t},"trailing-button-click":n.updatePassword}})]:n.isObfuscated?i("span",[n._v("\n\t\t\t"+n._s(n.t("settings","You do not have permissions to see the details of this account"))+"\n\t\t")]):n._e()],2),n._v(" "),i("td",{staticClass:"row__cell",attrs:{"data-cy-user-list-cell-email":""}},[n.editing?[i("NcTextField",{staticClass:"user-row-text-field",class:{"icon-loading-small":n.loading.mailAddress},attrs:{"data-cy-user-list-input-email":"","data-loading":n.loading.mailAddress||void 0,"show-trailing-button":!0,"trailing-button-label":n.t("settings","Submit"),label:n.t("settings","Set new email address"),disabled:n.loading.mailAddress||n.isLoadingField,"trailing-button-icon":"arrowRight",value:n.editedMail,autocapitalize:"off",autocomplete:"email",spellcheck:"false",type:"email"},on:{"update:value":function(t){n.editedMail=t},"trailing-button-click":n.updateEmail}})]:n.isObfuscated?n._e():i("span",{attrs:{title:(null===(e=n.user.email)||void 0===e?void 0:e.length)>20?n.user.email:null}},[n._v("\n\t\t\t"+n._s(n.user.email)+"\n\t\t")])],2),n._v(" "),i("td",{staticClass:"row__cell row__cell--large row__cell--multiline",attrs:{"data-cy-user-list-cell-groups":""}},[n.editing?[i("label",{staticClass:"hidden-visually",attrs:{for:"groups"+n.uniqueId}},[n._v("\n\t\t\t\t"+n._s(n.t("settings","Add user to group"))+"\n\t\t\t")]),n._v(" "),i("NcSelect",{attrs:{"data-cy-user-list-input-groups":"","data-loading":n.loading.groups||void 0,"input-id":"groups"+n.uniqueId,"close-on-select":!1,disabled:n.isLoadingField,loading:n.loading.groups,multiple:!0,"append-to-body":!1,options:n.availableGroups,placeholder:n.t("settings","Add account to group"),taggable:n.settings.isAdmin,value:n.userGroups,label:"name","no-wrap":!0,"create-option":t=>({name:t,isCreating:!0})},on:{"option:created":n.createGroup,"option:selected":t=>n.addUserGroup(t.at(-1)),"option:deselected":n.removeUserGroup}})]:n.isObfuscated?n._e():i("span",{attrs:{title:(null===(s=n.userGroupsLabels)||void 0===s?void 0:s.length)>40?n.userGroupsLabels:null}},[n._v("\n\t\t\t"+n._s(n.userGroupsLabels)+"\n\t\t")])],2),n._v(" "),n.subAdminsGroups.length>0&&n.settings.isAdmin?i("td",{staticClass:"row__cell row__cell--large row__cell--multiline",attrs:{"data-cy-user-list-cell-subadmins":""}},[n.editing&&n.settings.isAdmin&&n.subAdminsGroups.length>0?[i("label",{staticClass:"hidden-visually",attrs:{for:"subadmins"+n.uniqueId}},[n._v("\n\t\t\t\t"+n._s(n.t("settings","Set account as admin for"))+"\n\t\t\t")]),n._v(" "),i("NcSelect",{attrs:{"data-cy-user-list-input-subadmins":"","data-loading":n.loading.subadmins||void 0,"input-id":"subadmins"+n.uniqueId,"close-on-select":!1,disabled:n.isLoadingField,loading:n.loading.subadmins,label:"name","append-to-body":!1,multiple:!0,"no-wrap":!0,options:n.subAdminsGroups,placeholder:n.t("settings","Set account as admin for"),value:n.userSubAdminsGroups},on:{"option:deselected":n.removeUserSubAdmin,"option:selected":t=>n.addUserSubAdmin(t.at(-1))}})]:n.isObfuscated?n._e():i("span",{attrs:{title:(null===(a=n.userSubAdminsGroupsLabels)||void 0===a?void 0:a.length)>40?n.userSubAdminsGroupsLabels:null}},[n._v("\n\t\t\t"+n._s(n.userSubAdminsGroupsLabels)+"\n\t\t")])],2):n._e(),n._v(" "),i("td",{staticClass:"row__cell",attrs:{"data-cy-user-list-cell-quota":""}},[n.editing?[i("label",{staticClass:"hidden-visually",attrs:{for:"quota"+n.uniqueId}},[n._v("\n\t\t\t\t"+n._s(n.t("settings","Select account quota"))+"\n\t\t\t")]),n._v(" "),i("NcSelect",{attrs:{"close-on-select":!0,"create-option":n.validateQuota,"data-cy-user-list-input-quota":"","data-loading":n.loading.quota||void 0,disabled:n.isLoadingField,loading:n.loading.quota,"append-to-body":!1,clearable:!1,"input-id":"quota"+n.uniqueId,options:n.quotaOptions,placeholder:n.t("settings","Select account quota"),taggable:!0},on:{"option:selected":n.setUserQuota},model:{value:n.editedUserQuota,callback:function(t){n.editedUserQuota=t},expression:"editedUserQuota"}})]:n.isObfuscated?n._e():[i("span",{attrs:{id:"quota-progress"+n.uniqueId}},[n._v(n._s(n.userQuota)+" ("+n._s(n.usedSpace)+")")]),n._v(" "),i("NcProgressBar",{staticClass:"row__progress",class:{"row__progress--warn":n.usedQuota>80},attrs:{"aria-labelledby":"quota-progress"+n.uniqueId,value:n.usedQuota}})]],2),n._v(" "),n.showConfig.showLanguages?i("td",{staticClass:"row__cell row__cell--large",attrs:{"data-cy-user-list-cell-language":""}},[n.editing?[i("label",{staticClass:"hidden-visually",attrs:{for:"language"+n.uniqueId}},[n._v("\n\t\t\t\t"+n._s(n.t("settings","Set the language"))+"\n\t\t\t")]),n._v(" "),i("NcSelect",{attrs:{id:"language"+n.uniqueId,"data-cy-user-list-input-language":"","data-loading":n.loading.languages||void 0,"allow-empty":!1,disabled:n.isLoadingField,loading:n.loading.languages,clearable:!1,"append-to-body":!1,options:n.availableLanguages,placeholder:n.t("settings","No language set"),value:n.userLanguage,label:"name"},on:{input:n.setUserLanguage}})]:n.isObfuscated?n._e():i("span",[n._v("\n\t\t\t"+n._s(n.userLanguage.name)+"\n\t\t")])],2):n._e(),n._v(" "),n.showConfig.showUserBackend||n.showConfig.showStoragePath?i("td",{staticClass:"row__cell row__cell--large",attrs:{"data-cy-user-list-cell-storage-location":""}},[n.isObfuscated?n._e():[n.showConfig.showUserBackend?i("span",[n._v(n._s(n.user.backend))]):n._e(),n._v(" "),n.showConfig.showStoragePath?i("span",{staticClass:"row__subtitle",attrs:{title:n.user.storageLocation}},[n._v("\n\t\t\t\t"+n._s(n.user.storageLocation)+"\n\t\t\t")]):n._e()]],2):n._e(),n._v(" "),n.showConfig.showLastLogin?i("td",{staticClass:"row__cell",attrs:{title:n.userLastLoginTooltip,"data-cy-user-list-cell-last-login":""}},[n.isObfuscated?n._e():i("span",[n._v(n._s(n.userLastLogin))])]):n._e(),n._v(" "),i("td",{staticClass:"row__cell row__cell--large row__cell--fill",attrs:{"data-cy-user-list-cell-manager":""}},[n.editing?[i("label",{staticClass:"hidden-visually",attrs:{for:"manager"+n.uniqueId}},[n._v("\n\t\t\t\t"+n._s(n.managerLabel)+"\n\t\t\t")]),n._v(" "),i("NcSelect",{staticClass:"select--fill",attrs:{"data-cy-user-list-input-manager":"","data-loading":n.loading.manager||void 0,"input-id":"manager"+n.uniqueId,"close-on-select":!0,disabled:n.isLoadingField,"append-to-body":!1,loading:n.loadingPossibleManagers||n.loading.manager,label:"displayname",options:n.possibleManagers,placeholder:n.managerLabel},on:{open:n.searchInitialUserManager,search:n.searchUserManager,"option:selected":n.updateUserManager},model:{value:n.currentManager,callback:function(t){n.currentManager=t},expression:"currentManager"}})]:n.isObfuscated?n._e():i("span",[n._v("\n\t\t\t"+n._s(n.user.manager)+"\n\t\t")])],2),n._v(" "),i("td",{staticClass:"row__cell row__cell--actions",attrs:{"data-cy-user-list-cell-actions":""}},[n.visible&&!n.isObfuscated&&n.canEdit&&!n.loading.all?i("UserRowActions",{attrs:{actions:n.userActions,disabled:n.isLoadingField,edit:n.editing,user:n.user},on:{"update:edit":n.toggleEdit}}):n._e()],1)])}),[],!1,null,"2cdd4510",null);const At=ut.exports,gt=Object.freeze({id:"",displayName:"",password:"",mailAddress:"",groups:[],manager:"",subAdminsGroups:[],quota:rt.MY,language:{code:"en",name:t("settings","Default language")}}),pt={name:"UserList",components:{Fragment:c.F,NcEmptyContent:u.A,NcIconSvgWrapper:A.A,NcLoadingIcon:g.A,NewUserModal:z,UserListFooter:H,UserListHeader:V,VirtualList:q},props:{selectedGroup:{type:String,default:null},externalActions:{type:Array,default:()=>[]}},setup:()=>({mdiAccountGroup:o.n7C,rowHeight:55,UserRow:At}),data:()=>({loading:{all:!1,groups:!1,users:!1},newUser:{...gt},isInitialLoad:!0,searchQuery:""}),computed:{showConfig(){return this.$store.getters.getShowConfig},settings(){return this.$store.getters.getServerData},style(){return{"--row-height":"".concat(this.rowHeight,"px")}},hasObfuscated(){return this.filteredUsers.some((t=>(0,rt.HK)(t)))},users(){return this.$store.getters.getUsers},filteredUsers(){return"disabled"===this.selectedGroup?this.users.filter((t=>!1===t.enabled)):(this.settings.isAdmin,this.users.filter((t=>!1!==t.enabled)))},groups(){return this.$store.getters.getGroups.filter((t=>"disabled"!==t.id)).sort(((t,e)=>t.name.localeCompare(e.name)))},subAdminsGroups(){return this.$store.getters.getSubadminGroups},quotaOptions(){const t=this.settings.quotaPreset.reduce(((t,e)=>t.concat({id:e,label:e})),[]);return this.settings.allowUnlimitedQuota&&t.unshift(rt.SA),t.unshift(rt.MY),t},usersOffset(){return this.$store.getters.getUsersOffset},usersLimit(){return this.$store.getters.getUsersLimit},disabledUsersOffset(){return this.$store.getters.getDisabledUsersOffset},disabledUsersLimit(){return this.$store.getters.getDisabledUsersLimit},usersCount(){return this.users.length},languages(){return[{label:t("settings","Common languages"),languages:this.settings.languages.commonLanguages},{label:t("settings","Other languages"),languages:this.settings.languages.otherLanguages}]}},watch:{async selectedGroup(t){this.isInitialLoad=!0,await this.redirectIfDisabled(),this.$store.commit("resetUsers"),await this.loadUsers(),this.setNewUserDefaultGroup(t)},filteredUsers(t){m.A.debug("".concat(t.length," filtered user(s)"))}},async created(){await this.loadUsers()},async mounted(){this.settings.canChangePassword||OC.Notification.showTemporary(t("settings","Password change is disabled because the master key is disabled")),this.resetForm(),(0,d.B1)("nextcloud:unified-search.search",this.search),(0,d.B1)("nextcloud:unified-search.reset",this.resetSearch),await this.redirectIfDisabled()},beforeDestroy(){(0,d.al)("nextcloud:unified-search.search",this.search),(0,d.al)("nextcloud:unified-search.reset",this.resetSearch)},methods:{async handleScrollEnd(){await this.loadUsers()},async loadUsers(){this.loading.users=!0;try{"disabled"===this.selectedGroup?await this.$store.dispatch("getDisabledUsers",{offset:this.disabledUsersOffset,limit:this.disabledUsersLimit}):await this.$store.dispatch("getUsers",{offset:this.usersOffset,limit:this.usersLimit,group:this.selectedGroup,search:this.searchQuery}),m.A.debug("".concat(this.users.length," total user(s) loaded"))}catch(t){m.A.error("Failed to load accounts",{error:t}),(0,l.Qg)("Failed to load accounts")}this.loading.users=!1,this.isInitialLoad=!1},closeModal(){this.$store.commit("setShowConfig",{key:"showNewUserForm",value:!1})},async search(t){let{query:e}=t;this.searchQuery=e,this.$store.commit("resetUsers"),await this.loadUsers()},resetSearch(){this.search({query:""})},resetForm(){this.newUser=Object.assign({},gt),this.settings.defaultLanguage&&i.Ay.set(this.newUser.language,"code",this.settings.defaultLanguage),this.setNewUserDefaultGroup(this.selectedGroup),this.loading.all=!1},setNewUserDefaultGroup(t){if(t&&t.length>0){const e=this.groups.find((e=>e.id===t));if(e)return void(this.newUser.groups=[e])}this.newUser.groups=[]},async redirectIfDisabled(){const t=this.$store.getters.getGroups;"disabled"===this.selectedGroup&&t.findIndex((t=>"disabled"===t.id&&0===t.usercount))>-1&&(this.$router.push({name:"users"}),await this.loadUsers())}}};var ht=a(63895),mt={};mt.styleTagTransform=N(),mt.setAttributes=k(),mt.insert=y().bind(null,"head"),mt.domAPI=f(),mt.insertStyleElement=S(),w()(ht.A,mt),ht.A&&ht.A.locals&&ht.A.locals;const vt=(0,D.A)(pt,(function(){var t=this,e=t._self._c;return e("Fragment",[t.showConfig.showNewUserForm?e("NewUserModal",{attrs:{loading:t.loading,"new-user":t.newUser,"quota-options":t.quotaOptions},on:{reset:t.resetForm,close:t.closeModal}}):t._e(),t._v(" "),0===t.filteredUsers.length?e("NcEmptyContent",{staticClass:"empty",attrs:{name:t.isInitialLoad&&t.loading.users?null:t.t("settings","No accounts")},scopedSlots:t._u([{key:"icon",fn:function(){return[t.isInitialLoad&&t.loading.users?e("NcLoadingIcon",{attrs:{name:t.t("settings","Loading accounts …"),size:64}}):e("NcIconSvgWrapper",{attrs:{path:t.mdiAccountGroup,size:64}})]},proxy:!0}],null,!1,226056511)}):e("VirtualList",{style:t.style,attrs:{"data-component":t.UserRow,"data-sources":t.filteredUsers,"data-key":"id","data-cy-user-list":"","item-height":t.rowHeight,"extra-props":{users:t.users,settings:t.settings,hasObfuscated:t.hasObfuscated,groups:t.groups,subAdminsGroups:t.subAdminsGroups,quotaOptions:t.quotaOptions,languages:t.languages,externalActions:t.externalActions}},on:{"scroll-end":t.handleScrollEnd},scopedSlots:t._u([{key:"before",fn:function(){return[e("caption",{staticClass:"hidden-visually"},[t._v("\n\t\t\t\t"+t._s(t.t("settings","List of accounts. This list is not fully rendered for performance reasons. The accounts will be rendered as you navigate through the list."))+"\n\t\t\t")])]},proxy:!0},{key:"header",fn:function(){return[e("UserListHeader",{attrs:{"has-obfuscated":t.hasObfuscated}})]},proxy:!0},{key:"footer",fn:function(){return[e("UserListFooter",{attrs:{loading:t.loading.users,"filtered-users":t.filteredUsers}})]},proxy:!0}])})],1)}),[],!1,null,"a6e11582",null).exports,Ct=(0,i.pM)({name:"UserManagement",components:{NcAppContent:r.A,UserList:vt},data:()=>({externalActions:[]}),computed:{pageHeading(){var t;return null===this.selectedGroupDecoded?(0,n.Tl)("settings","Active accounts"):null!==(t={admin:(0,n.Tl)("settings","Admins"),disabled:(0,n.Tl)("settings","Disabled accounts")}[this.selectedGroupDecoded])&&void 0!==t?t:(0,n.Tl)("settings","Account group: {group}",{group:this.selectedGroupDecoded})},selectedGroup(){return this.$route.params.selectedGroup},selectedGroupDecoded(){return this.selectedGroup?decodeURIComponent(this.selectedGroup):null}},beforeMount(){this.$store.commit("initGroups",{groups:this.$store.getters.getServerData.groups,orderBy:this.$store.getters.getServerData.sortGroups,userCount:this.$store.getters.getServerData.userCount}),this.$store.dispatch("getPasswordPolicyMinLength")},created(){var t,e,s;window.OCA=null!==(t=window.OCA)&&void 0!==t?t:{},window.OCA.Settings=null!==(e=window.OCA.Settings)&&void 0!==e?e:{},window.OCA.Settings.UserList=null!==(s=window.OCA.Settings.UserList)&&void 0!==s?s:{},window.OCA.Settings.UserList.registerAction=this.registerAction},methods:{t:n.Tl,registerAction(t,e,s){return this.externalActions.push({icon:t,text:e,action:s}),this.externalActions}}});var wt=a(73599),_t={};_t.styleTagTransform=N(),_t.setAttributes=k(),_t.insert=y().bind(null,"head"),_t.domAPI=f(),_t.insertStyleElement=S(),w()(wt.A,_t),wt.A&&wt.A.locals&&wt.A.locals;const ft=(0,D.A)(Ct,(function(){var t=this,e=t._self._c;return t._self._setupProxy,e("NcAppContent",{attrs:{"page-heading":t.pageHeading}},[e("UserList",{attrs:{"selected-group":t.selectedGroupDecoded,"external-actions":t.externalActions}})],1)}),[],!1,null,"fc8857fc",null).exports},38250:(e,s,a)=>{a.r(s),a.d(s,{default:()=>dt});var n=a(85471),i=a(9165),r=a(85168),o=a(53334),l=a(44131),d=a(63961),c=a(42530),u=a(19858),A=a(52439),g=a(71246),p=a(46447),h=a(9518),m=a(70563),v=a(6695),C=a(46222),w=a(54914),_=a(63420),f=a(53278),b=a(48934),y=a(72755),x=a(11037),k=a(93919);const U={name:"GroupListItem",components:{AccountGroup:y.A,Delete:x.A,Fragment:w.F,NcActionButton:_.A,NcActionInput:l.A,NcAppNavigationItem:A.A,NcButton:h.A,NcCounterBubble:m.A,NcModal:f.A,NcNoteCard:b.A,Pencil:k.A},props:{active:{type:Boolean,required:!0},count:{type:Number,default:null},id:{type:String,required:!0},name:{type:String,required:!0}},data:()=>({loadingRenameGroup:!1,openGroupMenu:!1,showRemoveGroupModal:!1}),computed:{settings(){return this.$store.getters.getServerData}},methods:{handleGroupMenuOpen(){this.openGroupMenu=!0},async renameGroup(t){if(""===t.trim())return;const e=this.$refs.displayNameInput.$el.querySelector('input[type="text"]').value;if(""!==e.trim())try{this.openGroupMenu=!1,this.loadingRenameGroup=!0,await this.$store.dispatch("renameGroup",{groupid:t.trim(),displayName:e.trim()}),this.loadingRenameGroup=!1}catch{this.openGroupMenu=!0,this.loadingRenameGroup=!1}},async removeGroup(){try{await this.$store.dispatch("removeGroup",this.id),this.showRemoveGroupModal=!1}catch(e){(0,r.Qg)(t("settings",'Failed to remove group "{group}"',{group:this.name}))}}}};var S=a(85072),G=a.n(S),N=a(97825),L=a.n(N),B=a(77659),D=a.n(B),q=a(55056),I=a.n(q),M=a(10540),O=a.n(M),$=a(41113),T=a.n($),P=a(96412),E={};E.styleTagTransform=T(),E.setAttributes=I(),E.insert=D().bind(null,"head"),E.domAPI=L(),E.insertStyleElement=O(),G()(P.A,E),P.A&&P.A.locals&&P.A.locals;var F=a(14486);const z=(0,F.A)(U,(function(){var t=this,e=t._self._c;return e("Fragment",[t.showRemoveGroupModal?e("NcModal",{on:{close:function(e){t.showRemoveGroupModal=!1}}},[e("div",{staticClass:"modal__content"},[e("h2",{staticClass:"modal__header"},[t._v("\n\t\t\t\t"+t._s(t.t("settings","Please confirm the group removal"))+"\n\t\t\t")]),t._v(" "),e("NcNoteCard",{attrs:{type:"warning","show-alert":""}},[t._v("\n\t\t\t\t"+t._s(t.t("settings",'You are about to remove the group "{group}". The accounts will NOT be deleted.',{group:t.name}))+"\n\t\t\t")]),t._v(" "),e("div",{staticClass:"modal__button-row"},[e("NcButton",{attrs:{type:"secondary"},on:{click:function(e){t.showRemoveGroupModal=!1}}},[t._v("\n\t\t\t\t\t"+t._s(t.t("settings","Cancel"))+"\n\t\t\t\t")]),t._v(" "),e("NcButton",{attrs:{type:"primary"},on:{click:t.removeGroup}},[t._v("\n\t\t\t\t\t"+t._s(t.t("settings","Confirm"))+"\n\t\t\t\t")])],1)],1)]):t._e(),t._v(" "),e("NcAppNavigationItem",{key:t.id,attrs:{exact:!0,name:t.name,to:{name:"group",params:{selectedGroup:encodeURIComponent(t.id)}},loading:t.loadingRenameGroup,"menu-open":t.openGroupMenu},on:{"update:menuOpen":t.handleGroupMenuOpen},scopedSlots:t._u([{key:"icon",fn:function(){return[e("AccountGroup",{attrs:{size:20}})]},proxy:!0},{key:"counter",fn:function(){return[t.count?e("NcCounterBubble",{attrs:{type:t.active?"highlighted":void 0}},[t._v("\n\t\t\t\t"+t._s(t.count)+"\n\t\t\t")]):t._e()]},proxy:!0},{key:"actions",fn:function(){return["admin"!==t.id&&"disabled"!==t.id&&t.settings.isAdmin?e("NcActionInput",{ref:"displayNameInput",attrs:{"trailing-button-label":t.t("settings","Submit"),type:"text",value:t.name,label:t.t("settings","Rename group")},on:{submit:function(e){return t.renameGroup(t.id)}},scopedSlots:t._u([{key:"icon",fn:function(){return[e("Pencil",{attrs:{size:20}})]},proxy:!0}],null,!1,580569589)}):t._e(),t._v(" "),"admin"!==t.id&&"disabled"!==t.id&&t.settings.isAdmin?e("NcActionButton",{on:{click:function(e){t.showRemoveGroupModal=!0}},scopedSlots:t._u([{key:"icon",fn:function(){return[e("Delete",{attrs:{size:20}})]},proxy:!0}],null,!1,2705356561)},[t._v("\n\t\t\t\t"+t._s(t.t("settings","Remove group"))+"\n\t\t\t")]):t._e()]},proxy:!0}])})],1)}),[],!1,null,"17dd13c0",null).exports;var R=a(35810),Q=a(63814),W=a(26287),H=a(89902),Y=a(947),j=a(32073),K=a(67607),V=a(15916),J=a(95668),Z=a(96763);const X={name:"UserSettingsDialog",components:{NcAppSettingsDialog:H.N,NcAppSettingsSection:Y.A,NcCheckboxRadioSwitch:j.A,NcNoteCard:b.A,NcSelect:K.A},props:{open:{type:Boolean,required:!0}},data:()=>({selectedQuota:!1,loadingSendMail:!1}),computed:{groupSorting:{get(){return this.$store.getters.getGroupSorting===V.q.GroupName?"name":"member-count"},set(t){this.$store.commit("setGroupSorting","name"===t?V.q.GroupName:V.q.UserCount)}},isGroupSortingEnforced(){return this.$store.getters.getServerData.forceSortGroupByName},isModalOpen:{get(){return this.open},set(t){this.$emit("update:open",t)}},showConfig(){return this.$store.getters.getShowConfig},settings(){return this.$store.getters.getServerData},showLanguages:{get(){return this.showConfig.showLanguages},set(t){this.setShowConfig("showLanguages",t)}},showLastLogin:{get(){return this.showConfig.showLastLogin},set(t){this.setShowConfig("showLastLogin",t)}},showUserBackend:{get(){return this.showConfig.showUserBackend},set(t){this.setShowConfig("showUserBackend",t)}},showStoragePath:{get(){return this.showConfig.showStoragePath},set(t){this.setShowConfig("showStoragePath",t)}},quotaOptions(){const t=this.settings.quotaPreset.reduce(((t,e)=>t.concat({id:e,label:e})),[]);return this.settings.allowUnlimitedQuota&&t.unshift(J.SA),t},defaultQuota:{get(){return!1!==this.selectedQuota?this.selectedQuota:this.settings.defaultQuota!==J.SA.id&&OC.Util.computerFileSize(this.settings.defaultQuota)>=0?{id:this.settings.defaultQuota,label:this.settings.defaultQuota}:J.SA},set(t){this.selectedQuota=t}},sendWelcomeMail:{get(){return this.settings.newUserSendEmail},async set(t){try{this.loadingSendMail=!0,this.$store.commit("setServerData",{...this.settings,newUserSendEmail:t}),await W.A.post((0,Q.Jv)("/settings/users/preferences/newUser.sendEmail"),{value:t?"yes":"no"})}catch(t){Z.error("could not update newUser.sendEmail preference: "+t.message,t)}finally{this.loadingSendMail=!1}}}},methods:{setShowConfig(t,e){this.$store.commit("setShowConfig",{key:t,value:e})},validateQuota(t){var e;return"object"==typeof t&&(t=(null===(e=t)||void 0===e?void 0:e.id)||t.label),null===(0,R.lT)(t)?J.SA:{id:t=(0,R.v7)((0,R.lT)(t)),label:t}},setDefaultQuota(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"none";"none"===t&&(t=J.SA),this.$store.dispatch("setAppConfig",{app:"files",key:"default_quota",value:t.id?t.id:t}).then((()=>{"object"!=typeof t&&(t={id:t,label:t}),this.defaultQuota=t}))}}};var tt=a(26893),et={};et.styleTagTransform=T(),et.setAttributes=I(),et.insert=D().bind(null,"head"),et.domAPI=L(),et.insertStyleElement=O(),G()(tt.A,et),tt.A&&tt.A.locals&&tt.A.locals;const st=(0,F.A)(X,(function(){var t=this,e=t._self._c;return e("NcAppSettingsDialog",{attrs:{open:t.isModalOpen,"show-navigation":!0,name:t.t("settings","Account management settings")},on:{"update:open":function(e){t.isModalOpen=e}}},[e("NcAppSettingsSection",{attrs:{id:"visibility-settings",name:t.t("settings","Visibility")}},[e("NcCheckboxRadioSwitch",{attrs:{type:"switch","data-test":"showLanguages",checked:t.showLanguages},on:{"update:checked":function(e){t.showLanguages=e}}},[t._v("\n\t\t\t"+t._s(t.t("settings","Show language"))+"\n\t\t")]),t._v(" "),e("NcCheckboxRadioSwitch",{attrs:{type:"switch","data-test":"showUserBackend",checked:t.showUserBackend},on:{"update:checked":function(e){t.showUserBackend=e}}},[t._v("\n\t\t\t"+t._s(t.t("settings","Show account backend"))+"\n\t\t")]),t._v(" "),e("NcCheckboxRadioSwitch",{attrs:{type:"switch","data-test":"showStoragePath",checked:t.showStoragePath},on:{"update:checked":function(e){t.showStoragePath=e}}},[t._v("\n\t\t\t"+t._s(t.t("settings","Show storage path"))+"\n\t\t")]),t._v(" "),e("NcCheckboxRadioSwitch",{attrs:{type:"switch","data-test":"showLastLogin",checked:t.showLastLogin},on:{"update:checked":function(e){t.showLastLogin=e}}},[t._v("\n\t\t\t"+t._s(t.t("settings","Show last login"))+"\n\t\t")])],1),t._v(" "),e("NcAppSettingsSection",{attrs:{id:"groups-sorting",name:t.t("settings","Sorting")}},[t.isGroupSortingEnforced?e("NcNoteCard",{attrs:{type:"warning"}},[t._v("\n\t\t\t"+t._s(t.t("settings","The system config enforces sorting the groups by name. This also disables showing the member count."))+"\n\t\t")]):t._e(),t._v(" "),e("fieldset",[e("legend",[t._v(t._s(t.t("settings","Group list sorting")))]),t._v(" "),e("NcCheckboxRadioSwitch",{attrs:{type:"radio",checked:t.groupSorting,"data-test":"sortGroupsByMemberCount",disabled:t.isGroupSortingEnforced,name:"group-sorting-mode",value:"member-count"},on:{"update:checked":function(e){t.groupSorting=e}}},[t._v("\n\t\t\t\t"+t._s(t.t("settings","By member count"))+"\n\t\t\t")]),t._v(" "),e("NcCheckboxRadioSwitch",{attrs:{type:"radio",checked:t.groupSorting,"data-test":"sortGroupsByName",disabled:t.isGroupSortingEnforced,name:"group-sorting-mode",value:"name"},on:{"update:checked":function(e){t.groupSorting=e}}},[t._v("\n\t\t\t\t"+t._s(t.t("settings","By name"))+"\n\t\t\t")])],1)],1),t._v(" "),e("NcAppSettingsSection",{attrs:{id:"email-settings",name:t.t("settings","Send email")}},[e("NcCheckboxRadioSwitch",{attrs:{type:"switch","data-test":"sendWelcomeMail",checked:t.sendWelcomeMail,disabled:t.loadingSendMail},on:{"update:checked":function(e){t.sendWelcomeMail=e}}},[t._v("\n\t\t\t"+t._s(t.t("settings","Send welcome email to new accounts"))+"\n\t\t")])],1),t._v(" "),e("NcAppSettingsSection",{attrs:{id:"default-settings",name:t.t("settings","Defaults")}},[e("NcSelect",{attrs:{"input-label":t.t("settings","Default quota"),placement:"top",taggable:!0,options:t.quotaOptions,"create-option":t.validateQuota,placeholder:t.t("settings","Select default quota"),clearable:!1},on:{"option:selected":t.setDefaultQuota},model:{value:t.defaultQuota,callback:function(e){t.defaultQuota=e},expression:"defaultQuota"}})],1)],1)}),[],!1,null,"ab9299ba",null).exports;var at=a(31755),nt=a(24387);function it(t){return void 0===t?null:{id:t.id,title:t.name,usercount:t.usercount,count:Math.max(0,t.usercount-t.disabled)}}const rt=(0,n.pM)({__name:"UserManagementNavigation",setup(t){const e=(0,nt.lq)(),s=(0,nt.rd)(),a=(0,at.P)(),w=(0,n.KR)(!1),_=(0,n.EW)((()=>{var t;return null===(t=e.params)||void 0===t?void 0:t.selectedGroup})),f=(0,n.EW)((()=>_.value?decodeURIComponent(_.value):null)),b=(0,n.EW)((()=>a.getters.getUserCount)),y=(0,n.EW)((()=>a.getters.getSortedGroups)),{adminGroup:x,disabledGroup:k,userGroups:U}=(t=>{const e=(0,n.EW)((()=>t.value.filter((t=>"disabled"!==t.id&&"admin"!==t.id)).map((t=>it(t))).filter((t=>null!==t))));return{adminGroup:(0,n.EW)((()=>it(t.value.find((t=>"admin"===t.id))))),disabledGroup:(0,n.EW)((()=>it(t.value.find((t=>"disabled"===t.id))))),userGroups:e}})(y),S=(0,n.EW)((()=>a.getters.getServerData.isAdmin)),G=(0,n.KR)(!1),N=(0,n.KR)(!1),L=(0,n.KR)(!1),B=(0,n.KR)("");return{__sfc:!0,route:e,router:s,store:a,isDialogOpen:w,selectedGroup:_,selectedGroupDecoded:f,userCount:b,groups:y,adminGroup:x,disabledGroup:k,userGroups:U,isAdmin:S,isAddGroupOpen:G,loadingAddGroup:N,hasAddGroupError:L,newGroupName:B,createGroup:async function(){L.value=!1;const t=B.value.trim();if(""!==t){G.value=!1,N.value=!0;try{await a.dispatch("addGroup",t),await s.push({name:"group",params:{selectedGroup:encodeURIComponent(t)}}),B.value=""}catch{(0,r.Qg)((0,o.Tl)("settings","Failed to create group"))}N.value=!1}else L.value=!0},showNewUserMenu:function(){a.commit("setShowConfig",{key:"showNewUserForm",value:!0})},mdiAccount:i.Gbn,mdiAccountOff:i.lBC,mdiCog:i.CZ3,mdiPlus:i.biz,mdiShieldAccount:i.Jey,t:o.Tl,NcActionInput:l.A,NcActionText:d.A,NcAppNavigation:c.A,NcAppNavigationCaption:u.N,NcAppNavigationItem:A.A,NcAppNavigationList:g.A,NcAppNavigationNew:p.A,NcButton:h.A,NcCounterBubble:m.A,NcIconSvgWrapper:v.A,NcLoadingIcon:C.A,GroupListItem:z,UserSettingsDialog:st}}});var ot=a(69943),lt={};lt.styleTagTransform=T(),lt.setAttributes=I(),lt.insert=D().bind(null,"head"),lt.domAPI=L(),lt.insertStyleElement=O(),G()(ot.A,lt),ot.A&&ot.A.locals&&ot.A.locals;const dt=(0,F.A)(rt,(function(){var t=this,e=t._self._c,s=t._self._setupProxy;return e(s.NcAppNavigation,{attrs:{"aria-label":s.t("settings","Account management")},scopedSlots:t._u([{key:"footer",fn:function(){return[e(s.NcButton,{staticClass:"account-management__settings-toggle",attrs:{type:"tertiary"},on:{click:function(t){s.isDialogOpen=!0}},scopedSlots:t._u([{key:"icon",fn:function(){return[e(s.NcIconSvgWrapper,{attrs:{path:s.mdiCog}})]},proxy:!0}])},[t._v("\n\t\t\t"+t._s(s.t("settings","Account management settings"))+"\n\t\t")]),t._v(" "),e(s.UserSettingsDialog,{attrs:{open:s.isDialogOpen},on:{"update:open":function(t){s.isDialogOpen=t}}})]},proxy:!0}])},[e(s.NcAppNavigationNew,{attrs:{"button-id":"new-user-button",text:s.t("settings","New account")},on:{click:s.showNewUserMenu,keyup:[function(e){return!e.type.indexOf("key")&&t._k(e.keyCode,"enter",13,e.key,"Enter")?null:s.showNewUserMenu.apply(null,arguments)},function(e){return!e.type.indexOf("key")&&t._k(e.keyCode,"space",32,e.key,[" ","Spacebar"])?null:s.showNewUserMenu.apply(null,arguments)}]},scopedSlots:t._u([{key:"icon",fn:function(){return[e(s.NcIconSvgWrapper,{attrs:{path:s.mdiPlus}})]},proxy:!0}])}),t._v(" "),e(s.NcAppNavigationList,{staticClass:"account-management__system-list",attrs:{"data-cy-users-settings-navigation-groups":"system"}},[e(s.NcAppNavigationItem,{attrs:{id:"everyone",exact:!0,name:s.t("settings","Active accounts"),to:{name:"users"}},scopedSlots:t._u([{key:"icon",fn:function(){return[e(s.NcIconSvgWrapper,{attrs:{path:s.mdiAccount}})]},proxy:!0},{key:"counter",fn:function(){return[s.userCount?e(s.NcCounterBubble,{attrs:{type:s.selectedGroupDecoded?void 0:"highlighted"}},[t._v("\n\t\t\t\t\t"+t._s(s.userCount)+"\n\t\t\t\t")]):t._e()]},proxy:!0}])}),t._v(" "),s.isAdmin?e(s.NcAppNavigationItem,{attrs:{id:"admin",exact:!0,name:s.t("settings","Admins"),to:{name:"group",params:{selectedGroup:"admin"}}},scopedSlots:t._u([{key:"icon",fn:function(){return[e(s.NcIconSvgWrapper,{attrs:{path:s.mdiShieldAccount}})]},proxy:!0},{key:"counter",fn:function(){return[s.adminGroup&&s.adminGroup.count>0?e(s.NcCounterBubble,{attrs:{type:"admin"===s.selectedGroupDecoded?"highlighted":void 0}},[t._v("\n\t\t\t\t\t"+t._s(s.adminGroup.count)+"\n\t\t\t\t")]):t._e()]},proxy:!0}],null,!1,2218088905)}):t._e(),t._v(" "),s.disabledGroup&&(s.disabledGroup.usercount>0||-1===s.disabledGroup.usercount)?e(s.NcAppNavigationItem,{attrs:{id:"disabled",exact:!0,name:s.t("settings","Disabled accounts"),to:{name:"group",params:{selectedGroup:"disabled"}}},scopedSlots:t._u([{key:"icon",fn:function(){return[e(s.NcIconSvgWrapper,{attrs:{path:s.mdiAccountOff}})]},proxy:!0},s.disabledGroup.usercount>0?{key:"counter",fn:function(){return[e(s.NcCounterBubble,{attrs:{type:"disabled"===s.selectedGroupDecoded?"highlighted":void 0}},[t._v("\n\t\t\t\t\t"+t._s(s.disabledGroup.usercount)+"\n\t\t\t\t")])]},proxy:!0}:null],null,!0)}):t._e()],1),t._v(" "),e(s.NcAppNavigationCaption,{attrs:{name:s.t("settings","Groups"),disabled:s.loadingAddGroup,"aria-label":s.loadingAddGroup?s.t("settings","Creating group…"):s.t("settings","Create group"),"force-menu":"","is-heading":"",open:s.isAddGroupOpen},on:{"update:open":function(t){s.isAddGroupOpen=t}},scopedSlots:t._u([{key:"actionsTriggerIcon",fn:function(){return[s.loadingAddGroup?e(s.NcLoadingIcon):e(s.NcIconSvgWrapper,{attrs:{path:s.mdiPlus}})]},proxy:!0},{key:"actions",fn:function(){return[e(s.NcActionText,{scopedSlots:t._u([{key:"icon",fn:function(){return[e("AccountGroup",{attrs:{size:20}})]},proxy:!0}])},[t._v("\n\t\t\t\t"+t._s(s.t("settings","Create group"))+"\n\t\t\t")]),t._v(" "),e(s.NcActionInput,{attrs:{label:s.t("settings","Group name"),"data-cy-users-settings-new-group-name":"","label-outside":!1,disabled:s.loadingAddGroup,value:s.newGroupName,error:s.hasAddGroupError,"helper-text":s.hasAddGroupError?s.t("settings","Please enter a valid group name"):""},on:{"update:value":function(t){s.newGroupName=t},submit:s.createGroup}})]},proxy:!0}])}),t._v(" "),e(s.NcAppNavigationList,{staticClass:"account-management__group-list",attrs:{"data-cy-users-settings-navigation-groups":"custom"}},t._l(s.userGroups,(function(t){return e(s.GroupListItem,{key:t.id,attrs:{id:t.id,active:s.selectedGroupDecoded===t.id,name:t.title,count:t.count}})})),1)],1)}),[],!1,null,"9b250646",null).exports},26734:t=>{t.exports="data:image/svg+xml,%3csvg%20xmlns=%27http://www.w3.org/2000/svg%27%20width=%2724%27%20height=%2724%27%20fill=%27%23222%27%3e%3cpath%20d=%27M15.4%2016.6L10.8%2012l4.6-4.6L14%206l-6%206%206%206%201.4-1.4z%27/%3e%3c/svg%3e"},51338:t=>{t.exports="data:image/svg+xml,%3csvg%20xmlns=%27http://www.w3.org/2000/svg%27%20width=%2724%27%20height=%2724%27%20fill=%27%23222%27%3e%3cpath%20d=%27M18.4%207.4L17%206l-6%206%206%206%201.4-1.4-4.6-4.6%204.6-4.6m-6%200L11%206l-6%206%206%206%201.4-1.4L7.8%2012l4.6-4.6z%27/%3e%3c/svg%3e"},57818:t=>{t.exports="data:image/svg+xml,%3csvg%20xmlns=%27http://www.w3.org/2000/svg%27%20width=%2724%27%20height=%2724%27%20fill=%27%23222%27%3e%3cpath%20d=%27M5.6%207.4L7%206l6%206-6%206-1.4-1.4%204.6-4.6-4.6-4.6m6%200L13%206l6%206-6%206-1.4-1.4%204.6-4.6-4.6-4.6z%27/%3e%3c/svg%3e"},31926:t=>{t.exports="data:image/svg+xml,%3csvg%20xmlns=%27http://www.w3.org/2000/svg%27%20width=%2724%27%20height=%2724%27%20fill=%27%23222%27%3e%3cpath%20d=%27M8.6%2016.6l4.6-4.6-4.6-4.6L10%206l6%206-6%206-1.4-1.4z%27/%3e%3c/svg%3e"}}]); +//# sourceMappingURL=settings-users-3239.js.map?v=a0d2948d88455156ef59
\ No newline at end of file diff --git a/dist/settings-users-3239.js.map b/dist/settings-users-3239.js.map index cdf9666421a..e3125066f32 100644 --- a/dist/settings-users-3239.js.map +++ b/dist/settings-users-3239.js.map @@ -1 +1 @@ -{"version":3,"file":"settings-users-3239.js?v=7e3101aa20fe47be15fe","mappings":"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","sources":["webpack:///nextcloud/apps/settings/src/utils/userUtils.ts","webpack:///nextcloud/apps/settings/src/components/GroupListItem.vue?vue&type=style&index=0&id=17dd13c0&prod&lang=scss&scoped=true","webpack:///nextcloud/apps/settings/src/components/UserList.vue?vue&type=style&index=0&id=a6e11582&prod&lang=scss&scoped=true","webpack:///nextcloud/apps/settings/src/components/Users/NewUserModal.vue?vue&type=style&index=0&id=2fe7d69f&prod&lang=scss&scoped=true","webpack:///nextcloud/apps/settings/src/components/Users/UserListFooter.vue?vue&type=style&index=0&id=3ec0b16a&prod&lang=scss&scoped=true","webpack:///nextcloud/apps/settings/src/components/Users/UserListHeader.vue?vue&type=style&index=0&id=3121155a&prod&lang=scss&scoped=true","webpack:///nextcloud/apps/settings/src/components/Users/UserRow.vue?vue&type=style&index=0&id=2cdd4510&prod&lang=scss&scoped=true","webpack:///nextcloud/apps/settings/src/components/Users/UserSettingsDialog.vue?vue&type=style&index=0&id=ab9299ba&prod&scoped=true&lang=scss","webpack:///nextcloud/apps/settings/src/components/Users/VirtualList.vue?vue&type=style&index=0&id=a583d0b2&prod&lang=scss&scoped=true","webpack:///nextcloud/apps/settings/src/views/UserManagement.vue?vue&type=style&index=0&id=fc8857fc&prod&lang=scss&scoped=true","webpack:///nextcloud/apps/settings/src/views/UserManagementNavigation.vue?vue&type=style&index=0&id=9b250646&prod&scoped=true&lang=scss","webpack://nextcloud/./apps/settings/src/views/UserManagement.vue?4b28","webpack:///nextcloud/apps/settings/src/components/Users/VirtualList.vue","webpack:///nextcloud/apps/settings/src/components/Users/VirtualList.vue?vue&type=script&lang=ts","webpack://nextcloud/./apps/settings/src/components/Users/VirtualList.vue?0211","webpack://nextcloud/./apps/settings/src/components/Users/VirtualList.vue?1915","webpack://nextcloud/./apps/settings/src/components/Users/NewUserModal.vue?6ea8","webpack:///nextcloud/apps/settings/src/components/Users/NewUserModal.vue","webpack:///nextcloud/apps/settings/src/components/Users/NewUserModal.vue?vue&type=script&lang=js","webpack://nextcloud/./apps/settings/src/components/Users/NewUserModal.vue?daab","webpack://nextcloud/./apps/settings/src/components/Users/NewUserModal.vue?0748","webpack:///nextcloud/apps/settings/src/components/Users/UserListFooter.vue?vue&type=script&lang=ts","webpack:///nextcloud/apps/settings/src/components/Users/UserListFooter.vue","webpack://nextcloud/./apps/settings/src/components/Users/UserListFooter.vue?2405","webpack://nextcloud/./apps/settings/src/components/Users/UserListFooter.vue?b843","webpack:///nextcloud/apps/settings/src/components/Users/UserListHeader.vue?vue&type=script&lang=ts","webpack:///nextcloud/apps/settings/src/components/Users/UserListHeader.vue","webpack://nextcloud/./apps/settings/src/components/Users/UserListHeader.vue?6d05","webpack://nextcloud/./apps/settings/src/components/Users/UserListHeader.vue?758a","webpack://nextcloud/./apps/settings/src/components/Users/UserRow.vue?5434","webpack:///nextcloud/apps/settings/src/components/Users/UserRowActions.vue?vue&type=script&lang=ts","webpack:///nextcloud/apps/settings/src/components/Users/UserRowActions.vue","webpack://nextcloud/./apps/settings/src/components/Users/UserRowActions.vue?3c2a","webpack:///nextcloud/apps/settings/src/mixins/UserRowMixin.js","webpack:///nextcloud/apps/settings/src/components/Users/UserRow.vue","webpack:///nextcloud/apps/settings/src/components/Users/UserRow.vue?vue&type=script&lang=js","webpack://nextcloud/./apps/settings/src/components/Users/UserRow.vue?bc19","webpack://nextcloud/./apps/settings/src/components/Users/UserRow.vue?eb6e","webpack:///nextcloud/apps/settings/src/components/UserList.vue","webpack:///nextcloud/apps/settings/src/components/UserList.vue?vue&type=script&lang=js","webpack://nextcloud/./apps/settings/src/components/UserList.vue?7ce1","webpack://nextcloud/./apps/settings/src/components/UserList.vue?02a4","webpack://nextcloud/./apps/settings/src/components/UserList.vue?c96e","webpack:///nextcloud/apps/settings/src/views/UserManagement.vue?vue&type=script&lang=js","webpack:///nextcloud/apps/settings/src/views/UserManagement.vue","webpack://nextcloud/./apps/settings/src/views/UserManagement.vue?fa13","webpack://nextcloud/./apps/settings/src/views/UserManagement.vue?fd5a","webpack:///nextcloud/apps/settings/src/views/UserManagementNavigation.vue","webpack:///nextcloud/apps/settings/src/components/GroupListItem.vue","webpack:///nextcloud/apps/settings/src/components/GroupListItem.vue?vue&type=script&lang=js","webpack://nextcloud/./apps/settings/src/components/GroupListItem.vue?78a4","webpack://nextcloud/./apps/settings/src/components/GroupListItem.vue?7b19","webpack://nextcloud/./apps/settings/src/components/GroupListItem.vue?9f48","webpack://nextcloud/./apps/settings/src/components/Users/UserSettingsDialog.vue?824e","webpack:///nextcloud/apps/settings/src/components/Users/UserSettingsDialog.vue","webpack:///nextcloud/apps/settings/src/components/Users/UserSettingsDialog.vue?vue&type=script&lang=js","webpack://nextcloud/./apps/settings/src/components/Users/UserSettingsDialog.vue?5a70","webpack://nextcloud/./apps/settings/src/components/Users/UserSettingsDialog.vue?f361","webpack:///nextcloud/apps/settings/src/composables/useGroupsNavigation.ts","webpack:///nextcloud/apps/settings/src/views/UserManagementNavigation.vue?vue&type=script&setup=true&lang=ts","webpack://nextcloud/./apps/settings/src/views/UserManagementNavigation.vue?44da","webpack://nextcloud/./apps/settings/src/views/UserManagementNavigation.vue?28b6"],"sourcesContent":["/**\n * @copyright 2023 Christopher Ng <chrng8@gmail.com>\n *\n * @author Christopher Ng <chrng8@gmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\nexport const unlimitedQuota = {\n id: 'none',\n label: t('settings', 'Unlimited'),\n};\nexport const defaultQuota = {\n id: 'default',\n label: t('settings', 'Default quota'),\n};\n/**\n * Return `true` if the logged in user does not have permissions to view the\n * data of `user`\n * @param user\n * @param user.id\n */\nexport const isObfuscated = (user) => {\n const keys = Object.keys(user);\n return keys.length === 1 && keys.at(0) === 'id';\n};\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.modal__header[data-v-17dd13c0]{margin:0}.modal__content[data-v-17dd13c0]{display:flex;flex-direction:column;align-items:center;padding:20px;gap:4px 0}.modal__button-row[data-v-17dd13c0]{display:flex;width:100%;justify-content:space-between}`, \"\",{\"version\":3,\"sources\":[\"webpack://./apps/settings/src/components/GroupListItem.vue\"],\"names\":[],\"mappings\":\"AAEC,gCACC,QAAA,CAGD,iCACC,YAAA,CACA,qBAAA,CACA,kBAAA,CACA,YAAA,CACA,SAAA,CAGD,oCACC,YAAA,CACA,UAAA,CACA,6BAAA\",\"sourcesContent\":[\"\\n.modal {\\n\\t&__header {\\n\\t\\tmargin: 0;\\n\\t}\\n\\n\\t&__content {\\n\\t\\tdisplay: flex;\\n\\t\\tflex-direction: column;\\n\\t\\talign-items: center;\\n\\t\\tpadding: 20px;\\n\\t\\tgap: 4px 0;\\n\\t}\\n\\n\\t&__button-row {\\n\\t\\tdisplay: flex;\\n\\t\\twidth: 100%;\\n\\t\\tjustify-content: space-between;\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.empty[data-v-a6e11582] .icon-vue{width:64px;height:64px}.empty[data-v-a6e11582] .icon-vue svg{max-width:64px;max-height:64px}`, \"\",{\"version\":3,\"sources\":[\"webpack://./apps/settings/src/components/UserList.vue\"],\"names\":[],\"mappings\":\"AAKE,kCACC,UAAA,CACA,WAAA,CAEA,sCACC,cAAA,CACA,eAAA\",\"sourcesContent\":[\"\\n@import './Users/shared/styles.scss';\\n\\n.empty {\\n\\t:deep {\\n\\t\\t.icon-vue {\\n\\t\\t\\twidth: 64px;\\n\\t\\t\\theight: 64px;\\n\\n\\t\\t\\tsvg {\\n\\t\\t\\t\\tmax-width: 64px;\\n\\t\\t\\t\\tmax-height: 64px;\\n\\t\\t\\t}\\n\\t\\t}\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.modal__form[data-v-2fe7d69f]{display:flex;flex-direction:column;align-items:center;padding:20px;gap:4px 0}.modal__item[data-v-2fe7d69f]{width:100%}.modal__item[data-v-2fe7d69f]:not(:focus):not(:active){border-color:var(--color-border-dark)}.modal__hint[data-v-2fe7d69f]{color:var(--color-text-maxcontrast);margin-top:8px;align-self:flex-start}.modal__label[data-v-2fe7d69f]{display:block;padding:4px 0}.modal__select[data-v-2fe7d69f]{width:100%}.modal__submit[data-v-2fe7d69f]{margin-top:20px}`, \"\",{\"version\":3,\"sources\":[\"webpack://./apps/settings/src/components/Users/NewUserModal.vue\"],\"names\":[],\"mappings\":\"AAEC,8BACC,YAAA,CACA,qBAAA,CACA,kBAAA,CACA,YAAA,CACA,SAAA,CAGD,8BACC,UAAA,CAEA,uDACC,qCAAA,CAIF,8BACC,mCAAA,CACA,cAAA,CACA,qBAAA,CAGD,+BACC,aAAA,CACA,aAAA,CAGD,gCACC,UAAA,CAGD,gCACC,eAAA\",\"sourcesContent\":[\"\\n.modal {\\n\\t&__form {\\n\\t\\tdisplay: flex;\\n\\t\\tflex-direction: column;\\n\\t\\talign-items: center;\\n\\t\\tpadding: 20px;\\n\\t\\tgap: 4px 0;\\n\\t}\\n\\n\\t&__item {\\n\\t\\twidth: 100%;\\n\\n\\t\\t&:not(:focus):not(:active) {\\n\\t\\t\\tborder-color: var(--color-border-dark);\\n\\t\\t}\\n\\t}\\n\\n\\t&__hint {\\n\\t\\tcolor: var(--color-text-maxcontrast);\\n\\t\\tmargin-top: 8px;\\n\\t\\talign-self: flex-start;\\n\\t}\\n\\n\\t&__label {\\n\\t\\tdisplay: block;\\n\\t\\tpadding: 4px 0;\\n\\t}\\n\\n\\t&__select {\\n\\t\\twidth: 100%;\\n\\t}\\n\\n\\t&__submit {\\n\\t\\tmargin-top: 20px;\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.footer[data-v-3ec0b16a]{position:relative;display:flex;min-width:100%;width:fit-content;height:var(--row-height);background-color:var(--color-main-background)}.footer__cell[data-v-3ec0b16a]{display:flex;flex-direction:column;justify-content:center;padding:0 var(--cell-padding);min-width:var(--cell-width);width:var(--cell-width);color:var(--color-main-text)}.footer__cell strong[data-v-3ec0b16a],.footer__cell span[data-v-3ec0b16a],.footer__cell label[data-v-3ec0b16a]{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;overflow-wrap:anywhere}@media(min-width: 670px){.footer__cell--avatar[data-v-3ec0b16a],.footer__cell--displayname[data-v-3ec0b16a]{position:sticky;z-index:var(--sticky-column-z-index);background-color:var(--color-main-background)}.footer__cell--avatar[data-v-3ec0b16a]{left:0}.footer__cell--displayname[data-v-3ec0b16a]{left:var(--avatar-cell-width);border-right:1px solid var(--color-border)}}.footer__cell--username[data-v-3ec0b16a]{padding-left:calc(var(--default-grid-baseline)*3)}.footer__cell--avatar[data-v-3ec0b16a]{min-width:var(--avatar-cell-width);width:var(--avatar-cell-width);align-items:center;padding:0;user-select:none}.footer__cell--multiline span[data-v-3ec0b16a]{line-height:1.3em;white-space:unset}@supports(-webkit-line-clamp: 2){.footer__cell--multiline span[data-v-3ec0b16a]{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}}.footer__cell--large[data-v-3ec0b16a]{min-width:var(--cell-width-large);width:var(--cell-width-large)}.footer__cell--obfuscated[data-v-3ec0b16a]{min-width:400px;width:400px}.footer__cell--fill[data-v-3ec0b16a]{min-width:var(--cell-width-large);width:100%}.footer__cell--actions[data-v-3ec0b16a]{position:sticky;right:0;z-index:var(--sticky-column-z-index);display:flex;flex-direction:row;align-items:center;min-width:110px;width:110px;background-color:var(--color-main-background);border-left:1px solid var(--color-border)}.footer__subtitle[data-v-3ec0b16a]{color:var(--color-text-maxcontrast)}.footer__cell[data-v-3ec0b16a]{position:sticky;color:var(--color-text-maxcontrast)}.footer__cell--loading[data-v-3ec0b16a]{left:0;min-width:var(--avatar-cell-width);width:var(--avatar-cell-width);align-items:center;padding:0}.footer__cell--count[data-v-3ec0b16a]{left:var(--avatar-cell-width);min-width:var(--cell-width);width:var(--cell-width)}`, \"\",{\"version\":3,\"sources\":[\"webpack://./apps/settings/src/components/Users/UserListFooter.vue\",\"webpack://./apps/settings/src/components/Users/shared/styles.scss\"],\"names\":[],\"mappings\":\"AAGA,yBCoBC,iBAAA,CACA,YAAA,CACA,cAAA,CACA,iBAAA,CACA,wBAAA,CACA,6CAAA,CAIA,+BACC,YAAA,CACA,qBAAA,CACA,sBAAA,CACA,6BAAA,CACA,2BAAA,CACA,uBAAA,CACA,4BAAA,CAEA,+GAGC,eAAA,CACA,sBAAA,CACA,kBAAA,CACA,sBAAA,CAGD,yBACC,mFAEC,eAAA,CACA,oCAAA,CACA,6CAAA,CAGD,uCACC,MAAA,CAGD,4CACC,6BAAA,CACA,0CAAA,CAAA,CAIF,yCACC,iDAAA,CAGD,uCACC,kCAAA,CACA,8BAAA,CACA,kBAAA,CACA,SAAA,CACA,gBAAA,CAIA,+CACC,iBAAA,CACA,iBAAA,CAEA,iCAJD,+CAKE,mBAAA,CACA,oBAAA,CACA,2BAAA,CAAA,CAKH,sCACC,iCAAA,CACA,6BAAA,CAGD,2CACC,eAAA,CACA,WAAA,CAID,qCACC,iCAAA,CACA,UAAA,CAGD,wCACC,eAAA,CACA,OAAA,CACA,oCAAA,CACA,YAAA,CACA,kBAAA,CACA,kBAAA,CACA,eAAA,CACA,WAAA,CACA,6CAAA,CACA,yCAAA,CAIF,mCACC,mCAAA,CDrHD,+BACC,eAAA,CACA,mCAAA,CAEA,wCACC,MAAA,CACA,kCAAA,CACA,8BAAA,CACA,kBAAA,CACA,SAAA,CAGD,sCACC,6BAAA,CACA,2BAAA,CACA,uBAAA\",\"sourcesContent\":[\"\\n@import './shared/styles.scss';\\n\\n.footer {\\n\\t@include row;\\n\\t@include cell;\\n\\n\\t&__cell {\\n\\t\\tposition: sticky;\\n\\t\\tcolor: var(--color-text-maxcontrast);\\n\\n\\t\\t&--loading {\\n\\t\\t\\tleft: 0;\\n\\t\\t\\tmin-width: var(--avatar-cell-width);\\n\\t\\t\\twidth: var(--avatar-cell-width);\\n\\t\\t\\talign-items: center;\\n\\t\\t\\tpadding: 0;\\n\\t\\t}\\n\\n\\t\\t&--count {\\n\\t\\t\\tleft: var(--avatar-cell-width);\\n\\t\\t\\tmin-width: var(--cell-width);\\n\\t\\t\\twidth: var(--cell-width);\\n\\t\\t}\\n\\t}\\n}\\n\",\"/**\\n * @copyright 2023 Christopher Ng <chrng8@gmail.com>\\n *\\n * @author Christopher Ng <chrng8@gmail.com>\\n *\\n * @license AGPL-3.0-or-later\\n *\\n * This program is free software: you can redistribute it and/or modify\\n * it under the terms of the GNU Affero General Public License as\\n * published by the Free Software Foundation, either version 3 of the\\n * License, or (at your option) any later version.\\n *\\n * This program is distributed in the hope that it will be useful,\\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\\n * GNU Affero General Public License for more details.\\n *\\n * You should have received a copy of the GNU Affero General Public License\\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\\n *\\n */\\n\\n@mixin row {\\n\\tposition: relative;\\n\\tdisplay: flex;\\n\\tmin-width: 100%;\\n\\twidth: fit-content;\\n\\theight: var(--row-height);\\n\\tbackground-color: var(--color-main-background);\\n}\\n\\n@mixin cell {\\n\\t&__cell {\\n\\t\\tdisplay: flex;\\n\\t\\tflex-direction: column;\\n\\t\\tjustify-content: center;\\n\\t\\tpadding: 0 var(--cell-padding);\\n\\t\\tmin-width: var(--cell-width);\\n\\t\\twidth: var(--cell-width);\\n\\t\\tcolor: var(--color-main-text);\\n\\n\\t\\tstrong,\\n\\t\\tspan,\\n\\t\\tlabel {\\n\\t\\t\\toverflow: hidden;\\n\\t\\t\\ttext-overflow: ellipsis;\\n\\t\\t\\twhite-space: nowrap;\\n\\t\\t\\toverflow-wrap: anywhere;\\n\\t\\t}\\n\\n\\t\\t@media (min-width: 670px) { /* Show one &--large column between stickied columns */\\n\\t\\t\\t&--avatar,\\n\\t\\t\\t&--displayname {\\n\\t\\t\\t\\tposition: sticky;\\n\\t\\t\\t\\tz-index: var(--sticky-column-z-index);\\n\\t\\t\\t\\tbackground-color: var(--color-main-background);\\n\\t\\t\\t}\\n\\n\\t\\t\\t&--avatar {\\n\\t\\t\\t\\tleft: 0;\\n\\t\\t\\t}\\n\\n\\t\\t\\t&--displayname {\\n\\t\\t\\t\\tleft: var(--avatar-cell-width);\\n\\t\\t\\t\\tborder-right: 1px solid var(--color-border);\\n\\t\\t\\t}\\n\\t\\t}\\n\\n\\t\\t&--username {\\n\\t\\t\\tpadding-left: calc(var(--default-grid-baseline) * 3);\\n\\t\\t}\\n\\n\\t\\t&--avatar {\\n\\t\\t\\tmin-width: var(--avatar-cell-width);\\n\\t\\t\\twidth: var(--avatar-cell-width);\\n\\t\\t\\talign-items: center;\\n\\t\\t\\tpadding: 0;\\n\\t\\t\\tuser-select: none;\\n\\t\\t}\\n\\n\\t\\t&--multiline {\\n\\t\\t\\tspan {\\n\\t\\t\\t\\tline-height: 1.3em;\\n\\t\\t\\t\\twhite-space: unset;\\n\\n\\t\\t\\t\\t@supports (-webkit-line-clamp: 2) {\\n\\t\\t\\t\\t\\tdisplay: -webkit-box;\\n\\t\\t\\t\\t\\t-webkit-line-clamp: 2;\\n\\t\\t\\t\\t\\t-webkit-box-orient: vertical;\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\t\\t}\\n\\n\\t\\t&--large {\\n\\t\\t\\tmin-width: var(--cell-width-large);\\n\\t\\t\\twidth: var(--cell-width-large);\\n\\t\\t}\\n\\n\\t\\t&--obfuscated {\\n\\t\\t\\tmin-width: 400px;\\n\\t\\t\\twidth: 400px;\\n\\t\\t}\\n\\n\\t\\t// Fill remaining row space with cell\\n\\t\\t&--fill {\\n\\t\\t\\tmin-width: var(--cell-width-large);\\n\\t\\t\\twidth: 100%;\\n\\t\\t}\\n\\n\\t\\t&--actions {\\n\\t\\t\\tposition: sticky;\\n\\t\\t\\tright: 0;\\n\\t\\t\\tz-index: var(--sticky-column-z-index);\\n\\t\\t\\tdisplay: flex;\\n\\t\\t\\tflex-direction: row;\\n\\t\\t\\talign-items: center;\\n\\t\\t\\tmin-width: 110px;\\n\\t\\t\\twidth: 110px;\\n\\t\\t\\tbackground-color: var(--color-main-background);\\n\\t\\t\\tborder-left: 1px solid var(--color-border);\\n\\t\\t}\\n\\t}\\n\\n\\t&__subtitle {\\n\\t\\tcolor: var(--color-text-maxcontrast);\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.header[data-v-3121155a]{position:relative;display:flex;min-width:100%;width:fit-content;height:var(--row-height);background-color:var(--color-main-background);border-bottom:1px solid var(--color-border)}.header__cell[data-v-3121155a]{display:flex;flex-direction:column;justify-content:center;padding:0 var(--cell-padding);min-width:var(--cell-width);width:var(--cell-width);color:var(--color-main-text)}.header__cell strong[data-v-3121155a],.header__cell span[data-v-3121155a],.header__cell label[data-v-3121155a]{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;overflow-wrap:anywhere}@media(min-width: 670px){.header__cell--avatar[data-v-3121155a],.header__cell--displayname[data-v-3121155a]{position:sticky;z-index:var(--sticky-column-z-index);background-color:var(--color-main-background)}.header__cell--avatar[data-v-3121155a]{left:0}.header__cell--displayname[data-v-3121155a]{left:var(--avatar-cell-width);border-right:1px solid var(--color-border)}}.header__cell--username[data-v-3121155a]{padding-left:calc(var(--default-grid-baseline)*3)}.header__cell--avatar[data-v-3121155a]{min-width:var(--avatar-cell-width);width:var(--avatar-cell-width);align-items:center;padding:0;user-select:none}.header__cell--multiline span[data-v-3121155a]{line-height:1.3em;white-space:unset}@supports(-webkit-line-clamp: 2){.header__cell--multiline span[data-v-3121155a]{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}}.header__cell--large[data-v-3121155a]{min-width:var(--cell-width-large);width:var(--cell-width-large)}.header__cell--obfuscated[data-v-3121155a]{min-width:400px;width:400px}.header__cell--fill[data-v-3121155a]{min-width:var(--cell-width-large);width:100%}.header__cell--actions[data-v-3121155a]{position:sticky;right:0;z-index:var(--sticky-column-z-index);display:flex;flex-direction:row;align-items:center;min-width:110px;width:110px;background-color:var(--color-main-background);border-left:1px solid var(--color-border)}.header__subtitle[data-v-3121155a]{color:var(--color-text-maxcontrast)}`, \"\",{\"version\":3,\"sources\":[\"webpack://./apps/settings/src/components/Users/UserListHeader.vue\",\"webpack://./apps/settings/src/components/Users/shared/styles.scss\"],\"names\":[],\"mappings\":\"AAGA,yBCoBC,iBAAA,CACA,YAAA,CACA,cAAA,CACA,iBAAA,CACA,wBAAA,CACA,6CAAA,CDrBA,2CAAA,CCyBA,+BACC,YAAA,CACA,qBAAA,CACA,sBAAA,CACA,6BAAA,CACA,2BAAA,CACA,uBAAA,CACA,4BAAA,CAEA,+GAGC,eAAA,CACA,sBAAA,CACA,kBAAA,CACA,sBAAA,CAGD,yBACC,mFAEC,eAAA,CACA,oCAAA,CACA,6CAAA,CAGD,uCACC,MAAA,CAGD,4CACC,6BAAA,CACA,0CAAA,CAAA,CAIF,yCACC,iDAAA,CAGD,uCACC,kCAAA,CACA,8BAAA,CACA,kBAAA,CACA,SAAA,CACA,gBAAA,CAIA,+CACC,iBAAA,CACA,iBAAA,CAEA,iCAJD,+CAKE,mBAAA,CACA,oBAAA,CACA,2BAAA,CAAA,CAKH,sCACC,iCAAA,CACA,6BAAA,CAGD,2CACC,eAAA,CACA,WAAA,CAID,qCACC,iCAAA,CACA,UAAA,CAGD,wCACC,eAAA,CACA,OAAA,CACA,oCAAA,CACA,YAAA,CACA,kBAAA,CACA,kBAAA,CACA,eAAA,CACA,WAAA,CACA,6CAAA,CACA,yCAAA,CAIF,mCACC,mCAAA\",\"sourcesContent\":[\"\\n@import './shared/styles.scss';\\n\\n.header {\\n\\t@include row;\\n\\t@include cell;\\n\\n\\tborder-bottom: 1px solid var(--color-border);\\n}\\n\",\"/**\\n * @copyright 2023 Christopher Ng <chrng8@gmail.com>\\n *\\n * @author Christopher Ng <chrng8@gmail.com>\\n *\\n * @license AGPL-3.0-or-later\\n *\\n * This program is free software: you can redistribute it and/or modify\\n * it under the terms of the GNU Affero General Public License as\\n * published by the Free Software Foundation, either version 3 of the\\n * License, or (at your option) any later version.\\n *\\n * This program is distributed in the hope that it will be useful,\\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\\n * GNU Affero General Public License for more details.\\n *\\n * You should have received a copy of the GNU Affero General Public License\\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\\n *\\n */\\n\\n@mixin row {\\n\\tposition: relative;\\n\\tdisplay: flex;\\n\\tmin-width: 100%;\\n\\twidth: fit-content;\\n\\theight: var(--row-height);\\n\\tbackground-color: var(--color-main-background);\\n}\\n\\n@mixin cell {\\n\\t&__cell {\\n\\t\\tdisplay: flex;\\n\\t\\tflex-direction: column;\\n\\t\\tjustify-content: center;\\n\\t\\tpadding: 0 var(--cell-padding);\\n\\t\\tmin-width: var(--cell-width);\\n\\t\\twidth: var(--cell-width);\\n\\t\\tcolor: var(--color-main-text);\\n\\n\\t\\tstrong,\\n\\t\\tspan,\\n\\t\\tlabel {\\n\\t\\t\\toverflow: hidden;\\n\\t\\t\\ttext-overflow: ellipsis;\\n\\t\\t\\twhite-space: nowrap;\\n\\t\\t\\toverflow-wrap: anywhere;\\n\\t\\t}\\n\\n\\t\\t@media (min-width: 670px) { /* Show one &--large column between stickied columns */\\n\\t\\t\\t&--avatar,\\n\\t\\t\\t&--displayname {\\n\\t\\t\\t\\tposition: sticky;\\n\\t\\t\\t\\tz-index: var(--sticky-column-z-index);\\n\\t\\t\\t\\tbackground-color: var(--color-main-background);\\n\\t\\t\\t}\\n\\n\\t\\t\\t&--avatar {\\n\\t\\t\\t\\tleft: 0;\\n\\t\\t\\t}\\n\\n\\t\\t\\t&--displayname {\\n\\t\\t\\t\\tleft: var(--avatar-cell-width);\\n\\t\\t\\t\\tborder-right: 1px solid var(--color-border);\\n\\t\\t\\t}\\n\\t\\t}\\n\\n\\t\\t&--username {\\n\\t\\t\\tpadding-left: calc(var(--default-grid-baseline) * 3);\\n\\t\\t}\\n\\n\\t\\t&--avatar {\\n\\t\\t\\tmin-width: var(--avatar-cell-width);\\n\\t\\t\\twidth: var(--avatar-cell-width);\\n\\t\\t\\talign-items: center;\\n\\t\\t\\tpadding: 0;\\n\\t\\t\\tuser-select: none;\\n\\t\\t}\\n\\n\\t\\t&--multiline {\\n\\t\\t\\tspan {\\n\\t\\t\\t\\tline-height: 1.3em;\\n\\t\\t\\t\\twhite-space: unset;\\n\\n\\t\\t\\t\\t@supports (-webkit-line-clamp: 2) {\\n\\t\\t\\t\\t\\tdisplay: -webkit-box;\\n\\t\\t\\t\\t\\t-webkit-line-clamp: 2;\\n\\t\\t\\t\\t\\t-webkit-box-orient: vertical;\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\t\\t}\\n\\n\\t\\t&--large {\\n\\t\\t\\tmin-width: var(--cell-width-large);\\n\\t\\t\\twidth: var(--cell-width-large);\\n\\t\\t}\\n\\n\\t\\t&--obfuscated {\\n\\t\\t\\tmin-width: 400px;\\n\\t\\t\\twidth: 400px;\\n\\t\\t}\\n\\n\\t\\t// Fill remaining row space with cell\\n\\t\\t&--fill {\\n\\t\\t\\tmin-width: var(--cell-width-large);\\n\\t\\t\\twidth: 100%;\\n\\t\\t}\\n\\n\\t\\t&--actions {\\n\\t\\t\\tposition: sticky;\\n\\t\\t\\tright: 0;\\n\\t\\t\\tz-index: var(--sticky-column-z-index);\\n\\t\\t\\tdisplay: flex;\\n\\t\\t\\tflex-direction: row;\\n\\t\\t\\talign-items: center;\\n\\t\\t\\tmin-width: 110px;\\n\\t\\t\\twidth: 110px;\\n\\t\\t\\tbackground-color: var(--color-main-background);\\n\\t\\t\\tborder-left: 1px solid var(--color-border);\\n\\t\\t}\\n\\t}\\n\\n\\t&__subtitle {\\n\\t\\tcolor: var(--color-text-maxcontrast);\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.user-list__row[data-v-2cdd4510]{position:relative;display:flex;min-width:100%;width:fit-content;height:var(--row-height);background-color:var(--color-main-background)}.user-list__row[data-v-2cdd4510]:hover{background-color:var(--color-background-hover)}.user-list__row:hover .row__cell[data-v-2cdd4510]:not(.row__cell--actions){background-color:var(--color-background-hover)}.user-list__row .select--fill[data-v-2cdd4510]{max-width:calc(var(--cell-width-large) - 2*var(--cell-padding))}.row__cell[data-v-2cdd4510]{display:flex;flex-direction:column;justify-content:center;padding:0 var(--cell-padding);min-width:var(--cell-width);width:var(--cell-width);color:var(--color-main-text)}.row__cell strong[data-v-2cdd4510],.row__cell span[data-v-2cdd4510],.row__cell label[data-v-2cdd4510]{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;overflow-wrap:anywhere}@media(min-width: 670px){.row__cell--avatar[data-v-2cdd4510],.row__cell--displayname[data-v-2cdd4510]{position:sticky;z-index:var(--sticky-column-z-index);background-color:var(--color-main-background)}.row__cell--avatar[data-v-2cdd4510]{left:0}.row__cell--displayname[data-v-2cdd4510]{left:var(--avatar-cell-width);border-right:1px solid var(--color-border)}}.row__cell--username[data-v-2cdd4510]{padding-left:calc(var(--default-grid-baseline)*3)}.row__cell--avatar[data-v-2cdd4510]{min-width:var(--avatar-cell-width);width:var(--avatar-cell-width);align-items:center;padding:0;user-select:none}.row__cell--multiline span[data-v-2cdd4510]{line-height:1.3em;white-space:unset}@supports(-webkit-line-clamp: 2){.row__cell--multiline span[data-v-2cdd4510]{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}}.row__cell--large[data-v-2cdd4510]{min-width:var(--cell-width-large);width:var(--cell-width-large)}.row__cell--obfuscated[data-v-2cdd4510]{min-width:400px;width:400px}.row__cell--fill[data-v-2cdd4510]{min-width:var(--cell-width-large);width:100%}.row__cell--actions[data-v-2cdd4510]{position:sticky;right:0;z-index:var(--sticky-column-z-index);display:flex;flex-direction:row;align-items:center;min-width:110px;width:110px;background-color:var(--color-main-background);border-left:1px solid var(--color-border)}.row__subtitle[data-v-2cdd4510]{color:var(--color-text-maxcontrast)}.row__cell[data-v-2cdd4510]{border-bottom:1px solid var(--color-border)}.row__cell[data-v-2cdd4510] .v-select.select{min-width:var(--cell-min-width)}.row__progress[data-v-2cdd4510]{margin-top:4px}.row__progress--warn[data-v-2cdd4510]::-moz-progress-bar{background:var(--color-warning) !important}.row__progress--warn[data-v-2cdd4510]::-webkit-progress-value{background:var(--color-warning) !important}`, \"\",{\"version\":3,\"sources\":[\"webpack://./apps/settings/src/components/Users/UserRow.vue\",\"webpack://./apps/settings/src/components/Users/shared/styles.scss\"],\"names\":[],\"mappings\":\"AAGA,iCCoBC,iBAAA,CACA,YAAA,CACA,cAAA,CACA,iBAAA,CACA,wBAAA,CACA,6CAAA,CDtBA,uCACC,8CAAA,CAEA,2EACC,8CAAA,CAKF,+CACC,+DAAA,CCgBD,4BACC,YAAA,CACA,qBAAA,CACA,sBAAA,CACA,6BAAA,CACA,2BAAA,CACA,uBAAA,CACA,4BAAA,CAEA,sGAGC,eAAA,CACA,sBAAA,CACA,kBAAA,CACA,sBAAA,CAGD,yBACC,6EAEC,eAAA,CACA,oCAAA,CACA,6CAAA,CAGD,oCACC,MAAA,CAGD,yCACC,6BAAA,CACA,0CAAA,CAAA,CAIF,sCACC,iDAAA,CAGD,oCACC,kCAAA,CACA,8BAAA,CACA,kBAAA,CACA,SAAA,CACA,gBAAA,CAIA,4CACC,iBAAA,CACA,iBAAA,CAEA,iCAJD,4CAKE,mBAAA,CACA,oBAAA,CACA,2BAAA,CAAA,CAKH,mCACC,iCAAA,CACA,6BAAA,CAGD,wCACC,eAAA,CACA,WAAA,CAID,kCACC,iCAAA,CACA,UAAA,CAGD,qCACC,eAAA,CACA,OAAA,CACA,oCAAA,CACA,YAAA,CACA,kBAAA,CACA,kBAAA,CACA,eAAA,CACA,WAAA,CACA,6CAAA,CACA,yCAAA,CAIF,gCACC,mCAAA,CDrGD,4BACC,2CAAA,CAGC,6CACC,+BAAA,CAKH,gCACC,cAAA,CAGC,yDACC,0CAAA,CAED,8DACC,0CAAA\",\"sourcesContent\":[\"\\n@import './shared/styles.scss';\\n\\n.user-list__row {\\n\\t@include row;\\n\\n\\t&:hover {\\n\\t\\tbackground-color: var(--color-background-hover);\\n\\n\\t\\t.row__cell:not(.row__cell--actions) {\\n\\t\\t\\tbackground-color: var(--color-background-hover);\\n\\t\\t}\\n\\t}\\n\\n\\t// Limit width of select in fill cell\\n\\t.select--fill {\\n\\t\\tmax-width: calc(var(--cell-width-large) - (2 * var(--cell-padding)));\\n\\t}\\n}\\n\\n.row {\\n\\t@include cell;\\n\\n\\t&__cell {\\n\\t\\tborder-bottom: 1px solid var(--color-border);\\n\\n\\t\\t:deep {\\n\\t\\t\\t.v-select.select {\\n\\t\\t\\t\\tmin-width: var(--cell-min-width);\\n\\t\\t\\t}\\n\\t\\t}\\n\\t}\\n\\n\\t&__progress {\\n\\t\\tmargin-top: 4px;\\n\\n\\t\\t&--warn {\\n\\t\\t\\t&::-moz-progress-bar {\\n\\t\\t\\t\\tbackground: var(--color-warning) !important;\\n\\t\\t\\t}\\n\\t\\t\\t&::-webkit-progress-value {\\n\\t\\t\\t\\tbackground: var(--color-warning) !important;\\n\\t\\t\\t}\\n\\t\\t}\\n\\t}\\n}\\n\",\"/**\\n * @copyright 2023 Christopher Ng <chrng8@gmail.com>\\n *\\n * @author Christopher Ng <chrng8@gmail.com>\\n *\\n * @license AGPL-3.0-or-later\\n *\\n * This program is free software: you can redistribute it and/or modify\\n * it under the terms of the GNU Affero General Public License as\\n * published by the Free Software Foundation, either version 3 of the\\n * License, or (at your option) any later version.\\n *\\n * This program is distributed in the hope that it will be useful,\\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\\n * GNU Affero General Public License for more details.\\n *\\n * You should have received a copy of the GNU Affero General Public License\\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\\n *\\n */\\n\\n@mixin row {\\n\\tposition: relative;\\n\\tdisplay: flex;\\n\\tmin-width: 100%;\\n\\twidth: fit-content;\\n\\theight: var(--row-height);\\n\\tbackground-color: var(--color-main-background);\\n}\\n\\n@mixin cell {\\n\\t&__cell {\\n\\t\\tdisplay: flex;\\n\\t\\tflex-direction: column;\\n\\t\\tjustify-content: center;\\n\\t\\tpadding: 0 var(--cell-padding);\\n\\t\\tmin-width: var(--cell-width);\\n\\t\\twidth: var(--cell-width);\\n\\t\\tcolor: var(--color-main-text);\\n\\n\\t\\tstrong,\\n\\t\\tspan,\\n\\t\\tlabel {\\n\\t\\t\\toverflow: hidden;\\n\\t\\t\\ttext-overflow: ellipsis;\\n\\t\\t\\twhite-space: nowrap;\\n\\t\\t\\toverflow-wrap: anywhere;\\n\\t\\t}\\n\\n\\t\\t@media (min-width: 670px) { /* Show one &--large column between stickied columns */\\n\\t\\t\\t&--avatar,\\n\\t\\t\\t&--displayname {\\n\\t\\t\\t\\tposition: sticky;\\n\\t\\t\\t\\tz-index: var(--sticky-column-z-index);\\n\\t\\t\\t\\tbackground-color: var(--color-main-background);\\n\\t\\t\\t}\\n\\n\\t\\t\\t&--avatar {\\n\\t\\t\\t\\tleft: 0;\\n\\t\\t\\t}\\n\\n\\t\\t\\t&--displayname {\\n\\t\\t\\t\\tleft: var(--avatar-cell-width);\\n\\t\\t\\t\\tborder-right: 1px solid var(--color-border);\\n\\t\\t\\t}\\n\\t\\t}\\n\\n\\t\\t&--username {\\n\\t\\t\\tpadding-left: calc(var(--default-grid-baseline) * 3);\\n\\t\\t}\\n\\n\\t\\t&--avatar {\\n\\t\\t\\tmin-width: var(--avatar-cell-width);\\n\\t\\t\\twidth: var(--avatar-cell-width);\\n\\t\\t\\talign-items: center;\\n\\t\\t\\tpadding: 0;\\n\\t\\t\\tuser-select: none;\\n\\t\\t}\\n\\n\\t\\t&--multiline {\\n\\t\\t\\tspan {\\n\\t\\t\\t\\tline-height: 1.3em;\\n\\t\\t\\t\\twhite-space: unset;\\n\\n\\t\\t\\t\\t@supports (-webkit-line-clamp: 2) {\\n\\t\\t\\t\\t\\tdisplay: -webkit-box;\\n\\t\\t\\t\\t\\t-webkit-line-clamp: 2;\\n\\t\\t\\t\\t\\t-webkit-box-orient: vertical;\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\t\\t}\\n\\n\\t\\t&--large {\\n\\t\\t\\tmin-width: var(--cell-width-large);\\n\\t\\t\\twidth: var(--cell-width-large);\\n\\t\\t}\\n\\n\\t\\t&--obfuscated {\\n\\t\\t\\tmin-width: 400px;\\n\\t\\t\\twidth: 400px;\\n\\t\\t}\\n\\n\\t\\t// Fill remaining row space with cell\\n\\t\\t&--fill {\\n\\t\\t\\tmin-width: var(--cell-width-large);\\n\\t\\t\\twidth: 100%;\\n\\t\\t}\\n\\n\\t\\t&--actions {\\n\\t\\t\\tposition: sticky;\\n\\t\\t\\tright: 0;\\n\\t\\t\\tz-index: var(--sticky-column-z-index);\\n\\t\\t\\tdisplay: flex;\\n\\t\\t\\tflex-direction: row;\\n\\t\\t\\talign-items: center;\\n\\t\\t\\tmin-width: 110px;\\n\\t\\t\\twidth: 110px;\\n\\t\\t\\tbackground-color: var(--color-main-background);\\n\\t\\t\\tborder-left: 1px solid var(--color-border);\\n\\t\\t}\\n\\t}\\n\\n\\t&__subtitle {\\n\\t\\tcolor: var(--color-text-maxcontrast);\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `fieldset[data-v-ab9299ba]{font-weight:bold}`, \"\",{\"version\":3,\"sources\":[\"webpack://./apps/settings/src/components/Users/UserSettingsDialog.vue\"],\"names\":[],\"mappings\":\"AACA,0BACC,gBAAA\",\"sourcesContent\":[\"\\nfieldset {\\n\\tfont-weight: bold;\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.user-list[data-v-a583d0b2]{--avatar-cell-width: 48px;--cell-padding: 7px;--cell-width: 200px;--cell-width-large: 300px;--cell-min-width: calc(var(--cell-width) - (2 * var(--cell-padding)));--sticky-column-z-index: calc(var(--vs-dropdown-z-index) + 1);display:block;overflow:auto;height:100%}.user-list__header[data-v-a583d0b2],.user-list__footer[data-v-a583d0b2]{position:sticky;display:block}.user-list__header[data-v-a583d0b2]{top:0;z-index:calc(var(--sticky-column-z-index) + 1)}.user-list__footer[data-v-a583d0b2]{left:0}.user-list__body[data-v-a583d0b2]{display:flex;flex-direction:column;width:100%}`, \"\",{\"version\":3,\"sources\":[\"webpack://./apps/settings/src/components/Users/VirtualList.vue\"],\"names\":[],\"mappings\":\"AACA,4BACC,yBAAA,CACA,mBAAA,CACA,mBAAA,CACA,yBAAA,CACA,qEAAA,CACA,6DAAA,CAGA,aAAA,CACA,aAAA,CACA,WAAA,CAEA,wEAEC,eAAA,CAEA,aAAA,CAGD,oCACC,KAAA,CACA,8CAAA,CAGD,oCACC,MAAA,CAGD,kCACC,YAAA,CACA,qBAAA,CACA,UAAA\",\"sourcesContent\":[\"\\n.user-list {\\n\\t--avatar-cell-width: 48px;\\n\\t--cell-padding: 7px;\\n\\t--cell-width: 200px;\\n\\t--cell-width-large: 300px;\\n\\t--cell-min-width: calc(var(--cell-width) - (2 * var(--cell-padding)));\\n\\t--sticky-column-z-index: calc(var(--vs-dropdown-z-index) + 1); // Keep the sticky column on top of the select dropdown\\n\\n\\t// Necessary for virtual scroll optimized rendering\\n\\tdisplay: block;\\n\\toverflow: auto;\\n\\theight: 100%;\\n\\n\\t&__header,\\n\\t&__footer {\\n\\t\\tposition: sticky;\\n\\t\\t// Fix sticky positioning in Firefox\\n\\t\\tdisplay: block;\\n\\t}\\n\\n\\t&__header {\\n\\t\\ttop: 0;\\n\\t\\tz-index: calc(var(--sticky-column-z-index) + 1);\\n\\t}\\n\\n\\t&__footer {\\n\\t\\tleft: 0;\\n\\t}\\n\\n\\t&__body {\\n\\t\\tdisplay: flex;\\n\\t\\tflex-direction: column;\\n\\t\\twidth: 100%;\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.app-content[data-v-fc8857fc]{display:flex;overflow:hidden;flex-direction:column;max-height:100%}`, \"\",{\"version\":3,\"sources\":[\"webpack://./apps/settings/src/views/UserManagement.vue\"],\"names\":[],\"mappings\":\"AACA,8BAEC,YAAA,CACA,eAAA,CACA,qBAAA,CACA,eAAA\",\"sourcesContent\":[\"\\n.app-content {\\n\\t// Virtual list needs to be full height and is scrollable\\n\\tdisplay: flex;\\n\\toverflow: hidden;\\n\\tflex-direction: column;\\n\\tmax-height: 100%;\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.account-management__system-list[data-v-9b250646]{height:auto !important;overflow:visible !important}.account-management__group-list[data-v-9b250646]{height:100% !important}.account-management__settings-toggle[data-v-9b250646]{margin-bottom:12px}`, \"\",{\"version\":3,\"sources\":[\"webpack://./apps/settings/src/views/UserManagementNavigation.vue\"],\"names\":[],\"mappings\":\"AAEC,kDACC,sBAAA,CACA,2BAAA,CAGD,iDACC,sBAAA,CAGD,sDACC,kBAAA\",\"sourcesContent\":[\"\\n.account-management{\\n\\t&__system-list {\\n\\t\\theight: auto !important;\\n\\t\\toverflow: visible !important;\\n\\t}\\n\\n\\t&__group-list {\\n\\t\\theight: 100% !important;\\n\\t}\\n\\n\\t&__settings-toggle {\\n\\t\\tmargin-bottom: 12px;\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('NcAppContent',{attrs:{\"page-heading\":_vm.pageHeading}},[_c('UserList',{attrs:{\"selected-group\":_vm.selectedGroupDecoded,\"external-actions\":_vm.externalActions}})],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('table',{staticClass:\"user-list\"},[_vm._t(\"before\"),_vm._v(\" \"),_c('thead',{ref:\"thead\",staticClass:\"user-list__header\",attrs:{\"role\":\"rowgroup\"}},[_vm._t(\"header\")],2),_vm._v(\" \"),_c('tbody',{staticClass:\"user-list__body\",style:(_vm.tbodyStyle)},_vm._l((_vm.renderedItems),function(item,i){return _c(_vm.dataComponent,_vm._b({key:item[_vm.dataKey],tag:\"component\",attrs:{\"user\":item,\"visible\":(i >= _vm.bufferItems || _vm.index <= _vm.bufferItems) && (i < _vm.shownItems - _vm.bufferItems)}},'component',_vm.extraProps,false))}),1),_vm._v(\" \"),_c('tfoot',{directives:[{name:\"element-visibility\",rawName:\"v-element-visibility\",value:(_vm.handleFooterVisibility),expression:\"handleFooterVisibility\"}],ref:\"tfoot\",staticClass:\"user-list__footer\",attrs:{\"role\":\"rowgroup\"}},[_vm._t(\"footer\")],2)],2)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/ts-loader/index.js??clonedRuleSet-4.use[1]!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./VirtualList.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/ts-loader/index.js??clonedRuleSet-4.use[1]!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./VirtualList.vue?vue&type=script&lang=ts\"","\n import API from \"!../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../../node_modules/css-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/sass-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./VirtualList.vue?vue&type=style&index=0&id=a583d0b2&prod&lang=scss&scoped=true\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../../node_modules/css-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/sass-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./VirtualList.vue?vue&type=style&index=0&id=a583d0b2&prod&lang=scss&scoped=true\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./VirtualList.vue?vue&type=template&id=a583d0b2&scoped=true\"\nimport script from \"./VirtualList.vue?vue&type=script&lang=ts\"\nexport * from \"./VirtualList.vue?vue&type=script&lang=ts\"\nimport style0 from \"./VirtualList.vue?vue&type=style&index=0&id=a583d0b2&prod&lang=scss&scoped=true\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"a583d0b2\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('NcModal',_vm._g({staticClass:\"modal\",attrs:{\"size\":\"small\"}},_vm.$listeners),[_c('form',{staticClass:\"modal__form\",attrs:{\"data-test\":\"form\",\"disabled\":_vm.loading.all},on:{\"submit\":function($event){$event.preventDefault();return _vm.createUser.apply(null, arguments)}}},[_c('h2',[_vm._v(_vm._s(_vm.t('settings', 'New user')))]),_vm._v(\" \"),_c('NcTextField',{ref:\"username\",staticClass:\"modal__item\",attrs:{\"data-test\":\"username\",\"value\":_vm.newUser.id,\"disabled\":_vm.settings.newUserGenerateUserID,\"label\":_vm.usernameLabel,\"autocapitalize\":\"none\",\"autocomplete\":\"off\",\"spellcheck\":\"false\",\"pattern\":\"[a-zA-Z0-9 _\\\\.@\\\\-']+\",\"required\":\"\"},on:{\"update:value\":function($event){return _vm.$set(_vm.newUser, \"id\", $event)}}}),_vm._v(\" \"),_c('NcTextField',{staticClass:\"modal__item\",attrs:{\"data-test\":\"displayName\",\"value\":_vm.newUser.displayName,\"label\":_vm.t('settings', 'Display name'),\"autocapitalize\":\"none\",\"autocomplete\":\"off\",\"spellcheck\":\"false\"},on:{\"update:value\":function($event){return _vm.$set(_vm.newUser, \"displayName\", $event)}}}),_vm._v(\" \"),(!_vm.settings.newUserRequireEmail)?_c('span',{staticClass:\"modal__hint\",attrs:{\"id\":\"password-email-hint\"}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('settings', 'Either password or email is required'))+\"\\n\\t\\t\")]):_vm._e(),_vm._v(\" \"),_c('NcPasswordField',{ref:\"password\",staticClass:\"modal__item\",attrs:{\"data-test\":\"password\",\"value\":_vm.newUser.password,\"minlength\":_vm.minPasswordLength,\"maxlength\":469,\"aria-describedby\":\"password-email-hint\",\"label\":_vm.newUser.mailAddress === '' ? _vm.t('settings', 'Password (required)') : _vm.t('settings', 'Password'),\"autocapitalize\":\"none\",\"autocomplete\":\"new-password\",\"spellcheck\":\"false\",\"required\":_vm.newUser.mailAddress === ''},on:{\"update:value\":function($event){return _vm.$set(_vm.newUser, \"password\", $event)}}}),_vm._v(\" \"),_c('NcTextField',{staticClass:\"modal__item\",attrs:{\"data-test\":\"email\",\"type\":\"email\",\"value\":_vm.newUser.mailAddress,\"aria-describedby\":\"password-email-hint\",\"label\":_vm.newUser.password === '' || _vm.settings.newUserRequireEmail ? _vm.t('settings', 'Email (required)') : _vm.t('settings', 'Email'),\"autocapitalize\":\"none\",\"autocomplete\":\"off\",\"spellcheck\":\"false\",\"required\":_vm.newUser.password === '' || _vm.settings.newUserRequireEmail},on:{\"update:value\":function($event){return _vm.$set(_vm.newUser, \"mailAddress\", $event)}}}),_vm._v(\" \"),_c('div',{staticClass:\"modal__item\"},[_c('label',{staticClass:\"modal__label\",attrs:{\"for\":\"new-user-groups\"}},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(!_vm.settings.isAdmin ? _vm.t('settings', 'Groups (required)') : _vm.t('settings', 'Groups'))+\"\\n\\t\\t\\t\")]),_vm._v(\" \"),_c('NcSelect',{staticClass:\"modal__select\",attrs:{\"input-id\":\"new-user-groups\",\"placeholder\":_vm.t('settings', 'Set user groups'),\"disabled\":_vm.loading.groups || _vm.loading.all,\"options\":_vm.canAddGroups,\"value\":_vm.newUser.groups,\"label\":\"name\",\"close-on-select\":false,\"multiple\":true,\"taggable\":true,\"required\":!_vm.settings.isAdmin},on:{\"input\":_vm.handleGroupInput,\"option:created\":_vm.createGroup}})],1),_vm._v(\" \"),(_vm.subAdminsGroups.length > 0)?_c('div',{staticClass:\"modal__item\"},[_c('label',{staticClass:\"modal__label\",attrs:{\"for\":\"new-user-sub-admin\"}},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('settings', 'Administered groups'))+\"\\n\\t\\t\\t\")]),_vm._v(\" \"),_c('NcSelect',{staticClass:\"modal__select\",attrs:{\"input-id\":\"new-user-sub-admin\",\"placeholder\":_vm.t('settings', 'Set user as admin for …'),\"options\":_vm.subAdminsGroups,\"close-on-select\":false,\"multiple\":true,\"label\":\"name\"},model:{value:(_vm.newUser.subAdminsGroups),callback:function ($$v) {_vm.$set(_vm.newUser, \"subAdminsGroups\", $$v)},expression:\"newUser.subAdminsGroups\"}})],1):_vm._e(),_vm._v(\" \"),_c('div',{staticClass:\"modal__item\"},[_c('label',{staticClass:\"modal__label\",attrs:{\"for\":\"new-user-quota\"}},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('settings', 'Quota'))+\"\\n\\t\\t\\t\")]),_vm._v(\" \"),_c('NcSelect',{staticClass:\"modal__select\",attrs:{\"input-id\":\"new-user-quota\",\"placeholder\":_vm.t('settings', 'Set user quota'),\"options\":_vm.quotaOptions,\"clearable\":false,\"taggable\":true,\"create-option\":_vm.validateQuota},model:{value:(_vm.newUser.quota),callback:function ($$v) {_vm.$set(_vm.newUser, \"quota\", $$v)},expression:\"newUser.quota\"}})],1),_vm._v(\" \"),(_vm.showConfig.showLanguages)?_c('div',{staticClass:\"modal__item\"},[_c('label',{staticClass:\"modal__label\",attrs:{\"for\":\"new-user-language\"}},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('settings', 'Language'))+\"\\n\\t\\t\\t\")]),_vm._v(\" \"),_c('NcSelect',{staticClass:\"modal__select\",attrs:{\"input-id\":\"new-user-language\",\"placeholder\":_vm.t('settings', 'Set default language'),\"clearable\":false,\"selectable\":option => !option.languages,\"filter-by\":_vm.languageFilterBy,\"options\":_vm.languages,\"label\":\"name\"},model:{value:(_vm.newUser.language),callback:function ($$v) {_vm.$set(_vm.newUser, \"language\", $$v)},expression:\"newUser.language\"}})],1):_vm._e(),_vm._v(\" \"),_c('div',{class:['modal__item managers', { 'icon-loading-small': _vm.loading.manager }]},[_c('label',{staticClass:\"modal__label\",attrs:{\"for\":\"new-user-manager\"}},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('settings', 'Manager'))+\"\\n\\t\\t\\t\")]),_vm._v(\" \"),_c('NcSelect',{staticClass:\"modal__select\",attrs:{\"input-id\":\"new-user-manager\",\"placeholder\":_vm.managerLabel,\"options\":_vm.possibleManagers,\"user-select\":true,\"label\":\"displayname\"},on:{\"search\":_vm.searchUserManager},model:{value:(_vm.newUser.manager),callback:function ($$v) {_vm.$set(_vm.newUser, \"manager\", $$v)},expression:\"newUser.manager\"}})],1),_vm._v(\" \"),_c('NcButton',{staticClass:\"modal__submit\",attrs:{\"data-test\":\"submit\",\"type\":\"primary\",\"native-type\":\"submit\"}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('settings', 'Add new user'))+\"\\n\\t\\t\")])],1)])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\n\t- @copyright 2023 Christopher Ng <chrng8@gmail.com>\n\t-\n\t- @author Christopher Ng <chrng8@gmail.com>\n\t-\n\t- @license AGPL-3.0-or-later\n\t-\n\t- This program is free software: you can redistribute it and/or modify\n\t- it under the terms of the GNU Affero General Public License as\n\t- published by the Free Software Foundation, either version 3 of the\n\t- License, or (at your option) any later version.\n\t-\n\t- This program is distributed in the hope that it will be useful,\n\t- but WITHOUT ANY WARRANTY; without even the implied warranty of\n\t- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n\t- GNU Affero General Public License for more details.\n\t-\n\t- You should have received a copy of the GNU Affero General Public License\n\t- along with this program. If not, see <http://www.gnu.org/licenses/>.\n\t-\n-->\n\n<template>\n\t<NcModal class=\"modal\"\n\t\tsize=\"small\"\n\t\tv-on=\"$listeners\">\n\t\t<form class=\"modal__form\"\n\t\t\tdata-test=\"form\"\n\t\t\t:disabled=\"loading.all\"\n\t\t\t@submit.prevent=\"createUser\">\n\t\t\t<h2>{{ t('settings', 'New user') }}</h2>\n\t\t\t<NcTextField ref=\"username\"\n\t\t\t\tclass=\"modal__item\"\n\t\t\t\tdata-test=\"username\"\n\t\t\t\t:value.sync=\"newUser.id\"\n\t\t\t\t:disabled=\"settings.newUserGenerateUserID\"\n\t\t\t\t:label=\"usernameLabel\"\n\t\t\t\tautocapitalize=\"none\"\n\t\t\t\tautocomplete=\"off\"\n\t\t\t\tspellcheck=\"false\"\n\t\t\t\tpattern=\"[a-zA-Z0-9 _\\.@\\-']+\"\n\t\t\t\trequired />\n\t\t\t<NcTextField class=\"modal__item\"\n\t\t\t\tdata-test=\"displayName\"\n\t\t\t\t:value.sync=\"newUser.displayName\"\n\t\t\t\t:label=\"t('settings', 'Display name')\"\n\t\t\t\tautocapitalize=\"none\"\n\t\t\t\tautocomplete=\"off\"\n\t\t\t\tspellcheck=\"false\" />\n\t\t\t<span v-if=\"!settings.newUserRequireEmail\"\n\t\t\t\tid=\"password-email-hint\"\n\t\t\t\tclass=\"modal__hint\">\n\t\t\t\t{{ t('settings', 'Either password or email is required') }}\n\t\t\t</span>\n\t\t\t<NcPasswordField ref=\"password\"\n\t\t\t\tclass=\"modal__item\"\n\t\t\t\tdata-test=\"password\"\n\t\t\t\t:value.sync=\"newUser.password\"\n\t\t\t\t:minlength=\"minPasswordLength\"\n\t\t\t\t:maxlength=\"469\"\n\t\t\t\taria-describedby=\"password-email-hint\"\n\t\t\t\t:label=\"newUser.mailAddress === '' ? t('settings', 'Password (required)') : t('settings', 'Password')\"\n\t\t\t\tautocapitalize=\"none\"\n\t\t\t\tautocomplete=\"new-password\"\n\t\t\t\tspellcheck=\"false\"\n\t\t\t\t:required=\"newUser.mailAddress === ''\" />\n\t\t\t<NcTextField class=\"modal__item\"\n\t\t\t\tdata-test=\"email\"\n\t\t\t\ttype=\"email\"\n\t\t\t\t:value.sync=\"newUser.mailAddress\"\n\t\t\t\taria-describedby=\"password-email-hint\"\n\t\t\t\t:label=\"newUser.password === '' || settings.newUserRequireEmail ? t('settings', 'Email (required)') : t('settings', 'Email')\"\n\t\t\t\tautocapitalize=\"none\"\n\t\t\t\tautocomplete=\"off\"\n\t\t\t\tspellcheck=\"false\"\n\t\t\t\t:required=\"newUser.password === '' || settings.newUserRequireEmail\" />\n\t\t\t<div class=\"modal__item\">\n\t\t\t\t<label class=\"modal__label\"\n\t\t\t\t\tfor=\"new-user-groups\">\n\t\t\t\t\t{{ !settings.isAdmin ? t('settings', 'Groups (required)') : t('settings', 'Groups') }}\n\t\t\t\t</label>\n\t\t\t\t<NcSelect class=\"modal__select\"\n\t\t\t\t\tinput-id=\"new-user-groups\"\n\t\t\t\t\t:placeholder=\"t('settings', 'Set user groups')\"\n\t\t\t\t\t:disabled=\"loading.groups || loading.all\"\n\t\t\t\t\t:options=\"canAddGroups\"\n\t\t\t\t\t:value=\"newUser.groups\"\n\t\t\t\t\tlabel=\"name\"\n\t\t\t\t\t:close-on-select=\"false\"\n\t\t\t\t\t:multiple=\"true\"\n\t\t\t\t\t:taggable=\"true\"\n\t\t\t\t\t:required=\"!settings.isAdmin\"\n\t\t\t\t\t@input=\"handleGroupInput\"\n\t\t\t\t\t@option:created=\"createGroup\" />\n\t\t\t\t\t<!-- If user is not admin, he is a subadmin.\n\t\t\t\t\t\tSubadmins can't create users outside their groups\n\t\t\t\t\t\tTherefore, empty select is forbidden -->\n\t\t\t</div>\n\t\t\t<div v-if=\"subAdminsGroups.length > 0\"\n\t\t\t\tclass=\"modal__item\">\n\t\t\t\t<label class=\"modal__label\"\n\t\t\t\t\tfor=\"new-user-sub-admin\">\n\t\t\t\t\t{{ t('settings', 'Administered groups') }}\n\t\t\t\t</label>\n\t\t\t\t<NcSelect v-model=\"newUser.subAdminsGroups\"\n\t\t\t\t\tclass=\"modal__select\"\n\t\t\t\t\tinput-id=\"new-user-sub-admin\"\n\t\t\t\t\t:placeholder=\"t('settings', 'Set user as admin for …')\"\n\t\t\t\t\t:options=\"subAdminsGroups\"\n\t\t\t\t\t:close-on-select=\"false\"\n\t\t\t\t\t:multiple=\"true\"\n\t\t\t\t\tlabel=\"name\" />\n\t\t\t</div>\n\t\t\t<div class=\"modal__item\">\n\t\t\t\t<label class=\"modal__label\"\n\t\t\t\t\tfor=\"new-user-quota\">\n\t\t\t\t\t{{ t('settings', 'Quota') }}\n\t\t\t\t</label>\n\t\t\t\t<NcSelect v-model=\"newUser.quota\"\n\t\t\t\t\tclass=\"modal__select\"\n\t\t\t\t\tinput-id=\"new-user-quota\"\n\t\t\t\t\t:placeholder=\"t('settings', 'Set user quota')\"\n\t\t\t\t\t:options=\"quotaOptions\"\n\t\t\t\t\t:clearable=\"false\"\n\t\t\t\t\t:taggable=\"true\"\n\t\t\t\t\t:create-option=\"validateQuota\" />\n\t\t\t</div>\n\t\t\t<div v-if=\"showConfig.showLanguages\"\n\t\t\t\tclass=\"modal__item\">\n\t\t\t\t<label class=\"modal__label\"\n\t\t\t\t\tfor=\"new-user-language\">\n\t\t\t\t\t{{ t('settings', 'Language') }}\n\t\t\t\t</label>\n\t\t\t\t<NcSelect\tv-model=\"newUser.language\"\n\t\t\t\t\tclass=\"modal__select\"\n\t\t\t\t\tinput-id=\"new-user-language\"\n\t\t\t\t\t:placeholder=\"t('settings', 'Set default language')\"\n\t\t\t\t\t:clearable=\"false\"\n\t\t\t\t\t:selectable=\"option => !option.languages\"\n\t\t\t\t\t:filter-by=\"languageFilterBy\"\n\t\t\t\t\t:options=\"languages\"\n\t\t\t\t\tlabel=\"name\" />\n\t\t\t</div>\n\t\t\t<div :class=\"['modal__item managers', { 'icon-loading-small': loading.manager }]\">\n\t\t\t\t<label class=\"modal__label\"\n\t\t\t\t\tfor=\"new-user-manager\">\n\t\t\t\t\t<!-- TRANSLATORS This string describes a manager in the context of an organization -->\n\t\t\t\t\t{{ t('settings', 'Manager') }}\n\t\t\t\t</label>\n\t\t\t\t<NcSelect v-model=\"newUser.manager\"\n\t\t\t\t\tclass=\"modal__select\"\n\t\t\t\t\tinput-id=\"new-user-manager\"\n\t\t\t\t\t:placeholder=\"managerLabel\"\n\t\t\t\t\t:options=\"possibleManagers\"\n\t\t\t\t\t:user-select=\"true\"\n\t\t\t\t\tlabel=\"displayname\"\n\t\t\t\t\t@search=\"searchUserManager\" />\n\t\t\t</div>\n\t\t\t<NcButton class=\"modal__submit\"\n\t\t\t\tdata-test=\"submit\"\n\t\t\t\ttype=\"primary\"\n\t\t\t\tnative-type=\"submit\">\n\t\t\t\t{{ t('settings', 'Add new user') }}\n\t\t\t</NcButton>\n\t\t</form>\n\t</NcModal>\n</template>\n\n<script>\nimport NcButton from '@nextcloud/vue/dist/Components/NcButton.js'\nimport NcModal from '@nextcloud/vue/dist/Components/NcModal.js'\nimport NcPasswordField from '@nextcloud/vue/dist/Components/NcPasswordField.js'\nimport NcSelect from '@nextcloud/vue/dist/Components/NcSelect.js'\nimport NcTextField from '@nextcloud/vue/dist/Components/NcTextField.js'\n\nexport default {\n\tname: 'NewUserModal',\n\n\tcomponents: {\n\t\tNcButton,\n\t\tNcModal,\n\t\tNcPasswordField,\n\t\tNcSelect,\n\t\tNcTextField,\n\t},\n\n\tprops: {\n\t\tloading: {\n\t\t\ttype: Object,\n\t\t\trequired: true,\n\t\t},\n\n\t\tnewUser: {\n\t\t\ttype: Object,\n\t\t\trequired: true,\n\t\t},\n\n\t\tquotaOptions: {\n\t\t\ttype: Array,\n\t\t\trequired: true,\n\t\t},\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\tpossibleManagers: [],\n\t\t\t// TRANSLATORS This string describes a manager in the context of an organization\n\t\t\tmanagerLabel: t('settings', 'Set user manager'),\n\t\t}\n\t},\n\n\tcomputed: {\n\t\tshowConfig() {\n\t\t\treturn this.$store.getters.getShowConfig\n\t\t},\n\n\t\tsettings() {\n\t\t\treturn this.$store.getters.getServerData\n\t\t},\n\n\t\tusernameLabel() {\n\t\t\tif (this.settings.newUserGenerateUserID) {\n\t\t\t\treturn t('settings', 'Username will be autogenerated')\n\t\t\t}\n\t\t\treturn t('settings', 'Username (required)')\n\t\t},\n\n\t\tminPasswordLength() {\n\t\t\treturn this.$store.getters.getPasswordPolicyMinLength\n\t\t},\n\n\t\tgroups() {\n\t\t\t// data provided php side + remove the disabled group\n\t\t\treturn this.$store.getters.getGroups\n\t\t\t\t.filter(group => group.id !== 'disabled')\n\t\t\t\t.sort((a, b) => a.name.localeCompare(b.name))\n\t\t},\n\n\t\tsubAdminsGroups() {\n\t\t\t// data provided php side\n\t\t\treturn this.$store.getters.getSubadminGroups\n\t\t},\n\n\t\tcanAddGroups() {\n\t\t\t// disabled if no permission to add new users to group\n\t\t\treturn this.groups.map(group => {\n\t\t\t\t// clone object because we don't want\n\t\t\t\t// to edit the original groups\n\t\t\t\tgroup = Object.assign({}, group)\n\t\t\t\tgroup.$isDisabled = group.canAdd === false\n\t\t\t\treturn group\n\t\t\t})\n\t\t},\n\n\t\tlanguages() {\n\t\t\treturn [\n\t\t\t\t{\n\t\t\t\t\tname: t('settings', 'Common languages'),\n\t\t\t\t\tlanguages: this.settings.languages.commonLanguages,\n\t\t\t\t},\n\t\t\t\t...this.settings.languages.commonLanguages,\n\t\t\t\t{\n\t\t\t\t\tname: t('settings', 'Other languages'),\n\t\t\t\t\tlanguages: this.settings.languages.otherLanguages,\n\t\t\t\t},\n\t\t\t\t...this.settings.languages.otherLanguages,\n\t\t\t]\n\t\t},\n\t},\n\n\tasync beforeMount() {\n\t\tawait this.searchUserManager()\n\t},\n\n\tmethods: {\n\t\tasync createUser() {\n\t\t\tthis.loading.all = true\n\t\t\ttry {\n\t\t\t\tawait this.$store.dispatch('addUser', {\n\t\t\t\t\tuserid: this.newUser.id,\n\t\t\t\t\tpassword: this.newUser.password,\n\t\t\t\t\tdisplayName: this.newUser.displayName,\n\t\t\t\t\temail: this.newUser.mailAddress,\n\t\t\t\t\tgroups: this.newUser.groups.map(group => group.id),\n\t\t\t\t\tsubadmin: this.newUser.subAdminsGroups.map(group => group.id),\n\t\t\t\t\tquota: this.newUser.quota.id,\n\t\t\t\t\tlanguage: this.newUser.language.code,\n\t\t\t\t\tmanager: this.newUser.manager.id,\n\t\t\t\t})\n\n\t\t\t\tthis.$emit('reset')\n\t\t\t\tthis.$refs.username?.$refs?.inputField?.$refs?.input?.focus?.()\n\t\t\t\tthis.$emit('close')\n\t\t\t} catch (error) {\n\t\t\t\tthis.loading.all = false\n\t\t\t\tif (error.response && error.response.data && error.response.data.ocs && error.response.data.ocs.meta) {\n\t\t\t\t\tconst statuscode = error.response.data.ocs.meta.statuscode\n\t\t\t\t\tif (statuscode === 102) {\n\t\t\t\t\t\t// wrong username\n\t\t\t\t\t\tthis.$refs.username?.$refs?.inputField?.$refs?.input?.focus?.()\n\t\t\t\t\t} else if (statuscode === 107) {\n\t\t\t\t\t\t// wrong password\n\t\t\t\t\t\tthis.$refs.password?.$refs?.inputField?.$refs?.input?.focus?.()\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\thandleGroupInput(groups) {\n\t\t\t/**\n\t\t\t * Filter out groups with no id to prevent duplicate selected options\n\t\t\t *\n\t\t\t * Created groups are added programmatically by `createGroup()`\n\t\t\t */\n\t\t\t this.newUser.groups = groups.filter(group => Boolean(group.id))\n\t\t},\n\n\t\t/**\n\t\t * Create a new group\n\t\t *\n\t\t * @param {any} group Group\n\t\t * @param {string} group.name Group id\n\t\t */\n\t\tasync createGroup({ name: gid }) {\n\t\t\tthis.loading.groups = true\n\t\t\ttry {\n\t\t\t\tawait this.$store.dispatch('addGroup', gid)\n\t\t\t\tthis.newUser.groups.push(this.groups.find(group => group.id === gid))\n\t\t\t\tthis.loading.groups = false\n\t\t\t} catch (error) {\n\t\t\t\tthis.loading.groups = false\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Validate quota string to make sure it's a valid human file size\n\t\t *\n\t\t * @param {string} quota Quota in readable format '5 GB'\n\t\t * @return {object}\n\t\t */\n\t\tvalidateQuota(quota) {\n\t\t\t// only used for new presets sent through @Tag\n\t\t\tconst validQuota = OC.Util.computerFileSize(quota)\n\t\t\tif (validQuota !== null && validQuota >= 0) {\n\t\t\t\t// unify format output\n\t\t\t\tquota = OC.Util.humanFileSize(OC.Util.computerFileSize(quota))\n\t\t\t\tthis.newUser.quota = { id: quota, label: quota }\n\t\t\t\treturn this.newUser.quota\n\t\t\t}\n\t\t\t// Default is unlimited\n\t\t\tthis.newUser.quota = this.quotaOptions[0]\n\t\t\treturn this.quotaOptions[0]\n\t\t},\n\n\t\tlanguageFilterBy(option, label, search) {\n\t\t\t// Show group header of the language\n\t\t\tif (option.languages) {\n\t\t\t\treturn option.languages.some(\n\t\t\t\t\t({ name }) => name.toLocaleLowerCase().includes(search.toLocaleLowerCase()),\n\t\t\t\t)\n\t\t\t}\n\n\t\t\treturn (label || '').toLocaleLowerCase().includes(search.toLocaleLowerCase())\n\t\t},\n\n\t\tasync searchUserManager(query) {\n\t\t\tawait this.$store.dispatch(\n\t\t\t\t'searchUsers',\n\t\t\t\t{\n\t\t\t\t\toffset: 0,\n\t\t\t\t\tlimit: 10,\n\t\t\t\t\tsearch: query,\n\t\t\t\t},\n\t\t\t).then(response => {\n\t\t\t\tconst users = response?.data ? Object.values(response?.data.ocs.data.users) : []\n\t\t\t\tif (users.length > 0) {\n\t\t\t\t\tthis.possibleManagers = users\n\t\t\t\t}\n\t\t\t})\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\n.modal {\n\t&__form {\n\t\tdisplay: flex;\n\t\tflex-direction: column;\n\t\talign-items: center;\n\t\tpadding: 20px;\n\t\tgap: 4px 0;\n\t}\n\n\t&__item {\n\t\twidth: 100%;\n\n\t\t&:not(:focus):not(:active) {\n\t\t\tborder-color: var(--color-border-dark);\n\t\t}\n\t}\n\n\t&__hint {\n\t\tcolor: var(--color-text-maxcontrast);\n\t\tmargin-top: 8px;\n\t\talign-self: flex-start;\n\t}\n\n\t&__label {\n\t\tdisplay: block;\n\t\tpadding: 4px 0;\n\t}\n\n\t&__select {\n\t\twidth: 100%;\n\t}\n\n\t&__submit {\n\t\tmargin-top: 20px;\n\t}\n}\n</style>\n","import mod from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./NewUserModal.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./NewUserModal.vue?vue&type=script&lang=js\"","\n import API from \"!../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../../node_modules/css-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/sass-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./NewUserModal.vue?vue&type=style&index=0&id=2fe7d69f&prod&lang=scss&scoped=true\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../../node_modules/css-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/sass-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./NewUserModal.vue?vue&type=style&index=0&id=2fe7d69f&prod&lang=scss&scoped=true\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./NewUserModal.vue?vue&type=template&id=2fe7d69f&scoped=true\"\nimport script from \"./NewUserModal.vue?vue&type=script&lang=js\"\nexport * from \"./NewUserModal.vue?vue&type=script&lang=js\"\nimport style0 from \"./NewUserModal.vue?vue&type=style&index=0&id=2fe7d69f&prod&lang=scss&scoped=true\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"2fe7d69f\",\n null\n \n)\n\nexport default component.exports","import mod from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/ts-loader/index.js??clonedRuleSet-4.use[1]!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./UserListFooter.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/ts-loader/index.js??clonedRuleSet-4.use[1]!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./UserListFooter.vue?vue&type=script&lang=ts\"","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('tr',{staticClass:\"footer\"},[_c('th',{attrs:{\"scope\":\"row\"}},[_c('span',{staticClass:\"hidden-visually\"},[_vm._v(_vm._s(_vm.t('settings', 'Total rows summary')))])]),_vm._v(\" \"),_c('td',{staticClass:\"footer__cell footer__cell--loading\"},[(_vm.loading)?_c('NcLoadingIcon',{attrs:{\"title\":_vm.t('settings', 'Loading users …'),\"size\":32}}):_vm._e()],1),_vm._v(\" \"),_c('td',{staticClass:\"footer__cell footer__cell--count footer__cell--multiline\"},[_c('span',{attrs:{\"aria-describedby\":\"user-count-desc\"}},[_vm._v(_vm._s(_vm.userCount))]),_vm._v(\" \"),_c('span',{staticClass:\"hidden-visually\",attrs:{\"id\":\"user-count-desc\"}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('settings', 'Scroll to load more rows'))+\"\\n\\t\\t\")])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n import API from \"!../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../../node_modules/css-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/sass-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./UserListFooter.vue?vue&type=style&index=0&id=3ec0b16a&prod&lang=scss&scoped=true\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../../node_modules/css-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/sass-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./UserListFooter.vue?vue&type=style&index=0&id=3ec0b16a&prod&lang=scss&scoped=true\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./UserListFooter.vue?vue&type=template&id=3ec0b16a&scoped=true\"\nimport script from \"./UserListFooter.vue?vue&type=script&lang=ts\"\nexport * from \"./UserListFooter.vue?vue&type=script&lang=ts\"\nimport style0 from \"./UserListFooter.vue?vue&type=style&index=0&id=3ec0b16a&prod&lang=scss&scoped=true\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"3ec0b16a\",\n null\n \n)\n\nexport default component.exports","import mod from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/ts-loader/index.js??clonedRuleSet-4.use[1]!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./UserListHeader.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/ts-loader/index.js??clonedRuleSet-4.use[1]!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./UserListHeader.vue?vue&type=script&lang=ts\"","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('tr',{staticClass:\"header\"},[_c('th',{staticClass:\"header__cell header__cell--avatar\",attrs:{\"data-cy-user-list-header-avatar\":\"\",\"scope\":\"col\"}},[_c('span',{staticClass:\"hidden-visually\"},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('settings', 'Avatar'))+\"\\n\\t\\t\")])]),_vm._v(\" \"),_c('th',{staticClass:\"header__cell header__cell--displayname\",attrs:{\"data-cy-user-list-header-displayname\":\"\",\"scope\":\"col\"}},[_c('strong',[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('settings', 'Display name'))+\"\\n\\t\\t\")])]),_vm._v(\" \"),_c('th',{staticClass:\"header__cell header__cell--username\",attrs:{\"data-cy-user-list-header-username\":\"\",\"scope\":\"col\"}},[_c('span',[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('settings', 'Username'))+\"\\n\\t\\t\")])]),_vm._v(\" \"),_c('th',{staticClass:\"header__cell\",class:{ 'header__cell--obfuscated': _vm.hasObfuscated },attrs:{\"data-cy-user-list-header-password\":\"\",\"scope\":\"col\"}},[_c('span',[_vm._v(_vm._s(_vm.passwordLabel))])]),_vm._v(\" \"),_c('th',{staticClass:\"header__cell\",attrs:{\"data-cy-user-list-header-email\":\"\",\"scope\":\"col\"}},[_c('span',[_vm._v(_vm._s(_vm.t('settings', 'Email')))])]),_vm._v(\" \"),_c('th',{staticClass:\"header__cell header__cell--large\",attrs:{\"data-cy-user-list-header-groups\":\"\",\"scope\":\"col\"}},[_c('span',[_vm._v(_vm._s(_vm.t('settings', 'Groups')))])]),_vm._v(\" \"),(_vm.subAdminsGroups.length > 0 && _vm.settings.isAdmin)?_c('th',{staticClass:\"header__cell header__cell--large\",attrs:{\"data-cy-user-list-header-subadmins\":\"\",\"scope\":\"col\"}},[_c('span',[_vm._v(_vm._s(_vm.t('settings', 'Group admin for')))])]):_vm._e(),_vm._v(\" \"),_c('th',{staticClass:\"header__cell\",attrs:{\"data-cy-user-list-header-quota\":\"\",\"scope\":\"col\"}},[_c('span',[_vm._v(_vm._s(_vm.t('settings', 'Quota')))])]),_vm._v(\" \"),(_vm.showConfig.showLanguages)?_c('th',{staticClass:\"header__cell header__cell--large\",attrs:{\"data-cy-user-list-header-languages\":\"\",\"scope\":\"col\"}},[_c('span',[_vm._v(_vm._s(_vm.t('settings', 'Language')))])]):_vm._e(),_vm._v(\" \"),(_vm.showConfig.showUserBackend || _vm.showConfig.showStoragePath)?_c('th',{staticClass:\"header__cell header__cell--large\",attrs:{\"data-cy-user-list-header-storage-location\":\"\",\"scope\":\"col\"}},[(_vm.showConfig.showUserBackend)?_c('span',[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('settings', 'User backend'))+\"\\n\\t\\t\")]):_vm._e(),_vm._v(\" \"),(_vm.showConfig.showStoragePath)?_c('span',{staticClass:\"header__subtitle\"},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('settings', 'Storage location'))+\"\\n\\t\\t\")]):_vm._e()]):_vm._e(),_vm._v(\" \"),(_vm.showConfig.showLastLogin)?_c('th',{staticClass:\"header__cell\",attrs:{\"data-cy-user-list-header-last-login\":\"\",\"scope\":\"col\"}},[_c('span',[_vm._v(_vm._s(_vm.t('settings', 'Last login')))])]):_vm._e(),_vm._v(\" \"),_c('th',{staticClass:\"header__cell header__cell--large header__cell--fill\",attrs:{\"data-cy-user-list-header-manager\":\"\",\"scope\":\"col\"}},[_c('span',[_vm._v(_vm._s(_vm.t('settings', 'Manager')))])]),_vm._v(\" \"),_c('th',{staticClass:\"header__cell header__cell--actions\",attrs:{\"data-cy-user-list-header-actions\":\"\",\"scope\":\"col\"}},[_c('span',{staticClass:\"hidden-visually\"},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('settings', 'User actions'))+\"\\n\\t\\t\")])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n import API from \"!../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../../node_modules/css-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/sass-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./UserListHeader.vue?vue&type=style&index=0&id=3121155a&prod&lang=scss&scoped=true\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../../node_modules/css-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/sass-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./UserListHeader.vue?vue&type=style&index=0&id=3121155a&prod&lang=scss&scoped=true\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./UserListHeader.vue?vue&type=template&id=3121155a&scoped=true\"\nimport script from \"./UserListHeader.vue?vue&type=script&lang=ts\"\nexport * from \"./UserListHeader.vue?vue&type=script&lang=ts\"\nimport style0 from \"./UserListHeader.vue?vue&type=style&index=0&id=3121155a&prod&lang=scss&scoped=true\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"3121155a\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('tr',{staticClass:\"user-list__row\",attrs:{\"data-cy-user-row\":_vm.user.id}},[_c('td',{staticClass:\"row__cell row__cell--avatar\",attrs:{\"data-cy-user-list-cell-avatar\":\"\"}},[(_vm.isLoadingUser)?_c('NcLoadingIcon',{attrs:{\"name\":_vm.t('settings', 'Loading account …'),\"size\":32}}):(_vm.visible)?_c('NcAvatar',{attrs:{\"disable-menu\":\"\",\"show-user-status\":false,\"user\":_vm.user.id}}):_vm._e()],1),_vm._v(\" \"),_c('td',{staticClass:\"row__cell row__cell--displayname\",attrs:{\"data-cy-user-list-cell-displayname\":\"\"}},[(_vm.editing && _vm.user.backendCapabilities.setDisplayName)?[_c('NcTextField',{ref:\"displayNameField\",staticClass:\"user-row-text-field\",class:{ 'icon-loading-small': _vm.loading.displayName },attrs:{\"data-cy-user-list-input-displayname\":\"\",\"data-loading\":_vm.loading.displayName || undefined,\"trailing-button-label\":_vm.t('settings', 'Submit'),\"show-trailing-button\":true,\"disabled\":_vm.loading.displayName || _vm.isLoadingField,\"label\":_vm.t('settings', 'Change display name'),\"trailing-button-icon\":\"arrowRight\",\"value\":_vm.editedDisplayName,\"autocapitalize\":\"off\",\"autocomplete\":\"off\",\"spellcheck\":\"false\"},on:{\"update:value\":function($event){_vm.editedDisplayName=$event},\"trailing-button-click\":_vm.updateDisplayName}})]:(!_vm.isObfuscated)?_c('strong',{attrs:{\"title\":_vm.user.displayname?.length > 20 ? _vm.user.displayname : null}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.user.displayname)+\"\\n\\t\\t\")]):_vm._e()],2),_vm._v(\" \"),_c('td',{staticClass:\"row__cell row__cell--username\",attrs:{\"data-cy-user-list-cell-username\":\"\"}},[_c('span',{staticClass:\"row__subtitle\"},[_vm._v(_vm._s(_vm.user.id))])]),_vm._v(\" \"),_c('td',{staticClass:\"row__cell\",class:{ 'row__cell--obfuscated': _vm.hasObfuscated },attrs:{\"data-cy-user-list-cell-password\":\"\"}},[(_vm.editing && _vm.settings.canChangePassword && _vm.user.backendCapabilities.setPassword)?[_c('NcTextField',{staticClass:\"user-row-text-field\",class:{'icon-loading-small': _vm.loading.password},attrs:{\"data-cy-user-list-input-password\":\"\",\"data-loading\":_vm.loading.password || undefined,\"trailing-button-label\":_vm.t('settings', 'Submit'),\"show-trailing-button\":true,\"disabled\":_vm.loading.password || _vm.isLoadingField,\"minlength\":_vm.minPasswordLength,\"maxlength\":\"469\",\"label\":_vm.t('settings', 'Set new password'),\"trailing-button-icon\":\"arrowRight\",\"value\":_vm.editedPassword,\"autocapitalize\":\"off\",\"autocomplete\":\"new-password\",\"required\":\"\",\"spellcheck\":\"false\",\"type\":\"password\"},on:{\"update:value\":function($event){_vm.editedPassword=$event},\"trailing-button-click\":_vm.updatePassword}})]:(_vm.isObfuscated)?_c('span',[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('settings', 'You do not have permissions to see the details of this account'))+\"\\n\\t\\t\")]):_vm._e()],2),_vm._v(\" \"),_c('td',{staticClass:\"row__cell\",attrs:{\"data-cy-user-list-cell-email\":\"\"}},[(_vm.editing)?[_c('NcTextField',{staticClass:\"user-row-text-field\",class:{'icon-loading-small': _vm.loading.mailAddress},attrs:{\"data-cy-user-list-input-email\":\"\",\"data-loading\":_vm.loading.mailAddress || undefined,\"show-trailing-button\":true,\"trailing-button-label\":_vm.t('settings', 'Submit'),\"label\":_vm.t('settings', 'Set new email address'),\"disabled\":_vm.loading.mailAddress || _vm.isLoadingField,\"trailing-button-icon\":\"arrowRight\",\"value\":_vm.editedMail,\"autocapitalize\":\"off\",\"autocomplete\":\"email\",\"spellcheck\":\"false\",\"type\":\"email\"},on:{\"update:value\":function($event){_vm.editedMail=$event},\"trailing-button-click\":_vm.updateEmail}})]:(!_vm.isObfuscated)?_c('span',{attrs:{\"title\":_vm.user.email?.length > 20 ? _vm.user.email : null}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.user.email)+\"\\n\\t\\t\")]):_vm._e()],2),_vm._v(\" \"),_c('td',{staticClass:\"row__cell row__cell--large row__cell--multiline\",attrs:{\"data-cy-user-list-cell-groups\":\"\"}},[(_vm.editing)?[_c('label',{staticClass:\"hidden-visually\",attrs:{\"for\":'groups' + _vm.uniqueId}},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('settings', 'Add user to group'))+\"\\n\\t\\t\\t\")]),_vm._v(\" \"),_c('NcSelect',{attrs:{\"data-cy-user-list-input-groups\":\"\",\"data-loading\":_vm.loading.groups || undefined,\"input-id\":'groups' + _vm.uniqueId,\"close-on-select\":false,\"disabled\":_vm.isLoadingField,\"loading\":_vm.loading.groups,\"multiple\":true,\"append-to-body\":false,\"options\":_vm.availableGroups,\"placeholder\":_vm.t('settings', 'Add account to group'),\"taggable\":_vm.settings.isAdmin,\"value\":_vm.userGroups,\"label\":\"name\",\"no-wrap\":true,\"create-option\":(value) => ({ name: value, isCreating: true })},on:{\"option:created\":_vm.createGroup,\"option:selected\":options => _vm.addUserGroup(options.at(-1)),\"option:deselected\":_vm.removeUserGroup}})]:(!_vm.isObfuscated)?_c('span',{attrs:{\"title\":_vm.userGroupsLabels?.length > 40 ? _vm.userGroupsLabels : null}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.userGroupsLabels)+\"\\n\\t\\t\")]):_vm._e()],2),_vm._v(\" \"),(_vm.subAdminsGroups.length > 0 && _vm.settings.isAdmin)?_c('td',{staticClass:\"row__cell row__cell--large row__cell--multiline\",attrs:{\"data-cy-user-list-cell-subadmins\":\"\"}},[(_vm.editing && _vm.settings.isAdmin && _vm.subAdminsGroups.length > 0)?[_c('label',{staticClass:\"hidden-visually\",attrs:{\"for\":'subadmins' + _vm.uniqueId}},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('settings', 'Set account as admin for'))+\"\\n\\t\\t\\t\")]),_vm._v(\" \"),_c('NcSelect',{attrs:{\"data-cy-user-list-input-subadmins\":\"\",\"data-loading\":_vm.loading.subadmins || undefined,\"input-id\":'subadmins' + _vm.uniqueId,\"close-on-select\":false,\"disabled\":_vm.isLoadingField,\"loading\":_vm.loading.subadmins,\"label\":\"name\",\"append-to-body\":false,\"multiple\":true,\"no-wrap\":true,\"options\":_vm.subAdminsGroups,\"placeholder\":_vm.t('settings', 'Set account as admin for'),\"value\":_vm.userSubAdminsGroups},on:{\"option:deselected\":_vm.removeUserSubAdmin,\"option:selected\":options => _vm.addUserSubAdmin(options.at(-1))}})]:(!_vm.isObfuscated)?_c('span',{attrs:{\"title\":_vm.userSubAdminsGroupsLabels?.length > 40 ? _vm.userSubAdminsGroupsLabels : null}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.userSubAdminsGroupsLabels)+\"\\n\\t\\t\")]):_vm._e()],2):_vm._e(),_vm._v(\" \"),_c('td',{staticClass:\"row__cell\",attrs:{\"data-cy-user-list-cell-quota\":\"\"}},[(_vm.editing)?[_c('label',{staticClass:\"hidden-visually\",attrs:{\"for\":'quota' + _vm.uniqueId}},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('settings', 'Select account quota'))+\"\\n\\t\\t\\t\")]),_vm._v(\" \"),_c('NcSelect',{attrs:{\"close-on-select\":true,\"create-option\":_vm.validateQuota,\"data-cy-user-list-input-quota\":\"\",\"data-loading\":_vm.loading.quota || undefined,\"disabled\":_vm.isLoadingField,\"loading\":_vm.loading.quota,\"append-to-body\":false,\"clearable\":false,\"input-id\":'quota' + _vm.uniqueId,\"options\":_vm.quotaOptions,\"placeholder\":_vm.t('settings', 'Select account quota'),\"taggable\":true},on:{\"option:selected\":_vm.setUserQuota},model:{value:(_vm.editedUserQuota),callback:function ($$v) {_vm.editedUserQuota=$$v},expression:\"editedUserQuota\"}})]:(!_vm.isObfuscated)?[_c('span',{attrs:{\"id\":'quota-progress' + _vm.uniqueId}},[_vm._v(_vm._s(_vm.userQuota)+\" (\"+_vm._s(_vm.usedSpace)+\")\")]),_vm._v(\" \"),_c('NcProgressBar',{staticClass:\"row__progress\",class:{\n\t\t\t\t\t'row__progress--warn': _vm.usedQuota > 80,\n\t\t\t\t},attrs:{\"aria-labelledby\":'quota-progress' + _vm.uniqueId,\"value\":_vm.usedQuota}})]:_vm._e()],2),_vm._v(\" \"),(_vm.showConfig.showLanguages)?_c('td',{staticClass:\"row__cell row__cell--large\",attrs:{\"data-cy-user-list-cell-language\":\"\"}},[(_vm.editing)?[_c('label',{staticClass:\"hidden-visually\",attrs:{\"for\":'language' + _vm.uniqueId}},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('settings', 'Set the language'))+\"\\n\\t\\t\\t\")]),_vm._v(\" \"),_c('NcSelect',{attrs:{\"id\":'language' + _vm.uniqueId,\"data-cy-user-list-input-language\":\"\",\"data-loading\":_vm.loading.languages || undefined,\"allow-empty\":false,\"disabled\":_vm.isLoadingField,\"loading\":_vm.loading.languages,\"clearable\":false,\"append-to-body\":false,\"options\":_vm.availableLanguages,\"placeholder\":_vm.t('settings', 'No language set'),\"value\":_vm.userLanguage,\"label\":\"name\"},on:{\"input\":_vm.setUserLanguage}})]:(!_vm.isObfuscated)?_c('span',[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.userLanguage.name)+\"\\n\\t\\t\")]):_vm._e()],2):_vm._e(),_vm._v(\" \"),(_vm.showConfig.showUserBackend || _vm.showConfig.showStoragePath)?_c('td',{staticClass:\"row__cell row__cell--large\",attrs:{\"data-cy-user-list-cell-storage-location\":\"\"}},[(!_vm.isObfuscated)?[(_vm.showConfig.showUserBackend)?_c('span',[_vm._v(_vm._s(_vm.user.backend))]):_vm._e(),_vm._v(\" \"),(_vm.showConfig.showStoragePath)?_c('span',{staticClass:\"row__subtitle\",attrs:{\"title\":_vm.user.storageLocation}},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.user.storageLocation)+\"\\n\\t\\t\\t\")]):_vm._e()]:_vm._e()],2):_vm._e(),_vm._v(\" \"),(_vm.showConfig.showLastLogin)?_c('td',{staticClass:\"row__cell\",attrs:{\"title\":_vm.userLastLoginTooltip,\"data-cy-user-list-cell-last-login\":\"\"}},[(!_vm.isObfuscated)?_c('span',[_vm._v(_vm._s(_vm.userLastLogin))]):_vm._e()]):_vm._e(),_vm._v(\" \"),_c('td',{staticClass:\"row__cell row__cell--large row__cell--fill\",attrs:{\"data-cy-user-list-cell-manager\":\"\"}},[(_vm.editing)?[_c('label',{staticClass:\"hidden-visually\",attrs:{\"for\":'manager' + _vm.uniqueId}},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.managerLabel)+\"\\n\\t\\t\\t\")]),_vm._v(\" \"),_c('NcSelect',{staticClass:\"select--fill\",attrs:{\"data-cy-user-list-input-manager\":\"\",\"data-loading\":_vm.loading.manager || undefined,\"input-id\":'manager' + _vm.uniqueId,\"close-on-select\":true,\"disabled\":_vm.isLoadingField,\"append-to-body\":false,\"loading\":_vm.loadingPossibleManagers || _vm.loading.manager,\"label\":\"displayname\",\"options\":_vm.possibleManagers,\"placeholder\":_vm.managerLabel},on:{\"open\":_vm.searchInitialUserManager,\"search\":_vm.searchUserManager,\"option:selected\":_vm.updateUserManager},model:{value:(_vm.currentManager),callback:function ($$v) {_vm.currentManager=$$v},expression:\"currentManager\"}})]:(!_vm.isObfuscated)?_c('span',[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.user.manager)+\"\\n\\t\\t\")]):_vm._e()],2),_vm._v(\" \"),_c('td',{staticClass:\"row__cell row__cell--actions\",attrs:{\"data-cy-user-list-cell-actions\":\"\"}},[(_vm.visible && !_vm.isObfuscated && _vm.canEdit && !_vm.loading.all)?_c('UserRowActions',{attrs:{\"actions\":_vm.userActions,\"disabled\":_vm.isLoadingField,\"edit\":_vm.editing,\"user\":_vm.user},on:{\"update:edit\":_vm.toggleEdit}}):_vm._e()],1)])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/ts-loader/index.js??clonedRuleSet-4.use[1]!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./UserRowActions.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/ts-loader/index.js??clonedRuleSet-4.use[1]!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./UserRowActions.vue?vue&type=script&lang=ts\"","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('NcActions',{attrs:{\"aria-label\":_vm.t('settings', 'Toggle account actions menu'),\"disabled\":_vm.disabled,\"inline\":1}},[_c('NcActionButton',{attrs:{\"data-cy-user-list-action-toggle-edit\":`${_vm.edit}`,\"disabled\":_vm.disabled},on:{\"click\":_vm.toggleEdit},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c('NcIconSvgWrapper',{key:_vm.editSvg,attrs:{\"svg\":_vm.editSvg,\"aria-hidden\":\"true\"}})]},proxy:true}])},[_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.edit ? _vm.t('settings', 'Done') : _vm.t('settings', 'Edit'))+\"\\n\\t\\t\")]),_vm._v(\" \"),_vm._l((_vm.actions),function({ action, icon, text },index){return _c('NcActionButton',{key:index,attrs:{\"disabled\":_vm.disabled,\"aria-label\":text,\"icon\":icon},on:{\"click\":(event) => action(event, { ..._vm.user })}},[_vm._v(\"\\n\\t\\t\"+_vm._s(text)+\"\\n\\t\")])})],2)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { render, staticRenderFns } from \"./UserRowActions.vue?vue&type=template&id=645e3075\"\nimport script from \"./UserRowActions.vue?vue&type=script&lang=ts\"\nexport * from \"./UserRowActions.vue?vue&type=script&lang=ts\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","/**\n * @copyright Copyright (c) 2019 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author Greta Doci <gretadoci@gmail.com>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Roeland Jago Douma <roeland@famdouma.nl>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nexport default {\n\tprops: {\n\t\tuser: {\n\t\t\ttype: Object,\n\t\t\trequired: true,\n\t\t},\n\t\tsettings: {\n\t\t\ttype: Object,\n\t\t\tdefault: () => ({}),\n\t\t},\n\t\tgroups: {\n\t\t\ttype: Array,\n\t\t\tdefault: () => [],\n\t\t},\n\t\tsubAdminsGroups: {\n\t\t\ttype: Array,\n\t\t\tdefault: () => [],\n\t\t},\n\t\tquotaOptions: {\n\t\t\ttype: Array,\n\t\t\tdefault: () => [],\n\t\t},\n\t\tlanguages: {\n\t\t\ttype: Array,\n\t\t\trequired: true,\n\t\t},\n\t\texternalActions: {\n\t\t\ttype: Array,\n\t\t\tdefault: () => [],\n\t\t},\n\t},\n\tcomputed: {\n\t\tshowConfig() {\n\t\t\treturn this.$store.getters.getShowConfig\n\t\t},\n\n\t\t/* GROUPS MANAGEMENT */\n\t\tuserGroups() {\n\t\t\tconst userGroups = this.groups.filter(group => this.user.groups.includes(group.id))\n\t\t\treturn userGroups\n\t\t},\n\t\tuserSubAdminsGroups() {\n\t\t\tconst userSubAdminsGroups = this.subAdminsGroups.filter(group => this.user.subadmin.includes(group.id))\n\t\t\treturn userSubAdminsGroups\n\t\t},\n\t\tavailableGroups() {\n\t\t\treturn this.groups.map((group) => {\n\t\t\t\t// clone object because we don't want\n\t\t\t\t// to edit the original groups\n\t\t\t\tconst groupClone = Object.assign({}, group)\n\n\t\t\t\t// two settings here:\n\t\t\t\t// 1. user NOT in group but no permission to add\n\t\t\t\t// 2. user is in group but no permission to remove\n\t\t\t\tgroupClone.$isDisabled\n\t\t\t\t\t= (group.canAdd === false\n\t\t\t\t\t\t&& !this.user.groups.includes(group.id))\n\t\t\t\t\t|| (group.canRemove === false\n\t\t\t\t\t\t&& this.user.groups.includes(group.id))\n\t\t\t\treturn groupClone\n\t\t\t})\n\t\t},\n\n\t\t/* QUOTA MANAGEMENT */\n\t\tusedSpace() {\n\t\t\tif (this.user.quota.used) {\n\t\t\t\treturn t('settings', '{size} used', { size: OC.Util.humanFileSize(this.user.quota.used) })\n\t\t\t}\n\t\t\treturn t('settings', '{size} used', { size: OC.Util.humanFileSize(0) })\n\t\t},\n\t\tusedQuota() {\n\t\t\tlet quota = this.user.quota.quota\n\t\t\tif (quota > 0) {\n\t\t\t\tquota = Math.min(100, Math.round(this.user.quota.used / quota * 100))\n\t\t\t} else {\n\t\t\t\tconst usedInGB = this.user.quota.used / (10 * Math.pow(2, 30))\n\t\t\t\t// asymptotic curve approaching 50% at 10GB to visualize used stace with infinite quota\n\t\t\t\tquota = 95 * (1 - (1 / (usedInGB + 1)))\n\t\t\t}\n\t\t\treturn isNaN(quota) ? 0 : quota\n\t\t},\n\t\t// Mapping saved values to objects\n\t\tuserQuota() {\n\t\t\tif (this.user.quota.quota >= 0) {\n\t\t\t\t// if value is valid, let's map the quotaOptions or return custom quota\n\t\t\t\tconst humanQuota = OC.Util.humanFileSize(this.user.quota.quota)\n\t\t\t\tconst userQuota = this.quotaOptions.find(quota => quota.id === humanQuota)\n\t\t\t\treturn userQuota || { id: humanQuota, label: humanQuota }\n\t\t\t} else if (this.user.quota.quota === 'default') {\n\t\t\t\t// default quota is replaced by the proper value on load\n\t\t\t\treturn this.quotaOptions[0]\n\t\t\t}\n\t\t\treturn this.quotaOptions[1] // unlimited\n\t\t},\n\n\t\t/* PASSWORD POLICY? */\n\t\tminPasswordLength() {\n\t\t\treturn this.$store.getters.getPasswordPolicyMinLength\n\t\t},\n\n\t\t/* LANGUAGE */\n\t\tuserLanguage() {\n\t\t\tconst availableLanguages = this.languages[0].languages.concat(this.languages[1].languages)\n\t\t\tconst userLang = availableLanguages.find(lang => lang.code === this.user.language)\n\t\t\tif (typeof userLang !== 'object' && this.user.language !== '') {\n\t\t\t\treturn {\n\t\t\t\t\tcode: this.user.language,\n\t\t\t\t\tname: this.user.language,\n\t\t\t\t}\n\t\t\t} else if (this.user.language === '') {\n\t\t\t\treturn false\n\t\t\t}\n\t\t\treturn userLang\n\t\t},\n\n\t\t/* LAST LOGIN */\n\t\tuserLastLoginTooltip() {\n\t\t\tif (this.user.lastLogin > 0) {\n\t\t\t\treturn OC.Util.formatDate(this.user.lastLogin)\n\t\t\t}\n\t\t\treturn ''\n\t\t},\n\t\tuserLastLogin() {\n\t\t\tif (this.user.lastLogin > 0) {\n\t\t\t\treturn OC.Util.relativeModifiedDate(this.user.lastLogin)\n\t\t\t}\n\t\t\treturn t('settings', 'Never')\n\t\t},\n\t},\n}\n","<!--\n - @copyright Copyright (c) 2019 Gary Kim <gary@garykim.dev>\n - @copyright Copyright (c) 2018 John Molakvoæ <skjnldsv@protonmail.com>\n -\n - @author Christopher Ng <chrng8@gmail.com>\n - @author Gary Kim <gary@garykim.dev>\n - @author John Molakvoæ <skjnldsv@protonmail.com>\n -\n - @license GNU AGPL version 3 or any later version\n -\n - This program is free software: you can redistribute it and/or modify\n - it under the terms of the GNU Affero General Public License as\n - published by the Free Software Foundation, either version 3 of the\n - License, or (at your option) any later version.\n -\n - This program is distributed in the hope that it will be useful,\n - but WITHOUT ANY WARRANTY; without even the implied warranty of\n - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n - GNU Affero General Public License for more details.\n -\n - You should have received a copy of the GNU Affero General Public License\n - along with this program. If not, see <http://www.gnu.org/licenses/>.\n -\n -->\n\n<template>\n\t<tr class=\"user-list__row\"\n\t\t:data-cy-user-row=\"user.id\">\n\t\t<td class=\"row__cell row__cell--avatar\" data-cy-user-list-cell-avatar>\n\t\t\t<NcLoadingIcon v-if=\"isLoadingUser\"\n\t\t\t\t:name=\"t('settings', 'Loading account …')\"\n\t\t\t\t:size=\"32\" />\n\t\t\t<NcAvatar v-else-if=\"visible\"\n\t\t\t\tdisable-menu\n\t\t\t\t:show-user-status=\"false\"\n\t\t\t\t:user=\"user.id\" />\n\t\t</td>\n\n\t\t<td class=\"row__cell row__cell--displayname\" data-cy-user-list-cell-displayname>\n\t\t\t<template v-if=\"editing && user.backendCapabilities.setDisplayName\">\n\t\t\t\t<NcTextField ref=\"displayNameField\"\n\t\t\t\t\tclass=\"user-row-text-field\"\n\t\t\t\t\tdata-cy-user-list-input-displayname\n\t\t\t\t\t:data-loading=\"loading.displayName || undefined\"\n\t\t\t\t\t:trailing-button-label=\"t('settings', 'Submit')\"\n\t\t\t\t\t:class=\"{ 'icon-loading-small': loading.displayName }\"\n\t\t\t\t\t:show-trailing-button=\"true\"\n\t\t\t\t\t:disabled=\"loading.displayName || isLoadingField\"\n\t\t\t\t\t:label=\"t('settings', 'Change display name')\"\n\t\t\t\t\ttrailing-button-icon=\"arrowRight\"\n\t\t\t\t\t:value.sync=\"editedDisplayName\"\n\t\t\t\t\tautocapitalize=\"off\"\n\t\t\t\t\tautocomplete=\"off\"\n\t\t\t\t\tspellcheck=\"false\"\n\t\t\t\t\t@trailing-button-click=\"updateDisplayName\" />\n\t\t\t</template>\n\t\t\t<strong v-else-if=\"!isObfuscated\"\n\t\t\t\t:title=\"user.displayname?.length > 20 ? user.displayname : null\">\n\t\t\t\t{{ user.displayname }}\n\t\t\t</strong>\n\t\t</td>\n\n\t\t<td class=\"row__cell row__cell--username\" data-cy-user-list-cell-username>\n\t\t\t<span class=\"row__subtitle\">{{ user.id }}</span>\n\t\t</td>\n\n\t\t<td data-cy-user-list-cell-password\n\t\t\tclass=\"row__cell\"\n\t\t\t:class=\"{ 'row__cell--obfuscated': hasObfuscated }\">\n\t\t\t<template v-if=\"editing && settings.canChangePassword && user.backendCapabilities.setPassword\">\n\t\t\t\t<NcTextField class=\"user-row-text-field\"\n\t\t\t\t\tdata-cy-user-list-input-password\n\t\t\t\t\t:data-loading=\"loading.password || undefined\"\n\t\t\t\t\t:trailing-button-label=\"t('settings', 'Submit')\"\n\t\t\t\t\t:class=\"{'icon-loading-small': loading.password}\"\n\t\t\t\t\t:show-trailing-button=\"true\"\n\t\t\t\t\t:disabled=\"loading.password || isLoadingField\"\n\t\t\t\t\t:minlength=\"minPasswordLength\"\n\t\t\t\t\tmaxlength=\"469\"\n\t\t\t\t\t:label=\"t('settings', 'Set new password')\"\n\t\t\t\t\ttrailing-button-icon=\"arrowRight\"\n\t\t\t\t\t:value.sync=\"editedPassword\"\n\t\t\t\t\tautocapitalize=\"off\"\n\t\t\t\t\tautocomplete=\"new-password\"\n\t\t\t\t\trequired\n\t\t\t\t\tspellcheck=\"false\"\n\t\t\t\t\ttype=\"password\"\n\t\t\t\t\t@trailing-button-click=\"updatePassword\" />\n\t\t\t</template>\n\t\t\t<span v-else-if=\"isObfuscated\">\n\t\t\t\t{{ t('settings', 'You do not have permissions to see the details of this account') }}\n\t\t\t</span>\n\t\t</td>\n\n\t\t<td class=\"row__cell\" data-cy-user-list-cell-email>\n\t\t\t<template v-if=\"editing\">\n\t\t\t\t<NcTextField class=\"user-row-text-field\"\n\t\t\t\t\t:class=\"{'icon-loading-small': loading.mailAddress}\"\n\t\t\t\t\tdata-cy-user-list-input-email\n\t\t\t\t\t:data-loading=\"loading.mailAddress || undefined\"\n\t\t\t\t\t:show-trailing-button=\"true\"\n\t\t\t\t\t:trailing-button-label=\"t('settings', 'Submit')\"\n\t\t\t\t\t:label=\"t('settings', 'Set new email address')\"\n\t\t\t\t\t:disabled=\"loading.mailAddress || isLoadingField\"\n\t\t\t\t\ttrailing-button-icon=\"arrowRight\"\n\t\t\t\t\t:value.sync=\"editedMail\"\n\t\t\t\t\tautocapitalize=\"off\"\n\t\t\t\t\tautocomplete=\"email\"\n\t\t\t\t\tspellcheck=\"false\"\n\t\t\t\t\ttype=\"email\"\n\t\t\t\t\t@trailing-button-click=\"updateEmail\" />\n\t\t\t</template>\n\t\t\t<span v-else-if=\"!isObfuscated\"\n\t\t\t\t:title=\"user.email?.length > 20 ? user.email : null\">\n\t\t\t\t{{ user.email }}\n\t\t\t</span>\n\t\t</td>\n\n\t\t<td class=\"row__cell row__cell--large row__cell--multiline\" data-cy-user-list-cell-groups>\n\t\t\t<template v-if=\"editing\">\n\t\t\t\t<label class=\"hidden-visually\"\n\t\t\t\t\t:for=\"'groups' + uniqueId\">\n\t\t\t\t\t{{ t('settings', 'Add user to group') }}\n\t\t\t\t</label>\n\t\t\t\t<NcSelect data-cy-user-list-input-groups\n\t\t\t\t\t:data-loading=\"loading.groups || undefined\"\n\t\t\t\t\t:input-id=\"'groups' + uniqueId\"\n\t\t\t\t\t:close-on-select=\"false\"\n\t\t\t\t\t:disabled=\"isLoadingField\"\n\t\t\t\t\t:loading=\"loading.groups\"\n\t\t\t\t\t:multiple=\"true\"\n\t\t\t\t\t:append-to-body=\"false\"\n\t\t\t\t\t:options=\"availableGroups\"\n\t\t\t\t\t:placeholder=\"t('settings', 'Add account to group')\"\n\t\t\t\t\t:taggable=\"settings.isAdmin\"\n\t\t\t\t\t:value=\"userGroups\"\n\t\t\t\t\tlabel=\"name\"\n\t\t\t\t\t:no-wrap=\"true\"\n\t\t\t\t\t:create-option=\"(value) => ({ name: value, isCreating: true })\"\n\t\t\t\t\t@option:created=\"createGroup\"\n\t\t\t\t\t@option:selected=\"options => addUserGroup(options.at(-1))\"\n\t\t\t\t\t@option:deselected=\"removeUserGroup\" />\n\t\t\t</template>\n\t\t\t<span v-else-if=\"!isObfuscated\"\n\t\t\t\t:title=\"userGroupsLabels?.length > 40 ? userGroupsLabels : null\">\n\t\t\t\t{{ userGroupsLabels }}\n\t\t\t</span>\n\t\t</td>\n\n\t\t<td v-if=\"subAdminsGroups.length > 0 && settings.isAdmin\"\n\t\t\tdata-cy-user-list-cell-subadmins\n\t\t\tclass=\"row__cell row__cell--large row__cell--multiline\">\n\t\t\t<template v-if=\"editing && settings.isAdmin && subAdminsGroups.length > 0\">\n\t\t\t\t<label class=\"hidden-visually\"\n\t\t\t\t\t:for=\"'subadmins' + uniqueId\">\n\t\t\t\t\t{{ t('settings', 'Set account as admin for') }}\n\t\t\t\t</label>\n\t\t\t\t<NcSelect data-cy-user-list-input-subadmins\n\t\t\t\t\t:data-loading=\"loading.subadmins || undefined\"\n\t\t\t\t\t:input-id=\"'subadmins' + uniqueId\"\n\t\t\t\t\t:close-on-select=\"false\"\n\t\t\t\t\t:disabled=\"isLoadingField\"\n\t\t\t\t\t:loading=\"loading.subadmins\"\n\t\t\t\t\tlabel=\"name\"\n\t\t\t\t\t:append-to-body=\"false\"\n\t\t\t\t\t:multiple=\"true\"\n\t\t\t\t\t:no-wrap=\"true\"\n\t\t\t\t\t:options=\"subAdminsGroups\"\n\t\t\t\t\t:placeholder=\"t('settings', 'Set account as admin for')\"\n\t\t\t\t\t:value=\"userSubAdminsGroups\"\n\t\t\t\t\t@option:deselected=\"removeUserSubAdmin\"\n\t\t\t\t\t@option:selected=\"options => addUserSubAdmin(options.at(-1))\" />\n\t\t\t</template>\n\t\t\t<span v-else-if=\"!isObfuscated\"\n\t\t\t\t:title=\"userSubAdminsGroupsLabels?.length > 40 ? userSubAdminsGroupsLabels : null\">\n\t\t\t\t{{ userSubAdminsGroupsLabels }}\n\t\t\t</span>\n\t\t</td>\n\n\t\t<td class=\"row__cell\" data-cy-user-list-cell-quota>\n\t\t\t<template v-if=\"editing\">\n\t\t\t\t<label class=\"hidden-visually\"\n\t\t\t\t\t:for=\"'quota' + uniqueId\">\n\t\t\t\t\t{{ t('settings', 'Select account quota') }}\n\t\t\t\t</label>\n\t\t\t\t<NcSelect v-model=\"editedUserQuota\"\n\t\t\t\t\t:close-on-select=\"true\"\n\t\t\t\t\t:create-option=\"validateQuota\"\n\t\t\t\t\tdata-cy-user-list-input-quota\n\t\t\t\t\t:data-loading=\"loading.quota || undefined\"\n\t\t\t\t\t:disabled=\"isLoadingField\"\n\t\t\t\t\t:loading=\"loading.quota\"\n\t\t\t\t\t:append-to-body=\"false\"\n\t\t\t\t\t:clearable=\"false\"\n\t\t\t\t\t:input-id=\"'quota' + uniqueId\"\n\t\t\t\t\t:options=\"quotaOptions\"\n\t\t\t\t\t:placeholder=\"t('settings', 'Select account quota')\"\n\t\t\t\t\t:taggable=\"true\"\n\t\t\t\t\t@option:selected=\"setUserQuota\" />\n\t\t\t</template>\n\t\t\t<template v-else-if=\"!isObfuscated\">\n\t\t\t\t<span :id=\"'quota-progress' + uniqueId\">{{ userQuota }} ({{ usedSpace }})</span>\n\t\t\t\t<NcProgressBar :aria-labelledby=\"'quota-progress' + uniqueId\"\n\t\t\t\t\tclass=\"row__progress\"\n\t\t\t\t\t:class=\"{\n\t\t\t\t\t\t'row__progress--warn': usedQuota > 80,\n\t\t\t\t\t}\"\n\t\t\t\t\t:value=\"usedQuota\" />\n\t\t\t</template>\n\t\t</td>\n\n\t\t<td v-if=\"showConfig.showLanguages\"\n\t\t\tclass=\"row__cell row__cell--large\"\n\t\t\tdata-cy-user-list-cell-language>\n\t\t\t<template v-if=\"editing\">\n\t\t\t\t<label class=\"hidden-visually\"\n\t\t\t\t\t:for=\"'language' + uniqueId\">\n\t\t\t\t\t{{ t('settings', 'Set the language') }}\n\t\t\t\t</label>\n\t\t\t\t<NcSelect :id=\"'language' + uniqueId\"\n\t\t\t\t\tdata-cy-user-list-input-language\n\t\t\t\t\t:data-loading=\"loading.languages || undefined\"\n\t\t\t\t\t:allow-empty=\"false\"\n\t\t\t\t\t:disabled=\"isLoadingField\"\n\t\t\t\t\t:loading=\"loading.languages\"\n\t\t\t\t\t:clearable=\"false\"\n\t\t\t\t\t:append-to-body=\"false\"\n\t\t\t\t\t:options=\"availableLanguages\"\n\t\t\t\t\t:placeholder=\"t('settings', 'No language set')\"\n\t\t\t\t\t:value=\"userLanguage\"\n\t\t\t\t\tlabel=\"name\"\n\t\t\t\t\t@input=\"setUserLanguage\" />\n\t\t\t</template>\n\t\t\t<span v-else-if=\"!isObfuscated\">\n\t\t\t\t{{ userLanguage.name }}\n\t\t\t</span>\n\t\t</td>\n\n\t\t<td v-if=\"showConfig.showUserBackend || showConfig.showStoragePath\"\n\t\t\tdata-cy-user-list-cell-storage-location\n\t\t\tclass=\"row__cell row__cell--large\">\n\t\t\t<template v-if=\"!isObfuscated\">\n\t\t\t\t<span v-if=\"showConfig.showUserBackend\">{{ user.backend }}</span>\n\t\t\t\t<span v-if=\"showConfig.showStoragePath\"\n\t\t\t\t\t:title=\"user.storageLocation\"\n\t\t\t\t\tclass=\"row__subtitle\">\n\t\t\t\t\t{{ user.storageLocation }}\n\t\t\t\t</span>\n\t\t\t</template>\n\t\t</td>\n\n\t\t<td v-if=\"showConfig.showLastLogin\"\n\t\t\t:title=\"userLastLoginTooltip\"\n\t\t\tclass=\"row__cell\"\n\t\t\tdata-cy-user-list-cell-last-login>\n\t\t\t<span v-if=\"!isObfuscated\">{{ userLastLogin }}</span>\n\t\t</td>\n\n\t\t<td class=\"row__cell row__cell--large row__cell--fill\" data-cy-user-list-cell-manager>\n\t\t\t<template v-if=\"editing\">\n\t\t\t\t<label class=\"hidden-visually\"\n\t\t\t\t\t:for=\"'manager' + uniqueId\">\n\t\t\t\t\t{{ managerLabel }}\n\t\t\t\t</label>\n\t\t\t\t<NcSelect v-model=\"currentManager\"\n\t\t\t\t\tclass=\"select--fill\"\n\t\t\t\t\tdata-cy-user-list-input-manager\n\t\t\t\t\t:data-loading=\"loading.manager || undefined\"\n\t\t\t\t\t:input-id=\"'manager' + uniqueId\"\n\t\t\t\t\t:close-on-select=\"true\"\n\t\t\t\t\t:disabled=\"isLoadingField\"\n\t\t\t\t\t:append-to-body=\"false\"\n\t\t\t\t\t:loading=\"loadingPossibleManagers || loading.manager\"\n\t\t\t\t\tlabel=\"displayname\"\n\t\t\t\t\t:options=\"possibleManagers\"\n\t\t\t\t\t:placeholder=\"managerLabel\"\n\t\t\t\t\t@open=\"searchInitialUserManager\"\n\t\t\t\t\t@search=\"searchUserManager\"\n\t\t\t\t\t@option:selected=\"updateUserManager\" />\n\t\t\t</template>\n\t\t\t<span v-else-if=\"!isObfuscated\">\n\t\t\t\t{{ user.manager }}\n\t\t\t</span>\n\t\t</td>\n\n\t\t<td class=\"row__cell row__cell--actions\" data-cy-user-list-cell-actions>\n\t\t\t<UserRowActions v-if=\"visible && !isObfuscated && canEdit && !loading.all\"\n\t\t\t\t:actions=\"userActions\"\n\t\t\t\t:disabled=\"isLoadingField\"\n\t\t\t\t:edit=\"editing\"\n\t\t\t\t:user=\"user\"\n\t\t\t\t@update:edit=\"toggleEdit\" />\n\t\t</td>\n\t</tr>\n</template>\n\n<script>\nimport { formatFileSize, parseFileSize } from '@nextcloud/files'\nimport { getCurrentUser } from '@nextcloud/auth'\nimport { showSuccess, showError } from '@nextcloud/dialogs'\n\nimport NcAvatar from '@nextcloud/vue/dist/Components/NcAvatar.js'\nimport NcLoadingIcon from '@nextcloud/vue/dist/Components/NcLoadingIcon.js'\nimport NcProgressBar from '@nextcloud/vue/dist/Components/NcProgressBar.js'\nimport NcSelect from '@nextcloud/vue/dist/Components/NcSelect.js'\nimport NcTextField from '@nextcloud/vue/dist/Components/NcTextField.js'\n\nimport UserRowActions from './UserRowActions.vue'\n\nimport UserRowMixin from '../../mixins/UserRowMixin.js'\nimport { isObfuscated, unlimitedQuota } from '../../utils/userUtils.ts';\n\nexport default {\n\tname: 'UserRow',\n\n\tcomponents: {\n\t\tNcAvatar,\n\t\tNcLoadingIcon,\n\t\tNcProgressBar,\n\t\tNcSelect,\n\t\tNcTextField,\n\t\tUserRowActions,\n\t},\n\n\tmixins: [\n\t\tUserRowMixin,\n\t],\n\n\tprops: {\n\t\tuser: {\n\t\t\ttype: Object,\n\t\t\trequired: true,\n\t\t},\n\t\tvisible: {\n\t\t\ttype: Boolean,\n\t\t\trequired: true,\n\t\t},\n\t\tusers: {\n\t\t\ttype: Array,\n\t\t\trequired: true,\n\t\t},\n\t\thasObfuscated: {\n\t\t\ttype: Boolean,\n\t\t\trequired: true,\n\t\t},\n\t\tgroups: {\n\t\t\ttype: Array,\n\t\t\tdefault: () => [],\n\t\t},\n\t\tsubAdminsGroups: {\n\t\t\ttype: Array,\n\t\t\trequired: true,\n\t\t},\n\t\tquotaOptions: {\n\t\t\ttype: Array,\n\t\t\trequired: true,\n\t\t},\n\t\tlanguages: {\n\t\t\ttype: Array,\n\t\t\trequired: true,\n\t\t},\n\t\tsettings: {\n\t\t\ttype: Object,\n\t\t\trequired: true,\n\t\t},\n\t\texternalActions: {\n\t\t\ttype: Array,\n\t\t\tdefault: () => [],\n\t\t},\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\tselectedQuota: false,\n\t\t\trand: Math.random().toString(36).substring(2),\n\t\t\tloadingPossibleManagers: false,\n\t\t\tpossibleManagers: [],\n\t\t\tcurrentManager: '',\n\t\t\tediting: false,\n\t\t\tloading: {\n\t\t\t\tall: false,\n\t\t\t\tdisplayName: false,\n\t\t\t\tpassword: false,\n\t\t\t\tmailAddress: false,\n\t\t\t\tgroups: false,\n\t\t\t\tsubadmins: false,\n\t\t\t\tquota: false,\n\t\t\t\tdelete: false,\n\t\t\t\tdisable: false,\n\t\t\t\tlanguages: false,\n\t\t\t\twipe: false,\n\t\t\t\tmanager: false,\n\t\t\t},\n\t\t\teditedDisplayName: this.user.displayname,\n\t\t\teditedPassword: '',\n\t\t\teditedMail: this.user.email ?? '',\n\t\t}\n\t},\n\n\tcomputed: {\n\t\tmanagerLabel() {\n\t\t\t// TRANSLATORS This string describes a person's manager in the context of an organization\n\t\t\treturn t('settings', 'Set line manager')\n\t\t},\n\n\t\tisObfuscated() {\n\t\t\treturn isObfuscated(this.user)\n\t\t},\n\n\t\tshowConfig() {\n\t\t\treturn this.$store.getters.getShowConfig\n\t\t},\n\n\t\tisLoadingUser() {\n\t\t\treturn this.loading.delete || this.loading.disable || this.loading.wipe\n\t\t},\n\n\t\tisLoadingField() {\n\t\t\treturn this.loading.delete || this.loading.disable || this.loading.all\n\t\t},\n\n\t\tuniqueId() {\n\t\t\treturn encodeURIComponent(this.user.id + this.rand)\n\t\t},\n\n\t\tuserGroupsLabels() {\n\t\t\treturn this.userGroups\n\t\t\t\t.map(group => group.name)\n\t\t\t\t.join(', ')\n\t\t},\n\n\t\tuserSubAdminsGroupsLabels() {\n\t\t\treturn this.userSubAdminsGroups\n\t\t\t\t.map(group => group.name)\n\t\t\t\t.join(', ')\n\t\t},\n\n\t\tusedSpace() {\n\t\t\tif (this.user.quota?.used) {\n\t\t\t\treturn t('settings', '{size} used', { size: formatFileSize(this.user.quota?.used) })\n\t\t\t}\n\t\t\treturn t('settings', '{size} used', { size: formatFileSize(0) })\n\t\t},\n\n\t\tcanEdit() {\n\t\t\treturn getCurrentUser().uid !== this.user.id || this.settings.isAdmin\n\t\t},\n\n\t\tuserQuota() {\n\t\t\tlet quota = this.user.quota?.quota\n\n\t\t\tif (quota === 'default') {\n\t\t\t\tquota = this.settings.defaultQuota\n\t\t\t\tif (quota !== 'none') {\n\t\t\t\t\t// convert to numeric value to match what the server would usually return\n\t\t\t\t\tquota = parseFileSize(quota, true)\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// when the default quota is unlimited, the server returns -3 here, map it to \"none\"\n\t\t\tif (quota === 'none' || quota === -3) {\n\t\t\t\treturn t('settings', 'Unlimited')\n\t\t\t} else if (quota >= 0) {\n\t\t\t\treturn formatFileSize(quota)\n\t\t\t}\n\t\t\treturn formatFileSize(0)\n\t\t},\n\n\t\tuserActions() {\n\t\t\tconst actions = [\n\t\t\t\t{\n\t\t\t\t\ticon: 'icon-delete',\n\t\t\t\t\ttext: t('settings', 'Delete account'),\n\t\t\t\t\taction: this.deleteUser,\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\ticon: 'icon-delete',\n\t\t\t\t\ttext: t('settings', 'Disconnect all devices and delete local data'),\n\t\t\t\t\taction: this.wipeUserDevices,\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\ticon: this.user.enabled ? 'icon-close' : 'icon-add',\n\t\t\t\t\ttext: this.user.enabled ? t('settings', 'Disable account') : t('settings', 'Enable account'),\n\t\t\t\t\taction: this.enableDisableUser,\n\t\t\t\t},\n\t\t\t]\n\t\t\tif (this.user.email !== null && this.user.email !== '') {\n\t\t\t\tactions.push({\n\t\t\t\t\ticon: 'icon-mail',\n\t\t\t\t\ttext: t('settings', 'Resend welcome email'),\n\t\t\t\t\taction: this.sendWelcomeMail,\n\t\t\t\t})\n\t\t\t}\n\t\t\treturn actions.concat(this.externalActions)\n\t\t},\n\n\t\t// mapping saved values to objects\n\t\teditedUserQuota: {\n\t\t\tget() {\n\t\t\t\tif (this.selectedQuota !== false) {\n\t\t\t\t\treturn this.selectedQuota\n\t\t\t\t}\n\t\t\t\tif (this.settings.defaultQuota !== unlimitedQuota.id && parseFileSize(this.settings.defaultQuota, true) >= 0) {\n\t\t\t\t\t// if value is valid, let's map the quotaOptions or return custom quota\n\t\t\t\t\treturn { id: this.settings.defaultQuota, label: this.settings.defaultQuota }\n\t\t\t\t}\n\t\t\t\treturn unlimitedQuota // unlimited\n\t\t\t},\n\t\t\tset(quota) {\n\t\t\t\tthis.selectedQuota = quota\n\t\t\t},\n\t\t},\n\n\t\tavailableLanguages() {\n\t\t\treturn this.languages[0].languages.concat(this.languages[1].languages)\n\t\t},\n\t},\n\n\tasync beforeMount() {\n\t\tif (this.user.manager) {\n\t\t\tawait this.initManager(this.user.manager)\n\t\t}\n\t},\n\n\tmethods: {\n\t\twipeUserDevices() {\n\t\t\tconst userid = this.user.id\n\t\t\tOC.dialogs.confirmDestructive(\n\t\t\t\tt('settings', 'In case of lost device or exiting the organization, this can remotely wipe the Nextcloud data from all devices associated with {userid}. Only works if the devices are connected to the internet.', { userid }),\n\t\t\t\tt('settings', 'Remote wipe of devices'),\n\t\t\t\t{\n\t\t\t\t\ttype: OC.dialogs.YES_NO_BUTTONS,\n\t\t\t\t\tconfirm: t('settings', 'Wipe {userid}\\'s devices', { userid }),\n\t\t\t\t\tconfirmClasses: 'error',\n\t\t\t\t\tcancel: t('settings', 'Cancel'),\n\t\t\t\t},\n\t\t\t\t(result) => {\n\t\t\t\t\tif (result) {\n\t\t\t\t\t\tthis.loading.wipe = true\n\t\t\t\t\t\tthis.loading.all = true\n\t\t\t\t\t\tthis.$store.dispatch('wipeUserDevices', userid)\n\t\t\t\t\t\t\t.then(() => showSuccess(t('settings', 'Wiped {userid}\\'s devices', { userid })), { timeout: 2000 })\n\t\t\t\t\t\t\t.finally(() => {\n\t\t\t\t\t\t\t\tthis.loading.wipe = false\n\t\t\t\t\t\t\t\tthis.loading.all = false\n\t\t\t\t\t\t\t})\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\ttrue,\n\t\t\t)\n\t\t},\n\n\t\tfilterManagers(managers) {\n\t\t\treturn managers.filter((manager) => manager.id !== this.user.id)\n\t\t},\n\n\t\tasync initManager(userId) {\n\t\t\tawait this.$store.dispatch('getUser', userId).then(response => {\n\t\t\t\tthis.currentManager = response?.data.ocs.data\n\t\t\t})\n\t\t},\n\n\t\tasync searchInitialUserManager() {\n\t\t\tthis.loadingPossibleManagers = true\n\t\t\tawait this.searchUserManager()\n\t\t\tthis.loadingPossibleManagers = false\n\t\t},\n\n\t\tasync searchUserManager(query) {\n\t\t\tawait this.$store.dispatch('searchUsers', { offset: 0, limit: 10, search: query }).then(response => {\n\t\t\t\tconst users = response?.data ? this.filterManagers(Object.values(response?.data.ocs.data.users)) : []\n\t\t\t\tif (users.length > 0) {\n\t\t\t\t\tthis.possibleManagers = users\n\t\t\t\t}\n\t\t\t})\n\t\t},\n\n\t\tasync updateUserManager(manager) {\n\t\t\tif (manager === null) {\n\t\t\t\tthis.currentManager = ''\n\t\t\t}\n\t\t\tthis.loading.manager = true\n\t\t\ttry {\n\t\t\t\tawait this.$store.dispatch('setUserData', {\n\t\t\t\t\tuserid: this.user.id,\n\t\t\t\t\tkey: 'manager',\n\t\t\t\t\tvalue: this.currentManager ? this.currentManager.id : '',\n\t\t\t\t})\n\t\t\t} catch (error) {\n\t\t\t\t// TRANSLATORS This string describes a line manager in the context of an organization\n\t\t\t\tshowError(t('setting', 'Failed to update line manager'))\n\t\t\t\tconsole.error(error)\n\t\t\t} finally {\n\t\t\t\tthis.loading.manager = false\n\t\t\t}\n\t\t},\n\n\t\tdeleteUser() {\n\t\t\tconst userid = this.user.id\n\t\t\tOC.dialogs.confirmDestructive(\n\t\t\t\tt('settings', 'Fully delete {userid}\\'s account including all their personal files, app data, etc.', { userid }),\n\t\t\t\tt('settings', 'Account deletion'),\n\t\t\t\t{\n\t\t\t\t\ttype: OC.dialogs.YES_NO_BUTTONS,\n\t\t\t\t\tconfirm: t('settings', 'Delete {userid}\\'s account', { userid }),\n\t\t\t\t\tconfirmClasses: 'error',\n\t\t\t\t\tcancel: t('settings', 'Cancel'),\n\t\t\t\t},\n\t\t\t\t(result) => {\n\t\t\t\t\tif (result) {\n\t\t\t\t\t\tthis.loading.delete = true\n\t\t\t\t\t\tthis.loading.all = true\n\t\t\t\t\t\treturn this.$store.dispatch('deleteUser', userid)\n\t\t\t\t\t\t\t.then(() => {\n\t\t\t\t\t\t\t\tthis.loading.delete = false\n\t\t\t\t\t\t\t\tthis.loading.all = false\n\t\t\t\t\t\t\t})\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\ttrue,\n\t\t\t)\n\t\t},\n\n\t\tenableDisableUser() {\n\t\t\tthis.loading.delete = true\n\t\t\tthis.loading.all = true\n\t\t\tconst userid = this.user.id\n\t\t\tconst enabled = !this.user.enabled\n\t\t\treturn this.$store.dispatch('enableDisableUser', {\n\t\t\t\tuserid,\n\t\t\t\tenabled,\n\t\t\t})\n\t\t\t\t.then(() => {\n\t\t\t\t\tthis.loading.delete = false\n\t\t\t\t\tthis.loading.all = false\n\t\t\t\t})\n\t\t},\n\n\t\t/**\n\t\t * Set user displayName\n\t\t *\n\t\t * @param {string} displayName The display name\n\t\t */\n\t\tupdateDisplayName() {\n\t\t\tthis.loading.displayName = true\n\t\t\tthis.$store.dispatch('setUserData', {\n\t\t\t\tuserid: this.user.id,\n\t\t\t\tkey: 'displayname',\n\t\t\t\tvalue: this.editedDisplayName,\n\t\t\t}).then(() => {\n\t\t\t\tthis.loading.displayName = false\n\t\t\t\tif (this.editedDisplayName === this.user.displayname) {\n\t\t\t\t\tshowSuccess(t('setting', 'Display name was successfully changed'))\n\t\t\t\t}\n\t\t\t})\n\t\t},\n\n\t\t/**\n\t\t * Set user password\n\t\t *\n\t\t * @param {string} password The email address\n\t\t */\n\t\tupdatePassword() {\n\t\t\tthis.loading.password = true\n\t\t\tif (this.editedPassword.length === 0) {\n\t\t\t\tshowError(t('setting', \"Password can't be empty\"))\n\t\t\t\tthis.loading.password = false\n\t\t\t} else {\n\t\t\t\tthis.$store.dispatch('setUserData', {\n\t\t\t\t\tuserid: this.user.id,\n\t\t\t\t\tkey: 'password',\n\t\t\t\t\tvalue: this.editedPassword,\n\t\t\t\t}).then(() => {\n\t\t\t\t\tthis.loading.password = false\n\t\t\t\t\tthis.editedPassword = ''\n\t\t\t\t\tshowSuccess(t('setting', 'Password was successfully changed'))\n\t\t\t\t})\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Set user mailAddress\n\t\t *\n\t\t * @param {string} mailAddress The email address\n\t\t */\n\t\tupdateEmail() {\n\t\t\tthis.loading.mailAddress = true\n\t\t\tif (this.editedMail === '') {\n\t\t\t\tshowError(t('setting', \"Email can't be empty\"))\n\t\t\t\tthis.loading.mailAddress = false\n\t\t\t\tthis.editedMail = this.user.email\n\t\t\t} else {\n\t\t\t\tthis.$store.dispatch('setUserData', {\n\t\t\t\t\tuserid: this.user.id,\n\t\t\t\t\tkey: 'email',\n\t\t\t\t\tvalue: this.editedMail,\n\t\t\t\t}).then(() => {\n\t\t\t\t\tthis.loading.mailAddress = false\n\t\t\t\t\tif (this.editedMail === this.user.email) {\n\t\t\t\t\t\tshowSuccess(t('setting', 'Email was successfully changed'))\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Create a new group and add user to it\n\t\t *\n\t\t * @param {string} gid Group id\n\t\t */\n\t\tasync createGroup({ name: gid }) {\n\t\t\tthis.loading = { groups: true, subadmins: true }\n\t\t\ttry {\n\t\t\t\tawait this.$store.dispatch('addGroup', gid)\n\t\t\t\tconst userid = this.user.id\n\t\t\t\tawait this.$store.dispatch('addUserGroup', { userid, gid })\n\t\t\t} catch (error) {\n\t\t\t\tconsole.error(error)\n\t\t\t} finally {\n\t\t\t\tthis.loading = { groups: false, subadmins: false }\n\t\t\t}\n\t\t\treturn this.$store.getters.getGroups[this.groups.length]\n\t\t},\n\n\t\t/**\n\t\t * Add user to group\n\t\t *\n\t\t * @param {object} group Group object\n\t\t */\n\t\tasync addUserGroup(group) {\n\t\t\tif (group.isCreating) {\n\t\t\t\t// This is NcSelect's internal value for a new inputted group name\n\t\t\t\t// Ignore\n\t\t\t\treturn\n\t\t\t}\n\t\t\tthis.loading.groups = true\n\t\t\tconst userid = this.user.id\n\t\t\tconst gid = group.id\n\t\t\tif (group.canAdd === false) {\n\t\t\t\treturn false\n\t\t\t}\n\t\t\ttry {\n\t\t\t\tawait this.$store.dispatch('addUserGroup', { userid, gid })\n\t\t\t} catch (error) {\n\t\t\t\tconsole.error(error)\n\t\t\t} finally {\n\t\t\t\tthis.loading.groups = false\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Remove user from group\n\t\t *\n\t\t * @param {object} group Group object\n\t\t */\n\t\tasync removeUserGroup(group) {\n\t\t\tif (group.canRemove === false) {\n\t\t\t\treturn false\n\t\t\t}\n\t\t\tthis.loading.groups = true\n\t\t\tconst userid = this.user.id\n\t\t\tconst gid = group.id\n\t\t\ttry {\n\t\t\t\tawait this.$store.dispatch('removeUserGroup', {\n\t\t\t\t\tuserid,\n\t\t\t\t\tgid,\n\t\t\t\t})\n\t\t\t\tthis.loading.groups = false\n\t\t\t\t// remove user from current list if current list is the removed group\n\t\t\t\tif (this.$route.params.selectedGroup === gid) {\n\t\t\t\t\tthis.$store.commit('deleteUser', userid)\n\t\t\t\t}\n\t\t\t} catch {\n\t\t\t\tthis.loading.groups = false\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Add user to group\n\t\t *\n\t\t * @param {object} group Group object\n\t\t */\n\t\tasync addUserSubAdmin(group) {\n\t\t\tthis.loading.subadmins = true\n\t\t\tconst userid = this.user.id\n\t\t\tconst gid = group.id\n\t\t\ttry {\n\t\t\t\tawait this.$store.dispatch('addUserSubAdmin', {\n\t\t\t\t\tuserid,\n\t\t\t\t\tgid,\n\t\t\t\t})\n\t\t\t\tthis.loading.subadmins = false\n\t\t\t} catch (error) {\n\t\t\t\tconsole.error(error)\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Remove user from group\n\t\t *\n\t\t * @param {object} group Group object\n\t\t */\n\t\tasync removeUserSubAdmin(group) {\n\t\t\tthis.loading.subadmins = true\n\t\t\tconst userid = this.user.id\n\t\t\tconst gid = group.id\n\n\t\t\ttry {\n\t\t\t\tawait this.$store.dispatch('removeUserSubAdmin', {\n\t\t\t\t\tuserid,\n\t\t\t\t\tgid,\n\t\t\t\t})\n\t\t\t} catch (error) {\n\t\t\t\tconsole.error(error)\n\t\t\t} finally {\n\t\t\t\tthis.loading.subadmins = false\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Dispatch quota set request\n\t\t *\n\t\t * @param {string | object} quota Quota in readable format '5 GB' or Object {id: '5 GB', label: '5GB'}\n\t\t * @return {string}\n\t\t */\n\t\tasync setUserQuota(quota = 'none') {\n\t\t\t// Make sure correct label is set for unlimited quota\n\t\t\tif (quota === 'none') {\n\t\t\t\tquota = unlimitedQuota\n\t\t\t}\n\t\t\tthis.loading.quota = true\n\n\t\t\t// ensure we only send the preset id\n\t\t\tquota = quota.id ? quota.id : quota\n\n\t\t\ttry {\n\t\t\t\t// If human readable format, convert to raw float format\n\t\t\t\t// Else just send the raw string\n\t\t\t\tconst value = (parseFileSize(quota, true) || quota).toString()\n\t\t\t\tawait this.$store.dispatch('setUserData', {\n\t\t\t\t\tuserid: this.user.id,\n\t\t\t\t\tkey: 'quota',\n\t\t\t\t\tvalue,\n\t\t\t\t})\n\t\t\t} catch (error) {\n\t\t\t\tconsole.error(error)\n\t\t\t} finally {\n\t\t\t\tthis.loading.quota = false\n\t\t\t}\n\t\t\treturn quota\n\t\t},\n\n\t\t/**\n\t\t * Validate quota string to make sure it's a valid human file size\n\t\t *\n\t\t * @param {string | object} quota Quota in readable format '5 GB' or Object {id: '5 GB', label: '5GB'}\n\t\t * @return {object} The validated quota object or unlimited quota if input is invalid\n\t\t */\n\t\tvalidateQuota(quota) {\n\t\t\tif (typeof quota === 'object') {\n\t\t\t\tquota = quota?.id || quota.label\n\t\t\t}\n\t\t\t// only used for new presets sent through @Tag\n\t\t\tconst validQuota = parseFileSize(quota, true)\n\t\t\tif (validQuota === null) {\n\t\t\t\treturn unlimitedQuota\n\t\t\t} else {\n\t\t\t\t// unify format output\n\t\t\t\tquota = formatFileSize(parseFileSize(quota, true))\n\t\t\t\treturn { id: quota, label: quota }\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Dispatch language set request\n\t\t *\n\t\t * @param {object} lang language object {code:'en', name:'English'}\n\t\t * @return {object}\n\t\t */\n\t\tasync setUserLanguage(lang) {\n\t\t\tthis.loading.languages = true\n\t\t\t// ensure we only send the preset id\n\t\t\ttry {\n\t\t\t\tawait this.$store.dispatch('setUserData', {\n\t\t\t\t\tuserid: this.user.id,\n\t\t\t\t\tkey: 'language',\n\t\t\t\t\tvalue: lang.code,\n\t\t\t\t})\n\t\t\t\tthis.loading.languages = false\n\t\t\t} catch (error) {\n\t\t\t\tconsole.error(error)\n\t\t\t}\n\t\t\treturn lang\n\t\t},\n\n\t\t/**\n\t\t * Dispatch new welcome mail request\n\t\t */\n\t\tsendWelcomeMail() {\n\t\t\tthis.loading.all = true\n\t\t\tthis.$store.dispatch('sendWelcomeMail', this.user.id)\n\t\t\t\t.then(() => showSuccess(t('setting', 'Welcome mail sent!'), { timeout: 2000 }))\n\t\t\t\t.finally(() => {\n\t\t\t\t\tthis.loading.all = false\n\t\t\t\t})\n\t\t},\n\n\t\tasync toggleEdit() {\n\t\t\tthis.editing = !this.editing\n\t\t\tif (this.editing) {\n\t\t\t\tawait this.$nextTick()\n\t\t\t\tthis.$refs.displayNameField?.$refs?.inputField?.$refs?.input?.focus()\n\t\t\t}\n\t\t\tif (this.editedDisplayName !== this.user.displayname) {\n\t\t\t\tthis.editedDisplayName = this.user.displayname\n\t\t\t} else if (this.editedMail !== this.user.email) {\n\t\t\t\tthis.editedMail = this.user.email ?? ''\n\t\t\t}\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\n@import './shared/styles.scss';\n\n.user-list__row {\n\t@include row;\n\n\t&:hover {\n\t\tbackground-color: var(--color-background-hover);\n\n\t\t.row__cell:not(.row__cell--actions) {\n\t\t\tbackground-color: var(--color-background-hover);\n\t\t}\n\t}\n\n\t// Limit width of select in fill cell\n\t.select--fill {\n\t\tmax-width: calc(var(--cell-width-large) - (2 * var(--cell-padding)));\n\t}\n}\n\n.row {\n\t@include cell;\n\n\t&__cell {\n\t\tborder-bottom: 1px solid var(--color-border);\n\n\t\t:deep {\n\t\t\t.v-select.select {\n\t\t\t\tmin-width: var(--cell-min-width);\n\t\t\t}\n\t\t}\n\t}\n\n\t&__progress {\n\t\tmargin-top: 4px;\n\n\t\t&--warn {\n\t\t\t&::-moz-progress-bar {\n\t\t\t\tbackground: var(--color-warning) !important;\n\t\t\t}\n\t\t\t&::-webkit-progress-value {\n\t\t\t\tbackground: var(--color-warning) !important;\n\t\t\t}\n\t\t}\n\t}\n}\n</style>\n","import mod from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./UserRow.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./UserRow.vue?vue&type=script&lang=js\"","\n import API from \"!../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../../node_modules/css-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/sass-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./UserRow.vue?vue&type=style&index=0&id=2cdd4510&prod&lang=scss&scoped=true\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../../node_modules/css-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/sass-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./UserRow.vue?vue&type=style&index=0&id=2cdd4510&prod&lang=scss&scoped=true\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./UserRow.vue?vue&type=template&id=2cdd4510&scoped=true\"\nimport script from \"./UserRow.vue?vue&type=script&lang=js\"\nexport * from \"./UserRow.vue?vue&type=script&lang=js\"\nimport style0 from \"./UserRow.vue?vue&type=style&index=0&id=2cdd4510&prod&lang=scss&scoped=true\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"2cdd4510\",\n null\n \n)\n\nexport default component.exports","<!--\n - @copyright Copyright (c) 2018 John Molakvoæ <skjnldsv@protonmail.com>\n -\n - @author John Molakvoæ <skjnldsv@protonmail.com>\n -\n - @license GNU AGPL version 3 or any later version\n -\n - This program is free software: you can redistribute it and/or modify\n - it under the terms of the GNU Affero General Public License as\n - published by the Free Software Foundation, either version 3 of the\n - License, or (at your option) any later version.\n -\n - This program is distributed in the hope that it will be useful,\n - but WITHOUT ANY WARRANTY; without even the implied warranty of\n - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n - GNU Affero General Public License for more details.\n -\n - You should have received a copy of the GNU Affero General Public License\n - along with this program. If not, see <http://www.gnu.org/licenses/>.\n -\n -->\n\n<template>\n\t<Fragment>\n\t\t<NewUserModal v-if=\"showConfig.showNewUserForm\"\n\t\t\t:loading=\"loading\"\n\t\t\t:new-user=\"newUser\"\n\t\t\t:quota-options=\"quotaOptions\"\n\t\t\t@reset=\"resetForm\"\n\t\t\t@close=\"closeModal\" />\n\n\t\t<NcEmptyContent v-if=\"filteredUsers.length === 0\"\n\t\t\tclass=\"empty\"\n\t\t\t:name=\"isInitialLoad && loading.users ? null : t('settings', 'No accounts')\">\n\t\t\t<template #icon>\n\t\t\t\t<NcLoadingIcon v-if=\"isInitialLoad && loading.users\"\n\t\t\t\t\t:name=\"t('settings', 'Loading accounts …')\"\n\t\t\t\t\t:size=\"64\" />\n\t\t\t\t<NcIconSvgWrapper v-else :path=\"mdiAccountGroup\" :size=\"64\" />\n\t\t\t</template>\n\t\t</NcEmptyContent>\n\n\t\t<VirtualList v-else\n\t\t\t:data-component=\"UserRow\"\n\t\t\t:data-sources=\"filteredUsers\"\n\t\t\tdata-key=\"id\"\n\t\t\tdata-cy-user-list\n\t\t\t:item-height=\"rowHeight\"\n\t\t\t:style=\"style\"\n\t\t\t:extra-props=\"{\n\t\t\t\tusers,\n\t\t\t\tsettings,\n\t\t\t\thasObfuscated,\n\t\t\t\tgroups,\n\t\t\t\tsubAdminsGroups,\n\t\t\t\tquotaOptions,\n\t\t\t\tlanguages,\n\t\t\t\texternalActions,\n\t\t\t}\"\n\t\t\t@scroll-end=\"handleScrollEnd\">\n\t\t\t<template #before>\n\t\t\t\t<caption class=\"hidden-visually\">\n\t\t\t\t\t{{ t('settings', 'List of accounts. This list is not fully rendered for performance reasons. The accounts will be rendered as you navigate through the list.') }}\n\t\t\t\t</caption>\n\t\t\t</template>\n\n\t\t\t<template #header>\n\t\t\t\t<UserListHeader :has-obfuscated=\"hasObfuscated\" />\n\t\t\t</template>\n\n\t\t\t<template #footer>\n\t\t\t\t<UserListFooter :loading=\"loading.users\"\n\t\t\t\t\t:filtered-users=\"filteredUsers\" />\n\t\t\t</template>\n\t\t</VirtualList>\n\t</Fragment>\n</template>\n\n<script>\nimport { mdiAccountGroup } from '@mdi/js'\nimport { showError } from '@nextcloud/dialogs'\nimport { subscribe, unsubscribe } from '@nextcloud/event-bus'\nimport { Fragment } from 'vue-frag'\n\nimport Vue from 'vue'\nimport NcEmptyContent from '@nextcloud/vue/dist/Components/NcEmptyContent.js'\nimport NcIconSvgWrapper from '@nextcloud/vue/dist/Components/NcIconSvgWrapper.js'\nimport NcLoadingIcon from '@nextcloud/vue/dist/Components/NcLoadingIcon.js'\n\nimport VirtualList from './Users/VirtualList.vue'\nimport NewUserModal from './Users/NewUserModal.vue'\nimport UserListFooter from './Users/UserListFooter.vue'\nimport UserListHeader from './Users/UserListHeader.vue'\nimport UserRow from './Users/UserRow.vue'\n\nimport { defaultQuota, isObfuscated, unlimitedQuota } from '../utils/userUtils.ts'\nimport logger from '../logger.ts'\n\nconst newUser = Object.freeze({\n\tid: '',\n\tdisplayName: '',\n\tpassword: '',\n\tmailAddress: '',\n\tgroups: [],\n\tmanager: '',\n\tsubAdminsGroups: [],\n\tquota: defaultQuota,\n\tlanguage: {\n\t\tcode: 'en',\n\t\tname: t('settings', 'Default language'),\n\t},\n})\n\nexport default {\n\tname: 'UserList',\n\n\tcomponents: {\n\t\tFragment,\n\t\tNcEmptyContent,\n\t\tNcIconSvgWrapper,\n\t\tNcLoadingIcon,\n\t\tNewUserModal,\n\t\tUserListFooter,\n\t\tUserListHeader,\n\t\tVirtualList,\n\t},\n\n\tprops: {\n\t\tselectedGroup: {\n\t\t\ttype: String,\n\t\t\tdefault: null,\n\t\t},\n\t\texternalActions: {\n\t\t\ttype: Array,\n\t\t\tdefault: () => [],\n\t\t},\n\t},\n\n\tsetup() {\n\t\t// non reactive properties\n\t\treturn {\n\t\t\tmdiAccountGroup,\n\t\t\trowHeight: 55,\n\n\t\t\tUserRow,\n\t\t}\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\tloading: {\n\t\t\t\tall: false,\n\t\t\t\tgroups: false,\n\t\t\t\tusers: false,\n\t\t\t},\n\t\t\tnewUser: { ...newUser },\n\t\t\tisInitialLoad: true,\n\t\t\tsearchQuery: '',\n\t\t}\n\t},\n\n\tcomputed: {\n\t\tshowConfig() {\n\t\t\treturn this.$store.getters.getShowConfig\n\t\t},\n\n\t\tsettings() {\n\t\t\treturn this.$store.getters.getServerData\n\t\t},\n\n\t\tstyle() {\n\t\t\treturn {\n\t\t\t\t'--row-height': `${this.rowHeight}px`,\n\t\t\t}\n\t\t},\n\n\t\thasObfuscated() {\n\t\t\treturn this.filteredUsers.some(user => isObfuscated(user))\n\t\t},\n\n\t\tusers() {\n\t\t\treturn this.$store.getters.getUsers\n\t\t},\n\n\t\tfilteredUsers() {\n\t\t\tif (this.selectedGroup === 'disabled') {\n\t\t\t\treturn this.users.filter(user => user.enabled === false)\n\t\t\t}\n\t\t\tif (!this.settings.isAdmin) {\n\t\t\t\t// we don't want subadmins to edit themselves\n\t\t\t\treturn this.users.filter(user => user.enabled !== false)\n\t\t\t}\n\t\t\treturn this.users.filter(user => user.enabled !== false)\n\t\t},\n\n\t\tgroups() {\n\t\t\t// data provided php side + remove the disabled group\n\t\t\treturn this.$store.getters.getGroups\n\t\t\t\t.filter(group => group.id !== 'disabled')\n\t\t\t\t.sort((a, b) => a.name.localeCompare(b.name))\n\t\t},\n\n\t\tsubAdminsGroups() {\n\t\t\t// data provided php side\n\t\t\treturn this.$store.getters.getSubadminGroups\n\t\t},\n\n\t\tquotaOptions() {\n\t\t\t// convert the preset array into objects\n\t\t\tconst quotaPreset = this.settings.quotaPreset.reduce((acc, cur) => acc.concat({\n\t\t\t\tid: cur,\n\t\t\t\tlabel: cur,\n\t\t\t}), [])\n\t\t\t// add default presets\n\t\t\tif (this.settings.allowUnlimitedQuota) {\n\t\t\t\tquotaPreset.unshift(unlimitedQuota)\n\t\t\t}\n\t\t\tquotaPreset.unshift(defaultQuota)\n\t\t\treturn quotaPreset\n\t\t},\n\n\t\tusersOffset() {\n\t\t\treturn this.$store.getters.getUsersOffset\n\t\t},\n\n\t\tusersLimit() {\n\t\t\treturn this.$store.getters.getUsersLimit\n\t\t},\n\n\t\tdisabledUsersOffset() {\n\t\t\treturn this.$store.getters.getDisabledUsersOffset\n\t\t},\n\n\t\tdisabledUsersLimit() {\n\t\t\treturn this.$store.getters.getDisabledUsersLimit\n\t\t},\n\n\t\tusersCount() {\n\t\t\treturn this.users.length\n\t\t},\n\n\t\t/* LANGUAGES */\n\t\tlanguages() {\n\t\t\treturn [\n\t\t\t\t{\n\t\t\t\t\tlabel: t('settings', 'Common languages'),\n\t\t\t\t\tlanguages: this.settings.languages.commonLanguages,\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tlabel: t('settings', 'Other languages'),\n\t\t\t\t\tlanguages: this.settings.languages.otherLanguages,\n\t\t\t\t},\n\t\t\t]\n\t\t},\n\t},\n\n\twatch: {\n\t\t// watch url change and group select\n\t\tasync selectedGroup(val) {\n\t\t\tthis.isInitialLoad = true\n\t\t\t// if selected is the disabled group but it's empty\n\t\t\tawait this.redirectIfDisabled()\n\t\t\tthis.$store.commit('resetUsers')\n\t\t\tawait this.loadUsers()\n\t\t\tthis.setNewUserDefaultGroup(val)\n\t\t},\n\n\t\tfilteredUsers(filteredUsers) {\n\t\t\tlogger.debug(`${filteredUsers.length} filtered user(s)`)\n\t\t},\n\t},\n\n\tasync created() {\n\t\tawait this.loadUsers()\n\t},\n\n\tasync mounted() {\n\t\tif (!this.settings.canChangePassword) {\n\t\t\tOC.Notification.showTemporary(t('settings', 'Password change is disabled because the master key is disabled'))\n\t\t}\n\n\t\t/**\n\t\t * Reset and init new user form\n\t\t */\n\t\tthis.resetForm()\n\n\t\t/**\n\t\t * Register search\n\t\t */\n\t\tsubscribe('nextcloud:unified-search.search', this.search)\n\t\tsubscribe('nextcloud:unified-search.reset', this.resetSearch)\n\n\t\t/**\n\t\t * If disabled group but empty, redirect\n\t\t */\n\t\tawait this.redirectIfDisabled()\n\t},\n\n\tbeforeDestroy() {\n\t\tunsubscribe('nextcloud:unified-search.search', this.search)\n\t\tunsubscribe('nextcloud:unified-search.reset', this.resetSearch)\n\t},\n\n\tmethods: {\n\t\tasync handleScrollEnd() {\n\t\t\tawait this.loadUsers()\n\t\t},\n\n\t\tasync loadUsers() {\n\t\t\tthis.loading.users = true\n\t\t\ttry {\n\t\t\t\tif (this.selectedGroup === 'disabled') {\n\t\t\t\t\tawait this.$store.dispatch('getDisabledUsers', {\n\t\t\t\t\t\toffset: this.disabledUsersOffset,\n\t\t\t\t\t\tlimit: this.disabledUsersLimit,\n\t\t\t\t\t})\n\t\t\t\t} else {\n\t\t\t\t\tawait this.$store.dispatch('getUsers', {\n\t\t\t\t\t\toffset: this.usersOffset,\n\t\t\t\t\t\tlimit: this.usersLimit,\n\t\t\t\t\t\tgroup: this.selectedGroup,\n\t\t\t\t\t\tsearch: this.searchQuery,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t\tlogger.debug(`${this.users.length} total user(s) loaded`)\n\t\t\t} catch (error) {\n\t\t\t\tlogger.error('Failed to load accounts', { error })\n\t\t\t\tshowError('Failed to load accounts')\n\t\t\t}\n\t\t\tthis.loading.users = false\n\t\t\tthis.isInitialLoad = false\n\t\t},\n\n\t\tcloseModal() {\n\t\t\tthis.$store.commit('setShowConfig', {\n\t\t\t\tkey: 'showNewUserForm',\n\t\t\t\tvalue: false,\n\t\t\t})\n\t\t},\n\n\t\tasync search({ query }) {\n\t\t\tthis.searchQuery = query\n\t\t\tthis.$store.commit('resetUsers')\n\t\t\tawait this.loadUsers()\n\t\t},\n\n\t\tresetSearch() {\n\t\t\tthis.search({ query: '' })\n\t\t},\n\n\t\tresetForm() {\n\t\t\t// revert form to original state\n\t\t\tthis.newUser = Object.assign({}, newUser)\n\n\t\t\t/**\n\t\t\t * Init default language from server data. The use of this.settings\n\t\t\t * requires a computed variable, which break the v-model binding of the form,\n\t\t\t * this is a much easier solution than getter and setter on a computed var\n\t\t\t */\n\t\t\tif (this.settings.defaultLanguage) {\n\t\t\t\tVue.set(this.newUser.language, 'code', this.settings.defaultLanguage)\n\t\t\t}\n\n\t\t\t/**\n\t\t\t * In case the user directly loaded the user list within a group\n\t\t\t * the watch won't be triggered. We need to initialize it.\n\t\t\t */\n\t\t\tthis.setNewUserDefaultGroup(this.selectedGroup)\n\n\t\t\tthis.loading.all = false\n\t\t},\n\n\t\tsetNewUserDefaultGroup(value) {\n\t\t\tif (value && value.length > 0) {\n\t\t\t\t// setting new account default group to the current selected one\n\t\t\t\tconst currentGroup = this.groups.find(group => group.id === value)\n\t\t\t\tif (currentGroup) {\n\t\t\t\t\tthis.newUser.groups = [currentGroup]\n\t\t\t\t\treturn\n\t\t\t\t}\n\t\t\t}\n\t\t\t// fallback, empty selected group\n\t\t\tthis.newUser.groups = []\n\t\t},\n\n\t\t/**\n\t\t * If the selected group is the disabled group but the count is 0\n\t\t * redirect to the all users page.\n\t\t * we only check for 0 because we don't have the count on ldap\n\t\t * and we therefore set the usercount to -1 in this specific case\n\t\t */\n\t\tasync redirectIfDisabled() {\n\t\t\tconst allGroups = this.$store.getters.getGroups\n\t\t\tif (this.selectedGroup === 'disabled'\n\t\t\t\t\t\t&& allGroups.findIndex(group => group.id === 'disabled' && group.usercount === 0) > -1) {\n\t\t\t\t// disabled group is empty, redirection to all users\n\t\t\t\tthis.$router.push({ name: 'users' })\n\t\t\t\tawait this.loadUsers()\n\t\t\t}\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\n@import './Users/shared/styles.scss';\n\n.empty {\n\t:deep {\n\t\t.icon-vue {\n\t\t\twidth: 64px;\n\t\t\theight: 64px;\n\n\t\t\tsvg {\n\t\t\t\tmax-width: 64px;\n\t\t\t\tmax-height: 64px;\n\t\t\t}\n\t\t}\n\t}\n}\n</style>\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./UserList.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./UserList.vue?vue&type=script&lang=js\"","\n import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./UserList.vue?vue&type=style&index=0&id=a6e11582&prod&lang=scss&scoped=true\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./UserList.vue?vue&type=style&index=0&id=a6e11582&prod&lang=scss&scoped=true\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./UserList.vue?vue&type=template&id=a6e11582&scoped=true\"\nimport script from \"./UserList.vue?vue&type=script&lang=js\"\nexport * from \"./UserList.vue?vue&type=script&lang=js\"\nimport style0 from \"./UserList.vue?vue&type=style&index=0&id=a6e11582&prod&lang=scss&scoped=true\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"a6e11582\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('Fragment',[(_vm.showConfig.showNewUserForm)?_c('NewUserModal',{attrs:{\"loading\":_vm.loading,\"new-user\":_vm.newUser,\"quota-options\":_vm.quotaOptions},on:{\"reset\":_vm.resetForm,\"close\":_vm.closeModal}}):_vm._e(),_vm._v(\" \"),(_vm.filteredUsers.length === 0)?_c('NcEmptyContent',{staticClass:\"empty\",attrs:{\"name\":_vm.isInitialLoad && _vm.loading.users ? null : _vm.t('settings', 'No accounts')},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [(_vm.isInitialLoad && _vm.loading.users)?_c('NcLoadingIcon',{attrs:{\"name\":_vm.t('settings', 'Loading accounts …'),\"size\":64}}):_c('NcIconSvgWrapper',{attrs:{\"path\":_vm.mdiAccountGroup,\"size\":64}})]},proxy:true}],null,false,226056511)}):_c('VirtualList',{style:(_vm.style),attrs:{\"data-component\":_vm.UserRow,\"data-sources\":_vm.filteredUsers,\"data-key\":\"id\",\"data-cy-user-list\":\"\",\"item-height\":_vm.rowHeight,\"extra-props\":{\n\t\t\tusers: _vm.users,\n\t\t\tsettings: _vm.settings,\n\t\t\thasObfuscated: _vm.hasObfuscated,\n\t\t\tgroups: _vm.groups,\n\t\t\tsubAdminsGroups: _vm.subAdminsGroups,\n\t\t\tquotaOptions: _vm.quotaOptions,\n\t\t\tlanguages: _vm.languages,\n\t\t\texternalActions: _vm.externalActions,\n\t\t}},on:{\"scroll-end\":_vm.handleScrollEnd},scopedSlots:_vm._u([{key:\"before\",fn:function(){return [_c('caption',{staticClass:\"hidden-visually\"},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('settings', 'List of accounts. This list is not fully rendered for performance reasons. The accounts will be rendered as you navigate through the list.'))+\"\\n\\t\\t\\t\")])]},proxy:true},{key:\"header\",fn:function(){return [_c('UserListHeader',{attrs:{\"has-obfuscated\":_vm.hasObfuscated}})]},proxy:true},{key:\"footer\",fn:function(){return [_c('UserListFooter',{attrs:{\"loading\":_vm.loading.users,\"filtered-users\":_vm.filteredUsers}})]},proxy:true}])})],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./UserManagement.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./UserManagement.vue?vue&type=script&lang=js\"","<!--\n - @copyright Copyright (c) 2018 John Molakvoæ <skjnldsv@protonmail.com>\n -\n - @author John Molakvoæ <skjnldsv@protonmail.com>\n -\n - @license GNU AGPL version 3 or any later version\n -\n - This program is free software: you can redistribute it and/or modify\n - it under the terms of the GNU Affero General Public License as\n - published by the Free Software Foundation, either version 3 of the\n - License, or (at your option) any later version.\n -\n - This program is distributed in the hope that it will be useful,\n - but WITHOUT ANY WARRANTY; without even the implied warranty of\n - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n - GNU Affero General Public License for more details.\n -\n - You should have received a copy of the GNU Affero General Public License\n - along with this program. If not, see <http://www.gnu.org/licenses/>.\n -\n -->\n\n<template>\n\t<NcAppContent :page-heading=\"pageHeading\">\n\t\t<UserList :selected-group=\"selectedGroupDecoded\"\n\t\t\t:external-actions=\"externalActions\" />\n\t</NcAppContent>\n</template>\n\n<script>\nimport { translate as t } from '@nextcloud/l10n'\nimport { defineComponent } from 'vue'\n\nimport NcAppContent from '@nextcloud/vue/dist/Components/NcAppContent.js'\nimport UserList from '../components/UserList.vue'\n\nexport default defineComponent({\n\tname: 'UserManagement',\n\n\tcomponents: {\n\t\tNcAppContent,\n\t\tUserList,\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\t// temporary value used for multiselect change\n\t\t\texternalActions: [],\n\t\t}\n\t},\n\n\tcomputed: {\n\t\tpageHeading() {\n\t\t\tif (this.selectedGroupDecoded === null) {\n\t\t\t\treturn t('settings', 'Active accounts')\n\t\t\t}\n\t\t\tconst matchHeading = {\n\t\t\t\tadmin: t('settings', 'Admins'),\n\t\t\t\tdisabled: t('settings', 'Disabled accounts'),\n\t\t\t}\n\t\t\treturn matchHeading[this.selectedGroupDecoded] ?? t('settings', 'Account group: {group}', { group: this.selectedGroupDecoded })\n\t\t},\n\n\t\tselectedGroup() {\n\t\t\treturn this.$route.params.selectedGroup\n\t\t},\n\n\t\tselectedGroupDecoded() {\n\t\t\treturn this.selectedGroup ? decodeURIComponent(this.selectedGroup) : null\n\t\t},\n\t},\n\n\tbeforeMount() {\n\t\tthis.$store.commit('initGroups', {\n\t\t\tgroups: this.$store.getters.getServerData.groups,\n\t\t\torderBy: this.$store.getters.getServerData.sortGroups,\n\t\t\tuserCount: this.$store.getters.getServerData.userCount,\n\t\t})\n\t\tthis.$store.dispatch('getPasswordPolicyMinLength')\n\t},\n\n\tcreated() {\n\t\t// init the OCA.Settings.UserList object\n\t\twindow.OCA = window.OCA ?? {}\n\t\twindow.OCA.Settings = window.OCA.Settings ?? {}\n\t\twindow.OCA.Settings.UserList = window.OCA.Settings.UserList ?? {}\n\t\t// and add the registerAction method\n\t\twindow.OCA.Settings.UserList.registerAction = this.registerAction\n\t},\n\n\tmethods: {\n\t\tt,\n\n\t\t/**\n\t\t * Register a new action for the user menu\n\t\t *\n\t\t * @param {string} icon the icon class\n\t\t * @param {string} text the text to display\n\t\t * @param {Function} action the function to run\n\t\t * @return {Array}\n\t\t */\n\t\tregisterAction(icon, text, action) {\n\t\t\tthis.externalActions.push({\n\t\t\t\ticon,\n\t\t\t\ttext,\n\t\t\t\taction,\n\t\t\t})\n\t\t\treturn this.externalActions\n\t\t},\n\t},\n})\n</script>\n\n<style lang=\"scss\" scoped>\n.app-content {\n\t// Virtual list needs to be full height and is scrollable\n\tdisplay: flex;\n\toverflow: hidden;\n\tflex-direction: column;\n\tmax-height: 100%;\n}\n</style>\n","\n import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./UserManagement.vue?vue&type=style&index=0&id=fc8857fc&prod&lang=scss&scoped=true\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./UserManagement.vue?vue&type=style&index=0&id=fc8857fc&prod&lang=scss&scoped=true\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./UserManagement.vue?vue&type=template&id=fc8857fc&scoped=true\"\nimport script from \"./UserManagement.vue?vue&type=script&lang=js\"\nexport * from \"./UserManagement.vue?vue&type=script&lang=js\"\nimport style0 from \"./UserManagement.vue?vue&type=style&index=0&id=fc8857fc&prod&lang=scss&scoped=true\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"fc8857fc\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c(_setup.NcAppNavigation,{attrs:{\"aria-label\":_setup.t('settings', 'Account management')},scopedSlots:_vm._u([{key:\"footer\",fn:function(){return [_c(_setup.NcButton,{staticClass:\"account-management__settings-toggle\",attrs:{\"type\":\"tertiary\"},on:{\"click\":function($event){_setup.isDialogOpen = true}},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c(_setup.NcIconSvgWrapper,{attrs:{\"path\":_setup.mdiCog}})]},proxy:true}])},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_setup.t('settings', 'Account management settings'))+\"\\n\\t\\t\")]),_vm._v(\" \"),_c(_setup.UserSettingsDialog,{attrs:{\"open\":_setup.isDialogOpen},on:{\"update:open\":function($event){_setup.isDialogOpen=$event}}})]},proxy:true}])},[_c(_setup.NcAppNavigationNew,{attrs:{\"button-id\":\"new-user-button\",\"text\":_setup.t('settings','New account')},on:{\"click\":_setup.showNewUserMenu,\"keyup\":[function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"enter\",13,$event.key,\"Enter\"))return null;return _setup.showNewUserMenu.apply(null, arguments)},function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"space\",32,$event.key,[\" \",\"Spacebar\"]))return null;return _setup.showNewUserMenu.apply(null, arguments)}]},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c(_setup.NcIconSvgWrapper,{attrs:{\"path\":_setup.mdiPlus}})]},proxy:true}])}),_vm._v(\" \"),_c(_setup.NcAppNavigationList,{staticClass:\"account-management__system-list\",attrs:{\"data-cy-users-settings-navigation-groups\":\"system\"}},[_c(_setup.NcAppNavigationItem,{attrs:{\"id\":\"everyone\",\"exact\":true,\"name\":_setup.t('settings', 'Active accounts'),\"to\":{ name: 'users' }},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c(_setup.NcIconSvgWrapper,{attrs:{\"path\":_setup.mdiAccount}})]},proxy:true},{key:\"counter\",fn:function(){return [(_setup.userCount)?_c(_setup.NcCounterBubble,{attrs:{\"type\":!_setup.selectedGroupDecoded ? 'highlighted' : undefined}},[_vm._v(\"\\n\\t\\t\\t\\t\\t\"+_vm._s(_setup.userCount)+\"\\n\\t\\t\\t\\t\")]):_vm._e()]},proxy:true}])}),_vm._v(\" \"),(_setup.isAdmin)?_c(_setup.NcAppNavigationItem,{attrs:{\"id\":\"admin\",\"exact\":true,\"name\":_setup.t('settings', 'Admins'),\"to\":{ name: 'group', params: { selectedGroup: 'admin' } }},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c(_setup.NcIconSvgWrapper,{attrs:{\"path\":_setup.mdiShieldAccount}})]},proxy:true},{key:\"counter\",fn:function(){return [(_setup.adminGroup && _setup.adminGroup.count > 0)?_c(_setup.NcCounterBubble,{attrs:{\"type\":_setup.selectedGroupDecoded === 'admin' ? 'highlighted' : undefined}},[_vm._v(\"\\n\\t\\t\\t\\t\\t\"+_vm._s(_setup.adminGroup.count)+\"\\n\\t\\t\\t\\t\")]):_vm._e()]},proxy:true}],null,false,2218088905)}):_vm._e(),_vm._v(\" \"),(_setup.disabledGroup && (_setup.disabledGroup.usercount > 0 || _setup.disabledGroup.usercount === -1))?_c(_setup.NcAppNavigationItem,{attrs:{\"id\":\"disabled\",\"exact\":true,\"name\":_setup.t('settings', 'Disabled accounts'),\"to\":{ name: 'group', params: { selectedGroup: 'disabled' } }},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c(_setup.NcIconSvgWrapper,{attrs:{\"path\":_setup.mdiAccountOff}})]},proxy:true},(_setup.disabledGroup.usercount > 0)?{key:\"counter\",fn:function(){return [_c(_setup.NcCounterBubble,{attrs:{\"type\":_setup.selectedGroupDecoded === 'disabled' ? 'highlighted' : undefined}},[_vm._v(\"\\n\\t\\t\\t\\t\\t\"+_vm._s(_setup.disabledGroup.usercount)+\"\\n\\t\\t\\t\\t\")])]},proxy:true}:null],null,true)}):_vm._e()],1),_vm._v(\" \"),_c(_setup.NcAppNavigationCaption,{attrs:{\"name\":_setup.t('settings', 'Groups'),\"disabled\":_setup.loadingAddGroup,\"aria-label\":_setup.loadingAddGroup ? _setup.t('settings', 'Creating group…') : _setup.t('settings', 'Create group'),\"force-menu\":\"\",\"is-heading\":\"\",\"open\":_setup.isAddGroupOpen},on:{\"update:open\":function($event){_setup.isAddGroupOpen=$event}},scopedSlots:_vm._u([{key:\"actionsTriggerIcon\",fn:function(){return [(_setup.loadingAddGroup)?_c(_setup.NcLoadingIcon):_c(_setup.NcIconSvgWrapper,{attrs:{\"path\":_setup.mdiPlus}})]},proxy:true},{key:\"actions\",fn:function(){return [_c(_setup.NcActionText,{scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c('AccountGroup',{attrs:{\"size\":20}})]},proxy:true}])},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_setup.t('settings', 'Create group'))+\"\\n\\t\\t\\t\")]),_vm._v(\" \"),_c(_setup.NcActionInput,{attrs:{\"label\":_setup.t('settings', 'Group name'),\"data-cy-users-settings-new-group-name\":\"\",\"label-outside\":false,\"disabled\":_setup.loadingAddGroup,\"value\":_setup.newGroupName,\"error\":_setup.hasAddGroupError,\"helper-text\":_setup.hasAddGroupError ? _setup.t('settings', 'Please enter a valid group name') : ''},on:{\"update:value\":function($event){_setup.newGroupName=$event},\"submit\":_setup.createGroup}})]},proxy:true}])}),_vm._v(\" \"),_c(_setup.NcAppNavigationList,{staticClass:\"account-management__group-list\",attrs:{\"data-cy-users-settings-navigation-groups\":\"custom\"}},_vm._l((_setup.userGroups),function(group){return _c(_setup.GroupListItem,{key:group.id,attrs:{\"id\":group.id,\"active\":_setup.selectedGroupDecoded === group.id,\"name\":group.title,\"count\":group.count}})}),1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\n - @copyright Copyright (c) 2021 Martin Jänel <spammemore@posteo.de>\n -\n - @author Martin Jänel <spammemore@posteo.de>\n -\n - @license GNU AGPL version 3 or any later version\n -\n - This program is free software: you can redistribute it and/or modify\n - it under the terms of the GNU Affero General Public License as\n - published by the Free Software Foundation, either version 3 of the\n - License, or (at your option) any later version.\n -\n - This program is distributed in the hope that it will be useful,\n - but WITHOUT ANY WARRANTY; without even the implied warranty of\n - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n - GNU Affero General Public License for more details.\n -\n - You should have received a copy of the GNU Affero General Public License\n - along with this program. If not, see <http://www.gnu.org/licenses/>.\n -\n -->\n\n<template>\n\t<Fragment>\n\t\t<NcModal v-if=\"showRemoveGroupModal\"\n\t\t\t@close=\"showRemoveGroupModal = false\">\n\t\t\t<div class=\"modal__content\">\n\t\t\t\t<h2 class=\"modal__header\">\n\t\t\t\t\t{{ t('settings', 'Please confirm the group removal') }}\n\t\t\t\t</h2>\n\t\t\t\t<NcNoteCard type=\"warning\"\n\t\t\t\t\tshow-alert>\n\t\t\t\t\t{{ t('settings', 'You are about to remove the group \"{group}\". The accounts will NOT be deleted.', { group: name }) }}\n\t\t\t\t</NcNoteCard>\n\t\t\t\t<div class=\"modal__button-row\">\n\t\t\t\t\t<NcButton type=\"secondary\"\n\t\t\t\t\t\t@click=\"showRemoveGroupModal = false\">\n\t\t\t\t\t\t{{ t('settings', 'Cancel') }}\n\t\t\t\t\t</NcButton>\n\t\t\t\t\t<NcButton type=\"primary\"\n\t\t\t\t\t\t@click=\"removeGroup\">\n\t\t\t\t\t\t{{ t('settings', 'Confirm') }}\n\t\t\t\t\t</NcButton>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</NcModal>\n\n\t\t<NcAppNavigationItem :key=\"id\"\n\t\t\t:exact=\"true\"\n\t\t\t:name=\"name\"\n\t\t\t:to=\"{ name: 'group', params: { selectedGroup: encodeURIComponent(id) } }\"\n\t\t\t:loading=\"loadingRenameGroup\"\n\t\t\t:menu-open=\"openGroupMenu\"\n\t\t\t@update:menuOpen=\"handleGroupMenuOpen\">\n\t\t\t<template #icon>\n\t\t\t\t<AccountGroup :size=\"20\" />\n\t\t\t</template>\n\t\t\t<template #counter>\n\t\t\t\t<NcCounterBubble v-if=\"count\"\n\t\t\t\t\t:type=\"active ? 'highlighted' : undefined\">\n\t\t\t\t\t{{ count }}\n\t\t\t\t</NcCounterBubble>\n\t\t\t</template>\n\t\t\t<template #actions>\n\t\t\t\t<NcActionInput v-if=\"id !== 'admin' && id !== 'disabled' && settings.isAdmin\"\n\t\t\t\t\tref=\"displayNameInput\"\n\t\t\t\t\t:trailing-button-label=\"t('settings', 'Submit')\"\n\t\t\t\t\ttype=\"text\"\n\t\t\t\t\t:value=\"name\"\n\t\t\t\t\t:label=\" t('settings', 'Rename group')\"\n\t\t\t\t\t@submit=\"renameGroup(id)\">\n\t\t\t\t\t<template #icon>\n\t\t\t\t\t\t<Pencil :size=\"20\" />\n\t\t\t\t\t</template>\n\t\t\t\t</NcActionInput>\n\t\t\t\t<NcActionButton v-if=\"id !== 'admin' && id !== 'disabled' && settings.isAdmin\"\n\t\t\t\t\t@click=\"showRemoveGroupModal = true\">\n\t\t\t\t\t<template #icon>\n\t\t\t\t\t\t<Delete :size=\"20\" />\n\t\t\t\t\t</template>\n\t\t\t\t\t{{ t('settings', 'Remove group') }}\n\t\t\t\t</NcActionButton>\n\t\t\t</template>\n\t\t</NcAppNavigationItem>\n\t</Fragment>\n</template>\n\n<script>\nimport { Fragment } from 'vue-frag'\n\nimport NcActionButton from '@nextcloud/vue/dist/Components/NcActionButton.js'\nimport NcActionInput from '@nextcloud/vue/dist/Components/NcActionInput.js'\nimport NcAppNavigationItem from '@nextcloud/vue/dist/Components/NcAppNavigationItem.js'\nimport NcButton from '@nextcloud/vue/dist/Components/NcButton.js'\nimport NcCounterBubble from '@nextcloud/vue/dist/Components/NcCounterBubble.js'\nimport NcModal from '@nextcloud/vue/dist/Components/NcModal.js'\nimport NcNoteCard from '@nextcloud/vue/dist/Components/NcNoteCard.js'\n\nimport AccountGroup from 'vue-material-design-icons/AccountGroup.vue'\nimport Delete from 'vue-material-design-icons/Delete.vue'\nimport Pencil from 'vue-material-design-icons/Pencil.vue'\n\nimport { showError } from '@nextcloud/dialogs'\n\nexport default {\n\tname: 'GroupListItem',\n\tcomponents: {\n\t\tAccountGroup,\n\t\tDelete,\n\t\tFragment,\n\t\tNcActionButton,\n\t\tNcActionInput,\n\t\tNcAppNavigationItem,\n\t\tNcButton,\n\t\tNcCounterBubble,\n\t\tNcModal,\n\t\tNcNoteCard,\n\t\tPencil,\n\t},\n\tprops: {\n\t\t/**\n\t\t * If this group is currently selected\n\t\t */\n\t\tactive: {\n\t\t\ttype: Boolean,\n\t\t\trequired: true,\n\t\t},\n\t\t/**\n\t\t * Number of members within this group\n\t\t */\n\t\tcount: {\n\t\t\ttype: Number,\n\t\t\tdefault: null,\n\t\t},\n\t\t/**\n\t\t * Identifier of this group\n\t\t */\n\t\tid: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t\t/**\n\t\t * Name of this group\n\t\t */\n\t\tname: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t},\n\tdata() {\n\t\treturn {\n\t\t\tloadingRenameGroup: false,\n\t\t\topenGroupMenu: false,\n\t\t\tshowRemoveGroupModal: false,\n\t\t}\n\t},\n\tcomputed: {\n\t\tsettings() {\n\t\t\treturn this.$store.getters.getServerData\n\t\t},\n\t},\n\tmethods: {\n\t\thandleGroupMenuOpen() {\n\t\t\tthis.openGroupMenu = true\n\t\t},\n\t\tasync renameGroup(gid) {\n\t\t\t// check if group id is valid\n\t\t\tif (gid.trim() === '') {\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\tconst displayName = this.$refs.displayNameInput.$el.querySelector('input[type=\"text\"]').value\n\n\t\t\t// check if group name is valid\n\t\t\tif (displayName.trim() === '') {\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\ttry {\n\t\t\t\tthis.openGroupMenu = false\n\t\t\t\tthis.loadingRenameGroup = true\n\t\t\t\tawait this.$store.dispatch('renameGroup', {\n\t\t\t\t\tgroupid: gid.trim(),\n\t\t\t\t\tdisplayName: displayName.trim(),\n\t\t\t\t})\n\n\t\t\t\tthis.loadingRenameGroup = false\n\t\t\t} catch {\n\t\t\t\tthis.openGroupMenu = true\n\t\t\t\tthis.loadingRenameGroup = false\n\t\t\t}\n\t\t},\n\t\tasync removeGroup() {\n\t\t\ttry {\n\t\t\t\tawait this.$store.dispatch('removeGroup', this.id)\n\t\t\t\tthis.showRemoveGroupModal = false\n\t\t\t} catch (error) {\n\t\t\t\tshowError(t('settings', 'Failed to remove group \"{group}\"', { group: this.name }))\n\t\t\t}\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\n.modal {\n\t&__header {\n\t\tmargin: 0;\n\t}\n\n\t&__content {\n\t\tdisplay: flex;\n\t\tflex-direction: column;\n\t\talign-items: center;\n\t\tpadding: 20px;\n\t\tgap: 4px 0;\n\t}\n\n\t&__button-row {\n\t\tdisplay: flex;\n\t\twidth: 100%;\n\t\tjustify-content: space-between;\n\t}\n}\n</style>\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./GroupListItem.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./GroupListItem.vue?vue&type=script&lang=js\"","\n import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./GroupListItem.vue?vue&type=style&index=0&id=17dd13c0&prod&lang=scss&scoped=true\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./GroupListItem.vue?vue&type=style&index=0&id=17dd13c0&prod&lang=scss&scoped=true\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./GroupListItem.vue?vue&type=template&id=17dd13c0&scoped=true\"\nimport script from \"./GroupListItem.vue?vue&type=script&lang=js\"\nexport * from \"./GroupListItem.vue?vue&type=script&lang=js\"\nimport style0 from \"./GroupListItem.vue?vue&type=style&index=0&id=17dd13c0&prod&lang=scss&scoped=true\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"17dd13c0\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('Fragment',[(_vm.showRemoveGroupModal)?_c('NcModal',{on:{\"close\":function($event){_vm.showRemoveGroupModal = false}}},[_c('div',{staticClass:\"modal__content\"},[_c('h2',{staticClass:\"modal__header\"},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('settings', 'Please confirm the group removal'))+\"\\n\\t\\t\\t\")]),_vm._v(\" \"),_c('NcNoteCard',{attrs:{\"type\":\"warning\",\"show-alert\":\"\"}},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('settings', 'You are about to remove the group \"{group}\". The accounts will NOT be deleted.', { group: _vm.name }))+\"\\n\\t\\t\\t\")]),_vm._v(\" \"),_c('div',{staticClass:\"modal__button-row\"},[_c('NcButton',{attrs:{\"type\":\"secondary\"},on:{\"click\":function($event){_vm.showRemoveGroupModal = false}}},[_vm._v(\"\\n\\t\\t\\t\\t\\t\"+_vm._s(_vm.t('settings', 'Cancel'))+\"\\n\\t\\t\\t\\t\")]),_vm._v(\" \"),_c('NcButton',{attrs:{\"type\":\"primary\"},on:{\"click\":_vm.removeGroup}},[_vm._v(\"\\n\\t\\t\\t\\t\\t\"+_vm._s(_vm.t('settings', 'Confirm'))+\"\\n\\t\\t\\t\\t\")])],1)],1)]):_vm._e(),_vm._v(\" \"),_c('NcAppNavigationItem',{key:_vm.id,attrs:{\"exact\":true,\"name\":_vm.name,\"to\":{ name: 'group', params: { selectedGroup: encodeURIComponent(_vm.id) } },\"loading\":_vm.loadingRenameGroup,\"menu-open\":_vm.openGroupMenu},on:{\"update:menuOpen\":_vm.handleGroupMenuOpen},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c('AccountGroup',{attrs:{\"size\":20}})]},proxy:true},{key:\"counter\",fn:function(){return [(_vm.count)?_c('NcCounterBubble',{attrs:{\"type\":_vm.active ? 'highlighted' : undefined}},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.count)+\"\\n\\t\\t\\t\")]):_vm._e()]},proxy:true},{key:\"actions\",fn:function(){return [(_vm.id !== 'admin' && _vm.id !== 'disabled' && _vm.settings.isAdmin)?_c('NcActionInput',{ref:\"displayNameInput\",attrs:{\"trailing-button-label\":_vm.t('settings', 'Submit'),\"type\":\"text\",\"value\":_vm.name,\"label\":_vm.t('settings', 'Rename group')},on:{\"submit\":function($event){return _vm.renameGroup(_vm.id)}},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c('Pencil',{attrs:{\"size\":20}})]},proxy:true}],null,false,580569589)}):_vm._e(),_vm._v(\" \"),(_vm.id !== 'admin' && _vm.id !== 'disabled' && _vm.settings.isAdmin)?_c('NcActionButton',{on:{\"click\":function($event){_vm.showRemoveGroupModal = true}},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c('Delete',{attrs:{\"size\":20}})]},proxy:true}],null,false,2705356561)},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('settings', 'Remove group'))+\"\\n\\t\\t\\t\")]):_vm._e()]},proxy:true}])})],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('NcAppSettingsDialog',{attrs:{\"open\":_vm.isModalOpen,\"show-navigation\":true,\"name\":_vm.t('settings', 'Account management settings')},on:{\"update:open\":function($event){_vm.isModalOpen=$event}}},[_c('NcAppSettingsSection',{attrs:{\"id\":\"visibility-settings\",\"name\":_vm.t('settings', 'Visibility')}},[_c('NcCheckboxRadioSwitch',{attrs:{\"type\":\"switch\",\"data-test\":\"showLanguages\",\"checked\":_vm.showLanguages},on:{\"update:checked\":function($event){_vm.showLanguages=$event}}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('settings', 'Show language'))+\"\\n\\t\\t\")]),_vm._v(\" \"),_c('NcCheckboxRadioSwitch',{attrs:{\"type\":\"switch\",\"data-test\":\"showUserBackend\",\"checked\":_vm.showUserBackend},on:{\"update:checked\":function($event){_vm.showUserBackend=$event}}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('settings', 'Show account backend'))+\"\\n\\t\\t\")]),_vm._v(\" \"),_c('NcCheckboxRadioSwitch',{attrs:{\"type\":\"switch\",\"data-test\":\"showStoragePath\",\"checked\":_vm.showStoragePath},on:{\"update:checked\":function($event){_vm.showStoragePath=$event}}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('settings', 'Show storage path'))+\"\\n\\t\\t\")]),_vm._v(\" \"),_c('NcCheckboxRadioSwitch',{attrs:{\"type\":\"switch\",\"data-test\":\"showLastLogin\",\"checked\":_vm.showLastLogin},on:{\"update:checked\":function($event){_vm.showLastLogin=$event}}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('settings', 'Show last login'))+\"\\n\\t\\t\")])],1),_vm._v(\" \"),_c('NcAppSettingsSection',{attrs:{\"id\":\"groups-sorting\",\"name\":_vm.t('settings', 'Sorting')}},[(_vm.isGroupSortingEnforced)?_c('NcNoteCard',{attrs:{\"type\":\"warning\"}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('settings', 'The system config enforces sorting the groups by name. This also disables showing the member count.'))+\"\\n\\t\\t\")]):_vm._e(),_vm._v(\" \"),_c('fieldset',[_c('legend',[_vm._v(_vm._s(_vm.t('settings', 'Group list sorting')))]),_vm._v(\" \"),_c('NcCheckboxRadioSwitch',{attrs:{\"type\":\"radio\",\"checked\":_vm.groupSorting,\"data-test\":\"sortGroupsByMemberCount\",\"disabled\":_vm.isGroupSortingEnforced,\"name\":\"group-sorting-mode\",\"value\":\"member-count\"},on:{\"update:checked\":function($event){_vm.groupSorting=$event}}},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('settings', 'By member count'))+\"\\n\\t\\t\\t\")]),_vm._v(\" \"),_c('NcCheckboxRadioSwitch',{attrs:{\"type\":\"radio\",\"checked\":_vm.groupSorting,\"data-test\":\"sortGroupsByName\",\"disabled\":_vm.isGroupSortingEnforced,\"name\":\"group-sorting-mode\",\"value\":\"name\"},on:{\"update:checked\":function($event){_vm.groupSorting=$event}}},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('settings', 'By name'))+\"\\n\\t\\t\\t\")])],1)],1),_vm._v(\" \"),_c('NcAppSettingsSection',{attrs:{\"id\":\"email-settings\",\"name\":_vm.t('settings', 'Send email')}},[_c('NcCheckboxRadioSwitch',{attrs:{\"type\":\"switch\",\"data-test\":\"sendWelcomeMail\",\"checked\":_vm.sendWelcomeMail,\"disabled\":_vm.loadingSendMail},on:{\"update:checked\":function($event){_vm.sendWelcomeMail=$event}}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('settings', 'Send welcome email to new accounts'))+\"\\n\\t\\t\")])],1),_vm._v(\" \"),_c('NcAppSettingsSection',{attrs:{\"id\":\"default-settings\",\"name\":_vm.t('settings', 'Defaults')}},[_c('NcSelect',{attrs:{\"input-label\":_vm.t('settings', 'Default quota'),\"placement\":\"top\",\"taggable\":true,\"options\":_vm.quotaOptions,\"create-option\":_vm.validateQuota,\"placeholder\":_vm.t('settings', 'Select default quota'),\"clearable\":false},on:{\"option:selected\":_vm.setDefaultQuota},model:{value:(_vm.defaultQuota),callback:function ($$v) {_vm.defaultQuota=$$v},expression:\"defaultQuota\"}})],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\n\t- @copyright 2023 Christopher Ng <chrng8@gmail.com>\n\t-\n\t- @author Christopher Ng <chrng8@gmail.com>\n\t-\n\t- @license AGPL-3.0-or-later\n\t-\n\t- This program is free software: you can redistribute it and/or modify\n\t- it under the terms of the GNU Affero General Public License as\n\t- published by the Free Software Foundation, either version 3 of the\n\t- License, or (at your option) any later version.\n\t-\n\t- This program is distributed in the hope that it will be useful,\n\t- but WITHOUT ANY WARRANTY; without even the implied warranty of\n\t- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n\t- GNU Affero General Public License for more details.\n\t-\n\t- You should have received a copy of the GNU Affero General Public License\n\t- along with this program. If not, see <http://www.gnu.org/licenses/>.\n\t-\n-->\n\n<template>\n\t<NcAppSettingsDialog :open.sync=\"isModalOpen\"\n\t\t:show-navigation=\"true\"\n\t\t:name=\"t('settings', 'Account management settings')\">\n\t\t<NcAppSettingsSection id=\"visibility-settings\"\n\t\t\t:name=\"t('settings', 'Visibility')\">\n\t\t\t<NcCheckboxRadioSwitch type=\"switch\"\n\t\t\t\tdata-test=\"showLanguages\"\n\t\t\t\t:checked.sync=\"showLanguages\">\n\t\t\t\t{{ t('settings', 'Show language') }}\n\t\t\t</NcCheckboxRadioSwitch>\n\t\t\t<NcCheckboxRadioSwitch type=\"switch\"\n\t\t\t\tdata-test=\"showUserBackend\"\n\t\t\t\t:checked.sync=\"showUserBackend\">\n\t\t\t\t{{ t('settings', 'Show account backend') }}\n\t\t\t</NcCheckboxRadioSwitch>\n\t\t\t<NcCheckboxRadioSwitch type=\"switch\"\n\t\t\t\tdata-test=\"showStoragePath\"\n\t\t\t\t:checked.sync=\"showStoragePath\">\n\t\t\t\t{{ t('settings', 'Show storage path') }}\n\t\t\t</NcCheckboxRadioSwitch>\n\t\t\t<NcCheckboxRadioSwitch type=\"switch\"\n\t\t\t\tdata-test=\"showLastLogin\"\n\t\t\t\t:checked.sync=\"showLastLogin\">\n\t\t\t\t{{ t('settings', 'Show last login') }}\n\t\t\t</NcCheckboxRadioSwitch>\n\t\t</NcAppSettingsSection>\n\n\t\t<NcAppSettingsSection id=\"groups-sorting\"\n\t\t\t:name=\"t('settings', 'Sorting')\">\n\t\t\t<NcNoteCard v-if=\"isGroupSortingEnforced\" type=\"warning\">\n\t\t\t\t{{ t('settings', 'The system config enforces sorting the groups by name. This also disables showing the member count.') }}\n\t\t\t</NcNoteCard>\n\t\t\t<fieldset>\n\t\t\t\t<legend>{{ t('settings', 'Group list sorting') }}</legend>\n\t\t\t\t<NcCheckboxRadioSwitch type=\"radio\"\n\t\t\t\t\t:checked.sync=\"groupSorting\"\n\t\t\t\t\tdata-test=\"sortGroupsByMemberCount\"\n\t\t\t\t\t:disabled=\"isGroupSortingEnforced\"\n\t\t\t\t\tname=\"group-sorting-mode\"\n\t\t\t\t\tvalue=\"member-count\">\n\t\t\t\t\t{{ t('settings', 'By member count') }}\n\t\t\t\t</NcCheckboxRadioSwitch>\n\t\t\t\t<NcCheckboxRadioSwitch type=\"radio\"\n\t\t\t\t\t:checked.sync=\"groupSorting\"\n\t\t\t\t\tdata-test=\"sortGroupsByName\"\n\t\t\t\t\t:disabled=\"isGroupSortingEnforced\"\n\t\t\t\t\tname=\"group-sorting-mode\"\n\t\t\t\t\tvalue=\"name\">\n\t\t\t\t\t{{ t('settings', 'By name') }}\n\t\t\t\t</NcCheckboxRadioSwitch>\n\t\t\t</fieldset>\n\t\t</NcAppSettingsSection>\n\n\t\t<NcAppSettingsSection id=\"email-settings\"\n\t\t\t:name=\"t('settings', 'Send email')\">\n\t\t\t<NcCheckboxRadioSwitch type=\"switch\"\n\t\t\t\tdata-test=\"sendWelcomeMail\"\n\t\t\t\t:checked.sync=\"sendWelcomeMail\"\n\t\t\t\t:disabled=\"loadingSendMail\">\n\t\t\t\t{{ t('settings', 'Send welcome email to new accounts') }}\n\t\t\t</NcCheckboxRadioSwitch>\n\t\t</NcAppSettingsSection>\n\n\t\t<NcAppSettingsSection id=\"default-settings\"\n\t\t\t:name=\"t('settings', 'Defaults')\">\n\t\t\t<NcSelect v-model=\"defaultQuota\"\n\t\t\t\t:input-label=\"t('settings', 'Default quota')\"\n\t\t\t\tplacement=\"top\"\n\t\t\t\t:taggable=\"true\"\n\t\t\t\t:options=\"quotaOptions\"\n\t\t\t\t:create-option=\"validateQuota\"\n\t\t\t\t:placeholder=\"t('settings', 'Select default quota')\"\n\t\t\t\t:clearable=\"false\"\n\t\t\t\t@option:selected=\"setDefaultQuota\" />\n\t\t</NcAppSettingsSection>\n\t</NcAppSettingsDialog>\n</template>\n\n<script>\nimport { formatFileSize, parseFileSize } from '@nextcloud/files'\nimport { generateUrl } from '@nextcloud/router'\n\nimport axios from '@nextcloud/axios'\nimport NcAppSettingsDialog from '@nextcloud/vue/dist/Components/NcAppSettingsDialog.js'\nimport NcAppSettingsSection from '@nextcloud/vue/dist/Components/NcAppSettingsSection.js'\nimport NcCheckboxRadioSwitch from '@nextcloud/vue/dist/Components/NcCheckboxRadioSwitch.js'\nimport NcNoteCard from '@nextcloud/vue/dist/Components/NcNoteCard.js'\nimport NcSelect from '@nextcloud/vue/dist/Components/NcSelect.js'\n\nimport { GroupSorting } from '../../constants/GroupManagement.ts'\nimport { unlimitedQuota } from '../../utils/userUtils.ts'\n\nexport default {\n\tname: 'UserSettingsDialog',\n\n\tcomponents: {\n\t\tNcAppSettingsDialog,\n\t\tNcAppSettingsSection,\n\t\tNcCheckboxRadioSwitch,\n\t\tNcNoteCard,\n\t\tNcSelect,\n\t},\n\n\tprops: {\n\t\topen: {\n\t\t\ttype: Boolean,\n\t\t\trequired: true,\n\t\t},\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\tselectedQuota: false,\n\t\t\tloadingSendMail: false,\n\t\t}\n\t},\n\n\tcomputed: {\n\t\tgroupSorting: {\n\t\t\tget() {\n\t\t\t\treturn this.$store.getters.getGroupSorting === GroupSorting.GroupName ? 'name' : 'member-count'\n\t\t\t},\n\t\t\tset(sorting) {\n\t\t\t\tthis.$store.commit('setGroupSorting', sorting === 'name' ? GroupSorting.GroupName : GroupSorting.UserCount)\n\t\t\t},\n\t\t},\n\n\t\t/**\n\t\t * Admin has configured `sort_groups_by_name` in the system config\n\t\t */\n\t\tisGroupSortingEnforced() {\n\t\t\treturn this.$store.getters.getServerData.forceSortGroupByName\n\t\t},\n\n\t\tisModalOpen: {\n\t\t\tget() {\n\t\t\t\treturn this.open\n\t\t\t},\n\t\t\tset(open) {\n\t\t\t\tthis.$emit('update:open', open)\n\t\t\t},\n\t\t},\n\n\t\tshowConfig() {\n\t\t\treturn this.$store.getters.getShowConfig\n\t\t},\n\n\t\tsettings() {\n\t\t\treturn this.$store.getters.getServerData\n\t\t},\n\n\t\tshowLanguages: {\n\t\t\tget() {\n\t\t\t\treturn this.showConfig.showLanguages\n\t\t\t},\n\t\t\tset(status) {\n\t\t\t\tthis.setShowConfig('showLanguages', status)\n\t\t\t},\n\t\t},\n\n\t\tshowLastLogin: {\n\t\t\tget() {\n\t\t\t\treturn this.showConfig.showLastLogin\n\t\t\t},\n\t\t\tset(status) {\n\t\t\t\tthis.setShowConfig('showLastLogin', status)\n\t\t\t},\n\t\t},\n\n\t\tshowUserBackend: {\n\t\t\tget() {\n\t\t\t\treturn this.showConfig.showUserBackend\n\t\t\t},\n\t\t\tset(status) {\n\t\t\t\tthis.setShowConfig('showUserBackend', status)\n\t\t\t},\n\t\t},\n\n\t\tshowStoragePath: {\n\t\t\tget() {\n\t\t\t\treturn this.showConfig.showStoragePath\n\t\t\t},\n\t\t\tset(status) {\n\t\t\t\tthis.setShowConfig('showStoragePath', status)\n\t\t\t},\n\t\t},\n\n\t\tquotaOptions() {\n\t\t\t// convert the preset array into objects\n\t\t\tconst quotaPreset = this.settings.quotaPreset.reduce((acc, cur) => acc.concat({ id: cur, label: cur }), [])\n\t\t\t// add default presets\n\t\t\tif (this.settings.allowUnlimitedQuota) {\n\t\t\t\tquotaPreset.unshift(unlimitedQuota)\n\t\t\t}\n\t\t\treturn quotaPreset\n\t\t},\n\n\t\tdefaultQuota: {\n\t\t\tget() {\n\t\t\t\tif (this.selectedQuota !== false) {\n\t\t\t\t\treturn this.selectedQuota\n\t\t\t\t}\n\t\t\t\tif (this.settings.defaultQuota !== unlimitedQuota.id && OC.Util.computerFileSize(this.settings.defaultQuota) >= 0) {\n\t\t\t\t\t// if value is valid, let's map the quotaOptions or return custom quota\n\t\t\t\t\treturn { id: this.settings.defaultQuota, label: this.settings.defaultQuota }\n\t\t\t\t}\n\t\t\t\treturn unlimitedQuota // unlimited\n\t\t\t},\n\t\t\tset(quota) {\n\t\t\t\tthis.selectedQuota = quota\n\t\t\t},\n\t\t},\n\n\t\tsendWelcomeMail: {\n\t\t\tget() {\n\t\t\t\treturn this.settings.newUserSendEmail\n\t\t\t},\n\t\t\tasync set(value) {\n\t\t\t\ttry {\n\t\t\t\t\tthis.loadingSendMail = true\n\t\t\t\t\tthis.$store.commit('setServerData', {\n\t\t\t\t\t\t...this.settings,\n\t\t\t\t\t\tnewUserSendEmail: value,\n\t\t\t\t\t})\n\t\t\t\t\tawait axios.post(generateUrl('/settings/users/preferences/newUser.sendEmail'), { value: value ? 'yes' : 'no' })\n\t\t\t\t} catch (e) {\n\t\t\t\t\tconsole.error('could not update newUser.sendEmail preference: ' + e.message, e)\n\t\t\t\t} finally {\n\t\t\t\t\tthis.loadingSendMail = false\n\t\t\t\t}\n\t\t\t},\n\t\t},\n\t},\n\n\tmethods: {\n\t\tsetShowConfig(key, status) {\n\t\t\tthis.$store.commit('setShowConfig', { key, value: status })\n\t\t},\n\n\t\t/**\n\t\t * Validate quota string to make sure it's a valid human file size\n\t\t *\n\t\t * @param {string | object} quota Quota in readable format '5 GB' or Object {id: '5 GB', label: '5GB'}\n\t\t * @return {object} The validated quota object or unlimited quota if input is invalid\n\t\t */\n\t\tvalidateQuota(quota) {\n\t\t\tif (typeof quota === 'object') {\n\t\t\t\tquota = quota?.id || quota.label\n\t\t\t}\n\t\t\t// only used for new presets sent through @Tag\n\t\t\tconst validQuota = parseFileSize(quota)\n\t\t\tif (validQuota === null) {\n\t\t\t\treturn unlimitedQuota\n\t\t\t} else {\n\t\t\t\t// unify format output\n\t\t\t\tquota = formatFileSize(parseFileSize(quota))\n\t\t\t\treturn { id: quota, label: quota }\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Dispatch default quota set request\n\t\t *\n\t\t * @param {string | object} quota Quota in readable format '5 GB' or Object {id: '5 GB', label: '5GB'}\n\t\t */\n\t\tsetDefaultQuota(quota = 'none') {\n\t\t\t// Make sure correct label is set for unlimited quota\n\t\t\tif (quota === 'none') {\n\t\t\t\tquota = unlimitedQuota\n\t\t\t}\n\t\t\tthis.$store.dispatch('setAppConfig', {\n\t\t\t\tapp: 'files',\n\t\t\t\tkey: 'default_quota',\n\t\t\t\t// ensure we only send the preset id\n\t\t\t\tvalue: quota.id ? quota.id : quota,\n\t\t\t}).then(() => {\n\t\t\t\tif (typeof quota !== 'object') {\n\t\t\t\t\tquota = { id: quota, label: quota }\n\t\t\t\t}\n\t\t\t\tthis.defaultQuota = quota\n\t\t\t})\n\t\t},\n\t},\n}\n</script>\n\n<style scoped lang=\"scss\">\nfieldset {\n\tfont-weight: bold;\n}\n</style>\n","import mod from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./UserSettingsDialog.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./UserSettingsDialog.vue?vue&type=script&lang=js\"","\n import API from \"!../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../../node_modules/css-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/sass-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./UserSettingsDialog.vue?vue&type=style&index=0&id=ab9299ba&prod&scoped=true&lang=scss\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../../node_modules/css-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/sass-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./UserSettingsDialog.vue?vue&type=style&index=0&id=ab9299ba&prod&scoped=true&lang=scss\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./UserSettingsDialog.vue?vue&type=template&id=ab9299ba&scoped=true\"\nimport script from \"./UserSettingsDialog.vue?vue&type=script&lang=js\"\nexport * from \"./UserSettingsDialog.vue?vue&type=script&lang=js\"\nimport style0 from \"./UserSettingsDialog.vue?vue&type=style&index=0&id=ab9299ba&prod&scoped=true&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"ab9299ba\",\n null\n \n)\n\nexport default component.exports","import { computed } from 'vue';\n/**\n * Format a group to a menu entry\n *\n * @param group the group\n */\nfunction formatGroupMenu(group) {\n if (typeof group === 'undefined') {\n return null;\n }\n const item = {\n id: group.id,\n title: group.name,\n usercount: group.usercount,\n count: Math.max(0, group.usercount - group.disabled),\n };\n return item;\n}\nexport const useFormatGroups = (groups) => {\n /**\n * All non-disabled non-admin groups\n */\n const userGroups = computed(() => {\n const formatted = groups.value\n // filter out disabled and admin\n .filter(group => group.id !== 'disabled' && group.id !== 'admin')\n // format group\n .map(group => formatGroupMenu(group))\n // remove invalid\n .filter(group => group !== null);\n return formatted;\n });\n /**\n * The admin group if found otherwise null\n */\n const adminGroup = computed(() => formatGroupMenu(groups.value.find(group => group.id === 'admin')));\n /**\n * The group of disabled users\n */\n const disabledGroup = computed(() => formatGroupMenu(groups.value.find(group => group.id === 'disabled')));\n return { adminGroup, disabledGroup, userGroups };\n};\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-4.use[1]!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./UserManagementNavigation.vue?vue&type=script&setup=true&lang=ts\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-4.use[1]!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./UserManagementNavigation.vue?vue&type=script&setup=true&lang=ts\"","\n import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./UserManagementNavigation.vue?vue&type=style&index=0&id=9b250646&prod&scoped=true&lang=scss\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./UserManagementNavigation.vue?vue&type=style&index=0&id=9b250646&prod&scoped=true&lang=scss\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./UserManagementNavigation.vue?vue&type=template&id=9b250646&scoped=true\"\nimport script from \"./UserManagementNavigation.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./UserManagementNavigation.vue?vue&type=script&setup=true&lang=ts\"\nimport style0 from \"./UserManagementNavigation.vue?vue&type=style&index=0&id=9b250646&prod&scoped=true&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"9b250646\",\n null\n \n)\n\nexport default component.exports"],"names":["unlimitedQuota","id","label","t","defaultQuota","isObfuscated","user","keys","Object","length","at","___CSS_LOADER_EXPORT___","push","module","Vue","directive","vElementVisibility","extend","name","props","dataComponent","type","Function","required","dataKey","String","dataSources","Array","itemHeight","Number","extraProps","default","data","bufferItems","index","headerHeight","tableHeight","resizeObserver","computed","startIndex","Math","max","shownItems","ceil","renderedItems","slice","tbodyStyle","isOverScrolled","lastIndex","hiddenAfterItems","min","paddingTop","concat","paddingBottom","mounted","_this$$refs","_this$$refs2","root","$el","tfoot","$refs","thead","ResizeObserver","debounce","_thead$clientHeight","_root$clientHeight","clientHeight","logger","debug","onScroll","observe","addEventListener","beforeDestroy","disconnect","methods","handleFooterVisibility","visible","$emit","round","scrollTop","options","styleTagTransform","setAttributes","insert","domAPI","insertStyleElement","locals","_vm","this","_c","_self","_setupProxy","staticClass","_t","_v","ref","attrs","style","_l","item","i","_b","key","tag","directives","rawName","value","expression","components","NcButton","NcModal","NcPasswordField","NcSelect","NcTextField","loading","newUser","quotaOptions","possibleManagers","managerLabel","showConfig","$store","getters","getShowConfig","settings","getServerData","usernameLabel","newUserGenerateUserID","minPasswordLength","getPasswordPolicyMinLength","groups","getGroups","filter","group","sort","a","b","localeCompare","subAdminsGroups","getSubadminGroups","canAddGroups","map","assign","$isDisabled","canAdd","languages","commonLanguages","otherLanguages","beforeMount","searchUserManager","createUser","all","_this$$refs$username","_this$$refs$username$","dispatch","userid","password","displayName","email","mailAddress","subadmin","quota","language","code","manager","username","inputField","input","focus","call","error","response","ocs","meta","statuscode","_this$$refs$username2","_this$$refs$username3","_this$$refs$password","_this$$refs$password$","handleGroupInput","Boolean","createGroup","_ref","gid","find","validateQuota","validQuota","OC","Util","computerFileSize","humanFileSize","languageFilterBy","option","search","some","_ref2","toLocaleLowerCase","includes","query","offset","limit","then","users","values","_g","$listeners","on","$event","preventDefault","apply","arguments","_s","$set","newUserRequireEmail","_e","isAdmin","model","callback","$$v","showLanguages","class","NcLoadingIcon","filteredUsers","userCount","n","hasObfuscated","passwordLabel","showUserBackend","showStoragePath","showLastLogin","defineComponent","NcActionButton","NcActions","NcIconSvgWrapper","actions","disabled","edit","editSvg","toggleEdit","scopedSlots","_u","fn","proxy","action","icon","text","event","externalActions","userGroups","userSubAdminsGroups","availableGroups","groupClone","canRemove","usedSpace","used","size","usedQuota","pow","isNaN","userQuota","humanQuota","userLanguage","userLang","lang","userLastLoginTooltip","lastLogin","formatDate","userLastLogin","relativeModifiedDate","NcAvatar","NcProgressBar","UserRowActions","mixins","UserRowMixin","_this$user$email","selectedQuota","rand","random","toString","substring","loadingPossibleManagers","currentManager","editing","subadmins","delete","disable","wipe","editedDisplayName","displayname","editedPassword","editedMail","isLoadingUser","isLoadingField","uniqueId","encodeURIComponent","userGroupsLabels","join","userSubAdminsGroupsLabels","_this$user$quota","_this$user$quota2","formatFileSize","canEdit","getCurrentUser","uid","_this$user$quota3","parseFileSize","userActions","deleteUser","wipeUserDevices","enabled","enableDisableUser","sendWelcomeMail","editedUserQuota","get","set","availableLanguages","initManager","dialogs","confirmDestructive","YES_NO_BUTTONS","confirm","confirmClasses","cancel","result","showSuccess","timeout","finally","filterManagers","managers","userId","searchInitialUserManager","updateUserManager","showError","console","updateDisplayName","updatePassword","updateEmail","addUserGroup","isCreating","removeUserGroup","$route","params","selectedGroup","commit","addUserSubAdmin","removeUserSubAdmin","setUserQuota","undefined","_quota","setUserLanguage","_this$$refs$displayNa","$nextTick","displayNameField","_this$user$email2","_vm$user$displayname","_vm$user$email","_vm$userGroupsLabels","_vm$userSubAdminsGrou","backendCapabilities","setDisplayName","canChangePassword","setPassword","backend","storageLocation","freeze","Fragment","NcEmptyContent","NewUserModal","UserListFooter","UserListHeader","VirtualList","setup","mdiAccountGroup","rowHeight","UserRow","isInitialLoad","searchQuery","getUsers","quotaPreset","reduce","acc","cur","allowUnlimitedQuota","unshift","usersOffset","getUsersOffset","usersLimit","getUsersLimit","disabledUsersOffset","getDisabledUsersOffset","disabledUsersLimit","getDisabledUsersLimit","usersCount","watch","val","redirectIfDisabled","loadUsers","setNewUserDefaultGroup","created","Notification","showTemporary","resetForm","subscribe","resetSearch","unsubscribe","handleScrollEnd","closeModal","defaultLanguage","currentGroup","allGroups","findIndex","usercount","$router","showNewUserForm","NcAppContent","UserList","pageHeading","_matchHeading$this$se","selectedGroupDecoded","admin","decodeURIComponent","orderBy","sortGroups","_window$OCA","_window$OCA$Settings","_window$OCA$Settings$","window","OCA","Settings","registerAction","AccountGroup","Delete","NcActionInput","NcAppNavigationItem","NcCounterBubble","NcNoteCard","Pencil","active","count","loadingRenameGroup","openGroupMenu","showRemoveGroupModal","handleGroupMenuOpen","renameGroup","trim","displayNameInput","querySelector","groupid","removeGroup","NcAppSettingsDialog","NcAppSettingsSection","NcCheckboxRadioSwitch","open","loadingSendMail","groupSorting","getGroupSorting","GroupSorting","GroupName","sorting","UserCount","isGroupSortingEnforced","forceSortGroupByName","isModalOpen","status","setShowConfig","newUserSendEmail","axios","post","generateUrl","e","message","setDefaultQuota","app","formatGroupMenu","title","_defineComponent","__name","__props","route","useRoute","router","useRouter","store","useStore","isDialogOpen","_route$params","getUserCount","getSortedGroups","adminGroup","disabledGroup","useFormatGroups","isAddGroupOpen","loadingAddGroup","hasAddGroupError","newGroupName","__sfc","groupId","showNewUserMenu","mdiAccount","mdiAccountOff","mdiCog","mdiPlus","mdiShieldAccount","NcActionText","NcAppNavigation","NcAppNavigationCaption","NcAppNavigationList","NcAppNavigationNew","GroupListItem","UserSettingsDialog","_setup","indexOf","_k","keyCode"],"sourceRoot":""}
\ No newline at end of file +{"version":3,"file":"settings-users-3239.js?v=a0d2948d88455156ef59","mappings":"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","sources":["webpack:///nextcloud/apps/settings/src/utils/userUtils.ts","webpack:///nextcloud/apps/settings/src/components/GroupListItem.vue?vue&type=style&index=0&id=17dd13c0&prod&lang=scss&scoped=true","webpack:///nextcloud/apps/settings/src/components/UserList.vue?vue&type=style&index=0&id=a6e11582&prod&lang=scss&scoped=true","webpack:///nextcloud/apps/settings/src/components/Users/NewUserModal.vue?vue&type=style&index=0&id=3647f8c2&prod&lang=scss&scoped=true","webpack:///nextcloud/apps/settings/src/components/Users/UserListFooter.vue?vue&type=style&index=0&id=3ec0b16a&prod&lang=scss&scoped=true","webpack:///nextcloud/apps/settings/src/components/Users/UserListHeader.vue?vue&type=style&index=0&id=3ec6e22e&prod&lang=scss&scoped=true","webpack:///nextcloud/apps/settings/src/components/Users/UserRow.vue?vue&type=style&index=0&id=2cdd4510&prod&lang=scss&scoped=true","webpack:///nextcloud/apps/settings/src/components/Users/UserSettingsDialog.vue?vue&type=style&index=0&id=ab9299ba&prod&scoped=true&lang=scss","webpack:///nextcloud/apps/settings/src/components/Users/VirtualList.vue?vue&type=style&index=0&id=a583d0b2&prod&lang=scss&scoped=true","webpack:///nextcloud/apps/settings/src/views/UserManagement.vue?vue&type=style&index=0&id=fc8857fc&prod&lang=scss&scoped=true","webpack:///nextcloud/apps/settings/src/views/UserManagementNavigation.vue?vue&type=style&index=0&id=9b250646&prod&scoped=true&lang=scss","webpack://nextcloud/./apps/settings/src/views/UserManagement.vue?4b28","webpack:///nextcloud/apps/settings/src/components/Users/VirtualList.vue","webpack:///nextcloud/apps/settings/src/components/Users/VirtualList.vue?vue&type=script&lang=ts","webpack://nextcloud/./apps/settings/src/components/Users/VirtualList.vue?0211","webpack://nextcloud/./apps/settings/src/components/Users/VirtualList.vue?1915","webpack://nextcloud/./apps/settings/src/components/Users/NewUserModal.vue?6ea8","webpack:///nextcloud/apps/settings/src/components/Users/NewUserModal.vue","webpack:///nextcloud/apps/settings/src/components/Users/NewUserModal.vue?vue&type=script&lang=js","webpack://nextcloud/./apps/settings/src/components/Users/NewUserModal.vue?0cc8","webpack://nextcloud/./apps/settings/src/components/Users/NewUserModal.vue?0748","webpack:///nextcloud/apps/settings/src/components/Users/UserListFooter.vue?vue&type=script&lang=ts","webpack:///nextcloud/apps/settings/src/components/Users/UserListFooter.vue","webpack://nextcloud/./apps/settings/src/components/Users/UserListFooter.vue?2405","webpack://nextcloud/./apps/settings/src/components/Users/UserListFooter.vue?b843","webpack:///nextcloud/apps/settings/src/components/Users/UserListHeader.vue?vue&type=script&lang=ts","webpack:///nextcloud/apps/settings/src/components/Users/UserListHeader.vue","webpack://nextcloud/./apps/settings/src/components/Users/UserListHeader.vue?77cd","webpack://nextcloud/./apps/settings/src/components/Users/UserListHeader.vue?758a","webpack://nextcloud/./apps/settings/src/components/Users/UserRow.vue?5434","webpack:///nextcloud/apps/settings/src/components/Users/UserRowActions.vue?vue&type=script&lang=ts","webpack:///nextcloud/apps/settings/src/components/Users/UserRowActions.vue","webpack://nextcloud/./apps/settings/src/components/Users/UserRowActions.vue?3c2a","webpack:///nextcloud/apps/settings/src/mixins/UserRowMixin.js","webpack:///nextcloud/apps/settings/src/components/Users/UserRow.vue","webpack:///nextcloud/apps/settings/src/components/Users/UserRow.vue?vue&type=script&lang=js","webpack://nextcloud/./apps/settings/src/components/Users/UserRow.vue?bc19","webpack://nextcloud/./apps/settings/src/components/Users/UserRow.vue?eb6e","webpack:///nextcloud/apps/settings/src/components/UserList.vue","webpack:///nextcloud/apps/settings/src/components/UserList.vue?vue&type=script&lang=js","webpack://nextcloud/./apps/settings/src/components/UserList.vue?7ce1","webpack://nextcloud/./apps/settings/src/components/UserList.vue?02a4","webpack://nextcloud/./apps/settings/src/components/UserList.vue?c96e","webpack:///nextcloud/apps/settings/src/views/UserManagement.vue?vue&type=script&lang=js","webpack:///nextcloud/apps/settings/src/views/UserManagement.vue","webpack://nextcloud/./apps/settings/src/views/UserManagement.vue?fa13","webpack://nextcloud/./apps/settings/src/views/UserManagement.vue?fd5a","webpack:///nextcloud/apps/settings/src/views/UserManagementNavigation.vue","webpack:///nextcloud/apps/settings/src/components/GroupListItem.vue","webpack:///nextcloud/apps/settings/src/components/GroupListItem.vue?vue&type=script&lang=js","webpack://nextcloud/./apps/settings/src/components/GroupListItem.vue?78a4","webpack://nextcloud/./apps/settings/src/components/GroupListItem.vue?7b19","webpack://nextcloud/./apps/settings/src/components/GroupListItem.vue?9f48","webpack://nextcloud/./apps/settings/src/components/Users/UserSettingsDialog.vue?824e","webpack:///nextcloud/apps/settings/src/components/Users/UserSettingsDialog.vue","webpack:///nextcloud/apps/settings/src/components/Users/UserSettingsDialog.vue?vue&type=script&lang=js","webpack://nextcloud/./apps/settings/src/components/Users/UserSettingsDialog.vue?5a70","webpack://nextcloud/./apps/settings/src/components/Users/UserSettingsDialog.vue?f361","webpack:///nextcloud/apps/settings/src/composables/useGroupsNavigation.ts","webpack:///nextcloud/apps/settings/src/views/UserManagementNavigation.vue?vue&type=script&setup=true&lang=ts","webpack://nextcloud/./apps/settings/src/views/UserManagementNavigation.vue?44da","webpack://nextcloud/./apps/settings/src/views/UserManagementNavigation.vue?28b6"],"sourcesContent":["/**\n * @copyright 2023 Christopher Ng <chrng8@gmail.com>\n *\n * @author Christopher Ng <chrng8@gmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\nexport const unlimitedQuota = {\n id: 'none',\n label: t('settings', 'Unlimited'),\n};\nexport const defaultQuota = {\n id: 'default',\n label: t('settings', 'Default quota'),\n};\n/**\n * Return `true` if the logged in user does not have permissions to view the\n * data of `user`\n * @param user\n * @param user.id\n */\nexport const isObfuscated = (user) => {\n const keys = Object.keys(user);\n return keys.length === 1 && keys.at(0) === 'id';\n};\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.modal__header[data-v-17dd13c0]{margin:0}.modal__content[data-v-17dd13c0]{display:flex;flex-direction:column;align-items:center;padding:20px;gap:4px 0}.modal__button-row[data-v-17dd13c0]{display:flex;width:100%;justify-content:space-between}`, \"\",{\"version\":3,\"sources\":[\"webpack://./apps/settings/src/components/GroupListItem.vue\"],\"names\":[],\"mappings\":\"AAEC,gCACC,QAAA,CAGD,iCACC,YAAA,CACA,qBAAA,CACA,kBAAA,CACA,YAAA,CACA,SAAA,CAGD,oCACC,YAAA,CACA,UAAA,CACA,6BAAA\",\"sourcesContent\":[\"\\n.modal {\\n\\t&__header {\\n\\t\\tmargin: 0;\\n\\t}\\n\\n\\t&__content {\\n\\t\\tdisplay: flex;\\n\\t\\tflex-direction: column;\\n\\t\\talign-items: center;\\n\\t\\tpadding: 20px;\\n\\t\\tgap: 4px 0;\\n\\t}\\n\\n\\t&__button-row {\\n\\t\\tdisplay: flex;\\n\\t\\twidth: 100%;\\n\\t\\tjustify-content: space-between;\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.empty[data-v-a6e11582] .icon-vue{width:64px;height:64px}.empty[data-v-a6e11582] .icon-vue svg{max-width:64px;max-height:64px}`, \"\",{\"version\":3,\"sources\":[\"webpack://./apps/settings/src/components/UserList.vue\"],\"names\":[],\"mappings\":\"AAKE,kCACC,UAAA,CACA,WAAA,CAEA,sCACC,cAAA,CACA,eAAA\",\"sourcesContent\":[\"\\n@import './Users/shared/styles.scss';\\n\\n.empty {\\n\\t:deep {\\n\\t\\t.icon-vue {\\n\\t\\t\\twidth: 64px;\\n\\t\\t\\theight: 64px;\\n\\n\\t\\t\\tsvg {\\n\\t\\t\\t\\tmax-width: 64px;\\n\\t\\t\\t\\tmax-height: 64px;\\n\\t\\t\\t}\\n\\t\\t}\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.modal__form[data-v-3647f8c2]{display:flex;flex-direction:column;align-items:center;padding:20px;gap:4px 0}.modal__item[data-v-3647f8c2]{width:100%}.modal__item[data-v-3647f8c2]:not(:focus):not(:active){border-color:var(--color-border-dark)}.modal__hint[data-v-3647f8c2]{color:var(--color-text-maxcontrast);margin-top:8px;align-self:flex-start}.modal__label[data-v-3647f8c2]{display:block;padding:4px 0}.modal__select[data-v-3647f8c2]{width:100%}.modal__submit[data-v-3647f8c2]{margin-top:20px}`, \"\",{\"version\":3,\"sources\":[\"webpack://./apps/settings/src/components/Users/NewUserModal.vue\"],\"names\":[],\"mappings\":\"AAEC,8BACC,YAAA,CACA,qBAAA,CACA,kBAAA,CACA,YAAA,CACA,SAAA,CAGD,8BACC,UAAA,CAEA,uDACC,qCAAA,CAIF,8BACC,mCAAA,CACA,cAAA,CACA,qBAAA,CAGD,+BACC,aAAA,CACA,aAAA,CAGD,gCACC,UAAA,CAGD,gCACC,eAAA\",\"sourcesContent\":[\"\\n.modal {\\n\\t&__form {\\n\\t\\tdisplay: flex;\\n\\t\\tflex-direction: column;\\n\\t\\talign-items: center;\\n\\t\\tpadding: 20px;\\n\\t\\tgap: 4px 0;\\n\\t}\\n\\n\\t&__item {\\n\\t\\twidth: 100%;\\n\\n\\t\\t&:not(:focus):not(:active) {\\n\\t\\t\\tborder-color: var(--color-border-dark);\\n\\t\\t}\\n\\t}\\n\\n\\t&__hint {\\n\\t\\tcolor: var(--color-text-maxcontrast);\\n\\t\\tmargin-top: 8px;\\n\\t\\talign-self: flex-start;\\n\\t}\\n\\n\\t&__label {\\n\\t\\tdisplay: block;\\n\\t\\tpadding: 4px 0;\\n\\t}\\n\\n\\t&__select {\\n\\t\\twidth: 100%;\\n\\t}\\n\\n\\t&__submit {\\n\\t\\tmargin-top: 20px;\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.footer[data-v-3ec0b16a]{position:relative;display:flex;min-width:100%;width:fit-content;height:var(--row-height);background-color:var(--color-main-background)}.footer__cell[data-v-3ec0b16a]{display:flex;flex-direction:column;justify-content:center;padding:0 var(--cell-padding);min-width:var(--cell-width);width:var(--cell-width);color:var(--color-main-text)}.footer__cell strong[data-v-3ec0b16a],.footer__cell span[data-v-3ec0b16a],.footer__cell label[data-v-3ec0b16a]{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;overflow-wrap:anywhere}@media(min-width: 670px){.footer__cell--avatar[data-v-3ec0b16a],.footer__cell--displayname[data-v-3ec0b16a]{position:sticky;z-index:var(--sticky-column-z-index);background-color:var(--color-main-background)}.footer__cell--avatar[data-v-3ec0b16a]{left:0}.footer__cell--displayname[data-v-3ec0b16a]{left:var(--avatar-cell-width);border-right:1px solid var(--color-border)}}.footer__cell--username[data-v-3ec0b16a]{padding-left:calc(var(--default-grid-baseline)*3)}.footer__cell--avatar[data-v-3ec0b16a]{min-width:var(--avatar-cell-width);width:var(--avatar-cell-width);align-items:center;padding:0;user-select:none}.footer__cell--multiline span[data-v-3ec0b16a]{line-height:1.3em;white-space:unset}@supports(-webkit-line-clamp: 2){.footer__cell--multiline span[data-v-3ec0b16a]{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}}.footer__cell--large[data-v-3ec0b16a]{min-width:var(--cell-width-large);width:var(--cell-width-large)}.footer__cell--obfuscated[data-v-3ec0b16a]{min-width:400px;width:400px}.footer__cell--fill[data-v-3ec0b16a]{min-width:var(--cell-width-large);width:100%}.footer__cell--actions[data-v-3ec0b16a]{position:sticky;right:0;z-index:var(--sticky-column-z-index);display:flex;flex-direction:row;align-items:center;min-width:110px;width:110px;background-color:var(--color-main-background);border-left:1px solid var(--color-border)}.footer__subtitle[data-v-3ec0b16a]{color:var(--color-text-maxcontrast)}.footer__cell[data-v-3ec0b16a]{position:sticky;color:var(--color-text-maxcontrast)}.footer__cell--loading[data-v-3ec0b16a]{left:0;min-width:var(--avatar-cell-width);width:var(--avatar-cell-width);align-items:center;padding:0}.footer__cell--count[data-v-3ec0b16a]{left:var(--avatar-cell-width);min-width:var(--cell-width);width:var(--cell-width)}`, \"\",{\"version\":3,\"sources\":[\"webpack://./apps/settings/src/components/Users/UserListFooter.vue\",\"webpack://./apps/settings/src/components/Users/shared/styles.scss\"],\"names\":[],\"mappings\":\"AAGA,yBCoBC,iBAAA,CACA,YAAA,CACA,cAAA,CACA,iBAAA,CACA,wBAAA,CACA,6CAAA,CAIA,+BACC,YAAA,CACA,qBAAA,CACA,sBAAA,CACA,6BAAA,CACA,2BAAA,CACA,uBAAA,CACA,4BAAA,CAEA,+GAGC,eAAA,CACA,sBAAA,CACA,kBAAA,CACA,sBAAA,CAGD,yBACC,mFAEC,eAAA,CACA,oCAAA,CACA,6CAAA,CAGD,uCACC,MAAA,CAGD,4CACC,6BAAA,CACA,0CAAA,CAAA,CAIF,yCACC,iDAAA,CAGD,uCACC,kCAAA,CACA,8BAAA,CACA,kBAAA,CACA,SAAA,CACA,gBAAA,CAIA,+CACC,iBAAA,CACA,iBAAA,CAEA,iCAJD,+CAKE,mBAAA,CACA,oBAAA,CACA,2BAAA,CAAA,CAKH,sCACC,iCAAA,CACA,6BAAA,CAGD,2CACC,eAAA,CACA,WAAA,CAID,qCACC,iCAAA,CACA,UAAA,CAGD,wCACC,eAAA,CACA,OAAA,CACA,oCAAA,CACA,YAAA,CACA,kBAAA,CACA,kBAAA,CACA,eAAA,CACA,WAAA,CACA,6CAAA,CACA,yCAAA,CAIF,mCACC,mCAAA,CDrHD,+BACC,eAAA,CACA,mCAAA,CAEA,wCACC,MAAA,CACA,kCAAA,CACA,8BAAA,CACA,kBAAA,CACA,SAAA,CAGD,sCACC,6BAAA,CACA,2BAAA,CACA,uBAAA\",\"sourcesContent\":[\"\\n@import './shared/styles.scss';\\n\\n.footer {\\n\\t@include row;\\n\\t@include cell;\\n\\n\\t&__cell {\\n\\t\\tposition: sticky;\\n\\t\\tcolor: var(--color-text-maxcontrast);\\n\\n\\t\\t&--loading {\\n\\t\\t\\tleft: 0;\\n\\t\\t\\tmin-width: var(--avatar-cell-width);\\n\\t\\t\\twidth: var(--avatar-cell-width);\\n\\t\\t\\talign-items: center;\\n\\t\\t\\tpadding: 0;\\n\\t\\t}\\n\\n\\t\\t&--count {\\n\\t\\t\\tleft: var(--avatar-cell-width);\\n\\t\\t\\tmin-width: var(--cell-width);\\n\\t\\t\\twidth: var(--cell-width);\\n\\t\\t}\\n\\t}\\n}\\n\",\"/**\\n * @copyright 2023 Christopher Ng <chrng8@gmail.com>\\n *\\n * @author Christopher Ng <chrng8@gmail.com>\\n *\\n * @license AGPL-3.0-or-later\\n *\\n * This program is free software: you can redistribute it and/or modify\\n * it under the terms of the GNU Affero General Public License as\\n * published by the Free Software Foundation, either version 3 of the\\n * License, or (at your option) any later version.\\n *\\n * This program is distributed in the hope that it will be useful,\\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\\n * GNU Affero General Public License for more details.\\n *\\n * You should have received a copy of the GNU Affero General Public License\\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\\n *\\n */\\n\\n@mixin row {\\n\\tposition: relative;\\n\\tdisplay: flex;\\n\\tmin-width: 100%;\\n\\twidth: fit-content;\\n\\theight: var(--row-height);\\n\\tbackground-color: var(--color-main-background);\\n}\\n\\n@mixin cell {\\n\\t&__cell {\\n\\t\\tdisplay: flex;\\n\\t\\tflex-direction: column;\\n\\t\\tjustify-content: center;\\n\\t\\tpadding: 0 var(--cell-padding);\\n\\t\\tmin-width: var(--cell-width);\\n\\t\\twidth: var(--cell-width);\\n\\t\\tcolor: var(--color-main-text);\\n\\n\\t\\tstrong,\\n\\t\\tspan,\\n\\t\\tlabel {\\n\\t\\t\\toverflow: hidden;\\n\\t\\t\\ttext-overflow: ellipsis;\\n\\t\\t\\twhite-space: nowrap;\\n\\t\\t\\toverflow-wrap: anywhere;\\n\\t\\t}\\n\\n\\t\\t@media (min-width: 670px) { /* Show one &--large column between stickied columns */\\n\\t\\t\\t&--avatar,\\n\\t\\t\\t&--displayname {\\n\\t\\t\\t\\tposition: sticky;\\n\\t\\t\\t\\tz-index: var(--sticky-column-z-index);\\n\\t\\t\\t\\tbackground-color: var(--color-main-background);\\n\\t\\t\\t}\\n\\n\\t\\t\\t&--avatar {\\n\\t\\t\\t\\tleft: 0;\\n\\t\\t\\t}\\n\\n\\t\\t\\t&--displayname {\\n\\t\\t\\t\\tleft: var(--avatar-cell-width);\\n\\t\\t\\t\\tborder-right: 1px solid var(--color-border);\\n\\t\\t\\t}\\n\\t\\t}\\n\\n\\t\\t&--username {\\n\\t\\t\\tpadding-left: calc(var(--default-grid-baseline) * 3);\\n\\t\\t}\\n\\n\\t\\t&--avatar {\\n\\t\\t\\tmin-width: var(--avatar-cell-width);\\n\\t\\t\\twidth: var(--avatar-cell-width);\\n\\t\\t\\talign-items: center;\\n\\t\\t\\tpadding: 0;\\n\\t\\t\\tuser-select: none;\\n\\t\\t}\\n\\n\\t\\t&--multiline {\\n\\t\\t\\tspan {\\n\\t\\t\\t\\tline-height: 1.3em;\\n\\t\\t\\t\\twhite-space: unset;\\n\\n\\t\\t\\t\\t@supports (-webkit-line-clamp: 2) {\\n\\t\\t\\t\\t\\tdisplay: -webkit-box;\\n\\t\\t\\t\\t\\t-webkit-line-clamp: 2;\\n\\t\\t\\t\\t\\t-webkit-box-orient: vertical;\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\t\\t}\\n\\n\\t\\t&--large {\\n\\t\\t\\tmin-width: var(--cell-width-large);\\n\\t\\t\\twidth: var(--cell-width-large);\\n\\t\\t}\\n\\n\\t\\t&--obfuscated {\\n\\t\\t\\tmin-width: 400px;\\n\\t\\t\\twidth: 400px;\\n\\t\\t}\\n\\n\\t\\t// Fill remaining row space with cell\\n\\t\\t&--fill {\\n\\t\\t\\tmin-width: var(--cell-width-large);\\n\\t\\t\\twidth: 100%;\\n\\t\\t}\\n\\n\\t\\t&--actions {\\n\\t\\t\\tposition: sticky;\\n\\t\\t\\tright: 0;\\n\\t\\t\\tz-index: var(--sticky-column-z-index);\\n\\t\\t\\tdisplay: flex;\\n\\t\\t\\tflex-direction: row;\\n\\t\\t\\talign-items: center;\\n\\t\\t\\tmin-width: 110px;\\n\\t\\t\\twidth: 110px;\\n\\t\\t\\tbackground-color: var(--color-main-background);\\n\\t\\t\\tborder-left: 1px solid var(--color-border);\\n\\t\\t}\\n\\t}\\n\\n\\t&__subtitle {\\n\\t\\tcolor: var(--color-text-maxcontrast);\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.header[data-v-3ec6e22e]{position:relative;display:flex;min-width:100%;width:fit-content;height:var(--row-height);background-color:var(--color-main-background);border-bottom:1px solid var(--color-border)}.header__cell[data-v-3ec6e22e]{display:flex;flex-direction:column;justify-content:center;padding:0 var(--cell-padding);min-width:var(--cell-width);width:var(--cell-width);color:var(--color-main-text)}.header__cell strong[data-v-3ec6e22e],.header__cell span[data-v-3ec6e22e],.header__cell label[data-v-3ec6e22e]{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;overflow-wrap:anywhere}@media(min-width: 670px){.header__cell--avatar[data-v-3ec6e22e],.header__cell--displayname[data-v-3ec6e22e]{position:sticky;z-index:var(--sticky-column-z-index);background-color:var(--color-main-background)}.header__cell--avatar[data-v-3ec6e22e]{left:0}.header__cell--displayname[data-v-3ec6e22e]{left:var(--avatar-cell-width);border-right:1px solid var(--color-border)}}.header__cell--username[data-v-3ec6e22e]{padding-left:calc(var(--default-grid-baseline)*3)}.header__cell--avatar[data-v-3ec6e22e]{min-width:var(--avatar-cell-width);width:var(--avatar-cell-width);align-items:center;padding:0;user-select:none}.header__cell--multiline span[data-v-3ec6e22e]{line-height:1.3em;white-space:unset}@supports(-webkit-line-clamp: 2){.header__cell--multiline span[data-v-3ec6e22e]{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}}.header__cell--large[data-v-3ec6e22e]{min-width:var(--cell-width-large);width:var(--cell-width-large)}.header__cell--obfuscated[data-v-3ec6e22e]{min-width:400px;width:400px}.header__cell--fill[data-v-3ec6e22e]{min-width:var(--cell-width-large);width:100%}.header__cell--actions[data-v-3ec6e22e]{position:sticky;right:0;z-index:var(--sticky-column-z-index);display:flex;flex-direction:row;align-items:center;min-width:110px;width:110px;background-color:var(--color-main-background);border-left:1px solid var(--color-border)}.header__subtitle[data-v-3ec6e22e]{color:var(--color-text-maxcontrast)}`, \"\",{\"version\":3,\"sources\":[\"webpack://./apps/settings/src/components/Users/UserListHeader.vue\",\"webpack://./apps/settings/src/components/Users/shared/styles.scss\"],\"names\":[],\"mappings\":\"AAGA,yBCoBC,iBAAA,CACA,YAAA,CACA,cAAA,CACA,iBAAA,CACA,wBAAA,CACA,6CAAA,CDrBA,2CAAA,CCyBA,+BACC,YAAA,CACA,qBAAA,CACA,sBAAA,CACA,6BAAA,CACA,2BAAA,CACA,uBAAA,CACA,4BAAA,CAEA,+GAGC,eAAA,CACA,sBAAA,CACA,kBAAA,CACA,sBAAA,CAGD,yBACC,mFAEC,eAAA,CACA,oCAAA,CACA,6CAAA,CAGD,uCACC,MAAA,CAGD,4CACC,6BAAA,CACA,0CAAA,CAAA,CAIF,yCACC,iDAAA,CAGD,uCACC,kCAAA,CACA,8BAAA,CACA,kBAAA,CACA,SAAA,CACA,gBAAA,CAIA,+CACC,iBAAA,CACA,iBAAA,CAEA,iCAJD,+CAKE,mBAAA,CACA,oBAAA,CACA,2BAAA,CAAA,CAKH,sCACC,iCAAA,CACA,6BAAA,CAGD,2CACC,eAAA,CACA,WAAA,CAID,qCACC,iCAAA,CACA,UAAA,CAGD,wCACC,eAAA,CACA,OAAA,CACA,oCAAA,CACA,YAAA,CACA,kBAAA,CACA,kBAAA,CACA,eAAA,CACA,WAAA,CACA,6CAAA,CACA,yCAAA,CAIF,mCACC,mCAAA\",\"sourcesContent\":[\"\\n@import './shared/styles.scss';\\n\\n.header {\\n\\t@include row;\\n\\t@include cell;\\n\\n\\tborder-bottom: 1px solid var(--color-border);\\n}\\n\",\"/**\\n * @copyright 2023 Christopher Ng <chrng8@gmail.com>\\n *\\n * @author Christopher Ng <chrng8@gmail.com>\\n *\\n * @license AGPL-3.0-or-later\\n *\\n * This program is free software: you can redistribute it and/or modify\\n * it under the terms of the GNU Affero General Public License as\\n * published by the Free Software Foundation, either version 3 of the\\n * License, or (at your option) any later version.\\n *\\n * This program is distributed in the hope that it will be useful,\\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\\n * GNU Affero General Public License for more details.\\n *\\n * You should have received a copy of the GNU Affero General Public License\\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\\n *\\n */\\n\\n@mixin row {\\n\\tposition: relative;\\n\\tdisplay: flex;\\n\\tmin-width: 100%;\\n\\twidth: fit-content;\\n\\theight: var(--row-height);\\n\\tbackground-color: var(--color-main-background);\\n}\\n\\n@mixin cell {\\n\\t&__cell {\\n\\t\\tdisplay: flex;\\n\\t\\tflex-direction: column;\\n\\t\\tjustify-content: center;\\n\\t\\tpadding: 0 var(--cell-padding);\\n\\t\\tmin-width: var(--cell-width);\\n\\t\\twidth: var(--cell-width);\\n\\t\\tcolor: var(--color-main-text);\\n\\n\\t\\tstrong,\\n\\t\\tspan,\\n\\t\\tlabel {\\n\\t\\t\\toverflow: hidden;\\n\\t\\t\\ttext-overflow: ellipsis;\\n\\t\\t\\twhite-space: nowrap;\\n\\t\\t\\toverflow-wrap: anywhere;\\n\\t\\t}\\n\\n\\t\\t@media (min-width: 670px) { /* Show one &--large column between stickied columns */\\n\\t\\t\\t&--avatar,\\n\\t\\t\\t&--displayname {\\n\\t\\t\\t\\tposition: sticky;\\n\\t\\t\\t\\tz-index: var(--sticky-column-z-index);\\n\\t\\t\\t\\tbackground-color: var(--color-main-background);\\n\\t\\t\\t}\\n\\n\\t\\t\\t&--avatar {\\n\\t\\t\\t\\tleft: 0;\\n\\t\\t\\t}\\n\\n\\t\\t\\t&--displayname {\\n\\t\\t\\t\\tleft: var(--avatar-cell-width);\\n\\t\\t\\t\\tborder-right: 1px solid var(--color-border);\\n\\t\\t\\t}\\n\\t\\t}\\n\\n\\t\\t&--username {\\n\\t\\t\\tpadding-left: calc(var(--default-grid-baseline) * 3);\\n\\t\\t}\\n\\n\\t\\t&--avatar {\\n\\t\\t\\tmin-width: var(--avatar-cell-width);\\n\\t\\t\\twidth: var(--avatar-cell-width);\\n\\t\\t\\talign-items: center;\\n\\t\\t\\tpadding: 0;\\n\\t\\t\\tuser-select: none;\\n\\t\\t}\\n\\n\\t\\t&--multiline {\\n\\t\\t\\tspan {\\n\\t\\t\\t\\tline-height: 1.3em;\\n\\t\\t\\t\\twhite-space: unset;\\n\\n\\t\\t\\t\\t@supports (-webkit-line-clamp: 2) {\\n\\t\\t\\t\\t\\tdisplay: -webkit-box;\\n\\t\\t\\t\\t\\t-webkit-line-clamp: 2;\\n\\t\\t\\t\\t\\t-webkit-box-orient: vertical;\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\t\\t}\\n\\n\\t\\t&--large {\\n\\t\\t\\tmin-width: var(--cell-width-large);\\n\\t\\t\\twidth: var(--cell-width-large);\\n\\t\\t}\\n\\n\\t\\t&--obfuscated {\\n\\t\\t\\tmin-width: 400px;\\n\\t\\t\\twidth: 400px;\\n\\t\\t}\\n\\n\\t\\t// Fill remaining row space with cell\\n\\t\\t&--fill {\\n\\t\\t\\tmin-width: var(--cell-width-large);\\n\\t\\t\\twidth: 100%;\\n\\t\\t}\\n\\n\\t\\t&--actions {\\n\\t\\t\\tposition: sticky;\\n\\t\\t\\tright: 0;\\n\\t\\t\\tz-index: var(--sticky-column-z-index);\\n\\t\\t\\tdisplay: flex;\\n\\t\\t\\tflex-direction: row;\\n\\t\\t\\talign-items: center;\\n\\t\\t\\tmin-width: 110px;\\n\\t\\t\\twidth: 110px;\\n\\t\\t\\tbackground-color: var(--color-main-background);\\n\\t\\t\\tborder-left: 1px solid var(--color-border);\\n\\t\\t}\\n\\t}\\n\\n\\t&__subtitle {\\n\\t\\tcolor: var(--color-text-maxcontrast);\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.user-list__row[data-v-2cdd4510]{position:relative;display:flex;min-width:100%;width:fit-content;height:var(--row-height);background-color:var(--color-main-background)}.user-list__row[data-v-2cdd4510]:hover{background-color:var(--color-background-hover)}.user-list__row:hover .row__cell[data-v-2cdd4510]:not(.row__cell--actions){background-color:var(--color-background-hover)}.user-list__row .select--fill[data-v-2cdd4510]{max-width:calc(var(--cell-width-large) - 2*var(--cell-padding))}.row__cell[data-v-2cdd4510]{display:flex;flex-direction:column;justify-content:center;padding:0 var(--cell-padding);min-width:var(--cell-width);width:var(--cell-width);color:var(--color-main-text)}.row__cell strong[data-v-2cdd4510],.row__cell span[data-v-2cdd4510],.row__cell label[data-v-2cdd4510]{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;overflow-wrap:anywhere}@media(min-width: 670px){.row__cell--avatar[data-v-2cdd4510],.row__cell--displayname[data-v-2cdd4510]{position:sticky;z-index:var(--sticky-column-z-index);background-color:var(--color-main-background)}.row__cell--avatar[data-v-2cdd4510]{left:0}.row__cell--displayname[data-v-2cdd4510]{left:var(--avatar-cell-width);border-right:1px solid var(--color-border)}}.row__cell--username[data-v-2cdd4510]{padding-left:calc(var(--default-grid-baseline)*3)}.row__cell--avatar[data-v-2cdd4510]{min-width:var(--avatar-cell-width);width:var(--avatar-cell-width);align-items:center;padding:0;user-select:none}.row__cell--multiline span[data-v-2cdd4510]{line-height:1.3em;white-space:unset}@supports(-webkit-line-clamp: 2){.row__cell--multiline span[data-v-2cdd4510]{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}}.row__cell--large[data-v-2cdd4510]{min-width:var(--cell-width-large);width:var(--cell-width-large)}.row__cell--obfuscated[data-v-2cdd4510]{min-width:400px;width:400px}.row__cell--fill[data-v-2cdd4510]{min-width:var(--cell-width-large);width:100%}.row__cell--actions[data-v-2cdd4510]{position:sticky;right:0;z-index:var(--sticky-column-z-index);display:flex;flex-direction:row;align-items:center;min-width:110px;width:110px;background-color:var(--color-main-background);border-left:1px solid var(--color-border)}.row__subtitle[data-v-2cdd4510]{color:var(--color-text-maxcontrast)}.row__cell[data-v-2cdd4510]{border-bottom:1px solid var(--color-border)}.row__cell[data-v-2cdd4510] .v-select.select{min-width:var(--cell-min-width)}.row__progress[data-v-2cdd4510]{margin-top:4px}.row__progress--warn[data-v-2cdd4510]::-moz-progress-bar{background:var(--color-warning) !important}.row__progress--warn[data-v-2cdd4510]::-webkit-progress-value{background:var(--color-warning) !important}`, \"\",{\"version\":3,\"sources\":[\"webpack://./apps/settings/src/components/Users/UserRow.vue\",\"webpack://./apps/settings/src/components/Users/shared/styles.scss\"],\"names\":[],\"mappings\":\"AAGA,iCCoBC,iBAAA,CACA,YAAA,CACA,cAAA,CACA,iBAAA,CACA,wBAAA,CACA,6CAAA,CDtBA,uCACC,8CAAA,CAEA,2EACC,8CAAA,CAKF,+CACC,+DAAA,CCgBD,4BACC,YAAA,CACA,qBAAA,CACA,sBAAA,CACA,6BAAA,CACA,2BAAA,CACA,uBAAA,CACA,4BAAA,CAEA,sGAGC,eAAA,CACA,sBAAA,CACA,kBAAA,CACA,sBAAA,CAGD,yBACC,6EAEC,eAAA,CACA,oCAAA,CACA,6CAAA,CAGD,oCACC,MAAA,CAGD,yCACC,6BAAA,CACA,0CAAA,CAAA,CAIF,sCACC,iDAAA,CAGD,oCACC,kCAAA,CACA,8BAAA,CACA,kBAAA,CACA,SAAA,CACA,gBAAA,CAIA,4CACC,iBAAA,CACA,iBAAA,CAEA,iCAJD,4CAKE,mBAAA,CACA,oBAAA,CACA,2BAAA,CAAA,CAKH,mCACC,iCAAA,CACA,6BAAA,CAGD,wCACC,eAAA,CACA,WAAA,CAID,kCACC,iCAAA,CACA,UAAA,CAGD,qCACC,eAAA,CACA,OAAA,CACA,oCAAA,CACA,YAAA,CACA,kBAAA,CACA,kBAAA,CACA,eAAA,CACA,WAAA,CACA,6CAAA,CACA,yCAAA,CAIF,gCACC,mCAAA,CDrGD,4BACC,2CAAA,CAGC,6CACC,+BAAA,CAKH,gCACC,cAAA,CAGC,yDACC,0CAAA,CAED,8DACC,0CAAA\",\"sourcesContent\":[\"\\n@import './shared/styles.scss';\\n\\n.user-list__row {\\n\\t@include row;\\n\\n\\t&:hover {\\n\\t\\tbackground-color: var(--color-background-hover);\\n\\n\\t\\t.row__cell:not(.row__cell--actions) {\\n\\t\\t\\tbackground-color: var(--color-background-hover);\\n\\t\\t}\\n\\t}\\n\\n\\t// Limit width of select in fill cell\\n\\t.select--fill {\\n\\t\\tmax-width: calc(var(--cell-width-large) - (2 * var(--cell-padding)));\\n\\t}\\n}\\n\\n.row {\\n\\t@include cell;\\n\\n\\t&__cell {\\n\\t\\tborder-bottom: 1px solid var(--color-border);\\n\\n\\t\\t:deep {\\n\\t\\t\\t.v-select.select {\\n\\t\\t\\t\\tmin-width: var(--cell-min-width);\\n\\t\\t\\t}\\n\\t\\t}\\n\\t}\\n\\n\\t&__progress {\\n\\t\\tmargin-top: 4px;\\n\\n\\t\\t&--warn {\\n\\t\\t\\t&::-moz-progress-bar {\\n\\t\\t\\t\\tbackground: var(--color-warning) !important;\\n\\t\\t\\t}\\n\\t\\t\\t&::-webkit-progress-value {\\n\\t\\t\\t\\tbackground: var(--color-warning) !important;\\n\\t\\t\\t}\\n\\t\\t}\\n\\t}\\n}\\n\",\"/**\\n * @copyright 2023 Christopher Ng <chrng8@gmail.com>\\n *\\n * @author Christopher Ng <chrng8@gmail.com>\\n *\\n * @license AGPL-3.0-or-later\\n *\\n * This program is free software: you can redistribute it and/or modify\\n * it under the terms of the GNU Affero General Public License as\\n * published by the Free Software Foundation, either version 3 of the\\n * License, or (at your option) any later version.\\n *\\n * This program is distributed in the hope that it will be useful,\\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\\n * GNU Affero General Public License for more details.\\n *\\n * You should have received a copy of the GNU Affero General Public License\\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\\n *\\n */\\n\\n@mixin row {\\n\\tposition: relative;\\n\\tdisplay: flex;\\n\\tmin-width: 100%;\\n\\twidth: fit-content;\\n\\theight: var(--row-height);\\n\\tbackground-color: var(--color-main-background);\\n}\\n\\n@mixin cell {\\n\\t&__cell {\\n\\t\\tdisplay: flex;\\n\\t\\tflex-direction: column;\\n\\t\\tjustify-content: center;\\n\\t\\tpadding: 0 var(--cell-padding);\\n\\t\\tmin-width: var(--cell-width);\\n\\t\\twidth: var(--cell-width);\\n\\t\\tcolor: var(--color-main-text);\\n\\n\\t\\tstrong,\\n\\t\\tspan,\\n\\t\\tlabel {\\n\\t\\t\\toverflow: hidden;\\n\\t\\t\\ttext-overflow: ellipsis;\\n\\t\\t\\twhite-space: nowrap;\\n\\t\\t\\toverflow-wrap: anywhere;\\n\\t\\t}\\n\\n\\t\\t@media (min-width: 670px) { /* Show one &--large column between stickied columns */\\n\\t\\t\\t&--avatar,\\n\\t\\t\\t&--displayname {\\n\\t\\t\\t\\tposition: sticky;\\n\\t\\t\\t\\tz-index: var(--sticky-column-z-index);\\n\\t\\t\\t\\tbackground-color: var(--color-main-background);\\n\\t\\t\\t}\\n\\n\\t\\t\\t&--avatar {\\n\\t\\t\\t\\tleft: 0;\\n\\t\\t\\t}\\n\\n\\t\\t\\t&--displayname {\\n\\t\\t\\t\\tleft: var(--avatar-cell-width);\\n\\t\\t\\t\\tborder-right: 1px solid var(--color-border);\\n\\t\\t\\t}\\n\\t\\t}\\n\\n\\t\\t&--username {\\n\\t\\t\\tpadding-left: calc(var(--default-grid-baseline) * 3);\\n\\t\\t}\\n\\n\\t\\t&--avatar {\\n\\t\\t\\tmin-width: var(--avatar-cell-width);\\n\\t\\t\\twidth: var(--avatar-cell-width);\\n\\t\\t\\talign-items: center;\\n\\t\\t\\tpadding: 0;\\n\\t\\t\\tuser-select: none;\\n\\t\\t}\\n\\n\\t\\t&--multiline {\\n\\t\\t\\tspan {\\n\\t\\t\\t\\tline-height: 1.3em;\\n\\t\\t\\t\\twhite-space: unset;\\n\\n\\t\\t\\t\\t@supports (-webkit-line-clamp: 2) {\\n\\t\\t\\t\\t\\tdisplay: -webkit-box;\\n\\t\\t\\t\\t\\t-webkit-line-clamp: 2;\\n\\t\\t\\t\\t\\t-webkit-box-orient: vertical;\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\t\\t}\\n\\n\\t\\t&--large {\\n\\t\\t\\tmin-width: var(--cell-width-large);\\n\\t\\t\\twidth: var(--cell-width-large);\\n\\t\\t}\\n\\n\\t\\t&--obfuscated {\\n\\t\\t\\tmin-width: 400px;\\n\\t\\t\\twidth: 400px;\\n\\t\\t}\\n\\n\\t\\t// Fill remaining row space with cell\\n\\t\\t&--fill {\\n\\t\\t\\tmin-width: var(--cell-width-large);\\n\\t\\t\\twidth: 100%;\\n\\t\\t}\\n\\n\\t\\t&--actions {\\n\\t\\t\\tposition: sticky;\\n\\t\\t\\tright: 0;\\n\\t\\t\\tz-index: var(--sticky-column-z-index);\\n\\t\\t\\tdisplay: flex;\\n\\t\\t\\tflex-direction: row;\\n\\t\\t\\talign-items: center;\\n\\t\\t\\tmin-width: 110px;\\n\\t\\t\\twidth: 110px;\\n\\t\\t\\tbackground-color: var(--color-main-background);\\n\\t\\t\\tborder-left: 1px solid var(--color-border);\\n\\t\\t}\\n\\t}\\n\\n\\t&__subtitle {\\n\\t\\tcolor: var(--color-text-maxcontrast);\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `fieldset[data-v-ab9299ba]{font-weight:bold}`, \"\",{\"version\":3,\"sources\":[\"webpack://./apps/settings/src/components/Users/UserSettingsDialog.vue\"],\"names\":[],\"mappings\":\"AACA,0BACC,gBAAA\",\"sourcesContent\":[\"\\nfieldset {\\n\\tfont-weight: bold;\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.user-list[data-v-a583d0b2]{--avatar-cell-width: 48px;--cell-padding: 7px;--cell-width: 200px;--cell-width-large: 300px;--cell-min-width: calc(var(--cell-width) - (2 * var(--cell-padding)));--sticky-column-z-index: calc(var(--vs-dropdown-z-index) + 1);display:block;overflow:auto;height:100%}.user-list__header[data-v-a583d0b2],.user-list__footer[data-v-a583d0b2]{position:sticky;display:block}.user-list__header[data-v-a583d0b2]{top:0;z-index:calc(var(--sticky-column-z-index) + 1)}.user-list__footer[data-v-a583d0b2]{left:0}.user-list__body[data-v-a583d0b2]{display:flex;flex-direction:column;width:100%}`, \"\",{\"version\":3,\"sources\":[\"webpack://./apps/settings/src/components/Users/VirtualList.vue\"],\"names\":[],\"mappings\":\"AACA,4BACC,yBAAA,CACA,mBAAA,CACA,mBAAA,CACA,yBAAA,CACA,qEAAA,CACA,6DAAA,CAGA,aAAA,CACA,aAAA,CACA,WAAA,CAEA,wEAEC,eAAA,CAEA,aAAA,CAGD,oCACC,KAAA,CACA,8CAAA,CAGD,oCACC,MAAA,CAGD,kCACC,YAAA,CACA,qBAAA,CACA,UAAA\",\"sourcesContent\":[\"\\n.user-list {\\n\\t--avatar-cell-width: 48px;\\n\\t--cell-padding: 7px;\\n\\t--cell-width: 200px;\\n\\t--cell-width-large: 300px;\\n\\t--cell-min-width: calc(var(--cell-width) - (2 * var(--cell-padding)));\\n\\t--sticky-column-z-index: calc(var(--vs-dropdown-z-index) + 1); // Keep the sticky column on top of the select dropdown\\n\\n\\t// Necessary for virtual scroll optimized rendering\\n\\tdisplay: block;\\n\\toverflow: auto;\\n\\theight: 100%;\\n\\n\\t&__header,\\n\\t&__footer {\\n\\t\\tposition: sticky;\\n\\t\\t// Fix sticky positioning in Firefox\\n\\t\\tdisplay: block;\\n\\t}\\n\\n\\t&__header {\\n\\t\\ttop: 0;\\n\\t\\tz-index: calc(var(--sticky-column-z-index) + 1);\\n\\t}\\n\\n\\t&__footer {\\n\\t\\tleft: 0;\\n\\t}\\n\\n\\t&__body {\\n\\t\\tdisplay: flex;\\n\\t\\tflex-direction: column;\\n\\t\\twidth: 100%;\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.app-content[data-v-fc8857fc]{display:flex;overflow:hidden;flex-direction:column;max-height:100%}`, \"\",{\"version\":3,\"sources\":[\"webpack://./apps/settings/src/views/UserManagement.vue\"],\"names\":[],\"mappings\":\"AACA,8BAEC,YAAA,CACA,eAAA,CACA,qBAAA,CACA,eAAA\",\"sourcesContent\":[\"\\n.app-content {\\n\\t// Virtual list needs to be full height and is scrollable\\n\\tdisplay: flex;\\n\\toverflow: hidden;\\n\\tflex-direction: column;\\n\\tmax-height: 100%;\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.account-management__system-list[data-v-9b250646]{height:auto !important;overflow:visible !important}.account-management__group-list[data-v-9b250646]{height:100% !important}.account-management__settings-toggle[data-v-9b250646]{margin-bottom:12px}`, \"\",{\"version\":3,\"sources\":[\"webpack://./apps/settings/src/views/UserManagementNavigation.vue\"],\"names\":[],\"mappings\":\"AAEC,kDACC,sBAAA,CACA,2BAAA,CAGD,iDACC,sBAAA,CAGD,sDACC,kBAAA\",\"sourcesContent\":[\"\\n.account-management{\\n\\t&__system-list {\\n\\t\\theight: auto !important;\\n\\t\\toverflow: visible !important;\\n\\t}\\n\\n\\t&__group-list {\\n\\t\\theight: 100% !important;\\n\\t}\\n\\n\\t&__settings-toggle {\\n\\t\\tmargin-bottom: 12px;\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('NcAppContent',{attrs:{\"page-heading\":_vm.pageHeading}},[_c('UserList',{attrs:{\"selected-group\":_vm.selectedGroupDecoded,\"external-actions\":_vm.externalActions}})],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('table',{staticClass:\"user-list\"},[_vm._t(\"before\"),_vm._v(\" \"),_c('thead',{ref:\"thead\",staticClass:\"user-list__header\",attrs:{\"role\":\"rowgroup\"}},[_vm._t(\"header\")],2),_vm._v(\" \"),_c('tbody',{staticClass:\"user-list__body\",style:(_vm.tbodyStyle)},_vm._l((_vm.renderedItems),function(item,i){return _c(_vm.dataComponent,_vm._b({key:item[_vm.dataKey],tag:\"component\",attrs:{\"user\":item,\"visible\":(i >= _vm.bufferItems || _vm.index <= _vm.bufferItems) && (i < _vm.shownItems - _vm.bufferItems)}},'component',_vm.extraProps,false))}),1),_vm._v(\" \"),_c('tfoot',{directives:[{name:\"element-visibility\",rawName:\"v-element-visibility\",value:(_vm.handleFooterVisibility),expression:\"handleFooterVisibility\"}],ref:\"tfoot\",staticClass:\"user-list__footer\",attrs:{\"role\":\"rowgroup\"}},[_vm._t(\"footer\")],2)],2)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/ts-loader/index.js??clonedRuleSet-4.use[1]!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./VirtualList.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/ts-loader/index.js??clonedRuleSet-4.use[1]!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./VirtualList.vue?vue&type=script&lang=ts\"","\n import API from \"!../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../../node_modules/css-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/sass-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./VirtualList.vue?vue&type=style&index=0&id=a583d0b2&prod&lang=scss&scoped=true\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../../node_modules/css-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/sass-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./VirtualList.vue?vue&type=style&index=0&id=a583d0b2&prod&lang=scss&scoped=true\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./VirtualList.vue?vue&type=template&id=a583d0b2&scoped=true\"\nimport script from \"./VirtualList.vue?vue&type=script&lang=ts\"\nexport * from \"./VirtualList.vue?vue&type=script&lang=ts\"\nimport style0 from \"./VirtualList.vue?vue&type=style&index=0&id=a583d0b2&prod&lang=scss&scoped=true\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"a583d0b2\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('NcModal',_vm._g({staticClass:\"modal\",attrs:{\"size\":\"small\"}},_vm.$listeners),[_c('form',{staticClass:\"modal__form\",attrs:{\"data-test\":\"form\",\"disabled\":_vm.loading.all},on:{\"submit\":function($event){$event.preventDefault();return _vm.createUser.apply(null, arguments)}}},[_c('h2',[_vm._v(_vm._s(_vm.t('settings', 'New user')))]),_vm._v(\" \"),_c('NcTextField',{ref:\"username\",staticClass:\"modal__item\",attrs:{\"data-test\":\"username\",\"value\":_vm.newUser.id,\"disabled\":_vm.settings.newUserGenerateUserID,\"label\":_vm.usernameLabel,\"autocapitalize\":\"none\",\"autocomplete\":\"off\",\"spellcheck\":\"false\",\"pattern\":\"[a-zA-Z0-9 _\\\\.@\\\\-']+\",\"required\":\"\"},on:{\"update:value\":function($event){return _vm.$set(_vm.newUser, \"id\", $event)}}}),_vm._v(\" \"),_c('NcTextField',{staticClass:\"modal__item\",attrs:{\"data-test\":\"displayName\",\"value\":_vm.newUser.displayName,\"label\":_vm.t('settings', 'Display name'),\"autocapitalize\":\"none\",\"autocomplete\":\"off\",\"spellcheck\":\"false\"},on:{\"update:value\":function($event){return _vm.$set(_vm.newUser, \"displayName\", $event)}}}),_vm._v(\" \"),(!_vm.settings.newUserRequireEmail)?_c('span',{staticClass:\"modal__hint\",attrs:{\"id\":\"password-email-hint\"}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('settings', 'Either password or email is required'))+\"\\n\\t\\t\")]):_vm._e(),_vm._v(\" \"),_c('NcPasswordField',{ref:\"password\",staticClass:\"modal__item\",attrs:{\"data-test\":\"password\",\"value\":_vm.newUser.password,\"minlength\":_vm.minPasswordLength,\"maxlength\":469,\"aria-describedby\":\"password-email-hint\",\"label\":_vm.newUser.mailAddress === '' ? _vm.t('settings', 'Password (required)') : _vm.t('settings', 'Password'),\"autocapitalize\":\"none\",\"autocomplete\":\"new-password\",\"spellcheck\":\"false\",\"required\":_vm.newUser.mailAddress === ''},on:{\"update:value\":function($event){return _vm.$set(_vm.newUser, \"password\", $event)}}}),_vm._v(\" \"),_c('NcTextField',{staticClass:\"modal__item\",attrs:{\"data-test\":\"email\",\"type\":\"email\",\"value\":_vm.newUser.mailAddress,\"aria-describedby\":\"password-email-hint\",\"label\":_vm.newUser.password === '' || _vm.settings.newUserRequireEmail ? _vm.t('settings', 'Email (required)') : _vm.t('settings', 'Email'),\"autocapitalize\":\"none\",\"autocomplete\":\"off\",\"spellcheck\":\"false\",\"required\":_vm.newUser.password === '' || _vm.settings.newUserRequireEmail},on:{\"update:value\":function($event){return _vm.$set(_vm.newUser, \"mailAddress\", $event)}}}),_vm._v(\" \"),_c('div',{staticClass:\"modal__item\"},[_c('label',{staticClass:\"modal__label\",attrs:{\"for\":\"new-user-groups\"}},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(!_vm.settings.isAdmin ? _vm.t('settings', 'Groups (required)') : _vm.t('settings', 'Groups'))+\"\\n\\t\\t\\t\")]),_vm._v(\" \"),_c('NcSelect',{staticClass:\"modal__select\",attrs:{\"input-id\":\"new-user-groups\",\"placeholder\":_vm.t('settings', 'Set user groups'),\"disabled\":_vm.loading.groups || _vm.loading.all,\"options\":_vm.canAddGroups,\"value\":_vm.newUser.groups,\"label\":\"name\",\"close-on-select\":false,\"multiple\":true,\"taggable\":true,\"required\":!_vm.settings.isAdmin},on:{\"input\":_vm.handleGroupInput,\"option:created\":_vm.createGroup}})],1),_vm._v(\" \"),(_vm.subAdminsGroups.length > 0)?_c('div',{staticClass:\"modal__item\"},[_c('label',{staticClass:\"modal__label\",attrs:{\"for\":\"new-user-sub-admin\"}},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('settings', 'Administered groups'))+\"\\n\\t\\t\\t\")]),_vm._v(\" \"),_c('NcSelect',{staticClass:\"modal__select\",attrs:{\"input-id\":\"new-user-sub-admin\",\"placeholder\":_vm.t('settings', 'Set user as admin for …'),\"options\":_vm.subAdminsGroups,\"close-on-select\":false,\"multiple\":true,\"label\":\"name\"},model:{value:(_vm.newUser.subAdminsGroups),callback:function ($$v) {_vm.$set(_vm.newUser, \"subAdminsGroups\", $$v)},expression:\"newUser.subAdminsGroups\"}})],1):_vm._e(),_vm._v(\" \"),_c('div',{staticClass:\"modal__item\"},[_c('label',{staticClass:\"modal__label\",attrs:{\"for\":\"new-user-quota\"}},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('settings', 'Quota'))+\"\\n\\t\\t\\t\")]),_vm._v(\" \"),_c('NcSelect',{staticClass:\"modal__select\",attrs:{\"input-id\":\"new-user-quota\",\"placeholder\":_vm.t('settings', 'Set user quota'),\"options\":_vm.quotaOptions,\"clearable\":false,\"taggable\":true,\"create-option\":_vm.validateQuota},model:{value:(_vm.newUser.quota),callback:function ($$v) {_vm.$set(_vm.newUser, \"quota\", $$v)},expression:\"newUser.quota\"}})],1),_vm._v(\" \"),(_vm.showConfig.showLanguages)?_c('div',{staticClass:\"modal__item\"},[_c('label',{staticClass:\"modal__label\",attrs:{\"for\":\"new-user-language\"}},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('settings', 'Language'))+\"\\n\\t\\t\\t\")]),_vm._v(\" \"),_c('NcSelect',{staticClass:\"modal__select\",attrs:{\"input-id\":\"new-user-language\",\"placeholder\":_vm.t('settings', 'Set default language'),\"clearable\":false,\"selectable\":option => !option.languages,\"filter-by\":_vm.languageFilterBy,\"options\":_vm.languages,\"label\":\"name\"},model:{value:(_vm.newUser.language),callback:function ($$v) {_vm.$set(_vm.newUser, \"language\", $$v)},expression:\"newUser.language\"}})],1):_vm._e(),_vm._v(\" \"),_c('div',{class:['modal__item managers', { 'icon-loading-small': _vm.loading.manager }]},[_c('label',{staticClass:\"modal__label\",attrs:{\"for\":\"new-user-manager\"}},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('settings', 'Manager'))+\"\\n\\t\\t\\t\")]),_vm._v(\" \"),_c('NcSelect',{staticClass:\"modal__select\",attrs:{\"input-id\":\"new-user-manager\",\"placeholder\":_vm.managerLabel,\"options\":_vm.possibleManagers,\"user-select\":true,\"label\":\"displayname\"},on:{\"search\":_vm.searchUserManager},model:{value:(_vm.newUser.manager),callback:function ($$v) {_vm.$set(_vm.newUser, \"manager\", $$v)},expression:\"newUser.manager\"}})],1),_vm._v(\" \"),_c('NcButton',{staticClass:\"modal__submit\",attrs:{\"data-test\":\"submit\",\"type\":\"primary\",\"native-type\":\"submit\"}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('settings', 'Add new user'))+\"\\n\\t\\t\")])],1)])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\n\t- @copyright 2023 Christopher Ng <chrng8@gmail.com>\n\t-\n\t- @author Christopher Ng <chrng8@gmail.com>\n\t-\n\t- @license AGPL-3.0-or-later\n\t-\n\t- This program is free software: you can redistribute it and/or modify\n\t- it under the terms of the GNU Affero General Public License as\n\t- published by the Free Software Foundation, either version 3 of the\n\t- License, or (at your option) any later version.\n\t-\n\t- This program is distributed in the hope that it will be useful,\n\t- but WITHOUT ANY WARRANTY; without even the implied warranty of\n\t- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n\t- GNU Affero General Public License for more details.\n\t-\n\t- You should have received a copy of the GNU Affero General Public License\n\t- along with this program. If not, see <http://www.gnu.org/licenses/>.\n\t-\n-->\n\n<template>\n\t<NcModal class=\"modal\"\n\t\tsize=\"small\"\n\t\tv-on=\"$listeners\">\n\t\t<form class=\"modal__form\"\n\t\t\tdata-test=\"form\"\n\t\t\t:disabled=\"loading.all\"\n\t\t\t@submit.prevent=\"createUser\">\n\t\t\t<h2>{{ t('settings', 'New user') }}</h2>\n\t\t\t<NcTextField ref=\"username\"\n\t\t\t\tclass=\"modal__item\"\n\t\t\t\tdata-test=\"username\"\n\t\t\t\t:value.sync=\"newUser.id\"\n\t\t\t\t:disabled=\"settings.newUserGenerateUserID\"\n\t\t\t\t:label=\"usernameLabel\"\n\t\t\t\tautocapitalize=\"none\"\n\t\t\t\tautocomplete=\"off\"\n\t\t\t\tspellcheck=\"false\"\n\t\t\t\tpattern=\"[a-zA-Z0-9 _\\.@\\-']+\"\n\t\t\t\trequired />\n\t\t\t<NcTextField class=\"modal__item\"\n\t\t\t\tdata-test=\"displayName\"\n\t\t\t\t:value.sync=\"newUser.displayName\"\n\t\t\t\t:label=\"t('settings', 'Display name')\"\n\t\t\t\tautocapitalize=\"none\"\n\t\t\t\tautocomplete=\"off\"\n\t\t\t\tspellcheck=\"false\" />\n\t\t\t<span v-if=\"!settings.newUserRequireEmail\"\n\t\t\t\tid=\"password-email-hint\"\n\t\t\t\tclass=\"modal__hint\">\n\t\t\t\t{{ t('settings', 'Either password or email is required') }}\n\t\t\t</span>\n\t\t\t<NcPasswordField ref=\"password\"\n\t\t\t\tclass=\"modal__item\"\n\t\t\t\tdata-test=\"password\"\n\t\t\t\t:value.sync=\"newUser.password\"\n\t\t\t\t:minlength=\"minPasswordLength\"\n\t\t\t\t:maxlength=\"469\"\n\t\t\t\taria-describedby=\"password-email-hint\"\n\t\t\t\t:label=\"newUser.mailAddress === '' ? t('settings', 'Password (required)') : t('settings', 'Password')\"\n\t\t\t\tautocapitalize=\"none\"\n\t\t\t\tautocomplete=\"new-password\"\n\t\t\t\tspellcheck=\"false\"\n\t\t\t\t:required=\"newUser.mailAddress === ''\" />\n\t\t\t<NcTextField class=\"modal__item\"\n\t\t\t\tdata-test=\"email\"\n\t\t\t\ttype=\"email\"\n\t\t\t\t:value.sync=\"newUser.mailAddress\"\n\t\t\t\taria-describedby=\"password-email-hint\"\n\t\t\t\t:label=\"newUser.password === '' || settings.newUserRequireEmail ? t('settings', 'Email (required)') : t('settings', 'Email')\"\n\t\t\t\tautocapitalize=\"none\"\n\t\t\t\tautocomplete=\"off\"\n\t\t\t\tspellcheck=\"false\"\n\t\t\t\t:required=\"newUser.password === '' || settings.newUserRequireEmail\" />\n\t\t\t<div class=\"modal__item\">\n\t\t\t\t<label class=\"modal__label\"\n\t\t\t\t\tfor=\"new-user-groups\">\n\t\t\t\t\t{{ !settings.isAdmin ? t('settings', 'Groups (required)') : t('settings', 'Groups') }}\n\t\t\t\t</label>\n\t\t\t\t<NcSelect class=\"modal__select\"\n\t\t\t\t\tinput-id=\"new-user-groups\"\n\t\t\t\t\t:placeholder=\"t('settings', 'Set user groups')\"\n\t\t\t\t\t:disabled=\"loading.groups || loading.all\"\n\t\t\t\t\t:options=\"canAddGroups\"\n\t\t\t\t\t:value=\"newUser.groups\"\n\t\t\t\t\tlabel=\"name\"\n\t\t\t\t\t:close-on-select=\"false\"\n\t\t\t\t\t:multiple=\"true\"\n\t\t\t\t\t:taggable=\"true\"\n\t\t\t\t\t:required=\"!settings.isAdmin\"\n\t\t\t\t\t@input=\"handleGroupInput\"\n\t\t\t\t\t@option:created=\"createGroup\" />\n\t\t\t\t\t<!-- If user is not admin, he is a subadmin.\n\t\t\t\t\t\tSubadmins can't create users outside their groups\n\t\t\t\t\t\tTherefore, empty select is forbidden -->\n\t\t\t</div>\n\t\t\t<div v-if=\"subAdminsGroups.length > 0\"\n\t\t\t\tclass=\"modal__item\">\n\t\t\t\t<label class=\"modal__label\"\n\t\t\t\t\tfor=\"new-user-sub-admin\">\n\t\t\t\t\t{{ t('settings', 'Administered groups') }}\n\t\t\t\t</label>\n\t\t\t\t<NcSelect v-model=\"newUser.subAdminsGroups\"\n\t\t\t\t\tclass=\"modal__select\"\n\t\t\t\t\tinput-id=\"new-user-sub-admin\"\n\t\t\t\t\t:placeholder=\"t('settings', 'Set user as admin for …')\"\n\t\t\t\t\t:options=\"subAdminsGroups\"\n\t\t\t\t\t:close-on-select=\"false\"\n\t\t\t\t\t:multiple=\"true\"\n\t\t\t\t\tlabel=\"name\" />\n\t\t\t</div>\n\t\t\t<div class=\"modal__item\">\n\t\t\t\t<label class=\"modal__label\"\n\t\t\t\t\tfor=\"new-user-quota\">\n\t\t\t\t\t{{ t('settings', 'Quota') }}\n\t\t\t\t</label>\n\t\t\t\t<NcSelect v-model=\"newUser.quota\"\n\t\t\t\t\tclass=\"modal__select\"\n\t\t\t\t\tinput-id=\"new-user-quota\"\n\t\t\t\t\t:placeholder=\"t('settings', 'Set user quota')\"\n\t\t\t\t\t:options=\"quotaOptions\"\n\t\t\t\t\t:clearable=\"false\"\n\t\t\t\t\t:taggable=\"true\"\n\t\t\t\t\t:create-option=\"validateQuota\" />\n\t\t\t</div>\n\t\t\t<div v-if=\"showConfig.showLanguages\"\n\t\t\t\tclass=\"modal__item\">\n\t\t\t\t<label class=\"modal__label\"\n\t\t\t\t\tfor=\"new-user-language\">\n\t\t\t\t\t{{ t('settings', 'Language') }}\n\t\t\t\t</label>\n\t\t\t\t<NcSelect\tv-model=\"newUser.language\"\n\t\t\t\t\tclass=\"modal__select\"\n\t\t\t\t\tinput-id=\"new-user-language\"\n\t\t\t\t\t:placeholder=\"t('settings', 'Set default language')\"\n\t\t\t\t\t:clearable=\"false\"\n\t\t\t\t\t:selectable=\"option => !option.languages\"\n\t\t\t\t\t:filter-by=\"languageFilterBy\"\n\t\t\t\t\t:options=\"languages\"\n\t\t\t\t\tlabel=\"name\" />\n\t\t\t</div>\n\t\t\t<div :class=\"['modal__item managers', { 'icon-loading-small': loading.manager }]\">\n\t\t\t\t<label class=\"modal__label\"\n\t\t\t\t\tfor=\"new-user-manager\">\n\t\t\t\t\t<!-- TRANSLATORS This string describes a manager in the context of an organization -->\n\t\t\t\t\t{{ t('settings', 'Manager') }}\n\t\t\t\t</label>\n\t\t\t\t<NcSelect v-model=\"newUser.manager\"\n\t\t\t\t\tclass=\"modal__select\"\n\t\t\t\t\tinput-id=\"new-user-manager\"\n\t\t\t\t\t:placeholder=\"managerLabel\"\n\t\t\t\t\t:options=\"possibleManagers\"\n\t\t\t\t\t:user-select=\"true\"\n\t\t\t\t\tlabel=\"displayname\"\n\t\t\t\t\t@search=\"searchUserManager\" />\n\t\t\t</div>\n\t\t\t<NcButton class=\"modal__submit\"\n\t\t\t\tdata-test=\"submit\"\n\t\t\t\ttype=\"primary\"\n\t\t\t\tnative-type=\"submit\">\n\t\t\t\t{{ t('settings', 'Add new user') }}\n\t\t\t</NcButton>\n\t\t</form>\n\t</NcModal>\n</template>\n\n<script>\nimport NcButton from '@nextcloud/vue/dist/Components/NcButton.js'\nimport NcModal from '@nextcloud/vue/dist/Components/NcModal.js'\nimport NcPasswordField from '@nextcloud/vue/dist/Components/NcPasswordField.js'\nimport NcSelect from '@nextcloud/vue/dist/Components/NcSelect.js'\nimport NcTextField from '@nextcloud/vue/dist/Components/NcTextField.js'\n\nexport default {\n\tname: 'NewUserModal',\n\n\tcomponents: {\n\t\tNcButton,\n\t\tNcModal,\n\t\tNcPasswordField,\n\t\tNcSelect,\n\t\tNcTextField,\n\t},\n\n\tprops: {\n\t\tloading: {\n\t\t\ttype: Object,\n\t\t\trequired: true,\n\t\t},\n\n\t\tnewUser: {\n\t\t\ttype: Object,\n\t\t\trequired: true,\n\t\t},\n\n\t\tquotaOptions: {\n\t\t\ttype: Array,\n\t\t\trequired: true,\n\t\t},\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\tpossibleManagers: [],\n\t\t\t// TRANSLATORS This string describes a manager in the context of an organization\n\t\t\tmanagerLabel: t('settings', 'Set user manager'),\n\t\t}\n\t},\n\n\tcomputed: {\n\t\tshowConfig() {\n\t\t\treturn this.$store.getters.getShowConfig\n\t\t},\n\n\t\tsettings() {\n\t\t\treturn this.$store.getters.getServerData\n\t\t},\n\n\t\tusernameLabel() {\n\t\t\tif (this.settings.newUserGenerateUserID) {\n\t\t\t\treturn t('settings', 'Account name will be autogenerated')\n\t\t\t}\n\t\t\treturn t('settings', 'Account name (required)')\n\t\t},\n\n\t\tminPasswordLength() {\n\t\t\treturn this.$store.getters.getPasswordPolicyMinLength\n\t\t},\n\n\t\tgroups() {\n\t\t\t// data provided php side + remove the disabled group\n\t\t\treturn this.$store.getters.getGroups\n\t\t\t\t.filter(group => group.id !== 'disabled')\n\t\t\t\t.sort((a, b) => a.name.localeCompare(b.name))\n\t\t},\n\n\t\tsubAdminsGroups() {\n\t\t\t// data provided php side\n\t\t\treturn this.$store.getters.getSubadminGroups\n\t\t},\n\n\t\tcanAddGroups() {\n\t\t\t// disabled if no permission to add new users to group\n\t\t\treturn this.groups.map(group => {\n\t\t\t\t// clone object because we don't want\n\t\t\t\t// to edit the original groups\n\t\t\t\tgroup = Object.assign({}, group)\n\t\t\t\tgroup.$isDisabled = group.canAdd === false\n\t\t\t\treturn group\n\t\t\t})\n\t\t},\n\n\t\tlanguages() {\n\t\t\treturn [\n\t\t\t\t{\n\t\t\t\t\tname: t('settings', 'Common languages'),\n\t\t\t\t\tlanguages: this.settings.languages.commonLanguages,\n\t\t\t\t},\n\t\t\t\t...this.settings.languages.commonLanguages,\n\t\t\t\t{\n\t\t\t\t\tname: t('settings', 'Other languages'),\n\t\t\t\t\tlanguages: this.settings.languages.otherLanguages,\n\t\t\t\t},\n\t\t\t\t...this.settings.languages.otherLanguages,\n\t\t\t]\n\t\t},\n\t},\n\n\tasync beforeMount() {\n\t\tawait this.searchUserManager()\n\t},\n\n\tmethods: {\n\t\tasync createUser() {\n\t\t\tthis.loading.all = true\n\t\t\ttry {\n\t\t\t\tawait this.$store.dispatch('addUser', {\n\t\t\t\t\tuserid: this.newUser.id,\n\t\t\t\t\tpassword: this.newUser.password,\n\t\t\t\t\tdisplayName: this.newUser.displayName,\n\t\t\t\t\temail: this.newUser.mailAddress,\n\t\t\t\t\tgroups: this.newUser.groups.map(group => group.id),\n\t\t\t\t\tsubadmin: this.newUser.subAdminsGroups.map(group => group.id),\n\t\t\t\t\tquota: this.newUser.quota.id,\n\t\t\t\t\tlanguage: this.newUser.language.code,\n\t\t\t\t\tmanager: this.newUser.manager.id,\n\t\t\t\t})\n\n\t\t\t\tthis.$emit('reset')\n\t\t\t\tthis.$refs.username?.$refs?.inputField?.$refs?.input?.focus?.()\n\t\t\t\tthis.$emit('close')\n\t\t\t} catch (error) {\n\t\t\t\tthis.loading.all = false\n\t\t\t\tif (error.response && error.response.data && error.response.data.ocs && error.response.data.ocs.meta) {\n\t\t\t\t\tconst statuscode = error.response.data.ocs.meta.statuscode\n\t\t\t\t\tif (statuscode === 102) {\n\t\t\t\t\t\t// wrong username\n\t\t\t\t\t\tthis.$refs.username?.$refs?.inputField?.$refs?.input?.focus?.()\n\t\t\t\t\t} else if (statuscode === 107) {\n\t\t\t\t\t\t// wrong password\n\t\t\t\t\t\tthis.$refs.password?.$refs?.inputField?.$refs?.input?.focus?.()\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\thandleGroupInput(groups) {\n\t\t\t/**\n\t\t\t * Filter out groups with no id to prevent duplicate selected options\n\t\t\t *\n\t\t\t * Created groups are added programmatically by `createGroup()`\n\t\t\t */\n\t\t\t this.newUser.groups = groups.filter(group => Boolean(group.id))\n\t\t},\n\n\t\t/**\n\t\t * Create a new group\n\t\t *\n\t\t * @param {any} group Group\n\t\t * @param {string} group.name Group id\n\t\t */\n\t\tasync createGroup({ name: gid }) {\n\t\t\tthis.loading.groups = true\n\t\t\ttry {\n\t\t\t\tawait this.$store.dispatch('addGroup', gid)\n\t\t\t\tthis.newUser.groups.push(this.groups.find(group => group.id === gid))\n\t\t\t\tthis.loading.groups = false\n\t\t\t} catch (error) {\n\t\t\t\tthis.loading.groups = false\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Validate quota string to make sure it's a valid human file size\n\t\t *\n\t\t * @param {string} quota Quota in readable format '5 GB'\n\t\t * @return {object}\n\t\t */\n\t\tvalidateQuota(quota) {\n\t\t\t// only used for new presets sent through @Tag\n\t\t\tconst validQuota = OC.Util.computerFileSize(quota)\n\t\t\tif (validQuota !== null && validQuota >= 0) {\n\t\t\t\t// unify format output\n\t\t\t\tquota = OC.Util.humanFileSize(OC.Util.computerFileSize(quota))\n\t\t\t\tthis.newUser.quota = { id: quota, label: quota }\n\t\t\t\treturn this.newUser.quota\n\t\t\t}\n\t\t\t// Default is unlimited\n\t\t\tthis.newUser.quota = this.quotaOptions[0]\n\t\t\treturn this.quotaOptions[0]\n\t\t},\n\n\t\tlanguageFilterBy(option, label, search) {\n\t\t\t// Show group header of the language\n\t\t\tif (option.languages) {\n\t\t\t\treturn option.languages.some(\n\t\t\t\t\t({ name }) => name.toLocaleLowerCase().includes(search.toLocaleLowerCase()),\n\t\t\t\t)\n\t\t\t}\n\n\t\t\treturn (label || '').toLocaleLowerCase().includes(search.toLocaleLowerCase())\n\t\t},\n\n\t\tasync searchUserManager(query) {\n\t\t\tawait this.$store.dispatch(\n\t\t\t\t'searchUsers',\n\t\t\t\t{\n\t\t\t\t\toffset: 0,\n\t\t\t\t\tlimit: 10,\n\t\t\t\t\tsearch: query,\n\t\t\t\t},\n\t\t\t).then(response => {\n\t\t\t\tconst users = response?.data ? Object.values(response?.data.ocs.data.users) : []\n\t\t\t\tif (users.length > 0) {\n\t\t\t\t\tthis.possibleManagers = users\n\t\t\t\t}\n\t\t\t})\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\n.modal {\n\t&__form {\n\t\tdisplay: flex;\n\t\tflex-direction: column;\n\t\talign-items: center;\n\t\tpadding: 20px;\n\t\tgap: 4px 0;\n\t}\n\n\t&__item {\n\t\twidth: 100%;\n\n\t\t&:not(:focus):not(:active) {\n\t\t\tborder-color: var(--color-border-dark);\n\t\t}\n\t}\n\n\t&__hint {\n\t\tcolor: var(--color-text-maxcontrast);\n\t\tmargin-top: 8px;\n\t\talign-self: flex-start;\n\t}\n\n\t&__label {\n\t\tdisplay: block;\n\t\tpadding: 4px 0;\n\t}\n\n\t&__select {\n\t\twidth: 100%;\n\t}\n\n\t&__submit {\n\t\tmargin-top: 20px;\n\t}\n}\n</style>\n","import mod from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./NewUserModal.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./NewUserModal.vue?vue&type=script&lang=js\"","\n import API from \"!../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../../node_modules/css-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/sass-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./NewUserModal.vue?vue&type=style&index=0&id=3647f8c2&prod&lang=scss&scoped=true\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../../node_modules/css-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/sass-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./NewUserModal.vue?vue&type=style&index=0&id=3647f8c2&prod&lang=scss&scoped=true\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./NewUserModal.vue?vue&type=template&id=3647f8c2&scoped=true\"\nimport script from \"./NewUserModal.vue?vue&type=script&lang=js\"\nexport * from \"./NewUserModal.vue?vue&type=script&lang=js\"\nimport style0 from \"./NewUserModal.vue?vue&type=style&index=0&id=3647f8c2&prod&lang=scss&scoped=true\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"3647f8c2\",\n null\n \n)\n\nexport default component.exports","import mod from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/ts-loader/index.js??clonedRuleSet-4.use[1]!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./UserListFooter.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/ts-loader/index.js??clonedRuleSet-4.use[1]!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./UserListFooter.vue?vue&type=script&lang=ts\"","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('tr',{staticClass:\"footer\"},[_c('th',{attrs:{\"scope\":\"row\"}},[_c('span',{staticClass:\"hidden-visually\"},[_vm._v(_vm._s(_vm.t('settings', 'Total rows summary')))])]),_vm._v(\" \"),_c('td',{staticClass:\"footer__cell footer__cell--loading\"},[(_vm.loading)?_c('NcLoadingIcon',{attrs:{\"title\":_vm.t('settings', 'Loading users …'),\"size\":32}}):_vm._e()],1),_vm._v(\" \"),_c('td',{staticClass:\"footer__cell footer__cell--count footer__cell--multiline\"},[_c('span',{attrs:{\"aria-describedby\":\"user-count-desc\"}},[_vm._v(_vm._s(_vm.userCount))]),_vm._v(\" \"),_c('span',{staticClass:\"hidden-visually\",attrs:{\"id\":\"user-count-desc\"}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('settings', 'Scroll to load more rows'))+\"\\n\\t\\t\")])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n import API from \"!../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../../node_modules/css-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/sass-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./UserListFooter.vue?vue&type=style&index=0&id=3ec0b16a&prod&lang=scss&scoped=true\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../../node_modules/css-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/sass-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./UserListFooter.vue?vue&type=style&index=0&id=3ec0b16a&prod&lang=scss&scoped=true\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./UserListFooter.vue?vue&type=template&id=3ec0b16a&scoped=true\"\nimport script from \"./UserListFooter.vue?vue&type=script&lang=ts\"\nexport * from \"./UserListFooter.vue?vue&type=script&lang=ts\"\nimport style0 from \"./UserListFooter.vue?vue&type=style&index=0&id=3ec0b16a&prod&lang=scss&scoped=true\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"3ec0b16a\",\n null\n \n)\n\nexport default component.exports","import mod from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/ts-loader/index.js??clonedRuleSet-4.use[1]!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./UserListHeader.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/ts-loader/index.js??clonedRuleSet-4.use[1]!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./UserListHeader.vue?vue&type=script&lang=ts\"","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('tr',{staticClass:\"header\"},[_c('th',{staticClass:\"header__cell header__cell--avatar\",attrs:{\"data-cy-user-list-header-avatar\":\"\",\"scope\":\"col\"}},[_c('span',{staticClass:\"hidden-visually\"},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('settings', 'Avatar'))+\"\\n\\t\\t\")])]),_vm._v(\" \"),_c('th',{staticClass:\"header__cell header__cell--displayname\",attrs:{\"data-cy-user-list-header-displayname\":\"\",\"scope\":\"col\"}},[_c('strong',[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('settings', 'Display name'))+\"\\n\\t\\t\")])]),_vm._v(\" \"),_c('th',{staticClass:\"header__cell header__cell--username\",attrs:{\"data-cy-user-list-header-username\":\"\",\"scope\":\"col\"}},[_c('span',[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('settings', 'Account name'))+\"\\n\\t\\t\")])]),_vm._v(\" \"),_c('th',{staticClass:\"header__cell\",class:{ 'header__cell--obfuscated': _vm.hasObfuscated },attrs:{\"data-cy-user-list-header-password\":\"\",\"scope\":\"col\"}},[_c('span',[_vm._v(_vm._s(_vm.passwordLabel))])]),_vm._v(\" \"),_c('th',{staticClass:\"header__cell\",attrs:{\"data-cy-user-list-header-email\":\"\",\"scope\":\"col\"}},[_c('span',[_vm._v(_vm._s(_vm.t('settings', 'Email')))])]),_vm._v(\" \"),_c('th',{staticClass:\"header__cell header__cell--large\",attrs:{\"data-cy-user-list-header-groups\":\"\",\"scope\":\"col\"}},[_c('span',[_vm._v(_vm._s(_vm.t('settings', 'Groups')))])]),_vm._v(\" \"),(_vm.subAdminsGroups.length > 0 && _vm.settings.isAdmin)?_c('th',{staticClass:\"header__cell header__cell--large\",attrs:{\"data-cy-user-list-header-subadmins\":\"\",\"scope\":\"col\"}},[_c('span',[_vm._v(_vm._s(_vm.t('settings', 'Group admin for')))])]):_vm._e(),_vm._v(\" \"),_c('th',{staticClass:\"header__cell\",attrs:{\"data-cy-user-list-header-quota\":\"\",\"scope\":\"col\"}},[_c('span',[_vm._v(_vm._s(_vm.t('settings', 'Quota')))])]),_vm._v(\" \"),(_vm.showConfig.showLanguages)?_c('th',{staticClass:\"header__cell header__cell--large\",attrs:{\"data-cy-user-list-header-languages\":\"\",\"scope\":\"col\"}},[_c('span',[_vm._v(_vm._s(_vm.t('settings', 'Language')))])]):_vm._e(),_vm._v(\" \"),(_vm.showConfig.showUserBackend || _vm.showConfig.showStoragePath)?_c('th',{staticClass:\"header__cell header__cell--large\",attrs:{\"data-cy-user-list-header-storage-location\":\"\",\"scope\":\"col\"}},[(_vm.showConfig.showUserBackend)?_c('span',[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('settings', 'Account backend'))+\"\\n\\t\\t\")]):_vm._e(),_vm._v(\" \"),(_vm.showConfig.showStoragePath)?_c('span',{staticClass:\"header__subtitle\"},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('settings', 'Storage location'))+\"\\n\\t\\t\")]):_vm._e()]):_vm._e(),_vm._v(\" \"),(_vm.showConfig.showLastLogin)?_c('th',{staticClass:\"header__cell\",attrs:{\"data-cy-user-list-header-last-login\":\"\",\"scope\":\"col\"}},[_c('span',[_vm._v(_vm._s(_vm.t('settings', 'Last login')))])]):_vm._e(),_vm._v(\" \"),_c('th',{staticClass:\"header__cell header__cell--large header__cell--fill\",attrs:{\"data-cy-user-list-header-manager\":\"\",\"scope\":\"col\"}},[_c('span',[_vm._v(_vm._s(_vm.t('settings', 'Manager')))])]),_vm._v(\" \"),_c('th',{staticClass:\"header__cell header__cell--actions\",attrs:{\"data-cy-user-list-header-actions\":\"\",\"scope\":\"col\"}},[_c('span',{staticClass:\"hidden-visually\"},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('settings', 'User actions'))+\"\\n\\t\\t\")])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n import API from \"!../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../../node_modules/css-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/sass-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./UserListHeader.vue?vue&type=style&index=0&id=3ec6e22e&prod&lang=scss&scoped=true\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../../node_modules/css-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/sass-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./UserListHeader.vue?vue&type=style&index=0&id=3ec6e22e&prod&lang=scss&scoped=true\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./UserListHeader.vue?vue&type=template&id=3ec6e22e&scoped=true\"\nimport script from \"./UserListHeader.vue?vue&type=script&lang=ts\"\nexport * from \"./UserListHeader.vue?vue&type=script&lang=ts\"\nimport style0 from \"./UserListHeader.vue?vue&type=style&index=0&id=3ec6e22e&prod&lang=scss&scoped=true\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"3ec6e22e\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('tr',{staticClass:\"user-list__row\",attrs:{\"data-cy-user-row\":_vm.user.id}},[_c('td',{staticClass:\"row__cell row__cell--avatar\",attrs:{\"data-cy-user-list-cell-avatar\":\"\"}},[(_vm.isLoadingUser)?_c('NcLoadingIcon',{attrs:{\"name\":_vm.t('settings', 'Loading account …'),\"size\":32}}):(_vm.visible)?_c('NcAvatar',{attrs:{\"disable-menu\":\"\",\"show-user-status\":false,\"user\":_vm.user.id}}):_vm._e()],1),_vm._v(\" \"),_c('td',{staticClass:\"row__cell row__cell--displayname\",attrs:{\"data-cy-user-list-cell-displayname\":\"\"}},[(_vm.editing && _vm.user.backendCapabilities.setDisplayName)?[_c('NcTextField',{ref:\"displayNameField\",staticClass:\"user-row-text-field\",class:{ 'icon-loading-small': _vm.loading.displayName },attrs:{\"data-cy-user-list-input-displayname\":\"\",\"data-loading\":_vm.loading.displayName || undefined,\"trailing-button-label\":_vm.t('settings', 'Submit'),\"show-trailing-button\":true,\"disabled\":_vm.loading.displayName || _vm.isLoadingField,\"label\":_vm.t('settings', 'Change display name'),\"trailing-button-icon\":\"arrowRight\",\"value\":_vm.editedDisplayName,\"autocapitalize\":\"off\",\"autocomplete\":\"off\",\"spellcheck\":\"false\"},on:{\"update:value\":function($event){_vm.editedDisplayName=$event},\"trailing-button-click\":_vm.updateDisplayName}})]:(!_vm.isObfuscated)?_c('strong',{attrs:{\"title\":_vm.user.displayname?.length > 20 ? _vm.user.displayname : null}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.user.displayname)+\"\\n\\t\\t\")]):_vm._e()],2),_vm._v(\" \"),_c('td',{staticClass:\"row__cell row__cell--username\",attrs:{\"data-cy-user-list-cell-username\":\"\"}},[_c('span',{staticClass:\"row__subtitle\"},[_vm._v(_vm._s(_vm.user.id))])]),_vm._v(\" \"),_c('td',{staticClass:\"row__cell\",class:{ 'row__cell--obfuscated': _vm.hasObfuscated },attrs:{\"data-cy-user-list-cell-password\":\"\"}},[(_vm.editing && _vm.settings.canChangePassword && _vm.user.backendCapabilities.setPassword)?[_c('NcTextField',{staticClass:\"user-row-text-field\",class:{'icon-loading-small': _vm.loading.password},attrs:{\"data-cy-user-list-input-password\":\"\",\"data-loading\":_vm.loading.password || undefined,\"trailing-button-label\":_vm.t('settings', 'Submit'),\"show-trailing-button\":true,\"disabled\":_vm.loading.password || _vm.isLoadingField,\"minlength\":_vm.minPasswordLength,\"maxlength\":\"469\",\"label\":_vm.t('settings', 'Set new password'),\"trailing-button-icon\":\"arrowRight\",\"value\":_vm.editedPassword,\"autocapitalize\":\"off\",\"autocomplete\":\"new-password\",\"required\":\"\",\"spellcheck\":\"false\",\"type\":\"password\"},on:{\"update:value\":function($event){_vm.editedPassword=$event},\"trailing-button-click\":_vm.updatePassword}})]:(_vm.isObfuscated)?_c('span',[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('settings', 'You do not have permissions to see the details of this account'))+\"\\n\\t\\t\")]):_vm._e()],2),_vm._v(\" \"),_c('td',{staticClass:\"row__cell\",attrs:{\"data-cy-user-list-cell-email\":\"\"}},[(_vm.editing)?[_c('NcTextField',{staticClass:\"user-row-text-field\",class:{'icon-loading-small': _vm.loading.mailAddress},attrs:{\"data-cy-user-list-input-email\":\"\",\"data-loading\":_vm.loading.mailAddress || undefined,\"show-trailing-button\":true,\"trailing-button-label\":_vm.t('settings', 'Submit'),\"label\":_vm.t('settings', 'Set new email address'),\"disabled\":_vm.loading.mailAddress || _vm.isLoadingField,\"trailing-button-icon\":\"arrowRight\",\"value\":_vm.editedMail,\"autocapitalize\":\"off\",\"autocomplete\":\"email\",\"spellcheck\":\"false\",\"type\":\"email\"},on:{\"update:value\":function($event){_vm.editedMail=$event},\"trailing-button-click\":_vm.updateEmail}})]:(!_vm.isObfuscated)?_c('span',{attrs:{\"title\":_vm.user.email?.length > 20 ? _vm.user.email : null}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.user.email)+\"\\n\\t\\t\")]):_vm._e()],2),_vm._v(\" \"),_c('td',{staticClass:\"row__cell row__cell--large row__cell--multiline\",attrs:{\"data-cy-user-list-cell-groups\":\"\"}},[(_vm.editing)?[_c('label',{staticClass:\"hidden-visually\",attrs:{\"for\":'groups' + _vm.uniqueId}},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('settings', 'Add user to group'))+\"\\n\\t\\t\\t\")]),_vm._v(\" \"),_c('NcSelect',{attrs:{\"data-cy-user-list-input-groups\":\"\",\"data-loading\":_vm.loading.groups || undefined,\"input-id\":'groups' + _vm.uniqueId,\"close-on-select\":false,\"disabled\":_vm.isLoadingField,\"loading\":_vm.loading.groups,\"multiple\":true,\"append-to-body\":false,\"options\":_vm.availableGroups,\"placeholder\":_vm.t('settings', 'Add account to group'),\"taggable\":_vm.settings.isAdmin,\"value\":_vm.userGroups,\"label\":\"name\",\"no-wrap\":true,\"create-option\":(value) => ({ name: value, isCreating: true })},on:{\"option:created\":_vm.createGroup,\"option:selected\":options => _vm.addUserGroup(options.at(-1)),\"option:deselected\":_vm.removeUserGroup}})]:(!_vm.isObfuscated)?_c('span',{attrs:{\"title\":_vm.userGroupsLabels?.length > 40 ? _vm.userGroupsLabels : null}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.userGroupsLabels)+\"\\n\\t\\t\")]):_vm._e()],2),_vm._v(\" \"),(_vm.subAdminsGroups.length > 0 && _vm.settings.isAdmin)?_c('td',{staticClass:\"row__cell row__cell--large row__cell--multiline\",attrs:{\"data-cy-user-list-cell-subadmins\":\"\"}},[(_vm.editing && _vm.settings.isAdmin && _vm.subAdminsGroups.length > 0)?[_c('label',{staticClass:\"hidden-visually\",attrs:{\"for\":'subadmins' + _vm.uniqueId}},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('settings', 'Set account as admin for'))+\"\\n\\t\\t\\t\")]),_vm._v(\" \"),_c('NcSelect',{attrs:{\"data-cy-user-list-input-subadmins\":\"\",\"data-loading\":_vm.loading.subadmins || undefined,\"input-id\":'subadmins' + _vm.uniqueId,\"close-on-select\":false,\"disabled\":_vm.isLoadingField,\"loading\":_vm.loading.subadmins,\"label\":\"name\",\"append-to-body\":false,\"multiple\":true,\"no-wrap\":true,\"options\":_vm.subAdminsGroups,\"placeholder\":_vm.t('settings', 'Set account as admin for'),\"value\":_vm.userSubAdminsGroups},on:{\"option:deselected\":_vm.removeUserSubAdmin,\"option:selected\":options => _vm.addUserSubAdmin(options.at(-1))}})]:(!_vm.isObfuscated)?_c('span',{attrs:{\"title\":_vm.userSubAdminsGroupsLabels?.length > 40 ? _vm.userSubAdminsGroupsLabels : null}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.userSubAdminsGroupsLabels)+\"\\n\\t\\t\")]):_vm._e()],2):_vm._e(),_vm._v(\" \"),_c('td',{staticClass:\"row__cell\",attrs:{\"data-cy-user-list-cell-quota\":\"\"}},[(_vm.editing)?[_c('label',{staticClass:\"hidden-visually\",attrs:{\"for\":'quota' + _vm.uniqueId}},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('settings', 'Select account quota'))+\"\\n\\t\\t\\t\")]),_vm._v(\" \"),_c('NcSelect',{attrs:{\"close-on-select\":true,\"create-option\":_vm.validateQuota,\"data-cy-user-list-input-quota\":\"\",\"data-loading\":_vm.loading.quota || undefined,\"disabled\":_vm.isLoadingField,\"loading\":_vm.loading.quota,\"append-to-body\":false,\"clearable\":false,\"input-id\":'quota' + _vm.uniqueId,\"options\":_vm.quotaOptions,\"placeholder\":_vm.t('settings', 'Select account quota'),\"taggable\":true},on:{\"option:selected\":_vm.setUserQuota},model:{value:(_vm.editedUserQuota),callback:function ($$v) {_vm.editedUserQuota=$$v},expression:\"editedUserQuota\"}})]:(!_vm.isObfuscated)?[_c('span',{attrs:{\"id\":'quota-progress' + _vm.uniqueId}},[_vm._v(_vm._s(_vm.userQuota)+\" (\"+_vm._s(_vm.usedSpace)+\")\")]),_vm._v(\" \"),_c('NcProgressBar',{staticClass:\"row__progress\",class:{\n\t\t\t\t\t'row__progress--warn': _vm.usedQuota > 80,\n\t\t\t\t},attrs:{\"aria-labelledby\":'quota-progress' + _vm.uniqueId,\"value\":_vm.usedQuota}})]:_vm._e()],2),_vm._v(\" \"),(_vm.showConfig.showLanguages)?_c('td',{staticClass:\"row__cell row__cell--large\",attrs:{\"data-cy-user-list-cell-language\":\"\"}},[(_vm.editing)?[_c('label',{staticClass:\"hidden-visually\",attrs:{\"for\":'language' + _vm.uniqueId}},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('settings', 'Set the language'))+\"\\n\\t\\t\\t\")]),_vm._v(\" \"),_c('NcSelect',{attrs:{\"id\":'language' + _vm.uniqueId,\"data-cy-user-list-input-language\":\"\",\"data-loading\":_vm.loading.languages || undefined,\"allow-empty\":false,\"disabled\":_vm.isLoadingField,\"loading\":_vm.loading.languages,\"clearable\":false,\"append-to-body\":false,\"options\":_vm.availableLanguages,\"placeholder\":_vm.t('settings', 'No language set'),\"value\":_vm.userLanguage,\"label\":\"name\"},on:{\"input\":_vm.setUserLanguage}})]:(!_vm.isObfuscated)?_c('span',[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.userLanguage.name)+\"\\n\\t\\t\")]):_vm._e()],2):_vm._e(),_vm._v(\" \"),(_vm.showConfig.showUserBackend || _vm.showConfig.showStoragePath)?_c('td',{staticClass:\"row__cell row__cell--large\",attrs:{\"data-cy-user-list-cell-storage-location\":\"\"}},[(!_vm.isObfuscated)?[(_vm.showConfig.showUserBackend)?_c('span',[_vm._v(_vm._s(_vm.user.backend))]):_vm._e(),_vm._v(\" \"),(_vm.showConfig.showStoragePath)?_c('span',{staticClass:\"row__subtitle\",attrs:{\"title\":_vm.user.storageLocation}},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.user.storageLocation)+\"\\n\\t\\t\\t\")]):_vm._e()]:_vm._e()],2):_vm._e(),_vm._v(\" \"),(_vm.showConfig.showLastLogin)?_c('td',{staticClass:\"row__cell\",attrs:{\"title\":_vm.userLastLoginTooltip,\"data-cy-user-list-cell-last-login\":\"\"}},[(!_vm.isObfuscated)?_c('span',[_vm._v(_vm._s(_vm.userLastLogin))]):_vm._e()]):_vm._e(),_vm._v(\" \"),_c('td',{staticClass:\"row__cell row__cell--large row__cell--fill\",attrs:{\"data-cy-user-list-cell-manager\":\"\"}},[(_vm.editing)?[_c('label',{staticClass:\"hidden-visually\",attrs:{\"for\":'manager' + _vm.uniqueId}},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.managerLabel)+\"\\n\\t\\t\\t\")]),_vm._v(\" \"),_c('NcSelect',{staticClass:\"select--fill\",attrs:{\"data-cy-user-list-input-manager\":\"\",\"data-loading\":_vm.loading.manager || undefined,\"input-id\":'manager' + _vm.uniqueId,\"close-on-select\":true,\"disabled\":_vm.isLoadingField,\"append-to-body\":false,\"loading\":_vm.loadingPossibleManagers || _vm.loading.manager,\"label\":\"displayname\",\"options\":_vm.possibleManagers,\"placeholder\":_vm.managerLabel},on:{\"open\":_vm.searchInitialUserManager,\"search\":_vm.searchUserManager,\"option:selected\":_vm.updateUserManager},model:{value:(_vm.currentManager),callback:function ($$v) {_vm.currentManager=$$v},expression:\"currentManager\"}})]:(!_vm.isObfuscated)?_c('span',[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.user.manager)+\"\\n\\t\\t\")]):_vm._e()],2),_vm._v(\" \"),_c('td',{staticClass:\"row__cell row__cell--actions\",attrs:{\"data-cy-user-list-cell-actions\":\"\"}},[(_vm.visible && !_vm.isObfuscated && _vm.canEdit && !_vm.loading.all)?_c('UserRowActions',{attrs:{\"actions\":_vm.userActions,\"disabled\":_vm.isLoadingField,\"edit\":_vm.editing,\"user\":_vm.user},on:{\"update:edit\":_vm.toggleEdit}}):_vm._e()],1)])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/ts-loader/index.js??clonedRuleSet-4.use[1]!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./UserRowActions.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/ts-loader/index.js??clonedRuleSet-4.use[1]!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./UserRowActions.vue?vue&type=script&lang=ts\"","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('NcActions',{attrs:{\"aria-label\":_vm.t('settings', 'Toggle account actions menu'),\"disabled\":_vm.disabled,\"inline\":1}},[_c('NcActionButton',{attrs:{\"data-cy-user-list-action-toggle-edit\":`${_vm.edit}`,\"disabled\":_vm.disabled},on:{\"click\":_vm.toggleEdit},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c('NcIconSvgWrapper',{key:_vm.editSvg,attrs:{\"svg\":_vm.editSvg,\"aria-hidden\":\"true\"}})]},proxy:true}])},[_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.edit ? _vm.t('settings', 'Done') : _vm.t('settings', 'Edit'))+\"\\n\\t\\t\")]),_vm._v(\" \"),_vm._l((_vm.actions),function({ action, icon, text },index){return _c('NcActionButton',{key:index,attrs:{\"disabled\":_vm.disabled,\"aria-label\":text,\"icon\":icon},on:{\"click\":(event) => action(event, { ..._vm.user })}},[_vm._v(\"\\n\\t\\t\"+_vm._s(text)+\"\\n\\t\")])})],2)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { render, staticRenderFns } from \"./UserRowActions.vue?vue&type=template&id=645e3075\"\nimport script from \"./UserRowActions.vue?vue&type=script&lang=ts\"\nexport * from \"./UserRowActions.vue?vue&type=script&lang=ts\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","/**\n * @copyright Copyright (c) 2019 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author Greta Doci <gretadoci@gmail.com>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Roeland Jago Douma <roeland@famdouma.nl>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nexport default {\n\tprops: {\n\t\tuser: {\n\t\t\ttype: Object,\n\t\t\trequired: true,\n\t\t},\n\t\tsettings: {\n\t\t\ttype: Object,\n\t\t\tdefault: () => ({}),\n\t\t},\n\t\tgroups: {\n\t\t\ttype: Array,\n\t\t\tdefault: () => [],\n\t\t},\n\t\tsubAdminsGroups: {\n\t\t\ttype: Array,\n\t\t\tdefault: () => [],\n\t\t},\n\t\tquotaOptions: {\n\t\t\ttype: Array,\n\t\t\tdefault: () => [],\n\t\t},\n\t\tlanguages: {\n\t\t\ttype: Array,\n\t\t\trequired: true,\n\t\t},\n\t\texternalActions: {\n\t\t\ttype: Array,\n\t\t\tdefault: () => [],\n\t\t},\n\t},\n\tcomputed: {\n\t\tshowConfig() {\n\t\t\treturn this.$store.getters.getShowConfig\n\t\t},\n\n\t\t/* GROUPS MANAGEMENT */\n\t\tuserGroups() {\n\t\t\tconst userGroups = this.groups.filter(group => this.user.groups.includes(group.id))\n\t\t\treturn userGroups\n\t\t},\n\t\tuserSubAdminsGroups() {\n\t\t\tconst userSubAdminsGroups = this.subAdminsGroups.filter(group => this.user.subadmin.includes(group.id))\n\t\t\treturn userSubAdminsGroups\n\t\t},\n\t\tavailableGroups() {\n\t\t\treturn this.groups.map((group) => {\n\t\t\t\t// clone object because we don't want\n\t\t\t\t// to edit the original groups\n\t\t\t\tconst groupClone = Object.assign({}, group)\n\n\t\t\t\t// two settings here:\n\t\t\t\t// 1. user NOT in group but no permission to add\n\t\t\t\t// 2. user is in group but no permission to remove\n\t\t\t\tgroupClone.$isDisabled\n\t\t\t\t\t= (group.canAdd === false\n\t\t\t\t\t\t&& !this.user.groups.includes(group.id))\n\t\t\t\t\t|| (group.canRemove === false\n\t\t\t\t\t\t&& this.user.groups.includes(group.id))\n\t\t\t\treturn groupClone\n\t\t\t})\n\t\t},\n\n\t\t/* QUOTA MANAGEMENT */\n\t\tusedSpace() {\n\t\t\tif (this.user.quota.used) {\n\t\t\t\treturn t('settings', '{size} used', { size: OC.Util.humanFileSize(this.user.quota.used) })\n\t\t\t}\n\t\t\treturn t('settings', '{size} used', { size: OC.Util.humanFileSize(0) })\n\t\t},\n\t\tusedQuota() {\n\t\t\tlet quota = this.user.quota.quota\n\t\t\tif (quota > 0) {\n\t\t\t\tquota = Math.min(100, Math.round(this.user.quota.used / quota * 100))\n\t\t\t} else {\n\t\t\t\tconst usedInGB = this.user.quota.used / (10 * Math.pow(2, 30))\n\t\t\t\t// asymptotic curve approaching 50% at 10GB to visualize used stace with infinite quota\n\t\t\t\tquota = 95 * (1 - (1 / (usedInGB + 1)))\n\t\t\t}\n\t\t\treturn isNaN(quota) ? 0 : quota\n\t\t},\n\t\t// Mapping saved values to objects\n\t\tuserQuota() {\n\t\t\tif (this.user.quota.quota >= 0) {\n\t\t\t\t// if value is valid, let's map the quotaOptions or return custom quota\n\t\t\t\tconst humanQuota = OC.Util.humanFileSize(this.user.quota.quota)\n\t\t\t\tconst userQuota = this.quotaOptions.find(quota => quota.id === humanQuota)\n\t\t\t\treturn userQuota || { id: humanQuota, label: humanQuota }\n\t\t\t} else if (this.user.quota.quota === 'default') {\n\t\t\t\t// default quota is replaced by the proper value on load\n\t\t\t\treturn this.quotaOptions[0]\n\t\t\t}\n\t\t\treturn this.quotaOptions[1] // unlimited\n\t\t},\n\n\t\t/* PASSWORD POLICY? */\n\t\tminPasswordLength() {\n\t\t\treturn this.$store.getters.getPasswordPolicyMinLength\n\t\t},\n\n\t\t/* LANGUAGE */\n\t\tuserLanguage() {\n\t\t\tconst availableLanguages = this.languages[0].languages.concat(this.languages[1].languages)\n\t\t\tconst userLang = availableLanguages.find(lang => lang.code === this.user.language)\n\t\t\tif (typeof userLang !== 'object' && this.user.language !== '') {\n\t\t\t\treturn {\n\t\t\t\t\tcode: this.user.language,\n\t\t\t\t\tname: this.user.language,\n\t\t\t\t}\n\t\t\t} else if (this.user.language === '') {\n\t\t\t\treturn false\n\t\t\t}\n\t\t\treturn userLang\n\t\t},\n\n\t\t/* LAST LOGIN */\n\t\tuserLastLoginTooltip() {\n\t\t\tif (this.user.lastLogin > 0) {\n\t\t\t\treturn OC.Util.formatDate(this.user.lastLogin)\n\t\t\t}\n\t\t\treturn ''\n\t\t},\n\t\tuserLastLogin() {\n\t\t\tif (this.user.lastLogin > 0) {\n\t\t\t\treturn OC.Util.relativeModifiedDate(this.user.lastLogin)\n\t\t\t}\n\t\t\treturn t('settings', 'Never')\n\t\t},\n\t},\n}\n","<!--\n - @copyright Copyright (c) 2019 Gary Kim <gary@garykim.dev>\n - @copyright Copyright (c) 2018 John Molakvoæ <skjnldsv@protonmail.com>\n -\n - @author Christopher Ng <chrng8@gmail.com>\n - @author Gary Kim <gary@garykim.dev>\n - @author John Molakvoæ <skjnldsv@protonmail.com>\n -\n - @license GNU AGPL version 3 or any later version\n -\n - This program is free software: you can redistribute it and/or modify\n - it under the terms of the GNU Affero General Public License as\n - published by the Free Software Foundation, either version 3 of the\n - License, or (at your option) any later version.\n -\n - This program is distributed in the hope that it will be useful,\n - but WITHOUT ANY WARRANTY; without even the implied warranty of\n - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n - GNU Affero General Public License for more details.\n -\n - You should have received a copy of the GNU Affero General Public License\n - along with this program. If not, see <http://www.gnu.org/licenses/>.\n -\n -->\n\n<template>\n\t<tr class=\"user-list__row\"\n\t\t:data-cy-user-row=\"user.id\">\n\t\t<td class=\"row__cell row__cell--avatar\" data-cy-user-list-cell-avatar>\n\t\t\t<NcLoadingIcon v-if=\"isLoadingUser\"\n\t\t\t\t:name=\"t('settings', 'Loading account …')\"\n\t\t\t\t:size=\"32\" />\n\t\t\t<NcAvatar v-else-if=\"visible\"\n\t\t\t\tdisable-menu\n\t\t\t\t:show-user-status=\"false\"\n\t\t\t\t:user=\"user.id\" />\n\t\t</td>\n\n\t\t<td class=\"row__cell row__cell--displayname\" data-cy-user-list-cell-displayname>\n\t\t\t<template v-if=\"editing && user.backendCapabilities.setDisplayName\">\n\t\t\t\t<NcTextField ref=\"displayNameField\"\n\t\t\t\t\tclass=\"user-row-text-field\"\n\t\t\t\t\tdata-cy-user-list-input-displayname\n\t\t\t\t\t:data-loading=\"loading.displayName || undefined\"\n\t\t\t\t\t:trailing-button-label=\"t('settings', 'Submit')\"\n\t\t\t\t\t:class=\"{ 'icon-loading-small': loading.displayName }\"\n\t\t\t\t\t:show-trailing-button=\"true\"\n\t\t\t\t\t:disabled=\"loading.displayName || isLoadingField\"\n\t\t\t\t\t:label=\"t('settings', 'Change display name')\"\n\t\t\t\t\ttrailing-button-icon=\"arrowRight\"\n\t\t\t\t\t:value.sync=\"editedDisplayName\"\n\t\t\t\t\tautocapitalize=\"off\"\n\t\t\t\t\tautocomplete=\"off\"\n\t\t\t\t\tspellcheck=\"false\"\n\t\t\t\t\t@trailing-button-click=\"updateDisplayName\" />\n\t\t\t</template>\n\t\t\t<strong v-else-if=\"!isObfuscated\"\n\t\t\t\t:title=\"user.displayname?.length > 20 ? user.displayname : null\">\n\t\t\t\t{{ user.displayname }}\n\t\t\t</strong>\n\t\t</td>\n\n\t\t<td class=\"row__cell row__cell--username\" data-cy-user-list-cell-username>\n\t\t\t<span class=\"row__subtitle\">{{ user.id }}</span>\n\t\t</td>\n\n\t\t<td data-cy-user-list-cell-password\n\t\t\tclass=\"row__cell\"\n\t\t\t:class=\"{ 'row__cell--obfuscated': hasObfuscated }\">\n\t\t\t<template v-if=\"editing && settings.canChangePassword && user.backendCapabilities.setPassword\">\n\t\t\t\t<NcTextField class=\"user-row-text-field\"\n\t\t\t\t\tdata-cy-user-list-input-password\n\t\t\t\t\t:data-loading=\"loading.password || undefined\"\n\t\t\t\t\t:trailing-button-label=\"t('settings', 'Submit')\"\n\t\t\t\t\t:class=\"{'icon-loading-small': loading.password}\"\n\t\t\t\t\t:show-trailing-button=\"true\"\n\t\t\t\t\t:disabled=\"loading.password || isLoadingField\"\n\t\t\t\t\t:minlength=\"minPasswordLength\"\n\t\t\t\t\tmaxlength=\"469\"\n\t\t\t\t\t:label=\"t('settings', 'Set new password')\"\n\t\t\t\t\ttrailing-button-icon=\"arrowRight\"\n\t\t\t\t\t:value.sync=\"editedPassword\"\n\t\t\t\t\tautocapitalize=\"off\"\n\t\t\t\t\tautocomplete=\"new-password\"\n\t\t\t\t\trequired\n\t\t\t\t\tspellcheck=\"false\"\n\t\t\t\t\ttype=\"password\"\n\t\t\t\t\t@trailing-button-click=\"updatePassword\" />\n\t\t\t</template>\n\t\t\t<span v-else-if=\"isObfuscated\">\n\t\t\t\t{{ t('settings', 'You do not have permissions to see the details of this account') }}\n\t\t\t</span>\n\t\t</td>\n\n\t\t<td class=\"row__cell\" data-cy-user-list-cell-email>\n\t\t\t<template v-if=\"editing\">\n\t\t\t\t<NcTextField class=\"user-row-text-field\"\n\t\t\t\t\t:class=\"{'icon-loading-small': loading.mailAddress}\"\n\t\t\t\t\tdata-cy-user-list-input-email\n\t\t\t\t\t:data-loading=\"loading.mailAddress || undefined\"\n\t\t\t\t\t:show-trailing-button=\"true\"\n\t\t\t\t\t:trailing-button-label=\"t('settings', 'Submit')\"\n\t\t\t\t\t:label=\"t('settings', 'Set new email address')\"\n\t\t\t\t\t:disabled=\"loading.mailAddress || isLoadingField\"\n\t\t\t\t\ttrailing-button-icon=\"arrowRight\"\n\t\t\t\t\t:value.sync=\"editedMail\"\n\t\t\t\t\tautocapitalize=\"off\"\n\t\t\t\t\tautocomplete=\"email\"\n\t\t\t\t\tspellcheck=\"false\"\n\t\t\t\t\ttype=\"email\"\n\t\t\t\t\t@trailing-button-click=\"updateEmail\" />\n\t\t\t</template>\n\t\t\t<span v-else-if=\"!isObfuscated\"\n\t\t\t\t:title=\"user.email?.length > 20 ? user.email : null\">\n\t\t\t\t{{ user.email }}\n\t\t\t</span>\n\t\t</td>\n\n\t\t<td class=\"row__cell row__cell--large row__cell--multiline\" data-cy-user-list-cell-groups>\n\t\t\t<template v-if=\"editing\">\n\t\t\t\t<label class=\"hidden-visually\"\n\t\t\t\t\t:for=\"'groups' + uniqueId\">\n\t\t\t\t\t{{ t('settings', 'Add user to group') }}\n\t\t\t\t</label>\n\t\t\t\t<NcSelect data-cy-user-list-input-groups\n\t\t\t\t\t:data-loading=\"loading.groups || undefined\"\n\t\t\t\t\t:input-id=\"'groups' + uniqueId\"\n\t\t\t\t\t:close-on-select=\"false\"\n\t\t\t\t\t:disabled=\"isLoadingField\"\n\t\t\t\t\t:loading=\"loading.groups\"\n\t\t\t\t\t:multiple=\"true\"\n\t\t\t\t\t:append-to-body=\"false\"\n\t\t\t\t\t:options=\"availableGroups\"\n\t\t\t\t\t:placeholder=\"t('settings', 'Add account to group')\"\n\t\t\t\t\t:taggable=\"settings.isAdmin\"\n\t\t\t\t\t:value=\"userGroups\"\n\t\t\t\t\tlabel=\"name\"\n\t\t\t\t\t:no-wrap=\"true\"\n\t\t\t\t\t:create-option=\"(value) => ({ name: value, isCreating: true })\"\n\t\t\t\t\t@option:created=\"createGroup\"\n\t\t\t\t\t@option:selected=\"options => addUserGroup(options.at(-1))\"\n\t\t\t\t\t@option:deselected=\"removeUserGroup\" />\n\t\t\t</template>\n\t\t\t<span v-else-if=\"!isObfuscated\"\n\t\t\t\t:title=\"userGroupsLabels?.length > 40 ? userGroupsLabels : null\">\n\t\t\t\t{{ userGroupsLabels }}\n\t\t\t</span>\n\t\t</td>\n\n\t\t<td v-if=\"subAdminsGroups.length > 0 && settings.isAdmin\"\n\t\t\tdata-cy-user-list-cell-subadmins\n\t\t\tclass=\"row__cell row__cell--large row__cell--multiline\">\n\t\t\t<template v-if=\"editing && settings.isAdmin && subAdminsGroups.length > 0\">\n\t\t\t\t<label class=\"hidden-visually\"\n\t\t\t\t\t:for=\"'subadmins' + uniqueId\">\n\t\t\t\t\t{{ t('settings', 'Set account as admin for') }}\n\t\t\t\t</label>\n\t\t\t\t<NcSelect data-cy-user-list-input-subadmins\n\t\t\t\t\t:data-loading=\"loading.subadmins || undefined\"\n\t\t\t\t\t:input-id=\"'subadmins' + uniqueId\"\n\t\t\t\t\t:close-on-select=\"false\"\n\t\t\t\t\t:disabled=\"isLoadingField\"\n\t\t\t\t\t:loading=\"loading.subadmins\"\n\t\t\t\t\tlabel=\"name\"\n\t\t\t\t\t:append-to-body=\"false\"\n\t\t\t\t\t:multiple=\"true\"\n\t\t\t\t\t:no-wrap=\"true\"\n\t\t\t\t\t:options=\"subAdminsGroups\"\n\t\t\t\t\t:placeholder=\"t('settings', 'Set account as admin for')\"\n\t\t\t\t\t:value=\"userSubAdminsGroups\"\n\t\t\t\t\t@option:deselected=\"removeUserSubAdmin\"\n\t\t\t\t\t@option:selected=\"options => addUserSubAdmin(options.at(-1))\" />\n\t\t\t</template>\n\t\t\t<span v-else-if=\"!isObfuscated\"\n\t\t\t\t:title=\"userSubAdminsGroupsLabels?.length > 40 ? userSubAdminsGroupsLabels : null\">\n\t\t\t\t{{ userSubAdminsGroupsLabels }}\n\t\t\t</span>\n\t\t</td>\n\n\t\t<td class=\"row__cell\" data-cy-user-list-cell-quota>\n\t\t\t<template v-if=\"editing\">\n\t\t\t\t<label class=\"hidden-visually\"\n\t\t\t\t\t:for=\"'quota' + uniqueId\">\n\t\t\t\t\t{{ t('settings', 'Select account quota') }}\n\t\t\t\t</label>\n\t\t\t\t<NcSelect v-model=\"editedUserQuota\"\n\t\t\t\t\t:close-on-select=\"true\"\n\t\t\t\t\t:create-option=\"validateQuota\"\n\t\t\t\t\tdata-cy-user-list-input-quota\n\t\t\t\t\t:data-loading=\"loading.quota || undefined\"\n\t\t\t\t\t:disabled=\"isLoadingField\"\n\t\t\t\t\t:loading=\"loading.quota\"\n\t\t\t\t\t:append-to-body=\"false\"\n\t\t\t\t\t:clearable=\"false\"\n\t\t\t\t\t:input-id=\"'quota' + uniqueId\"\n\t\t\t\t\t:options=\"quotaOptions\"\n\t\t\t\t\t:placeholder=\"t('settings', 'Select account quota')\"\n\t\t\t\t\t:taggable=\"true\"\n\t\t\t\t\t@option:selected=\"setUserQuota\" />\n\t\t\t</template>\n\t\t\t<template v-else-if=\"!isObfuscated\">\n\t\t\t\t<span :id=\"'quota-progress' + uniqueId\">{{ userQuota }} ({{ usedSpace }})</span>\n\t\t\t\t<NcProgressBar :aria-labelledby=\"'quota-progress' + uniqueId\"\n\t\t\t\t\tclass=\"row__progress\"\n\t\t\t\t\t:class=\"{\n\t\t\t\t\t\t'row__progress--warn': usedQuota > 80,\n\t\t\t\t\t}\"\n\t\t\t\t\t:value=\"usedQuota\" />\n\t\t\t</template>\n\t\t</td>\n\n\t\t<td v-if=\"showConfig.showLanguages\"\n\t\t\tclass=\"row__cell row__cell--large\"\n\t\t\tdata-cy-user-list-cell-language>\n\t\t\t<template v-if=\"editing\">\n\t\t\t\t<label class=\"hidden-visually\"\n\t\t\t\t\t:for=\"'language' + uniqueId\">\n\t\t\t\t\t{{ t('settings', 'Set the language') }}\n\t\t\t\t</label>\n\t\t\t\t<NcSelect :id=\"'language' + uniqueId\"\n\t\t\t\t\tdata-cy-user-list-input-language\n\t\t\t\t\t:data-loading=\"loading.languages || undefined\"\n\t\t\t\t\t:allow-empty=\"false\"\n\t\t\t\t\t:disabled=\"isLoadingField\"\n\t\t\t\t\t:loading=\"loading.languages\"\n\t\t\t\t\t:clearable=\"false\"\n\t\t\t\t\t:append-to-body=\"false\"\n\t\t\t\t\t:options=\"availableLanguages\"\n\t\t\t\t\t:placeholder=\"t('settings', 'No language set')\"\n\t\t\t\t\t:value=\"userLanguage\"\n\t\t\t\t\tlabel=\"name\"\n\t\t\t\t\t@input=\"setUserLanguage\" />\n\t\t\t</template>\n\t\t\t<span v-else-if=\"!isObfuscated\">\n\t\t\t\t{{ userLanguage.name }}\n\t\t\t</span>\n\t\t</td>\n\n\t\t<td v-if=\"showConfig.showUserBackend || showConfig.showStoragePath\"\n\t\t\tdata-cy-user-list-cell-storage-location\n\t\t\tclass=\"row__cell row__cell--large\">\n\t\t\t<template v-if=\"!isObfuscated\">\n\t\t\t\t<span v-if=\"showConfig.showUserBackend\">{{ user.backend }}</span>\n\t\t\t\t<span v-if=\"showConfig.showStoragePath\"\n\t\t\t\t\t:title=\"user.storageLocation\"\n\t\t\t\t\tclass=\"row__subtitle\">\n\t\t\t\t\t{{ user.storageLocation }}\n\t\t\t\t</span>\n\t\t\t</template>\n\t\t</td>\n\n\t\t<td v-if=\"showConfig.showLastLogin\"\n\t\t\t:title=\"userLastLoginTooltip\"\n\t\t\tclass=\"row__cell\"\n\t\t\tdata-cy-user-list-cell-last-login>\n\t\t\t<span v-if=\"!isObfuscated\">{{ userLastLogin }}</span>\n\t\t</td>\n\n\t\t<td class=\"row__cell row__cell--large row__cell--fill\" data-cy-user-list-cell-manager>\n\t\t\t<template v-if=\"editing\">\n\t\t\t\t<label class=\"hidden-visually\"\n\t\t\t\t\t:for=\"'manager' + uniqueId\">\n\t\t\t\t\t{{ managerLabel }}\n\t\t\t\t</label>\n\t\t\t\t<NcSelect v-model=\"currentManager\"\n\t\t\t\t\tclass=\"select--fill\"\n\t\t\t\t\tdata-cy-user-list-input-manager\n\t\t\t\t\t:data-loading=\"loading.manager || undefined\"\n\t\t\t\t\t:input-id=\"'manager' + uniqueId\"\n\t\t\t\t\t:close-on-select=\"true\"\n\t\t\t\t\t:disabled=\"isLoadingField\"\n\t\t\t\t\t:append-to-body=\"false\"\n\t\t\t\t\t:loading=\"loadingPossibleManagers || loading.manager\"\n\t\t\t\t\tlabel=\"displayname\"\n\t\t\t\t\t:options=\"possibleManagers\"\n\t\t\t\t\t:placeholder=\"managerLabel\"\n\t\t\t\t\t@open=\"searchInitialUserManager\"\n\t\t\t\t\t@search=\"searchUserManager\"\n\t\t\t\t\t@option:selected=\"updateUserManager\" />\n\t\t\t</template>\n\t\t\t<span v-else-if=\"!isObfuscated\">\n\t\t\t\t{{ user.manager }}\n\t\t\t</span>\n\t\t</td>\n\n\t\t<td class=\"row__cell row__cell--actions\" data-cy-user-list-cell-actions>\n\t\t\t<UserRowActions v-if=\"visible && !isObfuscated && canEdit && !loading.all\"\n\t\t\t\t:actions=\"userActions\"\n\t\t\t\t:disabled=\"isLoadingField\"\n\t\t\t\t:edit=\"editing\"\n\t\t\t\t:user=\"user\"\n\t\t\t\t@update:edit=\"toggleEdit\" />\n\t\t</td>\n\t</tr>\n</template>\n\n<script>\nimport { formatFileSize, parseFileSize } from '@nextcloud/files'\nimport { getCurrentUser } from '@nextcloud/auth'\nimport { showSuccess, showError } from '@nextcloud/dialogs'\n\nimport NcAvatar from '@nextcloud/vue/dist/Components/NcAvatar.js'\nimport NcLoadingIcon from '@nextcloud/vue/dist/Components/NcLoadingIcon.js'\nimport NcProgressBar from '@nextcloud/vue/dist/Components/NcProgressBar.js'\nimport NcSelect from '@nextcloud/vue/dist/Components/NcSelect.js'\nimport NcTextField from '@nextcloud/vue/dist/Components/NcTextField.js'\n\nimport UserRowActions from './UserRowActions.vue'\n\nimport UserRowMixin from '../../mixins/UserRowMixin.js'\nimport { isObfuscated, unlimitedQuota } from '../../utils/userUtils.ts';\n\nexport default {\n\tname: 'UserRow',\n\n\tcomponents: {\n\t\tNcAvatar,\n\t\tNcLoadingIcon,\n\t\tNcProgressBar,\n\t\tNcSelect,\n\t\tNcTextField,\n\t\tUserRowActions,\n\t},\n\n\tmixins: [\n\t\tUserRowMixin,\n\t],\n\n\tprops: {\n\t\tuser: {\n\t\t\ttype: Object,\n\t\t\trequired: true,\n\t\t},\n\t\tvisible: {\n\t\t\ttype: Boolean,\n\t\t\trequired: true,\n\t\t},\n\t\tusers: {\n\t\t\ttype: Array,\n\t\t\trequired: true,\n\t\t},\n\t\thasObfuscated: {\n\t\t\ttype: Boolean,\n\t\t\trequired: true,\n\t\t},\n\t\tgroups: {\n\t\t\ttype: Array,\n\t\t\tdefault: () => [],\n\t\t},\n\t\tsubAdminsGroups: {\n\t\t\ttype: Array,\n\t\t\trequired: true,\n\t\t},\n\t\tquotaOptions: {\n\t\t\ttype: Array,\n\t\t\trequired: true,\n\t\t},\n\t\tlanguages: {\n\t\t\ttype: Array,\n\t\t\trequired: true,\n\t\t},\n\t\tsettings: {\n\t\t\ttype: Object,\n\t\t\trequired: true,\n\t\t},\n\t\texternalActions: {\n\t\t\ttype: Array,\n\t\t\tdefault: () => [],\n\t\t},\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\tselectedQuota: false,\n\t\t\trand: Math.random().toString(36).substring(2),\n\t\t\tloadingPossibleManagers: false,\n\t\t\tpossibleManagers: [],\n\t\t\tcurrentManager: '',\n\t\t\tediting: false,\n\t\t\tloading: {\n\t\t\t\tall: false,\n\t\t\t\tdisplayName: false,\n\t\t\t\tpassword: false,\n\t\t\t\tmailAddress: false,\n\t\t\t\tgroups: false,\n\t\t\t\tsubadmins: false,\n\t\t\t\tquota: false,\n\t\t\t\tdelete: false,\n\t\t\t\tdisable: false,\n\t\t\t\tlanguages: false,\n\t\t\t\twipe: false,\n\t\t\t\tmanager: false,\n\t\t\t},\n\t\t\teditedDisplayName: this.user.displayname,\n\t\t\teditedPassword: '',\n\t\t\teditedMail: this.user.email ?? '',\n\t\t}\n\t},\n\n\tcomputed: {\n\t\tmanagerLabel() {\n\t\t\t// TRANSLATORS This string describes a person's manager in the context of an organization\n\t\t\treturn t('settings', 'Set line manager')\n\t\t},\n\n\t\tisObfuscated() {\n\t\t\treturn isObfuscated(this.user)\n\t\t},\n\n\t\tshowConfig() {\n\t\t\treturn this.$store.getters.getShowConfig\n\t\t},\n\n\t\tisLoadingUser() {\n\t\t\treturn this.loading.delete || this.loading.disable || this.loading.wipe\n\t\t},\n\n\t\tisLoadingField() {\n\t\t\treturn this.loading.delete || this.loading.disable || this.loading.all\n\t\t},\n\n\t\tuniqueId() {\n\t\t\treturn encodeURIComponent(this.user.id + this.rand)\n\t\t},\n\n\t\tuserGroupsLabels() {\n\t\t\treturn this.userGroups\n\t\t\t\t.map(group => group.name)\n\t\t\t\t.join(', ')\n\t\t},\n\n\t\tuserSubAdminsGroupsLabels() {\n\t\t\treturn this.userSubAdminsGroups\n\t\t\t\t.map(group => group.name)\n\t\t\t\t.join(', ')\n\t\t},\n\n\t\tusedSpace() {\n\t\t\tif (this.user.quota?.used) {\n\t\t\t\treturn t('settings', '{size} used', { size: formatFileSize(this.user.quota?.used) })\n\t\t\t}\n\t\t\treturn t('settings', '{size} used', { size: formatFileSize(0) })\n\t\t},\n\n\t\tcanEdit() {\n\t\t\treturn getCurrentUser().uid !== this.user.id || this.settings.isAdmin\n\t\t},\n\n\t\tuserQuota() {\n\t\t\tlet quota = this.user.quota?.quota\n\n\t\t\tif (quota === 'default') {\n\t\t\t\tquota = this.settings.defaultQuota\n\t\t\t\tif (quota !== 'none') {\n\t\t\t\t\t// convert to numeric value to match what the server would usually return\n\t\t\t\t\tquota = parseFileSize(quota, true)\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// when the default quota is unlimited, the server returns -3 here, map it to \"none\"\n\t\t\tif (quota === 'none' || quota === -3) {\n\t\t\t\treturn t('settings', 'Unlimited')\n\t\t\t} else if (quota >= 0) {\n\t\t\t\treturn formatFileSize(quota)\n\t\t\t}\n\t\t\treturn formatFileSize(0)\n\t\t},\n\n\t\tuserActions() {\n\t\t\tconst actions = [\n\t\t\t\t{\n\t\t\t\t\ticon: 'icon-delete',\n\t\t\t\t\ttext: t('settings', 'Delete account'),\n\t\t\t\t\taction: this.deleteUser,\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\ticon: 'icon-delete',\n\t\t\t\t\ttext: t('settings', 'Disconnect all devices and delete local data'),\n\t\t\t\t\taction: this.wipeUserDevices,\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\ticon: this.user.enabled ? 'icon-close' : 'icon-add',\n\t\t\t\t\ttext: this.user.enabled ? t('settings', 'Disable account') : t('settings', 'Enable account'),\n\t\t\t\t\taction: this.enableDisableUser,\n\t\t\t\t},\n\t\t\t]\n\t\t\tif (this.user.email !== null && this.user.email !== '') {\n\t\t\t\tactions.push({\n\t\t\t\t\ticon: 'icon-mail',\n\t\t\t\t\ttext: t('settings', 'Resend welcome email'),\n\t\t\t\t\taction: this.sendWelcomeMail,\n\t\t\t\t})\n\t\t\t}\n\t\t\treturn actions.concat(this.externalActions)\n\t\t},\n\n\t\t// mapping saved values to objects\n\t\teditedUserQuota: {\n\t\t\tget() {\n\t\t\t\tif (this.selectedQuota !== false) {\n\t\t\t\t\treturn this.selectedQuota\n\t\t\t\t}\n\t\t\t\tif (this.settings.defaultQuota !== unlimitedQuota.id && parseFileSize(this.settings.defaultQuota, true) >= 0) {\n\t\t\t\t\t// if value is valid, let's map the quotaOptions or return custom quota\n\t\t\t\t\treturn { id: this.settings.defaultQuota, label: this.settings.defaultQuota }\n\t\t\t\t}\n\t\t\t\treturn unlimitedQuota // unlimited\n\t\t\t},\n\t\t\tset(quota) {\n\t\t\t\tthis.selectedQuota = quota\n\t\t\t},\n\t\t},\n\n\t\tavailableLanguages() {\n\t\t\treturn this.languages[0].languages.concat(this.languages[1].languages)\n\t\t},\n\t},\n\n\tasync beforeMount() {\n\t\tif (this.user.manager) {\n\t\t\tawait this.initManager(this.user.manager)\n\t\t}\n\t},\n\n\tmethods: {\n\t\twipeUserDevices() {\n\t\t\tconst userid = this.user.id\n\t\t\tOC.dialogs.confirmDestructive(\n\t\t\t\tt('settings', 'In case of lost device or exiting the organization, this can remotely wipe the Nextcloud data from all devices associated with {userid}. Only works if the devices are connected to the internet.', { userid }),\n\t\t\t\tt('settings', 'Remote wipe of devices'),\n\t\t\t\t{\n\t\t\t\t\ttype: OC.dialogs.YES_NO_BUTTONS,\n\t\t\t\t\tconfirm: t('settings', 'Wipe {userid}\\'s devices', { userid }),\n\t\t\t\t\tconfirmClasses: 'error',\n\t\t\t\t\tcancel: t('settings', 'Cancel'),\n\t\t\t\t},\n\t\t\t\t(result) => {\n\t\t\t\t\tif (result) {\n\t\t\t\t\t\tthis.loading.wipe = true\n\t\t\t\t\t\tthis.loading.all = true\n\t\t\t\t\t\tthis.$store.dispatch('wipeUserDevices', userid)\n\t\t\t\t\t\t\t.then(() => showSuccess(t('settings', 'Wiped {userid}\\'s devices', { userid })), { timeout: 2000 })\n\t\t\t\t\t\t\t.finally(() => {\n\t\t\t\t\t\t\t\tthis.loading.wipe = false\n\t\t\t\t\t\t\t\tthis.loading.all = false\n\t\t\t\t\t\t\t})\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\ttrue,\n\t\t\t)\n\t\t},\n\n\t\tfilterManagers(managers) {\n\t\t\treturn managers.filter((manager) => manager.id !== this.user.id)\n\t\t},\n\n\t\tasync initManager(userId) {\n\t\t\tawait this.$store.dispatch('getUser', userId).then(response => {\n\t\t\t\tthis.currentManager = response?.data.ocs.data\n\t\t\t})\n\t\t},\n\n\t\tasync searchInitialUserManager() {\n\t\t\tthis.loadingPossibleManagers = true\n\t\t\tawait this.searchUserManager()\n\t\t\tthis.loadingPossibleManagers = false\n\t\t},\n\n\t\tasync searchUserManager(query) {\n\t\t\tawait this.$store.dispatch('searchUsers', { offset: 0, limit: 10, search: query }).then(response => {\n\t\t\t\tconst users = response?.data ? this.filterManagers(Object.values(response?.data.ocs.data.users)) : []\n\t\t\t\tif (users.length > 0) {\n\t\t\t\t\tthis.possibleManagers = users\n\t\t\t\t}\n\t\t\t})\n\t\t},\n\n\t\tasync updateUserManager(manager) {\n\t\t\tif (manager === null) {\n\t\t\t\tthis.currentManager = ''\n\t\t\t}\n\t\t\tthis.loading.manager = true\n\t\t\ttry {\n\t\t\t\tawait this.$store.dispatch('setUserData', {\n\t\t\t\t\tuserid: this.user.id,\n\t\t\t\t\tkey: 'manager',\n\t\t\t\t\tvalue: this.currentManager ? this.currentManager.id : '',\n\t\t\t\t})\n\t\t\t} catch (error) {\n\t\t\t\t// TRANSLATORS This string describes a line manager in the context of an organization\n\t\t\t\tshowError(t('setting', 'Failed to update line manager'))\n\t\t\t\tconsole.error(error)\n\t\t\t} finally {\n\t\t\t\tthis.loading.manager = false\n\t\t\t}\n\t\t},\n\n\t\tdeleteUser() {\n\t\t\tconst userid = this.user.id\n\t\t\tOC.dialogs.confirmDestructive(\n\t\t\t\tt('settings', 'Fully delete {userid}\\'s account including all their personal files, app data, etc.', { userid }),\n\t\t\t\tt('settings', 'Account deletion'),\n\t\t\t\t{\n\t\t\t\t\ttype: OC.dialogs.YES_NO_BUTTONS,\n\t\t\t\t\tconfirm: t('settings', 'Delete {userid}\\'s account', { userid }),\n\t\t\t\t\tconfirmClasses: 'error',\n\t\t\t\t\tcancel: t('settings', 'Cancel'),\n\t\t\t\t},\n\t\t\t\t(result) => {\n\t\t\t\t\tif (result) {\n\t\t\t\t\t\tthis.loading.delete = true\n\t\t\t\t\t\tthis.loading.all = true\n\t\t\t\t\t\treturn this.$store.dispatch('deleteUser', userid)\n\t\t\t\t\t\t\t.then(() => {\n\t\t\t\t\t\t\t\tthis.loading.delete = false\n\t\t\t\t\t\t\t\tthis.loading.all = false\n\t\t\t\t\t\t\t})\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\ttrue,\n\t\t\t)\n\t\t},\n\n\t\tenableDisableUser() {\n\t\t\tthis.loading.delete = true\n\t\t\tthis.loading.all = true\n\t\t\tconst userid = this.user.id\n\t\t\tconst enabled = !this.user.enabled\n\t\t\treturn this.$store.dispatch('enableDisableUser', {\n\t\t\t\tuserid,\n\t\t\t\tenabled,\n\t\t\t})\n\t\t\t\t.then(() => {\n\t\t\t\t\tthis.loading.delete = false\n\t\t\t\t\tthis.loading.all = false\n\t\t\t\t})\n\t\t},\n\n\t\t/**\n\t\t * Set user displayName\n\t\t *\n\t\t * @param {string} displayName The display name\n\t\t */\n\t\tupdateDisplayName() {\n\t\t\tthis.loading.displayName = true\n\t\t\tthis.$store.dispatch('setUserData', {\n\t\t\t\tuserid: this.user.id,\n\t\t\t\tkey: 'displayname',\n\t\t\t\tvalue: this.editedDisplayName,\n\t\t\t}).then(() => {\n\t\t\t\tthis.loading.displayName = false\n\t\t\t\tif (this.editedDisplayName === this.user.displayname) {\n\t\t\t\t\tshowSuccess(t('setting', 'Display name was successfully changed'))\n\t\t\t\t}\n\t\t\t})\n\t\t},\n\n\t\t/**\n\t\t * Set user password\n\t\t *\n\t\t * @param {string} password The email address\n\t\t */\n\t\tupdatePassword() {\n\t\t\tthis.loading.password = true\n\t\t\tif (this.editedPassword.length === 0) {\n\t\t\t\tshowError(t('setting', \"Password can't be empty\"))\n\t\t\t\tthis.loading.password = false\n\t\t\t} else {\n\t\t\t\tthis.$store.dispatch('setUserData', {\n\t\t\t\t\tuserid: this.user.id,\n\t\t\t\t\tkey: 'password',\n\t\t\t\t\tvalue: this.editedPassword,\n\t\t\t\t}).then(() => {\n\t\t\t\t\tthis.loading.password = false\n\t\t\t\t\tthis.editedPassword = ''\n\t\t\t\t\tshowSuccess(t('setting', 'Password was successfully changed'))\n\t\t\t\t})\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Set user mailAddress\n\t\t *\n\t\t * @param {string} mailAddress The email address\n\t\t */\n\t\tupdateEmail() {\n\t\t\tthis.loading.mailAddress = true\n\t\t\tif (this.editedMail === '') {\n\t\t\t\tshowError(t('setting', \"Email can't be empty\"))\n\t\t\t\tthis.loading.mailAddress = false\n\t\t\t\tthis.editedMail = this.user.email\n\t\t\t} else {\n\t\t\t\tthis.$store.dispatch('setUserData', {\n\t\t\t\t\tuserid: this.user.id,\n\t\t\t\t\tkey: 'email',\n\t\t\t\t\tvalue: this.editedMail,\n\t\t\t\t}).then(() => {\n\t\t\t\t\tthis.loading.mailAddress = false\n\t\t\t\t\tif (this.editedMail === this.user.email) {\n\t\t\t\t\t\tshowSuccess(t('setting', 'Email was successfully changed'))\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Create a new group and add user to it\n\t\t *\n\t\t * @param {string} gid Group id\n\t\t */\n\t\tasync createGroup({ name: gid }) {\n\t\t\tthis.loading = { groups: true, subadmins: true }\n\t\t\ttry {\n\t\t\t\tawait this.$store.dispatch('addGroup', gid)\n\t\t\t\tconst userid = this.user.id\n\t\t\t\tawait this.$store.dispatch('addUserGroup', { userid, gid })\n\t\t\t} catch (error) {\n\t\t\t\tconsole.error(error)\n\t\t\t} finally {\n\t\t\t\tthis.loading = { groups: false, subadmins: false }\n\t\t\t}\n\t\t\treturn this.$store.getters.getGroups[this.groups.length]\n\t\t},\n\n\t\t/**\n\t\t * Add user to group\n\t\t *\n\t\t * @param {object} group Group object\n\t\t */\n\t\tasync addUserGroup(group) {\n\t\t\tif (group.isCreating) {\n\t\t\t\t// This is NcSelect's internal value for a new inputted group name\n\t\t\t\t// Ignore\n\t\t\t\treturn\n\t\t\t}\n\t\t\tthis.loading.groups = true\n\t\t\tconst userid = this.user.id\n\t\t\tconst gid = group.id\n\t\t\tif (group.canAdd === false) {\n\t\t\t\treturn false\n\t\t\t}\n\t\t\ttry {\n\t\t\t\tawait this.$store.dispatch('addUserGroup', { userid, gid })\n\t\t\t} catch (error) {\n\t\t\t\tconsole.error(error)\n\t\t\t} finally {\n\t\t\t\tthis.loading.groups = false\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Remove user from group\n\t\t *\n\t\t * @param {object} group Group object\n\t\t */\n\t\tasync removeUserGroup(group) {\n\t\t\tif (group.canRemove === false) {\n\t\t\t\treturn false\n\t\t\t}\n\t\t\tthis.loading.groups = true\n\t\t\tconst userid = this.user.id\n\t\t\tconst gid = group.id\n\t\t\ttry {\n\t\t\t\tawait this.$store.dispatch('removeUserGroup', {\n\t\t\t\t\tuserid,\n\t\t\t\t\tgid,\n\t\t\t\t})\n\t\t\t\tthis.loading.groups = false\n\t\t\t\t// remove user from current list if current list is the removed group\n\t\t\t\tif (this.$route.params.selectedGroup === gid) {\n\t\t\t\t\tthis.$store.commit('deleteUser', userid)\n\t\t\t\t}\n\t\t\t} catch {\n\t\t\t\tthis.loading.groups = false\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Add user to group\n\t\t *\n\t\t * @param {object} group Group object\n\t\t */\n\t\tasync addUserSubAdmin(group) {\n\t\t\tthis.loading.subadmins = true\n\t\t\tconst userid = this.user.id\n\t\t\tconst gid = group.id\n\t\t\ttry {\n\t\t\t\tawait this.$store.dispatch('addUserSubAdmin', {\n\t\t\t\t\tuserid,\n\t\t\t\t\tgid,\n\t\t\t\t})\n\t\t\t\tthis.loading.subadmins = false\n\t\t\t} catch (error) {\n\t\t\t\tconsole.error(error)\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Remove user from group\n\t\t *\n\t\t * @param {object} group Group object\n\t\t */\n\t\tasync removeUserSubAdmin(group) {\n\t\t\tthis.loading.subadmins = true\n\t\t\tconst userid = this.user.id\n\t\t\tconst gid = group.id\n\n\t\t\ttry {\n\t\t\t\tawait this.$store.dispatch('removeUserSubAdmin', {\n\t\t\t\t\tuserid,\n\t\t\t\t\tgid,\n\t\t\t\t})\n\t\t\t} catch (error) {\n\t\t\t\tconsole.error(error)\n\t\t\t} finally {\n\t\t\t\tthis.loading.subadmins = false\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Dispatch quota set request\n\t\t *\n\t\t * @param {string | object} quota Quota in readable format '5 GB' or Object {id: '5 GB', label: '5GB'}\n\t\t * @return {string}\n\t\t */\n\t\tasync setUserQuota(quota = 'none') {\n\t\t\t// Make sure correct label is set for unlimited quota\n\t\t\tif (quota === 'none') {\n\t\t\t\tquota = unlimitedQuota\n\t\t\t}\n\t\t\tthis.loading.quota = true\n\n\t\t\t// ensure we only send the preset id\n\t\t\tquota = quota.id ? quota.id : quota\n\n\t\t\ttry {\n\t\t\t\t// If human readable format, convert to raw float format\n\t\t\t\t// Else just send the raw string\n\t\t\t\tconst value = (parseFileSize(quota, true) || quota).toString()\n\t\t\t\tawait this.$store.dispatch('setUserData', {\n\t\t\t\t\tuserid: this.user.id,\n\t\t\t\t\tkey: 'quota',\n\t\t\t\t\tvalue,\n\t\t\t\t})\n\t\t\t} catch (error) {\n\t\t\t\tconsole.error(error)\n\t\t\t} finally {\n\t\t\t\tthis.loading.quota = false\n\t\t\t}\n\t\t\treturn quota\n\t\t},\n\n\t\t/**\n\t\t * Validate quota string to make sure it's a valid human file size\n\t\t *\n\t\t * @param {string | object} quota Quota in readable format '5 GB' or Object {id: '5 GB', label: '5GB'}\n\t\t * @return {object} The validated quota object or unlimited quota if input is invalid\n\t\t */\n\t\tvalidateQuota(quota) {\n\t\t\tif (typeof quota === 'object') {\n\t\t\t\tquota = quota?.id || quota.label\n\t\t\t}\n\t\t\t// only used for new presets sent through @Tag\n\t\t\tconst validQuota = parseFileSize(quota, true)\n\t\t\tif (validQuota === null) {\n\t\t\t\treturn unlimitedQuota\n\t\t\t} else {\n\t\t\t\t// unify format output\n\t\t\t\tquota = formatFileSize(parseFileSize(quota, true))\n\t\t\t\treturn { id: quota, label: quota }\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Dispatch language set request\n\t\t *\n\t\t * @param {object} lang language object {code:'en', name:'English'}\n\t\t * @return {object}\n\t\t */\n\t\tasync setUserLanguage(lang) {\n\t\t\tthis.loading.languages = true\n\t\t\t// ensure we only send the preset id\n\t\t\ttry {\n\t\t\t\tawait this.$store.dispatch('setUserData', {\n\t\t\t\t\tuserid: this.user.id,\n\t\t\t\t\tkey: 'language',\n\t\t\t\t\tvalue: lang.code,\n\t\t\t\t})\n\t\t\t\tthis.loading.languages = false\n\t\t\t} catch (error) {\n\t\t\t\tconsole.error(error)\n\t\t\t}\n\t\t\treturn lang\n\t\t},\n\n\t\t/**\n\t\t * Dispatch new welcome mail request\n\t\t */\n\t\tsendWelcomeMail() {\n\t\t\tthis.loading.all = true\n\t\t\tthis.$store.dispatch('sendWelcomeMail', this.user.id)\n\t\t\t\t.then(() => showSuccess(t('setting', 'Welcome mail sent!'), { timeout: 2000 }))\n\t\t\t\t.finally(() => {\n\t\t\t\t\tthis.loading.all = false\n\t\t\t\t})\n\t\t},\n\n\t\tasync toggleEdit() {\n\t\t\tthis.editing = !this.editing\n\t\t\tif (this.editing) {\n\t\t\t\tawait this.$nextTick()\n\t\t\t\tthis.$refs.displayNameField?.$refs?.inputField?.$refs?.input?.focus()\n\t\t\t}\n\t\t\tif (this.editedDisplayName !== this.user.displayname) {\n\t\t\t\tthis.editedDisplayName = this.user.displayname\n\t\t\t} else if (this.editedMail !== this.user.email) {\n\t\t\t\tthis.editedMail = this.user.email ?? ''\n\t\t\t}\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\n@import './shared/styles.scss';\n\n.user-list__row {\n\t@include row;\n\n\t&:hover {\n\t\tbackground-color: var(--color-background-hover);\n\n\t\t.row__cell:not(.row__cell--actions) {\n\t\t\tbackground-color: var(--color-background-hover);\n\t\t}\n\t}\n\n\t// Limit width of select in fill cell\n\t.select--fill {\n\t\tmax-width: calc(var(--cell-width-large) - (2 * var(--cell-padding)));\n\t}\n}\n\n.row {\n\t@include cell;\n\n\t&__cell {\n\t\tborder-bottom: 1px solid var(--color-border);\n\n\t\t:deep {\n\t\t\t.v-select.select {\n\t\t\t\tmin-width: var(--cell-min-width);\n\t\t\t}\n\t\t}\n\t}\n\n\t&__progress {\n\t\tmargin-top: 4px;\n\n\t\t&--warn {\n\t\t\t&::-moz-progress-bar {\n\t\t\t\tbackground: var(--color-warning) !important;\n\t\t\t}\n\t\t\t&::-webkit-progress-value {\n\t\t\t\tbackground: var(--color-warning) !important;\n\t\t\t}\n\t\t}\n\t}\n}\n</style>\n","import mod from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./UserRow.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./UserRow.vue?vue&type=script&lang=js\"","\n import API from \"!../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../../node_modules/css-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/sass-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./UserRow.vue?vue&type=style&index=0&id=2cdd4510&prod&lang=scss&scoped=true\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../../node_modules/css-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/sass-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./UserRow.vue?vue&type=style&index=0&id=2cdd4510&prod&lang=scss&scoped=true\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./UserRow.vue?vue&type=template&id=2cdd4510&scoped=true\"\nimport script from \"./UserRow.vue?vue&type=script&lang=js\"\nexport * from \"./UserRow.vue?vue&type=script&lang=js\"\nimport style0 from \"./UserRow.vue?vue&type=style&index=0&id=2cdd4510&prod&lang=scss&scoped=true\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"2cdd4510\",\n null\n \n)\n\nexport default component.exports","<!--\n - @copyright Copyright (c) 2018 John Molakvoæ <skjnldsv@protonmail.com>\n -\n - @author John Molakvoæ <skjnldsv@protonmail.com>\n -\n - @license GNU AGPL version 3 or any later version\n -\n - This program is free software: you can redistribute it and/or modify\n - it under the terms of the GNU Affero General Public License as\n - published by the Free Software Foundation, either version 3 of the\n - License, or (at your option) any later version.\n -\n - This program is distributed in the hope that it will be useful,\n - but WITHOUT ANY WARRANTY; without even the implied warranty of\n - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n - GNU Affero General Public License for more details.\n -\n - You should have received a copy of the GNU Affero General Public License\n - along with this program. If not, see <http://www.gnu.org/licenses/>.\n -\n -->\n\n<template>\n\t<Fragment>\n\t\t<NewUserModal v-if=\"showConfig.showNewUserForm\"\n\t\t\t:loading=\"loading\"\n\t\t\t:new-user=\"newUser\"\n\t\t\t:quota-options=\"quotaOptions\"\n\t\t\t@reset=\"resetForm\"\n\t\t\t@close=\"closeModal\" />\n\n\t\t<NcEmptyContent v-if=\"filteredUsers.length === 0\"\n\t\t\tclass=\"empty\"\n\t\t\t:name=\"isInitialLoad && loading.users ? null : t('settings', 'No accounts')\">\n\t\t\t<template #icon>\n\t\t\t\t<NcLoadingIcon v-if=\"isInitialLoad && loading.users\"\n\t\t\t\t\t:name=\"t('settings', 'Loading accounts …')\"\n\t\t\t\t\t:size=\"64\" />\n\t\t\t\t<NcIconSvgWrapper v-else :path=\"mdiAccountGroup\" :size=\"64\" />\n\t\t\t</template>\n\t\t</NcEmptyContent>\n\n\t\t<VirtualList v-else\n\t\t\t:data-component=\"UserRow\"\n\t\t\t:data-sources=\"filteredUsers\"\n\t\t\tdata-key=\"id\"\n\t\t\tdata-cy-user-list\n\t\t\t:item-height=\"rowHeight\"\n\t\t\t:style=\"style\"\n\t\t\t:extra-props=\"{\n\t\t\t\tusers,\n\t\t\t\tsettings,\n\t\t\t\thasObfuscated,\n\t\t\t\tgroups,\n\t\t\t\tsubAdminsGroups,\n\t\t\t\tquotaOptions,\n\t\t\t\tlanguages,\n\t\t\t\texternalActions,\n\t\t\t}\"\n\t\t\t@scroll-end=\"handleScrollEnd\">\n\t\t\t<template #before>\n\t\t\t\t<caption class=\"hidden-visually\">\n\t\t\t\t\t{{ t('settings', 'List of accounts. This list is not fully rendered for performance reasons. The accounts will be rendered as you navigate through the list.') }}\n\t\t\t\t</caption>\n\t\t\t</template>\n\n\t\t\t<template #header>\n\t\t\t\t<UserListHeader :has-obfuscated=\"hasObfuscated\" />\n\t\t\t</template>\n\n\t\t\t<template #footer>\n\t\t\t\t<UserListFooter :loading=\"loading.users\"\n\t\t\t\t\t:filtered-users=\"filteredUsers\" />\n\t\t\t</template>\n\t\t</VirtualList>\n\t</Fragment>\n</template>\n\n<script>\nimport { mdiAccountGroup } from '@mdi/js'\nimport { showError } from '@nextcloud/dialogs'\nimport { subscribe, unsubscribe } from '@nextcloud/event-bus'\nimport { Fragment } from 'vue-frag'\n\nimport Vue from 'vue'\nimport NcEmptyContent from '@nextcloud/vue/dist/Components/NcEmptyContent.js'\nimport NcIconSvgWrapper from '@nextcloud/vue/dist/Components/NcIconSvgWrapper.js'\nimport NcLoadingIcon from '@nextcloud/vue/dist/Components/NcLoadingIcon.js'\n\nimport VirtualList from './Users/VirtualList.vue'\nimport NewUserModal from './Users/NewUserModal.vue'\nimport UserListFooter from './Users/UserListFooter.vue'\nimport UserListHeader from './Users/UserListHeader.vue'\nimport UserRow from './Users/UserRow.vue'\n\nimport { defaultQuota, isObfuscated, unlimitedQuota } from '../utils/userUtils.ts'\nimport logger from '../logger.ts'\n\nconst newUser = Object.freeze({\n\tid: '',\n\tdisplayName: '',\n\tpassword: '',\n\tmailAddress: '',\n\tgroups: [],\n\tmanager: '',\n\tsubAdminsGroups: [],\n\tquota: defaultQuota,\n\tlanguage: {\n\t\tcode: 'en',\n\t\tname: t('settings', 'Default language'),\n\t},\n})\n\nexport default {\n\tname: 'UserList',\n\n\tcomponents: {\n\t\tFragment,\n\t\tNcEmptyContent,\n\t\tNcIconSvgWrapper,\n\t\tNcLoadingIcon,\n\t\tNewUserModal,\n\t\tUserListFooter,\n\t\tUserListHeader,\n\t\tVirtualList,\n\t},\n\n\tprops: {\n\t\tselectedGroup: {\n\t\t\ttype: String,\n\t\t\tdefault: null,\n\t\t},\n\t\texternalActions: {\n\t\t\ttype: Array,\n\t\t\tdefault: () => [],\n\t\t},\n\t},\n\n\tsetup() {\n\t\t// non reactive properties\n\t\treturn {\n\t\t\tmdiAccountGroup,\n\t\t\trowHeight: 55,\n\n\t\t\tUserRow,\n\t\t}\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\tloading: {\n\t\t\t\tall: false,\n\t\t\t\tgroups: false,\n\t\t\t\tusers: false,\n\t\t\t},\n\t\t\tnewUser: { ...newUser },\n\t\t\tisInitialLoad: true,\n\t\t\tsearchQuery: '',\n\t\t}\n\t},\n\n\tcomputed: {\n\t\tshowConfig() {\n\t\t\treturn this.$store.getters.getShowConfig\n\t\t},\n\n\t\tsettings() {\n\t\t\treturn this.$store.getters.getServerData\n\t\t},\n\n\t\tstyle() {\n\t\t\treturn {\n\t\t\t\t'--row-height': `${this.rowHeight}px`,\n\t\t\t}\n\t\t},\n\n\t\thasObfuscated() {\n\t\t\treturn this.filteredUsers.some(user => isObfuscated(user))\n\t\t},\n\n\t\tusers() {\n\t\t\treturn this.$store.getters.getUsers\n\t\t},\n\n\t\tfilteredUsers() {\n\t\t\tif (this.selectedGroup === 'disabled') {\n\t\t\t\treturn this.users.filter(user => user.enabled === false)\n\t\t\t}\n\t\t\tif (!this.settings.isAdmin) {\n\t\t\t\t// we don't want subadmins to edit themselves\n\t\t\t\treturn this.users.filter(user => user.enabled !== false)\n\t\t\t}\n\t\t\treturn this.users.filter(user => user.enabled !== false)\n\t\t},\n\n\t\tgroups() {\n\t\t\t// data provided php side + remove the disabled group\n\t\t\treturn this.$store.getters.getGroups\n\t\t\t\t.filter(group => group.id !== 'disabled')\n\t\t\t\t.sort((a, b) => a.name.localeCompare(b.name))\n\t\t},\n\n\t\tsubAdminsGroups() {\n\t\t\t// data provided php side\n\t\t\treturn this.$store.getters.getSubadminGroups\n\t\t},\n\n\t\tquotaOptions() {\n\t\t\t// convert the preset array into objects\n\t\t\tconst quotaPreset = this.settings.quotaPreset.reduce((acc, cur) => acc.concat({\n\t\t\t\tid: cur,\n\t\t\t\tlabel: cur,\n\t\t\t}), [])\n\t\t\t// add default presets\n\t\t\tif (this.settings.allowUnlimitedQuota) {\n\t\t\t\tquotaPreset.unshift(unlimitedQuota)\n\t\t\t}\n\t\t\tquotaPreset.unshift(defaultQuota)\n\t\t\treturn quotaPreset\n\t\t},\n\n\t\tusersOffset() {\n\t\t\treturn this.$store.getters.getUsersOffset\n\t\t},\n\n\t\tusersLimit() {\n\t\t\treturn this.$store.getters.getUsersLimit\n\t\t},\n\n\t\tdisabledUsersOffset() {\n\t\t\treturn this.$store.getters.getDisabledUsersOffset\n\t\t},\n\n\t\tdisabledUsersLimit() {\n\t\t\treturn this.$store.getters.getDisabledUsersLimit\n\t\t},\n\n\t\tusersCount() {\n\t\t\treturn this.users.length\n\t\t},\n\n\t\t/* LANGUAGES */\n\t\tlanguages() {\n\t\t\treturn [\n\t\t\t\t{\n\t\t\t\t\tlabel: t('settings', 'Common languages'),\n\t\t\t\t\tlanguages: this.settings.languages.commonLanguages,\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tlabel: t('settings', 'Other languages'),\n\t\t\t\t\tlanguages: this.settings.languages.otherLanguages,\n\t\t\t\t},\n\t\t\t]\n\t\t},\n\t},\n\n\twatch: {\n\t\t// watch url change and group select\n\t\tasync selectedGroup(val) {\n\t\t\tthis.isInitialLoad = true\n\t\t\t// if selected is the disabled group but it's empty\n\t\t\tawait this.redirectIfDisabled()\n\t\t\tthis.$store.commit('resetUsers')\n\t\t\tawait this.loadUsers()\n\t\t\tthis.setNewUserDefaultGroup(val)\n\t\t},\n\n\t\tfilteredUsers(filteredUsers) {\n\t\t\tlogger.debug(`${filteredUsers.length} filtered user(s)`)\n\t\t},\n\t},\n\n\tasync created() {\n\t\tawait this.loadUsers()\n\t},\n\n\tasync mounted() {\n\t\tif (!this.settings.canChangePassword) {\n\t\t\tOC.Notification.showTemporary(t('settings', 'Password change is disabled because the master key is disabled'))\n\t\t}\n\n\t\t/**\n\t\t * Reset and init new user form\n\t\t */\n\t\tthis.resetForm()\n\n\t\t/**\n\t\t * Register search\n\t\t */\n\t\tsubscribe('nextcloud:unified-search.search', this.search)\n\t\tsubscribe('nextcloud:unified-search.reset', this.resetSearch)\n\n\t\t/**\n\t\t * If disabled group but empty, redirect\n\t\t */\n\t\tawait this.redirectIfDisabled()\n\t},\n\n\tbeforeDestroy() {\n\t\tunsubscribe('nextcloud:unified-search.search', this.search)\n\t\tunsubscribe('nextcloud:unified-search.reset', this.resetSearch)\n\t},\n\n\tmethods: {\n\t\tasync handleScrollEnd() {\n\t\t\tawait this.loadUsers()\n\t\t},\n\n\t\tasync loadUsers() {\n\t\t\tthis.loading.users = true\n\t\t\ttry {\n\t\t\t\tif (this.selectedGroup === 'disabled') {\n\t\t\t\t\tawait this.$store.dispatch('getDisabledUsers', {\n\t\t\t\t\t\toffset: this.disabledUsersOffset,\n\t\t\t\t\t\tlimit: this.disabledUsersLimit,\n\t\t\t\t\t})\n\t\t\t\t} else {\n\t\t\t\t\tawait this.$store.dispatch('getUsers', {\n\t\t\t\t\t\toffset: this.usersOffset,\n\t\t\t\t\t\tlimit: this.usersLimit,\n\t\t\t\t\t\tgroup: this.selectedGroup,\n\t\t\t\t\t\tsearch: this.searchQuery,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t\tlogger.debug(`${this.users.length} total user(s) loaded`)\n\t\t\t} catch (error) {\n\t\t\t\tlogger.error('Failed to load accounts', { error })\n\t\t\t\tshowError('Failed to load accounts')\n\t\t\t}\n\t\t\tthis.loading.users = false\n\t\t\tthis.isInitialLoad = false\n\t\t},\n\n\t\tcloseModal() {\n\t\t\tthis.$store.commit('setShowConfig', {\n\t\t\t\tkey: 'showNewUserForm',\n\t\t\t\tvalue: false,\n\t\t\t})\n\t\t},\n\n\t\tasync search({ query }) {\n\t\t\tthis.searchQuery = query\n\t\t\tthis.$store.commit('resetUsers')\n\t\t\tawait this.loadUsers()\n\t\t},\n\n\t\tresetSearch() {\n\t\t\tthis.search({ query: '' })\n\t\t},\n\n\t\tresetForm() {\n\t\t\t// revert form to original state\n\t\t\tthis.newUser = Object.assign({}, newUser)\n\n\t\t\t/**\n\t\t\t * Init default language from server data. The use of this.settings\n\t\t\t * requires a computed variable, which break the v-model binding of the form,\n\t\t\t * this is a much easier solution than getter and setter on a computed var\n\t\t\t */\n\t\t\tif (this.settings.defaultLanguage) {\n\t\t\t\tVue.set(this.newUser.language, 'code', this.settings.defaultLanguage)\n\t\t\t}\n\n\t\t\t/**\n\t\t\t * In case the user directly loaded the user list within a group\n\t\t\t * the watch won't be triggered. We need to initialize it.\n\t\t\t */\n\t\t\tthis.setNewUserDefaultGroup(this.selectedGroup)\n\n\t\t\tthis.loading.all = false\n\t\t},\n\n\t\tsetNewUserDefaultGroup(value) {\n\t\t\tif (value && value.length > 0) {\n\t\t\t\t// setting new account default group to the current selected one\n\t\t\t\tconst currentGroup = this.groups.find(group => group.id === value)\n\t\t\t\tif (currentGroup) {\n\t\t\t\t\tthis.newUser.groups = [currentGroup]\n\t\t\t\t\treturn\n\t\t\t\t}\n\t\t\t}\n\t\t\t// fallback, empty selected group\n\t\t\tthis.newUser.groups = []\n\t\t},\n\n\t\t/**\n\t\t * If the selected group is the disabled group but the count is 0\n\t\t * redirect to the all users page.\n\t\t * we only check for 0 because we don't have the count on ldap\n\t\t * and we therefore set the usercount to -1 in this specific case\n\t\t */\n\t\tasync redirectIfDisabled() {\n\t\t\tconst allGroups = this.$store.getters.getGroups\n\t\t\tif (this.selectedGroup === 'disabled'\n\t\t\t\t\t\t&& allGroups.findIndex(group => group.id === 'disabled' && group.usercount === 0) > -1) {\n\t\t\t\t// disabled group is empty, redirection to all users\n\t\t\t\tthis.$router.push({ name: 'users' })\n\t\t\t\tawait this.loadUsers()\n\t\t\t}\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\n@import './Users/shared/styles.scss';\n\n.empty {\n\t:deep {\n\t\t.icon-vue {\n\t\t\twidth: 64px;\n\t\t\theight: 64px;\n\n\t\t\tsvg {\n\t\t\t\tmax-width: 64px;\n\t\t\t\tmax-height: 64px;\n\t\t\t}\n\t\t}\n\t}\n}\n</style>\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./UserList.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./UserList.vue?vue&type=script&lang=js\"","\n import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./UserList.vue?vue&type=style&index=0&id=a6e11582&prod&lang=scss&scoped=true\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./UserList.vue?vue&type=style&index=0&id=a6e11582&prod&lang=scss&scoped=true\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./UserList.vue?vue&type=template&id=a6e11582&scoped=true\"\nimport script from \"./UserList.vue?vue&type=script&lang=js\"\nexport * from \"./UserList.vue?vue&type=script&lang=js\"\nimport style0 from \"./UserList.vue?vue&type=style&index=0&id=a6e11582&prod&lang=scss&scoped=true\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"a6e11582\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('Fragment',[(_vm.showConfig.showNewUserForm)?_c('NewUserModal',{attrs:{\"loading\":_vm.loading,\"new-user\":_vm.newUser,\"quota-options\":_vm.quotaOptions},on:{\"reset\":_vm.resetForm,\"close\":_vm.closeModal}}):_vm._e(),_vm._v(\" \"),(_vm.filteredUsers.length === 0)?_c('NcEmptyContent',{staticClass:\"empty\",attrs:{\"name\":_vm.isInitialLoad && _vm.loading.users ? null : _vm.t('settings', 'No accounts')},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [(_vm.isInitialLoad && _vm.loading.users)?_c('NcLoadingIcon',{attrs:{\"name\":_vm.t('settings', 'Loading accounts …'),\"size\":64}}):_c('NcIconSvgWrapper',{attrs:{\"path\":_vm.mdiAccountGroup,\"size\":64}})]},proxy:true}],null,false,226056511)}):_c('VirtualList',{style:(_vm.style),attrs:{\"data-component\":_vm.UserRow,\"data-sources\":_vm.filteredUsers,\"data-key\":\"id\",\"data-cy-user-list\":\"\",\"item-height\":_vm.rowHeight,\"extra-props\":{\n\t\t\tusers: _vm.users,\n\t\t\tsettings: _vm.settings,\n\t\t\thasObfuscated: _vm.hasObfuscated,\n\t\t\tgroups: _vm.groups,\n\t\t\tsubAdminsGroups: _vm.subAdminsGroups,\n\t\t\tquotaOptions: _vm.quotaOptions,\n\t\t\tlanguages: _vm.languages,\n\t\t\texternalActions: _vm.externalActions,\n\t\t}},on:{\"scroll-end\":_vm.handleScrollEnd},scopedSlots:_vm._u([{key:\"before\",fn:function(){return [_c('caption',{staticClass:\"hidden-visually\"},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('settings', 'List of accounts. This list is not fully rendered for performance reasons. The accounts will be rendered as you navigate through the list.'))+\"\\n\\t\\t\\t\")])]},proxy:true},{key:\"header\",fn:function(){return [_c('UserListHeader',{attrs:{\"has-obfuscated\":_vm.hasObfuscated}})]},proxy:true},{key:\"footer\",fn:function(){return [_c('UserListFooter',{attrs:{\"loading\":_vm.loading.users,\"filtered-users\":_vm.filteredUsers}})]},proxy:true}])})],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./UserManagement.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./UserManagement.vue?vue&type=script&lang=js\"","<!--\n - @copyright Copyright (c) 2018 John Molakvoæ <skjnldsv@protonmail.com>\n -\n - @author John Molakvoæ <skjnldsv@protonmail.com>\n -\n - @license GNU AGPL version 3 or any later version\n -\n - This program is free software: you can redistribute it and/or modify\n - it under the terms of the GNU Affero General Public License as\n - published by the Free Software Foundation, either version 3 of the\n - License, or (at your option) any later version.\n -\n - This program is distributed in the hope that it will be useful,\n - but WITHOUT ANY WARRANTY; without even the implied warranty of\n - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n - GNU Affero General Public License for more details.\n -\n - You should have received a copy of the GNU Affero General Public License\n - along with this program. If not, see <http://www.gnu.org/licenses/>.\n -\n -->\n\n<template>\n\t<NcAppContent :page-heading=\"pageHeading\">\n\t\t<UserList :selected-group=\"selectedGroupDecoded\"\n\t\t\t:external-actions=\"externalActions\" />\n\t</NcAppContent>\n</template>\n\n<script>\nimport { translate as t } from '@nextcloud/l10n'\nimport { defineComponent } from 'vue'\n\nimport NcAppContent from '@nextcloud/vue/dist/Components/NcAppContent.js'\nimport UserList from '../components/UserList.vue'\n\nexport default defineComponent({\n\tname: 'UserManagement',\n\n\tcomponents: {\n\t\tNcAppContent,\n\t\tUserList,\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\t// temporary value used for multiselect change\n\t\t\texternalActions: [],\n\t\t}\n\t},\n\n\tcomputed: {\n\t\tpageHeading() {\n\t\t\tif (this.selectedGroupDecoded === null) {\n\t\t\t\treturn t('settings', 'Active accounts')\n\t\t\t}\n\t\t\tconst matchHeading = {\n\t\t\t\tadmin: t('settings', 'Admins'),\n\t\t\t\tdisabled: t('settings', 'Disabled accounts'),\n\t\t\t}\n\t\t\treturn matchHeading[this.selectedGroupDecoded] ?? t('settings', 'Account group: {group}', { group: this.selectedGroupDecoded })\n\t\t},\n\n\t\tselectedGroup() {\n\t\t\treturn this.$route.params.selectedGroup\n\t\t},\n\n\t\tselectedGroupDecoded() {\n\t\t\treturn this.selectedGroup ? decodeURIComponent(this.selectedGroup) : null\n\t\t},\n\t},\n\n\tbeforeMount() {\n\t\tthis.$store.commit('initGroups', {\n\t\t\tgroups: this.$store.getters.getServerData.groups,\n\t\t\torderBy: this.$store.getters.getServerData.sortGroups,\n\t\t\tuserCount: this.$store.getters.getServerData.userCount,\n\t\t})\n\t\tthis.$store.dispatch('getPasswordPolicyMinLength')\n\t},\n\n\tcreated() {\n\t\t// init the OCA.Settings.UserList object\n\t\twindow.OCA = window.OCA ?? {}\n\t\twindow.OCA.Settings = window.OCA.Settings ?? {}\n\t\twindow.OCA.Settings.UserList = window.OCA.Settings.UserList ?? {}\n\t\t// and add the registerAction method\n\t\twindow.OCA.Settings.UserList.registerAction = this.registerAction\n\t},\n\n\tmethods: {\n\t\tt,\n\n\t\t/**\n\t\t * Register a new action for the user menu\n\t\t *\n\t\t * @param {string} icon the icon class\n\t\t * @param {string} text the text to display\n\t\t * @param {Function} action the function to run\n\t\t * @return {Array}\n\t\t */\n\t\tregisterAction(icon, text, action) {\n\t\t\tthis.externalActions.push({\n\t\t\t\ticon,\n\t\t\t\ttext,\n\t\t\t\taction,\n\t\t\t})\n\t\t\treturn this.externalActions\n\t\t},\n\t},\n})\n</script>\n\n<style lang=\"scss\" scoped>\n.app-content {\n\t// Virtual list needs to be full height and is scrollable\n\tdisplay: flex;\n\toverflow: hidden;\n\tflex-direction: column;\n\tmax-height: 100%;\n}\n</style>\n","\n import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./UserManagement.vue?vue&type=style&index=0&id=fc8857fc&prod&lang=scss&scoped=true\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./UserManagement.vue?vue&type=style&index=0&id=fc8857fc&prod&lang=scss&scoped=true\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./UserManagement.vue?vue&type=template&id=fc8857fc&scoped=true\"\nimport script from \"./UserManagement.vue?vue&type=script&lang=js\"\nexport * from \"./UserManagement.vue?vue&type=script&lang=js\"\nimport style0 from \"./UserManagement.vue?vue&type=style&index=0&id=fc8857fc&prod&lang=scss&scoped=true\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"fc8857fc\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c(_setup.NcAppNavigation,{attrs:{\"aria-label\":_setup.t('settings', 'Account management')},scopedSlots:_vm._u([{key:\"footer\",fn:function(){return [_c(_setup.NcButton,{staticClass:\"account-management__settings-toggle\",attrs:{\"type\":\"tertiary\"},on:{\"click\":function($event){_setup.isDialogOpen = true}},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c(_setup.NcIconSvgWrapper,{attrs:{\"path\":_setup.mdiCog}})]},proxy:true}])},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_setup.t('settings', 'Account management settings'))+\"\\n\\t\\t\")]),_vm._v(\" \"),_c(_setup.UserSettingsDialog,{attrs:{\"open\":_setup.isDialogOpen},on:{\"update:open\":function($event){_setup.isDialogOpen=$event}}})]},proxy:true}])},[_c(_setup.NcAppNavigationNew,{attrs:{\"button-id\":\"new-user-button\",\"text\":_setup.t('settings','New account')},on:{\"click\":_setup.showNewUserMenu,\"keyup\":[function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"enter\",13,$event.key,\"Enter\"))return null;return _setup.showNewUserMenu.apply(null, arguments)},function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"space\",32,$event.key,[\" \",\"Spacebar\"]))return null;return _setup.showNewUserMenu.apply(null, arguments)}]},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c(_setup.NcIconSvgWrapper,{attrs:{\"path\":_setup.mdiPlus}})]},proxy:true}])}),_vm._v(\" \"),_c(_setup.NcAppNavigationList,{staticClass:\"account-management__system-list\",attrs:{\"data-cy-users-settings-navigation-groups\":\"system\"}},[_c(_setup.NcAppNavigationItem,{attrs:{\"id\":\"everyone\",\"exact\":true,\"name\":_setup.t('settings', 'Active accounts'),\"to\":{ name: 'users' }},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c(_setup.NcIconSvgWrapper,{attrs:{\"path\":_setup.mdiAccount}})]},proxy:true},{key:\"counter\",fn:function(){return [(_setup.userCount)?_c(_setup.NcCounterBubble,{attrs:{\"type\":!_setup.selectedGroupDecoded ? 'highlighted' : undefined}},[_vm._v(\"\\n\\t\\t\\t\\t\\t\"+_vm._s(_setup.userCount)+\"\\n\\t\\t\\t\\t\")]):_vm._e()]},proxy:true}])}),_vm._v(\" \"),(_setup.isAdmin)?_c(_setup.NcAppNavigationItem,{attrs:{\"id\":\"admin\",\"exact\":true,\"name\":_setup.t('settings', 'Admins'),\"to\":{ name: 'group', params: { selectedGroup: 'admin' } }},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c(_setup.NcIconSvgWrapper,{attrs:{\"path\":_setup.mdiShieldAccount}})]},proxy:true},{key:\"counter\",fn:function(){return [(_setup.adminGroup && _setup.adminGroup.count > 0)?_c(_setup.NcCounterBubble,{attrs:{\"type\":_setup.selectedGroupDecoded === 'admin' ? 'highlighted' : undefined}},[_vm._v(\"\\n\\t\\t\\t\\t\\t\"+_vm._s(_setup.adminGroup.count)+\"\\n\\t\\t\\t\\t\")]):_vm._e()]},proxy:true}],null,false,2218088905)}):_vm._e(),_vm._v(\" \"),(_setup.disabledGroup && (_setup.disabledGroup.usercount > 0 || _setup.disabledGroup.usercount === -1))?_c(_setup.NcAppNavigationItem,{attrs:{\"id\":\"disabled\",\"exact\":true,\"name\":_setup.t('settings', 'Disabled accounts'),\"to\":{ name: 'group', params: { selectedGroup: 'disabled' } }},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c(_setup.NcIconSvgWrapper,{attrs:{\"path\":_setup.mdiAccountOff}})]},proxy:true},(_setup.disabledGroup.usercount > 0)?{key:\"counter\",fn:function(){return [_c(_setup.NcCounterBubble,{attrs:{\"type\":_setup.selectedGroupDecoded === 'disabled' ? 'highlighted' : undefined}},[_vm._v(\"\\n\\t\\t\\t\\t\\t\"+_vm._s(_setup.disabledGroup.usercount)+\"\\n\\t\\t\\t\\t\")])]},proxy:true}:null],null,true)}):_vm._e()],1),_vm._v(\" \"),_c(_setup.NcAppNavigationCaption,{attrs:{\"name\":_setup.t('settings', 'Groups'),\"disabled\":_setup.loadingAddGroup,\"aria-label\":_setup.loadingAddGroup ? _setup.t('settings', 'Creating group…') : _setup.t('settings', 'Create group'),\"force-menu\":\"\",\"is-heading\":\"\",\"open\":_setup.isAddGroupOpen},on:{\"update:open\":function($event){_setup.isAddGroupOpen=$event}},scopedSlots:_vm._u([{key:\"actionsTriggerIcon\",fn:function(){return [(_setup.loadingAddGroup)?_c(_setup.NcLoadingIcon):_c(_setup.NcIconSvgWrapper,{attrs:{\"path\":_setup.mdiPlus}})]},proxy:true},{key:\"actions\",fn:function(){return [_c(_setup.NcActionText,{scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c('AccountGroup',{attrs:{\"size\":20}})]},proxy:true}])},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_setup.t('settings', 'Create group'))+\"\\n\\t\\t\\t\")]),_vm._v(\" \"),_c(_setup.NcActionInput,{attrs:{\"label\":_setup.t('settings', 'Group name'),\"data-cy-users-settings-new-group-name\":\"\",\"label-outside\":false,\"disabled\":_setup.loadingAddGroup,\"value\":_setup.newGroupName,\"error\":_setup.hasAddGroupError,\"helper-text\":_setup.hasAddGroupError ? _setup.t('settings', 'Please enter a valid group name') : ''},on:{\"update:value\":function($event){_setup.newGroupName=$event},\"submit\":_setup.createGroup}})]},proxy:true}])}),_vm._v(\" \"),_c(_setup.NcAppNavigationList,{staticClass:\"account-management__group-list\",attrs:{\"data-cy-users-settings-navigation-groups\":\"custom\"}},_vm._l((_setup.userGroups),function(group){return _c(_setup.GroupListItem,{key:group.id,attrs:{\"id\":group.id,\"active\":_setup.selectedGroupDecoded === group.id,\"name\":group.title,\"count\":group.count}})}),1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\n - @copyright Copyright (c) 2021 Martin Jänel <spammemore@posteo.de>\n -\n - @author Martin Jänel <spammemore@posteo.de>\n -\n - @license GNU AGPL version 3 or any later version\n -\n - This program is free software: you can redistribute it and/or modify\n - it under the terms of the GNU Affero General Public License as\n - published by the Free Software Foundation, either version 3 of the\n - License, or (at your option) any later version.\n -\n - This program is distributed in the hope that it will be useful,\n - but WITHOUT ANY WARRANTY; without even the implied warranty of\n - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n - GNU Affero General Public License for more details.\n -\n - You should have received a copy of the GNU Affero General Public License\n - along with this program. If not, see <http://www.gnu.org/licenses/>.\n -\n -->\n\n<template>\n\t<Fragment>\n\t\t<NcModal v-if=\"showRemoveGroupModal\"\n\t\t\t@close=\"showRemoveGroupModal = false\">\n\t\t\t<div class=\"modal__content\">\n\t\t\t\t<h2 class=\"modal__header\">\n\t\t\t\t\t{{ t('settings', 'Please confirm the group removal') }}\n\t\t\t\t</h2>\n\t\t\t\t<NcNoteCard type=\"warning\"\n\t\t\t\t\tshow-alert>\n\t\t\t\t\t{{ t('settings', 'You are about to remove the group \"{group}\". The accounts will NOT be deleted.', { group: name }) }}\n\t\t\t\t</NcNoteCard>\n\t\t\t\t<div class=\"modal__button-row\">\n\t\t\t\t\t<NcButton type=\"secondary\"\n\t\t\t\t\t\t@click=\"showRemoveGroupModal = false\">\n\t\t\t\t\t\t{{ t('settings', 'Cancel') }}\n\t\t\t\t\t</NcButton>\n\t\t\t\t\t<NcButton type=\"primary\"\n\t\t\t\t\t\t@click=\"removeGroup\">\n\t\t\t\t\t\t{{ t('settings', 'Confirm') }}\n\t\t\t\t\t</NcButton>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</NcModal>\n\n\t\t<NcAppNavigationItem :key=\"id\"\n\t\t\t:exact=\"true\"\n\t\t\t:name=\"name\"\n\t\t\t:to=\"{ name: 'group', params: { selectedGroup: encodeURIComponent(id) } }\"\n\t\t\t:loading=\"loadingRenameGroup\"\n\t\t\t:menu-open=\"openGroupMenu\"\n\t\t\t@update:menuOpen=\"handleGroupMenuOpen\">\n\t\t\t<template #icon>\n\t\t\t\t<AccountGroup :size=\"20\" />\n\t\t\t</template>\n\t\t\t<template #counter>\n\t\t\t\t<NcCounterBubble v-if=\"count\"\n\t\t\t\t\t:type=\"active ? 'highlighted' : undefined\">\n\t\t\t\t\t{{ count }}\n\t\t\t\t</NcCounterBubble>\n\t\t\t</template>\n\t\t\t<template #actions>\n\t\t\t\t<NcActionInput v-if=\"id !== 'admin' && id !== 'disabled' && settings.isAdmin\"\n\t\t\t\t\tref=\"displayNameInput\"\n\t\t\t\t\t:trailing-button-label=\"t('settings', 'Submit')\"\n\t\t\t\t\ttype=\"text\"\n\t\t\t\t\t:value=\"name\"\n\t\t\t\t\t:label=\" t('settings', 'Rename group')\"\n\t\t\t\t\t@submit=\"renameGroup(id)\">\n\t\t\t\t\t<template #icon>\n\t\t\t\t\t\t<Pencil :size=\"20\" />\n\t\t\t\t\t</template>\n\t\t\t\t</NcActionInput>\n\t\t\t\t<NcActionButton v-if=\"id !== 'admin' && id !== 'disabled' && settings.isAdmin\"\n\t\t\t\t\t@click=\"showRemoveGroupModal = true\">\n\t\t\t\t\t<template #icon>\n\t\t\t\t\t\t<Delete :size=\"20\" />\n\t\t\t\t\t</template>\n\t\t\t\t\t{{ t('settings', 'Remove group') }}\n\t\t\t\t</NcActionButton>\n\t\t\t</template>\n\t\t</NcAppNavigationItem>\n\t</Fragment>\n</template>\n\n<script>\nimport { Fragment } from 'vue-frag'\n\nimport NcActionButton from '@nextcloud/vue/dist/Components/NcActionButton.js'\nimport NcActionInput from '@nextcloud/vue/dist/Components/NcActionInput.js'\nimport NcAppNavigationItem from '@nextcloud/vue/dist/Components/NcAppNavigationItem.js'\nimport NcButton from '@nextcloud/vue/dist/Components/NcButton.js'\nimport NcCounterBubble from '@nextcloud/vue/dist/Components/NcCounterBubble.js'\nimport NcModal from '@nextcloud/vue/dist/Components/NcModal.js'\nimport NcNoteCard from '@nextcloud/vue/dist/Components/NcNoteCard.js'\n\nimport AccountGroup from 'vue-material-design-icons/AccountGroup.vue'\nimport Delete from 'vue-material-design-icons/Delete.vue'\nimport Pencil from 'vue-material-design-icons/Pencil.vue'\n\nimport { showError } from '@nextcloud/dialogs'\n\nexport default {\n\tname: 'GroupListItem',\n\tcomponents: {\n\t\tAccountGroup,\n\t\tDelete,\n\t\tFragment,\n\t\tNcActionButton,\n\t\tNcActionInput,\n\t\tNcAppNavigationItem,\n\t\tNcButton,\n\t\tNcCounterBubble,\n\t\tNcModal,\n\t\tNcNoteCard,\n\t\tPencil,\n\t},\n\tprops: {\n\t\t/**\n\t\t * If this group is currently selected\n\t\t */\n\t\tactive: {\n\t\t\ttype: Boolean,\n\t\t\trequired: true,\n\t\t},\n\t\t/**\n\t\t * Number of members within this group\n\t\t */\n\t\tcount: {\n\t\t\ttype: Number,\n\t\t\tdefault: null,\n\t\t},\n\t\t/**\n\t\t * Identifier of this group\n\t\t */\n\t\tid: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t\t/**\n\t\t * Name of this group\n\t\t */\n\t\tname: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t},\n\tdata() {\n\t\treturn {\n\t\t\tloadingRenameGroup: false,\n\t\t\topenGroupMenu: false,\n\t\t\tshowRemoveGroupModal: false,\n\t\t}\n\t},\n\tcomputed: {\n\t\tsettings() {\n\t\t\treturn this.$store.getters.getServerData\n\t\t},\n\t},\n\tmethods: {\n\t\thandleGroupMenuOpen() {\n\t\t\tthis.openGroupMenu = true\n\t\t},\n\t\tasync renameGroup(gid) {\n\t\t\t// check if group id is valid\n\t\t\tif (gid.trim() === '') {\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\tconst displayName = this.$refs.displayNameInput.$el.querySelector('input[type=\"text\"]').value\n\n\t\t\t// check if group name is valid\n\t\t\tif (displayName.trim() === '') {\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\ttry {\n\t\t\t\tthis.openGroupMenu = false\n\t\t\t\tthis.loadingRenameGroup = true\n\t\t\t\tawait this.$store.dispatch('renameGroup', {\n\t\t\t\t\tgroupid: gid.trim(),\n\t\t\t\t\tdisplayName: displayName.trim(),\n\t\t\t\t})\n\n\t\t\t\tthis.loadingRenameGroup = false\n\t\t\t} catch {\n\t\t\t\tthis.openGroupMenu = true\n\t\t\t\tthis.loadingRenameGroup = false\n\t\t\t}\n\t\t},\n\t\tasync removeGroup() {\n\t\t\ttry {\n\t\t\t\tawait this.$store.dispatch('removeGroup', this.id)\n\t\t\t\tthis.showRemoveGroupModal = false\n\t\t\t} catch (error) {\n\t\t\t\tshowError(t('settings', 'Failed to remove group \"{group}\"', { group: this.name }))\n\t\t\t}\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\n.modal {\n\t&__header {\n\t\tmargin: 0;\n\t}\n\n\t&__content {\n\t\tdisplay: flex;\n\t\tflex-direction: column;\n\t\talign-items: center;\n\t\tpadding: 20px;\n\t\tgap: 4px 0;\n\t}\n\n\t&__button-row {\n\t\tdisplay: flex;\n\t\twidth: 100%;\n\t\tjustify-content: space-between;\n\t}\n}\n</style>\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./GroupListItem.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./GroupListItem.vue?vue&type=script&lang=js\"","\n import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./GroupListItem.vue?vue&type=style&index=0&id=17dd13c0&prod&lang=scss&scoped=true\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./GroupListItem.vue?vue&type=style&index=0&id=17dd13c0&prod&lang=scss&scoped=true\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./GroupListItem.vue?vue&type=template&id=17dd13c0&scoped=true\"\nimport script from \"./GroupListItem.vue?vue&type=script&lang=js\"\nexport * from \"./GroupListItem.vue?vue&type=script&lang=js\"\nimport style0 from \"./GroupListItem.vue?vue&type=style&index=0&id=17dd13c0&prod&lang=scss&scoped=true\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"17dd13c0\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('Fragment',[(_vm.showRemoveGroupModal)?_c('NcModal',{on:{\"close\":function($event){_vm.showRemoveGroupModal = false}}},[_c('div',{staticClass:\"modal__content\"},[_c('h2',{staticClass:\"modal__header\"},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('settings', 'Please confirm the group removal'))+\"\\n\\t\\t\\t\")]),_vm._v(\" \"),_c('NcNoteCard',{attrs:{\"type\":\"warning\",\"show-alert\":\"\"}},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('settings', 'You are about to remove the group \"{group}\". The accounts will NOT be deleted.', { group: _vm.name }))+\"\\n\\t\\t\\t\")]),_vm._v(\" \"),_c('div',{staticClass:\"modal__button-row\"},[_c('NcButton',{attrs:{\"type\":\"secondary\"},on:{\"click\":function($event){_vm.showRemoveGroupModal = false}}},[_vm._v(\"\\n\\t\\t\\t\\t\\t\"+_vm._s(_vm.t('settings', 'Cancel'))+\"\\n\\t\\t\\t\\t\")]),_vm._v(\" \"),_c('NcButton',{attrs:{\"type\":\"primary\"},on:{\"click\":_vm.removeGroup}},[_vm._v(\"\\n\\t\\t\\t\\t\\t\"+_vm._s(_vm.t('settings', 'Confirm'))+\"\\n\\t\\t\\t\\t\")])],1)],1)]):_vm._e(),_vm._v(\" \"),_c('NcAppNavigationItem',{key:_vm.id,attrs:{\"exact\":true,\"name\":_vm.name,\"to\":{ name: 'group', params: { selectedGroup: encodeURIComponent(_vm.id) } },\"loading\":_vm.loadingRenameGroup,\"menu-open\":_vm.openGroupMenu},on:{\"update:menuOpen\":_vm.handleGroupMenuOpen},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c('AccountGroup',{attrs:{\"size\":20}})]},proxy:true},{key:\"counter\",fn:function(){return [(_vm.count)?_c('NcCounterBubble',{attrs:{\"type\":_vm.active ? 'highlighted' : undefined}},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.count)+\"\\n\\t\\t\\t\")]):_vm._e()]},proxy:true},{key:\"actions\",fn:function(){return [(_vm.id !== 'admin' && _vm.id !== 'disabled' && _vm.settings.isAdmin)?_c('NcActionInput',{ref:\"displayNameInput\",attrs:{\"trailing-button-label\":_vm.t('settings', 'Submit'),\"type\":\"text\",\"value\":_vm.name,\"label\":_vm.t('settings', 'Rename group')},on:{\"submit\":function($event){return _vm.renameGroup(_vm.id)}},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c('Pencil',{attrs:{\"size\":20}})]},proxy:true}],null,false,580569589)}):_vm._e(),_vm._v(\" \"),(_vm.id !== 'admin' && _vm.id !== 'disabled' && _vm.settings.isAdmin)?_c('NcActionButton',{on:{\"click\":function($event){_vm.showRemoveGroupModal = true}},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c('Delete',{attrs:{\"size\":20}})]},proxy:true}],null,false,2705356561)},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('settings', 'Remove group'))+\"\\n\\t\\t\\t\")]):_vm._e()]},proxy:true}])})],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('NcAppSettingsDialog',{attrs:{\"open\":_vm.isModalOpen,\"show-navigation\":true,\"name\":_vm.t('settings', 'Account management settings')},on:{\"update:open\":function($event){_vm.isModalOpen=$event}}},[_c('NcAppSettingsSection',{attrs:{\"id\":\"visibility-settings\",\"name\":_vm.t('settings', 'Visibility')}},[_c('NcCheckboxRadioSwitch',{attrs:{\"type\":\"switch\",\"data-test\":\"showLanguages\",\"checked\":_vm.showLanguages},on:{\"update:checked\":function($event){_vm.showLanguages=$event}}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('settings', 'Show language'))+\"\\n\\t\\t\")]),_vm._v(\" \"),_c('NcCheckboxRadioSwitch',{attrs:{\"type\":\"switch\",\"data-test\":\"showUserBackend\",\"checked\":_vm.showUserBackend},on:{\"update:checked\":function($event){_vm.showUserBackend=$event}}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('settings', 'Show account backend'))+\"\\n\\t\\t\")]),_vm._v(\" \"),_c('NcCheckboxRadioSwitch',{attrs:{\"type\":\"switch\",\"data-test\":\"showStoragePath\",\"checked\":_vm.showStoragePath},on:{\"update:checked\":function($event){_vm.showStoragePath=$event}}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('settings', 'Show storage path'))+\"\\n\\t\\t\")]),_vm._v(\" \"),_c('NcCheckboxRadioSwitch',{attrs:{\"type\":\"switch\",\"data-test\":\"showLastLogin\",\"checked\":_vm.showLastLogin},on:{\"update:checked\":function($event){_vm.showLastLogin=$event}}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('settings', 'Show last login'))+\"\\n\\t\\t\")])],1),_vm._v(\" \"),_c('NcAppSettingsSection',{attrs:{\"id\":\"groups-sorting\",\"name\":_vm.t('settings', 'Sorting')}},[(_vm.isGroupSortingEnforced)?_c('NcNoteCard',{attrs:{\"type\":\"warning\"}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('settings', 'The system config enforces sorting the groups by name. This also disables showing the member count.'))+\"\\n\\t\\t\")]):_vm._e(),_vm._v(\" \"),_c('fieldset',[_c('legend',[_vm._v(_vm._s(_vm.t('settings', 'Group list sorting')))]),_vm._v(\" \"),_c('NcCheckboxRadioSwitch',{attrs:{\"type\":\"radio\",\"checked\":_vm.groupSorting,\"data-test\":\"sortGroupsByMemberCount\",\"disabled\":_vm.isGroupSortingEnforced,\"name\":\"group-sorting-mode\",\"value\":\"member-count\"},on:{\"update:checked\":function($event){_vm.groupSorting=$event}}},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('settings', 'By member count'))+\"\\n\\t\\t\\t\")]),_vm._v(\" \"),_c('NcCheckboxRadioSwitch',{attrs:{\"type\":\"radio\",\"checked\":_vm.groupSorting,\"data-test\":\"sortGroupsByName\",\"disabled\":_vm.isGroupSortingEnforced,\"name\":\"group-sorting-mode\",\"value\":\"name\"},on:{\"update:checked\":function($event){_vm.groupSorting=$event}}},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('settings', 'By name'))+\"\\n\\t\\t\\t\")])],1)],1),_vm._v(\" \"),_c('NcAppSettingsSection',{attrs:{\"id\":\"email-settings\",\"name\":_vm.t('settings', 'Send email')}},[_c('NcCheckboxRadioSwitch',{attrs:{\"type\":\"switch\",\"data-test\":\"sendWelcomeMail\",\"checked\":_vm.sendWelcomeMail,\"disabled\":_vm.loadingSendMail},on:{\"update:checked\":function($event){_vm.sendWelcomeMail=$event}}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('settings', 'Send welcome email to new accounts'))+\"\\n\\t\\t\")])],1),_vm._v(\" \"),_c('NcAppSettingsSection',{attrs:{\"id\":\"default-settings\",\"name\":_vm.t('settings', 'Defaults')}},[_c('NcSelect',{attrs:{\"input-label\":_vm.t('settings', 'Default quota'),\"placement\":\"top\",\"taggable\":true,\"options\":_vm.quotaOptions,\"create-option\":_vm.validateQuota,\"placeholder\":_vm.t('settings', 'Select default quota'),\"clearable\":false},on:{\"option:selected\":_vm.setDefaultQuota},model:{value:(_vm.defaultQuota),callback:function ($$v) {_vm.defaultQuota=$$v},expression:\"defaultQuota\"}})],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\n\t- @copyright 2023 Christopher Ng <chrng8@gmail.com>\n\t-\n\t- @author Christopher Ng <chrng8@gmail.com>\n\t-\n\t- @license AGPL-3.0-or-later\n\t-\n\t- This program is free software: you can redistribute it and/or modify\n\t- it under the terms of the GNU Affero General Public License as\n\t- published by the Free Software Foundation, either version 3 of the\n\t- License, or (at your option) any later version.\n\t-\n\t- This program is distributed in the hope that it will be useful,\n\t- but WITHOUT ANY WARRANTY; without even the implied warranty of\n\t- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n\t- GNU Affero General Public License for more details.\n\t-\n\t- You should have received a copy of the GNU Affero General Public License\n\t- along with this program. If not, see <http://www.gnu.org/licenses/>.\n\t-\n-->\n\n<template>\n\t<NcAppSettingsDialog :open.sync=\"isModalOpen\"\n\t\t:show-navigation=\"true\"\n\t\t:name=\"t('settings', 'Account management settings')\">\n\t\t<NcAppSettingsSection id=\"visibility-settings\"\n\t\t\t:name=\"t('settings', 'Visibility')\">\n\t\t\t<NcCheckboxRadioSwitch type=\"switch\"\n\t\t\t\tdata-test=\"showLanguages\"\n\t\t\t\t:checked.sync=\"showLanguages\">\n\t\t\t\t{{ t('settings', 'Show language') }}\n\t\t\t</NcCheckboxRadioSwitch>\n\t\t\t<NcCheckboxRadioSwitch type=\"switch\"\n\t\t\t\tdata-test=\"showUserBackend\"\n\t\t\t\t:checked.sync=\"showUserBackend\">\n\t\t\t\t{{ t('settings', 'Show account backend') }}\n\t\t\t</NcCheckboxRadioSwitch>\n\t\t\t<NcCheckboxRadioSwitch type=\"switch\"\n\t\t\t\tdata-test=\"showStoragePath\"\n\t\t\t\t:checked.sync=\"showStoragePath\">\n\t\t\t\t{{ t('settings', 'Show storage path') }}\n\t\t\t</NcCheckboxRadioSwitch>\n\t\t\t<NcCheckboxRadioSwitch type=\"switch\"\n\t\t\t\tdata-test=\"showLastLogin\"\n\t\t\t\t:checked.sync=\"showLastLogin\">\n\t\t\t\t{{ t('settings', 'Show last login') }}\n\t\t\t</NcCheckboxRadioSwitch>\n\t\t</NcAppSettingsSection>\n\n\t\t<NcAppSettingsSection id=\"groups-sorting\"\n\t\t\t:name=\"t('settings', 'Sorting')\">\n\t\t\t<NcNoteCard v-if=\"isGroupSortingEnforced\" type=\"warning\">\n\t\t\t\t{{ t('settings', 'The system config enforces sorting the groups by name. This also disables showing the member count.') }}\n\t\t\t</NcNoteCard>\n\t\t\t<fieldset>\n\t\t\t\t<legend>{{ t('settings', 'Group list sorting') }}</legend>\n\t\t\t\t<NcCheckboxRadioSwitch type=\"radio\"\n\t\t\t\t\t:checked.sync=\"groupSorting\"\n\t\t\t\t\tdata-test=\"sortGroupsByMemberCount\"\n\t\t\t\t\t:disabled=\"isGroupSortingEnforced\"\n\t\t\t\t\tname=\"group-sorting-mode\"\n\t\t\t\t\tvalue=\"member-count\">\n\t\t\t\t\t{{ t('settings', 'By member count') }}\n\t\t\t\t</NcCheckboxRadioSwitch>\n\t\t\t\t<NcCheckboxRadioSwitch type=\"radio\"\n\t\t\t\t\t:checked.sync=\"groupSorting\"\n\t\t\t\t\tdata-test=\"sortGroupsByName\"\n\t\t\t\t\t:disabled=\"isGroupSortingEnforced\"\n\t\t\t\t\tname=\"group-sorting-mode\"\n\t\t\t\t\tvalue=\"name\">\n\t\t\t\t\t{{ t('settings', 'By name') }}\n\t\t\t\t</NcCheckboxRadioSwitch>\n\t\t\t</fieldset>\n\t\t</NcAppSettingsSection>\n\n\t\t<NcAppSettingsSection id=\"email-settings\"\n\t\t\t:name=\"t('settings', 'Send email')\">\n\t\t\t<NcCheckboxRadioSwitch type=\"switch\"\n\t\t\t\tdata-test=\"sendWelcomeMail\"\n\t\t\t\t:checked.sync=\"sendWelcomeMail\"\n\t\t\t\t:disabled=\"loadingSendMail\">\n\t\t\t\t{{ t('settings', 'Send welcome email to new accounts') }}\n\t\t\t</NcCheckboxRadioSwitch>\n\t\t</NcAppSettingsSection>\n\n\t\t<NcAppSettingsSection id=\"default-settings\"\n\t\t\t:name=\"t('settings', 'Defaults')\">\n\t\t\t<NcSelect v-model=\"defaultQuota\"\n\t\t\t\t:input-label=\"t('settings', 'Default quota')\"\n\t\t\t\tplacement=\"top\"\n\t\t\t\t:taggable=\"true\"\n\t\t\t\t:options=\"quotaOptions\"\n\t\t\t\t:create-option=\"validateQuota\"\n\t\t\t\t:placeholder=\"t('settings', 'Select default quota')\"\n\t\t\t\t:clearable=\"false\"\n\t\t\t\t@option:selected=\"setDefaultQuota\" />\n\t\t</NcAppSettingsSection>\n\t</NcAppSettingsDialog>\n</template>\n\n<script>\nimport { formatFileSize, parseFileSize } from '@nextcloud/files'\nimport { generateUrl } from '@nextcloud/router'\n\nimport axios from '@nextcloud/axios'\nimport NcAppSettingsDialog from '@nextcloud/vue/dist/Components/NcAppSettingsDialog.js'\nimport NcAppSettingsSection from '@nextcloud/vue/dist/Components/NcAppSettingsSection.js'\nimport NcCheckboxRadioSwitch from '@nextcloud/vue/dist/Components/NcCheckboxRadioSwitch.js'\nimport NcNoteCard from '@nextcloud/vue/dist/Components/NcNoteCard.js'\nimport NcSelect from '@nextcloud/vue/dist/Components/NcSelect.js'\n\nimport { GroupSorting } from '../../constants/GroupManagement.ts'\nimport { unlimitedQuota } from '../../utils/userUtils.ts'\n\nexport default {\n\tname: 'UserSettingsDialog',\n\n\tcomponents: {\n\t\tNcAppSettingsDialog,\n\t\tNcAppSettingsSection,\n\t\tNcCheckboxRadioSwitch,\n\t\tNcNoteCard,\n\t\tNcSelect,\n\t},\n\n\tprops: {\n\t\topen: {\n\t\t\ttype: Boolean,\n\t\t\trequired: true,\n\t\t},\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\tselectedQuota: false,\n\t\t\tloadingSendMail: false,\n\t\t}\n\t},\n\n\tcomputed: {\n\t\tgroupSorting: {\n\t\t\tget() {\n\t\t\t\treturn this.$store.getters.getGroupSorting === GroupSorting.GroupName ? 'name' : 'member-count'\n\t\t\t},\n\t\t\tset(sorting) {\n\t\t\t\tthis.$store.commit('setGroupSorting', sorting === 'name' ? GroupSorting.GroupName : GroupSorting.UserCount)\n\t\t\t},\n\t\t},\n\n\t\t/**\n\t\t * Admin has configured `sort_groups_by_name` in the system config\n\t\t */\n\t\tisGroupSortingEnforced() {\n\t\t\treturn this.$store.getters.getServerData.forceSortGroupByName\n\t\t},\n\n\t\tisModalOpen: {\n\t\t\tget() {\n\t\t\t\treturn this.open\n\t\t\t},\n\t\t\tset(open) {\n\t\t\t\tthis.$emit('update:open', open)\n\t\t\t},\n\t\t},\n\n\t\tshowConfig() {\n\t\t\treturn this.$store.getters.getShowConfig\n\t\t},\n\n\t\tsettings() {\n\t\t\treturn this.$store.getters.getServerData\n\t\t},\n\n\t\tshowLanguages: {\n\t\t\tget() {\n\t\t\t\treturn this.showConfig.showLanguages\n\t\t\t},\n\t\t\tset(status) {\n\t\t\t\tthis.setShowConfig('showLanguages', status)\n\t\t\t},\n\t\t},\n\n\t\tshowLastLogin: {\n\t\t\tget() {\n\t\t\t\treturn this.showConfig.showLastLogin\n\t\t\t},\n\t\t\tset(status) {\n\t\t\t\tthis.setShowConfig('showLastLogin', status)\n\t\t\t},\n\t\t},\n\n\t\tshowUserBackend: {\n\t\t\tget() {\n\t\t\t\treturn this.showConfig.showUserBackend\n\t\t\t},\n\t\t\tset(status) {\n\t\t\t\tthis.setShowConfig('showUserBackend', status)\n\t\t\t},\n\t\t},\n\n\t\tshowStoragePath: {\n\t\t\tget() {\n\t\t\t\treturn this.showConfig.showStoragePath\n\t\t\t},\n\t\t\tset(status) {\n\t\t\t\tthis.setShowConfig('showStoragePath', status)\n\t\t\t},\n\t\t},\n\n\t\tquotaOptions() {\n\t\t\t// convert the preset array into objects\n\t\t\tconst quotaPreset = this.settings.quotaPreset.reduce((acc, cur) => acc.concat({ id: cur, label: cur }), [])\n\t\t\t// add default presets\n\t\t\tif (this.settings.allowUnlimitedQuota) {\n\t\t\t\tquotaPreset.unshift(unlimitedQuota)\n\t\t\t}\n\t\t\treturn quotaPreset\n\t\t},\n\n\t\tdefaultQuota: {\n\t\t\tget() {\n\t\t\t\tif (this.selectedQuota !== false) {\n\t\t\t\t\treturn this.selectedQuota\n\t\t\t\t}\n\t\t\t\tif (this.settings.defaultQuota !== unlimitedQuota.id && OC.Util.computerFileSize(this.settings.defaultQuota) >= 0) {\n\t\t\t\t\t// if value is valid, let's map the quotaOptions or return custom quota\n\t\t\t\t\treturn { id: this.settings.defaultQuota, label: this.settings.defaultQuota }\n\t\t\t\t}\n\t\t\t\treturn unlimitedQuota // unlimited\n\t\t\t},\n\t\t\tset(quota) {\n\t\t\t\tthis.selectedQuota = quota\n\t\t\t},\n\t\t},\n\n\t\tsendWelcomeMail: {\n\t\t\tget() {\n\t\t\t\treturn this.settings.newUserSendEmail\n\t\t\t},\n\t\t\tasync set(value) {\n\t\t\t\ttry {\n\t\t\t\t\tthis.loadingSendMail = true\n\t\t\t\t\tthis.$store.commit('setServerData', {\n\t\t\t\t\t\t...this.settings,\n\t\t\t\t\t\tnewUserSendEmail: value,\n\t\t\t\t\t})\n\t\t\t\t\tawait axios.post(generateUrl('/settings/users/preferences/newUser.sendEmail'), { value: value ? 'yes' : 'no' })\n\t\t\t\t} catch (e) {\n\t\t\t\t\tconsole.error('could not update newUser.sendEmail preference: ' + e.message, e)\n\t\t\t\t} finally {\n\t\t\t\t\tthis.loadingSendMail = false\n\t\t\t\t}\n\t\t\t},\n\t\t},\n\t},\n\n\tmethods: {\n\t\tsetShowConfig(key, status) {\n\t\t\tthis.$store.commit('setShowConfig', { key, value: status })\n\t\t},\n\n\t\t/**\n\t\t * Validate quota string to make sure it's a valid human file size\n\t\t *\n\t\t * @param {string | object} quota Quota in readable format '5 GB' or Object {id: '5 GB', label: '5GB'}\n\t\t * @return {object} The validated quota object or unlimited quota if input is invalid\n\t\t */\n\t\tvalidateQuota(quota) {\n\t\t\tif (typeof quota === 'object') {\n\t\t\t\tquota = quota?.id || quota.label\n\t\t\t}\n\t\t\t// only used for new presets sent through @Tag\n\t\t\tconst validQuota = parseFileSize(quota)\n\t\t\tif (validQuota === null) {\n\t\t\t\treturn unlimitedQuota\n\t\t\t} else {\n\t\t\t\t// unify format output\n\t\t\t\tquota = formatFileSize(parseFileSize(quota))\n\t\t\t\treturn { id: quota, label: quota }\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Dispatch default quota set request\n\t\t *\n\t\t * @param {string | object} quota Quota in readable format '5 GB' or Object {id: '5 GB', label: '5GB'}\n\t\t */\n\t\tsetDefaultQuota(quota = 'none') {\n\t\t\t// Make sure correct label is set for unlimited quota\n\t\t\tif (quota === 'none') {\n\t\t\t\tquota = unlimitedQuota\n\t\t\t}\n\t\t\tthis.$store.dispatch('setAppConfig', {\n\t\t\t\tapp: 'files',\n\t\t\t\tkey: 'default_quota',\n\t\t\t\t// ensure we only send the preset id\n\t\t\t\tvalue: quota.id ? quota.id : quota,\n\t\t\t}).then(() => {\n\t\t\t\tif (typeof quota !== 'object') {\n\t\t\t\t\tquota = { id: quota, label: quota }\n\t\t\t\t}\n\t\t\t\tthis.defaultQuota = quota\n\t\t\t})\n\t\t},\n\t},\n}\n</script>\n\n<style scoped lang=\"scss\">\nfieldset {\n\tfont-weight: bold;\n}\n</style>\n","import mod from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./UserSettingsDialog.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./UserSettingsDialog.vue?vue&type=script&lang=js\"","\n import API from \"!../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../../node_modules/css-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/sass-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./UserSettingsDialog.vue?vue&type=style&index=0&id=ab9299ba&prod&scoped=true&lang=scss\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../../node_modules/css-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/sass-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./UserSettingsDialog.vue?vue&type=style&index=0&id=ab9299ba&prod&scoped=true&lang=scss\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./UserSettingsDialog.vue?vue&type=template&id=ab9299ba&scoped=true\"\nimport script from \"./UserSettingsDialog.vue?vue&type=script&lang=js\"\nexport * from \"./UserSettingsDialog.vue?vue&type=script&lang=js\"\nimport style0 from \"./UserSettingsDialog.vue?vue&type=style&index=0&id=ab9299ba&prod&scoped=true&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"ab9299ba\",\n null\n \n)\n\nexport default component.exports","import { computed } from 'vue';\n/**\n * Format a group to a menu entry\n *\n * @param group the group\n */\nfunction formatGroupMenu(group) {\n if (typeof group === 'undefined') {\n return null;\n }\n const item = {\n id: group.id,\n title: group.name,\n usercount: group.usercount,\n count: Math.max(0, group.usercount - group.disabled),\n };\n return item;\n}\nexport const useFormatGroups = (groups) => {\n /**\n * All non-disabled non-admin groups\n */\n const userGroups = computed(() => {\n const formatted = groups.value\n // filter out disabled and admin\n .filter(group => group.id !== 'disabled' && group.id !== 'admin')\n // format group\n .map(group => formatGroupMenu(group))\n // remove invalid\n .filter(group => group !== null);\n return formatted;\n });\n /**\n * The admin group if found otherwise null\n */\n const adminGroup = computed(() => formatGroupMenu(groups.value.find(group => group.id === 'admin')));\n /**\n * The group of disabled users\n */\n const disabledGroup = computed(() => formatGroupMenu(groups.value.find(group => group.id === 'disabled')));\n return { adminGroup, disabledGroup, userGroups };\n};\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-4.use[1]!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./UserManagementNavigation.vue?vue&type=script&setup=true&lang=ts\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-4.use[1]!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./UserManagementNavigation.vue?vue&type=script&setup=true&lang=ts\"","\n import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./UserManagementNavigation.vue?vue&type=style&index=0&id=9b250646&prod&scoped=true&lang=scss\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./UserManagementNavigation.vue?vue&type=style&index=0&id=9b250646&prod&scoped=true&lang=scss\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./UserManagementNavigation.vue?vue&type=template&id=9b250646&scoped=true\"\nimport script from \"./UserManagementNavigation.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./UserManagementNavigation.vue?vue&type=script&setup=true&lang=ts\"\nimport style0 from \"./UserManagementNavigation.vue?vue&type=style&index=0&id=9b250646&prod&scoped=true&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"9b250646\",\n null\n \n)\n\nexport default component.exports"],"names":["unlimitedQuota","id","label","t","defaultQuota","isObfuscated","user","keys","Object","length","at","___CSS_LOADER_EXPORT___","push","module","Vue","directive","vElementVisibility","extend","name","props","dataComponent","type","Function","required","dataKey","String","dataSources","Array","itemHeight","Number","extraProps","default","data","bufferItems","index","headerHeight","tableHeight","resizeObserver","computed","startIndex","Math","max","shownItems","ceil","renderedItems","slice","tbodyStyle","isOverScrolled","lastIndex","hiddenAfterItems","min","paddingTop","concat","paddingBottom","mounted","_this$$refs","_this$$refs2","root","$el","tfoot","$refs","thead","ResizeObserver","debounce","_thead$clientHeight","_root$clientHeight","clientHeight","logger","debug","onScroll","observe","addEventListener","beforeDestroy","disconnect","methods","handleFooterVisibility","visible","$emit","round","scrollTop","options","styleTagTransform","setAttributes","insert","domAPI","insertStyleElement","locals","_vm","this","_c","_self","_setupProxy","staticClass","_t","_v","ref","attrs","style","_l","item","i","_b","key","tag","directives","rawName","value","expression","components","NcButton","NcModal","NcPasswordField","NcSelect","NcTextField","loading","newUser","quotaOptions","possibleManagers","managerLabel","showConfig","$store","getters","getShowConfig","settings","getServerData","usernameLabel","newUserGenerateUserID","minPasswordLength","getPasswordPolicyMinLength","groups","getGroups","filter","group","sort","a","b","localeCompare","subAdminsGroups","getSubadminGroups","canAddGroups","map","assign","$isDisabled","canAdd","languages","commonLanguages","otherLanguages","beforeMount","searchUserManager","createUser","all","_this$$refs$username","_this$$refs$username$","dispatch","userid","password","displayName","email","mailAddress","subadmin","quota","language","code","manager","username","inputField","input","focus","call","error","response","ocs","meta","statuscode","_this$$refs$username2","_this$$refs$username3","_this$$refs$password","_this$$refs$password$","handleGroupInput","Boolean","createGroup","_ref","gid","find","validateQuota","validQuota","OC","Util","computerFileSize","humanFileSize","languageFilterBy","option","search","some","_ref2","toLocaleLowerCase","includes","query","offset","limit","then","users","values","_g","$listeners","on","$event","preventDefault","apply","arguments","_s","$set","newUserRequireEmail","_e","isAdmin","model","callback","$$v","showLanguages","class","NcLoadingIcon","filteredUsers","userCount","n","hasObfuscated","passwordLabel","showUserBackend","showStoragePath","showLastLogin","defineComponent","NcActionButton","NcActions","NcIconSvgWrapper","actions","disabled","edit","editSvg","toggleEdit","scopedSlots","_u","fn","proxy","action","icon","text","event","externalActions","userGroups","userSubAdminsGroups","availableGroups","groupClone","canRemove","usedSpace","used","size","usedQuota","pow","isNaN","userQuota","humanQuota","userLanguage","userLang","lang","userLastLoginTooltip","lastLogin","formatDate","userLastLogin","relativeModifiedDate","NcAvatar","NcProgressBar","UserRowActions","mixins","UserRowMixin","_this$user$email","selectedQuota","rand","random","toString","substring","loadingPossibleManagers","currentManager","editing","subadmins","delete","disable","wipe","editedDisplayName","displayname","editedPassword","editedMail","isLoadingUser","isLoadingField","uniqueId","encodeURIComponent","userGroupsLabels","join","userSubAdminsGroupsLabels","_this$user$quota","_this$user$quota2","formatFileSize","canEdit","getCurrentUser","uid","_this$user$quota3","parseFileSize","userActions","deleteUser","wipeUserDevices","enabled","enableDisableUser","sendWelcomeMail","editedUserQuota","get","set","availableLanguages","initManager","dialogs","confirmDestructive","YES_NO_BUTTONS","confirm","confirmClasses","cancel","result","showSuccess","timeout","finally","filterManagers","managers","userId","searchInitialUserManager","updateUserManager","showError","console","updateDisplayName","updatePassword","updateEmail","addUserGroup","isCreating","removeUserGroup","$route","params","selectedGroup","commit","addUserSubAdmin","removeUserSubAdmin","setUserQuota","undefined","_quota","setUserLanguage","_this$$refs$displayNa","$nextTick","displayNameField","_this$user$email2","_vm$user$displayname","_vm$user$email","_vm$userGroupsLabels","_vm$userSubAdminsGrou","backendCapabilities","setDisplayName","canChangePassword","setPassword","backend","storageLocation","freeze","Fragment","NcEmptyContent","NewUserModal","UserListFooter","UserListHeader","VirtualList","setup","mdiAccountGroup","rowHeight","UserRow","isInitialLoad","searchQuery","getUsers","quotaPreset","reduce","acc","cur","allowUnlimitedQuota","unshift","usersOffset","getUsersOffset","usersLimit","getUsersLimit","disabledUsersOffset","getDisabledUsersOffset","disabledUsersLimit","getDisabledUsersLimit","usersCount","watch","val","redirectIfDisabled","loadUsers","setNewUserDefaultGroup","created","Notification","showTemporary","resetForm","subscribe","resetSearch","unsubscribe","handleScrollEnd","closeModal","defaultLanguage","currentGroup","allGroups","findIndex","usercount","$router","showNewUserForm","NcAppContent","UserList","pageHeading","_matchHeading$this$se","selectedGroupDecoded","admin","decodeURIComponent","orderBy","sortGroups","_window$OCA","_window$OCA$Settings","_window$OCA$Settings$","window","OCA","Settings","registerAction","AccountGroup","Delete","NcActionInput","NcAppNavigationItem","NcCounterBubble","NcNoteCard","Pencil","active","count","loadingRenameGroup","openGroupMenu","showRemoveGroupModal","handleGroupMenuOpen","renameGroup","trim","displayNameInput","querySelector","groupid","removeGroup","NcAppSettingsDialog","NcAppSettingsSection","NcCheckboxRadioSwitch","open","loadingSendMail","groupSorting","getGroupSorting","GroupSorting","GroupName","sorting","UserCount","isGroupSortingEnforced","forceSortGroupByName","isModalOpen","status","setShowConfig","newUserSendEmail","axios","post","generateUrl","e","message","setDefaultQuota","app","formatGroupMenu","title","_defineComponent","__name","__props","route","useRoute","router","useRouter","store","useStore","isDialogOpen","_route$params","getUserCount","getSortedGroups","adminGroup","disabledGroup","useFormatGroups","isAddGroupOpen","loadingAddGroup","hasAddGroupError","newGroupName","__sfc","groupId","showNewUserMenu","mdiAccount","mdiAccountOff","mdiCog","mdiPlus","mdiShieldAccount","NcActionText","NcAppNavigation","NcAppNavigationCaption","NcAppNavigationList","NcAppNavigationNew","GroupListItem","UserSettingsDialog","_setup","indexOf","_k","keyCode"],"sourceRoot":""}
\ No newline at end of file diff --git a/dist/settings-vue-settings-admin-sharing.js b/dist/settings-vue-settings-admin-sharing.js index fbe04608fe4..7075a0a9067 100644 --- a/dist/settings-vue-settings-admin-sharing.js +++ b/dist/settings-vue-settings-admin-sharing.js @@ -1,3 +1,3 @@ -/*! For license information please see settings-vue-settings-admin-sharing.js.license?v=1bd19a3231a58f9938c0 */ -(()=>{var t,n,e,r={45402:(t,n,e)=>{"use strict";var r=e(85471),i=e(76333),u=e(38613),o=e(53334),a=e(85168);const s=(0,r.pM)({name:"SelectSharingPermissions",components:{NcCheckboxRadioSwitch:i.AO},props:{value:{type:Number,required:!0}},emits:{"update:value":t=>"number"==typeof t},data:()=>({PERMISSION_UPDATE:2,PERMISSION_CREATE:4,PERMISSION_DELETE:8,PERMISSION_SHARE:16}),computed:{canCreate(){return 0!=(this.value&this.PERMISSION_CREATE)},canUpdate(){return 0!=(this.value&this.PERMISSION_UPDATE)},canDelete(){return 0!=(this.value&this.PERMISSION_DELETE)},canShare(){return 0!=(this.value&this.PERMISSION_SHARE)}},methods:{t:o.Tl,toggle(t){this.$emit("update:value",this.value^t)}}});var c=e(85072),l=e.n(c),f=e(97825),h=e.n(f),p=e(77659),g=e.n(p),d=e(55056),v=e.n(d),_=e(10540),y=e.n(_),m=e(41113),w=e.n(m),b=e(16222),x={};x.styleTagTransform=w(),x.setAttributes=v(),x.insert=g().bind(null,"head"),x.domAPI=h(),x.insertStyleElement=y(),l()(b.A,x),b.A&&b.A.locals&&b.A.locals;var A=e(14486);const S=(0,A.A)(s,(function(){var t=this,n=t._self._c;return t._self._setupProxy,n("fieldset",{staticClass:"permissions-select"},[n("NcCheckboxRadioSwitch",{attrs:{checked:t.canCreate},on:{"update:checked":function(n){return t.toggle(t.PERMISSION_CREATE)}}},[t._v("\n\t\t"+t._s(t.t("settings","Create"))+"\n\t")]),t._v(" "),n("NcCheckboxRadioSwitch",{attrs:{checked:t.canUpdate},on:{"update:checked":function(n){return t.toggle(t.PERMISSION_UPDATE)}}},[t._v("\n\t\t"+t._s(t.t("settings","Change"))+"\n\t")]),t._v(" "),n("NcCheckboxRadioSwitch",{attrs:{checked:t.canDelete},on:{"update:checked":function(n){return t.toggle(t.PERMISSION_DELETE)}}},[t._v("\n\t\t"+t._s(t.t("settings","Delete"))+"\n\t")]),t._v(" "),n("NcCheckboxRadioSwitch",{attrs:{checked:t.canShare},on:{"update:checked":function(n){return t.toggle(t.PERMISSION_SHARE)}}},[t._v("\n\t\t"+t._s(t.t("settings","Reshare"))+"\n\t")])],1)}),[],!1,null,"54c0ce93",null).exports;var k=e(2543),E=e(96763);const C=(0,r.pM)({name:"AdminSettingsSharingForm",components:{NcCheckboxRadioSwitch:i.AO,NcSettingsSelectGroup:i.C7,NcTextArea:i.gb,NcTextField:i.v,SelectSharingPermissions:S},data:()=>({settingsData:(0,u.C)("settings","sharingSettings")}),computed:{settings(){return E.warn("new proxy"),new Proxy(this.settingsData,{get:(t,n)=>t[n],set(t,n,e){const r="shareapi_".concat((0,k.snakeCase)(n)),i="boolean"==typeof e?e?"yes":"no":"string"==typeof e?e:JSON.stringify(e);return window.OCP.AppConfig.setValue("core",r,i),t[n]=e,!0}})},publicShareDisclaimerEnabled:{get(){return"string"==typeof this.settingsData.publicShareDisclaimerText},set(t){t?this.settingsData.publicShareDisclaimerText="":this.onUpdateDisclaimer()}}},methods:{t:o.Tl,onUpdateDisclaimer:(0,k.debounce)((function(t){const n={success(){t?(0,a.Te)((0,o.Tl)("settings","Changed disclaimer text")):(0,a.Te)((0,o.Tl)("settings","Deleted disclaimer text"))},error(){(0,a.Qg)((0,o.Tl)("settings","Could not set disclaimer text"))}};t?window.OCP.AppConfig.setValue("core","shareapi_public_link_disclaimertext",t,n):window.OCP.AppConfig.deleteKey("core","shareapi_public_link_disclaimertext",n),this.settingsData.publicShareDisclaimerText=t}),500),onUpdateExcludeGroups:(0,k.debounce)((function(t){window.OCP.AppConfig.setValue("core","excludeGroups",t),this.settings.excludeGroups=t}),500)}}),N=C;var R=e(72343),I={};I.styleTagTransform=w(),I.setAttributes=v(),I.insert=g().bind(null,"head"),I.domAPI=h(),I.insertStyleElement=y(),l()(R.A,I),R.A&&R.A.locals&&R.A.locals;const O=(0,A.A)(N,(function(){var t=this,n=t._self._c;return t._self._setupProxy,n("form",{staticClass:"sharing"},[n("NcCheckboxRadioSwitch",{attrs:{"aria-controls":"settings-sharing-api settings-sharing-api-settings settings-sharing-default-permissions settings-sharing-privary-related",type:"switch",checked:t.settings.enabled},on:{"update:checked":function(n){return t.$set(t.settings,"enabled",n)}}},[t._v("\n\t\t"+t._s(t.t("settings","Allow apps to use the Share API"))+"\n\t")]),t._v(" "),n("div",{directives:[{name:"show",rawName:"v-show",value:t.settings.enabled,expression:"settings.enabled"}],staticClass:"sharing__sub-section",attrs:{id:"settings-sharing-api-settings"}},[n("NcCheckboxRadioSwitch",{attrs:{checked:t.settings.allowResharing},on:{"update:checked":function(n){return t.$set(t.settings,"allowResharing",n)}}},[t._v("\n\t\t\t"+t._s(t.t("settings","Allow resharing"))+"\n\t\t")]),t._v(" "),n("NcCheckboxRadioSwitch",{attrs:{checked:t.settings.allowGroupSharing},on:{"update:checked":function(n){return t.$set(t.settings,"allowGroupSharing",n)}}},[t._v("\n\t\t\t"+t._s(t.t("settings","Allow sharing with groups"))+"\n\t\t")]),t._v(" "),n("NcCheckboxRadioSwitch",{attrs:{checked:t.settings.onlyShareWithGroupMembers},on:{"update:checked":function(n){return t.$set(t.settings,"onlyShareWithGroupMembers",n)}}},[t._v("\n\t\t\t"+t._s(t.t("settings","Restrict users to only share with users in their groups"))+"\n\t\t")]),t._v(" "),n("div",{directives:[{name:"show",rawName:"v-show",value:t.settings.onlyShareWithGroupMembers,expression:"settings.onlyShareWithGroupMembers"}],staticClass:"sharing__labeled-entry sharing__input",attrs:{id:"settings-sharing-api-excluded-groups"}},[n("label",{attrs:{for:"settings-sharing-only-group-members-excluded-groups"}},[t._v(t._s(t.t("settings","Ignore the following groups when checking group membership")))]),t._v(" "),n("NcSettingsSelectGroup",{staticStyle:{width:"100%"},attrs:{id:"settings-sharing-only-group-members-excluded-groups",label:t.t("settings","Ignore the following groups when checking group membership")},model:{value:t.settings.onlyShareWithGroupMembersExcludeGroupList,callback:function(n){t.$set(t.settings,"onlyShareWithGroupMembersExcludeGroupList",n)},expression:"settings.onlyShareWithGroupMembersExcludeGroupList"}})],1)],1),t._v(" "),n("div",{directives:[{name:"show",rawName:"v-show",value:t.settings.enabled,expression:"settings.enabled"}],staticClass:"sharing__section",attrs:{id:"settings-sharing-api"}},[n("NcCheckboxRadioSwitch",{attrs:{type:"switch","aria-controls":"settings-sharing-api-public-link",checked:t.settings.allowLinks},on:{"update:checked":function(n){return t.$set(t.settings,"allowLinks",n)}}},[t._v("\n\t\t\t"+t._s(t.t("settings","Allow users to share via link and emails"))+"\n\t\t")]),t._v(" "),n("fieldset",{directives:[{name:"show",rawName:"v-show",value:t.settings.allowLinks,expression:"settings.allowLinks"}],staticClass:"sharing__sub-section",attrs:{id:"settings-sharing-api-public-link"}},[n("NcCheckboxRadioSwitch",{attrs:{checked:t.settings.allowPublicUpload},on:{"update:checked":function(n){return t.$set(t.settings,"allowPublicUpload",n)}}},[t._v("\n\t\t\t\t"+t._s(t.t("settings","Allow public uploads"))+"\n\t\t\t")]),t._v(" "),n("NcCheckboxRadioSwitch",{attrs:{checked:t.settings.enableLinkPasswordByDefault},on:{"update:checked":function(n){return t.$set(t.settings,"enableLinkPasswordByDefault",n)}}},[t._v("\n\t\t\t\t"+t._s(t.t("settings","Always ask for a password"))+"\n\t\t\t")]),t._v(" "),n("NcCheckboxRadioSwitch",{attrs:{checked:t.settings.enforceLinksPassword,disabled:!t.settings.enableLinkPasswordByDefault},on:{"update:checked":function(n){return t.$set(t.settings,"enforceLinksPassword",n)}}},[t._v("\n\t\t\t\t"+t._s(t.t("settings","Enforce password protection"))+"\n\t\t\t")]),t._v(" "),t.settings.passwordExcludedGroupsFeatureEnabled?n("label",{staticClass:"sharing__labeled-entry sharing__input"},[n("span",[t._v(t._s(t.t("settings","Exclude groups from password requirements")))]),t._v(" "),n("NcSettingsSelectGroup",{staticStyle:{width:"100%"},attrs:{disabled:!t.settings.enforceLinksPassword||!t.settings.enableLinkPasswordByDefault},model:{value:t.settings.passwordExcludedGroups,callback:function(n){t.$set(t.settings,"passwordExcludedGroups",n)},expression:"settings.passwordExcludedGroups"}})],1):t._e(),t._v(" "),n("label",{staticClass:"sharing__labeled-entry sharing__input"},[n("span",[t._v(t._s(t.t("settings","Exclude groups from creating link shares")))]),t._v(" "),n("NcSettingsSelectGroup",{staticStyle:{width:"100%"},attrs:{label:t.t("settings","Exclude groups from creating link shares")},model:{value:t.settings.allowLinksExcludeGroups,callback:function(n){t.$set(t.settings,"allowLinksExcludeGroups",n)},expression:"settings.allowLinksExcludeGroups"}})],1)],1),t._v(" "),n("label",[t._v(t._s(t.t("settings","Limit sharing based on groups")))]),t._v(" "),n("div",{staticClass:"sharing__sub-section"},[n("NcCheckboxRadioSwitch",{attrs:{checked:t.settings.excludeGroups,name:"excludeGroups",value:"no",type:"radio"},on:{"update:checked":[function(n){return t.$set(t.settings,"excludeGroups",n)},t.onUpdateExcludeGroups]}},[t._v("\n\t\t\t\t"+t._s(t.t("settings","Allow sharing for everyone (default)"))+"\n\t\t\t")]),t._v(" "),n("NcCheckboxRadioSwitch",{attrs:{checked:t.settings.excludeGroups,name:"excludeGroups",value:"yes",type:"radio"},on:{"update:checked":[function(n){return t.$set(t.settings,"excludeGroups",n)},t.onUpdateExcludeGroups]}},[t._v("\n\t\t\t\t"+t._s(t.t("settings","Exclude some groups from sharing"))+"\n\t\t\t")]),t._v(" "),n("NcCheckboxRadioSwitch",{attrs:{checked:t.settings.excludeGroups,name:"excludeGroups",value:"allow",type:"radio"},on:{"update:checked":[function(n){return t.$set(t.settings,"excludeGroups",n)},t.onUpdateExcludeGroups]}},[t._v("\n\t\t\t\t"+t._s(t.t("settings","Limit sharing to some groups"))+"\n\t\t\t")]),t._v(" "),n("div",{directives:[{name:"show",rawName:"v-show",value:"no"!==t.settings.excludeGroups,expression:"settings.excludeGroups !== 'no'"}],staticClass:"sharing__labeled-entry sharing__input"},[n("NcSettingsSelectGroup",{staticStyle:{width:"100%"},attrs:{id:"settings-sharing-excluded-groups","aria-describedby":"settings-sharing-excluded-groups-desc",label:"allow"===t.settings.excludeGroups?t.t("settings","Groups allowed to share"):t.t("settings","Groups excluded from sharing"),disabled:"no"===t.settings.excludeGroups},model:{value:t.settings.excludeGroupsList,callback:function(n){t.$set(t.settings,"excludeGroupsList",n)},expression:"settings.excludeGroupsList"}}),t._v(" "),n("em",{attrs:{id:"settings-sharing-excluded-groups-desc"}},[t._v(t._s(t.t("settings","Not allowed groups will still be able to receive shares, but not to initiate them.")))])],1)],1),t._v(" "),n("NcCheckboxRadioSwitch",{attrs:{type:"switch","aria-controls":"settings-sharing-api-expiration",checked:t.settings.defaultInternalExpireDate},on:{"update:checked":function(n){return t.$set(t.settings,"defaultInternalExpireDate",n)}}},[t._v("\n\t\t\t"+t._s(t.t("settings","Set default expiration date for shares"))+"\n\t\t")]),t._v(" "),n("fieldset",{directives:[{name:"show",rawName:"v-show",value:t.settings.defaultInternalExpireDate,expression:"settings.defaultInternalExpireDate"}],staticClass:"sharing__sub-section",attrs:{id:"settings-sharing-api-expiration"}},[n("NcCheckboxRadioSwitch",{attrs:{checked:t.settings.enforceInternalExpireDate},on:{"update:checked":function(n){return t.$set(t.settings,"enforceInternalExpireDate",n)}}},[t._v("\n\t\t\t\t"+t._s(t.t("settings","Enforce expiration date"))+"\n\t\t\t")]),t._v(" "),n("NcTextField",{staticClass:"sharing__input",attrs:{type:"number",label:t.t("settings","Default expiration time of new shares in days"),placeholder:t.t("settings","Expire shares after x days"),value:t.settings.internalExpireAfterNDays},on:{"update:value":function(n){return t.$set(t.settings,"internalExpireAfterNDays",n)}}})],1),t._v(" "),n("NcCheckboxRadioSwitch",{attrs:{type:"switch","aria-controls":"settings-sharing-remote-api-expiration",checked:t.settings.defaultRemoteExpireDate},on:{"update:checked":function(n){return t.$set(t.settings,"defaultRemoteExpireDate",n)}}},[t._v("\n\t\t\t"+t._s(t.t("settings","Set default expiration date for shares to other servers"))+"\n\t\t")]),t._v(" "),n("fieldset",{directives:[{name:"show",rawName:"v-show",value:t.settings.defaultRemoteExpireDate,expression:"settings.defaultRemoteExpireDate"}],staticClass:"sharing__sub-section",attrs:{id:"settings-sharing-remote-api-expiration"}},[n("NcCheckboxRadioSwitch",{attrs:{checked:t.settings.enforceRemoteExpireDate},on:{"update:checked":function(n){return t.$set(t.settings,"enforceRemoteExpireDate",n)}}},[t._v("\n\t\t\t\t"+t._s(t.t("settings","Enforce expiration date for remote shares"))+"\n\t\t\t")]),t._v(" "),n("NcTextField",{staticClass:"sharing__input",attrs:{type:"number",label:t.t("settings","Default expiration time of remote shares in days"),placeholder:t.t("settings","Expire remote shares after x days"),value:t.settings.remoteExpireAfterNDays},on:{"update:value":function(n){return t.$set(t.settings,"remoteExpireAfterNDays",n)}}})],1),t._v(" "),n("NcCheckboxRadioSwitch",{attrs:{type:"switch","aria-controls":"settings-sharing-api-api-expiration",checked:t.settings.defaultExpireDate,disabled:!t.settings.allowLinks},on:{"update:checked":function(n){return t.$set(t.settings,"defaultExpireDate",n)}}},[t._v("\n\t\t\t"+t._s(t.t("settings","Set default expiration date for shares via link or mail"))+"\n\t\t")]),t._v(" "),n("fieldset",{directives:[{name:"show",rawName:"v-show",value:t.settings.allowLinks&&t.settings.defaultExpireDate,expression:"settings.allowLinks && settings.defaultExpireDate"}],staticClass:"sharing__sub-section",attrs:{id:"settings-sharing-api-api-expiration"}},[n("NcCheckboxRadioSwitch",{attrs:{checked:t.settings.enforceExpireDate},on:{"update:checked":function(n){return t.$set(t.settings,"enforceExpireDate",n)}}},[t._v("\n\t\t\t\t"+t._s(t.t("settings","Enforce expiration date for remote shares"))+"\n\t\t\t")]),t._v(" "),n("NcTextField",{staticClass:"sharing__input",attrs:{type:"number",label:t.t("settings","Default expiration time of shares in days"),placeholder:t.t("settings","Expire shares after x days"),value:t.settings.expireAfterNDays},on:{"update:value":function(n){return t.$set(t.settings,"expireAfterNDays",n)}}})],1)],1),t._v(" "),n("div",{directives:[{name:"show",rawName:"v-show",value:t.settings.enabled,expression:"settings.enabled"}],staticClass:"sharing__section",attrs:{id:"settings-sharing-privary-related"}},[n("h3",[t._v(t._s(t.t("settings","Privacy settings for sharing")))]),t._v(" "),n("NcCheckboxRadioSwitch",{attrs:{type:"switch","aria-controls":"settings-sharing-privacy-user-enumeration",checked:t.settings.allowShareDialogUserEnumeration},on:{"update:checked":function(n){return t.$set(t.settings,"allowShareDialogUserEnumeration",n)}}},[t._v("\n\t\t\t"+t._s(t.t("settings","Allow username autocompletion in share dialog and allow access to the system address book"))+"\n\t\t")]),t._v(" "),n("fieldset",{directives:[{name:"show",rawName:"v-show",value:t.settings.allowShareDialogUserEnumeration,expression:"settings.allowShareDialogUserEnumeration"}],staticClass:"sharing__sub-section",attrs:{id:"settings-sharing-privacy-user-enumeration"}},[n("em",[t._v("\n\t\t\t\t"+t._s(t.t("settings",'If autocompletion "same group" and "phone number integration" are enabled a match in either is enough to show the user.'))+"\n\t\t\t")]),t._v(" "),n("NcCheckboxRadioSwitch",{attrs:{checked:t.settings.restrictUserEnumerationToGroup},on:{"update:checked":function(n){return t.$set(t.settings,"restrictUserEnumerationToGroup",n)}}},[t._v("\n\t\t\t\t"+t._s(t.t("settings","Allow username autocompletion to users within the same groups and limit system address books to users in the same groups"))+"\n\t\t\t")]),t._v(" "),n("NcCheckboxRadioSwitch",{attrs:{checked:t.settings.restrictUserEnumerationToPhone},on:{"update:checked":function(n){return t.$set(t.settings,"restrictUserEnumerationToPhone",n)}}},[t._v("\n\t\t\t\t"+t._s(t.t("settings","Allow username autocompletion to users based on phone number integration"))+"\n\t\t\t")])],1),t._v(" "),n("NcCheckboxRadioSwitch",{attrs:{type:"switch",checked:t.settings.restrictUserEnumerationFullMatch},on:{"update:checked":function(n){return t.$set(t.settings,"restrictUserEnumerationFullMatch",n)}}},[t._v("\n\t\t\t"+t._s(t.t("settings","Allow autocompletion when entering the full name or email address (ignoring missing phonebook match and being in the same group)"))+"\n\t\t")]),t._v(" "),n("NcCheckboxRadioSwitch",{attrs:{type:"switch",checked:t.publicShareDisclaimerEnabled},on:{"update:checked":function(n){t.publicShareDisclaimerEnabled=n}}},[t._v("\n\t\t\t"+t._s(t.t("settings","Show disclaimer text on the public link upload page (only shown when the file list is hidden)"))+"\n\t\t")]),t._v(" "),"string"==typeof t.settings.publicShareDisclaimerText?n("div",{staticClass:"sharing__sub-section",attrs:{"aria-describedby":"settings-sharing-privary-related-disclaimer-hint"}},[n("NcTextArea",{staticClass:"sharing__input",attrs:{label:t.t("settings","Disclaimer text"),"aria-describedby":"settings-sharing-privary-related-disclaimer-hint",value:t.settings.publicShareDisclaimerText},on:{"update:value":t.onUpdateDisclaimer}}),t._v(" "),n("em",{staticClass:"sharing__input",attrs:{id:"settings-sharing-privary-related-disclaimer-hint"}},[t._v("\n\t\t\t\t"+t._s(t.t("settings","This text will be shown on the public link upload page when the file list is hidden."))+"\n\t\t\t")])],1):t._e()],1),t._v(" "),n("div",{staticClass:"sharing__section",attrs:{id:"settings-sharing-default-permissions"}},[n("h3",[t._v(t._s(t.t("settings","Default share permissions")))]),t._v(" "),n("SelectSharingPermissions",{attrs:{value:t.settings.defaultPermissions},on:{"update:value":function(n){return t.$set(t.settings,"defaultPermissions",n)}}})],1)],1)}),[],!1,null,"c857d40a",null).exports,D=(0,r.pM)({name:"AdminSettingsSharing",components:{AdminSettingsSharingForm:O,NcNoteCard:i.mQ,NcSettingsSection:i.rE},data:()=>({documentationLink:(0,u.C)("settings","sharingDocumentation",""),sharingAppEnabled:(0,u.C)("settings","sharingAppEnabled",!1)}),methods:{t:o.Tl}}),T=(0,A.A)(D,(function(){var t=this,n=t._self._c;return t._self._setupProxy,n("NcSettingsSection",{attrs:{"data-cy-settings-sharing-section":"","limit-width":!0,"doc-url":t.documentationLink,name:t.t("settings","Sharing"),description:t.t("settings","As admin you can fine-tune the sharing behavior. Please see the documentation for more information.")}},[t.sharingAppEnabled?n("AdminSettingsSharingForm"):n("NcNoteCard",{attrs:{type:"warning"}},[t._v("\n\t\t"+t._s(t.t("settings","You need to enable the File sharing App."))+"\n\t")])],1)}),[],!1,null,null,null).exports;new r.Ay({name:"AdminSettingsSharingSection",el:"#vue-admin-settings-sharing",render:t=>t(T)})},72343:(t,n,e)=>{"use strict";e.d(n,{A:()=>a});var r=e(71354),i=e.n(r),u=e(76314),o=e.n(u)()(i());o.push([t.id,".sharing[data-v-c857d40a]{display:flex;flex-direction:column;gap:12px}.sharing__labeled-entry[data-v-c857d40a]{display:flex;flex:1 0;flex-direction:column;gap:4px}.sharing__section[data-v-c857d40a]{display:flex;flex-direction:column;gap:4px;margin-block-end:12px}.sharing__sub-section[data-v-c857d40a]{display:flex;flex-direction:column;gap:4px;margin-inline-start:44px;margin-block-end:12px}.sharing__input[data-v-c857d40a]{max-width:500px;margin-inline-start:14px}.sharing__input[data-v-c857d40a] .v-select.select{width:100%}@media only screen and (max-width: 350px){.sharing__sub-section[data-v-c857d40a]{margin-inline-start:14px}}","",{version:3,sources:["webpack://./apps/settings/src/components/AdminSettingsSharingForm.vue"],names:[],mappings:"AACA,0BACC,YAAA,CACA,qBAAA,CACA,QAAA,CAEA,yCACC,YAAA,CACA,QAAA,CACA,qBAAA,CACA,OAAA,CAGD,mCACC,YAAA,CACA,qBAAA,CACA,OAAA,CACA,qBAAA,CAGD,uCACC,YAAA,CACA,qBAAA,CACA,OAAA,CAEA,wBAAA,CACA,qBAAA,CAGD,iCACC,eAAA,CAEA,wBAAA,CAEA,kDACC,UAAA,CAKH,0CAGE,uCACC,wBAAA,CAAA",sourcesContent:["\n.sharing {\n\tdisplay: flex;\n\tflex-direction: column;\n\tgap: 12px;\n\n\t&__labeled-entry {\n\t\tdisplay: flex;\n\t\tflex: 1 0;\n\t\tflex-direction: column;\n\t\tgap: 4px;\n\t}\n\n\t&__section {\n\t\tdisplay: flex;\n\t\tflex-direction: column;\n\t\tgap: 4px;\n\t\tmargin-block-end: 12px\n\t}\n\n\t&__sub-section {\n\t\tdisplay: flex;\n\t\tflex-direction: column;\n\t\tgap: 4px;\n\n\t\tmargin-inline-start: 44px;\n\t\tmargin-block-end: 12px\n\t}\n\n\t&__input {\n\t\tmax-width: 500px;\n\t\t// align with checkboxes\n\t\tmargin-inline-start: 14px;\n\n\t\t:deep(.v-select.select) {\n\t\t\twidth: 100%;\n\t\t}\n\t}\n}\n\n@media only screen and (max-width: 350px) {\n\t// ensure no overflow happens on small devices (required for WCAG)\n\t.sharing {\n\t\t&__sub-section {\n\t\t\tmargin-inline-start: 14px;\n\t\t}\n\t}\n}\n"],sourceRoot:""}]);const a=o},16222:(t,n,e)=>{"use strict";e.d(n,{A:()=>a});var r=e(71354),i=e.n(r),u=e(76314),o=e.n(u)()(i());o.push([t.id,"\n.permissions-select[data-v-54c0ce93] {\n\tdisplay: flex;\n\tflex-wrap: wrap;\n\tgap: 4px;\n}\n","",{version:3,sources:["webpack://./apps/settings/src/components/SelectSharingPermissions.vue"],names:[],mappings:";AA8FA;CACA,aAAA;CACA,eAAA;CACA,QAAA;AACA",sourcesContent:["\x3c!--\n\t- @copyright 2023 Ferdinand Thiessen <opensource@fthiessen.de>\n\t-\n\t- @author Ferdinand Thiessen <opensource@fthiessen.de>\n\t-\n\t- @license AGPL-3.0-or-later\n\t-\n\t- This program is free software: you can redistribute it and/or modify\n\t- it under the terms of the GNU Affero General Public License as\n\t- published by the Free Software Foundation, either version 3 of the\n\t- License, or (at your option) any later version.\n\t-\n\t- This program is distributed in the hope that it will be useful,\n\t- but WITHOUT ANY WARRANTY; without even the implied warranty of\n\t- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n\t- GNU Affero General Public License for more details.\n\t-\n\t- You should have received a copy of the GNU Affero General Public License\n\t- along with this program. If not, see <http://www.gnu.org/licenses/>.\n\t-\n--\x3e\n<template>\n\t<fieldset class=\"permissions-select\">\n\t\t<NcCheckboxRadioSwitch :checked=\"canCreate\" @update:checked=\"toggle(PERMISSION_CREATE)\">\n\t\t\t{{ t('settings', 'Create') }}\n\t\t</NcCheckboxRadioSwitch>\n\t\t<NcCheckboxRadioSwitch :checked=\"canUpdate\" @update:checked=\"toggle(PERMISSION_UPDATE)\">\n\t\t\t{{ t('settings', 'Change') }}\n\t\t</NcCheckboxRadioSwitch>\n\t\t<NcCheckboxRadioSwitch :checked=\"canDelete\" @update:checked=\"toggle(PERMISSION_DELETE)\">\n\t\t\t{{ t('settings', 'Delete') }}\n\t\t</NcCheckboxRadioSwitch>\n\t\t<NcCheckboxRadioSwitch :checked=\"canShare\" @update:checked=\"toggle(PERMISSION_SHARE)\">\n\t\t\t{{ t('settings', 'Reshare') }}\n\t\t</NcCheckboxRadioSwitch>\n\t</fieldset>\n</template>\n\n<script lang=\"ts\">\nimport { translate } from '@nextcloud/l10n'\nimport { NcCheckboxRadioSwitch } from '@nextcloud/vue'\nimport { defineComponent } from 'vue'\n\nexport default defineComponent({\n\tname: 'SelectSharingPermissions',\n\tcomponents: {\n\t\tNcCheckboxRadioSwitch,\n\t},\n\tprops: {\n\t\tvalue: {\n\t\t\ttype: Number,\n\t\t\trequired: true,\n\t\t},\n\t},\n\temits: {\n\t\t'update:value': (value: number) => typeof value === 'number',\n\t},\n\tdata() {\n\t\treturn {\n\t\t\tPERMISSION_UPDATE: 2,\n\t\t\tPERMISSION_CREATE: 4,\n\t\t\tPERMISSION_DELETE: 8,\n\t\t\tPERMISSION_SHARE: 16,\n\t\t}\n\t},\n\tcomputed: {\n\t\tcanCreate() {\n\t\t\treturn (this.value & this.PERMISSION_CREATE) !== 0\n\t\t},\n\t\tcanUpdate() {\n\t\t\treturn (this.value & this.PERMISSION_UPDATE) !== 0\n\t\t},\n\t\tcanDelete() {\n\t\t\treturn (this.value & this.PERMISSION_DELETE) !== 0\n\t\t},\n\t\tcanShare() {\n\t\t\treturn (this.value & this.PERMISSION_SHARE) !== 0\n\t\t},\n\t},\n\tmethods: {\n\t\tt: translate,\n\t\t/**\n\t\t * Toggle a permission\n\t\t * @param permission The permission (bit) to toggle\n\t\t */\n\t\ttoggle(permission: number) {\n\t\t\t// xor to toggle the bit\n\t\t\tthis.$emit('update:value', this.value ^ permission)\n\t\t},\n\t},\n})\n<\/script>\n\n<style scoped>\n.permissions-select {\n\tdisplay: flex;\n\tflex-wrap: wrap;\n\tgap: 4px;\n}\n</style>\n"],sourceRoot:""}]);const a=o},2543:function(t,n,e){var r;t=e.nmd(t),function(){var i,u="Expected a function",o="__lodash_hash_undefined__",a="__lodash_placeholder__",s=32,c=128,l=1/0,f=9007199254740991,h=NaN,p=4294967295,g=[["ary",c],["bind",1],["bindKey",2],["curry",8],["curryRight",16],["flip",512],["partial",s],["partialRight",64],["rearg",256]],d="[object Arguments]",v="[object Array]",_="[object Boolean]",y="[object Date]",m="[object Error]",w="[object Function]",b="[object GeneratorFunction]",x="[object Map]",A="[object Number]",S="[object Object]",k="[object Promise]",E="[object RegExp]",C="[object Set]",N="[object String]",R="[object Symbol]",I="[object WeakMap]",O="[object ArrayBuffer]",D="[object DataView]",T="[object Float32Array]",j="[object Float64Array]",P="[object Int8Array]",L="[object Int16Array]",U="[object Int32Array]",G="[object Uint8Array]",M="[object Uint8ClampedArray]",$="[object Uint16Array]",z="[object Uint32Array]",B=/\b__p \+= '';/g,W=/\b(__p \+=) '' \+/g,F=/(__e\(.*?\)|\b__t\)) \+\n'';/g,q=/&(?:amp|lt|gt|quot|#39);/g,H=/[&<>"']/g,Y=RegExp(q.source),K=RegExp(H.source),Z=/<%-([\s\S]+?)%>/g,V=/<%([\s\S]+?)%>/g,Q=/<%=([\s\S]+?)%>/g,J=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,X=/^\w*$/,tt=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,nt=/[\\^$.*+?()[\]{}|]/g,et=RegExp(nt.source),rt=/^\s+/,it=/\s/,ut=/\{(?:\n\/\* \[wrapped with .+\] \*\/)?\n?/,ot=/\{\n\/\* \[wrapped with (.+)\] \*/,at=/,? & /,st=/[^\x00-\x2f\x3a-\x40\x5b-\x60\x7b-\x7f]+/g,ct=/[()=,{}\[\]\/\s]/,lt=/\\(\\)?/g,ft=/\$\{([^\\}]*(?:\\.[^\\}]*)*)\}/g,ht=/\w*$/,pt=/^[-+]0x[0-9a-f]+$/i,gt=/^0b[01]+$/i,dt=/^\[object .+?Constructor\]$/,vt=/^0o[0-7]+$/i,_t=/^(?:0|[1-9]\d*)$/,yt=/[\xc0-\xd6\xd8-\xf6\xf8-\xff\u0100-\u017f]/g,mt=/($^)/,wt=/['\n\r\u2028\u2029\\]/g,bt="\\ud800-\\udfff",xt="\\u0300-\\u036f\\ufe20-\\ufe2f\\u20d0-\\u20ff",At="\\u2700-\\u27bf",St="a-z\\xdf-\\xf6\\xf8-\\xff",kt="A-Z\\xc0-\\xd6\\xd8-\\xde",Et="\\ufe0e\\ufe0f",Ct="\\xac\\xb1\\xd7\\xf7\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\xbf\\u2000-\\u206f \\t\\x0b\\f\\xa0\\ufeff\\n\\r\\u2028\\u2029\\u1680\\u180e\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200a\\u202f\\u205f\\u3000",Nt="["+bt+"]",Rt="["+Ct+"]",It="["+xt+"]",Ot="\\d+",Dt="["+At+"]",Tt="["+St+"]",jt="[^"+bt+Ct+Ot+At+St+kt+"]",Pt="\\ud83c[\\udffb-\\udfff]",Lt="[^"+bt+"]",Ut="(?:\\ud83c[\\udde6-\\uddff]){2}",Gt="[\\ud800-\\udbff][\\udc00-\\udfff]",Mt="["+kt+"]",$t="\\u200d",zt="(?:"+Tt+"|"+jt+")",Bt="(?:"+Mt+"|"+jt+")",Wt="(?:['’](?:d|ll|m|re|s|t|ve))?",Ft="(?:['’](?:D|LL|M|RE|S|T|VE))?",qt="(?:"+It+"|"+Pt+")?",Ht="["+Et+"]?",Yt=Ht+qt+"(?:"+$t+"(?:"+[Lt,Ut,Gt].join("|")+")"+Ht+qt+")*",Kt="(?:"+[Dt,Ut,Gt].join("|")+")"+Yt,Zt="(?:"+[Lt+It+"?",It,Ut,Gt,Nt].join("|")+")",Vt=RegExp("['’]","g"),Qt=RegExp(It,"g"),Jt=RegExp(Pt+"(?="+Pt+")|"+Zt+Yt,"g"),Xt=RegExp([Mt+"?"+Tt+"+"+Wt+"(?="+[Rt,Mt,"$"].join("|")+")",Bt+"+"+Ft+"(?="+[Rt,Mt+zt,"$"].join("|")+")",Mt+"?"+zt+"+"+Wt,Mt+"+"+Ft,"\\d*(?:1ST|2ND|3RD|(?![123])\\dTH)(?=\\b|[a-z_])","\\d*(?:1st|2nd|3rd|(?![123])\\dth)(?=\\b|[A-Z_])",Ot,Kt].join("|"),"g"),tn=RegExp("["+$t+bt+xt+Et+"]"),nn=/[a-z][A-Z]|[A-Z]{2}[a-z]|[0-9][a-zA-Z]|[a-zA-Z][0-9]|[^a-zA-Z0-9 ]/,en=["Array","Buffer","DataView","Date","Error","Float32Array","Float64Array","Function","Int8Array","Int16Array","Int32Array","Map","Math","Object","Promise","RegExp","Set","String","Symbol","TypeError","Uint8Array","Uint8ClampedArray","Uint16Array","Uint32Array","WeakMap","_","clearTimeout","isFinite","parseInt","setTimeout"],rn=-1,un={};un[T]=un[j]=un[P]=un[L]=un[U]=un[G]=un[M]=un[$]=un[z]=!0,un[d]=un[v]=un[O]=un[_]=un[D]=un[y]=un[m]=un[w]=un[x]=un[A]=un[S]=un[E]=un[C]=un[N]=un[I]=!1;var on={};on[d]=on[v]=on[O]=on[D]=on[_]=on[y]=on[T]=on[j]=on[P]=on[L]=on[U]=on[x]=on[A]=on[S]=on[E]=on[C]=on[N]=on[R]=on[G]=on[M]=on[$]=on[z]=!0,on[m]=on[w]=on[I]=!1;var an={"\\":"\\","'":"'","\n":"n","\r":"r","\u2028":"u2028","\u2029":"u2029"},sn=parseFloat,cn=parseInt,ln="object"==typeof e.g&&e.g&&e.g.Object===Object&&e.g,fn="object"==typeof self&&self&&self.Object===Object&&self,hn=ln||fn||Function("return this")(),pn=n&&!n.nodeType&&n,gn=pn&&t&&!t.nodeType&&t,dn=gn&&gn.exports===pn,vn=dn&&ln.process,_n=function(){try{return gn&&gn.require&&gn.require("util").types||vn&&vn.binding&&vn.binding("util")}catch(t){}}(),yn=_n&&_n.isArrayBuffer,mn=_n&&_n.isDate,wn=_n&&_n.isMap,bn=_n&&_n.isRegExp,xn=_n&&_n.isSet,An=_n&&_n.isTypedArray;function Sn(t,n,e){switch(e.length){case 0:return t.call(n);case 1:return t.call(n,e[0]);case 2:return t.call(n,e[0],e[1]);case 3:return t.call(n,e[0],e[1],e[2])}return t.apply(n,e)}function kn(t,n,e,r){for(var i=-1,u=null==t?0:t.length;++i<u;){var o=t[i];n(r,o,e(o),t)}return r}function En(t,n){for(var e=-1,r=null==t?0:t.length;++e<r&&!1!==n(t[e],e,t););return t}function Cn(t,n){for(var e=null==t?0:t.length;e--&&!1!==n(t[e],e,t););return t}function Nn(t,n){for(var e=-1,r=null==t?0:t.length;++e<r;)if(!n(t[e],e,t))return!1;return!0}function Rn(t,n){for(var e=-1,r=null==t?0:t.length,i=0,u=[];++e<r;){var o=t[e];n(o,e,t)&&(u[i++]=o)}return u}function In(t,n){return!(null==t||!t.length)&&$n(t,n,0)>-1}function On(t,n,e){for(var r=-1,i=null==t?0:t.length;++r<i;)if(e(n,t[r]))return!0;return!1}function Dn(t,n){for(var e=-1,r=null==t?0:t.length,i=Array(r);++e<r;)i[e]=n(t[e],e,t);return i}function Tn(t,n){for(var e=-1,r=n.length,i=t.length;++e<r;)t[i+e]=n[e];return t}function jn(t,n,e,r){var i=-1,u=null==t?0:t.length;for(r&&u&&(e=t[++i]);++i<u;)e=n(e,t[i],i,t);return e}function Pn(t,n,e,r){var i=null==t?0:t.length;for(r&&i&&(e=t[--i]);i--;)e=n(e,t[i],i,t);return e}function Ln(t,n){for(var e=-1,r=null==t?0:t.length;++e<r;)if(n(t[e],e,t))return!0;return!1}var Un=Fn("length");function Gn(t,n,e){var r;return e(t,(function(t,e,i){if(n(t,e,i))return r=e,!1})),r}function Mn(t,n,e,r){for(var i=t.length,u=e+(r?1:-1);r?u--:++u<i;)if(n(t[u],u,t))return u;return-1}function $n(t,n,e){return n==n?function(t,n,e){for(var r=e-1,i=t.length;++r<i;)if(t[r]===n)return r;return-1}(t,n,e):Mn(t,Bn,e)}function zn(t,n,e,r){for(var i=e-1,u=t.length;++i<u;)if(r(t[i],n))return i;return-1}function Bn(t){return t!=t}function Wn(t,n){var e=null==t?0:t.length;return e?Yn(t,n)/e:h}function Fn(t){return function(n){return null==n?i:n[t]}}function qn(t){return function(n){return null==t?i:t[n]}}function Hn(t,n,e,r,i){return i(t,(function(t,i,u){e=r?(r=!1,t):n(e,t,i,u)})),e}function Yn(t,n){for(var e,r=-1,u=t.length;++r<u;){var o=n(t[r]);o!==i&&(e=e===i?o:e+o)}return e}function Kn(t,n){for(var e=-1,r=Array(t);++e<t;)r[e]=n(e);return r}function Zn(t){return t?t.slice(0,he(t)+1).replace(rt,""):t}function Vn(t){return function(n){return t(n)}}function Qn(t,n){return Dn(n,(function(n){return t[n]}))}function Jn(t,n){return t.has(n)}function Xn(t,n){for(var e=-1,r=t.length;++e<r&&$n(n,t[e],0)>-1;);return e}function te(t,n){for(var e=t.length;e--&&$n(n,t[e],0)>-1;);return e}var ne=qn({À:"A",Á:"A",Â:"A",Ã:"A",Ä:"A",Å:"A",à:"a",á:"a",â:"a",ã:"a",ä:"a",å:"a",Ç:"C",ç:"c",Ð:"D",ð:"d",È:"E",É:"E",Ê:"E",Ë:"E",è:"e",é:"e",ê:"e",ë:"e",Ì:"I",Í:"I",Î:"I",Ï:"I",ì:"i",í:"i",î:"i",ï:"i",Ñ:"N",ñ:"n",Ò:"O",Ó:"O",Ô:"O",Õ:"O",Ö:"O",Ø:"O",ò:"o",ó:"o",ô:"o",õ:"o",ö:"o",ø:"o",Ù:"U",Ú:"U",Û:"U",Ü:"U",ù:"u",ú:"u",û:"u",ü:"u",Ý:"Y",ý:"y",ÿ:"y",Æ:"Ae",æ:"ae",Þ:"Th",þ:"th",ß:"ss",Ā:"A",Ă:"A",Ą:"A",ā:"a",ă:"a",ą:"a",Ć:"C",Ĉ:"C",Ċ:"C",Č:"C",ć:"c",ĉ:"c",ċ:"c",č:"c",Ď:"D",Đ:"D",ď:"d",đ:"d",Ē:"E",Ĕ:"E",Ė:"E",Ę:"E",Ě:"E",ē:"e",ĕ:"e",ė:"e",ę:"e",ě:"e",Ĝ:"G",Ğ:"G",Ġ:"G",Ģ:"G",ĝ:"g",ğ:"g",ġ:"g",ģ:"g",Ĥ:"H",Ħ:"H",ĥ:"h",ħ:"h",Ĩ:"I",Ī:"I",Ĭ:"I",Į:"I",İ:"I",ĩ:"i",ī:"i",ĭ:"i",į:"i",ı:"i",Ĵ:"J",ĵ:"j",Ķ:"K",ķ:"k",ĸ:"k",Ĺ:"L",Ļ:"L",Ľ:"L",Ŀ:"L",Ł:"L",ĺ:"l",ļ:"l",ľ:"l",ŀ:"l",ł:"l",Ń:"N",Ņ:"N",Ň:"N",Ŋ:"N",ń:"n",ņ:"n",ň:"n",ŋ:"n",Ō:"O",Ŏ:"O",Ő:"O",ō:"o",ŏ:"o",ő:"o",Ŕ:"R",Ŗ:"R",Ř:"R",ŕ:"r",ŗ:"r",ř:"r",Ś:"S",Ŝ:"S",Ş:"S",Š:"S",ś:"s",ŝ:"s",ş:"s",š:"s",Ţ:"T",Ť:"T",Ŧ:"T",ţ:"t",ť:"t",ŧ:"t",Ũ:"U",Ū:"U",Ŭ:"U",Ů:"U",Ű:"U",Ų:"U",ũ:"u",ū:"u",ŭ:"u",ů:"u",ű:"u",ų:"u",Ŵ:"W",ŵ:"w",Ŷ:"Y",ŷ:"y",Ÿ:"Y",Ź:"Z",Ż:"Z",Ž:"Z",ź:"z",ż:"z",ž:"z",IJ:"IJ",ij:"ij",Œ:"Oe",œ:"oe",ʼn:"'n",ſ:"s"}),ee=qn({"&":"&","<":"<",">":">",'"':""","'":"'"});function re(t){return"\\"+an[t]}function ie(t){return tn.test(t)}function ue(t){var n=-1,e=Array(t.size);return t.forEach((function(t,r){e[++n]=[r,t]})),e}function oe(t,n){return function(e){return t(n(e))}}function ae(t,n){for(var e=-1,r=t.length,i=0,u=[];++e<r;){var o=t[e];o!==n&&o!==a||(t[e]=a,u[i++]=e)}return u}function se(t){var n=-1,e=Array(t.size);return t.forEach((function(t){e[++n]=t})),e}function ce(t){var n=-1,e=Array(t.size);return t.forEach((function(t){e[++n]=[t,t]})),e}function le(t){return ie(t)?function(t){for(var n=Jt.lastIndex=0;Jt.test(t);)++n;return n}(t):Un(t)}function fe(t){return ie(t)?function(t){return t.match(Jt)||[]}(t):function(t){return t.split("")}(t)}function he(t){for(var n=t.length;n--&&it.test(t.charAt(n)););return n}var pe=qn({"&":"&","<":"<",">":">",""":'"',"'":"'"}),ge=function t(n){var e,r=(n=null==n?hn:ge.defaults(hn.Object(),n,ge.pick(hn,en))).Array,it=n.Date,bt=n.Error,xt=n.Function,At=n.Math,St=n.Object,kt=n.RegExp,Et=n.String,Ct=n.TypeError,Nt=r.prototype,Rt=xt.prototype,It=St.prototype,Ot=n["__core-js_shared__"],Dt=Rt.toString,Tt=It.hasOwnProperty,jt=0,Pt=(e=/[^.]+$/.exec(Ot&&Ot.keys&&Ot.keys.IE_PROTO||""))?"Symbol(src)_1."+e:"",Lt=It.toString,Ut=Dt.call(St),Gt=hn._,Mt=kt("^"+Dt.call(Tt).replace(nt,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$"),$t=dn?n.Buffer:i,zt=n.Symbol,Bt=n.Uint8Array,Wt=$t?$t.allocUnsafe:i,Ft=oe(St.getPrototypeOf,St),qt=St.create,Ht=It.propertyIsEnumerable,Yt=Nt.splice,Kt=zt?zt.isConcatSpreadable:i,Zt=zt?zt.iterator:i,Jt=zt?zt.toStringTag:i,tn=function(){try{var t=su(St,"defineProperty");return t({},"",{}),t}catch(t){}}(),an=n.clearTimeout!==hn.clearTimeout&&n.clearTimeout,ln=it&&it.now!==hn.Date.now&&it.now,fn=n.setTimeout!==hn.setTimeout&&n.setTimeout,pn=At.ceil,gn=At.floor,vn=St.getOwnPropertySymbols,_n=$t?$t.isBuffer:i,Un=n.isFinite,qn=Nt.join,de=oe(St.keys,St),ve=At.max,_e=At.min,ye=it.now,me=n.parseInt,we=At.random,be=Nt.reverse,xe=su(n,"DataView"),Ae=su(n,"Map"),Se=su(n,"Promise"),ke=su(n,"Set"),Ee=su(n,"WeakMap"),Ce=su(St,"create"),Ne=Ee&&new Ee,Re={},Ie=Lu(xe),Oe=Lu(Ae),De=Lu(Se),Te=Lu(ke),je=Lu(Ee),Pe=zt?zt.prototype:i,Le=Pe?Pe.valueOf:i,Ue=Pe?Pe.toString:i;function Ge(t){if(ta(t)&&!Wo(t)&&!(t instanceof Be)){if(t instanceof ze)return t;if(Tt.call(t,"__wrapped__"))return Uu(t)}return new ze(t)}var Me=function(){function t(){}return function(n){if(!Xo(n))return{};if(qt)return qt(n);t.prototype=n;var e=new t;return t.prototype=i,e}}();function $e(){}function ze(t,n){this.__wrapped__=t,this.__actions__=[],this.__chain__=!!n,this.__index__=0,this.__values__=i}function Be(t){this.__wrapped__=t,this.__actions__=[],this.__dir__=1,this.__filtered__=!1,this.__iteratees__=[],this.__takeCount__=p,this.__views__=[]}function We(t){var n=-1,e=null==t?0:t.length;for(this.clear();++n<e;){var r=t[n];this.set(r[0],r[1])}}function Fe(t){var n=-1,e=null==t?0:t.length;for(this.clear();++n<e;){var r=t[n];this.set(r[0],r[1])}}function qe(t){var n=-1,e=null==t?0:t.length;for(this.clear();++n<e;){var r=t[n];this.set(r[0],r[1])}}function He(t){var n=-1,e=null==t?0:t.length;for(this.__data__=new qe;++n<e;)this.add(t[n])}function Ye(t){var n=this.__data__=new Fe(t);this.size=n.size}function Ke(t,n){var e=Wo(t),r=!e&&Bo(t),i=!e&&!r&&Yo(t),u=!e&&!r&&!i&&sa(t),o=e||r||i||u,a=o?Kn(t.length,Et):[],s=a.length;for(var c in t)!n&&!Tt.call(t,c)||o&&("length"==c||i&&("offset"==c||"parent"==c)||u&&("buffer"==c||"byteLength"==c||"byteOffset"==c)||du(c,s))||a.push(c);return a}function Ze(t){var n=t.length;return n?t[qr(0,n-1)]:i}function Ve(t,n){return Ou(Ei(t),ur(n,0,t.length))}function Qe(t){return Ou(Ei(t))}function Je(t,n,e){(e!==i&&!Mo(t[n],e)||e===i&&!(n in t))&&rr(t,n,e)}function Xe(t,n,e){var r=t[n];Tt.call(t,n)&&Mo(r,e)&&(e!==i||n in t)||rr(t,n,e)}function tr(t,n){for(var e=t.length;e--;)if(Mo(t[e][0],n))return e;return-1}function nr(t,n,e,r){return lr(t,(function(t,i,u){n(r,t,e(t),u)})),r}function er(t,n){return t&&Ci(n,Ia(n),t)}function rr(t,n,e){"__proto__"==n&&tn?tn(t,n,{configurable:!0,enumerable:!0,value:e,writable:!0}):t[n]=e}function ir(t,n){for(var e=-1,u=n.length,o=r(u),a=null==t;++e<u;)o[e]=a?i:ka(t,n[e]);return o}function ur(t,n,e){return t==t&&(e!==i&&(t=t<=e?t:e),n!==i&&(t=t>=n?t:n)),t}function or(t,n,e,r,u,o){var a,s=1&n,c=2&n,l=4&n;if(e&&(a=u?e(t,r,u,o):e(t)),a!==i)return a;if(!Xo(t))return t;var f=Wo(t);if(f){if(a=function(t){var n=t.length,e=new t.constructor(n);return n&&"string"==typeof t[0]&&Tt.call(t,"index")&&(e.index=t.index,e.input=t.input),e}(t),!s)return Ei(t,a)}else{var h=fu(t),p=h==w||h==b;if(Yo(t))return wi(t,s);if(h==S||h==d||p&&!u){if(a=c||p?{}:pu(t),!s)return c?function(t,n){return Ci(t,lu(t),n)}(t,function(t,n){return t&&Ci(n,Oa(n),t)}(a,t)):function(t,n){return Ci(t,cu(t),n)}(t,er(a,t))}else{if(!on[h])return u?t:{};a=function(t,n,e){var r,i=t.constructor;switch(n){case O:return bi(t);case _:case y:return new i(+t);case D:return function(t,n){var e=n?bi(t.buffer):t.buffer;return new t.constructor(e,t.byteOffset,t.byteLength)}(t,e);case T:case j:case P:case L:case U:case G:case M:case $:case z:return xi(t,e);case x:return new i;case A:case N:return new i(t);case E:return function(t){var n=new t.constructor(t.source,ht.exec(t));return n.lastIndex=t.lastIndex,n}(t);case C:return new i;case R:return r=t,Le?St(Le.call(r)):{}}}(t,h,s)}}o||(o=new Ye);var g=o.get(t);if(g)return g;o.set(t,a),ua(t)?t.forEach((function(r){a.add(or(r,n,e,r,t,o))})):na(t)&&t.forEach((function(r,i){a.set(i,or(r,n,e,i,t,o))}));var v=f?i:(l?c?nu:tu:c?Oa:Ia)(t);return En(v||t,(function(r,i){v&&(r=t[i=r]),Xe(a,i,or(r,n,e,i,t,o))})),a}function ar(t,n,e){var r=e.length;if(null==t)return!r;for(t=St(t);r--;){var u=e[r],o=n[u],a=t[u];if(a===i&&!(u in t)||!o(a))return!1}return!0}function sr(t,n,e){if("function"!=typeof t)throw new Ct(u);return Cu((function(){t.apply(i,e)}),n)}function cr(t,n,e,r){var i=-1,u=In,o=!0,a=t.length,s=[],c=n.length;if(!a)return s;e&&(n=Dn(n,Vn(e))),r?(u=On,o=!1):n.length>=200&&(u=Jn,o=!1,n=new He(n));t:for(;++i<a;){var l=t[i],f=null==e?l:e(l);if(l=r||0!==l?l:0,o&&f==f){for(var h=c;h--;)if(n[h]===f)continue t;s.push(l)}else u(n,f,r)||s.push(l)}return s}Ge.templateSettings={escape:Z,evaluate:V,interpolate:Q,variable:"",imports:{_:Ge}},Ge.prototype=$e.prototype,Ge.prototype.constructor=Ge,ze.prototype=Me($e.prototype),ze.prototype.constructor=ze,Be.prototype=Me($e.prototype),Be.prototype.constructor=Be,We.prototype.clear=function(){this.__data__=Ce?Ce(null):{},this.size=0},We.prototype.delete=function(t){var n=this.has(t)&&delete this.__data__[t];return this.size-=n?1:0,n},We.prototype.get=function(t){var n=this.__data__;if(Ce){var e=n[t];return e===o?i:e}return Tt.call(n,t)?n[t]:i},We.prototype.has=function(t){var n=this.__data__;return Ce?n[t]!==i:Tt.call(n,t)},We.prototype.set=function(t,n){var e=this.__data__;return this.size+=this.has(t)?0:1,e[t]=Ce&&n===i?o:n,this},Fe.prototype.clear=function(){this.__data__=[],this.size=0},Fe.prototype.delete=function(t){var n=this.__data__,e=tr(n,t);return!(e<0||(e==n.length-1?n.pop():Yt.call(n,e,1),--this.size,0))},Fe.prototype.get=function(t){var n=this.__data__,e=tr(n,t);return e<0?i:n[e][1]},Fe.prototype.has=function(t){return tr(this.__data__,t)>-1},Fe.prototype.set=function(t,n){var e=this.__data__,r=tr(e,t);return r<0?(++this.size,e.push([t,n])):e[r][1]=n,this},qe.prototype.clear=function(){this.size=0,this.__data__={hash:new We,map:new(Ae||Fe),string:new We}},qe.prototype.delete=function(t){var n=ou(this,t).delete(t);return this.size-=n?1:0,n},qe.prototype.get=function(t){return ou(this,t).get(t)},qe.prototype.has=function(t){return ou(this,t).has(t)},qe.prototype.set=function(t,n){var e=ou(this,t),r=e.size;return e.set(t,n),this.size+=e.size==r?0:1,this},He.prototype.add=He.prototype.push=function(t){return this.__data__.set(t,o),this},He.prototype.has=function(t){return this.__data__.has(t)},Ye.prototype.clear=function(){this.__data__=new Fe,this.size=0},Ye.prototype.delete=function(t){var n=this.__data__,e=n.delete(t);return this.size=n.size,e},Ye.prototype.get=function(t){return this.__data__.get(t)},Ye.prototype.has=function(t){return this.__data__.has(t)},Ye.prototype.set=function(t,n){var e=this.__data__;if(e instanceof Fe){var r=e.__data__;if(!Ae||r.length<199)return r.push([t,n]),this.size=++e.size,this;e=this.__data__=new qe(r)}return e.set(t,n),this.size=e.size,this};var lr=Ii(yr),fr=Ii(mr,!0);function hr(t,n){var e=!0;return lr(t,(function(t,r,i){return e=!!n(t,r,i)})),e}function pr(t,n,e){for(var r=-1,u=t.length;++r<u;){var o=t[r],a=n(o);if(null!=a&&(s===i?a==a&&!aa(a):e(a,s)))var s=a,c=o}return c}function gr(t,n){var e=[];return lr(t,(function(t,r,i){n(t,r,i)&&e.push(t)})),e}function dr(t,n,e,r,i){var u=-1,o=t.length;for(e||(e=gu),i||(i=[]);++u<o;){var a=t[u];n>0&&e(a)?n>1?dr(a,n-1,e,r,i):Tn(i,a):r||(i[i.length]=a)}return i}var vr=Oi(),_r=Oi(!0);function yr(t,n){return t&&vr(t,n,Ia)}function mr(t,n){return t&&_r(t,n,Ia)}function wr(t,n){return Rn(n,(function(n){return Vo(t[n])}))}function br(t,n){for(var e=0,r=(n=vi(n,t)).length;null!=t&&e<r;)t=t[Pu(n[e++])];return e&&e==r?t:i}function xr(t,n,e){var r=n(t);return Wo(t)?r:Tn(r,e(t))}function Ar(t){return null==t?t===i?"[object Undefined]":"[object Null]":Jt&&Jt in St(t)?function(t){var n=Tt.call(t,Jt),e=t[Jt];try{t[Jt]=i;var r=!0}catch(t){}var u=Lt.call(t);return r&&(n?t[Jt]=e:delete t[Jt]),u}(t):function(t){return Lt.call(t)}(t)}function Sr(t,n){return t>n}function kr(t,n){return null!=t&&Tt.call(t,n)}function Er(t,n){return null!=t&&n in St(t)}function Cr(t,n,e){for(var u=e?On:In,o=t[0].length,a=t.length,s=a,c=r(a),l=1/0,f=[];s--;){var h=t[s];s&&n&&(h=Dn(h,Vn(n))),l=_e(h.length,l),c[s]=!e&&(n||o>=120&&h.length>=120)?new He(s&&h):i}h=t[0];var p=-1,g=c[0];t:for(;++p<o&&f.length<l;){var d=h[p],v=n?n(d):d;if(d=e||0!==d?d:0,!(g?Jn(g,v):u(f,v,e))){for(s=a;--s;){var _=c[s];if(!(_?Jn(_,v):u(t[s],v,e)))continue t}g&&g.push(v),f.push(d)}}return f}function Nr(t,n,e){var r=null==(t=Su(t,n=vi(n,t)))?t:t[Pu(Ku(n))];return null==r?i:Sn(r,t,e)}function Rr(t){return ta(t)&&Ar(t)==d}function Ir(t,n,e,r,u){return t===n||(null==t||null==n||!ta(t)&&!ta(n)?t!=t&&n!=n:function(t,n,e,r,u,o){var a=Wo(t),s=Wo(n),c=a?v:fu(t),l=s?v:fu(n),f=(c=c==d?S:c)==S,h=(l=l==d?S:l)==S,p=c==l;if(p&&Yo(t)){if(!Yo(n))return!1;a=!0,f=!1}if(p&&!f)return o||(o=new Ye),a||sa(t)?Ji(t,n,e,r,u,o):function(t,n,e,r,i,u,o){switch(e){case D:if(t.byteLength!=n.byteLength||t.byteOffset!=n.byteOffset)return!1;t=t.buffer,n=n.buffer;case O:return!(t.byteLength!=n.byteLength||!u(new Bt(t),new Bt(n)));case _:case y:case A:return Mo(+t,+n);case m:return t.name==n.name&&t.message==n.message;case E:case N:return t==n+"";case x:var a=ue;case C:var s=1&r;if(a||(a=se),t.size!=n.size&&!s)return!1;var c=o.get(t);if(c)return c==n;r|=2,o.set(t,n);var l=Ji(a(t),a(n),r,i,u,o);return o.delete(t),l;case R:if(Le)return Le.call(t)==Le.call(n)}return!1}(t,n,c,e,r,u,o);if(!(1&e)){var g=f&&Tt.call(t,"__wrapped__"),w=h&&Tt.call(n,"__wrapped__");if(g||w){var b=g?t.value():t,k=w?n.value():n;return o||(o=new Ye),u(b,k,e,r,o)}}return!!p&&(o||(o=new Ye),function(t,n,e,r,u,o){var a=1&e,s=tu(t),c=s.length;if(c!=tu(n).length&&!a)return!1;for(var l=c;l--;){var f=s[l];if(!(a?f in n:Tt.call(n,f)))return!1}var h=o.get(t),p=o.get(n);if(h&&p)return h==n&&p==t;var g=!0;o.set(t,n),o.set(n,t);for(var d=a;++l<c;){var v=t[f=s[l]],_=n[f];if(r)var y=a?r(_,v,f,n,t,o):r(v,_,f,t,n,o);if(!(y===i?v===_||u(v,_,e,r,o):y)){g=!1;break}d||(d="constructor"==f)}if(g&&!d){var m=t.constructor,w=n.constructor;m==w||!("constructor"in t)||!("constructor"in n)||"function"==typeof m&&m instanceof m&&"function"==typeof w&&w instanceof w||(g=!1)}return o.delete(t),o.delete(n),g}(t,n,e,r,u,o))}(t,n,e,r,Ir,u))}function Or(t,n,e,r){var u=e.length,o=u,a=!r;if(null==t)return!o;for(t=St(t);u--;){var s=e[u];if(a&&s[2]?s[1]!==t[s[0]]:!(s[0]in t))return!1}for(;++u<o;){var c=(s=e[u])[0],l=t[c],f=s[1];if(a&&s[2]){if(l===i&&!(c in t))return!1}else{var h=new Ye;if(r)var p=r(l,f,c,t,n,h);if(!(p===i?Ir(f,l,3,r,h):p))return!1}}return!0}function Dr(t){return!(!Xo(t)||(n=t,Pt&&Pt in n))&&(Vo(t)?Mt:dt).test(Lu(t));var n}function Tr(t){return"function"==typeof t?t:null==t?es:"object"==typeof t?Wo(t)?Gr(t[0],t[1]):Ur(t):fs(t)}function jr(t){if(!wu(t))return de(t);var n=[];for(var e in St(t))Tt.call(t,e)&&"constructor"!=e&&n.push(e);return n}function Pr(t,n){return t<n}function Lr(t,n){var e=-1,i=qo(t)?r(t.length):[];return lr(t,(function(t,r,u){i[++e]=n(t,r,u)})),i}function Ur(t){var n=au(t);return 1==n.length&&n[0][2]?xu(n[0][0],n[0][1]):function(e){return e===t||Or(e,t,n)}}function Gr(t,n){return _u(t)&&bu(n)?xu(Pu(t),n):function(e){var r=ka(e,t);return r===i&&r===n?Ea(e,t):Ir(n,r,3)}}function Mr(t,n,e,r,u){t!==n&&vr(n,(function(o,a){if(u||(u=new Ye),Xo(o))!function(t,n,e,r,u,o,a){var s=ku(t,e),c=ku(n,e),l=a.get(c);if(l)Je(t,e,l);else{var f=o?o(s,c,e+"",t,n,a):i,h=f===i;if(h){var p=Wo(c),g=!p&&Yo(c),d=!p&&!g&&sa(c);f=c,p||g||d?Wo(s)?f=s:Ho(s)?f=Ei(s):g?(h=!1,f=wi(c,!0)):d?(h=!1,f=xi(c,!0)):f=[]:ra(c)||Bo(c)?(f=s,Bo(s)?f=va(s):Xo(s)&&!Vo(s)||(f=pu(c))):h=!1}h&&(a.set(c,f),u(f,c,r,o,a),a.delete(c)),Je(t,e,f)}}(t,n,a,e,Mr,r,u);else{var s=r?r(ku(t,a),o,a+"",t,n,u):i;s===i&&(s=o),Je(t,a,s)}}),Oa)}function $r(t,n){var e=t.length;if(e)return du(n+=n<0?e:0,e)?t[n]:i}function zr(t,n,e){n=n.length?Dn(n,(function(t){return Wo(t)?function(n){return br(n,1===t.length?t[0]:t)}:t})):[es];var r=-1;n=Dn(n,Vn(uu()));var i=Lr(t,(function(t,e,i){var u=Dn(n,(function(n){return n(t)}));return{criteria:u,index:++r,value:t}}));return function(t,n){var r=t.length;for(t.sort((function(t,n){return function(t,n,e){for(var r=-1,i=t.criteria,u=n.criteria,o=i.length,a=e.length;++r<o;){var s=Ai(i[r],u[r]);if(s)return r>=a?s:s*("desc"==e[r]?-1:1)}return t.index-n.index}(t,n,e)}));r--;)t[r]=t[r].value;return t}(i)}function Br(t,n,e){for(var r=-1,i=n.length,u={};++r<i;){var o=n[r],a=br(t,o);e(a,o)&&Vr(u,vi(o,t),a)}return u}function Wr(t,n,e,r){var i=r?zn:$n,u=-1,o=n.length,a=t;for(t===n&&(n=Ei(n)),e&&(a=Dn(t,Vn(e)));++u<o;)for(var s=0,c=n[u],l=e?e(c):c;(s=i(a,l,s,r))>-1;)a!==t&&Yt.call(a,s,1),Yt.call(t,s,1);return t}function Fr(t,n){for(var e=t?n.length:0,r=e-1;e--;){var i=n[e];if(e==r||i!==u){var u=i;du(i)?Yt.call(t,i,1):si(t,i)}}return t}function qr(t,n){return t+gn(we()*(n-t+1))}function Hr(t,n){var e="";if(!t||n<1||n>f)return e;do{n%2&&(e+=t),(n=gn(n/2))&&(t+=t)}while(n);return e}function Yr(t,n){return Nu(Au(t,n,es),t+"")}function Kr(t){return Ze(Ma(t))}function Zr(t,n){var e=Ma(t);return Ou(e,ur(n,0,e.length))}function Vr(t,n,e,r){if(!Xo(t))return t;for(var u=-1,o=(n=vi(n,t)).length,a=o-1,s=t;null!=s&&++u<o;){var c=Pu(n[u]),l=e;if("__proto__"===c||"constructor"===c||"prototype"===c)return t;if(u!=a){var f=s[c];(l=r?r(f,c,s):i)===i&&(l=Xo(f)?f:du(n[u+1])?[]:{})}Xe(s,c,l),s=s[c]}return t}var Qr=Ne?function(t,n){return Ne.set(t,n),t}:es,Jr=tn?function(t,n){return tn(t,"toString",{configurable:!0,enumerable:!1,value:Xa(n),writable:!0})}:es;function Xr(t){return Ou(Ma(t))}function ti(t,n,e){var i=-1,u=t.length;n<0&&(n=-n>u?0:u+n),(e=e>u?u:e)<0&&(e+=u),u=n>e?0:e-n>>>0,n>>>=0;for(var o=r(u);++i<u;)o[i]=t[i+n];return o}function ni(t,n){var e;return lr(t,(function(t,r,i){return!(e=n(t,r,i))})),!!e}function ei(t,n,e){var r=0,i=null==t?r:t.length;if("number"==typeof n&&n==n&&i<=2147483647){for(;r<i;){var u=r+i>>>1,o=t[u];null!==o&&!aa(o)&&(e?o<=n:o<n)?r=u+1:i=u}return i}return ri(t,n,es,e)}function ri(t,n,e,r){var u=0,o=null==t?0:t.length;if(0===o)return 0;for(var a=(n=e(n))!=n,s=null===n,c=aa(n),l=n===i;u<o;){var f=gn((u+o)/2),h=e(t[f]),p=h!==i,g=null===h,d=h==h,v=aa(h);if(a)var _=r||d;else _=l?d&&(r||p):s?d&&p&&(r||!g):c?d&&p&&!g&&(r||!v):!g&&!v&&(r?h<=n:h<n);_?u=f+1:o=f}return _e(o,4294967294)}function ii(t,n){for(var e=-1,r=t.length,i=0,u=[];++e<r;){var o=t[e],a=n?n(o):o;if(!e||!Mo(a,s)){var s=a;u[i++]=0===o?0:o}}return u}function ui(t){return"number"==typeof t?t:aa(t)?h:+t}function oi(t){if("string"==typeof t)return t;if(Wo(t))return Dn(t,oi)+"";if(aa(t))return Ue?Ue.call(t):"";var n=t+"";return"0"==n&&1/t==-1/0?"-0":n}function ai(t,n,e){var r=-1,i=In,u=t.length,o=!0,a=[],s=a;if(e)o=!1,i=On;else if(u>=200){var c=n?null:Hi(t);if(c)return se(c);o=!1,i=Jn,s=new He}else s=n?[]:a;t:for(;++r<u;){var l=t[r],f=n?n(l):l;if(l=e||0!==l?l:0,o&&f==f){for(var h=s.length;h--;)if(s[h]===f)continue t;n&&s.push(f),a.push(l)}else i(s,f,e)||(s!==a&&s.push(f),a.push(l))}return a}function si(t,n){return null==(t=Su(t,n=vi(n,t)))||delete t[Pu(Ku(n))]}function ci(t,n,e,r){return Vr(t,n,e(br(t,n)),r)}function li(t,n,e,r){for(var i=t.length,u=r?i:-1;(r?u--:++u<i)&&n(t[u],u,t););return e?ti(t,r?0:u,r?u+1:i):ti(t,r?u+1:0,r?i:u)}function fi(t,n){var e=t;return e instanceof Be&&(e=e.value()),jn(n,(function(t,n){return n.func.apply(n.thisArg,Tn([t],n.args))}),e)}function hi(t,n,e){var i=t.length;if(i<2)return i?ai(t[0]):[];for(var u=-1,o=r(i);++u<i;)for(var a=t[u],s=-1;++s<i;)s!=u&&(o[u]=cr(o[u]||a,t[s],n,e));return ai(dr(o,1),n,e)}function pi(t,n,e){for(var r=-1,u=t.length,o=n.length,a={};++r<u;){var s=r<o?n[r]:i;e(a,t[r],s)}return a}function gi(t){return Ho(t)?t:[]}function di(t){return"function"==typeof t?t:es}function vi(t,n){return Wo(t)?t:_u(t,n)?[t]:ju(_a(t))}var _i=Yr;function yi(t,n,e){var r=t.length;return e=e===i?r:e,!n&&e>=r?t:ti(t,n,e)}var mi=an||function(t){return hn.clearTimeout(t)};function wi(t,n){if(n)return t.slice();var e=t.length,r=Wt?Wt(e):new t.constructor(e);return t.copy(r),r}function bi(t){var n=new t.constructor(t.byteLength);return new Bt(n).set(new Bt(t)),n}function xi(t,n){var e=n?bi(t.buffer):t.buffer;return new t.constructor(e,t.byteOffset,t.length)}function Ai(t,n){if(t!==n){var e=t!==i,r=null===t,u=t==t,o=aa(t),a=n!==i,s=null===n,c=n==n,l=aa(n);if(!s&&!l&&!o&&t>n||o&&a&&c&&!s&&!l||r&&a&&c||!e&&c||!u)return 1;if(!r&&!o&&!l&&t<n||l&&e&&u&&!r&&!o||s&&e&&u||!a&&u||!c)return-1}return 0}function Si(t,n,e,i){for(var u=-1,o=t.length,a=e.length,s=-1,c=n.length,l=ve(o-a,0),f=r(c+l),h=!i;++s<c;)f[s]=n[s];for(;++u<a;)(h||u<o)&&(f[e[u]]=t[u]);for(;l--;)f[s++]=t[u++];return f}function ki(t,n,e,i){for(var u=-1,o=t.length,a=-1,s=e.length,c=-1,l=n.length,f=ve(o-s,0),h=r(f+l),p=!i;++u<f;)h[u]=t[u];for(var g=u;++c<l;)h[g+c]=n[c];for(;++a<s;)(p||u<o)&&(h[g+e[a]]=t[u++]);return h}function Ei(t,n){var e=-1,i=t.length;for(n||(n=r(i));++e<i;)n[e]=t[e];return n}function Ci(t,n,e,r){var u=!e;e||(e={});for(var o=-1,a=n.length;++o<a;){var s=n[o],c=r?r(e[s],t[s],s,e,t):i;c===i&&(c=t[s]),u?rr(e,s,c):Xe(e,s,c)}return e}function Ni(t,n){return function(e,r){var i=Wo(e)?kn:nr,u=n?n():{};return i(e,t,uu(r,2),u)}}function Ri(t){return Yr((function(n,e){var r=-1,u=e.length,o=u>1?e[u-1]:i,a=u>2?e[2]:i;for(o=t.length>3&&"function"==typeof o?(u--,o):i,a&&vu(e[0],e[1],a)&&(o=u<3?i:o,u=1),n=St(n);++r<u;){var s=e[r];s&&t(n,s,r,o)}return n}))}function Ii(t,n){return function(e,r){if(null==e)return e;if(!qo(e))return t(e,r);for(var i=e.length,u=n?i:-1,o=St(e);(n?u--:++u<i)&&!1!==r(o[u],u,o););return e}}function Oi(t){return function(n,e,r){for(var i=-1,u=St(n),o=r(n),a=o.length;a--;){var s=o[t?a:++i];if(!1===e(u[s],s,u))break}return n}}function Di(t){return function(n){var e=ie(n=_a(n))?fe(n):i,r=e?e[0]:n.charAt(0),u=e?yi(e,1).join(""):n.slice(1);return r[t]()+u}}function Ti(t){return function(n){return jn(Va(Ba(n).replace(Vt,"")),t,"")}}function ji(t){return function(){var n=arguments;switch(n.length){case 0:return new t;case 1:return new t(n[0]);case 2:return new t(n[0],n[1]);case 3:return new t(n[0],n[1],n[2]);case 4:return new t(n[0],n[1],n[2],n[3]);case 5:return new t(n[0],n[1],n[2],n[3],n[4]);case 6:return new t(n[0],n[1],n[2],n[3],n[4],n[5]);case 7:return new t(n[0],n[1],n[2],n[3],n[4],n[5],n[6])}var e=Me(t.prototype),r=t.apply(e,n);return Xo(r)?r:e}}function Pi(t){return function(n,e,r){var u=St(n);if(!qo(n)){var o=uu(e,3);n=Ia(n),e=function(t){return o(u[t],t,u)}}var a=t(n,e,r);return a>-1?u[o?n[a]:a]:i}}function Li(t){return Xi((function(n){var e=n.length,r=e,o=ze.prototype.thru;for(t&&n.reverse();r--;){var a=n[r];if("function"!=typeof a)throw new Ct(u);if(o&&!s&&"wrapper"==ru(a))var s=new ze([],!0)}for(r=s?r:e;++r<e;){var c=ru(a=n[r]),l="wrapper"==c?eu(a):i;s=l&&yu(l[0])&&424==l[1]&&!l[4].length&&1==l[9]?s[ru(l[0])].apply(s,l[3]):1==a.length&&yu(a)?s[c]():s.thru(a)}return function(){var t=arguments,r=t[0];if(s&&1==t.length&&Wo(r))return s.plant(r).value();for(var i=0,u=e?n[i].apply(this,t):r;++i<e;)u=n[i].call(this,u);return u}}))}function Ui(t,n,e,u,o,a,s,l,f,h){var p=n&c,g=1&n,d=2&n,v=24&n,_=512&n,y=d?i:ji(t);return function c(){for(var m=arguments.length,w=r(m),b=m;b--;)w[b]=arguments[b];if(v)var x=iu(c),A=function(t,n){for(var e=t.length,r=0;e--;)t[e]===n&&++r;return r}(w,x);if(u&&(w=Si(w,u,o,v)),a&&(w=ki(w,a,s,v)),m-=A,v&&m<h){var S=ae(w,x);return Fi(t,n,Ui,c.placeholder,e,w,S,l,f,h-m)}var k=g?e:this,E=d?k[t]:t;return m=w.length,l?w=function(t,n){for(var e=t.length,r=_e(n.length,e),u=Ei(t);r--;){var o=n[r];t[r]=du(o,e)?u[o]:i}return t}(w,l):_&&m>1&&w.reverse(),p&&f<m&&(w.length=f),this&&this!==hn&&this instanceof c&&(E=y||ji(E)),E.apply(k,w)}}function Gi(t,n){return function(e,r){return function(t,n,e,r){return yr(t,(function(t,i,u){n(r,e(t),i,u)})),r}(e,t,n(r),{})}}function Mi(t,n){return function(e,r){var u;if(e===i&&r===i)return n;if(e!==i&&(u=e),r!==i){if(u===i)return r;"string"==typeof e||"string"==typeof r?(e=oi(e),r=oi(r)):(e=ui(e),r=ui(r)),u=t(e,r)}return u}}function $i(t){return Xi((function(n){return n=Dn(n,Vn(uu())),Yr((function(e){var r=this;return t(n,(function(t){return Sn(t,r,e)}))}))}))}function zi(t,n){var e=(n=n===i?" ":oi(n)).length;if(e<2)return e?Hr(n,t):n;var r=Hr(n,pn(t/le(n)));return ie(n)?yi(fe(r),0,t).join(""):r.slice(0,t)}function Bi(t){return function(n,e,u){return u&&"number"!=typeof u&&vu(n,e,u)&&(e=u=i),n=ha(n),e===i?(e=n,n=0):e=ha(e),function(t,n,e,i){for(var u=-1,o=ve(pn((n-t)/(e||1)),0),a=r(o);o--;)a[i?o:++u]=t,t+=e;return a}(n,e,u=u===i?n<e?1:-1:ha(u),t)}}function Wi(t){return function(n,e){return"string"==typeof n&&"string"==typeof e||(n=da(n),e=da(e)),t(n,e)}}function Fi(t,n,e,r,u,o,a,c,l,f){var h=8&n;n|=h?s:64,4&(n&=~(h?64:s))||(n&=-4);var p=[t,n,u,h?o:i,h?a:i,h?i:o,h?i:a,c,l,f],g=e.apply(i,p);return yu(t)&&Eu(g,p),g.placeholder=r,Ru(g,t,n)}function qi(t){var n=At[t];return function(t,e){if(t=da(t),(e=null==e?0:_e(pa(e),292))&&Un(t)){var r=(_a(t)+"e").split("e");return+((r=(_a(n(r[0]+"e"+(+r[1]+e)))+"e").split("e"))[0]+"e"+(+r[1]-e))}return n(t)}}var Hi=ke&&1/se(new ke([,-0]))[1]==l?function(t){return new ke(t)}:as;function Yi(t){return function(n){var e=fu(n);return e==x?ue(n):e==C?ce(n):function(t,n){return Dn(n,(function(n){return[n,t[n]]}))}(n,t(n))}}function Ki(t,n,e,o,l,f,h,p){var g=2&n;if(!g&&"function"!=typeof t)throw new Ct(u);var d=o?o.length:0;if(d||(n&=-97,o=l=i),h=h===i?h:ve(pa(h),0),p=p===i?p:pa(p),d-=l?l.length:0,64&n){var v=o,_=l;o=l=i}var y=g?i:eu(t),m=[t,n,e,o,l,v,_,f,h,p];if(y&&function(t,n){var e=t[1],r=n[1],i=e|r,u=i<131,o=r==c&&8==e||r==c&&256==e&&t[7].length<=n[8]||384==r&&n[7].length<=n[8]&&8==e;if(!u&&!o)return t;1&r&&(t[2]=n[2],i|=1&e?0:4);var s=n[3];if(s){var l=t[3];t[3]=l?Si(l,s,n[4]):s,t[4]=l?ae(t[3],a):n[4]}(s=n[5])&&(l=t[5],t[5]=l?ki(l,s,n[6]):s,t[6]=l?ae(t[5],a):n[6]),(s=n[7])&&(t[7]=s),r&c&&(t[8]=null==t[8]?n[8]:_e(t[8],n[8])),null==t[9]&&(t[9]=n[9]),t[0]=n[0],t[1]=i}(m,y),t=m[0],n=m[1],e=m[2],o=m[3],l=m[4],!(p=m[9]=m[9]===i?g?0:t.length:ve(m[9]-d,0))&&24&n&&(n&=-25),n&&1!=n)w=8==n||16==n?function(t,n,e){var u=ji(t);return function o(){for(var a=arguments.length,s=r(a),c=a,l=iu(o);c--;)s[c]=arguments[c];var f=a<3&&s[0]!==l&&s[a-1]!==l?[]:ae(s,l);return(a-=f.length)<e?Fi(t,n,Ui,o.placeholder,i,s,f,i,i,e-a):Sn(this&&this!==hn&&this instanceof o?u:t,this,s)}}(t,n,p):n!=s&&33!=n||l.length?Ui.apply(i,m):function(t,n,e,i){var u=1&n,o=ji(t);return function n(){for(var a=-1,s=arguments.length,c=-1,l=i.length,f=r(l+s),h=this&&this!==hn&&this instanceof n?o:t;++c<l;)f[c]=i[c];for(;s--;)f[c++]=arguments[++a];return Sn(h,u?e:this,f)}}(t,n,e,o);else var w=function(t,n,e){var r=1&n,i=ji(t);return function n(){return(this&&this!==hn&&this instanceof n?i:t).apply(r?e:this,arguments)}}(t,n,e);return Ru((y?Qr:Eu)(w,m),t,n)}function Zi(t,n,e,r){return t===i||Mo(t,It[e])&&!Tt.call(r,e)?n:t}function Vi(t,n,e,r,u,o){return Xo(t)&&Xo(n)&&(o.set(n,t),Mr(t,n,i,Vi,o),o.delete(n)),t}function Qi(t){return ra(t)?i:t}function Ji(t,n,e,r,u,o){var a=1&e,s=t.length,c=n.length;if(s!=c&&!(a&&c>s))return!1;var l=o.get(t),f=o.get(n);if(l&&f)return l==n&&f==t;var h=-1,p=!0,g=2&e?new He:i;for(o.set(t,n),o.set(n,t);++h<s;){var d=t[h],v=n[h];if(r)var _=a?r(v,d,h,n,t,o):r(d,v,h,t,n,o);if(_!==i){if(_)continue;p=!1;break}if(g){if(!Ln(n,(function(t,n){if(!Jn(g,n)&&(d===t||u(d,t,e,r,o)))return g.push(n)}))){p=!1;break}}else if(d!==v&&!u(d,v,e,r,o)){p=!1;break}}return o.delete(t),o.delete(n),p}function Xi(t){return Nu(Au(t,i,Wu),t+"")}function tu(t){return xr(t,Ia,cu)}function nu(t){return xr(t,Oa,lu)}var eu=Ne?function(t){return Ne.get(t)}:as;function ru(t){for(var n=t.name+"",e=Re[n],r=Tt.call(Re,n)?e.length:0;r--;){var i=e[r],u=i.func;if(null==u||u==t)return i.name}return n}function iu(t){return(Tt.call(Ge,"placeholder")?Ge:t).placeholder}function uu(){var t=Ge.iteratee||rs;return t=t===rs?Tr:t,arguments.length?t(arguments[0],arguments[1]):t}function ou(t,n){var e,r,i=t.__data__;return("string"==(r=typeof(e=n))||"number"==r||"symbol"==r||"boolean"==r?"__proto__"!==e:null===e)?i["string"==typeof n?"string":"hash"]:i.map}function au(t){for(var n=Ia(t),e=n.length;e--;){var r=n[e],i=t[r];n[e]=[r,i,bu(i)]}return n}function su(t,n){var e=function(t,n){return null==t?i:t[n]}(t,n);return Dr(e)?e:i}var cu=vn?function(t){return null==t?[]:(t=St(t),Rn(vn(t),(function(n){return Ht.call(t,n)})))}:gs,lu=vn?function(t){for(var n=[];t;)Tn(n,cu(t)),t=Ft(t);return n}:gs,fu=Ar;function hu(t,n,e){for(var r=-1,i=(n=vi(n,t)).length,u=!1;++r<i;){var o=Pu(n[r]);if(!(u=null!=t&&e(t,o)))break;t=t[o]}return u||++r!=i?u:!!(i=null==t?0:t.length)&&Jo(i)&&du(o,i)&&(Wo(t)||Bo(t))}function pu(t){return"function"!=typeof t.constructor||wu(t)?{}:Me(Ft(t))}function gu(t){return Wo(t)||Bo(t)||!!(Kt&&t&&t[Kt])}function du(t,n){var e=typeof t;return!!(n=null==n?f:n)&&("number"==e||"symbol"!=e&&_t.test(t))&&t>-1&&t%1==0&&t<n}function vu(t,n,e){if(!Xo(e))return!1;var r=typeof n;return!!("number"==r?qo(e)&&du(n,e.length):"string"==r&&n in e)&&Mo(e[n],t)}function _u(t,n){if(Wo(t))return!1;var e=typeof t;return!("number"!=e&&"symbol"!=e&&"boolean"!=e&&null!=t&&!aa(t))||X.test(t)||!J.test(t)||null!=n&&t in St(n)}function yu(t){var n=ru(t),e=Ge[n];if("function"!=typeof e||!(n in Be.prototype))return!1;if(t===e)return!0;var r=eu(e);return!!r&&t===r[0]}(xe&&fu(new xe(new ArrayBuffer(1)))!=D||Ae&&fu(new Ae)!=x||Se&&fu(Se.resolve())!=k||ke&&fu(new ke)!=C||Ee&&fu(new Ee)!=I)&&(fu=function(t){var n=Ar(t),e=n==S?t.constructor:i,r=e?Lu(e):"";if(r)switch(r){case Ie:return D;case Oe:return x;case De:return k;case Te:return C;case je:return I}return n});var mu=Ot?Vo:ds;function wu(t){var n=t&&t.constructor;return t===("function"==typeof n&&n.prototype||It)}function bu(t){return t==t&&!Xo(t)}function xu(t,n){return function(e){return null!=e&&e[t]===n&&(n!==i||t in St(e))}}function Au(t,n,e){return n=ve(n===i?t.length-1:n,0),function(){for(var i=arguments,u=-1,o=ve(i.length-n,0),a=r(o);++u<o;)a[u]=i[n+u];u=-1;for(var s=r(n+1);++u<n;)s[u]=i[u];return s[n]=e(a),Sn(t,this,s)}}function Su(t,n){return n.length<2?t:br(t,ti(n,0,-1))}function ku(t,n){if(("constructor"!==n||"function"!=typeof t[n])&&"__proto__"!=n)return t[n]}var Eu=Iu(Qr),Cu=fn||function(t,n){return hn.setTimeout(t,n)},Nu=Iu(Jr);function Ru(t,n,e){var r=n+"";return Nu(t,function(t,n){var e=n.length;if(!e)return t;var r=e-1;return n[r]=(e>1?"& ":"")+n[r],n=n.join(e>2?", ":" "),t.replace(ut,"{\n/* [wrapped with "+n+"] */\n")}(r,function(t,n){return En(g,(function(e){var r="_."+e[0];n&e[1]&&!In(t,r)&&t.push(r)})),t.sort()}(function(t){var n=t.match(ot);return n?n[1].split(at):[]}(r),e)))}function Iu(t){var n=0,e=0;return function(){var r=ye(),u=16-(r-e);if(e=r,u>0){if(++n>=800)return arguments[0]}else n=0;return t.apply(i,arguments)}}function Ou(t,n){var e=-1,r=t.length,u=r-1;for(n=n===i?r:n;++e<n;){var o=qr(e,u),a=t[o];t[o]=t[e],t[e]=a}return t.length=n,t}var Du,Tu,ju=(Du=To((function(t){var n=[];return 46===t.charCodeAt(0)&&n.push(""),t.replace(tt,(function(t,e,r,i){n.push(r?i.replace(lt,"$1"):e||t)})),n}),(function(t){return 500===Tu.size&&Tu.clear(),t})),Tu=Du.cache,Du);function Pu(t){if("string"==typeof t||aa(t))return t;var n=t+"";return"0"==n&&1/t==-1/0?"-0":n}function Lu(t){if(null!=t){try{return Dt.call(t)}catch(t){}try{return t+""}catch(t){}}return""}function Uu(t){if(t instanceof Be)return t.clone();var n=new ze(t.__wrapped__,t.__chain__);return n.__actions__=Ei(t.__actions__),n.__index__=t.__index__,n.__values__=t.__values__,n}var Gu=Yr((function(t,n){return Ho(t)?cr(t,dr(n,1,Ho,!0)):[]})),Mu=Yr((function(t,n){var e=Ku(n);return Ho(e)&&(e=i),Ho(t)?cr(t,dr(n,1,Ho,!0),uu(e,2)):[]})),$u=Yr((function(t,n){var e=Ku(n);return Ho(e)&&(e=i),Ho(t)?cr(t,dr(n,1,Ho,!0),i,e):[]}));function zu(t,n,e){var r=null==t?0:t.length;if(!r)return-1;var i=null==e?0:pa(e);return i<0&&(i=ve(r+i,0)),Mn(t,uu(n,3),i)}function Bu(t,n,e){var r=null==t?0:t.length;if(!r)return-1;var u=r-1;return e!==i&&(u=pa(e),u=e<0?ve(r+u,0):_e(u,r-1)),Mn(t,uu(n,3),u,!0)}function Wu(t){return null!=t&&t.length?dr(t,1):[]}function Fu(t){return t&&t.length?t[0]:i}var qu=Yr((function(t){var n=Dn(t,gi);return n.length&&n[0]===t[0]?Cr(n):[]})),Hu=Yr((function(t){var n=Ku(t),e=Dn(t,gi);return n===Ku(e)?n=i:e.pop(),e.length&&e[0]===t[0]?Cr(e,uu(n,2)):[]})),Yu=Yr((function(t){var n=Ku(t),e=Dn(t,gi);return(n="function"==typeof n?n:i)&&e.pop(),e.length&&e[0]===t[0]?Cr(e,i,n):[]}));function Ku(t){var n=null==t?0:t.length;return n?t[n-1]:i}var Zu=Yr(Vu);function Vu(t,n){return t&&t.length&&n&&n.length?Wr(t,n):t}var Qu=Xi((function(t,n){var e=null==t?0:t.length,r=ir(t,n);return Fr(t,Dn(n,(function(t){return du(t,e)?+t:t})).sort(Ai)),r}));function Ju(t){return null==t?t:be.call(t)}var Xu=Yr((function(t){return ai(dr(t,1,Ho,!0))})),to=Yr((function(t){var n=Ku(t);return Ho(n)&&(n=i),ai(dr(t,1,Ho,!0),uu(n,2))})),no=Yr((function(t){var n=Ku(t);return n="function"==typeof n?n:i,ai(dr(t,1,Ho,!0),i,n)}));function eo(t){if(!t||!t.length)return[];var n=0;return t=Rn(t,(function(t){if(Ho(t))return n=ve(t.length,n),!0})),Kn(n,(function(n){return Dn(t,Fn(n))}))}function ro(t,n){if(!t||!t.length)return[];var e=eo(t);return null==n?e:Dn(e,(function(t){return Sn(n,i,t)}))}var io=Yr((function(t,n){return Ho(t)?cr(t,n):[]})),uo=Yr((function(t){return hi(Rn(t,Ho))})),oo=Yr((function(t){var n=Ku(t);return Ho(n)&&(n=i),hi(Rn(t,Ho),uu(n,2))})),ao=Yr((function(t){var n=Ku(t);return n="function"==typeof n?n:i,hi(Rn(t,Ho),i,n)})),so=Yr(eo),co=Yr((function(t){var n=t.length,e=n>1?t[n-1]:i;return e="function"==typeof e?(t.pop(),e):i,ro(t,e)}));function lo(t){var n=Ge(t);return n.__chain__=!0,n}function fo(t,n){return n(t)}var ho=Xi((function(t){var n=t.length,e=n?t[0]:0,r=this.__wrapped__,u=function(n){return ir(n,t)};return!(n>1||this.__actions__.length)&&r instanceof Be&&du(e)?((r=r.slice(e,+e+(n?1:0))).__actions__.push({func:fo,args:[u],thisArg:i}),new ze(r,this.__chain__).thru((function(t){return n&&!t.length&&t.push(i),t}))):this.thru(u)})),po=Ni((function(t,n,e){Tt.call(t,e)?++t[e]:rr(t,e,1)})),go=Pi(zu),vo=Pi(Bu);function _o(t,n){return(Wo(t)?En:lr)(t,uu(n,3))}function yo(t,n){return(Wo(t)?Cn:fr)(t,uu(n,3))}var mo=Ni((function(t,n,e){Tt.call(t,e)?t[e].push(n):rr(t,e,[n])})),wo=Yr((function(t,n,e){var i=-1,u="function"==typeof n,o=qo(t)?r(t.length):[];return lr(t,(function(t){o[++i]=u?Sn(n,t,e):Nr(t,n,e)})),o})),bo=Ni((function(t,n,e){rr(t,e,n)}));function xo(t,n){return(Wo(t)?Dn:Lr)(t,uu(n,3))}var Ao=Ni((function(t,n,e){t[e?0:1].push(n)}),(function(){return[[],[]]})),So=Yr((function(t,n){if(null==t)return[];var e=n.length;return e>1&&vu(t,n[0],n[1])?n=[]:e>2&&vu(n[0],n[1],n[2])&&(n=[n[0]]),zr(t,dr(n,1),[])})),ko=ln||function(){return hn.Date.now()};function Eo(t,n,e){return n=e?i:n,n=t&&null==n?t.length:n,Ki(t,c,i,i,i,i,n)}function Co(t,n){var e;if("function"!=typeof n)throw new Ct(u);return t=pa(t),function(){return--t>0&&(e=n.apply(this,arguments)),t<=1&&(n=i),e}}var No=Yr((function(t,n,e){var r=1;if(e.length){var i=ae(e,iu(No));r|=s}return Ki(t,r,n,e,i)})),Ro=Yr((function(t,n,e){var r=3;if(e.length){var i=ae(e,iu(Ro));r|=s}return Ki(n,r,t,e,i)}));function Io(t,n,e){var r,o,a,s,c,l,f=0,h=!1,p=!1,g=!0;if("function"!=typeof t)throw new Ct(u);function d(n){var e=r,u=o;return r=o=i,f=n,s=t.apply(u,e)}function v(t){var e=t-l;return l===i||e>=n||e<0||p&&t-f>=a}function _(){var t=ko();if(v(t))return y(t);c=Cu(_,function(t){var e=n-(t-l);return p?_e(e,a-(t-f)):e}(t))}function y(t){return c=i,g&&r?d(t):(r=o=i,s)}function m(){var t=ko(),e=v(t);if(r=arguments,o=this,l=t,e){if(c===i)return function(t){return f=t,c=Cu(_,n),h?d(t):s}(l);if(p)return mi(c),c=Cu(_,n),d(l)}return c===i&&(c=Cu(_,n)),s}return n=da(n)||0,Xo(e)&&(h=!!e.leading,a=(p="maxWait"in e)?ve(da(e.maxWait)||0,n):a,g="trailing"in e?!!e.trailing:g),m.cancel=function(){c!==i&&mi(c),f=0,r=l=o=c=i},m.flush=function(){return c===i?s:y(ko())},m}var Oo=Yr((function(t,n){return sr(t,1,n)})),Do=Yr((function(t,n,e){return sr(t,da(n)||0,e)}));function To(t,n){if("function"!=typeof t||null!=n&&"function"!=typeof n)throw new Ct(u);var e=function(){var r=arguments,i=n?n.apply(this,r):r[0],u=e.cache;if(u.has(i))return u.get(i);var o=t.apply(this,r);return e.cache=u.set(i,o)||u,o};return e.cache=new(To.Cache||qe),e}function jo(t){if("function"!=typeof t)throw new Ct(u);return function(){var n=arguments;switch(n.length){case 0:return!t.call(this);case 1:return!t.call(this,n[0]);case 2:return!t.call(this,n[0],n[1]);case 3:return!t.call(this,n[0],n[1],n[2])}return!t.apply(this,n)}}To.Cache=qe;var Po=_i((function(t,n){var e=(n=1==n.length&&Wo(n[0])?Dn(n[0],Vn(uu())):Dn(dr(n,1),Vn(uu()))).length;return Yr((function(r){for(var i=-1,u=_e(r.length,e);++i<u;)r[i]=n[i].call(this,r[i]);return Sn(t,this,r)}))})),Lo=Yr((function(t,n){var e=ae(n,iu(Lo));return Ki(t,s,i,n,e)})),Uo=Yr((function(t,n){var e=ae(n,iu(Uo));return Ki(t,64,i,n,e)})),Go=Xi((function(t,n){return Ki(t,256,i,i,i,n)}));function Mo(t,n){return t===n||t!=t&&n!=n}var $o=Wi(Sr),zo=Wi((function(t,n){return t>=n})),Bo=Rr(function(){return arguments}())?Rr:function(t){return ta(t)&&Tt.call(t,"callee")&&!Ht.call(t,"callee")},Wo=r.isArray,Fo=yn?Vn(yn):function(t){return ta(t)&&Ar(t)==O};function qo(t){return null!=t&&Jo(t.length)&&!Vo(t)}function Ho(t){return ta(t)&&qo(t)}var Yo=_n||ds,Ko=mn?Vn(mn):function(t){return ta(t)&&Ar(t)==y};function Zo(t){if(!ta(t))return!1;var n=Ar(t);return n==m||"[object DOMException]"==n||"string"==typeof t.message&&"string"==typeof t.name&&!ra(t)}function Vo(t){if(!Xo(t))return!1;var n=Ar(t);return n==w||n==b||"[object AsyncFunction]"==n||"[object Proxy]"==n}function Qo(t){return"number"==typeof t&&t==pa(t)}function Jo(t){return"number"==typeof t&&t>-1&&t%1==0&&t<=f}function Xo(t){var n=typeof t;return null!=t&&("object"==n||"function"==n)}function ta(t){return null!=t&&"object"==typeof t}var na=wn?Vn(wn):function(t){return ta(t)&&fu(t)==x};function ea(t){return"number"==typeof t||ta(t)&&Ar(t)==A}function ra(t){if(!ta(t)||Ar(t)!=S)return!1;var n=Ft(t);if(null===n)return!0;var e=Tt.call(n,"constructor")&&n.constructor;return"function"==typeof e&&e instanceof e&&Dt.call(e)==Ut}var ia=bn?Vn(bn):function(t){return ta(t)&&Ar(t)==E},ua=xn?Vn(xn):function(t){return ta(t)&&fu(t)==C};function oa(t){return"string"==typeof t||!Wo(t)&&ta(t)&&Ar(t)==N}function aa(t){return"symbol"==typeof t||ta(t)&&Ar(t)==R}var sa=An?Vn(An):function(t){return ta(t)&&Jo(t.length)&&!!un[Ar(t)]},ca=Wi(Pr),la=Wi((function(t,n){return t<=n}));function fa(t){if(!t)return[];if(qo(t))return oa(t)?fe(t):Ei(t);if(Zt&&t[Zt])return function(t){for(var n,e=[];!(n=t.next()).done;)e.push(n.value);return e}(t[Zt]());var n=fu(t);return(n==x?ue:n==C?se:Ma)(t)}function ha(t){return t?(t=da(t))===l||t===-1/0?17976931348623157e292*(t<0?-1:1):t==t?t:0:0===t?t:0}function pa(t){var n=ha(t),e=n%1;return n==n?e?n-e:n:0}function ga(t){return t?ur(pa(t),0,p):0}function da(t){if("number"==typeof t)return t;if(aa(t))return h;if(Xo(t)){var n="function"==typeof t.valueOf?t.valueOf():t;t=Xo(n)?n+"":n}if("string"!=typeof t)return 0===t?t:+t;t=Zn(t);var e=gt.test(t);return e||vt.test(t)?cn(t.slice(2),e?2:8):pt.test(t)?h:+t}function va(t){return Ci(t,Oa(t))}function _a(t){return null==t?"":oi(t)}var ya=Ri((function(t,n){if(wu(n)||qo(n))Ci(n,Ia(n),t);else for(var e in n)Tt.call(n,e)&&Xe(t,e,n[e])})),ma=Ri((function(t,n){Ci(n,Oa(n),t)})),wa=Ri((function(t,n,e,r){Ci(n,Oa(n),t,r)})),ba=Ri((function(t,n,e,r){Ci(n,Ia(n),t,r)})),xa=Xi(ir),Aa=Yr((function(t,n){t=St(t);var e=-1,r=n.length,u=r>2?n[2]:i;for(u&&vu(n[0],n[1],u)&&(r=1);++e<r;)for(var o=n[e],a=Oa(o),s=-1,c=a.length;++s<c;){var l=a[s],f=t[l];(f===i||Mo(f,It[l])&&!Tt.call(t,l))&&(t[l]=o[l])}return t})),Sa=Yr((function(t){return t.push(i,Vi),Sn(Ta,i,t)}));function ka(t,n,e){var r=null==t?i:br(t,n);return r===i?e:r}function Ea(t,n){return null!=t&&hu(t,n,Er)}var Ca=Gi((function(t,n,e){null!=n&&"function"!=typeof n.toString&&(n=Lt.call(n)),t[n]=e}),Xa(es)),Na=Gi((function(t,n,e){null!=n&&"function"!=typeof n.toString&&(n=Lt.call(n)),Tt.call(t,n)?t[n].push(e):t[n]=[e]}),uu),Ra=Yr(Nr);function Ia(t){return qo(t)?Ke(t):jr(t)}function Oa(t){return qo(t)?Ke(t,!0):function(t){if(!Xo(t))return function(t){var n=[];if(null!=t)for(var e in St(t))n.push(e);return n}(t);var n=wu(t),e=[];for(var r in t)("constructor"!=r||!n&&Tt.call(t,r))&&e.push(r);return e}(t)}var Da=Ri((function(t,n,e){Mr(t,n,e)})),Ta=Ri((function(t,n,e,r){Mr(t,n,e,r)})),ja=Xi((function(t,n){var e={};if(null==t)return e;var r=!1;n=Dn(n,(function(n){return n=vi(n,t),r||(r=n.length>1),n})),Ci(t,nu(t),e),r&&(e=or(e,7,Qi));for(var i=n.length;i--;)si(e,n[i]);return e})),Pa=Xi((function(t,n){return null==t?{}:function(t,n){return Br(t,n,(function(n,e){return Ea(t,e)}))}(t,n)}));function La(t,n){if(null==t)return{};var e=Dn(nu(t),(function(t){return[t]}));return n=uu(n),Br(t,e,(function(t,e){return n(t,e[0])}))}var Ua=Yi(Ia),Ga=Yi(Oa);function Ma(t){return null==t?[]:Qn(t,Ia(t))}var $a=Ti((function(t,n,e){return n=n.toLowerCase(),t+(e?za(n):n)}));function za(t){return Za(_a(t).toLowerCase())}function Ba(t){return(t=_a(t))&&t.replace(yt,ne).replace(Qt,"")}var Wa=Ti((function(t,n,e){return t+(e?"-":"")+n.toLowerCase()})),Fa=Ti((function(t,n,e){return t+(e?" ":"")+n.toLowerCase()})),qa=Di("toLowerCase"),Ha=Ti((function(t,n,e){return t+(e?"_":"")+n.toLowerCase()})),Ya=Ti((function(t,n,e){return t+(e?" ":"")+Za(n)})),Ka=Ti((function(t,n,e){return t+(e?" ":"")+n.toUpperCase()})),Za=Di("toUpperCase");function Va(t,n,e){return t=_a(t),(n=e?i:n)===i?function(t){return nn.test(t)}(t)?function(t){return t.match(Xt)||[]}(t):function(t){return t.match(st)||[]}(t):t.match(n)||[]}var Qa=Yr((function(t,n){try{return Sn(t,i,n)}catch(t){return Zo(t)?t:new bt(t)}})),Ja=Xi((function(t,n){return En(n,(function(n){n=Pu(n),rr(t,n,No(t[n],t))})),t}));function Xa(t){return function(){return t}}var ts=Li(),ns=Li(!0);function es(t){return t}function rs(t){return Tr("function"==typeof t?t:or(t,1))}var is=Yr((function(t,n){return function(e){return Nr(e,t,n)}})),us=Yr((function(t,n){return function(e){return Nr(t,e,n)}}));function os(t,n,e){var r=Ia(n),i=wr(n,r);null!=e||Xo(n)&&(i.length||!r.length)||(e=n,n=t,t=this,i=wr(n,Ia(n)));var u=!(Xo(e)&&"chain"in e&&!e.chain),o=Vo(t);return En(i,(function(e){var r=n[e];t[e]=r,o&&(t.prototype[e]=function(){var n=this.__chain__;if(u||n){var e=t(this.__wrapped__);return(e.__actions__=Ei(this.__actions__)).push({func:r,args:arguments,thisArg:t}),e.__chain__=n,e}return r.apply(t,Tn([this.value()],arguments))})})),t}function as(){}var ss=$i(Dn),cs=$i(Nn),ls=$i(Ln);function fs(t){return _u(t)?Fn(Pu(t)):function(t){return function(n){return br(n,t)}}(t)}var hs=Bi(),ps=Bi(!0);function gs(){return[]}function ds(){return!1}var vs,_s=Mi((function(t,n){return t+n}),0),ys=qi("ceil"),ms=Mi((function(t,n){return t/n}),1),ws=qi("floor"),bs=Mi((function(t,n){return t*n}),1),xs=qi("round"),As=Mi((function(t,n){return t-n}),0);return Ge.after=function(t,n){if("function"!=typeof n)throw new Ct(u);return t=pa(t),function(){if(--t<1)return n.apply(this,arguments)}},Ge.ary=Eo,Ge.assign=ya,Ge.assignIn=ma,Ge.assignInWith=wa,Ge.assignWith=ba,Ge.at=xa,Ge.before=Co,Ge.bind=No,Ge.bindAll=Ja,Ge.bindKey=Ro,Ge.castArray=function(){if(!arguments.length)return[];var t=arguments[0];return Wo(t)?t:[t]},Ge.chain=lo,Ge.chunk=function(t,n,e){n=(e?vu(t,n,e):n===i)?1:ve(pa(n),0);var u=null==t?0:t.length;if(!u||n<1)return[];for(var o=0,a=0,s=r(pn(u/n));o<u;)s[a++]=ti(t,o,o+=n);return s},Ge.compact=function(t){for(var n=-1,e=null==t?0:t.length,r=0,i=[];++n<e;){var u=t[n];u&&(i[r++]=u)}return i},Ge.concat=function(){var t=arguments.length;if(!t)return[];for(var n=r(t-1),e=arguments[0],i=t;i--;)n[i-1]=arguments[i];return Tn(Wo(e)?Ei(e):[e],dr(n,1))},Ge.cond=function(t){var n=null==t?0:t.length,e=uu();return t=n?Dn(t,(function(t){if("function"!=typeof t[1])throw new Ct(u);return[e(t[0]),t[1]]})):[],Yr((function(e){for(var r=-1;++r<n;){var i=t[r];if(Sn(i[0],this,e))return Sn(i[1],this,e)}}))},Ge.conforms=function(t){return function(t){var n=Ia(t);return function(e){return ar(e,t,n)}}(or(t,1))},Ge.constant=Xa,Ge.countBy=po,Ge.create=function(t,n){var e=Me(t);return null==n?e:er(e,n)},Ge.curry=function t(n,e,r){var u=Ki(n,8,i,i,i,i,i,e=r?i:e);return u.placeholder=t.placeholder,u},Ge.curryRight=function t(n,e,r){var u=Ki(n,16,i,i,i,i,i,e=r?i:e);return u.placeholder=t.placeholder,u},Ge.debounce=Io,Ge.defaults=Aa,Ge.defaultsDeep=Sa,Ge.defer=Oo,Ge.delay=Do,Ge.difference=Gu,Ge.differenceBy=Mu,Ge.differenceWith=$u,Ge.drop=function(t,n,e){var r=null==t?0:t.length;return r?ti(t,(n=e||n===i?1:pa(n))<0?0:n,r):[]},Ge.dropRight=function(t,n,e){var r=null==t?0:t.length;return r?ti(t,0,(n=r-(n=e||n===i?1:pa(n)))<0?0:n):[]},Ge.dropRightWhile=function(t,n){return t&&t.length?li(t,uu(n,3),!0,!0):[]},Ge.dropWhile=function(t,n){return t&&t.length?li(t,uu(n,3),!0):[]},Ge.fill=function(t,n,e,r){var u=null==t?0:t.length;return u?(e&&"number"!=typeof e&&vu(t,n,e)&&(e=0,r=u),function(t,n,e,r){var u=t.length;for((e=pa(e))<0&&(e=-e>u?0:u+e),(r=r===i||r>u?u:pa(r))<0&&(r+=u),r=e>r?0:ga(r);e<r;)t[e++]=n;return t}(t,n,e,r)):[]},Ge.filter=function(t,n){return(Wo(t)?Rn:gr)(t,uu(n,3))},Ge.flatMap=function(t,n){return dr(xo(t,n),1)},Ge.flatMapDeep=function(t,n){return dr(xo(t,n),l)},Ge.flatMapDepth=function(t,n,e){return e=e===i?1:pa(e),dr(xo(t,n),e)},Ge.flatten=Wu,Ge.flattenDeep=function(t){return null!=t&&t.length?dr(t,l):[]},Ge.flattenDepth=function(t,n){return null!=t&&t.length?dr(t,n=n===i?1:pa(n)):[]},Ge.flip=function(t){return Ki(t,512)},Ge.flow=ts,Ge.flowRight=ns,Ge.fromPairs=function(t){for(var n=-1,e=null==t?0:t.length,r={};++n<e;){var i=t[n];r[i[0]]=i[1]}return r},Ge.functions=function(t){return null==t?[]:wr(t,Ia(t))},Ge.functionsIn=function(t){return null==t?[]:wr(t,Oa(t))},Ge.groupBy=mo,Ge.initial=function(t){return null!=t&&t.length?ti(t,0,-1):[]},Ge.intersection=qu,Ge.intersectionBy=Hu,Ge.intersectionWith=Yu,Ge.invert=Ca,Ge.invertBy=Na,Ge.invokeMap=wo,Ge.iteratee=rs,Ge.keyBy=bo,Ge.keys=Ia,Ge.keysIn=Oa,Ge.map=xo,Ge.mapKeys=function(t,n){var e={};return n=uu(n,3),yr(t,(function(t,r,i){rr(e,n(t,r,i),t)})),e},Ge.mapValues=function(t,n){var e={};return n=uu(n,3),yr(t,(function(t,r,i){rr(e,r,n(t,r,i))})),e},Ge.matches=function(t){return Ur(or(t,1))},Ge.matchesProperty=function(t,n){return Gr(t,or(n,1))},Ge.memoize=To,Ge.merge=Da,Ge.mergeWith=Ta,Ge.method=is,Ge.methodOf=us,Ge.mixin=os,Ge.negate=jo,Ge.nthArg=function(t){return t=pa(t),Yr((function(n){return $r(n,t)}))},Ge.omit=ja,Ge.omitBy=function(t,n){return La(t,jo(uu(n)))},Ge.once=function(t){return Co(2,t)},Ge.orderBy=function(t,n,e,r){return null==t?[]:(Wo(n)||(n=null==n?[]:[n]),Wo(e=r?i:e)||(e=null==e?[]:[e]),zr(t,n,e))},Ge.over=ss,Ge.overArgs=Po,Ge.overEvery=cs,Ge.overSome=ls,Ge.partial=Lo,Ge.partialRight=Uo,Ge.partition=Ao,Ge.pick=Pa,Ge.pickBy=La,Ge.property=fs,Ge.propertyOf=function(t){return function(n){return null==t?i:br(t,n)}},Ge.pull=Zu,Ge.pullAll=Vu,Ge.pullAllBy=function(t,n,e){return t&&t.length&&n&&n.length?Wr(t,n,uu(e,2)):t},Ge.pullAllWith=function(t,n,e){return t&&t.length&&n&&n.length?Wr(t,n,i,e):t},Ge.pullAt=Qu,Ge.range=hs,Ge.rangeRight=ps,Ge.rearg=Go,Ge.reject=function(t,n){return(Wo(t)?Rn:gr)(t,jo(uu(n,3)))},Ge.remove=function(t,n){var e=[];if(!t||!t.length)return e;var r=-1,i=[],u=t.length;for(n=uu(n,3);++r<u;){var o=t[r];n(o,r,t)&&(e.push(o),i.push(r))}return Fr(t,i),e},Ge.rest=function(t,n){if("function"!=typeof t)throw new Ct(u);return Yr(t,n=n===i?n:pa(n))},Ge.reverse=Ju,Ge.sampleSize=function(t,n,e){return n=(e?vu(t,n,e):n===i)?1:pa(n),(Wo(t)?Ve:Zr)(t,n)},Ge.set=function(t,n,e){return null==t?t:Vr(t,n,e)},Ge.setWith=function(t,n,e,r){return r="function"==typeof r?r:i,null==t?t:Vr(t,n,e,r)},Ge.shuffle=function(t){return(Wo(t)?Qe:Xr)(t)},Ge.slice=function(t,n,e){var r=null==t?0:t.length;return r?(e&&"number"!=typeof e&&vu(t,n,e)?(n=0,e=r):(n=null==n?0:pa(n),e=e===i?r:pa(e)),ti(t,n,e)):[]},Ge.sortBy=So,Ge.sortedUniq=function(t){return t&&t.length?ii(t):[]},Ge.sortedUniqBy=function(t,n){return t&&t.length?ii(t,uu(n,2)):[]},Ge.split=function(t,n,e){return e&&"number"!=typeof e&&vu(t,n,e)&&(n=e=i),(e=e===i?p:e>>>0)?(t=_a(t))&&("string"==typeof n||null!=n&&!ia(n))&&!(n=oi(n))&&ie(t)?yi(fe(t),0,e):t.split(n,e):[]},Ge.spread=function(t,n){if("function"!=typeof t)throw new Ct(u);return n=null==n?0:ve(pa(n),0),Yr((function(e){var r=e[n],i=yi(e,0,n);return r&&Tn(i,r),Sn(t,this,i)}))},Ge.tail=function(t){var n=null==t?0:t.length;return n?ti(t,1,n):[]},Ge.take=function(t,n,e){return t&&t.length?ti(t,0,(n=e||n===i?1:pa(n))<0?0:n):[]},Ge.takeRight=function(t,n,e){var r=null==t?0:t.length;return r?ti(t,(n=r-(n=e||n===i?1:pa(n)))<0?0:n,r):[]},Ge.takeRightWhile=function(t,n){return t&&t.length?li(t,uu(n,3),!1,!0):[]},Ge.takeWhile=function(t,n){return t&&t.length?li(t,uu(n,3)):[]},Ge.tap=function(t,n){return n(t),t},Ge.throttle=function(t,n,e){var r=!0,i=!0;if("function"!=typeof t)throw new Ct(u);return Xo(e)&&(r="leading"in e?!!e.leading:r,i="trailing"in e?!!e.trailing:i),Io(t,n,{leading:r,maxWait:n,trailing:i})},Ge.thru=fo,Ge.toArray=fa,Ge.toPairs=Ua,Ge.toPairsIn=Ga,Ge.toPath=function(t){return Wo(t)?Dn(t,Pu):aa(t)?[t]:Ei(ju(_a(t)))},Ge.toPlainObject=va,Ge.transform=function(t,n,e){var r=Wo(t),i=r||Yo(t)||sa(t);if(n=uu(n,4),null==e){var u=t&&t.constructor;e=i?r?new u:[]:Xo(t)&&Vo(u)?Me(Ft(t)):{}}return(i?En:yr)(t,(function(t,r,i){return n(e,t,r,i)})),e},Ge.unary=function(t){return Eo(t,1)},Ge.union=Xu,Ge.unionBy=to,Ge.unionWith=no,Ge.uniq=function(t){return t&&t.length?ai(t):[]},Ge.uniqBy=function(t,n){return t&&t.length?ai(t,uu(n,2)):[]},Ge.uniqWith=function(t,n){return n="function"==typeof n?n:i,t&&t.length?ai(t,i,n):[]},Ge.unset=function(t,n){return null==t||si(t,n)},Ge.unzip=eo,Ge.unzipWith=ro,Ge.update=function(t,n,e){return null==t?t:ci(t,n,di(e))},Ge.updateWith=function(t,n,e,r){return r="function"==typeof r?r:i,null==t?t:ci(t,n,di(e),r)},Ge.values=Ma,Ge.valuesIn=function(t){return null==t?[]:Qn(t,Oa(t))},Ge.without=io,Ge.words=Va,Ge.wrap=function(t,n){return Lo(di(n),t)},Ge.xor=uo,Ge.xorBy=oo,Ge.xorWith=ao,Ge.zip=so,Ge.zipObject=function(t,n){return pi(t||[],n||[],Xe)},Ge.zipObjectDeep=function(t,n){return pi(t||[],n||[],Vr)},Ge.zipWith=co,Ge.entries=Ua,Ge.entriesIn=Ga,Ge.extend=ma,Ge.extendWith=wa,os(Ge,Ge),Ge.add=_s,Ge.attempt=Qa,Ge.camelCase=$a,Ge.capitalize=za,Ge.ceil=ys,Ge.clamp=function(t,n,e){return e===i&&(e=n,n=i),e!==i&&(e=(e=da(e))==e?e:0),n!==i&&(n=(n=da(n))==n?n:0),ur(da(t),n,e)},Ge.clone=function(t){return or(t,4)},Ge.cloneDeep=function(t){return or(t,5)},Ge.cloneDeepWith=function(t,n){return or(t,5,n="function"==typeof n?n:i)},Ge.cloneWith=function(t,n){return or(t,4,n="function"==typeof n?n:i)},Ge.conformsTo=function(t,n){return null==n||ar(t,n,Ia(n))},Ge.deburr=Ba,Ge.defaultTo=function(t,n){return null==t||t!=t?n:t},Ge.divide=ms,Ge.endsWith=function(t,n,e){t=_a(t),n=oi(n);var r=t.length,u=e=e===i?r:ur(pa(e),0,r);return(e-=n.length)>=0&&t.slice(e,u)==n},Ge.eq=Mo,Ge.escape=function(t){return(t=_a(t))&&K.test(t)?t.replace(H,ee):t},Ge.escapeRegExp=function(t){return(t=_a(t))&&et.test(t)?t.replace(nt,"\\$&"):t},Ge.every=function(t,n,e){var r=Wo(t)?Nn:hr;return e&&vu(t,n,e)&&(n=i),r(t,uu(n,3))},Ge.find=go,Ge.findIndex=zu,Ge.findKey=function(t,n){return Gn(t,uu(n,3),yr)},Ge.findLast=vo,Ge.findLastIndex=Bu,Ge.findLastKey=function(t,n){return Gn(t,uu(n,3),mr)},Ge.floor=ws,Ge.forEach=_o,Ge.forEachRight=yo,Ge.forIn=function(t,n){return null==t?t:vr(t,uu(n,3),Oa)},Ge.forInRight=function(t,n){return null==t?t:_r(t,uu(n,3),Oa)},Ge.forOwn=function(t,n){return t&&yr(t,uu(n,3))},Ge.forOwnRight=function(t,n){return t&&mr(t,uu(n,3))},Ge.get=ka,Ge.gt=$o,Ge.gte=zo,Ge.has=function(t,n){return null!=t&&hu(t,n,kr)},Ge.hasIn=Ea,Ge.head=Fu,Ge.identity=es,Ge.includes=function(t,n,e,r){t=qo(t)?t:Ma(t),e=e&&!r?pa(e):0;var i=t.length;return e<0&&(e=ve(i+e,0)),oa(t)?e<=i&&t.indexOf(n,e)>-1:!!i&&$n(t,n,e)>-1},Ge.indexOf=function(t,n,e){var r=null==t?0:t.length;if(!r)return-1;var i=null==e?0:pa(e);return i<0&&(i=ve(r+i,0)),$n(t,n,i)},Ge.inRange=function(t,n,e){return n=ha(n),e===i?(e=n,n=0):e=ha(e),function(t,n,e){return t>=_e(n,e)&&t<ve(n,e)}(t=da(t),n,e)},Ge.invoke=Ra,Ge.isArguments=Bo,Ge.isArray=Wo,Ge.isArrayBuffer=Fo,Ge.isArrayLike=qo,Ge.isArrayLikeObject=Ho,Ge.isBoolean=function(t){return!0===t||!1===t||ta(t)&&Ar(t)==_},Ge.isBuffer=Yo,Ge.isDate=Ko,Ge.isElement=function(t){return ta(t)&&1===t.nodeType&&!ra(t)},Ge.isEmpty=function(t){if(null==t)return!0;if(qo(t)&&(Wo(t)||"string"==typeof t||"function"==typeof t.splice||Yo(t)||sa(t)||Bo(t)))return!t.length;var n=fu(t);if(n==x||n==C)return!t.size;if(wu(t))return!jr(t).length;for(var e in t)if(Tt.call(t,e))return!1;return!0},Ge.isEqual=function(t,n){return Ir(t,n)},Ge.isEqualWith=function(t,n,e){var r=(e="function"==typeof e?e:i)?e(t,n):i;return r===i?Ir(t,n,i,e):!!r},Ge.isError=Zo,Ge.isFinite=function(t){return"number"==typeof t&&Un(t)},Ge.isFunction=Vo,Ge.isInteger=Qo,Ge.isLength=Jo,Ge.isMap=na,Ge.isMatch=function(t,n){return t===n||Or(t,n,au(n))},Ge.isMatchWith=function(t,n,e){return e="function"==typeof e?e:i,Or(t,n,au(n),e)},Ge.isNaN=function(t){return ea(t)&&t!=+t},Ge.isNative=function(t){if(mu(t))throw new bt("Unsupported core-js use. Try https://npms.io/search?q=ponyfill.");return Dr(t)},Ge.isNil=function(t){return null==t},Ge.isNull=function(t){return null===t},Ge.isNumber=ea,Ge.isObject=Xo,Ge.isObjectLike=ta,Ge.isPlainObject=ra,Ge.isRegExp=ia,Ge.isSafeInteger=function(t){return Qo(t)&&t>=-9007199254740991&&t<=f},Ge.isSet=ua,Ge.isString=oa,Ge.isSymbol=aa,Ge.isTypedArray=sa,Ge.isUndefined=function(t){return t===i},Ge.isWeakMap=function(t){return ta(t)&&fu(t)==I},Ge.isWeakSet=function(t){return ta(t)&&"[object WeakSet]"==Ar(t)},Ge.join=function(t,n){return null==t?"":qn.call(t,n)},Ge.kebabCase=Wa,Ge.last=Ku,Ge.lastIndexOf=function(t,n,e){var r=null==t?0:t.length;if(!r)return-1;var u=r;return e!==i&&(u=(u=pa(e))<0?ve(r+u,0):_e(u,r-1)),n==n?function(t,n,e){for(var r=e+1;r--;)if(t[r]===n)return r;return r}(t,n,u):Mn(t,Bn,u,!0)},Ge.lowerCase=Fa,Ge.lowerFirst=qa,Ge.lt=ca,Ge.lte=la,Ge.max=function(t){return t&&t.length?pr(t,es,Sr):i},Ge.maxBy=function(t,n){return t&&t.length?pr(t,uu(n,2),Sr):i},Ge.mean=function(t){return Wn(t,es)},Ge.meanBy=function(t,n){return Wn(t,uu(n,2))},Ge.min=function(t){return t&&t.length?pr(t,es,Pr):i},Ge.minBy=function(t,n){return t&&t.length?pr(t,uu(n,2),Pr):i},Ge.stubArray=gs,Ge.stubFalse=ds,Ge.stubObject=function(){return{}},Ge.stubString=function(){return""},Ge.stubTrue=function(){return!0},Ge.multiply=bs,Ge.nth=function(t,n){return t&&t.length?$r(t,pa(n)):i},Ge.noConflict=function(){return hn._===this&&(hn._=Gt),this},Ge.noop=as,Ge.now=ko,Ge.pad=function(t,n,e){t=_a(t);var r=(n=pa(n))?le(t):0;if(!n||r>=n)return t;var i=(n-r)/2;return zi(gn(i),e)+t+zi(pn(i),e)},Ge.padEnd=function(t,n,e){t=_a(t);var r=(n=pa(n))?le(t):0;return n&&r<n?t+zi(n-r,e):t},Ge.padStart=function(t,n,e){t=_a(t);var r=(n=pa(n))?le(t):0;return n&&r<n?zi(n-r,e)+t:t},Ge.parseInt=function(t,n,e){return e||null==n?n=0:n&&(n=+n),me(_a(t).replace(rt,""),n||0)},Ge.random=function(t,n,e){if(e&&"boolean"!=typeof e&&vu(t,n,e)&&(n=e=i),e===i&&("boolean"==typeof n?(e=n,n=i):"boolean"==typeof t&&(e=t,t=i)),t===i&&n===i?(t=0,n=1):(t=ha(t),n===i?(n=t,t=0):n=ha(n)),t>n){var r=t;t=n,n=r}if(e||t%1||n%1){var u=we();return _e(t+u*(n-t+sn("1e-"+((u+"").length-1))),n)}return qr(t,n)},Ge.reduce=function(t,n,e){var r=Wo(t)?jn:Hn,i=arguments.length<3;return r(t,uu(n,4),e,i,lr)},Ge.reduceRight=function(t,n,e){var r=Wo(t)?Pn:Hn,i=arguments.length<3;return r(t,uu(n,4),e,i,fr)},Ge.repeat=function(t,n,e){return n=(e?vu(t,n,e):n===i)?1:pa(n),Hr(_a(t),n)},Ge.replace=function(){var t=arguments,n=_a(t[0]);return t.length<3?n:n.replace(t[1],t[2])},Ge.result=function(t,n,e){var r=-1,u=(n=vi(n,t)).length;for(u||(u=1,t=i);++r<u;){var o=null==t?i:t[Pu(n[r])];o===i&&(r=u,o=e),t=Vo(o)?o.call(t):o}return t},Ge.round=xs,Ge.runInContext=t,Ge.sample=function(t){return(Wo(t)?Ze:Kr)(t)},Ge.size=function(t){if(null==t)return 0;if(qo(t))return oa(t)?le(t):t.length;var n=fu(t);return n==x||n==C?t.size:jr(t).length},Ge.snakeCase=Ha,Ge.some=function(t,n,e){var r=Wo(t)?Ln:ni;return e&&vu(t,n,e)&&(n=i),r(t,uu(n,3))},Ge.sortedIndex=function(t,n){return ei(t,n)},Ge.sortedIndexBy=function(t,n,e){return ri(t,n,uu(e,2))},Ge.sortedIndexOf=function(t,n){var e=null==t?0:t.length;if(e){var r=ei(t,n);if(r<e&&Mo(t[r],n))return r}return-1},Ge.sortedLastIndex=function(t,n){return ei(t,n,!0)},Ge.sortedLastIndexBy=function(t,n,e){return ri(t,n,uu(e,2),!0)},Ge.sortedLastIndexOf=function(t,n){if(null!=t&&t.length){var e=ei(t,n,!0)-1;if(Mo(t[e],n))return e}return-1},Ge.startCase=Ya,Ge.startsWith=function(t,n,e){return t=_a(t),e=null==e?0:ur(pa(e),0,t.length),n=oi(n),t.slice(e,e+n.length)==n},Ge.subtract=As,Ge.sum=function(t){return t&&t.length?Yn(t,es):0},Ge.sumBy=function(t,n){return t&&t.length?Yn(t,uu(n,2)):0},Ge.template=function(t,n,e){var r=Ge.templateSettings;e&&vu(t,n,e)&&(n=i),t=_a(t),n=wa({},n,r,Zi);var u,o,a=wa({},n.imports,r.imports,Zi),s=Ia(a),c=Qn(a,s),l=0,f=n.interpolate||mt,h="__p += '",p=kt((n.escape||mt).source+"|"+f.source+"|"+(f===Q?ft:mt).source+"|"+(n.evaluate||mt).source+"|$","g"),g="//# sourceURL="+(Tt.call(n,"sourceURL")?(n.sourceURL+"").replace(/\s/g," "):"lodash.templateSources["+ ++rn+"]")+"\n";t.replace(p,(function(n,e,r,i,a,s){return r||(r=i),h+=t.slice(l,s).replace(wt,re),e&&(u=!0,h+="' +\n__e("+e+") +\n'"),a&&(o=!0,h+="';\n"+a+";\n__p += '"),r&&(h+="' +\n((__t = ("+r+")) == null ? '' : __t) +\n'"),l=s+n.length,n})),h+="';\n";var d=Tt.call(n,"variable")&&n.variable;if(d){if(ct.test(d))throw new bt("Invalid `variable` option passed into `_.template`")}else h="with (obj) {\n"+h+"\n}\n";h=(o?h.replace(B,""):h).replace(W,"$1").replace(F,"$1;"),h="function("+(d||"obj")+") {\n"+(d?"":"obj || (obj = {});\n")+"var __t, __p = ''"+(u?", __e = _.escape":"")+(o?", __j = Array.prototype.join;\nfunction print() { __p += __j.call(arguments, '') }\n":";\n")+h+"return __p\n}";var v=Qa((function(){return xt(s,g+"return "+h).apply(i,c)}));if(v.source=h,Zo(v))throw v;return v},Ge.times=function(t,n){if((t=pa(t))<1||t>f)return[];var e=p,r=_e(t,p);n=uu(n),t-=p;for(var i=Kn(r,n);++e<t;)n(e);return i},Ge.toFinite=ha,Ge.toInteger=pa,Ge.toLength=ga,Ge.toLower=function(t){return _a(t).toLowerCase()},Ge.toNumber=da,Ge.toSafeInteger=function(t){return t?ur(pa(t),-9007199254740991,f):0===t?t:0},Ge.toString=_a,Ge.toUpper=function(t){return _a(t).toUpperCase()},Ge.trim=function(t,n,e){if((t=_a(t))&&(e||n===i))return Zn(t);if(!t||!(n=oi(n)))return t;var r=fe(t),u=fe(n);return yi(r,Xn(r,u),te(r,u)+1).join("")},Ge.trimEnd=function(t,n,e){if((t=_a(t))&&(e||n===i))return t.slice(0,he(t)+1);if(!t||!(n=oi(n)))return t;var r=fe(t);return yi(r,0,te(r,fe(n))+1).join("")},Ge.trimStart=function(t,n,e){if((t=_a(t))&&(e||n===i))return t.replace(rt,"");if(!t||!(n=oi(n)))return t;var r=fe(t);return yi(r,Xn(r,fe(n))).join("")},Ge.truncate=function(t,n){var e=30,r="...";if(Xo(n)){var u="separator"in n?n.separator:u;e="length"in n?pa(n.length):e,r="omission"in n?oi(n.omission):r}var o=(t=_a(t)).length;if(ie(t)){var a=fe(t);o=a.length}if(e>=o)return t;var s=e-le(r);if(s<1)return r;var c=a?yi(a,0,s).join(""):t.slice(0,s);if(u===i)return c+r;if(a&&(s+=c.length-s),ia(u)){if(t.slice(s).search(u)){var l,f=c;for(u.global||(u=kt(u.source,_a(ht.exec(u))+"g")),u.lastIndex=0;l=u.exec(f);)var h=l.index;c=c.slice(0,h===i?s:h)}}else if(t.indexOf(oi(u),s)!=s){var p=c.lastIndexOf(u);p>-1&&(c=c.slice(0,p))}return c+r},Ge.unescape=function(t){return(t=_a(t))&&Y.test(t)?t.replace(q,pe):t},Ge.uniqueId=function(t){var n=++jt;return _a(t)+n},Ge.upperCase=Ka,Ge.upperFirst=Za,Ge.each=_o,Ge.eachRight=yo,Ge.first=Fu,os(Ge,(vs={},yr(Ge,(function(t,n){Tt.call(Ge.prototype,n)||(vs[n]=t)})),vs),{chain:!1}),Ge.VERSION="4.17.21",En(["bind","bindKey","curry","curryRight","partial","partialRight"],(function(t){Ge[t].placeholder=Ge})),En(["drop","take"],(function(t,n){Be.prototype[t]=function(e){e=e===i?1:ve(pa(e),0);var r=this.__filtered__&&!n?new Be(this):this.clone();return r.__filtered__?r.__takeCount__=_e(e,r.__takeCount__):r.__views__.push({size:_e(e,p),type:t+(r.__dir__<0?"Right":"")}),r},Be.prototype[t+"Right"]=function(n){return this.reverse()[t](n).reverse()}})),En(["filter","map","takeWhile"],(function(t,n){var e=n+1,r=1==e||3==e;Be.prototype[t]=function(t){var n=this.clone();return n.__iteratees__.push({iteratee:uu(t,3),type:e}),n.__filtered__=n.__filtered__||r,n}})),En(["head","last"],(function(t,n){var e="take"+(n?"Right":"");Be.prototype[t]=function(){return this[e](1).value()[0]}})),En(["initial","tail"],(function(t,n){var e="drop"+(n?"":"Right");Be.prototype[t]=function(){return this.__filtered__?new Be(this):this[e](1)}})),Be.prototype.compact=function(){return this.filter(es)},Be.prototype.find=function(t){return this.filter(t).head()},Be.prototype.findLast=function(t){return this.reverse().find(t)},Be.prototype.invokeMap=Yr((function(t,n){return"function"==typeof t?new Be(this):this.map((function(e){return Nr(e,t,n)}))})),Be.prototype.reject=function(t){return this.filter(jo(uu(t)))},Be.prototype.slice=function(t,n){t=pa(t);var e=this;return e.__filtered__&&(t>0||n<0)?new Be(e):(t<0?e=e.takeRight(-t):t&&(e=e.drop(t)),n!==i&&(e=(n=pa(n))<0?e.dropRight(-n):e.take(n-t)),e)},Be.prototype.takeRightWhile=function(t){return this.reverse().takeWhile(t).reverse()},Be.prototype.toArray=function(){return this.take(p)},yr(Be.prototype,(function(t,n){var e=/^(?:filter|find|map|reject)|While$/.test(n),r=/^(?:head|last)$/.test(n),u=Ge[r?"take"+("last"==n?"Right":""):n],o=r||/^find/.test(n);u&&(Ge.prototype[n]=function(){var n=this.__wrapped__,a=r?[1]:arguments,s=n instanceof Be,c=a[0],l=s||Wo(n),f=function(t){var n=u.apply(Ge,Tn([t],a));return r&&h?n[0]:n};l&&e&&"function"==typeof c&&1!=c.length&&(s=l=!1);var h=this.__chain__,p=!!this.__actions__.length,g=o&&!h,d=s&&!p;if(!o&&l){n=d?n:new Be(this);var v=t.apply(n,a);return v.__actions__.push({func:fo,args:[f],thisArg:i}),new ze(v,h)}return g&&d?t.apply(this,a):(v=this.thru(f),g?r?v.value()[0]:v.value():v)})})),En(["pop","push","shift","sort","splice","unshift"],(function(t){var n=Nt[t],e=/^(?:push|sort|unshift)$/.test(t)?"tap":"thru",r=/^(?:pop|shift)$/.test(t);Ge.prototype[t]=function(){var t=arguments;if(r&&!this.__chain__){var i=this.value();return n.apply(Wo(i)?i:[],t)}return this[e]((function(e){return n.apply(Wo(e)?e:[],t)}))}})),yr(Be.prototype,(function(t,n){var e=Ge[n];if(e){var r=e.name+"";Tt.call(Re,r)||(Re[r]=[]),Re[r].push({name:n,func:e})}})),Re[Ui(i,2).name]=[{name:"wrapper",func:i}],Be.prototype.clone=function(){var t=new Be(this.__wrapped__);return t.__actions__=Ei(this.__actions__),t.__dir__=this.__dir__,t.__filtered__=this.__filtered__,t.__iteratees__=Ei(this.__iteratees__),t.__takeCount__=this.__takeCount__,t.__views__=Ei(this.__views__),t},Be.prototype.reverse=function(){if(this.__filtered__){var t=new Be(this);t.__dir__=-1,t.__filtered__=!0}else(t=this.clone()).__dir__*=-1;return t},Be.prototype.value=function(){var t=this.__wrapped__.value(),n=this.__dir__,e=Wo(t),r=n<0,i=e?t.length:0,u=function(t,n,e){for(var r=-1,i=e.length;++r<i;){var u=e[r],o=u.size;switch(u.type){case"drop":t+=o;break;case"dropRight":n-=o;break;case"take":n=_e(n,t+o);break;case"takeRight":t=ve(t,n-o)}}return{start:t,end:n}}(0,i,this.__views__),o=u.start,a=u.end,s=a-o,c=r?a:o-1,l=this.__iteratees__,f=l.length,h=0,p=_e(s,this.__takeCount__);if(!e||!r&&i==s&&p==s)return fi(t,this.__actions__);var g=[];t:for(;s--&&h<p;){for(var d=-1,v=t[c+=n];++d<f;){var _=l[d],y=_.iteratee,m=_.type,w=y(v);if(2==m)v=w;else if(!w){if(1==m)continue t;break t}}g[h++]=v}return g},Ge.prototype.at=ho,Ge.prototype.chain=function(){return lo(this)},Ge.prototype.commit=function(){return new ze(this.value(),this.__chain__)},Ge.prototype.next=function(){this.__values__===i&&(this.__values__=fa(this.value()));var t=this.__index__>=this.__values__.length;return{done:t,value:t?i:this.__values__[this.__index__++]}},Ge.prototype.plant=function(t){for(var n,e=this;e instanceof $e;){var r=Uu(e);r.__index__=0,r.__values__=i,n?u.__wrapped__=r:n=r;var u=r;e=e.__wrapped__}return u.__wrapped__=t,n},Ge.prototype.reverse=function(){var t=this.__wrapped__;if(t instanceof Be){var n=t;return this.__actions__.length&&(n=new Be(this)),(n=n.reverse()).__actions__.push({func:fo,args:[Ju],thisArg:i}),new ze(n,this.__chain__)}return this.thru(Ju)},Ge.prototype.toJSON=Ge.prototype.valueOf=Ge.prototype.value=function(){return fi(this.__wrapped__,this.__actions__)},Ge.prototype.first=Ge.prototype.head,Zt&&(Ge.prototype[Zt]=function(){return this}),Ge}();hn._=ge,(r=function(){return ge}.call(n,e,n,t))===i||(t.exports=r)}.call(this)},26734:t=>{"use strict";t.exports="data:image/svg+xml,%3csvg%20xmlns=%27http://www.w3.org/2000/svg%27%20width=%2724%27%20height=%2724%27%20fill=%27%23222%27%3e%3cpath%20d=%27M15.4%2016.6L10.8%2012l4.6-4.6L14%206l-6%206%206%206%201.4-1.4z%27/%3e%3c/svg%3e"},51338:t=>{"use strict";t.exports="data:image/svg+xml,%3csvg%20xmlns=%27http://www.w3.org/2000/svg%27%20width=%2724%27%20height=%2724%27%20fill=%27%23222%27%3e%3cpath%20d=%27M18.4%207.4L17%206l-6%206%206%206%201.4-1.4-4.6-4.6%204.6-4.6m-6%200L11%206l-6%206%206%206%201.4-1.4L7.8%2012l4.6-4.6z%27/%3e%3c/svg%3e"},57818:t=>{"use strict";t.exports="data:image/svg+xml,%3csvg%20xmlns=%27http://www.w3.org/2000/svg%27%20width=%2724%27%20height=%2724%27%20fill=%27%23222%27%3e%3cpath%20d=%27M5.6%207.4L7%206l6%206-6%206-1.4-1.4%204.6-4.6-4.6-4.6m6%200L13%206l6%206-6%206-1.4-1.4%204.6-4.6-4.6-4.6z%27/%3e%3c/svg%3e"},31926:t=>{"use strict";t.exports="data:image/svg+xml,%3csvg%20xmlns=%27http://www.w3.org/2000/svg%27%20width=%2724%27%20height=%2724%27%20fill=%27%23222%27%3e%3cpath%20d=%27M8.6%2016.6l4.6-4.6-4.6-4.6L10%206l6%206-6%206-1.4-1.4z%27/%3e%3c/svg%3e"},76333:(t,n,e)=>{"use strict";e.d(n,{AO:()=>P.N,Az:()=>a.N,B6:()=>f.N,C7:()=>vt.N,EQ:()=>lt.N,K1:()=>Q.N,Qz:()=>T.N,R1:()=>D.N,gb:()=>wt.A,i$:()=>F.N,lT:()=>z.N,mQ:()=>et.A,rE:()=>dt.N,v:()=>ft.N,x1:()=>j.A,yI:()=>Y.A}),e(54064);var r=e(63420),i=e(90116),u=e(50953),o=e(63127),a=e(6840),s=e(10700),c=e(51246),l=e(59594),f=e(3200),h=e(10501),p=e(63961),g=e(34375),d=e(86921),v=e(47611),_=e(10363),y=e(41430),m=e(19858),w=e(68776),b=e(15650),x=e(71246),A=e(46447),S=e(69176),k=e(82936),E=e(14645),C=e(89902),N=e(947),R=e(58589),I=e(18503),O=e(37595),D=e(91680),T=e(49296),j=e(9518),P=e(38868),L=e(23503),U=e(52870),G=e(70563),M=e(66250),$=e(35725),z=e(28245),B=e(35428),W=e(43899),F=e(33828),q=e(84003),H=e(740),Y=e(10833),K=e(1620),Z=e(94305),V=e(27720),Q=e(6936),J=e(44559),X=e(78768),tt=e(46222),nt=e(53278),et=e(48934),rt=e(51375),it=e(28690),ut=e(15224),ot=e(5392),at=e(11285),st=e(22911),ct=e(35384),lt=(e(78460),e(66957),e(26287),e(8012)),ft=e(59567),ht=(e(61338),e(64981)),pt=e(12888),gt=e(41347),dt=e(61217),vt=e(82898),_t=e(86598),yt=e(92019),mt=e(8259),wt=e(47732),bt=(e(23020),e(53429),e(58995),e(89921),e(42892)),xt=e(65842),At=(e(57874),e(75105),e(92471),e(16406),e(2508));r.A,i.N,u.A,o.A,a.N,s.A,c.A,l.A,h.A,p.A,g.A,f.N,d.N,v.A,_.A,y.N,m.N,w.A,b.N,x.A,A.A,S.N,k.N,E.A,C.N,N.A,R.N,I.A,st.N,O.N,D.N,T.N,j.A,P.N,L.N,U.N,G.A,M.N,$.N,z.N,B.A,W.A,F.N,q.N,H.N,Y.A,K.A,Z.N,V.N,Q.N,J.N,X.N,tt.A,at.N,nt.A,et.A,rt.N,it.N,ut.N,ot.N,st.a,ct.N,ht.N,lt.N,pt.N,gt.N,dt.N,vt.N,wt.A,ft.N,_t.N,yt.N,mt.N,Symbol.toStringTag,bt.u,xt.u,At.yw,Symbol.toStringTag}},i={};function u(t){var n=i[t];if(void 0!==n)return n.exports;var e=i[t]={id:t,loaded:!1,exports:{}};return r[t].call(e.exports,e,e.exports,u),e.loaded=!0,e.exports}u.m=r,t=[],u.O=(n,e,r,i)=>{if(!e){var o=1/0;for(l=0;l<t.length;l++){e=t[l][0],r=t[l][1],i=t[l][2];for(var a=!0,s=0;s<e.length;s++)(!1&i||o>=i)&&Object.keys(u.O).every((t=>u.O[t](e[s])))?e.splice(s--,1):(a=!1,i<o&&(o=i));if(a){t.splice(l--,1);var c=r();void 0!==c&&(n=c)}}return n}i=i||0;for(var l=t.length;l>0&&t[l-1][2]>i;l--)t[l]=t[l-1];t[l]=[e,r,i]},u.n=t=>{var n=t&&t.__esModule?()=>t.default:()=>t;return u.d(n,{a:n}),n},u.d=(t,n)=>{for(var e in n)u.o(n,e)&&!u.o(t,e)&&Object.defineProperty(t,e,{enumerable:!0,get:n[e]})},u.f={},u.e=t=>Promise.all(Object.keys(u.f).reduce(((n,e)=>(u.f[e](t,n),n)),[])),u.u=t=>t+"-"+t+".js?v="+{1110:"a5d6e6f59aa058840a1e",5455:"8915a218db5b7bc90f34"}[t],u.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(t){if("object"==typeof window)return window}}(),u.o=(t,n)=>Object.prototype.hasOwnProperty.call(t,n),n={},e="nextcloud:",u.l=(t,r,i,o)=>{if(n[t])n[t].push(r);else{var a,s;if(void 0!==i)for(var c=document.getElementsByTagName("script"),l=0;l<c.length;l++){var f=c[l];if(f.getAttribute("src")==t||f.getAttribute("data-webpack")==e+i){a=f;break}}a||(s=!0,(a=document.createElement("script")).charset="utf-8",a.timeout=120,u.nc&&a.setAttribute("nonce",u.nc),a.setAttribute("data-webpack",e+i),a.src=t),n[t]=[r];var h=(e,r)=>{a.onerror=a.onload=null,clearTimeout(p);var i=n[t];if(delete n[t],a.parentNode&&a.parentNode.removeChild(a),i&&i.forEach((t=>t(r))),e)return e(r)},p=setTimeout(h.bind(null,void 0,{type:"timeout",target:a}),12e4);a.onerror=h.bind(null,a.onerror),a.onload=h.bind(null,a.onload),s&&document.head.appendChild(a)}},u.r=t=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},u.nmd=t=>(t.paths=[],t.children||(t.children=[]),t),u.j=3674,(()=>{var t;u.g.importScripts&&(t=u.g.location+"");var n=u.g.document;if(!t&&n&&(n.currentScript&&(t=n.currentScript.src),!t)){var e=n.getElementsByTagName("script");if(e.length)for(var r=e.length-1;r>-1&&(!t||!/^http(s?):/.test(t));)t=e[r--].src}if(!t)throw new Error("Automatic publicPath is not supported in this browser");t=t.replace(/#.*$/,"").replace(/\?.*$/,"").replace(/\/[^\/]+$/,"/"),u.p=t})(),(()=>{u.b=document.baseURI||self.location.href;var t={3674:0};u.f.j=(n,e)=>{var r=u.o(t,n)?t[n]:void 0;if(0!==r)if(r)e.push(r[2]);else{var i=new Promise(((e,i)=>r=t[n]=[e,i]));e.push(r[2]=i);var o=u.p+u.u(n),a=new Error;u.l(o,(e=>{if(u.o(t,n)&&(0!==(r=t[n])&&(t[n]=void 0),r)){var i=e&&("load"===e.type?"missing":e.type),o=e&&e.target&&e.target.src;a.message="Loading chunk "+n+" failed.\n("+i+": "+o+")",a.name="ChunkLoadError",a.type=i,a.request=o,r[1](a)}}),"chunk-"+n,n)}},u.O.j=n=>0===t[n];var n=(n,e)=>{var r,i,o=e[0],a=e[1],s=e[2],c=0;if(o.some((n=>0!==t[n]))){for(r in a)u.o(a,r)&&(u.m[r]=a[r]);if(s)var l=s(u)}for(n&&n(e);c<o.length;c++)i=o[c],u.o(t,i)&&t[i]&&t[i][0](),t[i]=0;return u.O(l)},e=self.webpackChunknextcloud=self.webpackChunknextcloud||[];e.forEach(n.bind(null,0)),e.push=n.bind(null,e.push.bind(e))})(),u.nc=void 0;var o=u.O(void 0,[4208],(()=>u(45402)));o=u.O(o)})(); -//# sourceMappingURL=settings-vue-settings-admin-sharing.js.map?v=1bd19a3231a58f9938c0
\ No newline at end of file +/*! For license information please see settings-vue-settings-admin-sharing.js.license?v=65e52c8015aac2b2a2b4 */ +(()=>{var t,n,e,r={1614:(t,n,e)=>{"use strict";var r=e(85471),i=e(76333),u=e(38613),o=e(53334),a=e(85168);const s=(0,r.pM)({name:"SelectSharingPermissions",components:{NcCheckboxRadioSwitch:i.AO},props:{value:{type:Number,required:!0}},emits:{"update:value":t=>"number"==typeof t},data:()=>({PERMISSION_UPDATE:2,PERMISSION_CREATE:4,PERMISSION_DELETE:8,PERMISSION_SHARE:16}),computed:{canCreate(){return 0!=(this.value&this.PERMISSION_CREATE)},canUpdate(){return 0!=(this.value&this.PERMISSION_UPDATE)},canDelete(){return 0!=(this.value&this.PERMISSION_DELETE)},canShare(){return 0!=(this.value&this.PERMISSION_SHARE)}},methods:{t:o.Tl,toggle(t){this.$emit("update:value",this.value^t)}}});var c=e(85072),l=e.n(c),f=e(97825),h=e.n(f),p=e(77659),g=e.n(p),d=e(55056),v=e.n(d),_=e(10540),y=e.n(_),m=e(41113),w=e.n(m),b=e(16222),x={};x.styleTagTransform=w(),x.setAttributes=v(),x.insert=g().bind(null,"head"),x.domAPI=h(),x.insertStyleElement=y(),l()(b.A,x),b.A&&b.A.locals&&b.A.locals;var A=e(14486);const S=(0,A.A)(s,(function(){var t=this,n=t._self._c;return t._self._setupProxy,n("fieldset",{staticClass:"permissions-select"},[n("NcCheckboxRadioSwitch",{attrs:{checked:t.canCreate},on:{"update:checked":function(n){return t.toggle(t.PERMISSION_CREATE)}}},[t._v("\n\t\t"+t._s(t.t("settings","Create"))+"\n\t")]),t._v(" "),n("NcCheckboxRadioSwitch",{attrs:{checked:t.canUpdate},on:{"update:checked":function(n){return t.toggle(t.PERMISSION_UPDATE)}}},[t._v("\n\t\t"+t._s(t.t("settings","Change"))+"\n\t")]),t._v(" "),n("NcCheckboxRadioSwitch",{attrs:{checked:t.canDelete},on:{"update:checked":function(n){return t.toggle(t.PERMISSION_DELETE)}}},[t._v("\n\t\t"+t._s(t.t("settings","Delete"))+"\n\t")]),t._v(" "),n("NcCheckboxRadioSwitch",{attrs:{checked:t.canShare},on:{"update:checked":function(n){return t.toggle(t.PERMISSION_SHARE)}}},[t._v("\n\t\t"+t._s(t.t("settings","Reshare"))+"\n\t")])],1)}),[],!1,null,"54c0ce93",null).exports;var k=e(2543),E=e(96763);const C=(0,r.pM)({name:"AdminSettingsSharingForm",components:{NcCheckboxRadioSwitch:i.AO,NcSettingsSelectGroup:i.C7,NcTextArea:i.gb,NcTextField:i.v,SelectSharingPermissions:S},data:()=>({settingsData:(0,u.C)("settings","sharingSettings")}),computed:{settings(){return E.warn("new proxy"),new Proxy(this.settingsData,{get:(t,n)=>t[n],set(t,n,e){const r="shareapi_".concat((0,k.snakeCase)(n)),i="boolean"==typeof e?e?"yes":"no":"string"==typeof e?e:JSON.stringify(e);return window.OCP.AppConfig.setValue("core",r,i),t[n]=e,!0}})},publicShareDisclaimerEnabled:{get(){return"string"==typeof this.settingsData.publicShareDisclaimerText},set(t){t?this.settingsData.publicShareDisclaimerText="":this.onUpdateDisclaimer()}}},methods:{t:o.Tl,onUpdateDisclaimer:(0,k.debounce)((function(t){const n={success(){t?(0,a.Te)((0,o.Tl)("settings","Changed disclaimer text")):(0,a.Te)((0,o.Tl)("settings","Deleted disclaimer text"))},error(){(0,a.Qg)((0,o.Tl)("settings","Could not set disclaimer text"))}};t?window.OCP.AppConfig.setValue("core","shareapi_public_link_disclaimertext",t,n):window.OCP.AppConfig.deleteKey("core","shareapi_public_link_disclaimertext",n),this.settingsData.publicShareDisclaimerText=t}),500),onUpdateExcludeGroups:(0,k.debounce)((function(t){window.OCP.AppConfig.setValue("core","excludeGroups",t),this.settings.excludeGroups=t}),500)}}),N=C;var R=e(64274),I={};I.styleTagTransform=w(),I.setAttributes=v(),I.insert=g().bind(null,"head"),I.domAPI=h(),I.insertStyleElement=y(),l()(R.A,I),R.A&&R.A.locals&&R.A.locals;const O=(0,A.A)(N,(function(){var t=this,n=t._self._c;return t._self._setupProxy,n("form",{staticClass:"sharing"},[n("NcCheckboxRadioSwitch",{attrs:{"aria-controls":"settings-sharing-api settings-sharing-api-settings settings-sharing-default-permissions settings-sharing-privary-related",type:"switch",checked:t.settings.enabled},on:{"update:checked":function(n){return t.$set(t.settings,"enabled",n)}}},[t._v("\n\t\t"+t._s(t.t("settings","Allow apps to use the Share API"))+"\n\t")]),t._v(" "),n("div",{directives:[{name:"show",rawName:"v-show",value:t.settings.enabled,expression:"settings.enabled"}],staticClass:"sharing__sub-section",attrs:{id:"settings-sharing-api-settings"}},[n("NcCheckboxRadioSwitch",{attrs:{checked:t.settings.allowResharing},on:{"update:checked":function(n){return t.$set(t.settings,"allowResharing",n)}}},[t._v("\n\t\t\t"+t._s(t.t("settings","Allow resharing"))+"\n\t\t")]),t._v(" "),n("NcCheckboxRadioSwitch",{attrs:{checked:t.settings.allowGroupSharing},on:{"update:checked":function(n){return t.$set(t.settings,"allowGroupSharing",n)}}},[t._v("\n\t\t\t"+t._s(t.t("settings","Allow sharing with groups"))+"\n\t\t")]),t._v(" "),n("NcCheckboxRadioSwitch",{attrs:{checked:t.settings.onlyShareWithGroupMembers},on:{"update:checked":function(n){return t.$set(t.settings,"onlyShareWithGroupMembers",n)}}},[t._v("\n\t\t\t"+t._s(t.t("settings","Restrict users to only share with users in their groups"))+"\n\t\t")]),t._v(" "),n("div",{directives:[{name:"show",rawName:"v-show",value:t.settings.onlyShareWithGroupMembers,expression:"settings.onlyShareWithGroupMembers"}],staticClass:"sharing__labeled-entry sharing__input",attrs:{id:"settings-sharing-api-excluded-groups"}},[n("label",{attrs:{for:"settings-sharing-only-group-members-excluded-groups"}},[t._v(t._s(t.t("settings","Ignore the following groups when checking group membership")))]),t._v(" "),n("NcSettingsSelectGroup",{staticStyle:{width:"100%"},attrs:{id:"settings-sharing-only-group-members-excluded-groups",label:t.t("settings","Ignore the following groups when checking group membership")},model:{value:t.settings.onlyShareWithGroupMembersExcludeGroupList,callback:function(n){t.$set(t.settings,"onlyShareWithGroupMembersExcludeGroupList",n)},expression:"settings.onlyShareWithGroupMembersExcludeGroupList"}})],1)],1),t._v(" "),n("div",{directives:[{name:"show",rawName:"v-show",value:t.settings.enabled,expression:"settings.enabled"}],staticClass:"sharing__section",attrs:{id:"settings-sharing-api"}},[n("NcCheckboxRadioSwitch",{attrs:{type:"switch","aria-controls":"settings-sharing-api-public-link",checked:t.settings.allowLinks},on:{"update:checked":function(n){return t.$set(t.settings,"allowLinks",n)}}},[t._v("\n\t\t\t"+t._s(t.t("settings","Allow users to share via link and emails"))+"\n\t\t")]),t._v(" "),n("fieldset",{directives:[{name:"show",rawName:"v-show",value:t.settings.allowLinks,expression:"settings.allowLinks"}],staticClass:"sharing__sub-section",attrs:{id:"settings-sharing-api-public-link"}},[n("NcCheckboxRadioSwitch",{attrs:{checked:t.settings.allowPublicUpload},on:{"update:checked":function(n){return t.$set(t.settings,"allowPublicUpload",n)}}},[t._v("\n\t\t\t\t"+t._s(t.t("settings","Allow public uploads"))+"\n\t\t\t")]),t._v(" "),n("NcCheckboxRadioSwitch",{attrs:{checked:t.settings.enableLinkPasswordByDefault},on:{"update:checked":function(n){return t.$set(t.settings,"enableLinkPasswordByDefault",n)}}},[t._v("\n\t\t\t\t"+t._s(t.t("settings","Always ask for a password"))+"\n\t\t\t")]),t._v(" "),n("NcCheckboxRadioSwitch",{attrs:{checked:t.settings.enforceLinksPassword,disabled:!t.settings.enableLinkPasswordByDefault},on:{"update:checked":function(n){return t.$set(t.settings,"enforceLinksPassword",n)}}},[t._v("\n\t\t\t\t"+t._s(t.t("settings","Enforce password protection"))+"\n\t\t\t")]),t._v(" "),t.settings.passwordExcludedGroupsFeatureEnabled?n("label",{staticClass:"sharing__labeled-entry sharing__input"},[n("span",[t._v(t._s(t.t("settings","Exclude groups from password requirements")))]),t._v(" "),n("NcSettingsSelectGroup",{staticStyle:{width:"100%"},attrs:{disabled:!t.settings.enforceLinksPassword||!t.settings.enableLinkPasswordByDefault},model:{value:t.settings.passwordExcludedGroups,callback:function(n){t.$set(t.settings,"passwordExcludedGroups",n)},expression:"settings.passwordExcludedGroups"}})],1):t._e(),t._v(" "),n("label",{staticClass:"sharing__labeled-entry sharing__input"},[n("span",[t._v(t._s(t.t("settings","Exclude groups from creating link shares")))]),t._v(" "),n("NcSettingsSelectGroup",{staticStyle:{width:"100%"},attrs:{label:t.t("settings","Exclude groups from creating link shares")},model:{value:t.settings.allowLinksExcludeGroups,callback:function(n){t.$set(t.settings,"allowLinksExcludeGroups",n)},expression:"settings.allowLinksExcludeGroups"}})],1)],1),t._v(" "),n("label",[t._v(t._s(t.t("settings","Limit sharing based on groups")))]),t._v(" "),n("div",{staticClass:"sharing__sub-section"},[n("NcCheckboxRadioSwitch",{attrs:{checked:t.settings.excludeGroups,name:"excludeGroups",value:"no",type:"radio"},on:{"update:checked":[function(n){return t.$set(t.settings,"excludeGroups",n)},t.onUpdateExcludeGroups]}},[t._v("\n\t\t\t\t"+t._s(t.t("settings","Allow sharing for everyone (default)"))+"\n\t\t\t")]),t._v(" "),n("NcCheckboxRadioSwitch",{attrs:{checked:t.settings.excludeGroups,name:"excludeGroups",value:"yes",type:"radio"},on:{"update:checked":[function(n){return t.$set(t.settings,"excludeGroups",n)},t.onUpdateExcludeGroups]}},[t._v("\n\t\t\t\t"+t._s(t.t("settings","Exclude some groups from sharing"))+"\n\t\t\t")]),t._v(" "),n("NcCheckboxRadioSwitch",{attrs:{checked:t.settings.excludeGroups,name:"excludeGroups",value:"allow",type:"radio"},on:{"update:checked":[function(n){return t.$set(t.settings,"excludeGroups",n)},t.onUpdateExcludeGroups]}},[t._v("\n\t\t\t\t"+t._s(t.t("settings","Limit sharing to some groups"))+"\n\t\t\t")]),t._v(" "),n("div",{directives:[{name:"show",rawName:"v-show",value:"no"!==t.settings.excludeGroups,expression:"settings.excludeGroups !== 'no'"}],staticClass:"sharing__labeled-entry sharing__input"},[n("NcSettingsSelectGroup",{staticStyle:{width:"100%"},attrs:{id:"settings-sharing-excluded-groups","aria-describedby":"settings-sharing-excluded-groups-desc",label:"allow"===t.settings.excludeGroups?t.t("settings","Groups allowed to share"):t.t("settings","Groups excluded from sharing"),disabled:"no"===t.settings.excludeGroups},model:{value:t.settings.excludeGroupsList,callback:function(n){t.$set(t.settings,"excludeGroupsList",n)},expression:"settings.excludeGroupsList"}}),t._v(" "),n("em",{attrs:{id:"settings-sharing-excluded-groups-desc"}},[t._v(t._s(t.t("settings","Not allowed groups will still be able to receive shares, but not to initiate them.")))])],1)],1),t._v(" "),n("NcCheckboxRadioSwitch",{attrs:{type:"switch","aria-controls":"settings-sharing-api-expiration",checked:t.settings.defaultInternalExpireDate},on:{"update:checked":function(n){return t.$set(t.settings,"defaultInternalExpireDate",n)}}},[t._v("\n\t\t\t"+t._s(t.t("settings","Set default expiration date for shares"))+"\n\t\t")]),t._v(" "),n("fieldset",{directives:[{name:"show",rawName:"v-show",value:t.settings.defaultInternalExpireDate,expression:"settings.defaultInternalExpireDate"}],staticClass:"sharing__sub-section",attrs:{id:"settings-sharing-api-expiration"}},[n("NcCheckboxRadioSwitch",{attrs:{checked:t.settings.enforceInternalExpireDate},on:{"update:checked":function(n){return t.$set(t.settings,"enforceInternalExpireDate",n)}}},[t._v("\n\t\t\t\t"+t._s(t.t("settings","Enforce expiration date"))+"\n\t\t\t")]),t._v(" "),n("NcTextField",{staticClass:"sharing__input",attrs:{type:"number",label:t.t("settings","Default expiration time of new shares in days"),placeholder:t.t("settings","Expire shares after x days"),value:t.settings.internalExpireAfterNDays},on:{"update:value":function(n){return t.$set(t.settings,"internalExpireAfterNDays",n)}}})],1),t._v(" "),n("NcCheckboxRadioSwitch",{attrs:{type:"switch","aria-controls":"settings-sharing-remote-api-expiration",checked:t.settings.defaultRemoteExpireDate},on:{"update:checked":function(n){return t.$set(t.settings,"defaultRemoteExpireDate",n)}}},[t._v("\n\t\t\t"+t._s(t.t("settings","Set default expiration date for shares to other servers"))+"\n\t\t")]),t._v(" "),n("fieldset",{directives:[{name:"show",rawName:"v-show",value:t.settings.defaultRemoteExpireDate,expression:"settings.defaultRemoteExpireDate"}],staticClass:"sharing__sub-section",attrs:{id:"settings-sharing-remote-api-expiration"}},[n("NcCheckboxRadioSwitch",{attrs:{checked:t.settings.enforceRemoteExpireDate},on:{"update:checked":function(n){return t.$set(t.settings,"enforceRemoteExpireDate",n)}}},[t._v("\n\t\t\t\t"+t._s(t.t("settings","Enforce expiration date for remote shares"))+"\n\t\t\t")]),t._v(" "),n("NcTextField",{staticClass:"sharing__input",attrs:{type:"number",label:t.t("settings","Default expiration time of remote shares in days"),placeholder:t.t("settings","Expire remote shares after x days"),value:t.settings.remoteExpireAfterNDays},on:{"update:value":function(n){return t.$set(t.settings,"remoteExpireAfterNDays",n)}}})],1),t._v(" "),n("NcCheckboxRadioSwitch",{attrs:{type:"switch","aria-controls":"settings-sharing-api-api-expiration",checked:t.settings.defaultExpireDate,disabled:!t.settings.allowLinks},on:{"update:checked":function(n){return t.$set(t.settings,"defaultExpireDate",n)}}},[t._v("\n\t\t\t"+t._s(t.t("settings","Set default expiration date for shares via link or mail"))+"\n\t\t")]),t._v(" "),n("fieldset",{directives:[{name:"show",rawName:"v-show",value:t.settings.allowLinks&&t.settings.defaultExpireDate,expression:"settings.allowLinks && settings.defaultExpireDate"}],staticClass:"sharing__sub-section",attrs:{id:"settings-sharing-api-api-expiration"}},[n("NcCheckboxRadioSwitch",{attrs:{checked:t.settings.enforceExpireDate},on:{"update:checked":function(n){return t.$set(t.settings,"enforceExpireDate",n)}}},[t._v("\n\t\t\t\t"+t._s(t.t("settings","Enforce expiration date for remote shares"))+"\n\t\t\t")]),t._v(" "),n("NcTextField",{staticClass:"sharing__input",attrs:{type:"number",label:t.t("settings","Default expiration time of shares in days"),placeholder:t.t("settings","Expire shares after x days"),value:t.settings.expireAfterNDays},on:{"update:value":function(n){return t.$set(t.settings,"expireAfterNDays",n)}}})],1)],1),t._v(" "),n("div",{directives:[{name:"show",rawName:"v-show",value:t.settings.enabled,expression:"settings.enabled"}],staticClass:"sharing__section",attrs:{id:"settings-sharing-privary-related"}},[n("h3",[t._v(t._s(t.t("settings","Privacy settings for sharing")))]),t._v(" "),n("NcCheckboxRadioSwitch",{attrs:{type:"switch","aria-controls":"settings-sharing-privacy-user-enumeration",checked:t.settings.allowShareDialogUserEnumeration},on:{"update:checked":function(n){return t.$set(t.settings,"allowShareDialogUserEnumeration",n)}}},[t._v("\n\t\t\t"+t._s(t.t("settings","Allow account name autocompletion in share dialog and allow access to the system address book"))+"\n\t\t")]),t._v(" "),n("fieldset",{directives:[{name:"show",rawName:"v-show",value:t.settings.allowShareDialogUserEnumeration,expression:"settings.allowShareDialogUserEnumeration"}],staticClass:"sharing__sub-section",attrs:{id:"settings-sharing-privacy-user-enumeration"}},[n("em",[t._v("\n\t\t\t\t"+t._s(t.t("settings",'If autocompletion "same group" and "phone number integration" are enabled a match in either is enough to show the user.'))+"\n\t\t\t")]),t._v(" "),n("NcCheckboxRadioSwitch",{attrs:{checked:t.settings.restrictUserEnumerationToGroup},on:{"update:checked":function(n){return t.$set(t.settings,"restrictUserEnumerationToGroup",n)}}},[t._v("\n\t\t\t\t"+t._s(t.t("settings","Allow account name autocompletion to users within the same groups and limit system address books to users in the same groups"))+"\n\t\t\t")]),t._v(" "),n("NcCheckboxRadioSwitch",{attrs:{checked:t.settings.restrictUserEnumerationToPhone},on:{"update:checked":function(n){return t.$set(t.settings,"restrictUserEnumerationToPhone",n)}}},[t._v("\n\t\t\t\t"+t._s(t.t("settings","Allow account name autocompletion to users based on phone number integration"))+"\n\t\t\t")])],1),t._v(" "),n("NcCheckboxRadioSwitch",{attrs:{type:"switch",checked:t.settings.restrictUserEnumerationFullMatch},on:{"update:checked":function(n){return t.$set(t.settings,"restrictUserEnumerationFullMatch",n)}}},[t._v("\n\t\t\t"+t._s(t.t("settings","Allow autocompletion when entering the full name or email address (ignoring missing phonebook match and being in the same group)"))+"\n\t\t")]),t._v(" "),n("NcCheckboxRadioSwitch",{attrs:{type:"switch",checked:t.publicShareDisclaimerEnabled},on:{"update:checked":function(n){t.publicShareDisclaimerEnabled=n}}},[t._v("\n\t\t\t"+t._s(t.t("settings","Show disclaimer text on the public link upload page (only shown when the file list is hidden)"))+"\n\t\t")]),t._v(" "),"string"==typeof t.settings.publicShareDisclaimerText?n("div",{staticClass:"sharing__sub-section",attrs:{"aria-describedby":"settings-sharing-privary-related-disclaimer-hint"}},[n("NcTextArea",{staticClass:"sharing__input",attrs:{label:t.t("settings","Disclaimer text"),"aria-describedby":"settings-sharing-privary-related-disclaimer-hint",value:t.settings.publicShareDisclaimerText},on:{"update:value":t.onUpdateDisclaimer}}),t._v(" "),n("em",{staticClass:"sharing__input",attrs:{id:"settings-sharing-privary-related-disclaimer-hint"}},[t._v("\n\t\t\t\t"+t._s(t.t("settings","This text will be shown on the public link upload page when the file list is hidden."))+"\n\t\t\t")])],1):t._e()],1),t._v(" "),n("div",{staticClass:"sharing__section",attrs:{id:"settings-sharing-default-permissions"}},[n("h3",[t._v(t._s(t.t("settings","Default share permissions")))]),t._v(" "),n("SelectSharingPermissions",{attrs:{value:t.settings.defaultPermissions},on:{"update:value":function(n){return t.$set(t.settings,"defaultPermissions",n)}}})],1)],1)}),[],!1,null,"965ea99a",null).exports,D=(0,r.pM)({name:"AdminSettingsSharing",components:{AdminSettingsSharingForm:O,NcNoteCard:i.mQ,NcSettingsSection:i.rE},data:()=>({documentationLink:(0,u.C)("settings","sharingDocumentation",""),sharingAppEnabled:(0,u.C)("settings","sharingAppEnabled",!1)}),methods:{t:o.Tl}}),T=(0,A.A)(D,(function(){var t=this,n=t._self._c;return t._self._setupProxy,n("NcSettingsSection",{attrs:{"data-cy-settings-sharing-section":"","limit-width":!0,"doc-url":t.documentationLink,name:t.t("settings","Sharing"),description:t.t("settings","As admin you can fine-tune the sharing behavior. Please see the documentation for more information.")}},[t.sharingAppEnabled?n("AdminSettingsSharingForm"):n("NcNoteCard",{attrs:{type:"warning"}},[t._v("\n\t\t"+t._s(t.t("settings","You need to enable the File sharing App."))+"\n\t")])],1)}),[],!1,null,null,null).exports;new r.Ay({name:"AdminSettingsSharingSection",el:"#vue-admin-settings-sharing",render:t=>t(T)})},64274:(t,n,e)=>{"use strict";e.d(n,{A:()=>a});var r=e(71354),i=e.n(r),u=e(76314),o=e.n(u)()(i());o.push([t.id,".sharing[data-v-965ea99a]{display:flex;flex-direction:column;gap:12px}.sharing__labeled-entry[data-v-965ea99a]{display:flex;flex:1 0;flex-direction:column;gap:4px}.sharing__section[data-v-965ea99a]{display:flex;flex-direction:column;gap:4px;margin-block-end:12px}.sharing__sub-section[data-v-965ea99a]{display:flex;flex-direction:column;gap:4px;margin-inline-start:44px;margin-block-end:12px}.sharing__input[data-v-965ea99a]{max-width:500px;margin-inline-start:14px}.sharing__input[data-v-965ea99a] .v-select.select{width:100%}@media only screen and (max-width: 350px){.sharing__sub-section[data-v-965ea99a]{margin-inline-start:14px}}","",{version:3,sources:["webpack://./apps/settings/src/components/AdminSettingsSharingForm.vue"],names:[],mappings:"AACA,0BACC,YAAA,CACA,qBAAA,CACA,QAAA,CAEA,yCACC,YAAA,CACA,QAAA,CACA,qBAAA,CACA,OAAA,CAGD,mCACC,YAAA,CACA,qBAAA,CACA,OAAA,CACA,qBAAA,CAGD,uCACC,YAAA,CACA,qBAAA,CACA,OAAA,CAEA,wBAAA,CACA,qBAAA,CAGD,iCACC,eAAA,CAEA,wBAAA,CAEA,kDACC,UAAA,CAKH,0CAGE,uCACC,wBAAA,CAAA",sourcesContent:["\n.sharing {\n\tdisplay: flex;\n\tflex-direction: column;\n\tgap: 12px;\n\n\t&__labeled-entry {\n\t\tdisplay: flex;\n\t\tflex: 1 0;\n\t\tflex-direction: column;\n\t\tgap: 4px;\n\t}\n\n\t&__section {\n\t\tdisplay: flex;\n\t\tflex-direction: column;\n\t\tgap: 4px;\n\t\tmargin-block-end: 12px\n\t}\n\n\t&__sub-section {\n\t\tdisplay: flex;\n\t\tflex-direction: column;\n\t\tgap: 4px;\n\n\t\tmargin-inline-start: 44px;\n\t\tmargin-block-end: 12px\n\t}\n\n\t&__input {\n\t\tmax-width: 500px;\n\t\t// align with checkboxes\n\t\tmargin-inline-start: 14px;\n\n\t\t:deep(.v-select.select) {\n\t\t\twidth: 100%;\n\t\t}\n\t}\n}\n\n@media only screen and (max-width: 350px) {\n\t// ensure no overflow happens on small devices (required for WCAG)\n\t.sharing {\n\t\t&__sub-section {\n\t\t\tmargin-inline-start: 14px;\n\t\t}\n\t}\n}\n"],sourceRoot:""}]);const a=o},16222:(t,n,e)=>{"use strict";e.d(n,{A:()=>a});var r=e(71354),i=e.n(r),u=e(76314),o=e.n(u)()(i());o.push([t.id,"\n.permissions-select[data-v-54c0ce93] {\n\tdisplay: flex;\n\tflex-wrap: wrap;\n\tgap: 4px;\n}\n","",{version:3,sources:["webpack://./apps/settings/src/components/SelectSharingPermissions.vue"],names:[],mappings:";AA8FA;CACA,aAAA;CACA,eAAA;CACA,QAAA;AACA",sourcesContent:["\x3c!--\n\t- @copyright 2023 Ferdinand Thiessen <opensource@fthiessen.de>\n\t-\n\t- @author Ferdinand Thiessen <opensource@fthiessen.de>\n\t-\n\t- @license AGPL-3.0-or-later\n\t-\n\t- This program is free software: you can redistribute it and/or modify\n\t- it under the terms of the GNU Affero General Public License as\n\t- published by the Free Software Foundation, either version 3 of the\n\t- License, or (at your option) any later version.\n\t-\n\t- This program is distributed in the hope that it will be useful,\n\t- but WITHOUT ANY WARRANTY; without even the implied warranty of\n\t- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n\t- GNU Affero General Public License for more details.\n\t-\n\t- You should have received a copy of the GNU Affero General Public License\n\t- along with this program. If not, see <http://www.gnu.org/licenses/>.\n\t-\n--\x3e\n<template>\n\t<fieldset class=\"permissions-select\">\n\t\t<NcCheckboxRadioSwitch :checked=\"canCreate\" @update:checked=\"toggle(PERMISSION_CREATE)\">\n\t\t\t{{ t('settings', 'Create') }}\n\t\t</NcCheckboxRadioSwitch>\n\t\t<NcCheckboxRadioSwitch :checked=\"canUpdate\" @update:checked=\"toggle(PERMISSION_UPDATE)\">\n\t\t\t{{ t('settings', 'Change') }}\n\t\t</NcCheckboxRadioSwitch>\n\t\t<NcCheckboxRadioSwitch :checked=\"canDelete\" @update:checked=\"toggle(PERMISSION_DELETE)\">\n\t\t\t{{ t('settings', 'Delete') }}\n\t\t</NcCheckboxRadioSwitch>\n\t\t<NcCheckboxRadioSwitch :checked=\"canShare\" @update:checked=\"toggle(PERMISSION_SHARE)\">\n\t\t\t{{ t('settings', 'Reshare') }}\n\t\t</NcCheckboxRadioSwitch>\n\t</fieldset>\n</template>\n\n<script lang=\"ts\">\nimport { translate } from '@nextcloud/l10n'\nimport { NcCheckboxRadioSwitch } from '@nextcloud/vue'\nimport { defineComponent } from 'vue'\n\nexport default defineComponent({\n\tname: 'SelectSharingPermissions',\n\tcomponents: {\n\t\tNcCheckboxRadioSwitch,\n\t},\n\tprops: {\n\t\tvalue: {\n\t\t\ttype: Number,\n\t\t\trequired: true,\n\t\t},\n\t},\n\temits: {\n\t\t'update:value': (value: number) => typeof value === 'number',\n\t},\n\tdata() {\n\t\treturn {\n\t\t\tPERMISSION_UPDATE: 2,\n\t\t\tPERMISSION_CREATE: 4,\n\t\t\tPERMISSION_DELETE: 8,\n\t\t\tPERMISSION_SHARE: 16,\n\t\t}\n\t},\n\tcomputed: {\n\t\tcanCreate() {\n\t\t\treturn (this.value & this.PERMISSION_CREATE) !== 0\n\t\t},\n\t\tcanUpdate() {\n\t\t\treturn (this.value & this.PERMISSION_UPDATE) !== 0\n\t\t},\n\t\tcanDelete() {\n\t\t\treturn (this.value & this.PERMISSION_DELETE) !== 0\n\t\t},\n\t\tcanShare() {\n\t\t\treturn (this.value & this.PERMISSION_SHARE) !== 0\n\t\t},\n\t},\n\tmethods: {\n\t\tt: translate,\n\t\t/**\n\t\t * Toggle a permission\n\t\t * @param permission The permission (bit) to toggle\n\t\t */\n\t\ttoggle(permission: number) {\n\t\t\t// xor to toggle the bit\n\t\t\tthis.$emit('update:value', this.value ^ permission)\n\t\t},\n\t},\n})\n<\/script>\n\n<style scoped>\n.permissions-select {\n\tdisplay: flex;\n\tflex-wrap: wrap;\n\tgap: 4px;\n}\n</style>\n"],sourceRoot:""}]);const a=o},2543:function(t,n,e){var r;t=e.nmd(t),function(){var i,u="Expected a function",o="__lodash_hash_undefined__",a="__lodash_placeholder__",s=32,c=128,l=1/0,f=9007199254740991,h=NaN,p=4294967295,g=[["ary",c],["bind",1],["bindKey",2],["curry",8],["curryRight",16],["flip",512],["partial",s],["partialRight",64],["rearg",256]],d="[object Arguments]",v="[object Array]",_="[object Boolean]",y="[object Date]",m="[object Error]",w="[object Function]",b="[object GeneratorFunction]",x="[object Map]",A="[object Number]",S="[object Object]",k="[object Promise]",E="[object RegExp]",C="[object Set]",N="[object String]",R="[object Symbol]",I="[object WeakMap]",O="[object ArrayBuffer]",D="[object DataView]",T="[object Float32Array]",j="[object Float64Array]",P="[object Int8Array]",L="[object Int16Array]",U="[object Int32Array]",G="[object Uint8Array]",M="[object Uint8ClampedArray]",$="[object Uint16Array]",z="[object Uint32Array]",B=/\b__p \+= '';/g,W=/\b(__p \+=) '' \+/g,F=/(__e\(.*?\)|\b__t\)) \+\n'';/g,q=/&(?:amp|lt|gt|quot|#39);/g,H=/[&<>"']/g,Y=RegExp(q.source),K=RegExp(H.source),Z=/<%-([\s\S]+?)%>/g,V=/<%([\s\S]+?)%>/g,Q=/<%=([\s\S]+?)%>/g,J=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,X=/^\w*$/,tt=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,nt=/[\\^$.*+?()[\]{}|]/g,et=RegExp(nt.source),rt=/^\s+/,it=/\s/,ut=/\{(?:\n\/\* \[wrapped with .+\] \*\/)?\n?/,ot=/\{\n\/\* \[wrapped with (.+)\] \*/,at=/,? & /,st=/[^\x00-\x2f\x3a-\x40\x5b-\x60\x7b-\x7f]+/g,ct=/[()=,{}\[\]\/\s]/,lt=/\\(\\)?/g,ft=/\$\{([^\\}]*(?:\\.[^\\}]*)*)\}/g,ht=/\w*$/,pt=/^[-+]0x[0-9a-f]+$/i,gt=/^0b[01]+$/i,dt=/^\[object .+?Constructor\]$/,vt=/^0o[0-7]+$/i,_t=/^(?:0|[1-9]\d*)$/,yt=/[\xc0-\xd6\xd8-\xf6\xf8-\xff\u0100-\u017f]/g,mt=/($^)/,wt=/['\n\r\u2028\u2029\\]/g,bt="\\ud800-\\udfff",xt="\\u0300-\\u036f\\ufe20-\\ufe2f\\u20d0-\\u20ff",At="\\u2700-\\u27bf",St="a-z\\xdf-\\xf6\\xf8-\\xff",kt="A-Z\\xc0-\\xd6\\xd8-\\xde",Et="\\ufe0e\\ufe0f",Ct="\\xac\\xb1\\xd7\\xf7\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\xbf\\u2000-\\u206f \\t\\x0b\\f\\xa0\\ufeff\\n\\r\\u2028\\u2029\\u1680\\u180e\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200a\\u202f\\u205f\\u3000",Nt="["+bt+"]",Rt="["+Ct+"]",It="["+xt+"]",Ot="\\d+",Dt="["+At+"]",Tt="["+St+"]",jt="[^"+bt+Ct+Ot+At+St+kt+"]",Pt="\\ud83c[\\udffb-\\udfff]",Lt="[^"+bt+"]",Ut="(?:\\ud83c[\\udde6-\\uddff]){2}",Gt="[\\ud800-\\udbff][\\udc00-\\udfff]",Mt="["+kt+"]",$t="\\u200d",zt="(?:"+Tt+"|"+jt+")",Bt="(?:"+Mt+"|"+jt+")",Wt="(?:['’](?:d|ll|m|re|s|t|ve))?",Ft="(?:['’](?:D|LL|M|RE|S|T|VE))?",qt="(?:"+It+"|"+Pt+")?",Ht="["+Et+"]?",Yt=Ht+qt+"(?:"+$t+"(?:"+[Lt,Ut,Gt].join("|")+")"+Ht+qt+")*",Kt="(?:"+[Dt,Ut,Gt].join("|")+")"+Yt,Zt="(?:"+[Lt+It+"?",It,Ut,Gt,Nt].join("|")+")",Vt=RegExp("['’]","g"),Qt=RegExp(It,"g"),Jt=RegExp(Pt+"(?="+Pt+")|"+Zt+Yt,"g"),Xt=RegExp([Mt+"?"+Tt+"+"+Wt+"(?="+[Rt,Mt,"$"].join("|")+")",Bt+"+"+Ft+"(?="+[Rt,Mt+zt,"$"].join("|")+")",Mt+"?"+zt+"+"+Wt,Mt+"+"+Ft,"\\d*(?:1ST|2ND|3RD|(?![123])\\dTH)(?=\\b|[a-z_])","\\d*(?:1st|2nd|3rd|(?![123])\\dth)(?=\\b|[A-Z_])",Ot,Kt].join("|"),"g"),tn=RegExp("["+$t+bt+xt+Et+"]"),nn=/[a-z][A-Z]|[A-Z]{2}[a-z]|[0-9][a-zA-Z]|[a-zA-Z][0-9]|[^a-zA-Z0-9 ]/,en=["Array","Buffer","DataView","Date","Error","Float32Array","Float64Array","Function","Int8Array","Int16Array","Int32Array","Map","Math","Object","Promise","RegExp","Set","String","Symbol","TypeError","Uint8Array","Uint8ClampedArray","Uint16Array","Uint32Array","WeakMap","_","clearTimeout","isFinite","parseInt","setTimeout"],rn=-1,un={};un[T]=un[j]=un[P]=un[L]=un[U]=un[G]=un[M]=un[$]=un[z]=!0,un[d]=un[v]=un[O]=un[_]=un[D]=un[y]=un[m]=un[w]=un[x]=un[A]=un[S]=un[E]=un[C]=un[N]=un[I]=!1;var on={};on[d]=on[v]=on[O]=on[D]=on[_]=on[y]=on[T]=on[j]=on[P]=on[L]=on[U]=on[x]=on[A]=on[S]=on[E]=on[C]=on[N]=on[R]=on[G]=on[M]=on[$]=on[z]=!0,on[m]=on[w]=on[I]=!1;var an={"\\":"\\","'":"'","\n":"n","\r":"r","\u2028":"u2028","\u2029":"u2029"},sn=parseFloat,cn=parseInt,ln="object"==typeof e.g&&e.g&&e.g.Object===Object&&e.g,fn="object"==typeof self&&self&&self.Object===Object&&self,hn=ln||fn||Function("return this")(),pn=n&&!n.nodeType&&n,gn=pn&&t&&!t.nodeType&&t,dn=gn&&gn.exports===pn,vn=dn&&ln.process,_n=function(){try{return gn&&gn.require&&gn.require("util").types||vn&&vn.binding&&vn.binding("util")}catch(t){}}(),yn=_n&&_n.isArrayBuffer,mn=_n&&_n.isDate,wn=_n&&_n.isMap,bn=_n&&_n.isRegExp,xn=_n&&_n.isSet,An=_n&&_n.isTypedArray;function Sn(t,n,e){switch(e.length){case 0:return t.call(n);case 1:return t.call(n,e[0]);case 2:return t.call(n,e[0],e[1]);case 3:return t.call(n,e[0],e[1],e[2])}return t.apply(n,e)}function kn(t,n,e,r){for(var i=-1,u=null==t?0:t.length;++i<u;){var o=t[i];n(r,o,e(o),t)}return r}function En(t,n){for(var e=-1,r=null==t?0:t.length;++e<r&&!1!==n(t[e],e,t););return t}function Cn(t,n){for(var e=null==t?0:t.length;e--&&!1!==n(t[e],e,t););return t}function Nn(t,n){for(var e=-1,r=null==t?0:t.length;++e<r;)if(!n(t[e],e,t))return!1;return!0}function Rn(t,n){for(var e=-1,r=null==t?0:t.length,i=0,u=[];++e<r;){var o=t[e];n(o,e,t)&&(u[i++]=o)}return u}function In(t,n){return!(null==t||!t.length)&&$n(t,n,0)>-1}function On(t,n,e){for(var r=-1,i=null==t?0:t.length;++r<i;)if(e(n,t[r]))return!0;return!1}function Dn(t,n){for(var e=-1,r=null==t?0:t.length,i=Array(r);++e<r;)i[e]=n(t[e],e,t);return i}function Tn(t,n){for(var e=-1,r=n.length,i=t.length;++e<r;)t[i+e]=n[e];return t}function jn(t,n,e,r){var i=-1,u=null==t?0:t.length;for(r&&u&&(e=t[++i]);++i<u;)e=n(e,t[i],i,t);return e}function Pn(t,n,e,r){var i=null==t?0:t.length;for(r&&i&&(e=t[--i]);i--;)e=n(e,t[i],i,t);return e}function Ln(t,n){for(var e=-1,r=null==t?0:t.length;++e<r;)if(n(t[e],e,t))return!0;return!1}var Un=Fn("length");function Gn(t,n,e){var r;return e(t,(function(t,e,i){if(n(t,e,i))return r=e,!1})),r}function Mn(t,n,e,r){for(var i=t.length,u=e+(r?1:-1);r?u--:++u<i;)if(n(t[u],u,t))return u;return-1}function $n(t,n,e){return n==n?function(t,n,e){for(var r=e-1,i=t.length;++r<i;)if(t[r]===n)return r;return-1}(t,n,e):Mn(t,Bn,e)}function zn(t,n,e,r){for(var i=e-1,u=t.length;++i<u;)if(r(t[i],n))return i;return-1}function Bn(t){return t!=t}function Wn(t,n){var e=null==t?0:t.length;return e?Yn(t,n)/e:h}function Fn(t){return function(n){return null==n?i:n[t]}}function qn(t){return function(n){return null==t?i:t[n]}}function Hn(t,n,e,r,i){return i(t,(function(t,i,u){e=r?(r=!1,t):n(e,t,i,u)})),e}function Yn(t,n){for(var e,r=-1,u=t.length;++r<u;){var o=n(t[r]);o!==i&&(e=e===i?o:e+o)}return e}function Kn(t,n){for(var e=-1,r=Array(t);++e<t;)r[e]=n(e);return r}function Zn(t){return t?t.slice(0,he(t)+1).replace(rt,""):t}function Vn(t){return function(n){return t(n)}}function Qn(t,n){return Dn(n,(function(n){return t[n]}))}function Jn(t,n){return t.has(n)}function Xn(t,n){for(var e=-1,r=t.length;++e<r&&$n(n,t[e],0)>-1;);return e}function te(t,n){for(var e=t.length;e--&&$n(n,t[e],0)>-1;);return e}var ne=qn({À:"A",Á:"A",Â:"A",Ã:"A",Ä:"A",Å:"A",à:"a",á:"a",â:"a",ã:"a",ä:"a",å:"a",Ç:"C",ç:"c",Ð:"D",ð:"d",È:"E",É:"E",Ê:"E",Ë:"E",è:"e",é:"e",ê:"e",ë:"e",Ì:"I",Í:"I",Î:"I",Ï:"I",ì:"i",í:"i",î:"i",ï:"i",Ñ:"N",ñ:"n",Ò:"O",Ó:"O",Ô:"O",Õ:"O",Ö:"O",Ø:"O",ò:"o",ó:"o",ô:"o",õ:"o",ö:"o",ø:"o",Ù:"U",Ú:"U",Û:"U",Ü:"U",ù:"u",ú:"u",û:"u",ü:"u",Ý:"Y",ý:"y",ÿ:"y",Æ:"Ae",æ:"ae",Þ:"Th",þ:"th",ß:"ss",Ā:"A",Ă:"A",Ą:"A",ā:"a",ă:"a",ą:"a",Ć:"C",Ĉ:"C",Ċ:"C",Č:"C",ć:"c",ĉ:"c",ċ:"c",č:"c",Ď:"D",Đ:"D",ď:"d",đ:"d",Ē:"E",Ĕ:"E",Ė:"E",Ę:"E",Ě:"E",ē:"e",ĕ:"e",ė:"e",ę:"e",ě:"e",Ĝ:"G",Ğ:"G",Ġ:"G",Ģ:"G",ĝ:"g",ğ:"g",ġ:"g",ģ:"g",Ĥ:"H",Ħ:"H",ĥ:"h",ħ:"h",Ĩ:"I",Ī:"I",Ĭ:"I",Į:"I",İ:"I",ĩ:"i",ī:"i",ĭ:"i",į:"i",ı:"i",Ĵ:"J",ĵ:"j",Ķ:"K",ķ:"k",ĸ:"k",Ĺ:"L",Ļ:"L",Ľ:"L",Ŀ:"L",Ł:"L",ĺ:"l",ļ:"l",ľ:"l",ŀ:"l",ł:"l",Ń:"N",Ņ:"N",Ň:"N",Ŋ:"N",ń:"n",ņ:"n",ň:"n",ŋ:"n",Ō:"O",Ŏ:"O",Ő:"O",ō:"o",ŏ:"o",ő:"o",Ŕ:"R",Ŗ:"R",Ř:"R",ŕ:"r",ŗ:"r",ř:"r",Ś:"S",Ŝ:"S",Ş:"S",Š:"S",ś:"s",ŝ:"s",ş:"s",š:"s",Ţ:"T",Ť:"T",Ŧ:"T",ţ:"t",ť:"t",ŧ:"t",Ũ:"U",Ū:"U",Ŭ:"U",Ů:"U",Ű:"U",Ų:"U",ũ:"u",ū:"u",ŭ:"u",ů:"u",ű:"u",ų:"u",Ŵ:"W",ŵ:"w",Ŷ:"Y",ŷ:"y",Ÿ:"Y",Ź:"Z",Ż:"Z",Ž:"Z",ź:"z",ż:"z",ž:"z",IJ:"IJ",ij:"ij",Œ:"Oe",œ:"oe",ʼn:"'n",ſ:"s"}),ee=qn({"&":"&","<":"<",">":">",'"':""","'":"'"});function re(t){return"\\"+an[t]}function ie(t){return tn.test(t)}function ue(t){var n=-1,e=Array(t.size);return t.forEach((function(t,r){e[++n]=[r,t]})),e}function oe(t,n){return function(e){return t(n(e))}}function ae(t,n){for(var e=-1,r=t.length,i=0,u=[];++e<r;){var o=t[e];o!==n&&o!==a||(t[e]=a,u[i++]=e)}return u}function se(t){var n=-1,e=Array(t.size);return t.forEach((function(t){e[++n]=t})),e}function ce(t){var n=-1,e=Array(t.size);return t.forEach((function(t){e[++n]=[t,t]})),e}function le(t){return ie(t)?function(t){for(var n=Jt.lastIndex=0;Jt.test(t);)++n;return n}(t):Un(t)}function fe(t){return ie(t)?function(t){return t.match(Jt)||[]}(t):function(t){return t.split("")}(t)}function he(t){for(var n=t.length;n--&&it.test(t.charAt(n)););return n}var pe=qn({"&":"&","<":"<",">":">",""":'"',"'":"'"}),ge=function t(n){var e,r=(n=null==n?hn:ge.defaults(hn.Object(),n,ge.pick(hn,en))).Array,it=n.Date,bt=n.Error,xt=n.Function,At=n.Math,St=n.Object,kt=n.RegExp,Et=n.String,Ct=n.TypeError,Nt=r.prototype,Rt=xt.prototype,It=St.prototype,Ot=n["__core-js_shared__"],Dt=Rt.toString,Tt=It.hasOwnProperty,jt=0,Pt=(e=/[^.]+$/.exec(Ot&&Ot.keys&&Ot.keys.IE_PROTO||""))?"Symbol(src)_1."+e:"",Lt=It.toString,Ut=Dt.call(St),Gt=hn._,Mt=kt("^"+Dt.call(Tt).replace(nt,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$"),$t=dn?n.Buffer:i,zt=n.Symbol,Bt=n.Uint8Array,Wt=$t?$t.allocUnsafe:i,Ft=oe(St.getPrototypeOf,St),qt=St.create,Ht=It.propertyIsEnumerable,Yt=Nt.splice,Kt=zt?zt.isConcatSpreadable:i,Zt=zt?zt.iterator:i,Jt=zt?zt.toStringTag:i,tn=function(){try{var t=su(St,"defineProperty");return t({},"",{}),t}catch(t){}}(),an=n.clearTimeout!==hn.clearTimeout&&n.clearTimeout,ln=it&&it.now!==hn.Date.now&&it.now,fn=n.setTimeout!==hn.setTimeout&&n.setTimeout,pn=At.ceil,gn=At.floor,vn=St.getOwnPropertySymbols,_n=$t?$t.isBuffer:i,Un=n.isFinite,qn=Nt.join,de=oe(St.keys,St),ve=At.max,_e=At.min,ye=it.now,me=n.parseInt,we=At.random,be=Nt.reverse,xe=su(n,"DataView"),Ae=su(n,"Map"),Se=su(n,"Promise"),ke=su(n,"Set"),Ee=su(n,"WeakMap"),Ce=su(St,"create"),Ne=Ee&&new Ee,Re={},Ie=Lu(xe),Oe=Lu(Ae),De=Lu(Se),Te=Lu(ke),je=Lu(Ee),Pe=zt?zt.prototype:i,Le=Pe?Pe.valueOf:i,Ue=Pe?Pe.toString:i;function Ge(t){if(ta(t)&&!Wo(t)&&!(t instanceof Be)){if(t instanceof ze)return t;if(Tt.call(t,"__wrapped__"))return Uu(t)}return new ze(t)}var Me=function(){function t(){}return function(n){if(!Xo(n))return{};if(qt)return qt(n);t.prototype=n;var e=new t;return t.prototype=i,e}}();function $e(){}function ze(t,n){this.__wrapped__=t,this.__actions__=[],this.__chain__=!!n,this.__index__=0,this.__values__=i}function Be(t){this.__wrapped__=t,this.__actions__=[],this.__dir__=1,this.__filtered__=!1,this.__iteratees__=[],this.__takeCount__=p,this.__views__=[]}function We(t){var n=-1,e=null==t?0:t.length;for(this.clear();++n<e;){var r=t[n];this.set(r[0],r[1])}}function Fe(t){var n=-1,e=null==t?0:t.length;for(this.clear();++n<e;){var r=t[n];this.set(r[0],r[1])}}function qe(t){var n=-1,e=null==t?0:t.length;for(this.clear();++n<e;){var r=t[n];this.set(r[0],r[1])}}function He(t){var n=-1,e=null==t?0:t.length;for(this.__data__=new qe;++n<e;)this.add(t[n])}function Ye(t){var n=this.__data__=new Fe(t);this.size=n.size}function Ke(t,n){var e=Wo(t),r=!e&&Bo(t),i=!e&&!r&&Yo(t),u=!e&&!r&&!i&&sa(t),o=e||r||i||u,a=o?Kn(t.length,Et):[],s=a.length;for(var c in t)!n&&!Tt.call(t,c)||o&&("length"==c||i&&("offset"==c||"parent"==c)||u&&("buffer"==c||"byteLength"==c||"byteOffset"==c)||du(c,s))||a.push(c);return a}function Ze(t){var n=t.length;return n?t[qr(0,n-1)]:i}function Ve(t,n){return Ou(Ei(t),ur(n,0,t.length))}function Qe(t){return Ou(Ei(t))}function Je(t,n,e){(e!==i&&!Mo(t[n],e)||e===i&&!(n in t))&&rr(t,n,e)}function Xe(t,n,e){var r=t[n];Tt.call(t,n)&&Mo(r,e)&&(e!==i||n in t)||rr(t,n,e)}function tr(t,n){for(var e=t.length;e--;)if(Mo(t[e][0],n))return e;return-1}function nr(t,n,e,r){return lr(t,(function(t,i,u){n(r,t,e(t),u)})),r}function er(t,n){return t&&Ci(n,Ia(n),t)}function rr(t,n,e){"__proto__"==n&&tn?tn(t,n,{configurable:!0,enumerable:!0,value:e,writable:!0}):t[n]=e}function ir(t,n){for(var e=-1,u=n.length,o=r(u),a=null==t;++e<u;)o[e]=a?i:ka(t,n[e]);return o}function ur(t,n,e){return t==t&&(e!==i&&(t=t<=e?t:e),n!==i&&(t=t>=n?t:n)),t}function or(t,n,e,r,u,o){var a,s=1&n,c=2&n,l=4&n;if(e&&(a=u?e(t,r,u,o):e(t)),a!==i)return a;if(!Xo(t))return t;var f=Wo(t);if(f){if(a=function(t){var n=t.length,e=new t.constructor(n);return n&&"string"==typeof t[0]&&Tt.call(t,"index")&&(e.index=t.index,e.input=t.input),e}(t),!s)return Ei(t,a)}else{var h=fu(t),p=h==w||h==b;if(Yo(t))return wi(t,s);if(h==S||h==d||p&&!u){if(a=c||p?{}:pu(t),!s)return c?function(t,n){return Ci(t,lu(t),n)}(t,function(t,n){return t&&Ci(n,Oa(n),t)}(a,t)):function(t,n){return Ci(t,cu(t),n)}(t,er(a,t))}else{if(!on[h])return u?t:{};a=function(t,n,e){var r,i=t.constructor;switch(n){case O:return bi(t);case _:case y:return new i(+t);case D:return function(t,n){var e=n?bi(t.buffer):t.buffer;return new t.constructor(e,t.byteOffset,t.byteLength)}(t,e);case T:case j:case P:case L:case U:case G:case M:case $:case z:return xi(t,e);case x:return new i;case A:case N:return new i(t);case E:return function(t){var n=new t.constructor(t.source,ht.exec(t));return n.lastIndex=t.lastIndex,n}(t);case C:return new i;case R:return r=t,Le?St(Le.call(r)):{}}}(t,h,s)}}o||(o=new Ye);var g=o.get(t);if(g)return g;o.set(t,a),ua(t)?t.forEach((function(r){a.add(or(r,n,e,r,t,o))})):na(t)&&t.forEach((function(r,i){a.set(i,or(r,n,e,i,t,o))}));var v=f?i:(l?c?nu:tu:c?Oa:Ia)(t);return En(v||t,(function(r,i){v&&(r=t[i=r]),Xe(a,i,or(r,n,e,i,t,o))})),a}function ar(t,n,e){var r=e.length;if(null==t)return!r;for(t=St(t);r--;){var u=e[r],o=n[u],a=t[u];if(a===i&&!(u in t)||!o(a))return!1}return!0}function sr(t,n,e){if("function"!=typeof t)throw new Ct(u);return Cu((function(){t.apply(i,e)}),n)}function cr(t,n,e,r){var i=-1,u=In,o=!0,a=t.length,s=[],c=n.length;if(!a)return s;e&&(n=Dn(n,Vn(e))),r?(u=On,o=!1):n.length>=200&&(u=Jn,o=!1,n=new He(n));t:for(;++i<a;){var l=t[i],f=null==e?l:e(l);if(l=r||0!==l?l:0,o&&f==f){for(var h=c;h--;)if(n[h]===f)continue t;s.push(l)}else u(n,f,r)||s.push(l)}return s}Ge.templateSettings={escape:Z,evaluate:V,interpolate:Q,variable:"",imports:{_:Ge}},Ge.prototype=$e.prototype,Ge.prototype.constructor=Ge,ze.prototype=Me($e.prototype),ze.prototype.constructor=ze,Be.prototype=Me($e.prototype),Be.prototype.constructor=Be,We.prototype.clear=function(){this.__data__=Ce?Ce(null):{},this.size=0},We.prototype.delete=function(t){var n=this.has(t)&&delete this.__data__[t];return this.size-=n?1:0,n},We.prototype.get=function(t){var n=this.__data__;if(Ce){var e=n[t];return e===o?i:e}return Tt.call(n,t)?n[t]:i},We.prototype.has=function(t){var n=this.__data__;return Ce?n[t]!==i:Tt.call(n,t)},We.prototype.set=function(t,n){var e=this.__data__;return this.size+=this.has(t)?0:1,e[t]=Ce&&n===i?o:n,this},Fe.prototype.clear=function(){this.__data__=[],this.size=0},Fe.prototype.delete=function(t){var n=this.__data__,e=tr(n,t);return!(e<0||(e==n.length-1?n.pop():Yt.call(n,e,1),--this.size,0))},Fe.prototype.get=function(t){var n=this.__data__,e=tr(n,t);return e<0?i:n[e][1]},Fe.prototype.has=function(t){return tr(this.__data__,t)>-1},Fe.prototype.set=function(t,n){var e=this.__data__,r=tr(e,t);return r<0?(++this.size,e.push([t,n])):e[r][1]=n,this},qe.prototype.clear=function(){this.size=0,this.__data__={hash:new We,map:new(Ae||Fe),string:new We}},qe.prototype.delete=function(t){var n=ou(this,t).delete(t);return this.size-=n?1:0,n},qe.prototype.get=function(t){return ou(this,t).get(t)},qe.prototype.has=function(t){return ou(this,t).has(t)},qe.prototype.set=function(t,n){var e=ou(this,t),r=e.size;return e.set(t,n),this.size+=e.size==r?0:1,this},He.prototype.add=He.prototype.push=function(t){return this.__data__.set(t,o),this},He.prototype.has=function(t){return this.__data__.has(t)},Ye.prototype.clear=function(){this.__data__=new Fe,this.size=0},Ye.prototype.delete=function(t){var n=this.__data__,e=n.delete(t);return this.size=n.size,e},Ye.prototype.get=function(t){return this.__data__.get(t)},Ye.prototype.has=function(t){return this.__data__.has(t)},Ye.prototype.set=function(t,n){var e=this.__data__;if(e instanceof Fe){var r=e.__data__;if(!Ae||r.length<199)return r.push([t,n]),this.size=++e.size,this;e=this.__data__=new qe(r)}return e.set(t,n),this.size=e.size,this};var lr=Ii(yr),fr=Ii(mr,!0);function hr(t,n){var e=!0;return lr(t,(function(t,r,i){return e=!!n(t,r,i)})),e}function pr(t,n,e){for(var r=-1,u=t.length;++r<u;){var o=t[r],a=n(o);if(null!=a&&(s===i?a==a&&!aa(a):e(a,s)))var s=a,c=o}return c}function gr(t,n){var e=[];return lr(t,(function(t,r,i){n(t,r,i)&&e.push(t)})),e}function dr(t,n,e,r,i){var u=-1,o=t.length;for(e||(e=gu),i||(i=[]);++u<o;){var a=t[u];n>0&&e(a)?n>1?dr(a,n-1,e,r,i):Tn(i,a):r||(i[i.length]=a)}return i}var vr=Oi(),_r=Oi(!0);function yr(t,n){return t&&vr(t,n,Ia)}function mr(t,n){return t&&_r(t,n,Ia)}function wr(t,n){return Rn(n,(function(n){return Vo(t[n])}))}function br(t,n){for(var e=0,r=(n=vi(n,t)).length;null!=t&&e<r;)t=t[Pu(n[e++])];return e&&e==r?t:i}function xr(t,n,e){var r=n(t);return Wo(t)?r:Tn(r,e(t))}function Ar(t){return null==t?t===i?"[object Undefined]":"[object Null]":Jt&&Jt in St(t)?function(t){var n=Tt.call(t,Jt),e=t[Jt];try{t[Jt]=i;var r=!0}catch(t){}var u=Lt.call(t);return r&&(n?t[Jt]=e:delete t[Jt]),u}(t):function(t){return Lt.call(t)}(t)}function Sr(t,n){return t>n}function kr(t,n){return null!=t&&Tt.call(t,n)}function Er(t,n){return null!=t&&n in St(t)}function Cr(t,n,e){for(var u=e?On:In,o=t[0].length,a=t.length,s=a,c=r(a),l=1/0,f=[];s--;){var h=t[s];s&&n&&(h=Dn(h,Vn(n))),l=_e(h.length,l),c[s]=!e&&(n||o>=120&&h.length>=120)?new He(s&&h):i}h=t[0];var p=-1,g=c[0];t:for(;++p<o&&f.length<l;){var d=h[p],v=n?n(d):d;if(d=e||0!==d?d:0,!(g?Jn(g,v):u(f,v,e))){for(s=a;--s;){var _=c[s];if(!(_?Jn(_,v):u(t[s],v,e)))continue t}g&&g.push(v),f.push(d)}}return f}function Nr(t,n,e){var r=null==(t=Su(t,n=vi(n,t)))?t:t[Pu(Ku(n))];return null==r?i:Sn(r,t,e)}function Rr(t){return ta(t)&&Ar(t)==d}function Ir(t,n,e,r,u){return t===n||(null==t||null==n||!ta(t)&&!ta(n)?t!=t&&n!=n:function(t,n,e,r,u,o){var a=Wo(t),s=Wo(n),c=a?v:fu(t),l=s?v:fu(n),f=(c=c==d?S:c)==S,h=(l=l==d?S:l)==S,p=c==l;if(p&&Yo(t)){if(!Yo(n))return!1;a=!0,f=!1}if(p&&!f)return o||(o=new Ye),a||sa(t)?Ji(t,n,e,r,u,o):function(t,n,e,r,i,u,o){switch(e){case D:if(t.byteLength!=n.byteLength||t.byteOffset!=n.byteOffset)return!1;t=t.buffer,n=n.buffer;case O:return!(t.byteLength!=n.byteLength||!u(new Bt(t),new Bt(n)));case _:case y:case A:return Mo(+t,+n);case m:return t.name==n.name&&t.message==n.message;case E:case N:return t==n+"";case x:var a=ue;case C:var s=1&r;if(a||(a=se),t.size!=n.size&&!s)return!1;var c=o.get(t);if(c)return c==n;r|=2,o.set(t,n);var l=Ji(a(t),a(n),r,i,u,o);return o.delete(t),l;case R:if(Le)return Le.call(t)==Le.call(n)}return!1}(t,n,c,e,r,u,o);if(!(1&e)){var g=f&&Tt.call(t,"__wrapped__"),w=h&&Tt.call(n,"__wrapped__");if(g||w){var b=g?t.value():t,k=w?n.value():n;return o||(o=new Ye),u(b,k,e,r,o)}}return!!p&&(o||(o=new Ye),function(t,n,e,r,u,o){var a=1&e,s=tu(t),c=s.length;if(c!=tu(n).length&&!a)return!1;for(var l=c;l--;){var f=s[l];if(!(a?f in n:Tt.call(n,f)))return!1}var h=o.get(t),p=o.get(n);if(h&&p)return h==n&&p==t;var g=!0;o.set(t,n),o.set(n,t);for(var d=a;++l<c;){var v=t[f=s[l]],_=n[f];if(r)var y=a?r(_,v,f,n,t,o):r(v,_,f,t,n,o);if(!(y===i?v===_||u(v,_,e,r,o):y)){g=!1;break}d||(d="constructor"==f)}if(g&&!d){var m=t.constructor,w=n.constructor;m==w||!("constructor"in t)||!("constructor"in n)||"function"==typeof m&&m instanceof m&&"function"==typeof w&&w instanceof w||(g=!1)}return o.delete(t),o.delete(n),g}(t,n,e,r,u,o))}(t,n,e,r,Ir,u))}function Or(t,n,e,r){var u=e.length,o=u,a=!r;if(null==t)return!o;for(t=St(t);u--;){var s=e[u];if(a&&s[2]?s[1]!==t[s[0]]:!(s[0]in t))return!1}for(;++u<o;){var c=(s=e[u])[0],l=t[c],f=s[1];if(a&&s[2]){if(l===i&&!(c in t))return!1}else{var h=new Ye;if(r)var p=r(l,f,c,t,n,h);if(!(p===i?Ir(f,l,3,r,h):p))return!1}}return!0}function Dr(t){return!(!Xo(t)||(n=t,Pt&&Pt in n))&&(Vo(t)?Mt:dt).test(Lu(t));var n}function Tr(t){return"function"==typeof t?t:null==t?es:"object"==typeof t?Wo(t)?Gr(t[0],t[1]):Ur(t):fs(t)}function jr(t){if(!wu(t))return de(t);var n=[];for(var e in St(t))Tt.call(t,e)&&"constructor"!=e&&n.push(e);return n}function Pr(t,n){return t<n}function Lr(t,n){var e=-1,i=qo(t)?r(t.length):[];return lr(t,(function(t,r,u){i[++e]=n(t,r,u)})),i}function Ur(t){var n=au(t);return 1==n.length&&n[0][2]?xu(n[0][0],n[0][1]):function(e){return e===t||Or(e,t,n)}}function Gr(t,n){return _u(t)&&bu(n)?xu(Pu(t),n):function(e){var r=ka(e,t);return r===i&&r===n?Ea(e,t):Ir(n,r,3)}}function Mr(t,n,e,r,u){t!==n&&vr(n,(function(o,a){if(u||(u=new Ye),Xo(o))!function(t,n,e,r,u,o,a){var s=ku(t,e),c=ku(n,e),l=a.get(c);if(l)Je(t,e,l);else{var f=o?o(s,c,e+"",t,n,a):i,h=f===i;if(h){var p=Wo(c),g=!p&&Yo(c),d=!p&&!g&&sa(c);f=c,p||g||d?Wo(s)?f=s:Ho(s)?f=Ei(s):g?(h=!1,f=wi(c,!0)):d?(h=!1,f=xi(c,!0)):f=[]:ra(c)||Bo(c)?(f=s,Bo(s)?f=va(s):Xo(s)&&!Vo(s)||(f=pu(c))):h=!1}h&&(a.set(c,f),u(f,c,r,o,a),a.delete(c)),Je(t,e,f)}}(t,n,a,e,Mr,r,u);else{var s=r?r(ku(t,a),o,a+"",t,n,u):i;s===i&&(s=o),Je(t,a,s)}}),Oa)}function $r(t,n){var e=t.length;if(e)return du(n+=n<0?e:0,e)?t[n]:i}function zr(t,n,e){n=n.length?Dn(n,(function(t){return Wo(t)?function(n){return br(n,1===t.length?t[0]:t)}:t})):[es];var r=-1;n=Dn(n,Vn(uu()));var i=Lr(t,(function(t,e,i){var u=Dn(n,(function(n){return n(t)}));return{criteria:u,index:++r,value:t}}));return function(t,n){var r=t.length;for(t.sort((function(t,n){return function(t,n,e){for(var r=-1,i=t.criteria,u=n.criteria,o=i.length,a=e.length;++r<o;){var s=Ai(i[r],u[r]);if(s)return r>=a?s:s*("desc"==e[r]?-1:1)}return t.index-n.index}(t,n,e)}));r--;)t[r]=t[r].value;return t}(i)}function Br(t,n,e){for(var r=-1,i=n.length,u={};++r<i;){var o=n[r],a=br(t,o);e(a,o)&&Vr(u,vi(o,t),a)}return u}function Wr(t,n,e,r){var i=r?zn:$n,u=-1,o=n.length,a=t;for(t===n&&(n=Ei(n)),e&&(a=Dn(t,Vn(e)));++u<o;)for(var s=0,c=n[u],l=e?e(c):c;(s=i(a,l,s,r))>-1;)a!==t&&Yt.call(a,s,1),Yt.call(t,s,1);return t}function Fr(t,n){for(var e=t?n.length:0,r=e-1;e--;){var i=n[e];if(e==r||i!==u){var u=i;du(i)?Yt.call(t,i,1):si(t,i)}}return t}function qr(t,n){return t+gn(we()*(n-t+1))}function Hr(t,n){var e="";if(!t||n<1||n>f)return e;do{n%2&&(e+=t),(n=gn(n/2))&&(t+=t)}while(n);return e}function Yr(t,n){return Nu(Au(t,n,es),t+"")}function Kr(t){return Ze(Ma(t))}function Zr(t,n){var e=Ma(t);return Ou(e,ur(n,0,e.length))}function Vr(t,n,e,r){if(!Xo(t))return t;for(var u=-1,o=(n=vi(n,t)).length,a=o-1,s=t;null!=s&&++u<o;){var c=Pu(n[u]),l=e;if("__proto__"===c||"constructor"===c||"prototype"===c)return t;if(u!=a){var f=s[c];(l=r?r(f,c,s):i)===i&&(l=Xo(f)?f:du(n[u+1])?[]:{})}Xe(s,c,l),s=s[c]}return t}var Qr=Ne?function(t,n){return Ne.set(t,n),t}:es,Jr=tn?function(t,n){return tn(t,"toString",{configurable:!0,enumerable:!1,value:Xa(n),writable:!0})}:es;function Xr(t){return Ou(Ma(t))}function ti(t,n,e){var i=-1,u=t.length;n<0&&(n=-n>u?0:u+n),(e=e>u?u:e)<0&&(e+=u),u=n>e?0:e-n>>>0,n>>>=0;for(var o=r(u);++i<u;)o[i]=t[i+n];return o}function ni(t,n){var e;return lr(t,(function(t,r,i){return!(e=n(t,r,i))})),!!e}function ei(t,n,e){var r=0,i=null==t?r:t.length;if("number"==typeof n&&n==n&&i<=2147483647){for(;r<i;){var u=r+i>>>1,o=t[u];null!==o&&!aa(o)&&(e?o<=n:o<n)?r=u+1:i=u}return i}return ri(t,n,es,e)}function ri(t,n,e,r){var u=0,o=null==t?0:t.length;if(0===o)return 0;for(var a=(n=e(n))!=n,s=null===n,c=aa(n),l=n===i;u<o;){var f=gn((u+o)/2),h=e(t[f]),p=h!==i,g=null===h,d=h==h,v=aa(h);if(a)var _=r||d;else _=l?d&&(r||p):s?d&&p&&(r||!g):c?d&&p&&!g&&(r||!v):!g&&!v&&(r?h<=n:h<n);_?u=f+1:o=f}return _e(o,4294967294)}function ii(t,n){for(var e=-1,r=t.length,i=0,u=[];++e<r;){var o=t[e],a=n?n(o):o;if(!e||!Mo(a,s)){var s=a;u[i++]=0===o?0:o}}return u}function ui(t){return"number"==typeof t?t:aa(t)?h:+t}function oi(t){if("string"==typeof t)return t;if(Wo(t))return Dn(t,oi)+"";if(aa(t))return Ue?Ue.call(t):"";var n=t+"";return"0"==n&&1/t==-1/0?"-0":n}function ai(t,n,e){var r=-1,i=In,u=t.length,o=!0,a=[],s=a;if(e)o=!1,i=On;else if(u>=200){var c=n?null:Hi(t);if(c)return se(c);o=!1,i=Jn,s=new He}else s=n?[]:a;t:for(;++r<u;){var l=t[r],f=n?n(l):l;if(l=e||0!==l?l:0,o&&f==f){for(var h=s.length;h--;)if(s[h]===f)continue t;n&&s.push(f),a.push(l)}else i(s,f,e)||(s!==a&&s.push(f),a.push(l))}return a}function si(t,n){return null==(t=Su(t,n=vi(n,t)))||delete t[Pu(Ku(n))]}function ci(t,n,e,r){return Vr(t,n,e(br(t,n)),r)}function li(t,n,e,r){for(var i=t.length,u=r?i:-1;(r?u--:++u<i)&&n(t[u],u,t););return e?ti(t,r?0:u,r?u+1:i):ti(t,r?u+1:0,r?i:u)}function fi(t,n){var e=t;return e instanceof Be&&(e=e.value()),jn(n,(function(t,n){return n.func.apply(n.thisArg,Tn([t],n.args))}),e)}function hi(t,n,e){var i=t.length;if(i<2)return i?ai(t[0]):[];for(var u=-1,o=r(i);++u<i;)for(var a=t[u],s=-1;++s<i;)s!=u&&(o[u]=cr(o[u]||a,t[s],n,e));return ai(dr(o,1),n,e)}function pi(t,n,e){for(var r=-1,u=t.length,o=n.length,a={};++r<u;){var s=r<o?n[r]:i;e(a,t[r],s)}return a}function gi(t){return Ho(t)?t:[]}function di(t){return"function"==typeof t?t:es}function vi(t,n){return Wo(t)?t:_u(t,n)?[t]:ju(_a(t))}var _i=Yr;function yi(t,n,e){var r=t.length;return e=e===i?r:e,!n&&e>=r?t:ti(t,n,e)}var mi=an||function(t){return hn.clearTimeout(t)};function wi(t,n){if(n)return t.slice();var e=t.length,r=Wt?Wt(e):new t.constructor(e);return t.copy(r),r}function bi(t){var n=new t.constructor(t.byteLength);return new Bt(n).set(new Bt(t)),n}function xi(t,n){var e=n?bi(t.buffer):t.buffer;return new t.constructor(e,t.byteOffset,t.length)}function Ai(t,n){if(t!==n){var e=t!==i,r=null===t,u=t==t,o=aa(t),a=n!==i,s=null===n,c=n==n,l=aa(n);if(!s&&!l&&!o&&t>n||o&&a&&c&&!s&&!l||r&&a&&c||!e&&c||!u)return 1;if(!r&&!o&&!l&&t<n||l&&e&&u&&!r&&!o||s&&e&&u||!a&&u||!c)return-1}return 0}function Si(t,n,e,i){for(var u=-1,o=t.length,a=e.length,s=-1,c=n.length,l=ve(o-a,0),f=r(c+l),h=!i;++s<c;)f[s]=n[s];for(;++u<a;)(h||u<o)&&(f[e[u]]=t[u]);for(;l--;)f[s++]=t[u++];return f}function ki(t,n,e,i){for(var u=-1,o=t.length,a=-1,s=e.length,c=-1,l=n.length,f=ve(o-s,0),h=r(f+l),p=!i;++u<f;)h[u]=t[u];for(var g=u;++c<l;)h[g+c]=n[c];for(;++a<s;)(p||u<o)&&(h[g+e[a]]=t[u++]);return h}function Ei(t,n){var e=-1,i=t.length;for(n||(n=r(i));++e<i;)n[e]=t[e];return n}function Ci(t,n,e,r){var u=!e;e||(e={});for(var o=-1,a=n.length;++o<a;){var s=n[o],c=r?r(e[s],t[s],s,e,t):i;c===i&&(c=t[s]),u?rr(e,s,c):Xe(e,s,c)}return e}function Ni(t,n){return function(e,r){var i=Wo(e)?kn:nr,u=n?n():{};return i(e,t,uu(r,2),u)}}function Ri(t){return Yr((function(n,e){var r=-1,u=e.length,o=u>1?e[u-1]:i,a=u>2?e[2]:i;for(o=t.length>3&&"function"==typeof o?(u--,o):i,a&&vu(e[0],e[1],a)&&(o=u<3?i:o,u=1),n=St(n);++r<u;){var s=e[r];s&&t(n,s,r,o)}return n}))}function Ii(t,n){return function(e,r){if(null==e)return e;if(!qo(e))return t(e,r);for(var i=e.length,u=n?i:-1,o=St(e);(n?u--:++u<i)&&!1!==r(o[u],u,o););return e}}function Oi(t){return function(n,e,r){for(var i=-1,u=St(n),o=r(n),a=o.length;a--;){var s=o[t?a:++i];if(!1===e(u[s],s,u))break}return n}}function Di(t){return function(n){var e=ie(n=_a(n))?fe(n):i,r=e?e[0]:n.charAt(0),u=e?yi(e,1).join(""):n.slice(1);return r[t]()+u}}function Ti(t){return function(n){return jn(Va(Ba(n).replace(Vt,"")),t,"")}}function ji(t){return function(){var n=arguments;switch(n.length){case 0:return new t;case 1:return new t(n[0]);case 2:return new t(n[0],n[1]);case 3:return new t(n[0],n[1],n[2]);case 4:return new t(n[0],n[1],n[2],n[3]);case 5:return new t(n[0],n[1],n[2],n[3],n[4]);case 6:return new t(n[0],n[1],n[2],n[3],n[4],n[5]);case 7:return new t(n[0],n[1],n[2],n[3],n[4],n[5],n[6])}var e=Me(t.prototype),r=t.apply(e,n);return Xo(r)?r:e}}function Pi(t){return function(n,e,r){var u=St(n);if(!qo(n)){var o=uu(e,3);n=Ia(n),e=function(t){return o(u[t],t,u)}}var a=t(n,e,r);return a>-1?u[o?n[a]:a]:i}}function Li(t){return Xi((function(n){var e=n.length,r=e,o=ze.prototype.thru;for(t&&n.reverse();r--;){var a=n[r];if("function"!=typeof a)throw new Ct(u);if(o&&!s&&"wrapper"==ru(a))var s=new ze([],!0)}for(r=s?r:e;++r<e;){var c=ru(a=n[r]),l="wrapper"==c?eu(a):i;s=l&&yu(l[0])&&424==l[1]&&!l[4].length&&1==l[9]?s[ru(l[0])].apply(s,l[3]):1==a.length&&yu(a)?s[c]():s.thru(a)}return function(){var t=arguments,r=t[0];if(s&&1==t.length&&Wo(r))return s.plant(r).value();for(var i=0,u=e?n[i].apply(this,t):r;++i<e;)u=n[i].call(this,u);return u}}))}function Ui(t,n,e,u,o,a,s,l,f,h){var p=n&c,g=1&n,d=2&n,v=24&n,_=512&n,y=d?i:ji(t);return function c(){for(var m=arguments.length,w=r(m),b=m;b--;)w[b]=arguments[b];if(v)var x=iu(c),A=function(t,n){for(var e=t.length,r=0;e--;)t[e]===n&&++r;return r}(w,x);if(u&&(w=Si(w,u,o,v)),a&&(w=ki(w,a,s,v)),m-=A,v&&m<h){var S=ae(w,x);return Fi(t,n,Ui,c.placeholder,e,w,S,l,f,h-m)}var k=g?e:this,E=d?k[t]:t;return m=w.length,l?w=function(t,n){for(var e=t.length,r=_e(n.length,e),u=Ei(t);r--;){var o=n[r];t[r]=du(o,e)?u[o]:i}return t}(w,l):_&&m>1&&w.reverse(),p&&f<m&&(w.length=f),this&&this!==hn&&this instanceof c&&(E=y||ji(E)),E.apply(k,w)}}function Gi(t,n){return function(e,r){return function(t,n,e,r){return yr(t,(function(t,i,u){n(r,e(t),i,u)})),r}(e,t,n(r),{})}}function Mi(t,n){return function(e,r){var u;if(e===i&&r===i)return n;if(e!==i&&(u=e),r!==i){if(u===i)return r;"string"==typeof e||"string"==typeof r?(e=oi(e),r=oi(r)):(e=ui(e),r=ui(r)),u=t(e,r)}return u}}function $i(t){return Xi((function(n){return n=Dn(n,Vn(uu())),Yr((function(e){var r=this;return t(n,(function(t){return Sn(t,r,e)}))}))}))}function zi(t,n){var e=(n=n===i?" ":oi(n)).length;if(e<2)return e?Hr(n,t):n;var r=Hr(n,pn(t/le(n)));return ie(n)?yi(fe(r),0,t).join(""):r.slice(0,t)}function Bi(t){return function(n,e,u){return u&&"number"!=typeof u&&vu(n,e,u)&&(e=u=i),n=ha(n),e===i?(e=n,n=0):e=ha(e),function(t,n,e,i){for(var u=-1,o=ve(pn((n-t)/(e||1)),0),a=r(o);o--;)a[i?o:++u]=t,t+=e;return a}(n,e,u=u===i?n<e?1:-1:ha(u),t)}}function Wi(t){return function(n,e){return"string"==typeof n&&"string"==typeof e||(n=da(n),e=da(e)),t(n,e)}}function Fi(t,n,e,r,u,o,a,c,l,f){var h=8&n;n|=h?s:64,4&(n&=~(h?64:s))||(n&=-4);var p=[t,n,u,h?o:i,h?a:i,h?i:o,h?i:a,c,l,f],g=e.apply(i,p);return yu(t)&&Eu(g,p),g.placeholder=r,Ru(g,t,n)}function qi(t){var n=At[t];return function(t,e){if(t=da(t),(e=null==e?0:_e(pa(e),292))&&Un(t)){var r=(_a(t)+"e").split("e");return+((r=(_a(n(r[0]+"e"+(+r[1]+e)))+"e").split("e"))[0]+"e"+(+r[1]-e))}return n(t)}}var Hi=ke&&1/se(new ke([,-0]))[1]==l?function(t){return new ke(t)}:as;function Yi(t){return function(n){var e=fu(n);return e==x?ue(n):e==C?ce(n):function(t,n){return Dn(n,(function(n){return[n,t[n]]}))}(n,t(n))}}function Ki(t,n,e,o,l,f,h,p){var g=2&n;if(!g&&"function"!=typeof t)throw new Ct(u);var d=o?o.length:0;if(d||(n&=-97,o=l=i),h=h===i?h:ve(pa(h),0),p=p===i?p:pa(p),d-=l?l.length:0,64&n){var v=o,_=l;o=l=i}var y=g?i:eu(t),m=[t,n,e,o,l,v,_,f,h,p];if(y&&function(t,n){var e=t[1],r=n[1],i=e|r,u=i<131,o=r==c&&8==e||r==c&&256==e&&t[7].length<=n[8]||384==r&&n[7].length<=n[8]&&8==e;if(!u&&!o)return t;1&r&&(t[2]=n[2],i|=1&e?0:4);var s=n[3];if(s){var l=t[3];t[3]=l?Si(l,s,n[4]):s,t[4]=l?ae(t[3],a):n[4]}(s=n[5])&&(l=t[5],t[5]=l?ki(l,s,n[6]):s,t[6]=l?ae(t[5],a):n[6]),(s=n[7])&&(t[7]=s),r&c&&(t[8]=null==t[8]?n[8]:_e(t[8],n[8])),null==t[9]&&(t[9]=n[9]),t[0]=n[0],t[1]=i}(m,y),t=m[0],n=m[1],e=m[2],o=m[3],l=m[4],!(p=m[9]=m[9]===i?g?0:t.length:ve(m[9]-d,0))&&24&n&&(n&=-25),n&&1!=n)w=8==n||16==n?function(t,n,e){var u=ji(t);return function o(){for(var a=arguments.length,s=r(a),c=a,l=iu(o);c--;)s[c]=arguments[c];var f=a<3&&s[0]!==l&&s[a-1]!==l?[]:ae(s,l);return(a-=f.length)<e?Fi(t,n,Ui,o.placeholder,i,s,f,i,i,e-a):Sn(this&&this!==hn&&this instanceof o?u:t,this,s)}}(t,n,p):n!=s&&33!=n||l.length?Ui.apply(i,m):function(t,n,e,i){var u=1&n,o=ji(t);return function n(){for(var a=-1,s=arguments.length,c=-1,l=i.length,f=r(l+s),h=this&&this!==hn&&this instanceof n?o:t;++c<l;)f[c]=i[c];for(;s--;)f[c++]=arguments[++a];return Sn(h,u?e:this,f)}}(t,n,e,o);else var w=function(t,n,e){var r=1&n,i=ji(t);return function n(){return(this&&this!==hn&&this instanceof n?i:t).apply(r?e:this,arguments)}}(t,n,e);return Ru((y?Qr:Eu)(w,m),t,n)}function Zi(t,n,e,r){return t===i||Mo(t,It[e])&&!Tt.call(r,e)?n:t}function Vi(t,n,e,r,u,o){return Xo(t)&&Xo(n)&&(o.set(n,t),Mr(t,n,i,Vi,o),o.delete(n)),t}function Qi(t){return ra(t)?i:t}function Ji(t,n,e,r,u,o){var a=1&e,s=t.length,c=n.length;if(s!=c&&!(a&&c>s))return!1;var l=o.get(t),f=o.get(n);if(l&&f)return l==n&&f==t;var h=-1,p=!0,g=2&e?new He:i;for(o.set(t,n),o.set(n,t);++h<s;){var d=t[h],v=n[h];if(r)var _=a?r(v,d,h,n,t,o):r(d,v,h,t,n,o);if(_!==i){if(_)continue;p=!1;break}if(g){if(!Ln(n,(function(t,n){if(!Jn(g,n)&&(d===t||u(d,t,e,r,o)))return g.push(n)}))){p=!1;break}}else if(d!==v&&!u(d,v,e,r,o)){p=!1;break}}return o.delete(t),o.delete(n),p}function Xi(t){return Nu(Au(t,i,Wu),t+"")}function tu(t){return xr(t,Ia,cu)}function nu(t){return xr(t,Oa,lu)}var eu=Ne?function(t){return Ne.get(t)}:as;function ru(t){for(var n=t.name+"",e=Re[n],r=Tt.call(Re,n)?e.length:0;r--;){var i=e[r],u=i.func;if(null==u||u==t)return i.name}return n}function iu(t){return(Tt.call(Ge,"placeholder")?Ge:t).placeholder}function uu(){var t=Ge.iteratee||rs;return t=t===rs?Tr:t,arguments.length?t(arguments[0],arguments[1]):t}function ou(t,n){var e,r,i=t.__data__;return("string"==(r=typeof(e=n))||"number"==r||"symbol"==r||"boolean"==r?"__proto__"!==e:null===e)?i["string"==typeof n?"string":"hash"]:i.map}function au(t){for(var n=Ia(t),e=n.length;e--;){var r=n[e],i=t[r];n[e]=[r,i,bu(i)]}return n}function su(t,n){var e=function(t,n){return null==t?i:t[n]}(t,n);return Dr(e)?e:i}var cu=vn?function(t){return null==t?[]:(t=St(t),Rn(vn(t),(function(n){return Ht.call(t,n)})))}:gs,lu=vn?function(t){for(var n=[];t;)Tn(n,cu(t)),t=Ft(t);return n}:gs,fu=Ar;function hu(t,n,e){for(var r=-1,i=(n=vi(n,t)).length,u=!1;++r<i;){var o=Pu(n[r]);if(!(u=null!=t&&e(t,o)))break;t=t[o]}return u||++r!=i?u:!!(i=null==t?0:t.length)&&Jo(i)&&du(o,i)&&(Wo(t)||Bo(t))}function pu(t){return"function"!=typeof t.constructor||wu(t)?{}:Me(Ft(t))}function gu(t){return Wo(t)||Bo(t)||!!(Kt&&t&&t[Kt])}function du(t,n){var e=typeof t;return!!(n=null==n?f:n)&&("number"==e||"symbol"!=e&&_t.test(t))&&t>-1&&t%1==0&&t<n}function vu(t,n,e){if(!Xo(e))return!1;var r=typeof n;return!!("number"==r?qo(e)&&du(n,e.length):"string"==r&&n in e)&&Mo(e[n],t)}function _u(t,n){if(Wo(t))return!1;var e=typeof t;return!("number"!=e&&"symbol"!=e&&"boolean"!=e&&null!=t&&!aa(t))||X.test(t)||!J.test(t)||null!=n&&t in St(n)}function yu(t){var n=ru(t),e=Ge[n];if("function"!=typeof e||!(n in Be.prototype))return!1;if(t===e)return!0;var r=eu(e);return!!r&&t===r[0]}(xe&&fu(new xe(new ArrayBuffer(1)))!=D||Ae&&fu(new Ae)!=x||Se&&fu(Se.resolve())!=k||ke&&fu(new ke)!=C||Ee&&fu(new Ee)!=I)&&(fu=function(t){var n=Ar(t),e=n==S?t.constructor:i,r=e?Lu(e):"";if(r)switch(r){case Ie:return D;case Oe:return x;case De:return k;case Te:return C;case je:return I}return n});var mu=Ot?Vo:ds;function wu(t){var n=t&&t.constructor;return t===("function"==typeof n&&n.prototype||It)}function bu(t){return t==t&&!Xo(t)}function xu(t,n){return function(e){return null!=e&&e[t]===n&&(n!==i||t in St(e))}}function Au(t,n,e){return n=ve(n===i?t.length-1:n,0),function(){for(var i=arguments,u=-1,o=ve(i.length-n,0),a=r(o);++u<o;)a[u]=i[n+u];u=-1;for(var s=r(n+1);++u<n;)s[u]=i[u];return s[n]=e(a),Sn(t,this,s)}}function Su(t,n){return n.length<2?t:br(t,ti(n,0,-1))}function ku(t,n){if(("constructor"!==n||"function"!=typeof t[n])&&"__proto__"!=n)return t[n]}var Eu=Iu(Qr),Cu=fn||function(t,n){return hn.setTimeout(t,n)},Nu=Iu(Jr);function Ru(t,n,e){var r=n+"";return Nu(t,function(t,n){var e=n.length;if(!e)return t;var r=e-1;return n[r]=(e>1?"& ":"")+n[r],n=n.join(e>2?", ":" "),t.replace(ut,"{\n/* [wrapped with "+n+"] */\n")}(r,function(t,n){return En(g,(function(e){var r="_."+e[0];n&e[1]&&!In(t,r)&&t.push(r)})),t.sort()}(function(t){var n=t.match(ot);return n?n[1].split(at):[]}(r),e)))}function Iu(t){var n=0,e=0;return function(){var r=ye(),u=16-(r-e);if(e=r,u>0){if(++n>=800)return arguments[0]}else n=0;return t.apply(i,arguments)}}function Ou(t,n){var e=-1,r=t.length,u=r-1;for(n=n===i?r:n;++e<n;){var o=qr(e,u),a=t[o];t[o]=t[e],t[e]=a}return t.length=n,t}var Du,Tu,ju=(Du=To((function(t){var n=[];return 46===t.charCodeAt(0)&&n.push(""),t.replace(tt,(function(t,e,r,i){n.push(r?i.replace(lt,"$1"):e||t)})),n}),(function(t){return 500===Tu.size&&Tu.clear(),t})),Tu=Du.cache,Du);function Pu(t){if("string"==typeof t||aa(t))return t;var n=t+"";return"0"==n&&1/t==-1/0?"-0":n}function Lu(t){if(null!=t){try{return Dt.call(t)}catch(t){}try{return t+""}catch(t){}}return""}function Uu(t){if(t instanceof Be)return t.clone();var n=new ze(t.__wrapped__,t.__chain__);return n.__actions__=Ei(t.__actions__),n.__index__=t.__index__,n.__values__=t.__values__,n}var Gu=Yr((function(t,n){return Ho(t)?cr(t,dr(n,1,Ho,!0)):[]})),Mu=Yr((function(t,n){var e=Ku(n);return Ho(e)&&(e=i),Ho(t)?cr(t,dr(n,1,Ho,!0),uu(e,2)):[]})),$u=Yr((function(t,n){var e=Ku(n);return Ho(e)&&(e=i),Ho(t)?cr(t,dr(n,1,Ho,!0),i,e):[]}));function zu(t,n,e){var r=null==t?0:t.length;if(!r)return-1;var i=null==e?0:pa(e);return i<0&&(i=ve(r+i,0)),Mn(t,uu(n,3),i)}function Bu(t,n,e){var r=null==t?0:t.length;if(!r)return-1;var u=r-1;return e!==i&&(u=pa(e),u=e<0?ve(r+u,0):_e(u,r-1)),Mn(t,uu(n,3),u,!0)}function Wu(t){return null!=t&&t.length?dr(t,1):[]}function Fu(t){return t&&t.length?t[0]:i}var qu=Yr((function(t){var n=Dn(t,gi);return n.length&&n[0]===t[0]?Cr(n):[]})),Hu=Yr((function(t){var n=Ku(t),e=Dn(t,gi);return n===Ku(e)?n=i:e.pop(),e.length&&e[0]===t[0]?Cr(e,uu(n,2)):[]})),Yu=Yr((function(t){var n=Ku(t),e=Dn(t,gi);return(n="function"==typeof n?n:i)&&e.pop(),e.length&&e[0]===t[0]?Cr(e,i,n):[]}));function Ku(t){var n=null==t?0:t.length;return n?t[n-1]:i}var Zu=Yr(Vu);function Vu(t,n){return t&&t.length&&n&&n.length?Wr(t,n):t}var Qu=Xi((function(t,n){var e=null==t?0:t.length,r=ir(t,n);return Fr(t,Dn(n,(function(t){return du(t,e)?+t:t})).sort(Ai)),r}));function Ju(t){return null==t?t:be.call(t)}var Xu=Yr((function(t){return ai(dr(t,1,Ho,!0))})),to=Yr((function(t){var n=Ku(t);return Ho(n)&&(n=i),ai(dr(t,1,Ho,!0),uu(n,2))})),no=Yr((function(t){var n=Ku(t);return n="function"==typeof n?n:i,ai(dr(t,1,Ho,!0),i,n)}));function eo(t){if(!t||!t.length)return[];var n=0;return t=Rn(t,(function(t){if(Ho(t))return n=ve(t.length,n),!0})),Kn(n,(function(n){return Dn(t,Fn(n))}))}function ro(t,n){if(!t||!t.length)return[];var e=eo(t);return null==n?e:Dn(e,(function(t){return Sn(n,i,t)}))}var io=Yr((function(t,n){return Ho(t)?cr(t,n):[]})),uo=Yr((function(t){return hi(Rn(t,Ho))})),oo=Yr((function(t){var n=Ku(t);return Ho(n)&&(n=i),hi(Rn(t,Ho),uu(n,2))})),ao=Yr((function(t){var n=Ku(t);return n="function"==typeof n?n:i,hi(Rn(t,Ho),i,n)})),so=Yr(eo),co=Yr((function(t){var n=t.length,e=n>1?t[n-1]:i;return e="function"==typeof e?(t.pop(),e):i,ro(t,e)}));function lo(t){var n=Ge(t);return n.__chain__=!0,n}function fo(t,n){return n(t)}var ho=Xi((function(t){var n=t.length,e=n?t[0]:0,r=this.__wrapped__,u=function(n){return ir(n,t)};return!(n>1||this.__actions__.length)&&r instanceof Be&&du(e)?((r=r.slice(e,+e+(n?1:0))).__actions__.push({func:fo,args:[u],thisArg:i}),new ze(r,this.__chain__).thru((function(t){return n&&!t.length&&t.push(i),t}))):this.thru(u)})),po=Ni((function(t,n,e){Tt.call(t,e)?++t[e]:rr(t,e,1)})),go=Pi(zu),vo=Pi(Bu);function _o(t,n){return(Wo(t)?En:lr)(t,uu(n,3))}function yo(t,n){return(Wo(t)?Cn:fr)(t,uu(n,3))}var mo=Ni((function(t,n,e){Tt.call(t,e)?t[e].push(n):rr(t,e,[n])})),wo=Yr((function(t,n,e){var i=-1,u="function"==typeof n,o=qo(t)?r(t.length):[];return lr(t,(function(t){o[++i]=u?Sn(n,t,e):Nr(t,n,e)})),o})),bo=Ni((function(t,n,e){rr(t,e,n)}));function xo(t,n){return(Wo(t)?Dn:Lr)(t,uu(n,3))}var Ao=Ni((function(t,n,e){t[e?0:1].push(n)}),(function(){return[[],[]]})),So=Yr((function(t,n){if(null==t)return[];var e=n.length;return e>1&&vu(t,n[0],n[1])?n=[]:e>2&&vu(n[0],n[1],n[2])&&(n=[n[0]]),zr(t,dr(n,1),[])})),ko=ln||function(){return hn.Date.now()};function Eo(t,n,e){return n=e?i:n,n=t&&null==n?t.length:n,Ki(t,c,i,i,i,i,n)}function Co(t,n){var e;if("function"!=typeof n)throw new Ct(u);return t=pa(t),function(){return--t>0&&(e=n.apply(this,arguments)),t<=1&&(n=i),e}}var No=Yr((function(t,n,e){var r=1;if(e.length){var i=ae(e,iu(No));r|=s}return Ki(t,r,n,e,i)})),Ro=Yr((function(t,n,e){var r=3;if(e.length){var i=ae(e,iu(Ro));r|=s}return Ki(n,r,t,e,i)}));function Io(t,n,e){var r,o,a,s,c,l,f=0,h=!1,p=!1,g=!0;if("function"!=typeof t)throw new Ct(u);function d(n){var e=r,u=o;return r=o=i,f=n,s=t.apply(u,e)}function v(t){var e=t-l;return l===i||e>=n||e<0||p&&t-f>=a}function _(){var t=ko();if(v(t))return y(t);c=Cu(_,function(t){var e=n-(t-l);return p?_e(e,a-(t-f)):e}(t))}function y(t){return c=i,g&&r?d(t):(r=o=i,s)}function m(){var t=ko(),e=v(t);if(r=arguments,o=this,l=t,e){if(c===i)return function(t){return f=t,c=Cu(_,n),h?d(t):s}(l);if(p)return mi(c),c=Cu(_,n),d(l)}return c===i&&(c=Cu(_,n)),s}return n=da(n)||0,Xo(e)&&(h=!!e.leading,a=(p="maxWait"in e)?ve(da(e.maxWait)||0,n):a,g="trailing"in e?!!e.trailing:g),m.cancel=function(){c!==i&&mi(c),f=0,r=l=o=c=i},m.flush=function(){return c===i?s:y(ko())},m}var Oo=Yr((function(t,n){return sr(t,1,n)})),Do=Yr((function(t,n,e){return sr(t,da(n)||0,e)}));function To(t,n){if("function"!=typeof t||null!=n&&"function"!=typeof n)throw new Ct(u);var e=function(){var r=arguments,i=n?n.apply(this,r):r[0],u=e.cache;if(u.has(i))return u.get(i);var o=t.apply(this,r);return e.cache=u.set(i,o)||u,o};return e.cache=new(To.Cache||qe),e}function jo(t){if("function"!=typeof t)throw new Ct(u);return function(){var n=arguments;switch(n.length){case 0:return!t.call(this);case 1:return!t.call(this,n[0]);case 2:return!t.call(this,n[0],n[1]);case 3:return!t.call(this,n[0],n[1],n[2])}return!t.apply(this,n)}}To.Cache=qe;var Po=_i((function(t,n){var e=(n=1==n.length&&Wo(n[0])?Dn(n[0],Vn(uu())):Dn(dr(n,1),Vn(uu()))).length;return Yr((function(r){for(var i=-1,u=_e(r.length,e);++i<u;)r[i]=n[i].call(this,r[i]);return Sn(t,this,r)}))})),Lo=Yr((function(t,n){var e=ae(n,iu(Lo));return Ki(t,s,i,n,e)})),Uo=Yr((function(t,n){var e=ae(n,iu(Uo));return Ki(t,64,i,n,e)})),Go=Xi((function(t,n){return Ki(t,256,i,i,i,n)}));function Mo(t,n){return t===n||t!=t&&n!=n}var $o=Wi(Sr),zo=Wi((function(t,n){return t>=n})),Bo=Rr(function(){return arguments}())?Rr:function(t){return ta(t)&&Tt.call(t,"callee")&&!Ht.call(t,"callee")},Wo=r.isArray,Fo=yn?Vn(yn):function(t){return ta(t)&&Ar(t)==O};function qo(t){return null!=t&&Jo(t.length)&&!Vo(t)}function Ho(t){return ta(t)&&qo(t)}var Yo=_n||ds,Ko=mn?Vn(mn):function(t){return ta(t)&&Ar(t)==y};function Zo(t){if(!ta(t))return!1;var n=Ar(t);return n==m||"[object DOMException]"==n||"string"==typeof t.message&&"string"==typeof t.name&&!ra(t)}function Vo(t){if(!Xo(t))return!1;var n=Ar(t);return n==w||n==b||"[object AsyncFunction]"==n||"[object Proxy]"==n}function Qo(t){return"number"==typeof t&&t==pa(t)}function Jo(t){return"number"==typeof t&&t>-1&&t%1==0&&t<=f}function Xo(t){var n=typeof t;return null!=t&&("object"==n||"function"==n)}function ta(t){return null!=t&&"object"==typeof t}var na=wn?Vn(wn):function(t){return ta(t)&&fu(t)==x};function ea(t){return"number"==typeof t||ta(t)&&Ar(t)==A}function ra(t){if(!ta(t)||Ar(t)!=S)return!1;var n=Ft(t);if(null===n)return!0;var e=Tt.call(n,"constructor")&&n.constructor;return"function"==typeof e&&e instanceof e&&Dt.call(e)==Ut}var ia=bn?Vn(bn):function(t){return ta(t)&&Ar(t)==E},ua=xn?Vn(xn):function(t){return ta(t)&&fu(t)==C};function oa(t){return"string"==typeof t||!Wo(t)&&ta(t)&&Ar(t)==N}function aa(t){return"symbol"==typeof t||ta(t)&&Ar(t)==R}var sa=An?Vn(An):function(t){return ta(t)&&Jo(t.length)&&!!un[Ar(t)]},ca=Wi(Pr),la=Wi((function(t,n){return t<=n}));function fa(t){if(!t)return[];if(qo(t))return oa(t)?fe(t):Ei(t);if(Zt&&t[Zt])return function(t){for(var n,e=[];!(n=t.next()).done;)e.push(n.value);return e}(t[Zt]());var n=fu(t);return(n==x?ue:n==C?se:Ma)(t)}function ha(t){return t?(t=da(t))===l||t===-1/0?17976931348623157e292*(t<0?-1:1):t==t?t:0:0===t?t:0}function pa(t){var n=ha(t),e=n%1;return n==n?e?n-e:n:0}function ga(t){return t?ur(pa(t),0,p):0}function da(t){if("number"==typeof t)return t;if(aa(t))return h;if(Xo(t)){var n="function"==typeof t.valueOf?t.valueOf():t;t=Xo(n)?n+"":n}if("string"!=typeof t)return 0===t?t:+t;t=Zn(t);var e=gt.test(t);return e||vt.test(t)?cn(t.slice(2),e?2:8):pt.test(t)?h:+t}function va(t){return Ci(t,Oa(t))}function _a(t){return null==t?"":oi(t)}var ya=Ri((function(t,n){if(wu(n)||qo(n))Ci(n,Ia(n),t);else for(var e in n)Tt.call(n,e)&&Xe(t,e,n[e])})),ma=Ri((function(t,n){Ci(n,Oa(n),t)})),wa=Ri((function(t,n,e,r){Ci(n,Oa(n),t,r)})),ba=Ri((function(t,n,e,r){Ci(n,Ia(n),t,r)})),xa=Xi(ir),Aa=Yr((function(t,n){t=St(t);var e=-1,r=n.length,u=r>2?n[2]:i;for(u&&vu(n[0],n[1],u)&&(r=1);++e<r;)for(var o=n[e],a=Oa(o),s=-1,c=a.length;++s<c;){var l=a[s],f=t[l];(f===i||Mo(f,It[l])&&!Tt.call(t,l))&&(t[l]=o[l])}return t})),Sa=Yr((function(t){return t.push(i,Vi),Sn(Ta,i,t)}));function ka(t,n,e){var r=null==t?i:br(t,n);return r===i?e:r}function Ea(t,n){return null!=t&&hu(t,n,Er)}var Ca=Gi((function(t,n,e){null!=n&&"function"!=typeof n.toString&&(n=Lt.call(n)),t[n]=e}),Xa(es)),Na=Gi((function(t,n,e){null!=n&&"function"!=typeof n.toString&&(n=Lt.call(n)),Tt.call(t,n)?t[n].push(e):t[n]=[e]}),uu),Ra=Yr(Nr);function Ia(t){return qo(t)?Ke(t):jr(t)}function Oa(t){return qo(t)?Ke(t,!0):function(t){if(!Xo(t))return function(t){var n=[];if(null!=t)for(var e in St(t))n.push(e);return n}(t);var n=wu(t),e=[];for(var r in t)("constructor"!=r||!n&&Tt.call(t,r))&&e.push(r);return e}(t)}var Da=Ri((function(t,n,e){Mr(t,n,e)})),Ta=Ri((function(t,n,e,r){Mr(t,n,e,r)})),ja=Xi((function(t,n){var e={};if(null==t)return e;var r=!1;n=Dn(n,(function(n){return n=vi(n,t),r||(r=n.length>1),n})),Ci(t,nu(t),e),r&&(e=or(e,7,Qi));for(var i=n.length;i--;)si(e,n[i]);return e})),Pa=Xi((function(t,n){return null==t?{}:function(t,n){return Br(t,n,(function(n,e){return Ea(t,e)}))}(t,n)}));function La(t,n){if(null==t)return{};var e=Dn(nu(t),(function(t){return[t]}));return n=uu(n),Br(t,e,(function(t,e){return n(t,e[0])}))}var Ua=Yi(Ia),Ga=Yi(Oa);function Ma(t){return null==t?[]:Qn(t,Ia(t))}var $a=Ti((function(t,n,e){return n=n.toLowerCase(),t+(e?za(n):n)}));function za(t){return Za(_a(t).toLowerCase())}function Ba(t){return(t=_a(t))&&t.replace(yt,ne).replace(Qt,"")}var Wa=Ti((function(t,n,e){return t+(e?"-":"")+n.toLowerCase()})),Fa=Ti((function(t,n,e){return t+(e?" ":"")+n.toLowerCase()})),qa=Di("toLowerCase"),Ha=Ti((function(t,n,e){return t+(e?"_":"")+n.toLowerCase()})),Ya=Ti((function(t,n,e){return t+(e?" ":"")+Za(n)})),Ka=Ti((function(t,n,e){return t+(e?" ":"")+n.toUpperCase()})),Za=Di("toUpperCase");function Va(t,n,e){return t=_a(t),(n=e?i:n)===i?function(t){return nn.test(t)}(t)?function(t){return t.match(Xt)||[]}(t):function(t){return t.match(st)||[]}(t):t.match(n)||[]}var Qa=Yr((function(t,n){try{return Sn(t,i,n)}catch(t){return Zo(t)?t:new bt(t)}})),Ja=Xi((function(t,n){return En(n,(function(n){n=Pu(n),rr(t,n,No(t[n],t))})),t}));function Xa(t){return function(){return t}}var ts=Li(),ns=Li(!0);function es(t){return t}function rs(t){return Tr("function"==typeof t?t:or(t,1))}var is=Yr((function(t,n){return function(e){return Nr(e,t,n)}})),us=Yr((function(t,n){return function(e){return Nr(t,e,n)}}));function os(t,n,e){var r=Ia(n),i=wr(n,r);null!=e||Xo(n)&&(i.length||!r.length)||(e=n,n=t,t=this,i=wr(n,Ia(n)));var u=!(Xo(e)&&"chain"in e&&!e.chain),o=Vo(t);return En(i,(function(e){var r=n[e];t[e]=r,o&&(t.prototype[e]=function(){var n=this.__chain__;if(u||n){var e=t(this.__wrapped__);return(e.__actions__=Ei(this.__actions__)).push({func:r,args:arguments,thisArg:t}),e.__chain__=n,e}return r.apply(t,Tn([this.value()],arguments))})})),t}function as(){}var ss=$i(Dn),cs=$i(Nn),ls=$i(Ln);function fs(t){return _u(t)?Fn(Pu(t)):function(t){return function(n){return br(n,t)}}(t)}var hs=Bi(),ps=Bi(!0);function gs(){return[]}function ds(){return!1}var vs,_s=Mi((function(t,n){return t+n}),0),ys=qi("ceil"),ms=Mi((function(t,n){return t/n}),1),ws=qi("floor"),bs=Mi((function(t,n){return t*n}),1),xs=qi("round"),As=Mi((function(t,n){return t-n}),0);return Ge.after=function(t,n){if("function"!=typeof n)throw new Ct(u);return t=pa(t),function(){if(--t<1)return n.apply(this,arguments)}},Ge.ary=Eo,Ge.assign=ya,Ge.assignIn=ma,Ge.assignInWith=wa,Ge.assignWith=ba,Ge.at=xa,Ge.before=Co,Ge.bind=No,Ge.bindAll=Ja,Ge.bindKey=Ro,Ge.castArray=function(){if(!arguments.length)return[];var t=arguments[0];return Wo(t)?t:[t]},Ge.chain=lo,Ge.chunk=function(t,n,e){n=(e?vu(t,n,e):n===i)?1:ve(pa(n),0);var u=null==t?0:t.length;if(!u||n<1)return[];for(var o=0,a=0,s=r(pn(u/n));o<u;)s[a++]=ti(t,o,o+=n);return s},Ge.compact=function(t){for(var n=-1,e=null==t?0:t.length,r=0,i=[];++n<e;){var u=t[n];u&&(i[r++]=u)}return i},Ge.concat=function(){var t=arguments.length;if(!t)return[];for(var n=r(t-1),e=arguments[0],i=t;i--;)n[i-1]=arguments[i];return Tn(Wo(e)?Ei(e):[e],dr(n,1))},Ge.cond=function(t){var n=null==t?0:t.length,e=uu();return t=n?Dn(t,(function(t){if("function"!=typeof t[1])throw new Ct(u);return[e(t[0]),t[1]]})):[],Yr((function(e){for(var r=-1;++r<n;){var i=t[r];if(Sn(i[0],this,e))return Sn(i[1],this,e)}}))},Ge.conforms=function(t){return function(t){var n=Ia(t);return function(e){return ar(e,t,n)}}(or(t,1))},Ge.constant=Xa,Ge.countBy=po,Ge.create=function(t,n){var e=Me(t);return null==n?e:er(e,n)},Ge.curry=function t(n,e,r){var u=Ki(n,8,i,i,i,i,i,e=r?i:e);return u.placeholder=t.placeholder,u},Ge.curryRight=function t(n,e,r){var u=Ki(n,16,i,i,i,i,i,e=r?i:e);return u.placeholder=t.placeholder,u},Ge.debounce=Io,Ge.defaults=Aa,Ge.defaultsDeep=Sa,Ge.defer=Oo,Ge.delay=Do,Ge.difference=Gu,Ge.differenceBy=Mu,Ge.differenceWith=$u,Ge.drop=function(t,n,e){var r=null==t?0:t.length;return r?ti(t,(n=e||n===i?1:pa(n))<0?0:n,r):[]},Ge.dropRight=function(t,n,e){var r=null==t?0:t.length;return r?ti(t,0,(n=r-(n=e||n===i?1:pa(n)))<0?0:n):[]},Ge.dropRightWhile=function(t,n){return t&&t.length?li(t,uu(n,3),!0,!0):[]},Ge.dropWhile=function(t,n){return t&&t.length?li(t,uu(n,3),!0):[]},Ge.fill=function(t,n,e,r){var u=null==t?0:t.length;return u?(e&&"number"!=typeof e&&vu(t,n,e)&&(e=0,r=u),function(t,n,e,r){var u=t.length;for((e=pa(e))<0&&(e=-e>u?0:u+e),(r=r===i||r>u?u:pa(r))<0&&(r+=u),r=e>r?0:ga(r);e<r;)t[e++]=n;return t}(t,n,e,r)):[]},Ge.filter=function(t,n){return(Wo(t)?Rn:gr)(t,uu(n,3))},Ge.flatMap=function(t,n){return dr(xo(t,n),1)},Ge.flatMapDeep=function(t,n){return dr(xo(t,n),l)},Ge.flatMapDepth=function(t,n,e){return e=e===i?1:pa(e),dr(xo(t,n),e)},Ge.flatten=Wu,Ge.flattenDeep=function(t){return null!=t&&t.length?dr(t,l):[]},Ge.flattenDepth=function(t,n){return null!=t&&t.length?dr(t,n=n===i?1:pa(n)):[]},Ge.flip=function(t){return Ki(t,512)},Ge.flow=ts,Ge.flowRight=ns,Ge.fromPairs=function(t){for(var n=-1,e=null==t?0:t.length,r={};++n<e;){var i=t[n];r[i[0]]=i[1]}return r},Ge.functions=function(t){return null==t?[]:wr(t,Ia(t))},Ge.functionsIn=function(t){return null==t?[]:wr(t,Oa(t))},Ge.groupBy=mo,Ge.initial=function(t){return null!=t&&t.length?ti(t,0,-1):[]},Ge.intersection=qu,Ge.intersectionBy=Hu,Ge.intersectionWith=Yu,Ge.invert=Ca,Ge.invertBy=Na,Ge.invokeMap=wo,Ge.iteratee=rs,Ge.keyBy=bo,Ge.keys=Ia,Ge.keysIn=Oa,Ge.map=xo,Ge.mapKeys=function(t,n){var e={};return n=uu(n,3),yr(t,(function(t,r,i){rr(e,n(t,r,i),t)})),e},Ge.mapValues=function(t,n){var e={};return n=uu(n,3),yr(t,(function(t,r,i){rr(e,r,n(t,r,i))})),e},Ge.matches=function(t){return Ur(or(t,1))},Ge.matchesProperty=function(t,n){return Gr(t,or(n,1))},Ge.memoize=To,Ge.merge=Da,Ge.mergeWith=Ta,Ge.method=is,Ge.methodOf=us,Ge.mixin=os,Ge.negate=jo,Ge.nthArg=function(t){return t=pa(t),Yr((function(n){return $r(n,t)}))},Ge.omit=ja,Ge.omitBy=function(t,n){return La(t,jo(uu(n)))},Ge.once=function(t){return Co(2,t)},Ge.orderBy=function(t,n,e,r){return null==t?[]:(Wo(n)||(n=null==n?[]:[n]),Wo(e=r?i:e)||(e=null==e?[]:[e]),zr(t,n,e))},Ge.over=ss,Ge.overArgs=Po,Ge.overEvery=cs,Ge.overSome=ls,Ge.partial=Lo,Ge.partialRight=Uo,Ge.partition=Ao,Ge.pick=Pa,Ge.pickBy=La,Ge.property=fs,Ge.propertyOf=function(t){return function(n){return null==t?i:br(t,n)}},Ge.pull=Zu,Ge.pullAll=Vu,Ge.pullAllBy=function(t,n,e){return t&&t.length&&n&&n.length?Wr(t,n,uu(e,2)):t},Ge.pullAllWith=function(t,n,e){return t&&t.length&&n&&n.length?Wr(t,n,i,e):t},Ge.pullAt=Qu,Ge.range=hs,Ge.rangeRight=ps,Ge.rearg=Go,Ge.reject=function(t,n){return(Wo(t)?Rn:gr)(t,jo(uu(n,3)))},Ge.remove=function(t,n){var e=[];if(!t||!t.length)return e;var r=-1,i=[],u=t.length;for(n=uu(n,3);++r<u;){var o=t[r];n(o,r,t)&&(e.push(o),i.push(r))}return Fr(t,i),e},Ge.rest=function(t,n){if("function"!=typeof t)throw new Ct(u);return Yr(t,n=n===i?n:pa(n))},Ge.reverse=Ju,Ge.sampleSize=function(t,n,e){return n=(e?vu(t,n,e):n===i)?1:pa(n),(Wo(t)?Ve:Zr)(t,n)},Ge.set=function(t,n,e){return null==t?t:Vr(t,n,e)},Ge.setWith=function(t,n,e,r){return r="function"==typeof r?r:i,null==t?t:Vr(t,n,e,r)},Ge.shuffle=function(t){return(Wo(t)?Qe:Xr)(t)},Ge.slice=function(t,n,e){var r=null==t?0:t.length;return r?(e&&"number"!=typeof e&&vu(t,n,e)?(n=0,e=r):(n=null==n?0:pa(n),e=e===i?r:pa(e)),ti(t,n,e)):[]},Ge.sortBy=So,Ge.sortedUniq=function(t){return t&&t.length?ii(t):[]},Ge.sortedUniqBy=function(t,n){return t&&t.length?ii(t,uu(n,2)):[]},Ge.split=function(t,n,e){return e&&"number"!=typeof e&&vu(t,n,e)&&(n=e=i),(e=e===i?p:e>>>0)?(t=_a(t))&&("string"==typeof n||null!=n&&!ia(n))&&!(n=oi(n))&&ie(t)?yi(fe(t),0,e):t.split(n,e):[]},Ge.spread=function(t,n){if("function"!=typeof t)throw new Ct(u);return n=null==n?0:ve(pa(n),0),Yr((function(e){var r=e[n],i=yi(e,0,n);return r&&Tn(i,r),Sn(t,this,i)}))},Ge.tail=function(t){var n=null==t?0:t.length;return n?ti(t,1,n):[]},Ge.take=function(t,n,e){return t&&t.length?ti(t,0,(n=e||n===i?1:pa(n))<0?0:n):[]},Ge.takeRight=function(t,n,e){var r=null==t?0:t.length;return r?ti(t,(n=r-(n=e||n===i?1:pa(n)))<0?0:n,r):[]},Ge.takeRightWhile=function(t,n){return t&&t.length?li(t,uu(n,3),!1,!0):[]},Ge.takeWhile=function(t,n){return t&&t.length?li(t,uu(n,3)):[]},Ge.tap=function(t,n){return n(t),t},Ge.throttle=function(t,n,e){var r=!0,i=!0;if("function"!=typeof t)throw new Ct(u);return Xo(e)&&(r="leading"in e?!!e.leading:r,i="trailing"in e?!!e.trailing:i),Io(t,n,{leading:r,maxWait:n,trailing:i})},Ge.thru=fo,Ge.toArray=fa,Ge.toPairs=Ua,Ge.toPairsIn=Ga,Ge.toPath=function(t){return Wo(t)?Dn(t,Pu):aa(t)?[t]:Ei(ju(_a(t)))},Ge.toPlainObject=va,Ge.transform=function(t,n,e){var r=Wo(t),i=r||Yo(t)||sa(t);if(n=uu(n,4),null==e){var u=t&&t.constructor;e=i?r?new u:[]:Xo(t)&&Vo(u)?Me(Ft(t)):{}}return(i?En:yr)(t,(function(t,r,i){return n(e,t,r,i)})),e},Ge.unary=function(t){return Eo(t,1)},Ge.union=Xu,Ge.unionBy=to,Ge.unionWith=no,Ge.uniq=function(t){return t&&t.length?ai(t):[]},Ge.uniqBy=function(t,n){return t&&t.length?ai(t,uu(n,2)):[]},Ge.uniqWith=function(t,n){return n="function"==typeof n?n:i,t&&t.length?ai(t,i,n):[]},Ge.unset=function(t,n){return null==t||si(t,n)},Ge.unzip=eo,Ge.unzipWith=ro,Ge.update=function(t,n,e){return null==t?t:ci(t,n,di(e))},Ge.updateWith=function(t,n,e,r){return r="function"==typeof r?r:i,null==t?t:ci(t,n,di(e),r)},Ge.values=Ma,Ge.valuesIn=function(t){return null==t?[]:Qn(t,Oa(t))},Ge.without=io,Ge.words=Va,Ge.wrap=function(t,n){return Lo(di(n),t)},Ge.xor=uo,Ge.xorBy=oo,Ge.xorWith=ao,Ge.zip=so,Ge.zipObject=function(t,n){return pi(t||[],n||[],Xe)},Ge.zipObjectDeep=function(t,n){return pi(t||[],n||[],Vr)},Ge.zipWith=co,Ge.entries=Ua,Ge.entriesIn=Ga,Ge.extend=ma,Ge.extendWith=wa,os(Ge,Ge),Ge.add=_s,Ge.attempt=Qa,Ge.camelCase=$a,Ge.capitalize=za,Ge.ceil=ys,Ge.clamp=function(t,n,e){return e===i&&(e=n,n=i),e!==i&&(e=(e=da(e))==e?e:0),n!==i&&(n=(n=da(n))==n?n:0),ur(da(t),n,e)},Ge.clone=function(t){return or(t,4)},Ge.cloneDeep=function(t){return or(t,5)},Ge.cloneDeepWith=function(t,n){return or(t,5,n="function"==typeof n?n:i)},Ge.cloneWith=function(t,n){return or(t,4,n="function"==typeof n?n:i)},Ge.conformsTo=function(t,n){return null==n||ar(t,n,Ia(n))},Ge.deburr=Ba,Ge.defaultTo=function(t,n){return null==t||t!=t?n:t},Ge.divide=ms,Ge.endsWith=function(t,n,e){t=_a(t),n=oi(n);var r=t.length,u=e=e===i?r:ur(pa(e),0,r);return(e-=n.length)>=0&&t.slice(e,u)==n},Ge.eq=Mo,Ge.escape=function(t){return(t=_a(t))&&K.test(t)?t.replace(H,ee):t},Ge.escapeRegExp=function(t){return(t=_a(t))&&et.test(t)?t.replace(nt,"\\$&"):t},Ge.every=function(t,n,e){var r=Wo(t)?Nn:hr;return e&&vu(t,n,e)&&(n=i),r(t,uu(n,3))},Ge.find=go,Ge.findIndex=zu,Ge.findKey=function(t,n){return Gn(t,uu(n,3),yr)},Ge.findLast=vo,Ge.findLastIndex=Bu,Ge.findLastKey=function(t,n){return Gn(t,uu(n,3),mr)},Ge.floor=ws,Ge.forEach=_o,Ge.forEachRight=yo,Ge.forIn=function(t,n){return null==t?t:vr(t,uu(n,3),Oa)},Ge.forInRight=function(t,n){return null==t?t:_r(t,uu(n,3),Oa)},Ge.forOwn=function(t,n){return t&&yr(t,uu(n,3))},Ge.forOwnRight=function(t,n){return t&&mr(t,uu(n,3))},Ge.get=ka,Ge.gt=$o,Ge.gte=zo,Ge.has=function(t,n){return null!=t&&hu(t,n,kr)},Ge.hasIn=Ea,Ge.head=Fu,Ge.identity=es,Ge.includes=function(t,n,e,r){t=qo(t)?t:Ma(t),e=e&&!r?pa(e):0;var i=t.length;return e<0&&(e=ve(i+e,0)),oa(t)?e<=i&&t.indexOf(n,e)>-1:!!i&&$n(t,n,e)>-1},Ge.indexOf=function(t,n,e){var r=null==t?0:t.length;if(!r)return-1;var i=null==e?0:pa(e);return i<0&&(i=ve(r+i,0)),$n(t,n,i)},Ge.inRange=function(t,n,e){return n=ha(n),e===i?(e=n,n=0):e=ha(e),function(t,n,e){return t>=_e(n,e)&&t<ve(n,e)}(t=da(t),n,e)},Ge.invoke=Ra,Ge.isArguments=Bo,Ge.isArray=Wo,Ge.isArrayBuffer=Fo,Ge.isArrayLike=qo,Ge.isArrayLikeObject=Ho,Ge.isBoolean=function(t){return!0===t||!1===t||ta(t)&&Ar(t)==_},Ge.isBuffer=Yo,Ge.isDate=Ko,Ge.isElement=function(t){return ta(t)&&1===t.nodeType&&!ra(t)},Ge.isEmpty=function(t){if(null==t)return!0;if(qo(t)&&(Wo(t)||"string"==typeof t||"function"==typeof t.splice||Yo(t)||sa(t)||Bo(t)))return!t.length;var n=fu(t);if(n==x||n==C)return!t.size;if(wu(t))return!jr(t).length;for(var e in t)if(Tt.call(t,e))return!1;return!0},Ge.isEqual=function(t,n){return Ir(t,n)},Ge.isEqualWith=function(t,n,e){var r=(e="function"==typeof e?e:i)?e(t,n):i;return r===i?Ir(t,n,i,e):!!r},Ge.isError=Zo,Ge.isFinite=function(t){return"number"==typeof t&&Un(t)},Ge.isFunction=Vo,Ge.isInteger=Qo,Ge.isLength=Jo,Ge.isMap=na,Ge.isMatch=function(t,n){return t===n||Or(t,n,au(n))},Ge.isMatchWith=function(t,n,e){return e="function"==typeof e?e:i,Or(t,n,au(n),e)},Ge.isNaN=function(t){return ea(t)&&t!=+t},Ge.isNative=function(t){if(mu(t))throw new bt("Unsupported core-js use. Try https://npms.io/search?q=ponyfill.");return Dr(t)},Ge.isNil=function(t){return null==t},Ge.isNull=function(t){return null===t},Ge.isNumber=ea,Ge.isObject=Xo,Ge.isObjectLike=ta,Ge.isPlainObject=ra,Ge.isRegExp=ia,Ge.isSafeInteger=function(t){return Qo(t)&&t>=-9007199254740991&&t<=f},Ge.isSet=ua,Ge.isString=oa,Ge.isSymbol=aa,Ge.isTypedArray=sa,Ge.isUndefined=function(t){return t===i},Ge.isWeakMap=function(t){return ta(t)&&fu(t)==I},Ge.isWeakSet=function(t){return ta(t)&&"[object WeakSet]"==Ar(t)},Ge.join=function(t,n){return null==t?"":qn.call(t,n)},Ge.kebabCase=Wa,Ge.last=Ku,Ge.lastIndexOf=function(t,n,e){var r=null==t?0:t.length;if(!r)return-1;var u=r;return e!==i&&(u=(u=pa(e))<0?ve(r+u,0):_e(u,r-1)),n==n?function(t,n,e){for(var r=e+1;r--;)if(t[r]===n)return r;return r}(t,n,u):Mn(t,Bn,u,!0)},Ge.lowerCase=Fa,Ge.lowerFirst=qa,Ge.lt=ca,Ge.lte=la,Ge.max=function(t){return t&&t.length?pr(t,es,Sr):i},Ge.maxBy=function(t,n){return t&&t.length?pr(t,uu(n,2),Sr):i},Ge.mean=function(t){return Wn(t,es)},Ge.meanBy=function(t,n){return Wn(t,uu(n,2))},Ge.min=function(t){return t&&t.length?pr(t,es,Pr):i},Ge.minBy=function(t,n){return t&&t.length?pr(t,uu(n,2),Pr):i},Ge.stubArray=gs,Ge.stubFalse=ds,Ge.stubObject=function(){return{}},Ge.stubString=function(){return""},Ge.stubTrue=function(){return!0},Ge.multiply=bs,Ge.nth=function(t,n){return t&&t.length?$r(t,pa(n)):i},Ge.noConflict=function(){return hn._===this&&(hn._=Gt),this},Ge.noop=as,Ge.now=ko,Ge.pad=function(t,n,e){t=_a(t);var r=(n=pa(n))?le(t):0;if(!n||r>=n)return t;var i=(n-r)/2;return zi(gn(i),e)+t+zi(pn(i),e)},Ge.padEnd=function(t,n,e){t=_a(t);var r=(n=pa(n))?le(t):0;return n&&r<n?t+zi(n-r,e):t},Ge.padStart=function(t,n,e){t=_a(t);var r=(n=pa(n))?le(t):0;return n&&r<n?zi(n-r,e)+t:t},Ge.parseInt=function(t,n,e){return e||null==n?n=0:n&&(n=+n),me(_a(t).replace(rt,""),n||0)},Ge.random=function(t,n,e){if(e&&"boolean"!=typeof e&&vu(t,n,e)&&(n=e=i),e===i&&("boolean"==typeof n?(e=n,n=i):"boolean"==typeof t&&(e=t,t=i)),t===i&&n===i?(t=0,n=1):(t=ha(t),n===i?(n=t,t=0):n=ha(n)),t>n){var r=t;t=n,n=r}if(e||t%1||n%1){var u=we();return _e(t+u*(n-t+sn("1e-"+((u+"").length-1))),n)}return qr(t,n)},Ge.reduce=function(t,n,e){var r=Wo(t)?jn:Hn,i=arguments.length<3;return r(t,uu(n,4),e,i,lr)},Ge.reduceRight=function(t,n,e){var r=Wo(t)?Pn:Hn,i=arguments.length<3;return r(t,uu(n,4),e,i,fr)},Ge.repeat=function(t,n,e){return n=(e?vu(t,n,e):n===i)?1:pa(n),Hr(_a(t),n)},Ge.replace=function(){var t=arguments,n=_a(t[0]);return t.length<3?n:n.replace(t[1],t[2])},Ge.result=function(t,n,e){var r=-1,u=(n=vi(n,t)).length;for(u||(u=1,t=i);++r<u;){var o=null==t?i:t[Pu(n[r])];o===i&&(r=u,o=e),t=Vo(o)?o.call(t):o}return t},Ge.round=xs,Ge.runInContext=t,Ge.sample=function(t){return(Wo(t)?Ze:Kr)(t)},Ge.size=function(t){if(null==t)return 0;if(qo(t))return oa(t)?le(t):t.length;var n=fu(t);return n==x||n==C?t.size:jr(t).length},Ge.snakeCase=Ha,Ge.some=function(t,n,e){var r=Wo(t)?Ln:ni;return e&&vu(t,n,e)&&(n=i),r(t,uu(n,3))},Ge.sortedIndex=function(t,n){return ei(t,n)},Ge.sortedIndexBy=function(t,n,e){return ri(t,n,uu(e,2))},Ge.sortedIndexOf=function(t,n){var e=null==t?0:t.length;if(e){var r=ei(t,n);if(r<e&&Mo(t[r],n))return r}return-1},Ge.sortedLastIndex=function(t,n){return ei(t,n,!0)},Ge.sortedLastIndexBy=function(t,n,e){return ri(t,n,uu(e,2),!0)},Ge.sortedLastIndexOf=function(t,n){if(null!=t&&t.length){var e=ei(t,n,!0)-1;if(Mo(t[e],n))return e}return-1},Ge.startCase=Ya,Ge.startsWith=function(t,n,e){return t=_a(t),e=null==e?0:ur(pa(e),0,t.length),n=oi(n),t.slice(e,e+n.length)==n},Ge.subtract=As,Ge.sum=function(t){return t&&t.length?Yn(t,es):0},Ge.sumBy=function(t,n){return t&&t.length?Yn(t,uu(n,2)):0},Ge.template=function(t,n,e){var r=Ge.templateSettings;e&&vu(t,n,e)&&(n=i),t=_a(t),n=wa({},n,r,Zi);var u,o,a=wa({},n.imports,r.imports,Zi),s=Ia(a),c=Qn(a,s),l=0,f=n.interpolate||mt,h="__p += '",p=kt((n.escape||mt).source+"|"+f.source+"|"+(f===Q?ft:mt).source+"|"+(n.evaluate||mt).source+"|$","g"),g="//# sourceURL="+(Tt.call(n,"sourceURL")?(n.sourceURL+"").replace(/\s/g," "):"lodash.templateSources["+ ++rn+"]")+"\n";t.replace(p,(function(n,e,r,i,a,s){return r||(r=i),h+=t.slice(l,s).replace(wt,re),e&&(u=!0,h+="' +\n__e("+e+") +\n'"),a&&(o=!0,h+="';\n"+a+";\n__p += '"),r&&(h+="' +\n((__t = ("+r+")) == null ? '' : __t) +\n'"),l=s+n.length,n})),h+="';\n";var d=Tt.call(n,"variable")&&n.variable;if(d){if(ct.test(d))throw new bt("Invalid `variable` option passed into `_.template`")}else h="with (obj) {\n"+h+"\n}\n";h=(o?h.replace(B,""):h).replace(W,"$1").replace(F,"$1;"),h="function("+(d||"obj")+") {\n"+(d?"":"obj || (obj = {});\n")+"var __t, __p = ''"+(u?", __e = _.escape":"")+(o?", __j = Array.prototype.join;\nfunction print() { __p += __j.call(arguments, '') }\n":";\n")+h+"return __p\n}";var v=Qa((function(){return xt(s,g+"return "+h).apply(i,c)}));if(v.source=h,Zo(v))throw v;return v},Ge.times=function(t,n){if((t=pa(t))<1||t>f)return[];var e=p,r=_e(t,p);n=uu(n),t-=p;for(var i=Kn(r,n);++e<t;)n(e);return i},Ge.toFinite=ha,Ge.toInteger=pa,Ge.toLength=ga,Ge.toLower=function(t){return _a(t).toLowerCase()},Ge.toNumber=da,Ge.toSafeInteger=function(t){return t?ur(pa(t),-9007199254740991,f):0===t?t:0},Ge.toString=_a,Ge.toUpper=function(t){return _a(t).toUpperCase()},Ge.trim=function(t,n,e){if((t=_a(t))&&(e||n===i))return Zn(t);if(!t||!(n=oi(n)))return t;var r=fe(t),u=fe(n);return yi(r,Xn(r,u),te(r,u)+1).join("")},Ge.trimEnd=function(t,n,e){if((t=_a(t))&&(e||n===i))return t.slice(0,he(t)+1);if(!t||!(n=oi(n)))return t;var r=fe(t);return yi(r,0,te(r,fe(n))+1).join("")},Ge.trimStart=function(t,n,e){if((t=_a(t))&&(e||n===i))return t.replace(rt,"");if(!t||!(n=oi(n)))return t;var r=fe(t);return yi(r,Xn(r,fe(n))).join("")},Ge.truncate=function(t,n){var e=30,r="...";if(Xo(n)){var u="separator"in n?n.separator:u;e="length"in n?pa(n.length):e,r="omission"in n?oi(n.omission):r}var o=(t=_a(t)).length;if(ie(t)){var a=fe(t);o=a.length}if(e>=o)return t;var s=e-le(r);if(s<1)return r;var c=a?yi(a,0,s).join(""):t.slice(0,s);if(u===i)return c+r;if(a&&(s+=c.length-s),ia(u)){if(t.slice(s).search(u)){var l,f=c;for(u.global||(u=kt(u.source,_a(ht.exec(u))+"g")),u.lastIndex=0;l=u.exec(f);)var h=l.index;c=c.slice(0,h===i?s:h)}}else if(t.indexOf(oi(u),s)!=s){var p=c.lastIndexOf(u);p>-1&&(c=c.slice(0,p))}return c+r},Ge.unescape=function(t){return(t=_a(t))&&Y.test(t)?t.replace(q,pe):t},Ge.uniqueId=function(t){var n=++jt;return _a(t)+n},Ge.upperCase=Ka,Ge.upperFirst=Za,Ge.each=_o,Ge.eachRight=yo,Ge.first=Fu,os(Ge,(vs={},yr(Ge,(function(t,n){Tt.call(Ge.prototype,n)||(vs[n]=t)})),vs),{chain:!1}),Ge.VERSION="4.17.21",En(["bind","bindKey","curry","curryRight","partial","partialRight"],(function(t){Ge[t].placeholder=Ge})),En(["drop","take"],(function(t,n){Be.prototype[t]=function(e){e=e===i?1:ve(pa(e),0);var r=this.__filtered__&&!n?new Be(this):this.clone();return r.__filtered__?r.__takeCount__=_e(e,r.__takeCount__):r.__views__.push({size:_e(e,p),type:t+(r.__dir__<0?"Right":"")}),r},Be.prototype[t+"Right"]=function(n){return this.reverse()[t](n).reverse()}})),En(["filter","map","takeWhile"],(function(t,n){var e=n+1,r=1==e||3==e;Be.prototype[t]=function(t){var n=this.clone();return n.__iteratees__.push({iteratee:uu(t,3),type:e}),n.__filtered__=n.__filtered__||r,n}})),En(["head","last"],(function(t,n){var e="take"+(n?"Right":"");Be.prototype[t]=function(){return this[e](1).value()[0]}})),En(["initial","tail"],(function(t,n){var e="drop"+(n?"":"Right");Be.prototype[t]=function(){return this.__filtered__?new Be(this):this[e](1)}})),Be.prototype.compact=function(){return this.filter(es)},Be.prototype.find=function(t){return this.filter(t).head()},Be.prototype.findLast=function(t){return this.reverse().find(t)},Be.prototype.invokeMap=Yr((function(t,n){return"function"==typeof t?new Be(this):this.map((function(e){return Nr(e,t,n)}))})),Be.prototype.reject=function(t){return this.filter(jo(uu(t)))},Be.prototype.slice=function(t,n){t=pa(t);var e=this;return e.__filtered__&&(t>0||n<0)?new Be(e):(t<0?e=e.takeRight(-t):t&&(e=e.drop(t)),n!==i&&(e=(n=pa(n))<0?e.dropRight(-n):e.take(n-t)),e)},Be.prototype.takeRightWhile=function(t){return this.reverse().takeWhile(t).reverse()},Be.prototype.toArray=function(){return this.take(p)},yr(Be.prototype,(function(t,n){var e=/^(?:filter|find|map|reject)|While$/.test(n),r=/^(?:head|last)$/.test(n),u=Ge[r?"take"+("last"==n?"Right":""):n],o=r||/^find/.test(n);u&&(Ge.prototype[n]=function(){var n=this.__wrapped__,a=r?[1]:arguments,s=n instanceof Be,c=a[0],l=s||Wo(n),f=function(t){var n=u.apply(Ge,Tn([t],a));return r&&h?n[0]:n};l&&e&&"function"==typeof c&&1!=c.length&&(s=l=!1);var h=this.__chain__,p=!!this.__actions__.length,g=o&&!h,d=s&&!p;if(!o&&l){n=d?n:new Be(this);var v=t.apply(n,a);return v.__actions__.push({func:fo,args:[f],thisArg:i}),new ze(v,h)}return g&&d?t.apply(this,a):(v=this.thru(f),g?r?v.value()[0]:v.value():v)})})),En(["pop","push","shift","sort","splice","unshift"],(function(t){var n=Nt[t],e=/^(?:push|sort|unshift)$/.test(t)?"tap":"thru",r=/^(?:pop|shift)$/.test(t);Ge.prototype[t]=function(){var t=arguments;if(r&&!this.__chain__){var i=this.value();return n.apply(Wo(i)?i:[],t)}return this[e]((function(e){return n.apply(Wo(e)?e:[],t)}))}})),yr(Be.prototype,(function(t,n){var e=Ge[n];if(e){var r=e.name+"";Tt.call(Re,r)||(Re[r]=[]),Re[r].push({name:n,func:e})}})),Re[Ui(i,2).name]=[{name:"wrapper",func:i}],Be.prototype.clone=function(){var t=new Be(this.__wrapped__);return t.__actions__=Ei(this.__actions__),t.__dir__=this.__dir__,t.__filtered__=this.__filtered__,t.__iteratees__=Ei(this.__iteratees__),t.__takeCount__=this.__takeCount__,t.__views__=Ei(this.__views__),t},Be.prototype.reverse=function(){if(this.__filtered__){var t=new Be(this);t.__dir__=-1,t.__filtered__=!0}else(t=this.clone()).__dir__*=-1;return t},Be.prototype.value=function(){var t=this.__wrapped__.value(),n=this.__dir__,e=Wo(t),r=n<0,i=e?t.length:0,u=function(t,n,e){for(var r=-1,i=e.length;++r<i;){var u=e[r],o=u.size;switch(u.type){case"drop":t+=o;break;case"dropRight":n-=o;break;case"take":n=_e(n,t+o);break;case"takeRight":t=ve(t,n-o)}}return{start:t,end:n}}(0,i,this.__views__),o=u.start,a=u.end,s=a-o,c=r?a:o-1,l=this.__iteratees__,f=l.length,h=0,p=_e(s,this.__takeCount__);if(!e||!r&&i==s&&p==s)return fi(t,this.__actions__);var g=[];t:for(;s--&&h<p;){for(var d=-1,v=t[c+=n];++d<f;){var _=l[d],y=_.iteratee,m=_.type,w=y(v);if(2==m)v=w;else if(!w){if(1==m)continue t;break t}}g[h++]=v}return g},Ge.prototype.at=ho,Ge.prototype.chain=function(){return lo(this)},Ge.prototype.commit=function(){return new ze(this.value(),this.__chain__)},Ge.prototype.next=function(){this.__values__===i&&(this.__values__=fa(this.value()));var t=this.__index__>=this.__values__.length;return{done:t,value:t?i:this.__values__[this.__index__++]}},Ge.prototype.plant=function(t){for(var n,e=this;e instanceof $e;){var r=Uu(e);r.__index__=0,r.__values__=i,n?u.__wrapped__=r:n=r;var u=r;e=e.__wrapped__}return u.__wrapped__=t,n},Ge.prototype.reverse=function(){var t=this.__wrapped__;if(t instanceof Be){var n=t;return this.__actions__.length&&(n=new Be(this)),(n=n.reverse()).__actions__.push({func:fo,args:[Ju],thisArg:i}),new ze(n,this.__chain__)}return this.thru(Ju)},Ge.prototype.toJSON=Ge.prototype.valueOf=Ge.prototype.value=function(){return fi(this.__wrapped__,this.__actions__)},Ge.prototype.first=Ge.prototype.head,Zt&&(Ge.prototype[Zt]=function(){return this}),Ge}();hn._=ge,(r=function(){return ge}.call(n,e,n,t))===i||(t.exports=r)}.call(this)},26734:t=>{"use strict";t.exports="data:image/svg+xml,%3csvg%20xmlns=%27http://www.w3.org/2000/svg%27%20width=%2724%27%20height=%2724%27%20fill=%27%23222%27%3e%3cpath%20d=%27M15.4%2016.6L10.8%2012l4.6-4.6L14%206l-6%206%206%206%201.4-1.4z%27/%3e%3c/svg%3e"},51338:t=>{"use strict";t.exports="data:image/svg+xml,%3csvg%20xmlns=%27http://www.w3.org/2000/svg%27%20width=%2724%27%20height=%2724%27%20fill=%27%23222%27%3e%3cpath%20d=%27M18.4%207.4L17%206l-6%206%206%206%201.4-1.4-4.6-4.6%204.6-4.6m-6%200L11%206l-6%206%206%206%201.4-1.4L7.8%2012l4.6-4.6z%27/%3e%3c/svg%3e"},57818:t=>{"use strict";t.exports="data:image/svg+xml,%3csvg%20xmlns=%27http://www.w3.org/2000/svg%27%20width=%2724%27%20height=%2724%27%20fill=%27%23222%27%3e%3cpath%20d=%27M5.6%207.4L7%206l6%206-6%206-1.4-1.4%204.6-4.6-4.6-4.6m6%200L13%206l6%206-6%206-1.4-1.4%204.6-4.6-4.6-4.6z%27/%3e%3c/svg%3e"},31926:t=>{"use strict";t.exports="data:image/svg+xml,%3csvg%20xmlns=%27http://www.w3.org/2000/svg%27%20width=%2724%27%20height=%2724%27%20fill=%27%23222%27%3e%3cpath%20d=%27M8.6%2016.6l4.6-4.6-4.6-4.6L10%206l6%206-6%206-1.4-1.4z%27/%3e%3c/svg%3e"},76333:(t,n,e)=>{"use strict";e.d(n,{AO:()=>P.N,Az:()=>a.N,B6:()=>f.N,C7:()=>vt.N,EQ:()=>lt.N,K1:()=>Q.N,Qz:()=>T.N,R1:()=>D.N,gb:()=>wt.A,i$:()=>F.N,lT:()=>z.N,mQ:()=>et.A,rE:()=>dt.N,v:()=>ft.N,x1:()=>j.A,yI:()=>Y.A}),e(54064);var r=e(63420),i=e(90116),u=e(50953),o=e(63127),a=e(6840),s=e(10700),c=e(51246),l=e(59594),f=e(3200),h=e(10501),p=e(63961),g=e(34375),d=e(86921),v=e(47611),_=e(10363),y=e(41430),m=e(19858),w=e(68776),b=e(15650),x=e(71246),A=e(46447),S=e(69176),k=e(82936),E=e(14645),C=e(89902),N=e(947),R=e(58589),I=e(18503),O=e(37595),D=e(91680),T=e(49296),j=e(9518),P=e(38868),L=e(23503),U=e(52870),G=e(70563),M=e(66250),$=e(35725),z=e(28245),B=e(35428),W=e(43899),F=e(33828),q=e(84003),H=e(740),Y=e(10833),K=e(1620),Z=e(94305),V=e(27720),Q=e(6936),J=e(44559),X=e(78768),tt=e(46222),nt=e(53278),et=e(48934),rt=e(51375),it=e(28690),ut=e(15224),ot=e(5392),at=e(11285),st=e(22911),ct=e(35384),lt=(e(78460),e(66957),e(26287),e(8012)),ft=e(59567),ht=(e(61338),e(64981)),pt=e(12888),gt=e(41347),dt=e(61217),vt=e(82898),_t=e(86598),yt=e(92019),mt=e(8259),wt=e(47732),bt=(e(23020),e(53429),e(58995),e(89921),e(42892)),xt=e(65842),At=(e(57874),e(75105),e(92471),e(16406),e(2508));r.A,i.N,u.A,o.A,a.N,s.A,c.A,l.A,h.A,p.A,g.A,f.N,d.N,v.A,_.A,y.N,m.N,w.A,b.N,x.A,A.A,S.N,k.N,E.A,C.N,N.A,R.N,I.A,st.N,O.N,D.N,T.N,j.A,P.N,L.N,U.N,G.A,M.N,$.N,z.N,B.A,W.A,F.N,q.N,H.N,Y.A,K.A,Z.N,V.N,Q.N,J.N,X.N,tt.A,at.N,nt.A,et.A,rt.N,it.N,ut.N,ot.N,st.a,ct.N,ht.N,lt.N,pt.N,gt.N,dt.N,vt.N,wt.A,ft.N,_t.N,yt.N,mt.N,Symbol.toStringTag,bt.u,xt.u,At.yw,Symbol.toStringTag}},i={};function u(t){var n=i[t];if(void 0!==n)return n.exports;var e=i[t]={id:t,loaded:!1,exports:{}};return r[t].call(e.exports,e,e.exports,u),e.loaded=!0,e.exports}u.m=r,t=[],u.O=(n,e,r,i)=>{if(!e){var o=1/0;for(l=0;l<t.length;l++){e=t[l][0],r=t[l][1],i=t[l][2];for(var a=!0,s=0;s<e.length;s++)(!1&i||o>=i)&&Object.keys(u.O).every((t=>u.O[t](e[s])))?e.splice(s--,1):(a=!1,i<o&&(o=i));if(a){t.splice(l--,1);var c=r();void 0!==c&&(n=c)}}return n}i=i||0;for(var l=t.length;l>0&&t[l-1][2]>i;l--)t[l]=t[l-1];t[l]=[e,r,i]},u.n=t=>{var n=t&&t.__esModule?()=>t.default:()=>t;return u.d(n,{a:n}),n},u.d=(t,n)=>{for(var e in n)u.o(n,e)&&!u.o(t,e)&&Object.defineProperty(t,e,{enumerable:!0,get:n[e]})},u.f={},u.e=t=>Promise.all(Object.keys(u.f).reduce(((n,e)=>(u.f[e](t,n),n)),[])),u.u=t=>t+"-"+t+".js?v="+{1110:"a5d6e6f59aa058840a1e",5455:"8915a218db5b7bc90f34"}[t],u.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(t){if("object"==typeof window)return window}}(),u.o=(t,n)=>Object.prototype.hasOwnProperty.call(t,n),n={},e="nextcloud:",u.l=(t,r,i,o)=>{if(n[t])n[t].push(r);else{var a,s;if(void 0!==i)for(var c=document.getElementsByTagName("script"),l=0;l<c.length;l++){var f=c[l];if(f.getAttribute("src")==t||f.getAttribute("data-webpack")==e+i){a=f;break}}a||(s=!0,(a=document.createElement("script")).charset="utf-8",a.timeout=120,u.nc&&a.setAttribute("nonce",u.nc),a.setAttribute("data-webpack",e+i),a.src=t),n[t]=[r];var h=(e,r)=>{a.onerror=a.onload=null,clearTimeout(p);var i=n[t];if(delete n[t],a.parentNode&&a.parentNode.removeChild(a),i&&i.forEach((t=>t(r))),e)return e(r)},p=setTimeout(h.bind(null,void 0,{type:"timeout",target:a}),12e4);a.onerror=h.bind(null,a.onerror),a.onload=h.bind(null,a.onload),s&&document.head.appendChild(a)}},u.r=t=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},u.nmd=t=>(t.paths=[],t.children||(t.children=[]),t),u.j=3674,(()=>{var t;u.g.importScripts&&(t=u.g.location+"");var n=u.g.document;if(!t&&n&&(n.currentScript&&(t=n.currentScript.src),!t)){var e=n.getElementsByTagName("script");if(e.length)for(var r=e.length-1;r>-1&&(!t||!/^http(s?):/.test(t));)t=e[r--].src}if(!t)throw new Error("Automatic publicPath is not supported in this browser");t=t.replace(/#.*$/,"").replace(/\?.*$/,"").replace(/\/[^\/]+$/,"/"),u.p=t})(),(()=>{u.b=document.baseURI||self.location.href;var t={3674:0};u.f.j=(n,e)=>{var r=u.o(t,n)?t[n]:void 0;if(0!==r)if(r)e.push(r[2]);else{var i=new Promise(((e,i)=>r=t[n]=[e,i]));e.push(r[2]=i);var o=u.p+u.u(n),a=new Error;u.l(o,(e=>{if(u.o(t,n)&&(0!==(r=t[n])&&(t[n]=void 0),r)){var i=e&&("load"===e.type?"missing":e.type),o=e&&e.target&&e.target.src;a.message="Loading chunk "+n+" failed.\n("+i+": "+o+")",a.name="ChunkLoadError",a.type=i,a.request=o,r[1](a)}}),"chunk-"+n,n)}},u.O.j=n=>0===t[n];var n=(n,e)=>{var r,i,o=e[0],a=e[1],s=e[2],c=0;if(o.some((n=>0!==t[n]))){for(r in a)u.o(a,r)&&(u.m[r]=a[r]);if(s)var l=s(u)}for(n&&n(e);c<o.length;c++)i=o[c],u.o(t,i)&&t[i]&&t[i][0](),t[i]=0;return u.O(l)},e=self.webpackChunknextcloud=self.webpackChunknextcloud||[];e.forEach(n.bind(null,0)),e.push=n.bind(null,e.push.bind(e))})(),u.nc=void 0;var o=u.O(void 0,[4208],(()=>u(1614)));o=u.O(o)})(); +//# sourceMappingURL=settings-vue-settings-admin-sharing.js.map?v=65e52c8015aac2b2a2b4
\ No newline at end of file diff --git a/dist/settings-vue-settings-admin-sharing.js.map b/dist/settings-vue-settings-admin-sharing.js.map index 9d5e7aa4768..572c768bc8f 100644 --- a/dist/settings-vue-settings-admin-sharing.js.map +++ b/dist/settings-vue-settings-admin-sharing.js.map @@ -1 +1 @@ -{"version":3,"file":"settings-vue-settings-admin-sharing.js?v=1bd19a3231a58f9938c0","mappings":";UAAIA,ECAAC,EACAC,6FCEJ,MCHwQ,GDGzPC,EAAAA,EAAAA,IAAgB,CAC3BC,KAAM,2BACNC,WAAY,CACRC,sBAAqBA,EAAAA,IAEzBC,MAAO,CACHC,MAAO,CACHC,KAAMC,OACNC,UAAU,IAGlBC,MAAO,CACH,eAAiBJ,GAA2B,iBAAVA,GAEtCK,KAAIA,KACO,CACHC,kBAAmB,EACnBC,kBAAmB,EACnBC,kBAAmB,EACnBC,iBAAkB,KAG1BC,SAAU,CACNC,SAAAA,GACI,OAAiD,IAAzC,KAAKX,MAAQ,KAAKO,kBAC9B,EACAK,SAAAA,GACI,OAAiD,IAAzC,KAAKZ,MAAQ,KAAKM,kBAC9B,EACAO,SAAAA,GACI,OAAiD,IAAzC,KAAKb,MAAQ,KAAKQ,kBAC9B,EACAM,QAAAA,GACI,OAAgD,IAAxC,KAAKd,MAAQ,KAAKS,iBAC9B,GAEJM,QAAS,CACLC,EAAGC,EAAAA,GAKHC,MAAAA,CAAOC,GAEH,KAAKC,MAAM,eAAgB,KAAKpB,MAAQmB,EAC5C,4IErCJE,EAAU,CAAC,EAEfA,EAAQC,kBAAoB,IAC5BD,EAAQE,cAAgB,IAElBF,EAAQG,OAAS,SAAc,KAAM,QAE3CH,EAAQI,OAAS,IACjBJ,EAAQK,mBAAqB,IAEhB,IAAI,IAASL,GAKJ,KAAW,IAAQM,QAAS,IAAQA,sBCP1D,SAXgB,OACd,GHTW,WAAkB,IAAIC,EAAIC,KAAKC,EAAGF,EAAIG,MAAMD,GAAgC,OAAtBF,EAAIG,MAAMC,YAAmBF,EAAG,WAAW,CAACG,YAAY,sBAAsB,CAACH,EAAG,wBAAwB,CAACI,MAAM,CAAC,QAAUN,EAAIjB,WAAWwB,GAAG,CAAC,iBAAiB,SAASC,GAAQ,OAAOR,EAAIV,OAAOU,EAAIrB,kBAAkB,IAAI,CAACqB,EAAIS,GAAG,SAAST,EAAIU,GAAGV,EAAIZ,EAAE,WAAY,WAAW,UAAUY,EAAIS,GAAG,KAAKP,EAAG,wBAAwB,CAACI,MAAM,CAAC,QAAUN,EAAIhB,WAAWuB,GAAG,CAAC,iBAAiB,SAASC,GAAQ,OAAOR,EAAIV,OAAOU,EAAItB,kBAAkB,IAAI,CAACsB,EAAIS,GAAG,SAAST,EAAIU,GAAGV,EAAIZ,EAAE,WAAY,WAAW,UAAUY,EAAIS,GAAG,KAAKP,EAAG,wBAAwB,CAACI,MAAM,CAAC,QAAUN,EAAIf,WAAWsB,GAAG,CAAC,iBAAiB,SAASC,GAAQ,OAAOR,EAAIV,OAAOU,EAAIpB,kBAAkB,IAAI,CAACoB,EAAIS,GAAG,SAAST,EAAIU,GAAGV,EAAIZ,EAAE,WAAY,WAAW,UAAUY,EAAIS,GAAG,KAAKP,EAAG,wBAAwB,CAACI,MAAM,CAAC,QAAUN,EAAId,UAAUqB,GAAG,CAAC,iBAAiB,SAASC,GAAQ,OAAOR,EAAIV,OAAOU,EAAInB,iBAAiB,IAAI,CAACmB,EAAIS,GAAG,SAAST,EAAIU,GAAGV,EAAIZ,EAAE,WAAY,YAAY,WAAW,EAC1+B,GACsB,IGUpB,EACA,KACA,WACA,MAI8B,iCCZhC,SAAerB,EAAAA,EAAAA,IAAgB,CAC3BC,KAAM,2BACNC,WAAY,CACRC,sBAAqB,KACrByC,sBAAqB,KACrBC,WAAU,KACVC,YAAW,IACXC,yBAAwBA,GAE5BrC,KAAIA,KACO,CACHsC,cAAcC,EAAAA,EAAAA,GAAU,WAAY,qBAG5ClC,SAAU,CACNmC,QAAAA,GAEI,OADAC,EAAQC,KAAK,aACN,IAAIC,MAAM,KAAKL,aAAc,CAChCM,IAAGA,CAACC,EAAQC,IACDD,EAAOC,GAElBC,GAAAA,CAAIF,EAAQC,EAAUE,GAClB,MAAMC,EAAU,YAAAC,QAAeC,EAAAA,EAAAA,WAAUL,IACnCnD,EAA4B,kBAAbqD,EAA0BA,EAAW,MAAQ,KAA6B,iBAAbA,EAAwBA,EAAWI,KAAKC,UAAUL,GAGpI,OAFAM,OAAOC,IAAIC,UAAUC,SAAS,OAAQR,EAAYtD,GAClDkD,EAAOC,GAAYE,GACZ,CACX,GAER,EACAU,6BAA8B,CAC1Bd,GAAAA,GACI,MAA8D,iBAAhD,KAAKN,aAAaqB,yBACpC,EACAZ,GAAAA,CAAIpD,GACIA,EACA,KAAK2C,aAAaqB,0BAA4B,GAG9C,KAAKC,oBAEb,IAGRlD,QAAS,CACLC,EAAC,KACDiD,oBAAoBC,EAAAA,EAAAA,WAAS,SAAUlE,GACnC,MAAMqB,EAAU,CACZ8C,OAAAA,GACQnE,GACAoE,EAAAA,EAAAA,KAAYpD,EAAAA,EAAAA,IAAE,WAAY,6BAG1BoD,EAAAA,EAAAA,KAAYpD,EAAAA,EAAAA,IAAE,WAAY,2BAElC,EACAqD,KAAAA,IACIC,EAAAA,EAAAA,KAAUtD,EAAAA,EAAAA,IAAE,WAAY,iCAC5B,GAEChB,EAID2D,OAAOC,IAAIC,UAAUC,SAAS,OAAQ,sCAAuC9D,EAAOqB,GAHpFsC,OAAOC,IAAIC,UAAUU,UAAU,OAAQ,sCAAuClD,GAKlF,KAAKsB,aAAaqB,0BAA4BhE,CAClD,GAAG,KACHwE,uBAAuBN,EAAAA,EAAAA,WAAS,SAAUlE,GACtC2D,OAAOC,IAAIC,UAAUC,SAAS,OAAQ,gBAAiB9D,GACvD,KAAK6C,SAAS4B,cAAgBzE,CAClC,GAAG,QC9E6P,mBCWpQ,EAAU,CAAC,EAEf,EAAQsB,kBAAoB,IAC5B,EAAQC,cAAgB,IAElB,EAAQC,OAAS,SAAc,KAAM,QAE3C,EAAQC,OAAS,IACjB,EAAQC,mBAAqB,IAEhB,IAAI,IAAS,GAKJ,KAAW,IAAQC,QAAS,IAAQA,OCP1D,SAXgB,OACd,GHTW,WAAkB,IAAIC,EAAIC,KAAKC,EAAGF,EAAIG,MAAMD,GAAgC,OAAtBF,EAAIG,MAAMC,YAAmBF,EAAG,OAAO,CAACG,YAAY,WAAW,CAACH,EAAG,wBAAwB,CAACI,MAAM,CAAC,gBAAgB,2HAA2H,KAAO,SAAS,QAAUN,EAAIiB,SAAS6B,SAASvC,GAAG,CAAC,iBAAiB,SAASC,GAAQ,OAAOR,EAAI+C,KAAK/C,EAAIiB,SAAU,UAAWT,EAAO,IAAI,CAACR,EAAIS,GAAG,SAAST,EAAIU,GAAGV,EAAIZ,EAAE,WAAY,oCAAoC,UAAUY,EAAIS,GAAG,KAAKP,EAAG,MAAM,CAAC8C,WAAW,CAAC,CAAChF,KAAK,OAAOiF,QAAQ,SAAS7E,MAAO4B,EAAIiB,SAAS6B,QAASI,WAAW,qBAAqB7C,YAAY,uBAAuBC,MAAM,CAAC,GAAK,kCAAkC,CAACJ,EAAG,wBAAwB,CAACI,MAAM,CAAC,QAAUN,EAAIiB,SAASkC,gBAAgB5C,GAAG,CAAC,iBAAiB,SAASC,GAAQ,OAAOR,EAAI+C,KAAK/C,EAAIiB,SAAU,iBAAkBT,EAAO,IAAI,CAACR,EAAIS,GAAG,WAAWT,EAAIU,GAAGV,EAAIZ,EAAE,WAAY,oBAAoB,YAAYY,EAAIS,GAAG,KAAKP,EAAG,wBAAwB,CAACI,MAAM,CAAC,QAAUN,EAAIiB,SAASmC,mBAAmB7C,GAAG,CAAC,iBAAiB,SAASC,GAAQ,OAAOR,EAAI+C,KAAK/C,EAAIiB,SAAU,oBAAqBT,EAAO,IAAI,CAACR,EAAIS,GAAG,WAAWT,EAAIU,GAAGV,EAAIZ,EAAE,WAAY,8BAA8B,YAAYY,EAAIS,GAAG,KAAKP,EAAG,wBAAwB,CAACI,MAAM,CAAC,QAAUN,EAAIiB,SAASoC,2BAA2B9C,GAAG,CAAC,iBAAiB,SAASC,GAAQ,OAAOR,EAAI+C,KAAK/C,EAAIiB,SAAU,4BAA6BT,EAAO,IAAI,CAACR,EAAIS,GAAG,WAAWT,EAAIU,GAAGV,EAAIZ,EAAE,WAAY,4DAA4D,YAAYY,EAAIS,GAAG,KAAKP,EAAG,MAAM,CAAC8C,WAAW,CAAC,CAAChF,KAAK,OAAOiF,QAAQ,SAAS7E,MAAO4B,EAAIiB,SAASoC,0BAA2BH,WAAW,uCAAuC7C,YAAY,wCAAwCC,MAAM,CAAC,GAAK,yCAAyC,CAACJ,EAAG,QAAQ,CAACI,MAAM,CAAC,IAAM,wDAAwD,CAACN,EAAIS,GAAGT,EAAIU,GAAGV,EAAIZ,EAAE,WAAY,kEAAkEY,EAAIS,GAAG,KAAKP,EAAG,wBAAwB,CAACoD,YAAY,CAAC,MAAQ,QAAQhD,MAAM,CAAC,GAAK,sDAAsD,MAAQN,EAAIZ,EAAE,WAAY,+DAA+DmE,MAAM,CAACnF,MAAO4B,EAAIiB,SAASuC,0CAA2CC,SAAS,SAAUC,GAAM1D,EAAI+C,KAAK/C,EAAIiB,SAAU,4CAA6CyC,EAAI,EAAER,WAAW,yDAAyD,IAAI,GAAGlD,EAAIS,GAAG,KAAKP,EAAG,MAAM,CAAC8C,WAAW,CAAC,CAAChF,KAAK,OAAOiF,QAAQ,SAAS7E,MAAO4B,EAAIiB,SAAS6B,QAASI,WAAW,qBAAqB7C,YAAY,mBAAmBC,MAAM,CAAC,GAAK,yBAAyB,CAACJ,EAAG,wBAAwB,CAACI,MAAM,CAAC,KAAO,SAAS,gBAAgB,mCAAmC,QAAUN,EAAIiB,SAAS0C,YAAYpD,GAAG,CAAC,iBAAiB,SAASC,GAAQ,OAAOR,EAAI+C,KAAK/C,EAAIiB,SAAU,aAAcT,EAAO,IAAI,CAACR,EAAIS,GAAG,WAAWT,EAAIU,GAAGV,EAAIZ,EAAE,WAAY,6CAA6C,YAAYY,EAAIS,GAAG,KAAKP,EAAG,WAAW,CAAC8C,WAAW,CAAC,CAAChF,KAAK,OAAOiF,QAAQ,SAAS7E,MAAO4B,EAAIiB,SAAS0C,WAAYT,WAAW,wBAAwB7C,YAAY,uBAAuBC,MAAM,CAAC,GAAK,qCAAqC,CAACJ,EAAG,wBAAwB,CAACI,MAAM,CAAC,QAAUN,EAAIiB,SAAS2C,mBAAmBrD,GAAG,CAAC,iBAAiB,SAASC,GAAQ,OAAOR,EAAI+C,KAAK/C,EAAIiB,SAAU,oBAAqBT,EAAO,IAAI,CAACR,EAAIS,GAAG,aAAaT,EAAIU,GAAGV,EAAIZ,EAAE,WAAY,yBAAyB,cAAcY,EAAIS,GAAG,KAAKP,EAAG,wBAAwB,CAACI,MAAM,CAAC,QAAUN,EAAIiB,SAAS4C,6BAA6BtD,GAAG,CAAC,iBAAiB,SAASC,GAAQ,OAAOR,EAAI+C,KAAK/C,EAAIiB,SAAU,8BAA+BT,EAAO,IAAI,CAACR,EAAIS,GAAG,aAAaT,EAAIU,GAAGV,EAAIZ,EAAE,WAAY,8BAA8B,cAAcY,EAAIS,GAAG,KAAKP,EAAG,wBAAwB,CAACI,MAAM,CAAC,QAAUN,EAAIiB,SAAS6C,qBAAqB,UAAY9D,EAAIiB,SAAS4C,6BAA6BtD,GAAG,CAAC,iBAAiB,SAASC,GAAQ,OAAOR,EAAI+C,KAAK/C,EAAIiB,SAAU,uBAAwBT,EAAO,IAAI,CAACR,EAAIS,GAAG,aAAaT,EAAIU,GAAGV,EAAIZ,EAAE,WAAY,gCAAgC,cAAcY,EAAIS,GAAG,KAAMT,EAAIiB,SAAS8C,qCAAsC7D,EAAG,QAAQ,CAACG,YAAY,yCAAyC,CAACH,EAAG,OAAO,CAACF,EAAIS,GAAGT,EAAIU,GAAGV,EAAIZ,EAAE,WAAY,iDAAiDY,EAAIS,GAAG,KAAKP,EAAG,wBAAwB,CAACoD,YAAY,CAAC,MAAQ,QAAQhD,MAAM,CAAC,UAAYN,EAAIiB,SAAS6C,uBAAyB9D,EAAIiB,SAAS4C,6BAA6BN,MAAM,CAACnF,MAAO4B,EAAIiB,SAAS+C,uBAAwBP,SAAS,SAAUC,GAAM1D,EAAI+C,KAAK/C,EAAIiB,SAAU,yBAA0ByC,EAAI,EAAER,WAAW,sCAAsC,GAAGlD,EAAIiE,KAAKjE,EAAIS,GAAG,KAAKP,EAAG,QAAQ,CAACG,YAAY,yCAAyC,CAACH,EAAG,OAAO,CAACF,EAAIS,GAAGT,EAAIU,GAAGV,EAAIZ,EAAE,WAAY,gDAAgDY,EAAIS,GAAG,KAAKP,EAAG,wBAAwB,CAACoD,YAAY,CAAC,MAAQ,QAAQhD,MAAM,CAAC,MAAQN,EAAIZ,EAAE,WAAY,6CAA6CmE,MAAM,CAACnF,MAAO4B,EAAIiB,SAASiD,wBAAyBT,SAAS,SAAUC,GAAM1D,EAAI+C,KAAK/C,EAAIiB,SAAU,0BAA2ByC,EAAI,EAAER,WAAW,uCAAuC,IAAI,GAAGlD,EAAIS,GAAG,KAAKP,EAAG,QAAQ,CAACF,EAAIS,GAAGT,EAAIU,GAAGV,EAAIZ,EAAE,WAAY,qCAAqCY,EAAIS,GAAG,KAAKP,EAAG,MAAM,CAACG,YAAY,wBAAwB,CAACH,EAAG,wBAAwB,CAACI,MAAM,CAAC,QAAUN,EAAIiB,SAAS4B,cAAc,KAAO,gBAAgB,MAAQ,KAAK,KAAO,SAAStC,GAAG,CAAC,iBAAiB,CAAC,SAASC,GAAQ,OAAOR,EAAI+C,KAAK/C,EAAIiB,SAAU,gBAAiBT,EAAO,EAAER,EAAI4C,yBAAyB,CAAC5C,EAAIS,GAAG,aAAaT,EAAIU,GAAGV,EAAIZ,EAAE,WAAY,yCAAyC,cAAcY,EAAIS,GAAG,KAAKP,EAAG,wBAAwB,CAACI,MAAM,CAAC,QAAUN,EAAIiB,SAAS4B,cAAc,KAAO,gBAAgB,MAAQ,MAAM,KAAO,SAAStC,GAAG,CAAC,iBAAiB,CAAC,SAASC,GAAQ,OAAOR,EAAI+C,KAAK/C,EAAIiB,SAAU,gBAAiBT,EAAO,EAAER,EAAI4C,yBAAyB,CAAC5C,EAAIS,GAAG,aAAaT,EAAIU,GAAGV,EAAIZ,EAAE,WAAY,qCAAqC,cAAcY,EAAIS,GAAG,KAAKP,EAAG,wBAAwB,CAACI,MAAM,CAAC,QAAUN,EAAIiB,SAAS4B,cAAc,KAAO,gBAAgB,MAAQ,QAAQ,KAAO,SAAStC,GAAG,CAAC,iBAAiB,CAAC,SAASC,GAAQ,OAAOR,EAAI+C,KAAK/C,EAAIiB,SAAU,gBAAiBT,EAAO,EAAER,EAAI4C,yBAAyB,CAAC5C,EAAIS,GAAG,aAAaT,EAAIU,GAAGV,EAAIZ,EAAE,WAAY,iCAAiC,cAAcY,EAAIS,GAAG,KAAKP,EAAG,MAAM,CAAC8C,WAAW,CAAC,CAAChF,KAAK,OAAOiF,QAAQ,SAAS7E,MAAsC,OAA/B4B,EAAIiB,SAAS4B,cAAwBK,WAAW,oCAAoC7C,YAAY,yCAAyC,CAACH,EAAG,wBAAwB,CAACoD,YAAY,CAAC,MAAQ,QAAQhD,MAAM,CAAC,GAAK,mCAAmC,mBAAmB,wCAAwC,MAAuC,UAA/BN,EAAIiB,SAAS4B,cAA4B7C,EAAIZ,EAAE,WAAY,2BAA6BY,EAAIZ,EAAE,WAAY,gCAAgC,SAA0C,OAA/BY,EAAIiB,SAAS4B,eAAwBU,MAAM,CAACnF,MAAO4B,EAAIiB,SAASkD,kBAAmBV,SAAS,SAAUC,GAAM1D,EAAI+C,KAAK/C,EAAIiB,SAAU,oBAAqByC,EAAI,EAAER,WAAW,gCAAgClD,EAAIS,GAAG,KAAKP,EAAG,KAAK,CAACI,MAAM,CAAC,GAAK,0CAA0C,CAACN,EAAIS,GAAGT,EAAIU,GAAGV,EAAIZ,EAAE,WAAY,2FAA2F,IAAI,GAAGY,EAAIS,GAAG,KAAKP,EAAG,wBAAwB,CAACI,MAAM,CAAC,KAAO,SAAS,gBAAgB,kCAAkC,QAAUN,EAAIiB,SAASmD,2BAA2B7D,GAAG,CAAC,iBAAiB,SAASC,GAAQ,OAAOR,EAAI+C,KAAK/C,EAAIiB,SAAU,4BAA6BT,EAAO,IAAI,CAACR,EAAIS,GAAG,WAAWT,EAAIU,GAAGV,EAAIZ,EAAE,WAAY,2CAA2C,YAAYY,EAAIS,GAAG,KAAKP,EAAG,WAAW,CAAC8C,WAAW,CAAC,CAAChF,KAAK,OAAOiF,QAAQ,SAAS7E,MAAO4B,EAAIiB,SAASmD,0BAA2BlB,WAAW,uCAAuC7C,YAAY,uBAAuBC,MAAM,CAAC,GAAK,oCAAoC,CAACJ,EAAG,wBAAwB,CAACI,MAAM,CAAC,QAAUN,EAAIiB,SAASoD,2BAA2B9D,GAAG,CAAC,iBAAiB,SAASC,GAAQ,OAAOR,EAAI+C,KAAK/C,EAAIiB,SAAU,4BAA6BT,EAAO,IAAI,CAACR,EAAIS,GAAG,aAAaT,EAAIU,GAAGV,EAAIZ,EAAE,WAAY,4BAA4B,cAAcY,EAAIS,GAAG,KAAKP,EAAG,cAAc,CAACG,YAAY,iBAAiBC,MAAM,CAAC,KAAO,SAAS,MAAQN,EAAIZ,EAAE,WAAY,iDAAiD,YAAcY,EAAIZ,EAAE,WAAY,8BAA8B,MAAQY,EAAIiB,SAASqD,0BAA0B/D,GAAG,CAAC,eAAe,SAASC,GAAQ,OAAOR,EAAI+C,KAAK/C,EAAIiB,SAAU,2BAA4BT,EAAO,MAAM,GAAGR,EAAIS,GAAG,KAAKP,EAAG,wBAAwB,CAACI,MAAM,CAAC,KAAO,SAAS,gBAAgB,yCAAyC,QAAUN,EAAIiB,SAASsD,yBAAyBhE,GAAG,CAAC,iBAAiB,SAASC,GAAQ,OAAOR,EAAI+C,KAAK/C,EAAIiB,SAAU,0BAA2BT,EAAO,IAAI,CAACR,EAAIS,GAAG,WAAWT,EAAIU,GAAGV,EAAIZ,EAAE,WAAY,4DAA4D,YAAYY,EAAIS,GAAG,KAAKP,EAAG,WAAW,CAAC8C,WAAW,CAAC,CAAChF,KAAK,OAAOiF,QAAQ,SAAS7E,MAAO4B,EAAIiB,SAASsD,wBAAyBrB,WAAW,qCAAqC7C,YAAY,uBAAuBC,MAAM,CAAC,GAAK,2CAA2C,CAACJ,EAAG,wBAAwB,CAACI,MAAM,CAAC,QAAUN,EAAIiB,SAASuD,yBAAyBjE,GAAG,CAAC,iBAAiB,SAASC,GAAQ,OAAOR,EAAI+C,KAAK/C,EAAIiB,SAAU,0BAA2BT,EAAO,IAAI,CAACR,EAAIS,GAAG,aAAaT,EAAIU,GAAGV,EAAIZ,EAAE,WAAY,8CAA8C,cAAcY,EAAIS,GAAG,KAAKP,EAAG,cAAc,CAACG,YAAY,iBAAiBC,MAAM,CAAC,KAAO,SAAS,MAAQN,EAAIZ,EAAE,WAAY,oDAAoD,YAAcY,EAAIZ,EAAE,WAAY,qCAAqC,MAAQY,EAAIiB,SAASwD,wBAAwBlE,GAAG,CAAC,eAAe,SAASC,GAAQ,OAAOR,EAAI+C,KAAK/C,EAAIiB,SAAU,yBAA0BT,EAAO,MAAM,GAAGR,EAAIS,GAAG,KAAKP,EAAG,wBAAwB,CAACI,MAAM,CAAC,KAAO,SAAS,gBAAgB,sCAAsC,QAAUN,EAAIiB,SAASyD,kBAAkB,UAAY1E,EAAIiB,SAAS0C,YAAYpD,GAAG,CAAC,iBAAiB,SAASC,GAAQ,OAAOR,EAAI+C,KAAK/C,EAAIiB,SAAU,oBAAqBT,EAAO,IAAI,CAACR,EAAIS,GAAG,WAAWT,EAAIU,GAAGV,EAAIZ,EAAE,WAAY,4DAA4D,YAAYY,EAAIS,GAAG,KAAKP,EAAG,WAAW,CAAC8C,WAAW,CAAC,CAAChF,KAAK,OAAOiF,QAAQ,SAAS7E,MAAO4B,EAAIiB,SAAS0C,YAAc3D,EAAIiB,SAASyD,kBAAmBxB,WAAW,sDAAsD7C,YAAY,uBAAuBC,MAAM,CAAC,GAAK,wCAAwC,CAACJ,EAAG,wBAAwB,CAACI,MAAM,CAAC,QAAUN,EAAIiB,SAAS0D,mBAAmBpE,GAAG,CAAC,iBAAiB,SAASC,GAAQ,OAAOR,EAAI+C,KAAK/C,EAAIiB,SAAU,oBAAqBT,EAAO,IAAI,CAACR,EAAIS,GAAG,aAAaT,EAAIU,GAAGV,EAAIZ,EAAE,WAAY,8CAA8C,cAAcY,EAAIS,GAAG,KAAKP,EAAG,cAAc,CAACG,YAAY,iBAAiBC,MAAM,CAAC,KAAO,SAAS,MAAQN,EAAIZ,EAAE,WAAY,6CAA6C,YAAcY,EAAIZ,EAAE,WAAY,8BAA8B,MAAQY,EAAIiB,SAAS2D,kBAAkBrE,GAAG,CAAC,eAAe,SAASC,GAAQ,OAAOR,EAAI+C,KAAK/C,EAAIiB,SAAU,mBAAoBT,EAAO,MAAM,IAAI,GAAGR,EAAIS,GAAG,KAAKP,EAAG,MAAM,CAAC8C,WAAW,CAAC,CAAChF,KAAK,OAAOiF,QAAQ,SAAS7E,MAAO4B,EAAIiB,SAAS6B,QAASI,WAAW,qBAAqB7C,YAAY,mBAAmBC,MAAM,CAAC,GAAK,qCAAqC,CAACJ,EAAG,KAAK,CAACF,EAAIS,GAAGT,EAAIU,GAAGV,EAAIZ,EAAE,WAAY,oCAAoCY,EAAIS,GAAG,KAAKP,EAAG,wBAAwB,CAACI,MAAM,CAAC,KAAO,SAAS,gBAAgB,4CAA4C,QAAUN,EAAIiB,SAAS4D,iCAAiCtE,GAAG,CAAC,iBAAiB,SAASC,GAAQ,OAAOR,EAAI+C,KAAK/C,EAAIiB,SAAU,kCAAmCT,EAAO,IAAI,CAACR,EAAIS,GAAG,WAAWT,EAAIU,GAAGV,EAAIZ,EAAE,WAAY,8FAA8F,YAAYY,EAAIS,GAAG,KAAKP,EAAG,WAAW,CAAC8C,WAAW,CAAC,CAAChF,KAAK,OAAOiF,QAAQ,SAAS7E,MAAO4B,EAAIiB,SAAS4D,gCAAiC3B,WAAW,6CAA6C7C,YAAY,uBAAuBC,MAAM,CAAC,GAAK,8CAA8C,CAACJ,EAAG,KAAK,CAACF,EAAIS,GAAG,aAAaT,EAAIU,GAAGV,EAAIZ,EAAE,WAAY,4HAA4H,cAAcY,EAAIS,GAAG,KAAKP,EAAG,wBAAwB,CAACI,MAAM,CAAC,QAAUN,EAAIiB,SAAS6D,gCAAgCvE,GAAG,CAAC,iBAAiB,SAASC,GAAQ,OAAOR,EAAI+C,KAAK/C,EAAIiB,SAAU,iCAAkCT,EAAO,IAAI,CAACR,EAAIS,GAAG,aAAaT,EAAIU,GAAGV,EAAIZ,EAAE,WAAY,6HAA6H,cAAcY,EAAIS,GAAG,KAAKP,EAAG,wBAAwB,CAACI,MAAM,CAAC,QAAUN,EAAIiB,SAAS8D,gCAAgCxE,GAAG,CAAC,iBAAiB,SAASC,GAAQ,OAAOR,EAAI+C,KAAK/C,EAAIiB,SAAU,iCAAkCT,EAAO,IAAI,CAACR,EAAIS,GAAG,aAAaT,EAAIU,GAAGV,EAAIZ,EAAE,WAAY,6EAA6E,eAAe,GAAGY,EAAIS,GAAG,KAAKP,EAAG,wBAAwB,CAACI,MAAM,CAAC,KAAO,SAAS,QAAUN,EAAIiB,SAAS+D,kCAAkCzE,GAAG,CAAC,iBAAiB,SAASC,GAAQ,OAAOR,EAAI+C,KAAK/C,EAAIiB,SAAU,mCAAoCT,EAAO,IAAI,CAACR,EAAIS,GAAG,WAAWT,EAAIU,GAAGV,EAAIZ,EAAE,WAAY,qIAAqI,YAAYY,EAAIS,GAAG,KAAKP,EAAG,wBAAwB,CAACI,MAAM,CAAC,KAAO,SAAS,QAAUN,EAAImC,8BAA8B5B,GAAG,CAAC,iBAAiB,SAASC,GAAQR,EAAImC,6BAA6B3B,CAAM,IAAI,CAACR,EAAIS,GAAG,WAAWT,EAAIU,GAAGV,EAAIZ,EAAE,WAAY,kGAAkG,YAAYY,EAAIS,GAAG,KAAwD,iBAA3CT,EAAIiB,SAASmB,0BAAwClC,EAAG,MAAM,CAACG,YAAY,uBAAuBC,MAAM,CAAC,mBAAmB,qDAAqD,CAACJ,EAAG,aAAa,CAACG,YAAY,iBAAiBC,MAAM,CAAC,MAAQN,EAAIZ,EAAE,WAAY,mBAAmB,mBAAmB,mDAAmD,MAAQY,EAAIiB,SAASmB,2BAA2B7B,GAAG,CAAC,eAAeP,EAAIqC,sBAAsBrC,EAAIS,GAAG,KAAKP,EAAG,KAAK,CAACG,YAAY,iBAAiBC,MAAM,CAAC,GAAK,qDAAqD,CAACN,EAAIS,GAAG,aAAaT,EAAIU,GAAGV,EAAIZ,EAAE,WAAY,yFAAyF,eAAe,GAAGY,EAAIiE,MAAM,GAAGjE,EAAIS,GAAG,KAAKP,EAAG,MAAM,CAACG,YAAY,mBAAmBC,MAAM,CAAC,GAAK,yCAAyC,CAACJ,EAAG,KAAK,CAACF,EAAIS,GAAGT,EAAIU,GAAGV,EAAIZ,EAAE,WAAY,iCAAiCY,EAAIS,GAAG,KAAKP,EAAG,2BAA2B,CAACI,MAAM,CAAC,MAAQN,EAAIiB,SAASgE,oBAAoB1E,GAAG,CAAC,eAAe,SAASC,GAAQ,OAAOR,EAAI+C,KAAK/C,EAAIiB,SAAU,qBAAsBT,EAAO,MAAM,IAAI,EAC9yd,GACsB,IGUpB,EACA,KACA,WACA,MAI8B,QCnBoO,GCKrPzC,EAAAA,EAAAA,IAAgB,CAC3BC,KAAM,uBACNC,WAAY,CACRiH,yBAAwB,EACxBC,WAAU,KACVC,kBAAiBA,EAAAA,IAErB3G,KAAIA,KACO,CACH4G,mBAAmBrE,EAAAA,EAAAA,GAAU,WAAY,uBAAwB,IACjEsE,mBAAmBtE,EAAAA,EAAAA,GAAU,WAAY,qBAAqB,KAGtE7B,QAAS,CACLC,EAACA,EAAAA,MCDT,GAXgB,OACd,GDRW,WAAkB,IAAIY,EAAIC,KAAKC,EAAGF,EAAIG,MAAMD,GAAgC,OAAtBF,EAAIG,MAAMC,YAAmBF,EAAG,oBAAoB,CAACI,MAAM,CAAC,mCAAmC,GAAG,eAAc,EAAK,UAAUN,EAAIqF,kBAAkB,KAAOrF,EAAIZ,EAAE,WAAY,WAAW,YAAcY,EAAIZ,EAAE,WAAY,yGAAyG,CAAGY,EAAIsF,kBAA+JpF,EAAG,4BAA/IA,EAAG,aAAa,CAACI,MAAM,CAAC,KAAO,YAAY,CAACN,EAAIS,GAAG,SAAST,EAAIU,GAAGV,EAAIZ,EAAE,WAAY,6CAA6C,WAA0C,EAC3kB,GACsB,ICSpB,EACA,KACA,KACA,MAI8B,QCKhC,IAAmBmG,EAAAA,GAAI,CACnBvH,KAAM,8BACNwH,GAAI,8BACJC,OAASC,GAAMA,EAAEC,uFCvBjBC,QAA0B,GAA4B,KAE1DA,EAAwBC,KAAK,CAACC,EAAOC,GAAI,6nBAA8nB,GAAG,CAAC,QAAU,EAAE,QAAU,CAAC,yEAAyE,MAAQ,GAAG,SAAW,wQAAwQ,eAAiB,CAAC,yzBAAyzB,WAAa,MAEj4D,4FCJIH,QAA0B,GAA4B,KAE1DA,EAAwBC,KAAK,CAACC,EAAOC,GAAI,mGAMtC,GAAG,CAAC,QAAU,EAAE,QAAU,CAAC,yEAAyE,MAAQ,GAAG,SAAW,4CAA4C,eAAiB,CAAC,m7FAA46F,WAAa,MAEpnG,gCCbA,iBAQE,WAGA,IAAIC,EAUAC,EAAkB,sBAIlBC,EAAiB,4BAMjBC,EAAc,yBAiBdC,EAAoB,GAEpBC,EAAgB,IAkBhBC,EAAW,IACXC,EAAmB,iBAEnBC,EAAM,IAGNC,EAAmB,WAKnBC,EAAY,CACd,CAAC,MAAOL,GACR,CAAC,OAtCkB,GAuCnB,CAAC,UAtCsB,GAuCvB,CAAC,QArCmB,GAsCpB,CAAC,aArCyB,IAsC1B,CAAC,OAjCkB,KAkCnB,CAAC,UAAWD,GACZ,CAAC,eAtC2B,IAuC5B,CAAC,QArCmB,MAyClBO,EAAU,qBACVC,EAAW,iBAEXC,EAAU,mBACVC,EAAU,gBAEVC,EAAW,iBACXC,EAAU,oBACVC,EAAS,6BACTC,EAAS,eACTC,EAAY,kBAEZC,EAAY,kBACZC,EAAa,mBAEbC,EAAY,kBACZC,EAAS,eACTC,EAAY,kBACZC,EAAY,kBAEZC,EAAa,mBAGbC,EAAiB,uBACjBC,EAAc,oBACdC,EAAa,wBACbC,EAAa,wBACbC,EAAU,qBACVC,EAAW,sBACXC,EAAW,sBACXC,EAAW,sBACXC,EAAkB,6BAClBC,EAAY,uBACZC,EAAY,uBAGZC,EAAuB,iBACvBC,EAAsB,qBACtBC,EAAwB,gCAGxBC,EAAgB,4BAChBC,EAAkB,WAClBC,EAAmBC,OAAOH,EAAcI,QACxCC,EAAqBF,OAAOF,EAAgBG,QAG5CE,EAAW,mBACXC,EAAa,kBACbC,EAAgB,mBAGhBC,EAAe,mDACfC,EAAgB,QAChBC,GAAa,mGAMbC,GAAe,sBACfC,GAAkBV,OAAOS,GAAaR,QAGtCU,GAAc,OAGdC,GAAe,KAGfC,GAAgB,4CAChBC,GAAgB,oCAChBC,GAAiB,QAGjBC,GAAc,4CAYdC,GAA6B,mBAG7BC,GAAe,WAMfC,GAAe,kCAGfC,GAAU,OAGVC,GAAa,qBAGbC,GAAa,aAGbC,GAAe,8BAGfC,GAAY,cAGZC,GAAW,mBAGXC,GAAU,8CAGVC,GAAY,OAGZC,GAAoB,yBAGpBC,GAAgB,kBAIhBC,GAAeC,gDACfC,GAAiB,kBACjBC,GAAe,4BAKfC,GAAe,4BACfC,GAAa,iBACbC,GAAeC,8OAIfC,GAAW,IAAMT,GAAgB,IACjCU,GAAU,IAAMH,GAAe,IAC/BI,GAAU,IAAMV,GAAe,IAC/BW,GAAW,OACXC,GAAY,IAAMV,GAAiB,IACnCW,GAAU,IAAMV,GAAe,IAC/BW,GAAS,KAAOf,GAAgBO,GAAeK,GAAWT,GAAiBC,GAAeC,GAAe,IACzGW,GAAS,2BAETC,GAAc,KAAOjB,GAAgB,IACrCkB,GAAa,kCACbC,GAAa,qCACbC,GAAU,IAAMf,GAAe,IAC/BgB,GAAQ,UAGRC,GAAc,MAAQR,GAAU,IAAMC,GAAS,IAC/CQ,GAAc,MAAQH,GAAU,IAAML,GAAS,IAC/CS,GAAkB,gCAClBC,GAAkB,gCAClBC,GAZa,MAAQf,GAAU,IAAMK,GAY1BW,KACXC,GAAW,IAAMtB,GAAa,KAI9BuB,GAAQD,GAAWF,GAHP,MAAQL,GAAQ,MAAQ,CAACJ,GAAaC,GAAYC,IAAYW,KAAK,KAAO,IAAMF,GAAWF,GAAW,KAIlHK,GAAU,MAAQ,CAAClB,GAAWK,GAAYC,IAAYW,KAAK,KAAO,IAAMD,GACxEG,GAAW,MAAQ,CAACf,GAAcN,GAAU,IAAKA,GAASO,GAAYC,GAAYV,IAAUqB,KAAK,KAAO,IAGxGG,GAAS9D,OA/BA,OA+Be,KAMxB+D,GAAc/D,OAAOwC,GAAS,KAG9BwB,GAAYhE,OAAO6C,GAAS,MAAQA,GAAS,KAAOgB,GAAWH,GAAO,KAGtEO,GAAgBjE,OAAO,CACzBiD,GAAU,IAAMN,GAAU,IAAMU,GAAkB,MAAQ,CAACd,GAASU,GAAS,KAAKU,KAAK,KAAO,IAC9FP,GAAc,IAAME,GAAkB,MAAQ,CAACf,GAASU,GAAUE,GAAa,KAAKQ,KAAK,KAAO,IAChGV,GAAU,IAAME,GAAc,IAAME,GACpCJ,GAAU,IAAMK,GAtBD,mDADA,mDA0Bfb,GACAmB,IACAD,KAAK,KAAM,KAGTO,GAAelE,OAAO,IAAMkD,GAAQrB,GAAiBC,GAAeK,GAAa,KAGjFgC,GAAmB,qEAGnBC,GAAe,CACjB,QAAS,SAAU,WAAY,OAAQ,QAAS,eAAgB,eAChE,WAAY,YAAa,aAAc,aAAc,MAAO,OAAQ,SACpE,UAAW,SAAU,MAAO,SAAU,SAAU,YAAa,aAC7D,oBAAqB,cAAe,cAAe,UACnD,IAAK,eAAgB,WAAY,WAAY,cAI3CC,IAAmB,EAGnBC,GAAiB,CAAC,EACtBA,GAAerF,GAAcqF,GAAepF,GAC5CoF,GAAenF,GAAWmF,GAAelF,GACzCkF,GAAejF,GAAYiF,GAAehF,GAC1CgF,GAAe/E,GAAmB+E,GAAe9E,GACjD8E,GAAe7E,IAAa,EAC5B6E,GAAevG,GAAWuG,GAAetG,GACzCsG,GAAevF,GAAkBuF,GAAerG,GAChDqG,GAAetF,GAAesF,GAAepG,GAC7CoG,GAAenG,GAAYmG,GAAelG,GAC1CkG,GAAehG,GAAUgG,GAAe/F,GACxC+F,GAAe9F,GAAa8F,GAAe5F,GAC3C4F,GAAe3F,GAAU2F,GAAe1F,GACxC0F,GAAexF,IAAc,EAG7B,IAAIyF,GAAgB,CAAC,EACrBA,GAAcxG,GAAWwG,GAAcvG,GACvCuG,GAAcxF,GAAkBwF,GAAcvF,GAC9CuF,GAActG,GAAWsG,GAAcrG,GACvCqG,GAActF,GAAcsF,GAAcrF,GAC1CqF,GAAcpF,GAAWoF,GAAcnF,GACvCmF,GAAclF,GAAYkF,GAAcjG,GACxCiG,GAAchG,GAAagG,GAAc/F,GACzC+F,GAAc7F,GAAa6F,GAAc5F,GACzC4F,GAAc3F,GAAa2F,GAAc1F,GACzC0F,GAAcjF,GAAYiF,GAAchF,GACxCgF,GAAc/E,GAAa+E,GAAc9E,IAAa,EACtD8E,GAAcpG,GAAYoG,GAAcnG,GACxCmG,GAAczF,IAAc,EAG5B,IA4EI0F,GAAgB,CAClB,KAAM,KACN,IAAK,IACL,KAAM,IACN,KAAM,IACN,SAAU,QACV,SAAU,SAIRC,GAAiBC,WACjBC,GAAeC,SAGfC,GAA8B,iBAAV,EAAAC,GAAsB,EAAAA,GAAU,EAAAA,EAAOC,SAAWA,QAAU,EAAAD,EAGhFE,GAA0B,iBAARC,MAAoBA,MAAQA,KAAKF,SAAWA,QAAUE,KAGxEC,GAAOL,IAAcG,IAAYG,SAAS,cAATA,GAGjCC,GAA4CC,IAAYA,EAAQC,UAAYD,EAG5EE,GAAaH,IAA4ClI,IAAWA,EAAOoI,UAAYpI,EAGvFsI,GAAgBD,IAAcA,GAAWF,UAAYD,GAGrDK,GAAcD,IAAiBX,GAAWa,QAG1CC,GAAY,WACd,IAIE,OAFYJ,IAAcA,GAAWK,SAAWL,GAAWK,QAAQ,QAAQC,OAOpEJ,IAAeA,GAAYK,SAAWL,GAAYK,QAAQ,OACnE,CAAE,MAAOC,GAAI,CACf,CAZe,GAeXC,GAAoBL,IAAYA,GAASM,cACzCC,GAAaP,IAAYA,GAASQ,OAClCC,GAAYT,IAAYA,GAASU,MACjCC,GAAeX,IAAYA,GAASY,SACpCC,GAAYb,IAAYA,GAASc,MACjCC,GAAmBf,IAAYA,GAASgB,aAc5C,SAASC,GAAMC,EAAMC,EAASC,GAC5B,OAAQA,EAAKC,QACX,KAAK,EAAG,OAAOH,EAAKI,KAAKH,GACzB,KAAK,EAAG,OAAOD,EAAKI,KAAKH,EAASC,EAAK,IACvC,KAAK,EAAG,OAAOF,EAAKI,KAAKH,EAASC,EAAK,GAAIA,EAAK,IAChD,KAAK,EAAG,OAAOF,EAAKI,KAAKH,EAASC,EAAK,GAAIA,EAAK,GAAIA,EAAK,IAE3D,OAAOF,EAAKD,MAAME,EAASC,EAC7B,CAYA,SAASG,GAAgBC,EAAOC,EAAQC,EAAUC,GAIhD,IAHA,IAAIC,GAAS,EACTP,EAAkB,MAATG,EAAgB,EAAIA,EAAMH,SAE9BO,EAAQP,GAAQ,CACvB,IAAIxR,EAAQ2R,EAAMI,GAClBH,EAAOE,EAAa9R,EAAO6R,EAAS7R,GAAQ2R,EAC9C,CACA,OAAOG,CACT,CAWA,SAASE,GAAUL,EAAOE,GAIxB,IAHA,IAAIE,GAAS,EACTP,EAAkB,MAATG,EAAgB,EAAIA,EAAMH,SAE9BO,EAAQP,IAC8B,IAAzCK,EAASF,EAAMI,GAAQA,EAAOJ,KAIpC,OAAOA,CACT,CAWA,SAASM,GAAeN,EAAOE,GAG7B,IAFA,IAAIL,EAAkB,MAATG,EAAgB,EAAIA,EAAMH,OAEhCA,MAC0C,IAA3CK,EAASF,EAAMH,GAASA,EAAQG,KAItC,OAAOA,CACT,CAYA,SAASO,GAAWP,EAAOQ,GAIzB,IAHA,IAAIJ,GAAS,EACTP,EAAkB,MAATG,EAAgB,EAAIA,EAAMH,SAE9BO,EAAQP,GACf,IAAKW,EAAUR,EAAMI,GAAQA,EAAOJ,GAClC,OAAO,EAGX,OAAO,CACT,CAWA,SAASS,GAAYT,EAAOQ,GAM1B,IALA,IAAIJ,GAAS,EACTP,EAAkB,MAATG,EAAgB,EAAIA,EAAMH,OACnCa,EAAW,EACXC,EAAS,KAEJP,EAAQP,GAAQ,CACvB,IAAIxR,EAAQ2R,EAAMI,GACdI,EAAUnS,EAAO+R,EAAOJ,KAC1BW,EAAOD,KAAcrS,EAEzB,CACA,OAAOsS,CACT,CAWA,SAASC,GAAcZ,EAAO3R,GAE5B,QADsB,MAAT2R,IAAoBA,EAAMH,SACpBgB,GAAYb,EAAO3R,EAAO,IAAM,CACrD,CAWA,SAASyS,GAAkBd,EAAO3R,EAAO0S,GAIvC,IAHA,IAAIX,GAAS,EACTP,EAAkB,MAATG,EAAgB,EAAIA,EAAMH,SAE9BO,EAAQP,GACf,GAAIkB,EAAW1S,EAAO2R,EAAMI,IAC1B,OAAO,EAGX,OAAO,CACT,CAWA,SAASY,GAAShB,EAAOE,GAKvB,IAJA,IAAIE,GAAS,EACTP,EAAkB,MAATG,EAAgB,EAAIA,EAAMH,OACnCc,EAASM,MAAMpB,KAEVO,EAAQP,GACfc,EAAOP,GAASF,EAASF,EAAMI,GAAQA,EAAOJ,GAEhD,OAAOW,CACT,CAUA,SAASO,GAAUlB,EAAOmB,GAKxB,IAJA,IAAIf,GAAS,EACTP,EAASsB,EAAOtB,OAChBuB,EAASpB,EAAMH,SAEVO,EAAQP,GACfG,EAAMoB,EAAShB,GAASe,EAAOf,GAEjC,OAAOJ,CACT,CAcA,SAASqB,GAAYrB,EAAOE,EAAUC,EAAamB,GACjD,IAAIlB,GAAS,EACTP,EAAkB,MAATG,EAAgB,EAAIA,EAAMH,OAKvC,IAHIyB,GAAazB,IACfM,EAAcH,IAAQI,MAEfA,EAAQP,GACfM,EAAcD,EAASC,EAAaH,EAAMI,GAAQA,EAAOJ,GAE3D,OAAOG,CACT,CAcA,SAASoB,GAAiBvB,EAAOE,EAAUC,EAAamB,GACtD,IAAIzB,EAAkB,MAATG,EAAgB,EAAIA,EAAMH,OAIvC,IAHIyB,GAAazB,IACfM,EAAcH,IAAQH,IAEjBA,KACLM,EAAcD,EAASC,EAAaH,EAAMH,GAASA,EAAQG,GAE7D,OAAOG,CACT,CAYA,SAASqB,GAAUxB,EAAOQ,GAIxB,IAHA,IAAIJ,GAAS,EACTP,EAAkB,MAATG,EAAgB,EAAIA,EAAMH,SAE9BO,EAAQP,GACf,GAAIW,EAAUR,EAAMI,GAAQA,EAAOJ,GACjC,OAAO,EAGX,OAAO,CACT,CASA,IAAIyB,GAAYC,GAAa,UAmC7B,SAASC,GAAYC,EAAYpB,EAAWqB,GAC1C,IAAIlB,EAOJ,OANAkB,EAASD,GAAY,SAASvT,EAAOyT,EAAKF,GACxC,GAAIpB,EAAUnS,EAAOyT,EAAKF,GAExB,OADAjB,EAASmB,GACF,CAEX,IACOnB,CACT,CAaA,SAASoB,GAAc/B,EAAOQ,EAAWwB,EAAWC,GAIlD,IAHA,IAAIpC,EAASG,EAAMH,OACfO,EAAQ4B,GAAaC,EAAY,GAAK,GAElCA,EAAY7B,MAAYA,EAAQP,GACtC,GAAIW,EAAUR,EAAMI,GAAQA,EAAOJ,GACjC,OAAOI,EAGX,OAAQ,CACV,CAWA,SAASS,GAAYb,EAAO3R,EAAO2T,GACjC,OAAO3T,GAAUA,EAidnB,SAAuB2R,EAAO3R,EAAO2T,GAInC,IAHA,IAAI5B,EAAQ4B,EAAY,EACpBnC,EAASG,EAAMH,SAEVO,EAAQP,GACf,GAAIG,EAAMI,KAAW/R,EACnB,OAAO+R,EAGX,OAAQ,CACV,CA1dM8B,CAAclC,EAAO3R,EAAO2T,GAC5BD,GAAc/B,EAAOmC,GAAWH,EACtC,CAYA,SAASI,GAAgBpC,EAAO3R,EAAO2T,EAAWjB,GAIhD,IAHA,IAAIX,EAAQ4B,EAAY,EACpBnC,EAASG,EAAMH,SAEVO,EAAQP,GACf,GAAIkB,EAAWf,EAAMI,GAAQ/R,GAC3B,OAAO+R,EAGX,OAAQ,CACV,CASA,SAAS+B,GAAU9T,GACjB,OAAOA,GAAUA,CACnB,CAWA,SAASgU,GAASrC,EAAOE,GACvB,IAAIL,EAAkB,MAATG,EAAgB,EAAIA,EAAMH,OACvC,OAAOA,EAAUyC,GAAQtC,EAAOE,GAAYL,EAAUpJ,CACxD,CASA,SAASiL,GAAaI,GACpB,OAAO,SAASS,GACd,OAAiB,MAAVA,EAAiBtM,EAAYsM,EAAOT,EAC7C,CACF,CASA,SAASU,GAAeD,GACtB,OAAO,SAAST,GACd,OAAiB,MAAVS,EAAiBtM,EAAYsM,EAAOT,EAC7C,CACF,CAeA,SAASW,GAAWb,EAAY1B,EAAUC,EAAamB,EAAWO,GAMhE,OALAA,EAASD,GAAY,SAASvT,EAAO+R,EAAOwB,GAC1CzB,EAAcmB,GACTA,GAAY,EAAOjT,GACpB6R,EAASC,EAAa9R,EAAO+R,EAAOwB,EAC1C,IACOzB,CACT,CA+BA,SAASmC,GAAQtC,EAAOE,GAKtB,IAJA,IAAIS,EACAP,GAAS,EACTP,EAASG,EAAMH,SAEVO,EAAQP,GAAQ,CACvB,IAAI6C,EAAUxC,EAASF,EAAMI,IACzBsC,IAAYzM,IACd0K,EAASA,IAAW1K,EAAYyM,EAAW/B,EAAS+B,EAExD,CACA,OAAO/B,CACT,CAWA,SAASgC,GAAUC,EAAG1C,GAIpB,IAHA,IAAIE,GAAS,EACTO,EAASM,MAAM2B,KAEVxC,EAAQwC,GACfjC,EAAOP,GAASF,EAASE,GAE3B,OAAOO,CACT,CAwBA,SAASkC,GAASC,GAChB,OAAOA,EACHA,EAAOC,MAAM,EAAGC,GAAgBF,GAAU,GAAGG,QAAQzJ,GAAa,IAClEsJ,CACN,CASA,SAASI,GAAUxD,GACjB,OAAO,SAASrR,GACd,OAAOqR,EAAKrR,EACd,CACF,CAYA,SAAS8U,GAAWZ,EAAQnU,GAC1B,OAAO4S,GAAS5S,GAAO,SAAS0T,GAC9B,OAAOS,EAAOT,EAChB,GACF,CAUA,SAASsB,GAASC,EAAOvB,GACvB,OAAOuB,EAAMC,IAAIxB,EACnB,CAWA,SAASyB,GAAgBC,EAAYC,GAInC,IAHA,IAAIrD,GAAS,EACTP,EAAS2D,EAAW3D,SAEfO,EAAQP,GAAUgB,GAAY4C,EAAYD,EAAWpD,GAAQ,IAAM,IAC5E,OAAOA,CACT,CAWA,SAASsD,GAAcF,EAAYC,GAGjC,IAFA,IAAIrD,EAAQoD,EAAW3D,OAEhBO,KAAWS,GAAY4C,EAAYD,EAAWpD,GAAQ,IAAM,IACnE,OAAOA,CACT,CA8BA,IAAIuD,GAAenB,GAjxBG,CAEpB,EAAQ,IAAM,EAAQ,IAAK,EAAQ,IAAK,EAAQ,IAAK,EAAQ,IAAK,EAAQ,IAC1E,EAAQ,IAAM,EAAQ,IAAK,EAAQ,IAAK,EAAQ,IAAK,EAAQ,IAAK,EAAQ,IAC1E,EAAQ,IAAM,EAAQ,IACtB,EAAQ,IAAM,EAAQ,IACtB,EAAQ,IAAM,EAAQ,IAAK,EAAQ,IAAK,EAAQ,IAChD,EAAQ,IAAM,EAAQ,IAAK,EAAQ,IAAK,EAAQ,IAChD,EAAQ,IAAM,EAAQ,IAAK,EAAQ,IAAK,EAAQ,IAChD,EAAQ,IAAM,EAAQ,IAAK,EAAQ,IAAK,EAAQ,IAChD,EAAQ,IAAM,EAAQ,IACtB,EAAQ,IAAM,EAAQ,IAAK,EAAQ,IAAK,EAAQ,IAAK,EAAQ,IAAK,EAAQ,IAC1E,EAAQ,IAAM,EAAQ,IAAK,EAAQ,IAAK,EAAQ,IAAK,EAAQ,IAAK,EAAQ,IAC1E,EAAQ,IAAM,EAAQ,IAAK,EAAQ,IAAK,EAAQ,IAChD,EAAQ,IAAM,EAAQ,IAAK,EAAQ,IAAK,EAAQ,IAChD,EAAQ,IAAM,EAAQ,IAAK,EAAQ,IACnC,EAAQ,KAAM,EAAQ,KACtB,EAAQ,KAAM,EAAQ,KACtB,EAAQ,KAER,EAAU,IAAM,EAAU,IAAK,EAAU,IACzC,EAAU,IAAM,EAAU,IAAK,EAAU,IACzC,EAAU,IAAM,EAAU,IAAK,EAAU,IAAK,EAAU,IACxD,EAAU,IAAM,EAAU,IAAK,EAAU,IAAK,EAAU,IACxD,EAAU,IAAM,EAAU,IAAK,EAAU,IAAK,EAAU,IACxD,EAAU,IAAM,EAAU,IAAK,EAAU,IAAK,EAAU,IAAK,EAAU,IACvE,EAAU,IAAM,EAAU,IAAK,EAAU,IAAK,EAAU,IAAK,EAAU,IACvE,EAAU,IAAM,EAAU,IAAK,EAAU,IAAK,EAAU,IACxD,EAAU,IAAM,EAAU,IAAK,EAAU,IAAK,EAAU,IACxD,EAAU,IAAM,EAAU,IAAK,EAAU,IAAK,EAAU,IACxD,EAAU,IAAM,EAAU,IAAK,EAAU,IAAK,EAAU,IAAK,EAAU,IACvE,EAAU,IAAM,EAAU,IAAK,EAAU,IAAK,EAAU,IAAK,EAAU,IACvE,EAAU,IAAM,EAAU,IAC1B,EAAU,IAAM,EAAU,IAAK,EAAU,IACzC,EAAU,IAAM,EAAU,IAAK,EAAU,IAAK,EAAU,IAAK,EAAU,IACvE,EAAU,IAAM,EAAU,IAAK,EAAU,IAAK,EAAU,IAAK,EAAU,IACvE,EAAU,IAAM,EAAU,IAAK,EAAU,IAAK,EAAU,IACxD,EAAU,IAAM,EAAU,IAAK,EAAU,IAAK,EAAU,IACxD,EAAU,IAAM,EAAU,IAAK,EAAU,IACzC,EAAU,IAAM,EAAU,IAAK,EAAU,IACzC,EAAU,IAAM,EAAU,IAAK,EAAU,IACzC,EAAU,IAAM,EAAU,IAAK,EAAU,IACzC,EAAU,IAAM,EAAU,IAAK,EAAU,IAAK,EAAU,IACxD,EAAU,IAAM,EAAU,IAAK,EAAU,IAAK,EAAU,IACxD,EAAU,IAAM,EAAU,IAAK,EAAU,IACzC,EAAU,IAAM,EAAU,IAAK,EAAU,IACzC,EAAU,IAAM,EAAU,IAAK,EAAU,IAAK,EAAU,IAAK,EAAU,IAAK,EAAU,IACtF,EAAU,IAAM,EAAU,IAAK,EAAU,IAAK,EAAU,IAAK,EAAU,IAAK,EAAU,IACtF,EAAU,IAAM,EAAU,IAC1B,EAAU,IAAM,EAAU,IAAK,EAAU,IACzC,EAAU,IAAM,EAAU,IAAK,EAAU,IACzC,EAAU,IAAM,EAAU,IAAK,EAAU,IACzC,EAAU,KAAM,EAAU,KAC1B,EAAU,KAAM,EAAU,KAC1B,EAAU,KAAM,EAAU,MAouBxBoB,GAAiBpB,GAhuBH,CAChB,IAAK,QACL,IAAK,OACL,IAAK,OACL,IAAK,SACL,IAAK,UAouBP,SAASqB,GAAiBC,GACxB,MAAO,KAAOzG,GAAcyG,EAC9B,CAqBA,SAASC,GAAWjB,GAClB,OAAO/F,GAAaiH,KAAKlB,EAC3B,CAqCA,SAASmB,GAAWC,GAClB,IAAI9D,GAAS,EACTO,EAASM,MAAMiD,EAAIC,MAKvB,OAHAD,EAAIE,SAAQ,SAAS/V,EAAOyT,GAC1BnB,IAASP,GAAS,CAAC0B,EAAKzT,EAC1B,IACOsS,CACT,CAUA,SAAS0D,GAAQ3E,EAAM4E,GACrB,OAAO,SAASC,GACd,OAAO7E,EAAK4E,EAAUC,GACxB,CACF,CAWA,SAASC,GAAexE,EAAOyE,GAM7B,IALA,IAAIrE,GAAS,EACTP,EAASG,EAAMH,OACfa,EAAW,EACXC,EAAS,KAEJP,EAAQP,GAAQ,CACvB,IAAIxR,EAAQ2R,EAAMI,GACd/R,IAAUoW,GAAepW,IAAU+H,IACrC4J,EAAMI,GAAShK,EACfuK,EAAOD,KAAcN,EAEzB,CACA,OAAOO,CACT,CASA,SAAS+D,GAAWjT,GAClB,IAAI2O,GAAS,EACTO,EAASM,MAAMxP,EAAI0S,MAKvB,OAHA1S,EAAI2S,SAAQ,SAAS/V,GACnBsS,IAASP,GAAS/R,CACpB,IACOsS,CACT,CASA,SAASgE,GAAWlT,GAClB,IAAI2O,GAAS,EACTO,EAASM,MAAMxP,EAAI0S,MAKvB,OAHA1S,EAAI2S,SAAQ,SAAS/V,GACnBsS,IAASP,GAAS,CAAC/R,EAAOA,EAC5B,IACOsS,CACT,CAmDA,SAASiE,GAAW9B,GAClB,OAAOiB,GAAWjB,GAiDpB,SAAqBA,GAEnB,IADA,IAAInC,EAAS9D,GAAUgI,UAAY,EAC5BhI,GAAUmH,KAAKlB,MAClBnC,EAEJ,OAAOA,CACT,CAtDMmE,CAAYhC,GACZrB,GAAUqB,EAChB,CASA,SAASiC,GAAcjC,GACrB,OAAOiB,GAAWjB,GAmDpB,SAAwBA,GACtB,OAAOA,EAAOkC,MAAMnI,KAAc,EACpC,CApDMoI,CAAenC,GA7kBrB,SAAsBA,GACpB,OAAOA,EAAOoC,MAAM,GACtB,CA4kBMC,CAAarC,EACnB,CAUA,SAASE,GAAgBF,GAGvB,IAFA,IAAI1C,EAAQ0C,EAAOjD,OAEZO,KAAW3G,GAAauK,KAAKlB,EAAOsC,OAAOhF,MAClD,OAAOA,CACT,CASA,IAAIiF,GAAmB7C,GA38BH,CAClB,QAAS,IACT,OAAQ,IACR,OAAQ,IACR,SAAU,IACV,QAAS,MAk4gBP8C,GAt3ee,SAAUC,EAAaC,GAIxC,IA6BMC,EA7BFxE,GAHJuE,EAAqB,MAAXA,EAAkBzH,GAAOuH,GAAEI,SAAS3H,GAAKH,SAAU4H,EAASF,GAAEK,KAAK5H,GAAMd,MAG/DgE,MAChB2E,GAAOJ,EAAQI,KACfC,GAAQL,EAAQK,MAChB7H,GAAWwH,EAAQxH,SACnB8H,GAAON,EAAQM,KACflI,GAAS4H,EAAQ5H,OACjB/E,GAAS2M,EAAQ3M,OACjBkN,GAASP,EAAQO,OACjBC,GAAYR,EAAQQ,UAGpBC,GAAahF,EAAMiF,UACnBC,GAAYnI,GAASkI,UACrBE,GAAcxI,GAAOsI,UAGrBG,GAAab,EAAQ,sBAGrBc,GAAeH,GAAUI,SAGzBC,GAAiBJ,GAAYI,eAG7BC,GAAY,EAGZC,IACEjB,EAAM,SAASkB,KAAKN,IAAcA,GAAWO,MAAQP,GAAWO,KAAKC,UAAY,KACvE,iBAAmBpB,EAAO,GAQtCqB,GAAuBV,GAAYG,SAGnCQ,GAAmBT,GAAaxG,KAAKlC,IAGrCoJ,GAAUjJ,GAAKuH,EAGf2B,GAAapO,GAAO,IACtByN,GAAaxG,KAAK0G,IAAgBvD,QAAQ3J,GAAc,QACvD2J,QAAQ,yDAA0D,SAAW,KAI5EiE,GAAS7I,GAAgBmH,EAAQ0B,OAASjR,EAC1CkR,GAAS3B,EAAQ2B,OACjBC,GAAa5B,EAAQ4B,WACrBC,GAAcH,GAASA,GAAOG,YAAcpR,EAC5CqR,GAAejD,GAAQzG,GAAO2J,eAAgB3J,IAC9C4J,GAAe5J,GAAO6J,OACtBC,GAAuBtB,GAAYsB,qBACnCC,GAAS1B,GAAW0B,OACpBC,GAAmBT,GAASA,GAAOU,mBAAqB5R,EACxD6R,GAAcX,GAASA,GAAOY,SAAW9R,EACzC+R,GAAiBb,GAASA,GAAOc,YAAchS,EAE/CiS,GAAkB,WACpB,IACE,IAAIxI,EAAOyI,GAAUvK,GAAQ,kBAE7B,OADA8B,EAAK,CAAC,EAAG,GAAI,CAAC,GACPA,CACT,CAAE,MAAOd,GAAI,CACf,CANqB,GASjBwJ,GAAkB5C,EAAQ6C,eAAiBtK,GAAKsK,cAAgB7C,EAAQ6C,aACxEC,GAAS1C,IAAQA,GAAK2C,MAAQxK,GAAK6H,KAAK2C,KAAO3C,GAAK2C,IACpDC,GAAgBhD,EAAQiD,aAAe1K,GAAK0K,YAAcjD,EAAQiD,WAGlEC,GAAa5C,GAAK6C,KAClBC,GAAc9C,GAAK+C,MACnBC,GAAmBlL,GAAOmL,sBAC1BC,GAAiB9B,GAASA,GAAO+B,SAAWhT,EAC5CiT,GAAiB1D,EAAQ2D,SACzBC,GAAanD,GAAWzJ,KACxB6M,GAAahF,GAAQzG,GAAOgJ,KAAMhJ,IAClC0L,GAAYxD,GAAKyD,IACjBC,GAAY1D,GAAK2D,IACjBC,GAAY9D,GAAK2C,IACjBoB,GAAiBnE,EAAQ/H,SACzBmM,GAAe9D,GAAK+D,OACpBC,GAAgB7D,GAAW8D,QAG3BC,GAAW7B,GAAU3C,EAAS,YAC9ByE,GAAM9B,GAAU3C,EAAS,OACzB0E,GAAU/B,GAAU3C,EAAS,WAC7B2E,GAAMhC,GAAU3C,EAAS,OACzB4E,GAAUjC,GAAU3C,EAAS,WAC7B6E,GAAelC,GAAUvK,GAAQ,UAGjC0M,GAAUF,IAAW,IAAIA,GAGzBG,GAAY,CAAC,EAGbC,GAAqBC,GAAST,IAC9BU,GAAgBD,GAASR,IACzBU,GAAoBF,GAASP,IAC7BU,GAAgBH,GAASN,IACzBU,GAAoBJ,GAASL,IAG7BU,GAAc3D,GAASA,GAAOjB,UAAYjQ,EAC1C8U,GAAgBD,GAAcA,GAAYE,QAAU/U,EACpDgV,GAAiBH,GAAcA,GAAYvE,SAAWtQ,EAyH1D,SAASiV,GAAO7c,GACd,GAAI8c,GAAa9c,KAAW+c,GAAQ/c,MAAYA,aAAiBgd,IAAc,CAC7E,GAAIhd,aAAiBid,GACnB,OAAOjd,EAET,GAAImY,GAAe1G,KAAKzR,EAAO,eAC7B,OAAOkd,GAAald,EAExB,CACA,OAAO,IAAIid,GAAcjd,EAC3B,CAUA,IAAImd,GAAc,WAChB,SAASjJ,IAAU,CACnB,OAAO,SAASkJ,GACd,IAAKC,GAASD,GACZ,MAAO,CAAC,EAEV,GAAIjE,GACF,OAAOA,GAAaiE,GAEtBlJ,EAAO2D,UAAYuF,EACnB,IAAI9K,EAAS,IAAI4B,EAEjB,OADAA,EAAO2D,UAAYjQ,EACZ0K,CACT,CACF,CAdiB,GAqBjB,SAASgL,KAET,CASA,SAASL,GAAcjd,EAAOud,GAC5B1b,KAAK2b,YAAcxd,EACnB6B,KAAK4b,YAAc,GACnB5b,KAAK6b,YAAcH,EACnB1b,KAAK8b,UAAY,EACjB9b,KAAK+b,WAAahW,CACpB,CA+EA,SAASoV,GAAYhd,GACnB6B,KAAK2b,YAAcxd,EACnB6B,KAAK4b,YAAc,GACnB5b,KAAKgc,QAAU,EACfhc,KAAKic,cAAe,EACpBjc,KAAKkc,cAAgB,GACrBlc,KAAKmc,cAAgB3V,EACrBxG,KAAKoc,UAAY,EACnB,CA+GA,SAASC,GAAKC,GACZ,IAAIpM,GAAS,EACTP,EAAoB,MAAX2M,EAAkB,EAAIA,EAAQ3M,OAG3C,IADA3P,KAAKuc,UACIrM,EAAQP,GAAQ,CACvB,IAAI6M,EAAQF,EAAQpM,GACpBlQ,KAAKuB,IAAIib,EAAM,GAAIA,EAAM,GAC3B,CACF,CA+FA,SAASC,GAAUH,GACjB,IAAIpM,GAAS,EACTP,EAAoB,MAAX2M,EAAkB,EAAIA,EAAQ3M,OAG3C,IADA3P,KAAKuc,UACIrM,EAAQP,GAAQ,CACvB,IAAI6M,EAAQF,EAAQpM,GACpBlQ,KAAKuB,IAAIib,EAAM,GAAIA,EAAM,GAC3B,CACF,CA4GA,SAASE,GAASJ,GAChB,IAAIpM,GAAS,EACTP,EAAoB,MAAX2M,EAAkB,EAAIA,EAAQ3M,OAG3C,IADA3P,KAAKuc,UACIrM,EAAQP,GAAQ,CACvB,IAAI6M,EAAQF,EAAQpM,GACpBlQ,KAAKuB,IAAIib,EAAM,GAAIA,EAAM,GAC3B,CACF,CA+FA,SAASG,GAAS1L,GAChB,IAAIf,GAAS,EACTP,EAAmB,MAAVsB,EAAiB,EAAIA,EAAOtB,OAGzC,IADA3P,KAAK4c,SAAW,IAAIF,KACXxM,EAAQP,GACf3P,KAAK6c,IAAI5L,EAAOf,GAEpB,CA2CA,SAAS4M,GAAMR,GACb,IAAI9d,EAAOwB,KAAK4c,SAAW,IAAIH,GAAUH,GACzCtc,KAAKiU,KAAOzV,EAAKyV,IACnB,CAoGA,SAAS8I,GAAc5e,EAAO6e,GAC5B,IAAIC,EAAQ/B,GAAQ/c,GAChB+e,GAASD,GAASE,GAAYhf,GAC9Bif,GAAUH,IAAUC,GAASnE,GAAS5a,GACtCkf,GAAUJ,IAAUC,IAAUE,GAAU9N,GAAanR,GACrDmf,EAAcL,GAASC,GAASE,GAAUC,EAC1C5M,EAAS6M,EAAc7K,GAAUtU,EAAMwR,OAAQkG,IAAU,GACzDlG,EAASc,EAAOd,OAEpB,IAAK,IAAIiC,KAAOzT,GACT6e,IAAa1G,GAAe1G,KAAKzR,EAAOyT,IACvC0L,IAEQ,UAAP1L,GAECwL,IAAkB,UAAPxL,GAA0B,UAAPA,IAE9ByL,IAAkB,UAAPzL,GAA0B,cAAPA,GAA8B,cAAPA,IAEtD2L,GAAQ3L,EAAKjC,KAElBc,EAAO7K,KAAKgM,GAGhB,OAAOnB,CACT,CASA,SAAS+M,GAAY1N,GACnB,IAAIH,EAASG,EAAMH,OACnB,OAAOA,EAASG,EAAM2N,GAAW,EAAG9N,EAAS,IAAM5J,CACrD,CAUA,SAAS2X,GAAgB5N,EAAO4C,GAC9B,OAAOiL,GAAYC,GAAU9N,GAAQ+N,GAAUnL,EAAG,EAAG5C,EAAMH,QAC7D,CASA,SAASmO,GAAahO,GACpB,OAAO6N,GAAYC,GAAU9N,GAC/B,CAWA,SAASiO,GAAiB1L,EAAQT,EAAKzT,IAChCA,IAAU4H,IAAciY,GAAG3L,EAAOT,GAAMzT,IACxCA,IAAU4H,KAAe6L,KAAOS,KACnC4L,GAAgB5L,EAAQT,EAAKzT,EAEjC,CAYA,SAAS+f,GAAY7L,EAAQT,EAAKzT,GAChC,IAAIggB,EAAW9L,EAAOT,GAChB0E,GAAe1G,KAAKyC,EAAQT,IAAQoM,GAAGG,EAAUhgB,KAClDA,IAAU4H,GAAe6L,KAAOS,IACnC4L,GAAgB5L,EAAQT,EAAKzT,EAEjC,CAUA,SAASigB,GAAatO,EAAO8B,GAE3B,IADA,IAAIjC,EAASG,EAAMH,OACZA,KACL,GAAIqO,GAAGlO,EAAMH,GAAQ,GAAIiC,GACvB,OAAOjC,EAGX,OAAQ,CACV,CAaA,SAAS0O,GAAe3M,EAAY3B,EAAQC,EAAUC,GAIpD,OAHAqO,GAAS5M,GAAY,SAASvT,EAAOyT,EAAKF,GACxC3B,EAAOE,EAAa9R,EAAO6R,EAAS7R,GAAQuT,EAC9C,IACOzB,CACT,CAWA,SAASsO,GAAWlM,EAAQzJ,GAC1B,OAAOyJ,GAAUmM,GAAW5V,EAAQ8N,GAAK9N,GAASyJ,EACpD,CAwBA,SAAS4L,GAAgB5L,EAAQT,EAAKzT,GACzB,aAAPyT,GAAsBoG,GACxBA,GAAe3F,EAAQT,EAAK,CAC1B,cAAgB,EAChB,YAAc,EACd,MAASzT,EACT,UAAY,IAGdkU,EAAOT,GAAOzT,CAElB,CAUA,SAASsgB,GAAOpM,EAAQqM,GAMtB,IALA,IAAIxO,GAAS,EACTP,EAAS+O,EAAM/O,OACfc,EAASM,EAAMpB,GACfgP,EAAiB,MAAVtM,IAEFnC,EAAQP,GACfc,EAAOP,GAASyO,EAAO5Y,EAAY3E,GAAIiR,EAAQqM,EAAMxO,IAEvD,OAAOO,CACT,CAWA,SAASoN,GAAUe,EAAQC,EAAOC,GAShC,OARIF,GAAWA,IACTE,IAAU/Y,IACZ6Y,EAASA,GAAUE,EAAQF,EAASE,GAElCD,IAAU9Y,IACZ6Y,EAASA,GAAUC,EAAQD,EAASC,IAGjCD,CACT,CAkBA,SAASG,GAAU5gB,EAAO6gB,EAASC,EAAYrN,EAAKS,EAAQ6M,GAC1D,IAAIzO,EACA0O,EArkFc,EAqkFLH,EACTI,EArkFc,EAqkFLJ,EACTK,EArkFiB,EAqkFRL,EAKb,GAHIC,IACFxO,EAAS4B,EAAS4M,EAAW9gB,EAAOyT,EAAKS,EAAQ6M,GAASD,EAAW9gB,IAEnEsS,IAAW1K,EACb,OAAO0K,EAET,IAAK+K,GAASrd,GACZ,OAAOA,EAET,IAAI8e,EAAQ/B,GAAQ/c,GACpB,GAAI8e,GAEF,GADAxM,EA68GJ,SAAwBX,GACtB,IAAIH,EAASG,EAAMH,OACfc,EAAS,IAAIX,EAAMwP,YAAY3P,GAOnC,OAJIA,GAA6B,iBAAZG,EAAM,IAAkBwG,GAAe1G,KAAKE,EAAO,WACtEW,EAAOP,MAAQJ,EAAMI,MACrBO,EAAO8O,MAAQzP,EAAMyP,OAEhB9O,CACT,CAv9Ga+O,CAAerhB,IACnBghB,EACH,OAAOvB,GAAUzf,EAAOsS,OAErB,CACL,IAAIgP,EAAMC,GAAOvhB,GACbwhB,EAASF,GAAO1Y,GAAW0Y,GAAOzY,EAEtC,GAAI+R,GAAS5a,GACX,OAAOyhB,GAAYzhB,EAAOghB,GAE5B,GAAIM,GAAOtY,GAAasY,GAAO/Y,GAAYiZ,IAAWtN,GAEpD,GADA5B,EAAU2O,GAAUO,EAAU,CAAC,EAAIE,GAAgB1hB,IAC9CghB,EACH,OAAOC,EA+nEf,SAAuBxW,EAAQyJ,GAC7B,OAAOmM,GAAW5V,EAAQkX,GAAalX,GAASyJ,EAClD,CAhoEY0N,CAAc5hB,EAnH1B,SAAsBkU,EAAQzJ,GAC5B,OAAOyJ,GAAUmM,GAAW5V,EAAQoX,GAAOpX,GAASyJ,EACtD,CAiHiC4N,CAAaxP,EAAQtS,IAknEtD,SAAqByK,EAAQyJ,GAC3B,OAAOmM,GAAW5V,EAAQsX,GAAWtX,GAASyJ,EAChD,CAnnEY8N,CAAYhiB,EAAOogB,GAAW9N,EAAQtS,QAEvC,CACL,IAAK+O,GAAcuS,GACjB,OAAOpN,EAASlU,EAAQ,CAAC,EAE3BsS,EA49GN,SAAwB4B,EAAQoN,EAAKN,GACnC,IAzlDmBiB,EAylDfC,EAAOhO,EAAOiN,YAClB,OAAQG,GACN,KAAK/X,EACH,OAAO4Y,GAAiBjO,GAE1B,KAAKzL,EACL,KAAKC,EACH,OAAO,IAAIwZ,GAAMhO,GAEnB,KAAK1K,EACH,OA5nDN,SAAuB4Y,EAAUpB,GAC/B,IAAIqB,EAASrB,EAASmB,GAAiBC,EAASC,QAAUD,EAASC,OACnE,OAAO,IAAID,EAASjB,YAAYkB,EAAQD,EAASE,WAAYF,EAASG,WACxE,CAynDaC,CAActO,EAAQ8M,GAE/B,KAAKvX,EAAY,KAAKC,EACtB,KAAKC,EAAS,KAAKC,EAAU,KAAKC,EAClC,KAAKC,EAAU,KAAKC,EAAiB,KAAKC,EAAW,KAAKC,EACxD,OAAOwY,GAAgBvO,EAAQ8M,GAEjC,KAAKlY,EACH,OAAO,IAAIoZ,EAEb,KAAKnZ,EACL,KAAKK,EACH,OAAO,IAAI8Y,EAAKhO,GAElB,KAAKhL,EACH,OA/nDN,SAAqBwZ,GACnB,IAAIpQ,EAAS,IAAIoQ,EAAOvB,YAAYuB,EAAOjY,OAAQmB,GAAQ0M,KAAKoK,IAEhE,OADApQ,EAAOkE,UAAYkM,EAAOlM,UACnBlE,CACT,CA2nDaqQ,CAAYzO,GAErB,KAAK/K,EACH,OAAO,IAAI+Y,EAEb,KAAK7Y,EACH,OAxnDe4Y,EAwnDI/N,EAvnDhBwI,GAAgBnN,GAAOmN,GAAcjL,KAAKwQ,IAAW,CAAC,EAynD/D,CA9/GeW,CAAe5iB,EAAOshB,EAAKN,EACtC,CACF,CAEAD,IAAUA,EAAQ,IAAIpC,IACtB,IAAIkE,EAAU9B,EAAM9d,IAAIjD,GACxB,GAAI6iB,EACF,OAAOA,EAET9B,EAAM3d,IAAIpD,EAAOsS,GAEbrB,GAAMjR,GACRA,EAAM+V,SAAQ,SAAS+M,GACrBxQ,EAAOoM,IAAIkC,GAAUkC,EAAUjC,EAASC,EAAYgC,EAAU9iB,EAAO+gB,GACvE,IACSlQ,GAAM7Q,IACfA,EAAM+V,SAAQ,SAAS+M,EAAUrP,GAC/BnB,EAAOlP,IAAIqQ,EAAKmN,GAAUkC,EAAUjC,EAASC,EAAYrN,EAAKzT,EAAO+gB,GACvE,IAGF,IAIIhhB,EAAQ+e,EAAQlX,GAJLsZ,EACVD,EAAS8B,GAAeC,GACxB/B,EAASY,GAAStJ,IAEkBvY,GASzC,OARAgS,GAAUjS,GAASC,GAAO,SAAS8iB,EAAUrP,GACvC1T,IAEF+iB,EAAW9iB,EADXyT,EAAMqP,IAIR/C,GAAYzN,EAAQmB,EAAKmN,GAAUkC,EAAUjC,EAASC,EAAYrN,EAAKzT,EAAO+gB,GAChF,IACOzO,CACT,CAwBA,SAAS2Q,GAAe/O,EAAQzJ,EAAQ1K,GACtC,IAAIyR,EAASzR,EAAMyR,OACnB,GAAc,MAAV0C,EACF,OAAQ1C,EAGV,IADA0C,EAAS3E,GAAO2E,GACT1C,KAAU,CACf,IAAIiC,EAAM1T,EAAMyR,GACZW,EAAY1H,EAAOgJ,GACnBzT,EAAQkU,EAAOT,GAEnB,GAAKzT,IAAU4H,KAAe6L,KAAOS,KAAa/B,EAAUnS,GAC1D,OAAO,CAEX,CACA,OAAO,CACT,CAYA,SAASkjB,GAAU7R,EAAM8R,EAAM5R,GAC7B,GAAmB,mBAARF,EACT,MAAM,IAAIsG,GAAU9P,GAEtB,OAAOuS,IAAW,WAAa/I,EAAKD,MAAMxJ,EAAW2J,EAAO,GAAG4R,EACjE,CAaA,SAASC,GAAezR,EAAOmB,EAAQjB,EAAUa,GAC/C,IAAIX,GAAS,EACTsR,EAAW9Q,GACX+Q,GAAW,EACX9R,EAASG,EAAMH,OACfc,EAAS,GACTiR,EAAezQ,EAAOtB,OAE1B,IAAKA,EACH,OAAOc,EAELT,IACFiB,EAASH,GAASG,EAAQ+B,GAAUhD,KAElCa,GACF2Q,EAAW5Q,GACX6Q,GAAW,GAEJxQ,EAAOtB,QAtvFG,MAuvFjB6R,EAAWtO,GACXuO,GAAW,EACXxQ,EAAS,IAAI0L,GAAS1L,IAExB0Q,EACA,OAASzR,EAAQP,GAAQ,CACvB,IAAIxR,EAAQ2R,EAAMI,GACdrR,EAAuB,MAAZmR,EAAmB7R,EAAQ6R,EAAS7R,GAGnD,GADAA,EAAS0S,GAAwB,IAAV1S,EAAeA,EAAQ,EAC1CsjB,GAAY5iB,GAAaA,EAAU,CAErC,IADA,IAAI+iB,EAAcF,EACXE,KACL,GAAI3Q,EAAO2Q,KAAiB/iB,EAC1B,SAAS8iB,EAGblR,EAAO7K,KAAKzH,EACd,MACUqjB,EAASvQ,EAAQpS,EAAUgS,IACnCJ,EAAO7K,KAAKzH,EAEhB,CACA,OAAOsS,CACT,CAlkCAuK,GAAO6G,iBAAmB,CAQxB,OAAU/Y,EAQV,SAAYC,EAQZ,YAAeC,EAQf,SAAY,GAQZ,QAAW,CAQT,EAAKgS,KAKTA,GAAOhF,UAAYyF,GAAWzF,UAC9BgF,GAAOhF,UAAUsJ,YAActE,GAE/BI,GAAcpF,UAAYsF,GAAWG,GAAWzF,WAChDoF,GAAcpF,UAAUsJ,YAAclE,GAsHtCD,GAAYnF,UAAYsF,GAAWG,GAAWzF,WAC9CmF,GAAYnF,UAAUsJ,YAAcnE,GAoGpCkB,GAAKrG,UAAUuG,MAvEf,WACEvc,KAAK4c,SAAWzC,GAAeA,GAAa,MAAQ,CAAC,EACrDna,KAAKiU,KAAO,CACd,EAqEAoI,GAAKrG,UAAkB,OAzDvB,SAAoBpE,GAClB,IAAInB,EAASzQ,KAAKoT,IAAIxB,WAAe5R,KAAK4c,SAAShL,GAEnD,OADA5R,KAAKiU,MAAQxD,EAAS,EAAI,EACnBA,CACT,EAsDA4L,GAAKrG,UAAU5U,IA3Cf,SAAiBwQ,GACf,IAAIpT,EAAOwB,KAAK4c,SAChB,GAAIzC,GAAc,CAChB,IAAI1J,EAASjS,EAAKoT,GAClB,OAAOnB,IAAWxK,EAAiBF,EAAY0K,CACjD,CACA,OAAO6F,GAAe1G,KAAKpR,EAAMoT,GAAOpT,EAAKoT,GAAO7L,CACtD,EAqCAsW,GAAKrG,UAAU5C,IA1Bf,SAAiBxB,GACf,IAAIpT,EAAOwB,KAAK4c,SAChB,OAAOzC,GAAgB3b,EAAKoT,KAAS7L,EAAauQ,GAAe1G,KAAKpR,EAAMoT,EAC9E,EAwBAyK,GAAKrG,UAAUzU,IAZf,SAAiBqQ,EAAKzT,GACpB,IAAIK,EAAOwB,KAAK4c,SAGhB,OAFA5c,KAAKiU,MAAQjU,KAAKoT,IAAIxB,GAAO,EAAI,EACjCpT,EAAKoT,GAAQuI,IAAgBhc,IAAU4H,EAAaE,EAAiB9H,EAC9D6B,IACT,EAwHAyc,GAAUzG,UAAUuG,MApFpB,WACEvc,KAAK4c,SAAW,GAChB5c,KAAKiU,KAAO,CACd,EAkFAwI,GAAUzG,UAAkB,OAvE5B,SAAyBpE,GACvB,IAAIpT,EAAOwB,KAAK4c,SACZ1M,EAAQkO,GAAa5f,EAAMoT,GAE/B,QAAI1B,EAAQ,IAIRA,GADY1R,EAAKmR,OAAS,EAE5BnR,EAAKsjB,MAELrK,GAAO7H,KAAKpR,EAAM0R,EAAO,KAEzBlQ,KAAKiU,KACA,GACT,EAyDAwI,GAAUzG,UAAU5U,IA9CpB,SAAsBwQ,GACpB,IAAIpT,EAAOwB,KAAK4c,SACZ1M,EAAQkO,GAAa5f,EAAMoT,GAE/B,OAAO1B,EAAQ,EAAInK,EAAYvH,EAAK0R,GAAO,EAC7C,EA0CAuM,GAAUzG,UAAU5C,IA/BpB,SAAsBxB,GACpB,OAAOwM,GAAape,KAAK4c,SAAUhL,IAAQ,CAC7C,EA8BA6K,GAAUzG,UAAUzU,IAlBpB,SAAsBqQ,EAAKzT,GACzB,IAAIK,EAAOwB,KAAK4c,SACZ1M,EAAQkO,GAAa5f,EAAMoT,GAQ/B,OANI1B,EAAQ,KACRlQ,KAAKiU,KACPzV,EAAKoH,KAAK,CAACgM,EAAKzT,KAEhBK,EAAK0R,GAAO,GAAK/R,EAEZ6B,IACT,EA0GA0c,GAAS1G,UAAUuG,MAtEnB,WACEvc,KAAKiU,KAAO,EACZjU,KAAK4c,SAAW,CACd,KAAQ,IAAIP,GACZ,IAAO,IAAKtC,IAAO0C,IACnB,OAAU,IAAIJ,GAElB,EAgEAK,GAAS1G,UAAkB,OArD3B,SAAwBpE,GACtB,IAAInB,EAASsR,GAAW/hB,KAAM4R,GAAa,OAAEA,GAE7C,OADA5R,KAAKiU,MAAQxD,EAAS,EAAI,EACnBA,CACT,EAkDAiM,GAAS1G,UAAU5U,IAvCnB,SAAqBwQ,GACnB,OAAOmQ,GAAW/hB,KAAM4R,GAAKxQ,IAAIwQ,EACnC,EAsCA8K,GAAS1G,UAAU5C,IA3BnB,SAAqBxB,GACnB,OAAOmQ,GAAW/hB,KAAM4R,GAAKwB,IAAIxB,EACnC,EA0BA8K,GAAS1G,UAAUzU,IAdnB,SAAqBqQ,EAAKzT,GACxB,IAAIK,EAAOujB,GAAW/hB,KAAM4R,GACxBqC,EAAOzV,EAAKyV,KAIhB,OAFAzV,EAAK+C,IAAIqQ,EAAKzT,GACd6B,KAAKiU,MAAQzV,EAAKyV,MAAQA,EAAO,EAAI,EAC9BjU,IACT,EA0DA2c,GAAS3G,UAAU6G,IAAMF,GAAS3G,UAAUpQ,KAnB5C,SAAqBzH,GAEnB,OADA6B,KAAK4c,SAASrb,IAAIpD,EAAO8H,GAClBjG,IACT,EAiBA2c,GAAS3G,UAAU5C,IANnB,SAAqBjV,GACnB,OAAO6B,KAAK4c,SAASxJ,IAAIjV,EAC3B,EAsGA2e,GAAM9G,UAAUuG,MA3EhB,WACEvc,KAAK4c,SAAW,IAAIH,GACpBzc,KAAKiU,KAAO,CACd,EAyEA6I,GAAM9G,UAAkB,OA9DxB,SAAqBpE,GACnB,IAAIpT,EAAOwB,KAAK4c,SACZnM,EAASjS,EAAa,OAAEoT,GAG5B,OADA5R,KAAKiU,KAAOzV,EAAKyV,KACVxD,CACT,EAyDAqM,GAAM9G,UAAU5U,IA9ChB,SAAkBwQ,GAChB,OAAO5R,KAAK4c,SAASxb,IAAIwQ,EAC3B,EA6CAkL,GAAM9G,UAAU5C,IAlChB,SAAkBxB,GAChB,OAAO5R,KAAK4c,SAASxJ,IAAIxB,EAC3B,EAiCAkL,GAAM9G,UAAUzU,IArBhB,SAAkBqQ,EAAKzT,GACrB,IAAIK,EAAOwB,KAAK4c,SAChB,GAAIpe,aAAgBie,GAAW,CAC7B,IAAIuF,EAAQxjB,EAAKoe,SACjB,IAAK7C,IAAQiI,EAAMrS,OAASsS,IAG1B,OAFAD,EAAMpc,KAAK,CAACgM,EAAKzT,IACjB6B,KAAKiU,OAASzV,EAAKyV,KACZjU,KAETxB,EAAOwB,KAAK4c,SAAW,IAAIF,GAASsF,EACtC,CAGA,OAFAxjB,EAAK+C,IAAIqQ,EAAKzT,GACd6B,KAAKiU,KAAOzV,EAAKyV,KACVjU,IACT,EAqcA,IAAIse,GAAW4D,GAAeC,IAU1BC,GAAgBF,GAAeG,IAAiB,GAWpD,SAASC,GAAU5Q,EAAYpB,GAC7B,IAAIG,GAAS,EAKb,OAJA6N,GAAS5M,GAAY,SAASvT,EAAO+R,EAAOwB,GAE1C,OADAjB,IAAWH,EAAUnS,EAAO+R,EAAOwB,EAErC,IACOjB,CACT,CAYA,SAAS8R,GAAazS,EAAOE,EAAUa,GAIrC,IAHA,IAAIX,GAAS,EACTP,EAASG,EAAMH,SAEVO,EAAQP,GAAQ,CACvB,IAAIxR,EAAQ2R,EAAMI,GACdsC,EAAUxC,EAAS7R,GAEvB,GAAe,MAAXqU,IAAoB3T,IAAakH,EAC5ByM,GAAYA,IAAYgQ,GAAShQ,GAClC3B,EAAW2B,EAAS3T,IAE1B,IAAIA,EAAW2T,EACX/B,EAAStS,CAEjB,CACA,OAAOsS,CACT,CAsCA,SAASgS,GAAW/Q,EAAYpB,GAC9B,IAAIG,EAAS,GAMb,OALA6N,GAAS5M,GAAY,SAASvT,EAAO+R,EAAOwB,GACtCpB,EAAUnS,EAAO+R,EAAOwB,IAC1BjB,EAAO7K,KAAKzH,EAEhB,IACOsS,CACT,CAaA,SAASiS,GAAY5S,EAAO6S,EAAOrS,EAAWsS,EAAUnS,GACtD,IAAIP,GAAS,EACTP,EAASG,EAAMH,OAKnB,IAHAW,IAAcA,EAAYuS,IAC1BpS,IAAWA,EAAS,MAEXP,EAAQP,GAAQ,CACvB,IAAIxR,EAAQ2R,EAAMI,GACdyS,EAAQ,GAAKrS,EAAUnS,GACrBwkB,EAAQ,EAEVD,GAAYvkB,EAAOwkB,EAAQ,EAAGrS,EAAWsS,EAAUnS,GAEnDO,GAAUP,EAAQtS,GAEVykB,IACVnS,EAAOA,EAAOd,QAAUxR,EAE5B,CACA,OAAOsS,CACT,CAaA,IAAIqS,GAAUC,KAYVC,GAAeD,IAAc,GAUjC,SAASZ,GAAW9P,EAAQrC,GAC1B,OAAOqC,GAAUyQ,GAAQzQ,EAAQrC,EAAU0G,GAC7C,CAUA,SAAS2L,GAAgBhQ,EAAQrC,GAC/B,OAAOqC,GAAU2Q,GAAa3Q,EAAQrC,EAAU0G,GAClD,CAWA,SAASuM,GAAc5Q,EAAQnU,GAC7B,OAAOqS,GAAYrS,GAAO,SAAS0T,GACjC,OAAOsR,GAAW7Q,EAAOT,GAC3B,GACF,CAUA,SAASuR,GAAQ9Q,EAAQ+Q,GAMvB,IAHA,IAAIlT,EAAQ,EACRP,GAHJyT,EAAOC,GAASD,EAAM/Q,IAGJ1C,OAED,MAAV0C,GAAkBnC,EAAQP,GAC/B0C,EAASA,EAAOiR,GAAMF,EAAKlT,OAE7B,OAAQA,GAASA,GAASP,EAAU0C,EAAStM,CAC/C,CAaA,SAASwd,GAAelR,EAAQmR,EAAUC,GACxC,IAAIhT,EAAS+S,EAASnR,GACtB,OAAO6I,GAAQ7I,GAAU5B,EAASO,GAAUP,EAAQgT,EAAYpR,GAClE,CASA,SAASqR,GAAWvlB,GAClB,OAAa,MAATA,EACKA,IAAU4H,EAn7FJ,qBARL,gBA67FF+R,IAAkBA,MAAkBpK,GAAOvP,GA23FrD,SAAmBA,GACjB,IAAIwlB,EAAQrN,GAAe1G,KAAKzR,EAAO2Z,IACnC2H,EAAMthB,EAAM2Z,IAEhB,IACE3Z,EAAM2Z,IAAkB/R,EACxB,IAAI6d,GAAW,CACjB,CAAE,MAAOlV,GAAI,CAEb,IAAI+B,EAASmG,GAAqBhH,KAAKzR,GAQvC,OAPIylB,IACED,EACFxlB,EAAM2Z,IAAkB2H,SAEjBthB,EAAM2Z,KAGVrH,CACT,CA54FMoT,CAAU1lB,GA+5GhB,SAAwBA,GACtB,OAAOyY,GAAqBhH,KAAKzR,EACnC,CAh6GM2lB,CAAe3lB,EACrB,CAWA,SAAS4lB,GAAO5lB,EAAO6lB,GACrB,OAAO7lB,EAAQ6lB,CACjB,CAUA,SAASC,GAAQ5R,EAAQT,GACvB,OAAiB,MAAVS,GAAkBiE,GAAe1G,KAAKyC,EAAQT,EACvD,CAUA,SAASsS,GAAU7R,EAAQT,GACzB,OAAiB,MAAVS,GAAkBT,KAAOlE,GAAO2E,EACzC,CAyBA,SAAS8R,GAAiBC,EAAQpU,EAAUa,GAS1C,IARA,IAAI2Q,EAAW3Q,EAAaD,GAAoBF,GAC5Cf,EAASyU,EAAO,GAAGzU,OACnB0U,EAAYD,EAAOzU,OACnB2U,EAAWD,EACXE,EAASxT,EAAMsT,GACfG,EAAYC,IACZhU,EAAS,GAEN6T,KAAY,CACjB,IAAIxU,EAAQsU,EAAOE,GACfA,GAAYtU,IACdF,EAAQgB,GAAShB,EAAOkD,GAAUhD,KAEpCwU,EAAYlL,GAAUxJ,EAAMH,OAAQ6U,GACpCD,EAAOD,IAAazT,IAAeb,GAAaL,GAAU,KAAOG,EAAMH,QAAU,KAC7E,IAAIgN,GAAS2H,GAAYxU,GACzB/J,CACN,CACA+J,EAAQsU,EAAO,GAEf,IAAIlU,GAAS,EACTwU,EAAOH,EAAO,GAElB5C,EACA,OAASzR,EAAQP,GAAUc,EAAOd,OAAS6U,GAAW,CACpD,IAAIrmB,EAAQ2R,EAAMI,GACdrR,EAAWmR,EAAWA,EAAS7R,GAASA,EAG5C,GADAA,EAAS0S,GAAwB,IAAV1S,EAAeA,EAAQ,IACxCumB,EACExR,GAASwR,EAAM7lB,GACf2iB,EAAS/Q,EAAQ5R,EAAUgS,IAC5B,CAEL,IADAyT,EAAWD,IACFC,GAAU,CACjB,IAAInR,EAAQoR,EAAOD,GACnB,KAAMnR,EACED,GAASC,EAAOtU,GAChB2iB,EAAS4C,EAAOE,GAAWzlB,EAAUgS,IAE3C,SAAS8Q,CAEb,CACI+C,GACFA,EAAK9e,KAAK/G,GAEZ4R,EAAO7K,KAAKzH,EACd,CACF,CACA,OAAOsS,CACT,CA8BA,SAASkU,GAAWtS,EAAQ+Q,EAAM1T,GAGhC,IAAIF,EAAiB,OADrB6C,EAASuS,GAAOvS,EADhB+Q,EAAOC,GAASD,EAAM/Q,KAEMA,EAASA,EAAOiR,GAAMuB,GAAKzB,KACvD,OAAe,MAAR5T,EAAezJ,EAAYwJ,GAAMC,EAAM6C,EAAQ3C,EACxD,CASA,SAASoV,GAAgB3mB,GACvB,OAAO8c,GAAa9c,IAAUulB,GAAWvlB,IAAUuI,CACrD,CAsCA,SAASqe,GAAY5mB,EAAO6lB,EAAOhF,EAASC,EAAYC,GACtD,OAAI/gB,IAAU6lB,IAGD,MAAT7lB,GAA0B,MAAT6lB,IAAmB/I,GAAa9c,KAAW8c,GAAa+I,GACpE7lB,GAAUA,GAAS6lB,GAAUA,EAmBxC,SAAyB3R,EAAQ2R,EAAOhF,EAASC,EAAY+F,EAAW9F,GACtE,IAAI+F,EAAW/J,GAAQ7I,GACnB6S,EAAWhK,GAAQ8I,GACnBmB,EAASF,EAAWte,EAAW+Y,GAAOrN,GACtC+S,EAASF,EAAWve,EAAW+Y,GAAOsE,GAKtCqB,GAHJF,EAASA,GAAUze,EAAUS,EAAYge,IAGhBhe,EACrBme,GAHJF,EAASA,GAAU1e,EAAUS,EAAYie,IAGhBje,EACrBoe,EAAYJ,GAAUC,EAE1B,GAAIG,GAAaxM,GAAS1G,GAAS,CACjC,IAAK0G,GAASiL,GACZ,OAAO,EAETiB,GAAW,EACXI,GAAW,CACb,CACA,GAAIE,IAAcF,EAEhB,OADAnG,IAAUA,EAAQ,IAAIpC,IACdmI,GAAY3V,GAAa+C,GAC7BmT,GAAYnT,EAAQ2R,EAAOhF,EAASC,EAAY+F,EAAW9F,GA81EnE,SAAoB7M,EAAQ2R,EAAOvE,EAAKT,EAASC,EAAY+F,EAAW9F,GACtE,OAAQO,GACN,KAAK9X,EACH,GAAK0K,EAAOqO,YAAcsD,EAAMtD,YAC3BrO,EAAOoO,YAAcuD,EAAMvD,WAC9B,OAAO,EAETpO,EAASA,EAAOmO,OAChBwD,EAAQA,EAAMxD,OAEhB,KAAK9Y,EACH,QAAK2K,EAAOqO,YAAcsD,EAAMtD,aAC3BsE,EAAU,IAAI9N,GAAW7E,GAAS,IAAI6E,GAAW8M,KAKxD,KAAKpd,EACL,KAAKC,EACL,KAAKK,EAGH,OAAO8W,IAAI3L,GAAS2R,GAEtB,KAAKld,EACH,OAAOuL,EAAOtU,MAAQimB,EAAMjmB,MAAQsU,EAAOoT,SAAWzB,EAAMyB,QAE9D,KAAKpe,EACL,KAAKE,EAIH,OAAO8K,GAAW2R,EAAQ,GAE5B,KAAK/c,EACH,IAAIye,EAAU3R,GAEhB,KAAKzM,EACH,IAAIqe,EAxnLe,EAwnLH3G,EAGhB,GAFA0G,IAAYA,EAAUlR,IAElBnC,EAAO4B,MAAQ+P,EAAM/P,OAAS0R,EAChC,OAAO,EAGT,IAAI3E,EAAU9B,EAAM9d,IAAIiR,GACxB,GAAI2O,EACF,OAAOA,GAAWgD,EAEpBhF,GAloLqB,EAqoLrBE,EAAM3d,IAAI8Q,EAAQ2R,GAClB,IAAIvT,EAAS+U,GAAYE,EAAQrT,GAASqT,EAAQ1B,GAAQhF,EAASC,EAAY+F,EAAW9F,GAE1F,OADAA,EAAc,OAAE7M,GACT5B,EAET,KAAKjJ,EACH,GAAIqT,GACF,OAAOA,GAAcjL,KAAKyC,IAAWwI,GAAcjL,KAAKoU,GAG9D,OAAO,CACT,CA55EQ4B,CAAWvT,EAAQ2R,EAAOmB,EAAQnG,EAASC,EAAY+F,EAAW9F,GAExE,KAvvGuB,EAuvGjBF,GAAiC,CACrC,IAAI6G,EAAeR,GAAY/O,GAAe1G,KAAKyC,EAAQ,eACvDyT,EAAeR,GAAYhP,GAAe1G,KAAKoU,EAAO,eAE1D,GAAI6B,GAAgBC,EAAc,CAChC,IAAIC,EAAeF,EAAexT,EAAOlU,QAAUkU,EAC/C2T,EAAeF,EAAe9B,EAAM7lB,QAAU6lB,EAGlD,OADA9E,IAAUA,EAAQ,IAAIpC,IACfkI,EAAUe,EAAcC,EAAchH,EAASC,EAAYC,EACpE,CACF,CACA,QAAKqG,IAGLrG,IAAUA,EAAQ,IAAIpC,IA05ExB,SAAsBzK,EAAQ2R,EAAOhF,EAASC,EAAY+F,EAAW9F,GACnE,IAAIyG,EAjqLmB,EAiqLP3G,EACZiH,EAAW9E,GAAW9O,GACtB6T,EAAYD,EAAStW,OAIzB,GAAIuW,GAHW/E,GAAW6C,GACDrU,SAEMgW,EAC7B,OAAO,EAGT,IADA,IAAIzV,EAAQgW,EACLhW,KAAS,CACd,IAAI0B,EAAMqU,EAAS/V,GACnB,KAAMyV,EAAY/T,KAAOoS,EAAQ1N,GAAe1G,KAAKoU,EAAOpS,IAC1D,OAAO,CAEX,CAEA,IAAIuU,EAAajH,EAAM9d,IAAIiR,GACvB+T,EAAalH,EAAM9d,IAAI4iB,GAC3B,GAAImC,GAAcC,EAChB,OAAOD,GAAcnC,GAASoC,GAAc/T,EAE9C,IAAI5B,GAAS,EACbyO,EAAM3d,IAAI8Q,EAAQ2R,GAClB9E,EAAM3d,IAAIyiB,EAAO3R,GAGjB,IADA,IAAIgU,EAAWV,IACNzV,EAAQgW,GAAW,CAE1B,IAAI/H,EAAW9L,EADfT,EAAMqU,EAAS/V,IAEXoW,EAAWtC,EAAMpS,GAErB,GAAIqN,EACF,IAAIsH,EAAWZ,EACX1G,EAAWqH,EAAUnI,EAAUvM,EAAKoS,EAAO3R,EAAQ6M,GACnDD,EAAWd,EAAUmI,EAAU1U,EAAKS,EAAQ2R,EAAO9E,GAGzD,KAAMqH,IAAaxgB,EACVoY,IAAamI,GAAYtB,EAAU7G,EAAUmI,EAAUtH,EAASC,EAAYC,GAC7EqH,GACD,CACL9V,GAAS,EACT,KACF,CACA4V,IAAaA,EAAkB,eAAPzU,EAC1B,CACA,GAAInB,IAAW4V,EAAU,CACvB,IAAIG,EAAUnU,EAAOiN,YACjBmH,EAAUzC,EAAM1E,YAGhBkH,GAAWC,KACV,gBAAiBpU,MAAU,gBAAiB2R,IACzB,mBAAXwC,GAAyBA,aAAmBA,GACjC,mBAAXC,GAAyBA,aAAmBA,IACvDhW,GAAS,EAEb,CAGA,OAFAyO,EAAc,OAAE7M,GAChB6M,EAAc,OAAE8E,GACTvT,CACT,CAx9ESiW,CAAarU,EAAQ2R,EAAOhF,EAASC,EAAY+F,EAAW9F,GACrE,CA5DSyH,CAAgBxoB,EAAO6lB,EAAOhF,EAASC,EAAY8F,GAAa7F,GACzE,CAkFA,SAAS0H,GAAYvU,EAAQzJ,EAAQie,EAAW5H,GAC9C,IAAI/O,EAAQ2W,EAAUlX,OAClBA,EAASO,EACT4W,GAAgB7H,EAEpB,GAAc,MAAV5M,EACF,OAAQ1C,EAGV,IADA0C,EAAS3E,GAAO2E,GACTnC,KAAS,CACd,IAAI1R,EAAOqoB,EAAU3W,GACrB,GAAK4W,GAAgBtoB,EAAK,GAClBA,EAAK,KAAO6T,EAAO7T,EAAK,MACtBA,EAAK,KAAM6T,GAEnB,OAAO,CAEX,CACA,OAASnC,EAAQP,GAAQ,CAEvB,IAAIiC,GADJpT,EAAOqoB,EAAU3W,IACF,GACXiO,EAAW9L,EAAOT,GAClBmV,EAAWvoB,EAAK,GAEpB,GAAIsoB,GAAgBtoB,EAAK,IACvB,GAAI2f,IAAapY,KAAe6L,KAAOS,GACrC,OAAO,MAEJ,CACL,IAAI6M,EAAQ,IAAIpC,GAChB,GAAImC,EACF,IAAIxO,EAASwO,EAAWd,EAAU4I,EAAUnV,EAAKS,EAAQzJ,EAAQsW,GAEnE,KAAMzO,IAAW1K,EACTgf,GAAYgC,EAAU5I,EAAU6I,EAA+C/H,EAAYC,GAC3FzO,GAEN,OAAO,CAEX,CACF,CACA,OAAO,CACT,CAUA,SAASwW,GAAa9oB,GACpB,SAAKqd,GAASrd,KA05FEqR,EA15FiBrR,EA25FxBqY,IAAeA,MAAchH,MAx5FxB0T,GAAW/kB,GAAS4Y,GAAa7M,IAChC4J,KAAKyG,GAASpc,IAs5F/B,IAAkBqR,CAr5FlB,CA2CA,SAAS0X,GAAa/oB,GAGpB,MAAoB,mBAATA,EACFA,EAEI,MAATA,EACKgpB,GAEW,iBAAThpB,EACF+c,GAAQ/c,GACXipB,GAAoBjpB,EAAM,GAAIA,EAAM,IACpCkpB,GAAYlpB,GAEXmD,GAASnD,EAClB,CASA,SAASmpB,GAASjV,GAChB,IAAKkV,GAAYlV,GACf,OAAO8G,GAAW9G,GAEpB,IAAI5B,EAAS,GACb,IAAK,IAAImB,KAAOlE,GAAO2E,GACjBiE,GAAe1G,KAAKyC,EAAQT,IAAe,eAAPA,GACtCnB,EAAO7K,KAAKgM,GAGhB,OAAOnB,CACT,CAiCA,SAAS+W,GAAOrpB,EAAO6lB,GACrB,OAAO7lB,EAAQ6lB,CACjB,CAUA,SAASyD,GAAQ/V,EAAY1B,GAC3B,IAAIE,GAAS,EACTO,EAASiX,GAAYhW,GAAcX,EAAMW,EAAW/B,QAAU,GAKlE,OAHA2O,GAAS5M,GAAY,SAASvT,EAAOyT,EAAKF,GACxCjB,IAASP,GAASF,EAAS7R,EAAOyT,EAAKF,EACzC,IACOjB,CACT,CASA,SAAS4W,GAAYze,GACnB,IAAIie,EAAYc,GAAa/e,GAC7B,OAAwB,GAApBie,EAAUlX,QAAekX,EAAU,GAAG,GACjCe,GAAwBf,EAAU,GAAG,GAAIA,EAAU,GAAG,IAExD,SAASxU,GACd,OAAOA,IAAWzJ,GAAUge,GAAYvU,EAAQzJ,EAAQie,EAC1D,CACF,CAUA,SAASO,GAAoBhE,EAAM2D,GACjC,OAAIc,GAAMzE,IAAS0E,GAAmBf,GAC7Ba,GAAwBtE,GAAMF,GAAO2D,GAEvC,SAAS1U,GACd,IAAI8L,EAAW/c,GAAIiR,EAAQ+Q,GAC3B,OAAQjF,IAAapY,GAAaoY,IAAa4I,EAC3CgB,GAAM1V,EAAQ+Q,GACd2B,GAAYgC,EAAU5I,EAAU6I,EACtC,CACF,CAaA,SAASgB,GAAU3V,EAAQzJ,EAAQqf,EAAUhJ,EAAYC,GACnD7M,IAAWzJ,GAGfka,GAAQla,GAAQ,SAASme,EAAUnV,GAEjC,GADAsN,IAAUA,EAAQ,IAAIpC,IAClBtB,GAASuL,IA+BjB,SAAuB1U,EAAQzJ,EAAQgJ,EAAKqW,EAAUC,EAAWjJ,EAAYC,GAC3E,IAAIf,EAAWgK,GAAQ9V,EAAQT,GAC3BmV,EAAWoB,GAAQvf,EAAQgJ,GAC3BoP,EAAU9B,EAAM9d,IAAI2lB,GAExB,GAAI/F,EACFjD,GAAiB1L,EAAQT,EAAKoP,OADhC,CAIA,IAAIxf,EAAWyd,EACXA,EAAWd,EAAU4I,EAAWnV,EAAM,GAAKS,EAAQzJ,EAAQsW,GAC3DnZ,EAEA0b,EAAWjgB,IAAauE,EAE5B,GAAI0b,EAAU,CACZ,IAAIxE,EAAQ/B,GAAQ6L,GAChB3J,GAAUH,GAASlE,GAASgO,GAC5BqB,GAAWnL,IAAUG,GAAU9N,GAAayX,GAEhDvlB,EAAWulB,EACP9J,GAASG,GAAUgL,EACjBlN,GAAQiD,GACV3c,EAAW2c,EAEJkK,GAAkBlK,GACzB3c,EAAWoc,GAAUO,GAEdf,GACPqE,GAAW,EACXjgB,EAAWoe,GAAYmH,GAAU,IAE1BqB,GACP3G,GAAW,EACXjgB,EAAWof,GAAgBmG,GAAU,IAGrCvlB,EAAW,GAGN8mB,GAAcvB,IAAa5J,GAAY4J,IAC9CvlB,EAAW2c,EACPhB,GAAYgB,GACd3c,EAAW+mB,GAAcpK,GAEjB3C,GAAS2C,KAAa+E,GAAW/E,KACzC3c,EAAWqe,GAAgBkH,KAI7BtF,GAAW,CAEf,CACIA,IAEFvC,EAAM3d,IAAIwlB,EAAUvlB,GACpB0mB,EAAU1mB,EAAUulB,EAAUkB,EAAUhJ,EAAYC,GACpDA,EAAc,OAAE6H,IAElBhJ,GAAiB1L,EAAQT,EAAKpQ,EAnD9B,CAoDF,CA1FMgnB,CAAcnW,EAAQzJ,EAAQgJ,EAAKqW,EAAUD,GAAW/I,EAAYC,OAEjE,CACH,IAAI1d,EAAWyd,EACXA,EAAWkJ,GAAQ9V,EAAQT,GAAMmV,EAAWnV,EAAM,GAAKS,EAAQzJ,EAAQsW,GACvEnZ,EAEAvE,IAAauE,IACfvE,EAAWulB,GAEbhJ,GAAiB1L,EAAQT,EAAKpQ,EAChC,CACF,GAAGwe,GACL,CAuFA,SAASyI,GAAQ3Y,EAAO4C,GACtB,IAAI/C,EAASG,EAAMH,OACnB,GAAKA,EAIL,OAAO4N,GADP7K,GAAKA,EAAI,EAAI/C,EAAS,EACJA,GAAUG,EAAM4C,GAAK3M,CACzC,CAWA,SAAS2iB,GAAYhX,EAAYiX,EAAWC,GAExCD,EADEA,EAAUhZ,OACAmB,GAAS6X,GAAW,SAAS3Y,GACvC,OAAIkL,GAAQlL,GACH,SAAS7R,GACd,OAAOglB,GAAQhlB,EAA2B,IAApB6R,EAASL,OAAeK,EAAS,GAAKA,EAC9D,EAEKA,CACT,IAEY,CAACmX,IAGf,IAAIjX,GAAS,EACbyY,EAAY7X,GAAS6X,EAAW3V,GAAU6V,OAE1C,IAAIpY,EAASgX,GAAQ/V,GAAY,SAASvT,EAAOyT,EAAKF,GACpD,IAAIoX,EAAWhY,GAAS6X,GAAW,SAAS3Y,GAC1C,OAAOA,EAAS7R,EAClB,IACA,MAAO,CAAE,SAAY2qB,EAAU,QAAW5Y,EAAO,MAAS/R,EAC5D,IAEA,OA5xFJ,SAAoB2R,EAAOiZ,GACzB,IAAIpZ,EAASG,EAAMH,OAGnB,IADAG,EAAMkZ,MAyxFsB,SAAS3W,EAAQ2R,GACzC,OA04BJ,SAAyB3R,EAAQ2R,EAAO4E,GAOtC,IANA,IAAI1Y,GAAS,EACT+Y,EAAc5W,EAAOyW,SACrBI,EAAclF,EAAM8E,SACpBnZ,EAASsZ,EAAYtZ,OACrBwZ,EAAeP,EAAOjZ,SAEjBO,EAAQP,GAAQ,CACvB,IAAIc,EAAS2Y,GAAiBH,EAAY/Y,GAAQgZ,EAAYhZ,IAC9D,GAAIO,EACF,OAAIP,GAASiZ,EACJ1Y,EAGFA,GAAmB,QADdmY,EAAO1Y,IACiB,EAAI,EAE5C,CAQA,OAAOmC,EAAOnC,MAAQ8T,EAAM9T,KAC9B,CAn6BWmZ,CAAgBhX,EAAQ2R,EAAO4E,EACxC,IA1xFKjZ,KACLG,EAAMH,GAAUG,EAAMH,GAAQxR,MAEhC,OAAO2R,CACT,CAoxFWwZ,CAAW7Y,EAGpB,CA0BA,SAAS8Y,GAAWlX,EAAQqM,EAAOpO,GAKjC,IAJA,IAAIJ,GAAS,EACTP,EAAS+O,EAAM/O,OACfc,EAAS,CAAC,IAELP,EAAQP,GAAQ,CACvB,IAAIyT,EAAO1E,EAAMxO,GACb/R,EAAQglB,GAAQ9Q,EAAQ+Q,GAExB9S,EAAUnS,EAAOilB,IACnBoG,GAAQ/Y,EAAQ4S,GAASD,EAAM/Q,GAASlU,EAE5C,CACA,OAAOsS,CACT,CA0BA,SAASgZ,GAAY3Z,EAAOmB,EAAQjB,EAAUa,GAC5C,IAAI6Y,EAAU7Y,EAAaqB,GAAkBvB,GACzCT,GAAS,EACTP,EAASsB,EAAOtB,OAChB+U,EAAO5U,EAQX,IANIA,IAAUmB,IACZA,EAAS2M,GAAU3M,IAEjBjB,IACF0U,EAAO5T,GAAShB,EAAOkD,GAAUhD,OAE1BE,EAAQP,GAKf,IAJA,IAAImC,EAAY,EACZ3T,EAAQ8S,EAAOf,GACfrR,EAAWmR,EAAWA,EAAS7R,GAASA,GAEpC2T,EAAY4X,EAAQhF,EAAM7lB,EAAUiT,EAAWjB,KAAgB,GACjE6T,IAAS5U,GACX2H,GAAO7H,KAAK8U,EAAM5S,EAAW,GAE/B2F,GAAO7H,KAAKE,EAAOgC,EAAW,GAGlC,OAAOhC,CACT,CAWA,SAAS6Z,GAAW7Z,EAAO8Z,GAIzB,IAHA,IAAIja,EAASG,EAAQ8Z,EAAQja,OAAS,EAClCgF,EAAYhF,EAAS,EAElBA,KAAU,CACf,IAAIO,EAAQ0Z,EAAQja,GACpB,GAAIA,GAAUgF,GAAazE,IAAU2Z,EAAU,CAC7C,IAAIA,EAAW3Z,EACXqN,GAAQrN,GACVuH,GAAO7H,KAAKE,EAAOI,EAAO,GAE1B4Z,GAAUha,EAAOI,EAErB,CACF,CACA,OAAOJ,CACT,CAWA,SAAS2N,GAAWoB,EAAOC,GACzB,OAAOD,EAAQnG,GAAYgB,MAAkBoF,EAAQD,EAAQ,GAC/D,CAiCA,SAASkL,GAAWnX,EAAQF,GAC1B,IAAIjC,EAAS,GACb,IAAKmC,GAAUF,EAAI,GAAKA,EAAIpM,EAC1B,OAAOmK,EAIT,GACMiC,EAAI,IACNjC,GAAUmC,IAEZF,EAAIgG,GAAYhG,EAAI,MAElBE,GAAUA,SAELF,GAET,OAAOjC,CACT,CAUA,SAASuZ,GAASxa,EAAMya,GACtB,OAAOC,GAAYC,GAAS3a,EAAMya,EAAO9C,IAAW3X,EAAO,GAC7D,CASA,SAAS4a,GAAW1Y,GAClB,OAAO8L,GAAYvM,GAAOS,GAC5B,CAUA,SAAS2Y,GAAe3Y,EAAYgB,GAClC,IAAI5C,EAAQmB,GAAOS,GACnB,OAAOiM,GAAY7N,EAAO+N,GAAUnL,EAAG,EAAG5C,EAAMH,QAClD,CAYA,SAAS6Z,GAAQnX,EAAQ+Q,EAAMjlB,EAAO8gB,GACpC,IAAKzD,GAASnJ,GACZ,OAAOA,EAST,IALA,IAAInC,GAAS,EACTP,GAHJyT,EAAOC,GAASD,EAAM/Q,IAGJ1C,OACdgF,EAAYhF,EAAS,EACrB2a,EAASjY,EAEI,MAAViY,KAAoBpa,EAAQP,GAAQ,CACzC,IAAIiC,EAAM0R,GAAMF,EAAKlT,IACjB1O,EAAWrD,EAEf,GAAY,cAARyT,GAA+B,gBAARA,GAAiC,cAARA,EAClD,OAAOS,EAGT,GAAInC,GAASyE,EAAW,CACtB,IAAIwJ,EAAWmM,EAAO1Y,IACtBpQ,EAAWyd,EAAaA,EAAWd,EAAUvM,EAAK0Y,GAAUvkB,KAC3CA,IACfvE,EAAWga,GAAS2C,GAChBA,EACCZ,GAAQ6F,EAAKlT,EAAQ,IAAM,GAAK,CAAC,EAE1C,CACAgO,GAAYoM,EAAQ1Y,EAAKpQ,GACzB8oB,EAASA,EAAO1Y,EAClB,CACA,OAAOS,CACT,CAUA,IAAIkY,GAAenQ,GAAqB,SAAS5K,EAAMhR,GAErD,OADA4b,GAAQ7Y,IAAIiO,EAAMhR,GACXgR,CACT,EAH6B2X,GAazBqD,GAAmBxS,GAA4B,SAASxI,EAAMoD,GAChE,OAAOoF,GAAexI,EAAM,WAAY,CACtC,cAAgB,EAChB,YAAc,EACd,MAASib,GAAS7X,GAClB,UAAY,GAEhB,EAPwCuU,GAgBxC,SAASuD,GAAYhZ,GACnB,OAAOiM,GAAY1M,GAAOS,GAC5B,CAWA,SAASiZ,GAAU7a,EAAOma,EAAOW,GAC/B,IAAI1a,GAAS,EACTP,EAASG,EAAMH,OAEfsa,EAAQ,IACVA,GAASA,EAAQta,EAAS,EAAKA,EAASsa,IAE1CW,EAAMA,EAAMjb,EAASA,EAASib,GACpB,IACRA,GAAOjb,GAETA,EAASsa,EAAQW,EAAM,EAAMA,EAAMX,IAAW,EAC9CA,KAAW,EAGX,IADA,IAAIxZ,EAASM,EAAMpB,KACVO,EAAQP,GACfc,EAAOP,GAASJ,EAAMI,EAAQ+Z,GAEhC,OAAOxZ,CACT,CAWA,SAASoa,GAASnZ,EAAYpB,GAC5B,IAAIG,EAMJ,OAJA6N,GAAS5M,GAAY,SAASvT,EAAO+R,EAAOwB,GAE1C,QADAjB,EAASH,EAAUnS,EAAO+R,EAAOwB,GAEnC,MACSjB,CACX,CAcA,SAASqa,GAAgBhb,EAAO3R,EAAO4sB,GACrC,IAAIC,EAAM,EACNC,EAAgB,MAATnb,EAAgBkb,EAAMlb,EAAMH,OAEvC,GAAoB,iBAATxR,GAAqBA,GAAUA,GAAS8sB,GAn/H3BzkB,WAm/H0D,CAChF,KAAOwkB,EAAMC,GAAM,CACjB,IAAIC,EAAOF,EAAMC,IAAU,EACvBpsB,EAAWiR,EAAMob,GAEJ,OAAbrsB,IAAsB2jB,GAAS3jB,KAC9BksB,EAAclsB,GAAYV,EAAUU,EAAWV,GAClD6sB,EAAME,EAAM,EAEZD,EAAOC,CAEX,CACA,OAAOD,CACT,CACA,OAAOE,GAAkBrb,EAAO3R,EAAOgpB,GAAU4D,EACnD,CAeA,SAASI,GAAkBrb,EAAO3R,EAAO6R,EAAU+a,GACjD,IAAIC,EAAM,EACNC,EAAgB,MAATnb,EAAgB,EAAIA,EAAMH,OACrC,GAAa,IAATsb,EACF,OAAO,EAST,IALA,IAAIG,GADJjtB,EAAQ6R,EAAS7R,KACQA,EACrBktB,EAAsB,OAAVltB,EACZmtB,EAAc9I,GAASrkB,GACvBotB,EAAiBptB,IAAU4H,EAExBilB,EAAMC,GAAM,CACjB,IAAIC,EAAMxS,IAAasS,EAAMC,GAAQ,GACjCpsB,EAAWmR,EAASF,EAAMob,IAC1BM,EAAe3sB,IAAakH,EAC5B0lB,EAAyB,OAAb5sB,EACZ6sB,EAAiB7sB,GAAaA,EAC9B8sB,EAAcnJ,GAAS3jB,GAE3B,GAAIusB,EACF,IAAIQ,EAASb,GAAcW,OAE3BE,EADSL,EACAG,IAAmBX,GAAcS,GACjCH,EACAK,GAAkBF,IAAiBT,IAAeU,GAClDH,EACAI,GAAkBF,IAAiBC,IAAcV,IAAeY,IAChEF,IAAaE,IAGbZ,EAAclsB,GAAYV,EAAUU,EAAWV,GAEtDytB,EACFZ,EAAME,EAAM,EAEZD,EAAOC,CAEX,CACA,OAAO5R,GAAU2R,EA1jICzkB,WA2jIpB,CAWA,SAASqlB,GAAe/b,EAAOE,GAM7B,IALA,IAAIE,GAAS,EACTP,EAASG,EAAMH,OACfa,EAAW,EACXC,EAAS,KAEJP,EAAQP,GAAQ,CACvB,IAAIxR,EAAQ2R,EAAMI,GACdrR,EAAWmR,EAAWA,EAAS7R,GAASA,EAE5C,IAAK+R,IAAU8N,GAAGnf,EAAU6lB,GAAO,CACjC,IAAIA,EAAO7lB,EACX4R,EAAOD,KAAwB,IAAVrS,EAAc,EAAIA,CACzC,CACF,CACA,OAAOsS,CACT,CAUA,SAASqb,GAAa3tB,GACpB,MAAoB,iBAATA,EACFA,EAELqkB,GAASrkB,GACJoI,GAEDpI,CACV,CAUA,SAAS4tB,GAAa5tB,GAEpB,GAAoB,iBAATA,EACT,OAAOA,EAET,GAAI+c,GAAQ/c,GAEV,OAAO2S,GAAS3S,EAAO4tB,IAAgB,GAEzC,GAAIvJ,GAASrkB,GACX,OAAO4c,GAAiBA,GAAenL,KAAKzR,GAAS,GAEvD,IAAIsS,EAAUtS,EAAQ,GACtB,MAAkB,KAAVsS,GAAkB,EAAItS,IAAU,IAAa,KAAOsS,CAC9D,CAWA,SAASub,GAASlc,EAAOE,EAAUa,GACjC,IAAIX,GAAS,EACTsR,EAAW9Q,GACXf,EAASG,EAAMH,OACf8R,GAAW,EACXhR,EAAS,GACTiU,EAAOjU,EAEX,GAAII,EACF4Q,GAAW,EACXD,EAAW5Q,QAER,GAAIjB,GAjtIU,IAitIkB,CACnC,IAAIpO,EAAMyO,EAAW,KAAOic,GAAUnc,GACtC,GAAIvO,EACF,OAAOiT,GAAWjT,GAEpBkgB,GAAW,EACXD,EAAWtO,GACXwR,EAAO,IAAI/H,EACb,MAEE+H,EAAO1U,EAAW,GAAKS,EAEzBkR,EACA,OAASzR,EAAQP,GAAQ,CACvB,IAAIxR,EAAQ2R,EAAMI,GACdrR,EAAWmR,EAAWA,EAAS7R,GAASA,EAG5C,GADAA,EAAS0S,GAAwB,IAAV1S,EAAeA,EAAQ,EAC1CsjB,GAAY5iB,GAAaA,EAAU,CAErC,IADA,IAAIqtB,EAAYxH,EAAK/U,OACduc,KACL,GAAIxH,EAAKwH,KAAertB,EACtB,SAAS8iB,EAGT3R,GACF0U,EAAK9e,KAAK/G,GAEZ4R,EAAO7K,KAAKzH,EACd,MACUqjB,EAASkD,EAAM7lB,EAAUgS,KAC7B6T,IAASjU,GACXiU,EAAK9e,KAAK/G,GAEZ4R,EAAO7K,KAAKzH,GAEhB,CACA,OAAOsS,CACT,CAUA,SAASqZ,GAAUzX,EAAQ+Q,GAGzB,OAAiB,OADjB/Q,EAASuS,GAAOvS,EADhB+Q,EAAOC,GAASD,EAAM/Q,aAEUA,EAAOiR,GAAMuB,GAAKzB,IACpD,CAYA,SAAS+I,GAAW9Z,EAAQ+Q,EAAMgJ,EAASnN,GACzC,OAAOuK,GAAQnX,EAAQ+Q,EAAMgJ,EAAQjJ,GAAQ9Q,EAAQ+Q,IAAQnE,EAC/D,CAaA,SAASoN,GAAUvc,EAAOQ,EAAWgc,EAAQva,GAI3C,IAHA,IAAIpC,EAASG,EAAMH,OACfO,EAAQ6B,EAAYpC,GAAU,GAE1BoC,EAAY7B,MAAYA,EAAQP,IACtCW,EAAUR,EAAMI,GAAQA,EAAOJ,KAEjC,OAAOwc,EACH3B,GAAU7a,EAAQiC,EAAY,EAAI7B,EAAS6B,EAAY7B,EAAQ,EAAIP,GACnEgb,GAAU7a,EAAQiC,EAAY7B,EAAQ,EAAI,EAAK6B,EAAYpC,EAASO,EAC1E,CAYA,SAASqc,GAAiBpuB,EAAOquB,GAC/B,IAAI/b,EAAStS,EAIb,OAHIsS,aAAkB0K,KACpB1K,EAASA,EAAOtS,SAEXgT,GAAYqb,GAAS,SAAS/b,EAAQgc,GAC3C,OAAOA,EAAOjd,KAAKD,MAAMkd,EAAOhd,QAASuB,GAAU,CAACP,GAASgc,EAAO/c,MACtE,GAAGe,EACL,CAYA,SAASic,GAAQtI,EAAQpU,EAAUa,GACjC,IAAIlB,EAASyU,EAAOzU,OACpB,GAAIA,EAAS,EACX,OAAOA,EAASqc,GAAS5H,EAAO,IAAM,GAKxC,IAHA,IAAIlU,GAAS,EACTO,EAASM,EAAMpB,KAEVO,EAAQP,GAIf,IAHA,IAAIG,EAAQsU,EAAOlU,GACfoU,GAAY,IAEPA,EAAW3U,GACd2U,GAAYpU,IACdO,EAAOP,GAASqR,GAAe9Q,EAAOP,IAAUJ,EAAOsU,EAAOE,GAAWtU,EAAUa,IAIzF,OAAOmb,GAAStJ,GAAYjS,EAAQ,GAAIT,EAAUa,EACpD,CAWA,SAAS8b,GAAczuB,EAAO+S,EAAQ2b,GAMpC,IALA,IAAI1c,GAAS,EACTP,EAASzR,EAAMyR,OACfkd,EAAa5b,EAAOtB,OACpBc,EAAS,CAAC,IAELP,EAAQP,GAAQ,CACvB,IAAIxR,EAAQ+R,EAAQ2c,EAAa5b,EAAOf,GAASnK,EACjD6mB,EAAWnc,EAAQvS,EAAMgS,GAAQ/R,EACnC,CACA,OAAOsS,CACT,CASA,SAASqc,GAAoB3uB,GAC3B,OAAOkqB,GAAkBlqB,GAASA,EAAQ,EAC5C,CASA,SAAS4uB,GAAa5uB,GACpB,MAAuB,mBAATA,EAAsBA,EAAQgpB,EAC9C,CAUA,SAAS9D,GAASllB,EAAOkU,GACvB,OAAI6I,GAAQ/c,GACHA,EAEF0pB,GAAM1pB,EAAOkU,GAAU,CAAClU,GAAS6uB,GAAa3W,GAASlY,GAChE,CAWA,IAAI8uB,GAAWjD,GAWf,SAASkD,GAAUpd,EAAOma,EAAOW,GAC/B,IAAIjb,EAASG,EAAMH,OAEnB,OADAib,EAAMA,IAAQ7kB,EAAY4J,EAASib,GAC1BX,GAASW,GAAOjb,EAAUG,EAAQ6a,GAAU7a,EAAOma,EAAOW,EACrE,CAQA,IAAIzS,GAAeD,IAAmB,SAASpS,GAC7C,OAAO+H,GAAKsK,aAAarS,EAC3B,EAUA,SAAS8Z,GAAYY,EAAQrB,GAC3B,GAAIA,EACF,OAAOqB,EAAO3N,QAEhB,IAAIlD,EAAS6Q,EAAO7Q,OAChBc,EAAS0G,GAAcA,GAAYxH,GAAU,IAAI6Q,EAAOlB,YAAY3P,GAGxE,OADA6Q,EAAO2M,KAAK1c,GACLA,CACT,CASA,SAAS6P,GAAiB8M,GACxB,IAAI3c,EAAS,IAAI2c,EAAY9N,YAAY8N,EAAY1M,YAErD,OADA,IAAIxJ,GAAWzG,GAAQlP,IAAI,IAAI2V,GAAWkW,IACnC3c,CACT,CA+CA,SAASmQ,GAAgByM,EAAYlO,GACnC,IAAIqB,EAASrB,EAASmB,GAAiB+M,EAAW7M,QAAU6M,EAAW7M,OACvE,OAAO,IAAI6M,EAAW/N,YAAYkB,EAAQ6M,EAAW5M,WAAY4M,EAAW1d,OAC9E,CAUA,SAASyZ,GAAiBjrB,EAAO6lB,GAC/B,GAAI7lB,IAAU6lB,EAAO,CACnB,IAAIsJ,EAAenvB,IAAU4H,EACzBslB,EAAsB,OAAVltB,EACZovB,EAAiBpvB,GAAUA,EAC3BmtB,EAAc9I,GAASrkB,GAEvBqtB,EAAexH,IAAUje,EACzB0lB,EAAsB,OAAVzH,EACZ0H,EAAiB1H,GAAUA,EAC3B2H,EAAcnJ,GAASwB,GAE3B,IAAMyH,IAAcE,IAAgBL,GAAentB,EAAQ6lB,GACtDsH,GAAeE,GAAgBE,IAAmBD,IAAcE,GAChEN,GAAaG,GAAgBE,IAC5B4B,GAAgB5B,IACjB6B,EACH,OAAO,EAET,IAAMlC,IAAcC,IAAgBK,GAAextB,EAAQ6lB,GACtD2H,GAAe2B,GAAgBC,IAAmBlC,IAAcC,GAChEG,GAAa6B,GAAgBC,IAC5B/B,GAAgB+B,IACjB7B,EACH,OAAQ,CAEZ,CACA,OAAO,CACT,CAsDA,SAAS8B,GAAY9d,EAAM+d,EAAUC,EAASC,GAU5C,IATA,IAAIC,GAAa,EACbC,EAAane,EAAKC,OAClBme,EAAgBJ,EAAQ/d,OACxBoe,GAAa,EACbC,EAAaP,EAAS9d,OACtBse,EAAc7U,GAAUyU,EAAaC,EAAe,GACpDrd,EAASM,EAAMid,EAAaC,GAC5BC,GAAeP,IAEVI,EAAYC,GACnBvd,EAAOsd,GAAaN,EAASM,GAE/B,OAASH,EAAYE,IACfI,GAAeN,EAAYC,KAC7Bpd,EAAOid,EAAQE,IAAcle,EAAKke,IAGtC,KAAOK,KACLxd,EAAOsd,KAAere,EAAKke,KAE7B,OAAOnd,CACT,CAaA,SAAS0d,GAAiBze,EAAM+d,EAAUC,EAASC,GAWjD,IAVA,IAAIC,GAAa,EACbC,EAAane,EAAKC,OAClBye,GAAgB,EAChBN,EAAgBJ,EAAQ/d,OACxB0e,GAAc,EACdC,EAAcb,EAAS9d,OACvBse,EAAc7U,GAAUyU,EAAaC,EAAe,GACpDrd,EAASM,EAAMkd,EAAcK,GAC7BJ,GAAeP,IAEVC,EAAYK,GACnBxd,EAAOmd,GAAale,EAAKke,GAG3B,IADA,IAAI1c,EAAS0c,IACJS,EAAaC,GACpB7d,EAAOS,EAASmd,GAAcZ,EAASY,GAEzC,OAASD,EAAeN,IAClBI,GAAeN,EAAYC,KAC7Bpd,EAAOS,EAASwc,EAAQU,IAAiB1e,EAAKke,MAGlD,OAAOnd,CACT,CAUA,SAASmN,GAAUhV,EAAQkH,GACzB,IAAII,GAAS,EACTP,EAAS/G,EAAO+G,OAGpB,IADAG,IAAUA,EAAQiB,EAAMpB,MACfO,EAAQP,GACfG,EAAMI,GAAStH,EAAOsH,GAExB,OAAOJ,CACT,CAYA,SAAS0O,GAAW5V,EAAQ1K,EAAOmU,EAAQ4M,GACzC,IAAIsP,GAASlc,EACbA,IAAWA,EAAS,CAAC,GAKrB,IAHA,IAAInC,GAAS,EACTP,EAASzR,EAAMyR,SAEVO,EAAQP,GAAQ,CACvB,IAAIiC,EAAM1T,EAAMgS,GAEZ1O,EAAWyd,EACXA,EAAW5M,EAAOT,GAAMhJ,EAAOgJ,GAAMA,EAAKS,EAAQzJ,GAClD7C,EAEAvE,IAAauE,IACfvE,EAAWoH,EAAOgJ,IAEhB2c,EACFtQ,GAAgB5L,EAAQT,EAAKpQ,GAE7B0c,GAAY7L,EAAQT,EAAKpQ,EAE7B,CACA,OAAO6Q,CACT,CAkCA,SAASmc,GAAiBze,EAAQ0e,GAChC,OAAO,SAAS/c,EAAY1B,GAC1B,IAAIR,EAAO0L,GAAQxJ,GAAc7B,GAAkBwO,GAC/CpO,EAAcwe,EAAcA,IAAgB,CAAC,EAEjD,OAAOjf,EAAKkC,EAAY3B,EAAQ8Y,GAAY7Y,EAAU,GAAIC,EAC5D,CACF,CASA,SAASye,GAAeC,GACtB,OAAO3E,IAAS,SAAS3X,EAAQuc,GAC/B,IAAI1e,GAAS,EACTP,EAASif,EAAQjf,OACjBsP,EAAatP,EAAS,EAAIif,EAAQjf,EAAS,GAAK5J,EAChD8oB,EAAQlf,EAAS,EAAIif,EAAQ,GAAK7oB,EAWtC,IATAkZ,EAAc0P,EAAShf,OAAS,GAA0B,mBAAdsP,GACvCtP,IAAUsP,GACXlZ,EAEA8oB,GAASC,GAAeF,EAAQ,GAAIA,EAAQ,GAAIC,KAClD5P,EAAatP,EAAS,EAAI5J,EAAYkZ,EACtCtP,EAAS,GAEX0C,EAAS3E,GAAO2E,KACPnC,EAAQP,GAAQ,CACvB,IAAI/G,EAASgmB,EAAQ1e,GACjBtH,GACF+lB,EAAStc,EAAQzJ,EAAQsH,EAAO+O,EAEpC,CACA,OAAO5M,CACT,GACF,CAUA,SAAS6P,GAAevQ,EAAUI,GAChC,OAAO,SAASL,EAAY1B,GAC1B,GAAkB,MAAd0B,EACF,OAAOA,EAET,IAAKgW,GAAYhW,GACf,OAAOC,EAASD,EAAY1B,GAM9B,IAJA,IAAIL,EAAS+B,EAAW/B,OACpBO,EAAQ6B,EAAYpC,GAAU,EAC9Bof,EAAWrhB,GAAOgE,IAEdK,EAAY7B,MAAYA,EAAQP,KACa,IAA/CK,EAAS+e,EAAS7e,GAAQA,EAAO6e,KAIvC,OAAOrd,CACT,CACF,CASA,SAASqR,GAAchR,GACrB,OAAO,SAASM,EAAQrC,EAAUwT,GAMhC,IALA,IAAItT,GAAS,EACT6e,EAAWrhB,GAAO2E,GAClBnU,EAAQslB,EAASnR,GACjB1C,EAASzR,EAAMyR,OAEZA,KAAU,CACf,IAAIiC,EAAM1T,EAAM6T,EAAYpC,IAAWO,GACvC,IAA+C,IAA3CF,EAAS+e,EAASnd,GAAMA,EAAKmd,GAC/B,KAEJ,CACA,OAAO1c,CACT,CACF,CA8BA,SAAS2c,GAAgBC,GACvB,OAAO,SAASrc,GAGd,IAAIU,EAAaO,GAFjBjB,EAASyD,GAASzD,IAGdiC,GAAcjC,GACd7M,EAEA6N,EAAMN,EACNA,EAAW,GACXV,EAAOsC,OAAO,GAEdga,EAAW5b,EACX4Z,GAAU5Z,EAAY,GAAGhH,KAAK,IAC9BsG,EAAOC,MAAM,GAEjB,OAAOe,EAAIqb,KAAgBC,CAC7B,CACF,CASA,SAASC,GAAiB3rB,GACxB,OAAO,SAASoP,GACd,OAAOzB,GAAYie,GAAMC,GAAOzc,GAAQG,QAAQtG,GAAQ,KAAMjJ,EAAU,GAC1E,CACF,CAUA,SAAS8rB,GAAWjP,GAClB,OAAO,WAIL,IAAI3Q,EAAO6f,UACX,OAAQ7f,EAAKC,QACX,KAAK,EAAG,OAAO,IAAI0Q,EACnB,KAAK,EAAG,OAAO,IAAIA,EAAK3Q,EAAK,IAC7B,KAAK,EAAG,OAAO,IAAI2Q,EAAK3Q,EAAK,GAAIA,EAAK,IACtC,KAAK,EAAG,OAAO,IAAI2Q,EAAK3Q,EAAK,GAAIA,EAAK,GAAIA,EAAK,IAC/C,KAAK,EAAG,OAAO,IAAI2Q,EAAK3Q,EAAK,GAAIA,EAAK,GAAIA,EAAK,GAAIA,EAAK,IACxD,KAAK,EAAG,OAAO,IAAI2Q,EAAK3Q,EAAK,GAAIA,EAAK,GAAIA,EAAK,GAAIA,EAAK,GAAIA,EAAK,IACjE,KAAK,EAAG,OAAO,IAAI2Q,EAAK3Q,EAAK,GAAIA,EAAK,GAAIA,EAAK,GAAIA,EAAK,GAAIA,EAAK,GAAIA,EAAK,IAC1E,KAAK,EAAG,OAAO,IAAI2Q,EAAK3Q,EAAK,GAAIA,EAAK,GAAIA,EAAK,GAAIA,EAAK,GAAIA,EAAK,GAAIA,EAAK,GAAIA,EAAK,IAErF,IAAI8f,EAAclU,GAAW+E,EAAKrK,WAC9BvF,EAAS4P,EAAK9Q,MAAMigB,EAAa9f,GAIrC,OAAO8L,GAAS/K,GAAUA,EAAS+e,CACrC,CACF,CA8CA,SAASC,GAAWC,GAClB,OAAO,SAAShe,EAAYpB,EAAWwB,GACrC,IAAIid,EAAWrhB,GAAOgE,GACtB,IAAKgW,GAAYhW,GAAa,CAC5B,IAAI1B,EAAW6Y,GAAYvY,EAAW,GACtCoB,EAAagF,GAAKhF,GAClBpB,EAAY,SAASsB,GAAO,OAAO5B,EAAS+e,EAASnd,GAAMA,EAAKmd,EAAW,CAC7E,CACA,IAAI7e,EAAQwf,EAAche,EAAYpB,EAAWwB,GACjD,OAAO5B,GAAS,EAAI6e,EAAS/e,EAAW0B,EAAWxB,GAASA,GAASnK,CACvE,CACF,CASA,SAAS4pB,GAAW5d,GAClB,OAAO6d,IAAS,SAASC,GACvB,IAAIlgB,EAASkgB,EAAMlgB,OACfO,EAAQP,EACRmgB,EAAS1U,GAAcpF,UAAU+Z,KAKrC,IAHIhe,GACF8d,EAAMhW,UAED3J,KAAS,CACd,IAAIV,EAAOqgB,EAAM3f,GACjB,GAAmB,mBAARV,EACT,MAAM,IAAIsG,GAAU9P,GAEtB,GAAI8pB,IAAWE,GAAgC,WAArBC,GAAYzgB,GACpC,IAAIwgB,EAAU,IAAI5U,GAAc,IAAI,EAExC,CAEA,IADAlL,EAAQ8f,EAAU9f,EAAQP,IACjBO,EAAQP,GAAQ,CAGvB,IAAIugB,EAAWD,GAFfzgB,EAAOqgB,EAAM3f,IAGT1R,EAAmB,WAAZ0xB,EAAwBC,GAAQ3gB,GAAQzJ,EAMjDiqB,EAJExxB,GAAQ4xB,GAAW5xB,EAAK,KACX,KAAXA,EAAK,KACJA,EAAK,GAAGmR,QAAqB,GAAXnR,EAAK,GAElBwxB,EAAQC,GAAYzxB,EAAK,KAAK+Q,MAAMygB,EAASxxB,EAAK,IAElC,GAAfgR,EAAKG,QAAeygB,GAAW5gB,GACtCwgB,EAAQE,KACRF,EAAQD,KAAKvgB,EAErB,CACA,OAAO,WACL,IAAIE,EAAO6f,UACPpxB,EAAQuR,EAAK,GAEjB,GAAIsgB,GAA0B,GAAftgB,EAAKC,QAAeuL,GAAQ/c,GACzC,OAAO6xB,EAAQK,MAAMlyB,GAAOA,QAK9B,IAHA,IAAI+R,EAAQ,EACRO,EAASd,EAASkgB,EAAM3f,GAAOX,MAAMvP,KAAM0P,GAAQvR,IAE9C+R,EAAQP,GACfc,EAASof,EAAM3f,GAAON,KAAK5P,KAAMyQ,GAEnC,OAAOA,CACT,CACF,GACF,CAqBA,SAAS6f,GAAa9gB,EAAMwP,EAASvP,EAASge,EAAUC,EAAS6C,EAAeC,EAAcC,EAAQC,EAAKC,GACzG,IAAIC,EAAQ5R,EAAU5Y,EAClByqB,EA5iKa,EA4iKJ7R,EACT8R,EA5iKiB,EA4iKL9R,EACZ2O,EAAsB,GAAV3O,EACZ+R,EAtiKa,IAsiKJ/R,EACTqB,EAAOyQ,EAAY/qB,EAAYupB,GAAW9f,GA6C9C,OA3CA,SAASwgB,IAKP,IAJA,IAAIrgB,EAAS4f,UAAU5f,OACnBD,EAAOqB,EAAMpB,GACbO,EAAQP,EAELO,KACLR,EAAKQ,GAASqf,UAAUrf,GAE1B,GAAIyd,EACF,IAAIpZ,EAAcyc,GAAUhB,GACxBiB,EAvhIZ,SAAsBnhB,EAAOyE,GAI3B,IAHA,IAAI5E,EAASG,EAAMH,OACfc,EAAS,EAENd,KACDG,EAAMH,KAAY4E,KAClB9D,EAGN,OAAOA,CACT,CA6gI2BygB,CAAaxhB,EAAM6E,GASxC,GAPIkZ,IACF/d,EAAO8d,GAAY9d,EAAM+d,EAAUC,EAASC,IAE1C4C,IACF7gB,EAAOye,GAAiBze,EAAM6gB,EAAeC,EAAc7C,IAE7Dhe,GAAUshB,EACNtD,GAAahe,EAASghB,EAAO,CAC/B,IAAIQ,EAAa7c,GAAe5E,EAAM6E,GACtC,OAAO6c,GACL5hB,EAAMwP,EAASsR,GAAcN,EAAQzb,YAAa9E,EAClDC,EAAMyhB,EAAYV,EAAQC,EAAKC,EAAQhhB,EAE3C,CACA,IAAI6f,EAAcqB,EAASphB,EAAUzP,KACjCqxB,EAAKP,EAAYtB,EAAYhgB,GAAQA,EAczC,OAZAG,EAASD,EAAKC,OACV8gB,EACF/gB,EAg4CN,SAAiBI,EAAO8Z,GAKtB,IAJA,IAAI0H,EAAYxhB,EAAMH,OAClBA,EAAS2J,GAAUsQ,EAAQja,OAAQ2hB,GACnCC,EAAW3T,GAAU9N,GAElBH,KAAU,CACf,IAAIO,EAAQ0Z,EAAQja,GACpBG,EAAMH,GAAU4N,GAAQrN,EAAOohB,GAAaC,EAASrhB,GAASnK,CAChE,CACA,OAAO+J,CACT,CA14Ca0hB,CAAQ9hB,EAAM+gB,GACZM,GAAUphB,EAAS,GAC5BD,EAAKmK,UAEH+W,GAASF,EAAM/gB,IACjBD,EAAKC,OAAS+gB,GAEZ1wB,MAAQA,OAAS6N,IAAQ7N,gBAAgBgwB,IAC3CqB,EAAKhR,GAAQiP,GAAW+B,IAEnBA,EAAG9hB,MAAMigB,EAAa9f,EAC/B,CAEF,CAUA,SAAS+hB,GAAe1hB,EAAQ2hB,GAC9B,OAAO,SAASrf,EAAQrC,GACtB,OAh/DJ,SAAsBqC,EAAQtC,EAAQC,EAAUC,GAI9C,OAHAkS,GAAW9P,GAAQ,SAASlU,EAAOyT,EAAKS,GACtCtC,EAAOE,EAAaD,EAAS7R,GAAQyT,EAAKS,EAC5C,IACOpC,CACT,CA2+DW0hB,CAAatf,EAAQtC,EAAQ2hB,EAAW1hB,GAAW,CAAC,EAC7D,CACF,CAUA,SAAS4hB,GAAoBC,EAAUC,GACrC,OAAO,SAAS3zB,EAAO6lB,GACrB,IAAIvT,EACJ,GAAItS,IAAU4H,GAAaie,IAAUje,EACnC,OAAO+rB,EAKT,GAHI3zB,IAAU4H,IACZ0K,EAAStS,GAEP6lB,IAAUje,EAAW,CACvB,GAAI0K,IAAW1K,EACb,OAAOie,EAEW,iBAAT7lB,GAAqC,iBAAT6lB,GACrC7lB,EAAQ4tB,GAAa5tB,GACrB6lB,EAAQ+H,GAAa/H,KAErB7lB,EAAQ2tB,GAAa3tB,GACrB6lB,EAAQ8H,GAAa9H,IAEvBvT,EAASohB,EAAS1zB,EAAO6lB,EAC3B,CACA,OAAOvT,CACT,CACF,CASA,SAASshB,GAAWC,GAClB,OAAOpC,IAAS,SAASjH,GAEvB,OADAA,EAAY7X,GAAS6X,EAAW3V,GAAU6V,OACnCmB,IAAS,SAASta,GACvB,IAAID,EAAUzP,KACd,OAAOgyB,EAAUrJ,GAAW,SAAS3Y,GACnC,OAAOT,GAAMS,EAAUP,EAASC,EAClC,GACF,GACF,GACF,CAWA,SAASuiB,GAActiB,EAAQuiB,GAG7B,IAAIC,GAFJD,EAAQA,IAAUnsB,EAAY,IAAMgmB,GAAamG,IAEzBviB,OACxB,GAAIwiB,EAAc,EAChB,OAAOA,EAAcpI,GAAWmI,EAAOviB,GAAUuiB,EAEnD,IAAIzhB,EAASsZ,GAAWmI,EAAO1Z,GAAW7I,EAAS+E,GAAWwd,KAC9D,OAAOre,GAAWqe,GACdhF,GAAUrY,GAAcpE,GAAS,EAAGd,GAAQrD,KAAK,IACjDmE,EAAOoC,MAAM,EAAGlD,EACtB,CA4CA,SAASyiB,GAAYrgB,GACnB,OAAO,SAASkY,EAAOW,EAAKyH,GAa1B,OAZIA,GAAuB,iBAARA,GAAoBvD,GAAe7E,EAAOW,EAAKyH,KAChEzH,EAAMyH,EAAOtsB,GAGfkkB,EAAQqI,GAASrI,GACbW,IAAQ7kB,GACV6kB,EAAMX,EACNA,EAAQ,GAERW,EAAM0H,GAAS1H,GA57CrB,SAAmBX,EAAOW,EAAKyH,EAAMtgB,GAKnC,IAJA,IAAI7B,GAAS,EACTP,EAASyJ,GAAUZ,IAAYoS,EAAMX,IAAUoI,GAAQ,IAAK,GAC5D5hB,EAASM,EAAMpB,GAEZA,KACLc,EAAOsB,EAAYpC,IAAWO,GAAS+Z,EACvCA,GAASoI,EAEX,OAAO5hB,CACT,CAq7CW8hB,CAAUtI,EAAOW,EADxByH,EAAOA,IAAStsB,EAAakkB,EAAQW,EAAM,GAAK,EAAK0H,GAASD,GAC3BtgB,EACrC,CACF,CASA,SAASygB,GAA0BX,GACjC,OAAO,SAAS1zB,EAAO6lB,GAKrB,MAJsB,iBAAT7lB,GAAqC,iBAAT6lB,IACvC7lB,EAAQs0B,GAASt0B,GACjB6lB,EAAQyO,GAASzO,IAEZ6N,EAAS1zB,EAAO6lB,EACzB,CACF,CAmBA,SAASoN,GAAc5hB,EAAMwP,EAAS0T,EAAUne,EAAa9E,EAASge,EAAUC,EAAS+C,EAAQC,EAAKC,GACpG,IAAIgC,EArxKc,EAqxKJ3T,EAMdA,GAAY2T,EAAUxsB,EAxxKI,GAJF,GA6xKxB6Y,KAAa2T,EAzxKa,GAyxKuBxsB,MAG/C6Y,IAAW,GAEb,IAAI4T,EAAU,CACZpjB,EAAMwP,EAASvP,EAVCkjB,EAAUlF,EAAW1nB,EAFtB4sB,EAAUjF,EAAU3nB,EAGd4sB,EAAU5sB,EAAY0nB,EAFvBkF,EAAU5sB,EAAY2nB,EAYzB+C,EAAQC,EAAKC,GAG5BlgB,EAASiiB,EAASnjB,MAAMxJ,EAAW6sB,GAKvC,OAJIxC,GAAW5gB,IACbqjB,GAAQpiB,EAAQmiB,GAElBniB,EAAO8D,YAAcA,EACdue,GAAgBriB,EAAQjB,EAAMwP,EACvC,CASA,SAAS+T,GAAY9D,GACnB,IAAIzf,EAAOoG,GAAKqZ,GAChB,OAAO,SAASrQ,EAAQoU,GAGtB,GAFApU,EAAS6T,GAAS7T,IAClBoU,EAAyB,MAAbA,EAAoB,EAAI1Z,GAAU2Z,GAAUD,GAAY,OACnDha,GAAe4F,GAAS,CAGvC,IAAIsU,GAAQ7c,GAASuI,GAAU,KAAK5J,MAAM,KAI1C,SADAke,GAAQ7c,GAFI7G,EAAK0jB,EAAK,GAAK,MAAQA,EAAK,GAAKF,KAEnB,KAAKhe,MAAM,MACvB,GAAK,MAAQke,EAAK,GAAKF,GACvC,CACA,OAAOxjB,EAAKoP,EACd,CACF,CASA,IAAIqN,GAAchS,IAAQ,EAAIzF,GAAW,IAAIyF,GAAI,CAAC,EAAE,KAAK,IAAO5T,EAAmB,SAAS4K,GAC1F,OAAO,IAAIgJ,GAAIhJ,EACjB,EAF4EkiB,GAW5E,SAASC,GAAc5P,GACrB,OAAO,SAASnR,GACd,IAAIoN,EAAMC,GAAOrN,GACjB,OAAIoN,GAAOxY,EACF8M,GAAW1B,GAEhBoN,GAAOnY,EACFmN,GAAWpC,GAn6I1B,SAAqBA,EAAQnU,GAC3B,OAAO4S,GAAS5S,GAAO,SAAS0T,GAC9B,MAAO,CAACA,EAAKS,EAAOT,GACtB,GACF,CAi6IayhB,CAAYhhB,EAAQmR,EAASnR,GACtC,CACF,CA2BA,SAASihB,GAAW9jB,EAAMwP,EAASvP,EAASge,EAAUC,EAAS+C,EAAQC,EAAKC,GAC1E,IAAIG,EAl4KiB,EAk4KL9R,EAChB,IAAK8R,GAA4B,mBAARthB,EACvB,MAAM,IAAIsG,GAAU9P,GAEtB,IAAI2J,EAAS8d,EAAWA,EAAS9d,OAAS,EAS1C,GARKA,IACHqP,IAAW,GACXyO,EAAWC,EAAU3nB,GAEvB2qB,EAAMA,IAAQ3qB,EAAY2qB,EAAMtX,GAAU6Z,GAAUvC,GAAM,GAC1DC,EAAQA,IAAU5qB,EAAY4qB,EAAQsC,GAAUtC,GAChDhhB,GAAU+d,EAAUA,EAAQ/d,OAAS,EAx4KX,GA04KtBqP,EAAmC,CACrC,IAAIuR,EAAgB9C,EAChB+C,EAAe9C,EAEnBD,EAAWC,EAAU3nB,CACvB,CACA,IAAIvH,EAAOsyB,EAAY/qB,EAAYoqB,GAAQ3gB,GAEvCojB,EAAU,CACZpjB,EAAMwP,EAASvP,EAASge,EAAUC,EAAS6C,EAAeC,EAC1DC,EAAQC,EAAKC,GAkBf,GAfInyB,GA26BN,SAAmBA,EAAMoK,GACvB,IAAIoW,EAAUxgB,EAAK,GACf+0B,EAAa3qB,EAAO,GACpB4qB,EAAaxU,EAAUuU,EACvB9R,EAAW+R,EAAa,IAExBC,EACAF,GAAcntB,GA50MA,GA40MmB4Y,GACjCuU,GAAcntB,GAx0MA,KAw0MmB4Y,GAAgCxgB,EAAK,GAAGmR,QAAU/G,EAAO,IAC5E,KAAd2qB,GAAqD3qB,EAAO,GAAG+G,QAAU/G,EAAO,IA90MlE,GA80M0EoW,EAG5F,IAAMyC,IAAYgS,EAChB,OAAOj1B,EAr1MQ,EAw1Mb+0B,IACF/0B,EAAK,GAAKoK,EAAO,GAEjB4qB,GA31Me,EA21MDxU,EAA2B,EAz1MnB,GA41MxB,IAAI7gB,EAAQyK,EAAO,GACnB,GAAIzK,EAAO,CACT,IAAIsvB,EAAWjvB,EAAK,GACpBA,EAAK,GAAKivB,EAAWD,GAAYC,EAAUtvB,EAAOyK,EAAO,IAAMzK,EAC/DK,EAAK,GAAKivB,EAAWnZ,GAAe9V,EAAK,GAAI0H,GAAe0C,EAAO,EACrE,EAEAzK,EAAQyK,EAAO,MAEb6kB,EAAWjvB,EAAK,GAChBA,EAAK,GAAKivB,EAAWU,GAAiBV,EAAUtvB,EAAOyK,EAAO,IAAMzK,EACpEK,EAAK,GAAKivB,EAAWnZ,GAAe9V,EAAK,GAAI0H,GAAe0C,EAAO,KAGrEzK,EAAQyK,EAAO,MAEbpK,EAAK,GAAKL,GAGRo1B,EAAantB,IACf5H,EAAK,GAAgB,MAAXA,EAAK,GAAaoK,EAAO,GAAK0Q,GAAU9a,EAAK,GAAIoK,EAAO,KAGrD,MAAXpK,EAAK,KACPA,EAAK,GAAKoK,EAAO,IAGnBpK,EAAK,GAAKoK,EAAO,GACjBpK,EAAK,GAAKg1B,CAGZ,CA/9BIE,CAAUd,EAASp0B,GAErBgR,EAAOojB,EAAQ,GACf5T,EAAU4T,EAAQ,GAClBnjB,EAAUmjB,EAAQ,GAClBnF,EAAWmF,EAAQ,GACnBlF,EAAUkF,EAAQ,KAClBjC,EAAQiC,EAAQ,GAAKA,EAAQ,KAAO7sB,EAC/B+qB,EAAY,EAAIthB,EAAKG,OACtByJ,GAAUwZ,EAAQ,GAAKjjB,EAAQ,KAEX,GAAVqP,IACZA,IAAW,IAERA,GA56KY,GA46KDA,EAGdvO,EA56KgB,GA26KPuO,GA16Ka,IA06KiBA,EApgB3C,SAAqBxP,EAAMwP,EAAS2R,GAClC,IAAItQ,EAAOiP,GAAW9f,GAwBtB,OAtBA,SAASwgB,IAMP,IALA,IAAIrgB,EAAS4f,UAAU5f,OACnBD,EAAOqB,EAAMpB,GACbO,EAAQP,EACR4E,EAAcyc,GAAUhB,GAErB9f,KACLR,EAAKQ,GAASqf,UAAUrf,GAE1B,IAAIwd,EAAW/d,EAAS,GAAKD,EAAK,KAAO6E,GAAe7E,EAAKC,EAAS,KAAO4E,EACzE,GACAD,GAAe5E,EAAM6E,GAGzB,OADA5E,GAAU+d,EAAQ/d,QACLghB,EACJS,GACL5hB,EAAMwP,EAASsR,GAAcN,EAAQzb,YAAaxO,EAClD2J,EAAMge,EAAS3nB,EAAWA,EAAW4qB,EAAQhhB,GAG1CJ,GADGvP,MAAQA,OAAS6N,IAAQ7N,gBAAgBgwB,EAAW3P,EAAO7Q,EACpDxP,KAAM0P,EACzB,CAEF,CA2eaikB,CAAYnkB,EAAMwP,EAAS2R,GAC1B3R,GAAW7Y,GAAgC,IAAX6Y,GAAqD0O,EAAQ/d,OAG9F2gB,GAAa/gB,MAAMxJ,EAAW6sB,GA9O3C,SAAuBpjB,EAAMwP,EAASvP,EAASge,GAC7C,IAAIoD,EAtsKa,EAssKJ7R,EACTqB,EAAOiP,GAAW9f,GAkBtB,OAhBA,SAASwgB,IAQP,IAPA,IAAIpC,GAAa,EACbC,EAAa0B,UAAU5f,OACvBoe,GAAa,EACbC,EAAaP,EAAS9d,OACtBD,EAAOqB,EAAMid,EAAaH,GAC1BwD,EAAMrxB,MAAQA,OAAS6N,IAAQ7N,gBAAgBgwB,EAAW3P,EAAO7Q,IAE5Due,EAAYC,GACnBte,EAAKqe,GAAaN,EAASM,GAE7B,KAAOF,KACLne,EAAKqe,KAAewB,YAAY3B,GAElC,OAAOre,GAAM8hB,EAAIR,EAASphB,EAAUzP,KAAM0P,EAC5C,CAEF,CAuNakkB,CAAcpkB,EAAMwP,EAASvP,EAASge,QAJ/C,IAAIhd,EAhmBR,SAAoBjB,EAAMwP,EAASvP,GACjC,IAAIohB,EA90Ja,EA80JJ7R,EACTqB,EAAOiP,GAAW9f,GAMtB,OAJA,SAASwgB,IAEP,OADUhwB,MAAQA,OAAS6N,IAAQ7N,gBAAgBgwB,EAAW3P,EAAO7Q,GAC3DD,MAAMshB,EAASphB,EAAUzP,KAAMuvB,UAC3C,CAEF,CAulBiBsE,CAAWrkB,EAAMwP,EAASvP,GASzC,OAAOqjB,IADMt0B,EAAO+rB,GAAcsI,IACJpiB,EAAQmiB,GAAUpjB,EAAMwP,EACxD,CAcA,SAAS8U,GAAuB3V,EAAU4I,EAAUnV,EAAKS,GACvD,OAAI8L,IAAapY,GACZiY,GAAGG,EAAUjI,GAAYtE,MAAU0E,GAAe1G,KAAKyC,EAAQT,GAC3DmV,EAEF5I,CACT,CAgBA,SAAS4V,GAAoB5V,EAAU4I,EAAUnV,EAAKS,EAAQzJ,EAAQsW,GAOpE,OANI1D,GAAS2C,IAAa3C,GAASuL,KAEjC7H,EAAM3d,IAAIwlB,EAAU5I,GACpB6J,GAAU7J,EAAU4I,EAAUhhB,EAAWguB,GAAqB7U,GAC9DA,EAAc,OAAE6H,IAEX5I,CACT,CAWA,SAAS6V,GAAgB71B,GACvB,OAAOmqB,GAAcnqB,GAAS4H,EAAY5H,CAC5C,CAeA,SAASqnB,GAAY1V,EAAOkU,EAAOhF,EAASC,EAAY+F,EAAW9F,GACjE,IAAIyG,EApgLmB,EAogLP3G,EACZsS,EAAYxhB,EAAMH,OAClB0U,EAAYL,EAAMrU,OAEtB,GAAI2hB,GAAajN,KAAesB,GAAatB,EAAYiN,GACvD,OAAO,EAGT,IAAI2C,EAAa/U,EAAM9d,IAAI0O,GACvBsW,EAAalH,EAAM9d,IAAI4iB,GAC3B,GAAIiQ,GAAc7N,EAChB,OAAO6N,GAAcjQ,GAASoC,GAActW,EAE9C,IAAII,GAAS,EACTO,GAAS,EACTiU,EAlhLqB,EAkhLb1F,EAAoC,IAAIrC,GAAW5W,EAM/D,IAJAmZ,EAAM3d,IAAIuO,EAAOkU,GACjB9E,EAAM3d,IAAIyiB,EAAOlU,KAGRI,EAAQohB,GAAW,CAC1B,IAAI4C,EAAWpkB,EAAMI,GACjBoW,EAAWtC,EAAM9T,GAErB,GAAI+O,EACF,IAAIsH,EAAWZ,EACX1G,EAAWqH,EAAU4N,EAAUhkB,EAAO8T,EAAOlU,EAAOoP,GACpDD,EAAWiV,EAAU5N,EAAUpW,EAAOJ,EAAOkU,EAAO9E,GAE1D,GAAIqH,IAAaxgB,EAAW,CAC1B,GAAIwgB,EACF,SAEF9V,GAAS,EACT,KACF,CAEA,GAAIiU,GACF,IAAKpT,GAAU0S,GAAO,SAASsC,EAAUhC,GACnC,IAAKpR,GAASwR,EAAMJ,KACf4P,IAAa5N,GAAYtB,EAAUkP,EAAU5N,EAAUtH,EAASC,EAAYC,IAC/E,OAAOwF,EAAK9e,KAAK0e,EAErB,IAAI,CACN7T,GAAS,EACT,KACF,OACK,GACDyjB,IAAa5N,IACXtB,EAAUkP,EAAU5N,EAAUtH,EAASC,EAAYC,GACpD,CACLzO,GAAS,EACT,KACF,CACF,CAGA,OAFAyO,EAAc,OAAEpP,GAChBoP,EAAc,OAAE8E,GACTvT,CACT,CAyKA,SAASmf,GAASpgB,GAChB,OAAO0a,GAAYC,GAAS3a,EAAMzJ,EAAWouB,IAAU3kB,EAAO,GAChE,CASA,SAAS2R,GAAW9O,GAClB,OAAOkR,GAAelR,EAAQqE,GAAMwJ,GACtC,CAUA,SAASgB,GAAa7O,GACpB,OAAOkR,GAAelR,EAAQ2N,GAAQF,GACxC,CASA,IAAIqQ,GAAW/V,GAAiB,SAAS5K,GACvC,OAAO4K,GAAQhZ,IAAIoO,EACrB,EAFyB2jB,GAWzB,SAASlD,GAAYzgB,GAKnB,IAJA,IAAIiB,EAAUjB,EAAKzR,KAAO,GACtB+R,EAAQuK,GAAU5J,GAClBd,EAAS2G,GAAe1G,KAAKyK,GAAW5J,GAAUX,EAAMH,OAAS,EAE9DA,KAAU,CACf,IAAInR,EAAOsR,EAAMH,GACbykB,EAAY51B,EAAKgR,KACrB,GAAiB,MAAb4kB,GAAqBA,GAAa5kB,EACpC,OAAOhR,EAAKT,IAEhB,CACA,OAAO0S,CACT,CASA,SAASugB,GAAUxhB,GAEjB,OADa8G,GAAe1G,KAAKoL,GAAQ,eAAiBA,GAASxL,GACrD+E,WAChB,CAaA,SAASsU,KACP,IAAIpY,EAASuK,GAAOhL,UAAYA,GAEhC,OADAS,EAASA,IAAWT,GAAWkX,GAAezW,EACvC8e,UAAU5f,OAASc,EAAO8e,UAAU,GAAIA,UAAU,IAAM9e,CACjE,CAUA,SAASsR,GAAW/N,EAAKpC,GACvB,IAgYiBzT,EACbC,EAjYAI,EAAOwV,EAAI4I,SACf,OAiYgB,WADZxe,SADaD,EA/XAyT,KAiYmB,UAARxT,GAA4B,UAARA,GAA4B,WAARA,EACrD,cAAVD,EACU,OAAVA,GAlYDK,EAAmB,iBAAPoT,EAAkB,SAAW,QACzCpT,EAAKwV,GACX,CASA,SAAS2T,GAAatV,GAIpB,IAHA,IAAI5B,EAASiG,GAAKrE,GACd1C,EAASc,EAAOd,OAEbA,KAAU,CACf,IAAIiC,EAAMnB,EAAOd,GACbxR,EAAQkU,EAAOT,GAEnBnB,EAAOd,GAAU,CAACiC,EAAKzT,EAAO2pB,GAAmB3pB,GACnD,CACA,OAAOsS,CACT,CAUA,SAASwH,GAAU5F,EAAQT,GACzB,IAAIzT,EAlxJR,SAAkBkU,EAAQT,GACxB,OAAiB,MAAVS,EAAiBtM,EAAYsM,EAAOT,EAC7C,CAgxJgByiB,CAAShiB,EAAQT,GAC7B,OAAOqV,GAAa9oB,GAASA,EAAQ4H,CACvC,CAoCA,IAAIma,GAActH,GAA+B,SAASvG,GACxD,OAAc,MAAVA,EACK,IAETA,EAAS3E,GAAO2E,GACT9B,GAAYqI,GAAiBvG,IAAS,SAAS+N,GACpD,OAAO5I,GAAqB5H,KAAKyC,EAAQ+N,EAC3C,IACF,EARqCkU,GAiBjCxU,GAAgBlH,GAA+B,SAASvG,GAE1D,IADA,IAAI5B,EAAS,GACN4B,GACLrB,GAAUP,EAAQyP,GAAW7N,IAC7BA,EAAS+E,GAAa/E,GAExB,OAAO5B,CACT,EAPuC6jB,GAgBnC5U,GAASgE,GA2Eb,SAAS6Q,GAAQliB,EAAQ+Q,EAAMoR,GAO7B,IAJA,IAAItkB,GAAS,EACTP,GAHJyT,EAAOC,GAASD,EAAM/Q,IAGJ1C,OACdc,GAAS,IAEJP,EAAQP,GAAQ,CACvB,IAAIiC,EAAM0R,GAAMF,EAAKlT,IACrB,KAAMO,EAAmB,MAAV4B,GAAkBmiB,EAAQniB,EAAQT,IAC/C,MAEFS,EAASA,EAAOT,EAClB,CACA,OAAInB,KAAYP,GAASP,EAChBc,KAETd,EAAmB,MAAV0C,EAAiB,EAAIA,EAAO1C,SAClB8kB,GAAS9kB,IAAW4N,GAAQ3L,EAAKjC,KACjDuL,GAAQ7I,IAAW8K,GAAY9K,GACpC,CA4BA,SAASwN,GAAgBxN,GACvB,MAAqC,mBAAtBA,EAAOiN,aAA8BiI,GAAYlV,GAE5D,CAAC,EADDiJ,GAAWlE,GAAa/E,GAE9B,CA4EA,SAASwQ,GAAc1kB,GACrB,OAAO+c,GAAQ/c,IAAUgf,GAAYhf,OAChCuZ,IAAoBvZ,GAASA,EAAMuZ,IAC1C,CAUA,SAAS6F,GAAQpf,EAAOwR,GACtB,IAAIvR,SAAcD,EAGlB,SAFAwR,EAAmB,MAAVA,EAAiBrJ,EAAmBqJ,KAGlC,UAARvR,GACU,UAARA,GAAoBgM,GAAS0J,KAAK3V,KAChCA,GAAS,GAAKA,EAAQ,GAAK,GAAKA,EAAQwR,CACjD,CAYA,SAASmf,GAAe3wB,EAAO+R,EAAOmC,GACpC,IAAKmJ,GAASnJ,GACZ,OAAO,EAET,IAAIjU,SAAc8R,EAClB,SAAY,UAAR9R,EACKspB,GAAYrV,IAAWkL,GAAQrN,EAAOmC,EAAO1C,QACrC,UAARvR,GAAoB8R,KAASmC,IAE7B2L,GAAG3L,EAAOnC,GAAQ/R,EAG7B,CAUA,SAAS0pB,GAAM1pB,EAAOkU,GACpB,GAAI6I,GAAQ/c,GACV,OAAO,EAET,IAAIC,SAAcD,EAClB,QAAY,UAARC,GAA4B,UAARA,GAA4B,WAARA,GAC/B,MAATD,IAAiBqkB,GAASrkB,KAGvB+K,EAAc4K,KAAK3V,KAAW8K,EAAa6K,KAAK3V,IAC1C,MAAVkU,GAAkBlU,KAASuP,GAAO2E,EACvC,CAwBA,SAAS+d,GAAW5gB,GAClB,IAAI0gB,EAAWD,GAAYzgB,GACvBwU,EAAQhJ,GAAOkV,GAEnB,GAAoB,mBAATlM,KAAyBkM,KAAY/U,GAAYnF,WAC1D,OAAO,EAET,GAAIxG,IAASwU,EACX,OAAO,EAET,IAAIxlB,EAAO2xB,GAAQnM,GACnB,QAASxlB,GAAQgR,IAAShR,EAAK,EACjC,EA9SKsb,IAAY4F,GAAO,IAAI5F,GAAS,IAAI4a,YAAY,MAAQ/sB,GACxDoS,IAAO2F,GAAO,IAAI3F,KAAQ9S,GAC1B+S,IAAW0F,GAAO1F,GAAQ2a,YAAcvtB,GACxC6S,IAAOyF,GAAO,IAAIzF,KAAQ3S,GAC1B4S,IAAWwF,GAAO,IAAIxF,KAAYzS,KACrCiY,GAAS,SAASvhB,GAChB,IAAIsS,EAASiT,GAAWvlB,GACpBkiB,EAAO5P,GAAUtJ,EAAYhJ,EAAMmhB,YAAcvZ,EACjD6uB,EAAavU,EAAO9F,GAAS8F,GAAQ,GAEzC,GAAIuU,EACF,OAAQA,GACN,KAAKta,GAAoB,OAAO3S,EAChC,KAAK6S,GAAe,OAAOvT,EAC3B,KAAKwT,GAAmB,OAAOrT,EAC/B,KAAKsT,GAAe,OAAOpT,EAC3B,KAAKqT,GAAmB,OAAOlT,EAGnC,OAAOgJ,CACT,GA8SF,IAAIokB,GAAa1e,GAAa+M,GAAa4R,GAS3C,SAASvN,GAAYppB,GACnB,IAAIkiB,EAAOliB,GAASA,EAAMmhB,YAG1B,OAAOnhB,KAFqB,mBAARkiB,GAAsBA,EAAKrK,WAAcE,GAG/D,CAUA,SAAS4R,GAAmB3pB,GAC1B,OAAOA,GAAUA,IAAUqd,GAASrd,EACtC,CAWA,SAASypB,GAAwBhW,EAAKmV,GACpC,OAAO,SAAS1U,GACd,OAAc,MAAVA,GAGGA,EAAOT,KAASmV,IACpBA,IAAahhB,GAAc6L,KAAOlE,GAAO2E,GAC9C,CACF,CAoIA,SAAS8X,GAAS3a,EAAMya,EAAO7V,GAE7B,OADA6V,EAAQ7Q,GAAU6Q,IAAUlkB,EAAayJ,EAAKG,OAAS,EAAKsa,EAAO,GAC5D,WAML,IALA,IAAIva,EAAO6f,UACPrf,GAAS,EACTP,EAASyJ,GAAU1J,EAAKC,OAASsa,EAAO,GACxCna,EAAQiB,EAAMpB,KAETO,EAAQP,GACfG,EAAMI,GAASR,EAAKua,EAAQ/Z,GAE9BA,GAAS,EAET,IADA,IAAI6kB,EAAYhkB,EAAMkZ,EAAQ,KACrB/Z,EAAQ+Z,GACf8K,EAAU7kB,GAASR,EAAKQ,GAG1B,OADA6kB,EAAU9K,GAAS7V,EAAUtE,GACtBP,GAAMC,EAAMxP,KAAM+0B,EAC3B,CACF,CAUA,SAASnQ,GAAOvS,EAAQ+Q,GACtB,OAAOA,EAAKzT,OAAS,EAAI0C,EAAS8Q,GAAQ9Q,EAAQsY,GAAUvH,EAAM,GAAI,GACxE,CAgCA,SAAS+E,GAAQ9V,EAAQT,GACvB,IAAY,gBAARA,GAAgD,mBAAhBS,EAAOT,KAIhC,aAAPA,EAIJ,OAAOS,EAAOT,EAChB,CAgBA,IAAIihB,GAAUmC,GAASzK,IAUnBhS,GAAaD,IAAiB,SAAS9I,EAAM8R,GAC/C,OAAOzT,GAAK0K,WAAW/I,EAAM8R,EAC/B,EAUI4I,GAAc8K,GAASxK,IAY3B,SAASsI,GAAgB9C,EAASiF,EAAWjW,GAC3C,IAAIpW,EAAUqsB,EAAY,GAC1B,OAAO/K,GAAY8F,EA1brB,SAA2BpnB,EAAQssB,GACjC,IAAIvlB,EAASulB,EAAQvlB,OACrB,IAAKA,EACH,OAAO/G,EAET,IAAI+L,EAAYhF,EAAS,EAGzB,OAFAulB,EAAQvgB,IAAchF,EAAS,EAAI,KAAO,IAAMulB,EAAQvgB,GACxDugB,EAAUA,EAAQ5oB,KAAKqD,EAAS,EAAI,KAAO,KACpC/G,EAAOmK,QAAQvJ,GAAe,uBAAyB0rB,EAAU,SAC1E,CAib8BC,CAAkBvsB,EAqHhD,SAA2BssB,EAASlW,GAOlC,OANA7O,GAAU1J,GAAW,SAASysB,GAC5B,IAAI/0B,EAAQ,KAAO+0B,EAAK,GACnBlU,EAAUkU,EAAK,KAAQxiB,GAAcwkB,EAAS/2B,IACjD+2B,EAAQtvB,KAAKzH,EAEjB,IACO+2B,EAAQlM,MACjB,CA7HwDoM,CAtjBxD,SAAwBxsB,GACtB,IAAIkM,EAAQlM,EAAOkM,MAAMrL,IACzB,OAAOqL,EAAQA,EAAM,GAAGE,MAAMtL,IAAkB,EAClD,CAmjB0E2rB,CAAezsB,GAASoW,IAClG,CAWA,SAASgW,GAASxlB,GAChB,IAAI8lB,EAAQ,EACRC,EAAa,EAEjB,OAAO,WACL,IAAIC,EAAQhc,KACRic,EApiNK,IAoiNmBD,EAAQD,GAGpC,GADAA,EAAaC,EACTC,EAAY,GACd,KAAMH,GAziNE,IA0iNN,OAAO/F,UAAU,QAGnB+F,EAAQ,EAEV,OAAO9lB,EAAKD,MAAMxJ,EAAWwpB,UAC/B,CACF,CAUA,SAAS5R,GAAY7N,EAAOmE,GAC1B,IAAI/D,GAAS,EACTP,EAASG,EAAMH,OACfgF,EAAYhF,EAAS,EAGzB,IADAsE,EAAOA,IAASlO,EAAY4J,EAASsE,IAC5B/D,EAAQ+D,GAAM,CACrB,IAAIyhB,EAAOjY,GAAWvN,EAAOyE,GACzBxW,EAAQ2R,EAAM4lB,GAElB5lB,EAAM4lB,GAAQ5lB,EAAMI,GACpBJ,EAAMI,GAAS/R,CACjB,CAEA,OADA2R,EAAMH,OAASsE,EACRnE,CACT,CASA,IAtTMW,GAOA0C,GA+SF6Z,IAtTEvc,GAASklB,IAsTkB,SAAS/iB,GACxC,IAAInC,EAAS,GAOb,OAN6B,KAAzBmC,EAAOgjB,WAAW,IACpBnlB,EAAO7K,KAAK,IAEdgN,EAAOG,QAAQ5J,IAAY,SAAS2L,EAAO8J,EAAQiX,EAAOC,GACxDrlB,EAAO7K,KAAKiwB,EAAQC,EAAU/iB,QAAQlJ,GAAc,MAAS+U,GAAU9J,EACzE,IACOrE,CACT,IA/T6B,SAASmB,GAIlC,OAh0MiB,MA6zMbuB,GAAMc,MACRd,GAAMoJ,QAED3K,CACT,IAEIuB,GAAQ1C,GAAO0C,MACZ1C,IAgUT,SAAS6S,GAAMnlB,GACb,GAAoB,iBAATA,GAAqBqkB,GAASrkB,GACvC,OAAOA,EAET,IAAIsS,EAAUtS,EAAQ,GACtB,MAAkB,KAAVsS,GAAkB,EAAItS,IAAU,IAAa,KAAOsS,CAC9D,CASA,SAAS8J,GAAS/K,GAChB,GAAY,MAARA,EAAc,CAChB,IACE,OAAO4G,GAAaxG,KAAKJ,EAC3B,CAAE,MAAOd,GAAI,CACb,IACE,OAAQc,EAAO,EACjB,CAAE,MAAOd,GAAI,CACf,CACA,MAAO,EACT,CA2BA,SAAS2M,GAAa2U,GACpB,GAAIA,aAAmB7U,GACrB,OAAO6U,EAAQ+F,QAEjB,IAAItlB,EAAS,IAAI2K,GAAc4U,EAAQrU,YAAaqU,EAAQnU,WAI5D,OAHApL,EAAOmL,YAAcgC,GAAUoS,EAAQpU,aACvCnL,EAAOqL,UAAakU,EAAQlU,UAC5BrL,EAAOsL,WAAaiU,EAAQjU,WACrBtL,CACT,CAqIA,IAAIulB,GAAahM,IAAS,SAASla,EAAOmB,GACxC,OAAOoX,GAAkBvY,GACrByR,GAAezR,EAAO4S,GAAYzR,EAAQ,EAAGoX,IAAmB,IAChE,EACN,IA4BI4N,GAAejM,IAAS,SAASla,EAAOmB,GAC1C,IAAIjB,EAAW6U,GAAK5T,GAIpB,OAHIoX,GAAkBrY,KACpBA,EAAWjK,GAENsiB,GAAkBvY,GACrByR,GAAezR,EAAO4S,GAAYzR,EAAQ,EAAGoX,IAAmB,GAAOQ,GAAY7Y,EAAU,IAC7F,EACN,IAyBIkmB,GAAiBlM,IAAS,SAASla,EAAOmB,GAC5C,IAAIJ,EAAagU,GAAK5T,GAItB,OAHIoX,GAAkBxX,KACpBA,EAAa9K,GAERsiB,GAAkBvY,GACrByR,GAAezR,EAAO4S,GAAYzR,EAAQ,EAAGoX,IAAmB,GAAOtiB,EAAW8K,GAClF,EACN,IAqOA,SAASslB,GAAUrmB,EAAOQ,EAAWwB,GACnC,IAAInC,EAAkB,MAATG,EAAgB,EAAIA,EAAMH,OACvC,IAAKA,EACH,OAAQ,EAEV,IAAIO,EAAqB,MAAb4B,EAAoB,EAAImhB,GAAUnhB,GAI9C,OAHI5B,EAAQ,IACVA,EAAQkJ,GAAUzJ,EAASO,EAAO,IAE7B2B,GAAc/B,EAAO+Y,GAAYvY,EAAW,GAAIJ,EACzD,CAqCA,SAASkmB,GAActmB,EAAOQ,EAAWwB,GACvC,IAAInC,EAAkB,MAATG,EAAgB,EAAIA,EAAMH,OACvC,IAAKA,EACH,OAAQ,EAEV,IAAIO,EAAQP,EAAS,EAOrB,OANImC,IAAc/L,IAChBmK,EAAQ+iB,GAAUnhB,GAClB5B,EAAQ4B,EAAY,EAChBsH,GAAUzJ,EAASO,EAAO,GAC1BoJ,GAAUpJ,EAAOP,EAAS,IAEzBkC,GAAc/B,EAAO+Y,GAAYvY,EAAW,GAAIJ,GAAO,EAChE,CAgBA,SAASikB,GAAQrkB,GAEf,OADsB,MAATA,GAAoBA,EAAMH,OACvB+S,GAAY5S,EAAO,GAAK,EAC1C,CA+FA,SAASumB,GAAKvmB,GACZ,OAAQA,GAASA,EAAMH,OAAUG,EAAM,GAAK/J,CAC9C,CAyEA,IAAIuwB,GAAetM,IAAS,SAAS5F,GACnC,IAAImS,EAASzlB,GAASsT,EAAQ0I,IAC9B,OAAQyJ,EAAO5mB,QAAU4mB,EAAO,KAAOnS,EAAO,GAC1CD,GAAiBoS,GACjB,EACN,IAyBIC,GAAiBxM,IAAS,SAAS5F,GACrC,IAAIpU,EAAW6U,GAAKT,GAChBmS,EAASzlB,GAASsT,EAAQ0I,IAO9B,OALI9c,IAAa6U,GAAK0R,GACpBvmB,EAAWjK,EAEXwwB,EAAOzU,MAEDyU,EAAO5mB,QAAU4mB,EAAO,KAAOnS,EAAO,GAC1CD,GAAiBoS,EAAQ1N,GAAY7Y,EAAU,IAC/C,EACN,IAuBIymB,GAAmBzM,IAAS,SAAS5F,GACvC,IAAIvT,EAAagU,GAAKT,GAClBmS,EAASzlB,GAASsT,EAAQ0I,IAM9B,OAJAjc,EAAkC,mBAAdA,EAA2BA,EAAa9K,IAE1DwwB,EAAOzU,MAEDyU,EAAO5mB,QAAU4mB,EAAO,KAAOnS,EAAO,GAC1CD,GAAiBoS,EAAQxwB,EAAW8K,GACpC,EACN,IAmCA,SAASgU,GAAK/U,GACZ,IAAIH,EAAkB,MAATG,EAAgB,EAAIA,EAAMH,OACvC,OAAOA,EAASG,EAAMH,EAAS,GAAK5J,CACtC,CAsFA,IAAI2wB,GAAO1M,GAAS2M,IAsBpB,SAASA,GAAQ7mB,EAAOmB,GACtB,OAAQnB,GAASA,EAAMH,QAAUsB,GAAUA,EAAOtB,OAC9C8Z,GAAY3Z,EAAOmB,GACnBnB,CACN,CAoFA,IAAI8mB,GAAShH,IAAS,SAAS9f,EAAO8Z,GACpC,IAAIja,EAAkB,MAATG,EAAgB,EAAIA,EAAMH,OACnCc,EAASgO,GAAO3O,EAAO8Z,GAM3B,OAJAD,GAAW7Z,EAAOgB,GAAS8Y,GAAS,SAAS1Z,GAC3C,OAAOqN,GAAQrN,EAAOP,IAAWO,EAAQA,CAC3C,IAAG8Y,KAAKI,KAED3Y,CACT,IA0EA,SAASoJ,GAAQ/J,GACf,OAAgB,MAATA,EAAgBA,EAAQ8J,GAAchK,KAAKE,EACpD,CAiaA,IAAI+mB,GAAQ7M,IAAS,SAAS5F,GAC5B,OAAO4H,GAAStJ,GAAY0B,EAAQ,EAAGiE,IAAmB,GAC5D,IAyBIyO,GAAU9M,IAAS,SAAS5F,GAC9B,IAAIpU,EAAW6U,GAAKT,GAIpB,OAHIiE,GAAkBrY,KACpBA,EAAWjK,GAENimB,GAAStJ,GAAY0B,EAAQ,EAAGiE,IAAmB,GAAOQ,GAAY7Y,EAAU,GACzF,IAuBI+mB,GAAY/M,IAAS,SAAS5F,GAChC,IAAIvT,EAAagU,GAAKT,GAEtB,OADAvT,EAAkC,mBAAdA,EAA2BA,EAAa9K,EACrDimB,GAAStJ,GAAY0B,EAAQ,EAAGiE,IAAmB,GAAOtiB,EAAW8K,EAC9E,IA+FA,SAASmmB,GAAMlnB,GACb,IAAMA,IAASA,EAAMH,OACnB,MAAO,GAET,IAAIA,EAAS,EAOb,OANAG,EAAQS,GAAYT,GAAO,SAASmnB,GAClC,GAAI5O,GAAkB4O,GAEpB,OADAtnB,EAASyJ,GAAU6d,EAAMtnB,OAAQA,IAC1B,CAEX,IACO8C,GAAU9C,GAAQ,SAASO,GAChC,OAAOY,GAAShB,EAAO0B,GAAatB,GACtC,GACF,CAuBA,SAASgnB,GAAUpnB,EAAOE,GACxB,IAAMF,IAASA,EAAMH,OACnB,MAAO,GAET,IAAIc,EAASumB,GAAMlnB,GACnB,OAAgB,MAAZE,EACKS,EAEFK,GAASL,GAAQ,SAASwmB,GAC/B,OAAO1nB,GAAMS,EAAUjK,EAAWkxB,EACpC,GACF,CAsBA,IAAIE,GAAUnN,IAAS,SAASla,EAAOmB,GACrC,OAAOoX,GAAkBvY,GACrByR,GAAezR,EAAOmB,GACtB,EACN,IAoBImmB,GAAMpN,IAAS,SAAS5F,GAC1B,OAAOsI,GAAQnc,GAAY6T,EAAQiE,IACrC,IAyBIgP,GAAQrN,IAAS,SAAS5F,GAC5B,IAAIpU,EAAW6U,GAAKT,GAIpB,OAHIiE,GAAkBrY,KACpBA,EAAWjK,GAEN2mB,GAAQnc,GAAY6T,EAAQiE,IAAoBQ,GAAY7Y,EAAU,GAC/E,IAuBIsnB,GAAUtN,IAAS,SAAS5F,GAC9B,IAAIvT,EAAagU,GAAKT,GAEtB,OADAvT,EAAkC,mBAAdA,EAA2BA,EAAa9K,EACrD2mB,GAAQnc,GAAY6T,EAAQiE,IAAoBtiB,EAAW8K,EACpE,IAkBI0mB,GAAMvN,GAASgN,IA6DfQ,GAAUxN,IAAS,SAAS5F,GAC9B,IAAIzU,EAASyU,EAAOzU,OAChBK,EAAWL,EAAS,EAAIyU,EAAOzU,EAAS,GAAK5J,EAGjD,OADAiK,EAA8B,mBAAZA,GAA0BoU,EAAOtC,MAAO9R,GAAYjK,EAC/DmxB,GAAU9S,EAAQpU,EAC3B,IAiCA,SAASynB,GAAMt5B,GACb,IAAIsS,EAASuK,GAAO7c,GAEpB,OADAsS,EAAOoL,WAAY,EACZpL,CACT,CAqDA,SAASsf,GAAK5xB,EAAOu5B,GACnB,OAAOA,EAAYv5B,EACrB,CAkBA,IAAIw5B,GAAY/H,IAAS,SAASlR,GAChC,IAAI/O,EAAS+O,EAAM/O,OACfsa,EAAQta,EAAS+O,EAAM,GAAK,EAC5BvgB,EAAQ6B,KAAK2b,YACb+b,EAAc,SAASrlB,GAAU,OAAOoM,GAAOpM,EAAQqM,EAAQ,EAEnE,QAAI/O,EAAS,GAAK3P,KAAK4b,YAAYjM,SAC7BxR,aAAiBgd,IAAiBoC,GAAQ0M,KAGhD9rB,EAAQA,EAAM0U,MAAMoX,GAAQA,GAASta,EAAS,EAAI,KAC5CiM,YAAYhW,KAAK,CACrB,KAAQmqB,GACR,KAAQ,CAAC2H,GACT,QAAW3xB,IAEN,IAAIqV,GAAcjd,EAAO6B,KAAK6b,WAAWkU,MAAK,SAASjgB,GAI5D,OAHIH,IAAWG,EAAMH,QACnBG,EAAMlK,KAAKG,GAEN+J,CACT,KAbS9P,KAAK+vB,KAAK2H,EAcrB,IAiPIE,GAAUpJ,IAAiB,SAAS/d,EAAQtS,EAAOyT,GACjD0E,GAAe1G,KAAKa,EAAQmB,KAC5BnB,EAAOmB,GAETqM,GAAgBxN,EAAQmB,EAAK,EAEjC,IAqIIimB,GAAOpI,GAAW0G,IAqBlB2B,GAAWrI,GAAW2G,IA2G1B,SAASliB,GAAQxC,EAAY1B,GAE3B,OADWkL,GAAQxJ,GAAcvB,GAAYmO,IACjC5M,EAAYmX,GAAY7Y,EAAU,GAChD,CAsBA,SAAS+nB,GAAarmB,EAAY1B,GAEhC,OADWkL,GAAQxJ,GAActB,GAAiBgS,IACtC1Q,EAAYmX,GAAY7Y,EAAU,GAChD,CAyBA,IAAIgoB,GAAUxJ,IAAiB,SAAS/d,EAAQtS,EAAOyT,GACjD0E,GAAe1G,KAAKa,EAAQmB,GAC9BnB,EAAOmB,GAAKhM,KAAKzH,GAEjB8f,GAAgBxN,EAAQmB,EAAK,CAACzT,GAElC,IAoEI85B,GAAYjO,IAAS,SAAStY,EAAY0R,EAAM1T,GAClD,IAAIQ,GAAS,EACTyP,EAAwB,mBAARyD,EAChB3S,EAASiX,GAAYhW,GAAcX,EAAMW,EAAW/B,QAAU,GAKlE,OAHA2O,GAAS5M,GAAY,SAASvT,GAC5BsS,IAASP,GAASyP,EAASpQ,GAAM6T,EAAMjlB,EAAOuR,GAAQiV,GAAWxmB,EAAOilB,EAAM1T,EAChF,IACOe,CACT,IA8BIynB,GAAQ1J,IAAiB,SAAS/d,EAAQtS,EAAOyT,GACnDqM,GAAgBxN,EAAQmB,EAAKzT,EAC/B,IA4CA,SAAS6V,GAAItC,EAAY1B,GAEvB,OADWkL,GAAQxJ,GAAcZ,GAAW2W,IAChC/V,EAAYmX,GAAY7Y,EAAU,GAChD,CAiFA,IAAImoB,GAAY3J,IAAiB,SAAS/d,EAAQtS,EAAOyT,GACvDnB,EAAOmB,EAAM,EAAI,GAAGhM,KAAKzH,EAC3B,IAAG,WAAa,MAAO,CAAC,GAAI,GAAK,IAmS7Bi6B,GAASpO,IAAS,SAAStY,EAAYiX,GACzC,GAAkB,MAAdjX,EACF,MAAO,GAET,IAAI/B,EAASgZ,EAAUhZ,OAMvB,OALIA,EAAS,GAAKmf,GAAepd,EAAYiX,EAAU,GAAIA,EAAU,IACnEA,EAAY,GACHhZ,EAAS,GAAKmf,GAAenG,EAAU,GAAIA,EAAU,GAAIA,EAAU,MAC5EA,EAAY,CAACA,EAAU,KAElBD,GAAYhX,EAAYgR,GAAYiG,EAAW,GAAI,GAC5D,IAoBItQ,GAAMD,IAAU,WAClB,OAAOvK,GAAK6H,KAAK2C,KACnB,EAyDA,SAASqY,GAAIlhB,EAAMkD,EAAGmc,GAGpB,OAFAnc,EAAImc,EAAQ9oB,EAAY2M,EACxBA,EAAKlD,GAAa,MAALkD,EAAalD,EAAKG,OAAS+C,EACjC4gB,GAAW9jB,EAAMpJ,EAAeL,EAAWA,EAAWA,EAAWA,EAAW2M,EACrF,CAmBA,SAAS2lB,GAAO3lB,EAAGlD,GACjB,IAAIiB,EACJ,GAAmB,mBAARjB,EACT,MAAM,IAAIsG,GAAU9P,GAGtB,OADA0M,EAAIugB,GAAUvgB,GACP,WAOL,QANMA,EAAI,IACRjC,EAASjB,EAAKD,MAAMvP,KAAMuvB,YAExB7c,GAAK,IACPlD,EAAOzJ,GAEF0K,CACT,CACF,CAqCA,IAAI6nB,GAAOtO,IAAS,SAASxa,EAAMC,EAASge,GAC1C,IAAIzO,EAv4Ta,EAw4TjB,GAAIyO,EAAS9d,OAAQ,CACnB,IAAI+d,EAAUpZ,GAAemZ,EAAUuD,GAAUsH,KACjDtZ,GAAW7Y,CACb,CACA,OAAOmtB,GAAW9jB,EAAMwP,EAASvP,EAASge,EAAUC,EACtD,IA+CI6K,GAAUvO,IAAS,SAAS3X,EAAQT,EAAK6b,GAC3C,IAAIzO,EAAUwZ,EACd,GAAI/K,EAAS9d,OAAQ,CACnB,IAAI+d,EAAUpZ,GAAemZ,EAAUuD,GAAUuH,KACjDvZ,GAAW7Y,CACb,CACA,OAAOmtB,GAAW1hB,EAAKoN,EAAS3M,EAAQob,EAAUC,EACpD,IAqJA,SAASrrB,GAASmN,EAAM8R,EAAM9hB,GAC5B,IAAIi5B,EACAC,EACAC,EACAloB,EACAmoB,EACAC,EACAC,EAAiB,EACjBC,GAAU,EACVC,GAAS,EACT9J,GAAW,EAEf,GAAmB,mBAAR1f,EACT,MAAM,IAAIsG,GAAU9P,GAUtB,SAASizB,EAAWC,GAClB,IAAIxpB,EAAO+oB,EACPhpB,EAAUipB,EAKd,OAHAD,EAAWC,EAAW3yB,EACtB+yB,EAAiBI,EACjBzoB,EAASjB,EAAKD,MAAME,EAASC,EAE/B,CAqBA,SAASypB,EAAaD,GACpB,IAAIE,EAAoBF,EAAOL,EAM/B,OAAQA,IAAiB9yB,GAAcqzB,GAAqB9X,GACzD8X,EAAoB,GAAOJ,GANJE,EAAOJ,GAM8BH,CACjE,CAEA,SAASU,IACP,IAAIH,EAAO7gB,KACX,GAAI8gB,EAAaD,GACf,OAAOI,EAAaJ,GAGtBN,EAAUrgB,GAAW8gB,EA3BvB,SAAuBH,GACrB,IAEIK,EAAcjY,GAFM4X,EAAOL,GAI/B,OAAOG,EACH1f,GAAUigB,EAAaZ,GAJDO,EAAOJ,IAK7BS,CACN,CAmBqCC,CAAcN,GACnD,CAEA,SAASI,EAAaJ,GAKpB,OAJAN,EAAU7yB,EAINmpB,GAAYuJ,EACPQ,EAAWC,IAEpBT,EAAWC,EAAW3yB,EACf0K,EACT,CAcA,SAASgpB,IACP,IAAIP,EAAO7gB,KACPqhB,EAAaP,EAAaD,GAM9B,GAJAT,EAAWlJ,UACXmJ,EAAW14B,KACX64B,EAAeK,EAEXQ,EAAY,CACd,GAAId,IAAY7yB,EACd,OAzEN,SAAqBmzB,GAMnB,OAJAJ,EAAiBI,EAEjBN,EAAUrgB,GAAW8gB,EAAc/X,GAE5ByX,EAAUE,EAAWC,GAAQzoB,CACtC,CAkEakpB,CAAYd,GAErB,GAAIG,EAIF,OAFA7gB,GAAaygB,GACbA,EAAUrgB,GAAW8gB,EAAc/X,GAC5B2X,EAAWJ,EAEtB,CAIA,OAHID,IAAY7yB,IACd6yB,EAAUrgB,GAAW8gB,EAAc/X,IAE9B7Q,CACT,CAGA,OA3GA6Q,EAAOmR,GAASnR,IAAS,EACrB9F,GAAShc,KACXu5B,IAAYv5B,EAAQu5B,QAEpBJ,GADAK,EAAS,YAAax5B,GACH4Z,GAAUqZ,GAASjzB,EAAQm5B,UAAY,EAAGrX,GAAQqX,EACrEzJ,EAAW,aAAc1vB,IAAYA,EAAQ0vB,SAAWA,GAoG1DuK,EAAUG,OApCV,WACMhB,IAAY7yB,GACdoS,GAAaygB,GAEfE,EAAiB,EACjBL,EAAWI,EAAeH,EAAWE,EAAU7yB,CACjD,EA+BA0zB,EAAUI,MA7BV,WACE,OAAOjB,IAAY7yB,EAAY0K,EAAS6oB,EAAajhB,KACvD,EA4BOohB,CACT,CAoBA,IAAIK,GAAQ9P,IAAS,SAASxa,EAAME,GAClC,OAAO2R,GAAU7R,EAAM,EAAGE,EAC5B,IAqBIqqB,GAAQ/P,IAAS,SAASxa,EAAM8R,EAAM5R,GACxC,OAAO2R,GAAU7R,EAAMijB,GAASnR,IAAS,EAAG5R,EAC9C,IAoEA,SAASimB,GAAQnmB,EAAMwqB,GACrB,GAAmB,mBAARxqB,GAAmC,MAAZwqB,GAAuC,mBAAZA,EAC3D,MAAM,IAAIlkB,GAAU9P,GAEtB,IAAIi0B,EAAW,WACb,IAAIvqB,EAAO6f,UACP3d,EAAMooB,EAAWA,EAASzqB,MAAMvP,KAAM0P,GAAQA,EAAK,GACnDyD,EAAQ8mB,EAAS9mB,MAErB,GAAIA,EAAMC,IAAIxB,GACZ,OAAOuB,EAAM/R,IAAIwQ,GAEnB,IAAInB,EAASjB,EAAKD,MAAMvP,KAAM0P,GAE9B,OADAuqB,EAAS9mB,MAAQA,EAAM5R,IAAIqQ,EAAKnB,IAAW0C,EACpC1C,CACT,EAEA,OADAwpB,EAAS9mB,MAAQ,IAAKwiB,GAAQuE,OAASxd,IAChCud,CACT,CAyBA,SAASE,GAAO7pB,GACd,GAAwB,mBAAbA,EACT,MAAM,IAAIwF,GAAU9P,GAEtB,OAAO,WACL,IAAI0J,EAAO6f,UACX,OAAQ7f,EAAKC,QACX,KAAK,EAAG,OAAQW,EAAUV,KAAK5P,MAC/B,KAAK,EAAG,OAAQsQ,EAAUV,KAAK5P,KAAM0P,EAAK,IAC1C,KAAK,EAAG,OAAQY,EAAUV,KAAK5P,KAAM0P,EAAK,GAAIA,EAAK,IACnD,KAAK,EAAG,OAAQY,EAAUV,KAAK5P,KAAM0P,EAAK,GAAIA,EAAK,GAAIA,EAAK,IAE9D,OAAQY,EAAUf,MAAMvP,KAAM0P,EAChC,CACF,CApCAimB,GAAQuE,MAAQxd,GA2FhB,IAAI0d,GAAWnN,IAAS,SAASzd,EAAM6qB,GAKrC,IAAIC,GAJJD,EAAmC,GAArBA,EAAW1qB,QAAeuL,GAAQmf,EAAW,IACvDvpB,GAASupB,EAAW,GAAIrnB,GAAU6V,OAClC/X,GAAS4R,GAAY2X,EAAY,GAAIrnB,GAAU6V,QAEtBlZ,OAC7B,OAAOqa,IAAS,SAASta,GAIvB,IAHA,IAAIQ,GAAS,EACTP,EAAS2J,GAAU5J,EAAKC,OAAQ2qB,KAE3BpqB,EAAQP,GACfD,EAAKQ,GAASmqB,EAAWnqB,GAAON,KAAK5P,KAAM0P,EAAKQ,IAElD,OAAOX,GAAMC,EAAMxP,KAAM0P,EAC3B,GACF,IAmCI6qB,GAAUvQ,IAAS,SAASxa,EAAMie,GACpC,IAAIC,EAAUpZ,GAAemZ,EAAUuD,GAAUuJ,KACjD,OAAOjH,GAAW9jB,EAAMrJ,EAAmBJ,EAAW0nB,EAAUC,EAClE,IAkCI8M,GAAexQ,IAAS,SAASxa,EAAMie,GACzC,IAAIC,EAAUpZ,GAAemZ,EAAUuD,GAAUwJ,KACjD,OAAOlH,GAAW9jB,EAvgVQ,GAugVuBzJ,EAAW0nB,EAAUC,EACxE,IAwBI+M,GAAQ7K,IAAS,SAASpgB,EAAMoa,GAClC,OAAO0J,GAAW9jB,EA/hVA,IA+hVuBzJ,EAAWA,EAAWA,EAAW6jB,EAC5E,IAgaA,SAAS5L,GAAG7f,EAAO6lB,GACjB,OAAO7lB,IAAU6lB,GAAU7lB,GAAUA,GAAS6lB,GAAUA,CAC1D,CAyBA,IAAI0W,GAAKlI,GAA0BzO,IAyB/B4W,GAAMnI,IAA0B,SAASr0B,EAAO6lB,GAClD,OAAO7lB,GAAS6lB,CAClB,IAoBI7G,GAAc2H,GAAgB,WAAa,OAAOyK,SAAW,CAA/B,IAAsCzK,GAAkB,SAAS3mB,GACjG,OAAO8c,GAAa9c,IAAUmY,GAAe1G,KAAKzR,EAAO,YACtDqZ,GAAqB5H,KAAKzR,EAAO,SACtC,EAyBI+c,GAAUnK,EAAMmK,QAmBhBtM,GAAgBD,GAAoBqE,GAAUrE,IA75PlD,SAA2BxQ,GACzB,OAAO8c,GAAa9c,IAAUulB,GAAWvlB,IAAUuJ,CACrD,EAs7PA,SAASggB,GAAYvpB,GACnB,OAAgB,MAATA,GAAiBs2B,GAASt2B,EAAMwR,UAAYuT,GAAW/kB,EAChE,CA2BA,SAASkqB,GAAkBlqB,GACzB,OAAO8c,GAAa9c,IAAUupB,GAAYvpB,EAC5C,CAyCA,IAAI4a,GAAWD,IAAkBgc,GAmB7BhmB,GAASD,GAAamE,GAAUnE,IAxgQpC,SAAoB1Q,GAClB,OAAO8c,GAAa9c,IAAUulB,GAAWvlB,IAAU0I,CACrD,EA8qQA,SAAS+zB,GAAQz8B,GACf,IAAK8c,GAAa9c,GAChB,OAAO,EAET,IAAIshB,EAAMiE,GAAWvlB,GACrB,OAAOshB,GAAO3Y,GA9yWF,yBA8yWc2Y,GACC,iBAAjBthB,EAAMsnB,SAA4C,iBAAdtnB,EAAMJ,OAAqBuqB,GAAcnqB,EACzF,CAiDA,SAAS+kB,GAAW/kB,GAClB,IAAKqd,GAASrd,GACZ,OAAO,EAIT,IAAIshB,EAAMiE,GAAWvlB,GACrB,OAAOshB,GAAO1Y,GAAW0Y,GAAOzY,GA32WrB,0BA22W+ByY,GA/1W/B,kBA+1WkDA,CAC/D,CA4BA,SAASob,GAAU18B,GACjB,MAAuB,iBAATA,GAAqBA,GAAS80B,GAAU90B,EACxD,CA4BA,SAASs2B,GAASt2B,GAChB,MAAuB,iBAATA,GACZA,GAAS,GAAKA,EAAQ,GAAK,GAAKA,GAASmI,CAC7C,CA2BA,SAASkV,GAASrd,GAChB,IAAIC,SAAcD,EAClB,OAAgB,MAATA,IAA0B,UAARC,GAA4B,YAARA,EAC/C,CA0BA,SAAS6c,GAAa9c,GACpB,OAAgB,MAATA,GAAiC,iBAATA,CACjC,CAmBA,IAAI6Q,GAAQD,GAAYiE,GAAUjE,IA5xQlC,SAAmB5Q,GACjB,OAAO8c,GAAa9c,IAAUuhB,GAAOvhB,IAAU8I,CACjD,EA4+QA,SAAS6zB,GAAS38B,GAChB,MAAuB,iBAATA,GACX8c,GAAa9c,IAAUulB,GAAWvlB,IAAU+I,CACjD,CA8BA,SAASohB,GAAcnqB,GACrB,IAAK8c,GAAa9c,IAAUulB,GAAWvlB,IAAUgJ,EAC/C,OAAO,EAET,IAAIoU,EAAQnE,GAAajZ,GACzB,GAAc,OAAVod,EACF,OAAO,EAET,IAAI8E,EAAO/J,GAAe1G,KAAK2L,EAAO,gBAAkBA,EAAM+D,YAC9D,MAAsB,mBAARe,GAAsBA,aAAgBA,GAClDjK,GAAaxG,KAAKyQ,IAASxJ,EAC/B,CAmBA,IAAI3H,GAAWD,GAAe+D,GAAU/D,IA59QxC,SAAsB9Q,GACpB,OAAO8c,GAAa9c,IAAUulB,GAAWvlB,IAAUkJ,CACrD,EA4gRI+H,GAAQD,GAAY6D,GAAU7D,IAngRlC,SAAmBhR,GACjB,OAAO8c,GAAa9c,IAAUuhB,GAAOvhB,IAAUmJ,CACjD,EAohRA,SAASyzB,GAAS58B,GAChB,MAAuB,iBAATA,IACV+c,GAAQ/c,IAAU8c,GAAa9c,IAAUulB,GAAWvlB,IAAUoJ,CACpE,CAmBA,SAASib,GAASrkB,GAChB,MAAuB,iBAATA,GACX8c,GAAa9c,IAAUulB,GAAWvlB,IAAUqJ,CACjD,CAmBA,IAAI8H,GAAeD,GAAmB2D,GAAU3D,IAvjRhD,SAA0BlR,GACxB,OAAO8c,GAAa9c,IAClBs2B,GAASt2B,EAAMwR,WAAa1C,GAAeyW,GAAWvlB,GAC1D,EA4oRI68B,GAAKxI,GAA0BhL,IAyB/ByT,GAAMzI,IAA0B,SAASr0B,EAAO6lB,GAClD,OAAO7lB,GAAS6lB,CAClB,IAyBA,SAASkX,GAAQ/8B,GACf,IAAKA,EACH,MAAO,GAET,GAAIupB,GAAYvpB,GACd,OAAO48B,GAAS58B,GAAS0W,GAAc1W,GAASyf,GAAUzf,GAE5D,GAAIyZ,IAAezZ,EAAMyZ,IACvB,OAv8VN,SAAyBC,GAIvB,IAHA,IAAIrZ,EACAiS,EAAS,KAEJjS,EAAOqZ,EAASsjB,QAAQC,MAC/B3qB,EAAO7K,KAAKpH,EAAKL,OAEnB,OAAOsS,CACT,CA+7Va4qB,CAAgBl9B,EAAMyZ,OAE/B,IAAI6H,EAAMC,GAAOvhB,GAGjB,OAFWshB,GAAOxY,EAAS8M,GAAc0L,GAAOnY,EAASkN,GAAavD,IAE1D9S,EACd,CAyBA,SAASm0B,GAASn0B,GAChB,OAAKA,GAGLA,EAAQs0B,GAASt0B,MACHkI,GAAYlI,KAAU,IAxkYtB,uBAykYAA,EAAQ,GAAK,EAAI,GAGxBA,GAAUA,EAAQA,EAAQ,EAPd,IAAVA,EAAcA,EAAQ,CAQjC,CA4BA,SAAS80B,GAAU90B,GACjB,IAAIsS,EAAS6hB,GAASn0B,GAClBm9B,EAAY7qB,EAAS,EAEzB,OAAOA,GAAWA,EAAU6qB,EAAY7qB,EAAS6qB,EAAY7qB,EAAU,CACzE,CA6BA,SAAS8qB,GAASp9B,GAChB,OAAOA,EAAQ0f,GAAUoV,GAAU90B,GAAQ,EAAGqI,GAAoB,CACpE,CAyBA,SAASisB,GAASt0B,GAChB,GAAoB,iBAATA,EACT,OAAOA,EAET,GAAIqkB,GAASrkB,GACX,OAAOoI,EAET,GAAIiV,GAASrd,GAAQ,CACnB,IAAI6lB,EAAgC,mBAAjB7lB,EAAM2c,QAAwB3c,EAAM2c,UAAY3c,EACnEA,EAAQqd,GAASwI,GAAUA,EAAQ,GAAMA,CAC3C,CACA,GAAoB,iBAAT7lB,EACT,OAAiB,IAAVA,EAAcA,GAASA,EAEhCA,EAAQwU,GAASxU,GACjB,IAAIq9B,EAAWvxB,GAAW6J,KAAK3V,GAC/B,OAAQq9B,GAAYrxB,GAAU2J,KAAK3V,GAC/BmP,GAAanP,EAAM0U,MAAM,GAAI2oB,EAAW,EAAI,GAC3CxxB,GAAW8J,KAAK3V,GAASoI,GAAOpI,CACvC,CA0BA,SAASoqB,GAAcpqB,GACrB,OAAOqgB,GAAWrgB,EAAO6hB,GAAO7hB,GAClC,CAqDA,SAASkY,GAASlY,GAChB,OAAgB,MAATA,EAAgB,GAAK4tB,GAAa5tB,EAC3C,CAoCA,IAAIs9B,GAAS/M,IAAe,SAASrc,EAAQzJ,GAC3C,GAAI2e,GAAY3e,IAAW8e,GAAY9e,GACrC4V,GAAW5V,EAAQ8N,GAAK9N,GAASyJ,QAGnC,IAAK,IAAIT,KAAOhJ,EACV0N,GAAe1G,KAAKhH,EAAQgJ,IAC9BsM,GAAY7L,EAAQT,EAAKhJ,EAAOgJ,GAGtC,IAiCI8pB,GAAWhN,IAAe,SAASrc,EAAQzJ,GAC7C4V,GAAW5V,EAAQoX,GAAOpX,GAASyJ,EACrC,IA+BIspB,GAAejN,IAAe,SAASrc,EAAQzJ,EAAQqf,EAAUhJ,GACnET,GAAW5V,EAAQoX,GAAOpX,GAASyJ,EAAQ4M,EAC7C,IA8BI2c,GAAalN,IAAe,SAASrc,EAAQzJ,EAAQqf,EAAUhJ,GACjET,GAAW5V,EAAQ8N,GAAK9N,GAASyJ,EAAQ4M,EAC3C,IAmBI4c,GAAKjM,GAASnR,IA8DdjJ,GAAWwU,IAAS,SAAS3X,EAAQuc,GACvCvc,EAAS3E,GAAO2E,GAEhB,IAAInC,GAAS,EACTP,EAASif,EAAQjf,OACjBkf,EAAQlf,EAAS,EAAIif,EAAQ,GAAK7oB,EAMtC,IAJI8oB,GAASC,GAAeF,EAAQ,GAAIA,EAAQ,GAAIC,KAClDlf,EAAS,KAGFO,EAAQP,GAMf,IALA,IAAI/G,EAASgmB,EAAQ1e,GACjBhS,EAAQ8hB,GAAOpX,GACfkzB,GAAc,EACdC,EAAc79B,EAAMyR,SAEfmsB,EAAaC,GAAa,CACjC,IAAInqB,EAAM1T,EAAM49B,GACZ39B,EAAQkU,EAAOT,IAEfzT,IAAU4H,GACTiY,GAAG7f,EAAO+X,GAAYtE,MAAU0E,GAAe1G,KAAKyC,EAAQT,MAC/DS,EAAOT,GAAOhJ,EAAOgJ,GAEzB,CAGF,OAAOS,CACT,IAqBI2pB,GAAehS,IAAS,SAASta,GAEnC,OADAA,EAAK9J,KAAKG,EAAWguB,IACdxkB,GAAM0sB,GAAWl2B,EAAW2J,EACrC,IA+RA,SAAStO,GAAIiR,EAAQ+Q,EAAM0O,GACzB,IAAIrhB,EAAmB,MAAV4B,EAAiBtM,EAAYod,GAAQ9Q,EAAQ+Q,GAC1D,OAAO3S,IAAW1K,EAAY+rB,EAAerhB,CAC/C,CA2DA,SAASsX,GAAM1V,EAAQ+Q,GACrB,OAAiB,MAAV/Q,GAAkBkiB,GAAQliB,EAAQ+Q,EAAMc,GACjD,CAoBA,IAAIgY,GAASzK,IAAe,SAAShhB,EAAQtS,EAAOyT,GACrC,MAATzT,GACyB,mBAAlBA,EAAMkY,WACflY,EAAQyY,GAAqBhH,KAAKzR,IAGpCsS,EAAOtS,GAASyT,CAClB,GAAG6Y,GAAStD,KA4BRgV,GAAW1K,IAAe,SAAShhB,EAAQtS,EAAOyT,GACvC,MAATzT,GACyB,mBAAlBA,EAAMkY,WACflY,EAAQyY,GAAqBhH,KAAKzR,IAGhCmY,GAAe1G,KAAKa,EAAQtS,GAC9BsS,EAAOtS,GAAOyH,KAAKgM,GAEnBnB,EAAOtS,GAAS,CAACyT,EAErB,GAAGiX,IAoBCuT,GAASpS,GAASrF,IA8BtB,SAASjO,GAAKrE,GACZ,OAAOqV,GAAYrV,GAAU0K,GAAc1K,GAAUiV,GAASjV,EAChE,CAyBA,SAAS2N,GAAO3N,GACd,OAAOqV,GAAYrV,GAAU0K,GAAc1K,GAAQ,GAloTrD,SAAoBA,GAClB,IAAKmJ,GAASnJ,GACZ,OA09FJ,SAAsBA,GACpB,IAAI5B,EAAS,GACb,GAAc,MAAV4B,EACF,IAAK,IAAIT,KAAOlE,GAAO2E,GACrB5B,EAAO7K,KAAKgM,GAGhB,OAAOnB,CACT,CAl+FW4rB,CAAahqB,GAEtB,IAAIiqB,EAAU/U,GAAYlV,GACtB5B,EAAS,GAEb,IAAK,IAAImB,KAAOS,GACD,eAAPT,IAAyB0qB,GAAYhmB,GAAe1G,KAAKyC,EAAQT,KACrEnB,EAAO7K,KAAKgM,GAGhB,OAAOnB,CACT,CAqnT6D8rB,CAAWlqB,EACxE,CAsGA,IAAImqB,GAAQ9N,IAAe,SAASrc,EAAQzJ,EAAQqf,GAClDD,GAAU3V,EAAQzJ,EAAQqf,EAC5B,IAiCIgU,GAAYvN,IAAe,SAASrc,EAAQzJ,EAAQqf,EAAUhJ,GAChE+I,GAAU3V,EAAQzJ,EAAQqf,EAAUhJ,EACtC,IAsBIwd,GAAO7M,IAAS,SAASvd,EAAQqM,GACnC,IAAIjO,EAAS,CAAC,EACd,GAAc,MAAV4B,EACF,OAAO5B,EAET,IAAI0O,GAAS,EACbT,EAAQ5N,GAAS4N,GAAO,SAAS0E,GAG/B,OAFAA,EAAOC,GAASD,EAAM/Q,GACtB8M,IAAWA,EAASiE,EAAKzT,OAAS,GAC3ByT,CACT,IACA5E,GAAWnM,EAAQ6O,GAAa7O,GAAS5B,GACrC0O,IACF1O,EAASsO,GAAUtO,EAAQisB,EAAwD1I,KAGrF,IADA,IAAIrkB,EAAS+O,EAAM/O,OACZA,KACLma,GAAUrZ,EAAQiO,EAAM/O,IAE1B,OAAOc,CACT,IA2CIgF,GAAOma,IAAS,SAASvd,EAAQqM,GACnC,OAAiB,MAAVrM,EAAiB,CAAC,EAnmT3B,SAAkBA,EAAQqM,GACxB,OAAO6K,GAAWlX,EAAQqM,GAAO,SAASvgB,EAAOilB,GAC/C,OAAO2E,GAAM1V,EAAQ+Q,EACvB,GACF,CA+lT+BuZ,CAAStqB,EAAQqM,EAChD,IAoBA,SAASke,GAAOvqB,EAAQ/B,GACtB,GAAc,MAAV+B,EACF,MAAO,CAAC,EAEV,IAAInU,EAAQ4S,GAASoQ,GAAa7O,IAAS,SAASwqB,GAClD,MAAO,CAACA,EACV,IAEA,OADAvsB,EAAYuY,GAAYvY,GACjBiZ,GAAWlX,EAAQnU,GAAO,SAASC,EAAOilB,GAC/C,OAAO9S,EAAUnS,EAAOilB,EAAK,GAC/B,GACF,CA0IA,IAAI0Z,GAAU1J,GAAc1c,IA0BxBqmB,GAAY3J,GAAcpT,IA4K9B,SAAS/O,GAAOoB,GACd,OAAiB,MAAVA,EAAiB,GAAKY,GAAWZ,EAAQqE,GAAKrE,GACvD,CAiNA,IAAI2qB,GAAY7N,IAAiB,SAAS1e,EAAQwsB,EAAM/sB,GAEtD,OADA+sB,EAAOA,EAAKC,cACLzsB,GAAUP,EAAQitB,GAAWF,GAAQA,EAC9C,IAiBA,SAASE,GAAWvqB,GAClB,OAAOwqB,GAAW/mB,GAASzD,GAAQsqB,cACrC,CAoBA,SAAS7N,GAAOzc,GAEd,OADAA,EAASyD,GAASzD,KACDA,EAAOG,QAAQ1I,GAASoJ,IAAcV,QAAQrG,GAAa,GAC9E,CAqHA,IAAI2wB,GAAYlO,IAAiB,SAAS1e,EAAQwsB,EAAM/sB,GACtD,OAAOO,GAAUP,EAAQ,IAAM,IAAM+sB,EAAKC,aAC5C,IAsBII,GAAYnO,IAAiB,SAAS1e,EAAQwsB,EAAM/sB,GACtD,OAAOO,GAAUP,EAAQ,IAAM,IAAM+sB,EAAKC,aAC5C,IAmBIK,GAAavO,GAAgB,eA0N7BrtB,GAAYwtB,IAAiB,SAAS1e,EAAQwsB,EAAM/sB,GACtD,OAAOO,GAAUP,EAAQ,IAAM,IAAM+sB,EAAKC,aAC5C,IA+DIM,GAAYrO,IAAiB,SAAS1e,EAAQwsB,EAAM/sB,GACtD,OAAOO,GAAUP,EAAQ,IAAM,IAAMktB,GAAWH,EAClD,IAqiBIQ,GAAYtO,IAAiB,SAAS1e,EAAQwsB,EAAM/sB,GACtD,OAAOO,GAAUP,EAAQ,IAAM,IAAM+sB,EAAKS,aAC5C,IAmBIN,GAAapO,GAAgB,eAqBjC,SAASI,GAAMxc,EAAQ+qB,EAAS9O,GAI9B,OAHAjc,EAASyD,GAASzD,IAClB+qB,EAAU9O,EAAQ9oB,EAAY43B,KAEd53B,EArybpB,SAAwB6M,GACtB,OAAO9F,GAAiBgH,KAAKlB,EAC/B,CAoybagrB,CAAehrB,GA1jb5B,SAAsBA,GACpB,OAAOA,EAAOkC,MAAMlI,KAAkB,EACxC,CAwjbsCixB,CAAajrB,GAzrcnD,SAAoBA,GAClB,OAAOA,EAAOkC,MAAMnL,KAAgB,EACtC,CAurc6Dm0B,CAAWlrB,GAE7DA,EAAOkC,MAAM6oB,IAAY,EAClC,CA0BA,IAAII,GAAU/T,IAAS,SAASxa,EAAME,GACpC,IACE,OAAOH,GAAMC,EAAMzJ,EAAW2J,EAChC,CAAE,MAAOhB,GACP,OAAOksB,GAAQlsB,GAAKA,EAAI,IAAIiH,GAAMjH,EACpC,CACF,IA4BIsvB,GAAUpO,IAAS,SAASvd,EAAQ4rB,GAKtC,OAJA9tB,GAAU8tB,GAAa,SAASrsB,GAC9BA,EAAM0R,GAAM1R,GACZqM,GAAgB5L,EAAQT,EAAK0mB,GAAKjmB,EAAOT,GAAMS,GACjD,IACOA,CACT,IAoGA,SAASoY,GAAStsB,GAChB,OAAO,WACL,OAAOA,CACT,CACF,CAgDA,IAAI+/B,GAAOvO,KAuBPwO,GAAYxO,IAAW,GAkB3B,SAASxI,GAAShpB,GAChB,OAAOA,CACT,CA4CA,SAAS6R,GAASR,GAChB,OAAO0X,GAA4B,mBAAR1X,EAAqBA,EAAOuP,GAAUvP,EAjte/C,GAktepB,CAsGA,IAAI4uB,GAASpU,IAAS,SAAS5G,EAAM1T,GACnC,OAAO,SAAS2C,GACd,OAAOsS,GAAWtS,EAAQ+Q,EAAM1T,EAClC,CACF,IAyBI2uB,GAAWrU,IAAS,SAAS3X,EAAQ3C,GACvC,OAAO,SAAS0T,GACd,OAAOuB,GAAWtS,EAAQ+Q,EAAM1T,EAClC,CACF,IAsCA,SAAS4uB,GAAMjsB,EAAQzJ,EAAQpJ,GAC7B,IAAItB,EAAQwY,GAAK9N,GACbq1B,EAAchb,GAAcra,EAAQ1K,GAEzB,MAAXsB,GACEgc,GAAS5S,KAAYq1B,EAAYtuB,SAAWzR,EAAMyR,UACtDnQ,EAAUoJ,EACVA,EAASyJ,EACTA,EAASrS,KACTi+B,EAAchb,GAAcra,EAAQ8N,GAAK9N,KAE3C,IAAI6uB,IAAUjc,GAAShc,IAAY,UAAWA,IAAcA,EAAQi4B,OAChE9X,EAASuD,GAAW7Q,GAqBxB,OAnBAlC,GAAU8tB,GAAa,SAAShP,GAC9B,IAAIzf,EAAO5G,EAAOqmB,GAClB5c,EAAO4c,GAAczf,EACjBmQ,IACFtN,EAAO2D,UAAUiZ,GAAc,WAC7B,IAAIvT,EAAW1b,KAAK6b,UACpB,GAAI4b,GAAS/b,EAAU,CACrB,IAAIjL,EAAS4B,EAAOrS,KAAK2b,aAKzB,OAJclL,EAAOmL,YAAcgC,GAAU5d,KAAK4b,cAE1ChW,KAAK,CAAE,KAAQ4J,EAAM,KAAQ+f,UAAW,QAAWld,IAC3D5B,EAAOoL,UAAYH,EACZjL,CACT,CACA,OAAOjB,EAAKD,MAAM8C,EAAQrB,GAAU,CAAChR,KAAK7B,SAAUoxB,WACtD,EAEJ,IAEOld,CACT,CAkCA,SAAS8gB,KAET,CA+CA,IAAIoL,GAAOxM,GAAWjhB,IA8BlB0tB,GAAYzM,GAAW1hB,IAiCvBouB,GAAW1M,GAAWzgB,IAwB1B,SAAShQ,GAAS8hB,GAChB,OAAOyE,GAAMzE,GAAQ5R,GAAa8R,GAAMF,IAh3X1C,SAA0BA,GACxB,OAAO,SAAS/Q,GACd,OAAO8Q,GAAQ9Q,EAAQ+Q,EACzB,CACF,CA42XmDsb,CAAiBtb,EACpE,CAsEA,IAAIub,GAAQvM,KAsCRwM,GAAaxM,IAAY,GAoB7B,SAASkC,KACP,MAAO,EACT,CAeA,SAASQ,KACP,OAAO,CACT,CA8JA,IA2oBMlsB,GA3oBFiU,GAAM+U,IAAoB,SAASiN,EAAQC,GAC7C,OAAOD,EAASC,CAClB,GAAG,GAuBCrmB,GAAOsa,GAAY,QAiBnBgM,GAASnN,IAAoB,SAASoN,EAAUC,GAClD,OAAOD,EAAWC,CACpB,GAAG,GAuBCtmB,GAAQoa,GAAY,SAwKpBmM,GAAWtN,IAAoB,SAASuN,EAAYC,GACtD,OAAOD,EAAaC,CACtB,GAAG,GAuBCC,GAAQtM,GAAY,SAiBpBuM,GAAW1N,IAAoB,SAAS2N,EAASC,GACnD,OAAOD,EAAUC,CACnB,GAAG,GAgmBH,OA1iBAxkB,GAAOykB,MAp6MP,SAAe/sB,EAAGlD,GAChB,GAAmB,mBAARA,EACT,MAAM,IAAIsG,GAAU9P,GAGtB,OADA0M,EAAIugB,GAAUvgB,GACP,WACL,KAAMA,EAAI,EACR,OAAOlD,EAAKD,MAAMvP,KAAMuvB,UAE5B,CACF,EA25MAvU,GAAO0V,IAAMA,GACb1V,GAAOygB,OAASA,GAChBzgB,GAAO0gB,SAAWA,GAClB1gB,GAAO2gB,aAAeA,GACtB3gB,GAAO4gB,WAAaA,GACpB5gB,GAAO6gB,GAAKA,GACZ7gB,GAAOqd,OAASA,GAChBrd,GAAOsd,KAAOA,GACdtd,GAAOgjB,QAAUA,GACjBhjB,GAAOud,QAAUA,GACjBvd,GAAO0kB,UAl8KP,WACE,IAAKnQ,UAAU5f,OACb,MAAO,GAET,IAAIxR,EAAQoxB,UAAU,GACtB,OAAOrU,GAAQ/c,GAASA,EAAQ,CAACA,EACnC,EA67KA6c,GAAOyc,MAAQA,GACfzc,GAAO2kB,MApgTP,SAAe7vB,EAAOmE,EAAM4a,GAExB5a,GADG4a,EAAQC,GAAehf,EAAOmE,EAAM4a,GAAS5a,IAASlO,GAClD,EAEAqT,GAAU6Z,GAAUhf,GAAO,GAEpC,IAAItE,EAAkB,MAATG,EAAgB,EAAIA,EAAMH,OACvC,IAAKA,GAAUsE,EAAO,EACpB,MAAO,GAMT,IAJA,IAAI/D,EAAQ,EACRM,EAAW,EACXC,EAASM,EAAMyH,GAAW7I,EAASsE,IAEhC/D,EAAQP,GACbc,EAAOD,KAAcma,GAAU7a,EAAOI,EAAQA,GAAS+D,GAEzD,OAAOxD,CACT,EAm/SAuK,GAAO4kB,QAl+SP,SAAiB9vB,GAMf,IALA,IAAII,GAAS,EACTP,EAAkB,MAATG,EAAgB,EAAIA,EAAMH,OACnCa,EAAW,EACXC,EAAS,KAEJP,EAAQP,GAAQ,CACvB,IAAIxR,EAAQ2R,EAAMI,GACd/R,IACFsS,EAAOD,KAAcrS,EAEzB,CACA,OAAOsS,CACT,EAs9SAuK,GAAOtZ,OA97SP,WACE,IAAIiO,EAAS4f,UAAU5f,OACvB,IAAKA,EACH,MAAO,GAMT,IAJA,IAAID,EAAOqB,EAAMpB,EAAS,GACtBG,EAAQyf,UAAU,GAClBrf,EAAQP,EAELO,KACLR,EAAKQ,EAAQ,GAAKqf,UAAUrf,GAE9B,OAAOc,GAAUkK,GAAQpL,GAAS8N,GAAU9N,GAAS,CAACA,GAAQ4S,GAAYhT,EAAM,GAClF,EAk7SAsL,GAAO6kB,KA3tCP,SAAc7d,GACZ,IAAIrS,EAAkB,MAATqS,EAAgB,EAAIA,EAAMrS,OACnC+hB,EAAa7I,KASjB,OAPA7G,EAASrS,EAAcmB,GAASkR,GAAO,SAASkR,GAC9C,GAAsB,mBAAXA,EAAK,GACd,MAAM,IAAIpd,GAAU9P,GAEtB,MAAO,CAAC0rB,EAAWwB,EAAK,IAAKA,EAAK,GACpC,IALkB,GAOXlJ,IAAS,SAASta,GAEvB,IADA,IAAIQ,GAAS,IACJA,EAAQP,GAAQ,CACvB,IAAIujB,EAAOlR,EAAM9R,GACjB,GAAIX,GAAM2jB,EAAK,GAAIlzB,KAAM0P,GACvB,OAAOH,GAAM2jB,EAAK,GAAIlzB,KAAM0P,EAEhC,CACF,GACF,EAwsCAsL,GAAO8kB,SA9qCP,SAAkBl3B,GAChB,OAz5YF,SAAsBA,GACpB,IAAI1K,EAAQwY,GAAK9N,GACjB,OAAO,SAASyJ,GACd,OAAO+O,GAAe/O,EAAQzJ,EAAQ1K,EACxC,CACF,CAo5YS6hC,CAAahhB,GAAUnW,EA/ieZ,GAgjepB,EA6qCAoS,GAAOyP,SAAWA,GAClBzP,GAAO4c,QAAUA,GACjB5c,GAAOzD,OAtuHP,SAAgBvB,EAAWgqB,GACzB,IAAIvvB,EAAS6K,GAAWtF,GACxB,OAAqB,MAAdgqB,EAAqBvvB,EAAS8N,GAAW9N,EAAQuvB,EAC1D,EAouHAhlB,GAAOilB,MAzuMP,SAASA,EAAMzwB,EAAMmhB,EAAO9B,GAE1B,IAAIpe,EAAS6iB,GAAW9jB,EA7+TN,EA6+T6BzJ,EAAWA,EAAWA,EAAWA,EAAWA,EAD3F4qB,EAAQ9B,EAAQ9oB,EAAY4qB,GAG5B,OADAlgB,EAAO8D,YAAc0rB,EAAM1rB,YACpB9D,CACT,EAquMAuK,GAAOklB,WA7rMP,SAASA,EAAW1wB,EAAMmhB,EAAO9B,GAE/B,IAAIpe,EAAS6iB,GAAW9jB,EAzhUA,GAyhU6BzJ,EAAWA,EAAWA,EAAWA,EAAWA,EADjG4qB,EAAQ9B,EAAQ9oB,EAAY4qB,GAG5B,OADAlgB,EAAO8D,YAAc2rB,EAAW3rB,YACzB9D,CACT,EAyrMAuK,GAAO3Y,SAAWA,GAClB2Y,GAAOxF,SAAWA,GAClBwF,GAAOghB,aAAeA,GACtBhhB,GAAO8e,MAAQA,GACf9e,GAAO+e,MAAQA,GACf/e,GAAOgb,WAAaA,GACpBhb,GAAOib,aAAeA,GACtBjb,GAAOkb,eAAiBA,GACxBlb,GAAOmlB,KAt0SP,SAAcrwB,EAAO4C,EAAGmc,GACtB,IAAIlf,EAAkB,MAATG,EAAgB,EAAIA,EAAMH,OACvC,OAAKA,EAIEgb,GAAU7a,GADjB4C,EAAKmc,GAASnc,IAAM3M,EAAa,EAAIktB,GAAUvgB,IACnB,EAAI,EAAIA,EAAG/C,GAH9B,EAIX,EAg0SAqL,GAAOolB,UArySP,SAAmBtwB,EAAO4C,EAAGmc,GAC3B,IAAIlf,EAAkB,MAATG,EAAgB,EAAIA,EAAMH,OACvC,OAAKA,EAKEgb,GAAU7a,EAAO,GADxB4C,EAAI/C,GADJ+C,EAAKmc,GAASnc,IAAM3M,EAAa,EAAIktB,GAAUvgB,KAEhB,EAAI,EAAIA,GAJ9B,EAKX,EA8xSAsI,GAAOqlB,eAzvSP,SAAwBvwB,EAAOQ,GAC7B,OAAQR,GAASA,EAAMH,OACnB0c,GAAUvc,EAAO+Y,GAAYvY,EAAW,IAAI,GAAM,GAClD,EACN,EAsvSA0K,GAAOslB,UAjtSP,SAAmBxwB,EAAOQ,GACxB,OAAQR,GAASA,EAAMH,OACnB0c,GAAUvc,EAAO+Y,GAAYvY,EAAW,IAAI,GAC5C,EACN,EA8sSA0K,GAAOulB,KA/qSP,SAAczwB,EAAO3R,EAAO8rB,EAAOW,GACjC,IAAIjb,EAAkB,MAATG,EAAgB,EAAIA,EAAMH,OACvC,OAAKA,GAGDsa,GAAyB,iBAATA,GAAqB6E,GAAehf,EAAO3R,EAAO8rB,KACpEA,EAAQ,EACRW,EAAMjb,GAzvIV,SAAkBG,EAAO3R,EAAO8rB,EAAOW,GACrC,IAAIjb,EAASG,EAAMH,OAWnB,KATAsa,EAAQgJ,GAAUhJ,IACN,IACVA,GAASA,EAAQta,EAAS,EAAKA,EAASsa,IAE1CW,EAAOA,IAAQ7kB,GAAa6kB,EAAMjb,EAAUA,EAASsjB,GAAUrI,IACrD,IACRA,GAAOjb,GAETib,EAAMX,EAAQW,EAAM,EAAI2Q,GAAS3Q,GAC1BX,EAAQW,GACb9a,EAAMma,KAAW9rB,EAEnB,OAAO2R,CACT,CA2uIS0wB,CAAS1wB,EAAO3R,EAAO8rB,EAAOW,IAN5B,EAOX,EAsqSA5P,GAAOylB,OA3vOP,SAAgB/uB,EAAYpB,GAE1B,OADW4K,GAAQxJ,GAAcnB,GAAckS,IACnC/Q,EAAYmX,GAAYvY,EAAW,GACjD,EAyvOA0K,GAAO0lB,QAvqOP,SAAiBhvB,EAAY1B,GAC3B,OAAO0S,GAAY1O,GAAItC,EAAY1B,GAAW,EAChD,EAsqOAgL,GAAO2lB,YAhpOP,SAAqBjvB,EAAY1B,GAC/B,OAAO0S,GAAY1O,GAAItC,EAAY1B,GAAW3J,EAChD,EA+oOA2U,GAAO4lB,aAxnOP,SAAsBlvB,EAAY1B,EAAU2S,GAE1C,OADAA,EAAQA,IAAU5c,EAAY,EAAIktB,GAAUtQ,GACrCD,GAAY1O,GAAItC,EAAY1B,GAAW2S,EAChD,EAsnOA3H,GAAOmZ,QAAUA,GACjBnZ,GAAO6lB,YAviSP,SAAqB/wB,GAEnB,OADsB,MAATA,GAAoBA,EAAMH,OACvB+S,GAAY5S,EAAOzJ,GAAY,EACjD,EAqiSA2U,GAAO8lB,aA/gSP,SAAsBhxB,EAAO6S,GAE3B,OADsB,MAAT7S,GAAoBA,EAAMH,OAKhC+S,GAAY5S,EADnB6S,EAAQA,IAAU5c,EAAY,EAAIktB,GAAUtQ,IAFnC,EAIX,EAygSA3H,GAAO+lB,KAz9LP,SAAcvxB,GACZ,OAAO8jB,GAAW9jB,EA5wUD,IA6wUnB,EAw9LAwL,GAAOkjB,KAAOA,GACdljB,GAAOmjB,UAAYA,GACnBnjB,GAAOgmB,UA3/RP,SAAmBhf,GAKjB,IAJA,IAAI9R,GAAS,EACTP,EAAkB,MAATqS,EAAgB,EAAIA,EAAMrS,OACnCc,EAAS,CAAC,IAELP,EAAQP,GAAQ,CACvB,IAAIujB,EAAOlR,EAAM9R,GACjBO,EAAOyiB,EAAK,IAAMA,EAAK,EACzB,CACA,OAAOziB,CACT,EAk/RAuK,GAAOimB,UA38GP,SAAmB5uB,GACjB,OAAiB,MAAVA,EAAiB,GAAK4Q,GAAc5Q,EAAQqE,GAAKrE,GAC1D,EA08GA2I,GAAOkmB,YAj7GP,SAAqB7uB,GACnB,OAAiB,MAAVA,EAAiB,GAAK4Q,GAAc5Q,EAAQ2N,GAAO3N,GAC5D,EAg7GA2I,GAAOgd,QAAUA,GACjBhd,GAAOmmB,QA56RP,SAAiBrxB,GAEf,OADsB,MAATA,GAAoBA,EAAMH,OACvBgb,GAAU7a,EAAO,GAAI,GAAK,EAC5C,EA06RAkL,GAAOsb,aAAeA,GACtBtb,GAAOwb,eAAiBA,GACxBxb,GAAOyb,iBAAmBA,GAC1Bzb,GAAOkhB,OAASA,GAChBlhB,GAAOmhB,SAAWA,GAClBnhB,GAAOid,UAAYA,GACnBjd,GAAOhL,SAAWA,GAClBgL,GAAOkd,MAAQA,GACfld,GAAOtE,KAAOA,GACdsE,GAAOgF,OAASA,GAChBhF,GAAOhH,IAAMA,GACbgH,GAAOomB,QA1rGP,SAAiB/uB,EAAQrC,GACvB,IAAIS,EAAS,CAAC,EAMd,OALAT,EAAW6Y,GAAY7Y,EAAU,GAEjCmS,GAAW9P,GAAQ,SAASlU,EAAOyT,EAAKS,GACtC4L,GAAgBxN,EAAQT,EAAS7R,EAAOyT,EAAKS,GAASlU,EACxD,IACOsS,CACT,EAmrGAuK,GAAOqmB,UArpGP,SAAmBhvB,EAAQrC,GACzB,IAAIS,EAAS,CAAC,EAMd,OALAT,EAAW6Y,GAAY7Y,EAAU,GAEjCmS,GAAW9P,GAAQ,SAASlU,EAAOyT,EAAKS,GACtC4L,GAAgBxN,EAAQmB,EAAK5B,EAAS7R,EAAOyT,EAAKS,GACpD,IACO5B,CACT,EA8oGAuK,GAAOsmB,QAphCP,SAAiB14B,GACf,OAAOye,GAAYtI,GAAUnW,EAxveX,GAyvepB,EAmhCAoS,GAAOumB,gBAh/BP,SAAyBne,EAAM2D,GAC7B,OAAOK,GAAoBhE,EAAMrE,GAAUgI,EA7xezB,GA8xepB,EA++BA/L,GAAO2a,QAAUA,GACjB3a,GAAOwhB,MAAQA,GACfxhB,GAAOihB,UAAYA,GACnBjhB,GAAOojB,OAASA,GAChBpjB,GAAOqjB,SAAWA,GAClBrjB,GAAOsjB,MAAQA,GACftjB,GAAOmf,OAASA,GAChBnf,GAAOwmB,OAzzBP,SAAgB9uB,GAEd,OADAA,EAAIugB,GAAUvgB,GACPsX,IAAS,SAASta,GACvB,OAAO+Y,GAAQ/Y,EAAMgD,EACvB,GACF,EAqzBAsI,GAAOyhB,KAAOA,GACdzhB,GAAOymB,OAnhGP,SAAgBpvB,EAAQ/B,GACtB,OAAOssB,GAAOvqB,EAAQ8nB,GAAOtR,GAAYvY,IAC3C,EAkhGA0K,GAAO0mB,KA73LP,SAAclyB,GACZ,OAAO6oB,GAAO,EAAG7oB,EACnB,EA43LAwL,GAAO2mB,QAr4NP,SAAiBjwB,EAAYiX,EAAWC,EAAQiG,GAC9C,OAAkB,MAAdnd,EACK,IAEJwJ,GAAQyN,KACXA,EAAyB,MAAbA,EAAoB,GAAK,CAACA,IAGnCzN,GADL0N,EAASiG,EAAQ9oB,EAAY6iB,KAE3BA,EAAmB,MAAVA,EAAiB,GAAK,CAACA,IAE3BF,GAAYhX,EAAYiX,EAAWC,GAC5C,EA03NA5N,GAAOujB,KAAOA,GACdvjB,GAAOof,SAAWA,GAClBpf,GAAOwjB,UAAYA,GACnBxjB,GAAOyjB,SAAWA,GAClBzjB,GAAOuf,QAAUA,GACjBvf,GAAOwf,aAAeA,GACtBxf,GAAOmd,UAAYA,GACnBnd,GAAOvF,KAAOA,GACduF,GAAO4hB,OAASA,GAChB5hB,GAAO1Z,SAAWA,GAClB0Z,GAAO4mB,WA/rBP,SAAoBvvB,GAClB,OAAO,SAAS+Q,GACd,OAAiB,MAAV/Q,EAAiBtM,EAAYod,GAAQ9Q,EAAQ+Q,EACtD,CACF,EA4rBApI,GAAO0b,KAAOA,GACd1b,GAAO2b,QAAUA,GACjB3b,GAAO6mB,UApsRP,SAAmB/xB,EAAOmB,EAAQjB,GAChC,OAAQF,GAASA,EAAMH,QAAUsB,GAAUA,EAAOtB,OAC9C8Z,GAAY3Z,EAAOmB,EAAQ4X,GAAY7Y,EAAU,IACjDF,CACN,EAisRAkL,GAAO8mB,YAxqRP,SAAqBhyB,EAAOmB,EAAQJ,GAClC,OAAQf,GAASA,EAAMH,QAAUsB,GAAUA,EAAOtB,OAC9C8Z,GAAY3Z,EAAOmB,EAAQlL,EAAW8K,GACtCf,CACN,EAqqRAkL,GAAO4b,OAASA,GAChB5b,GAAO2jB,MAAQA,GACf3jB,GAAO4jB,WAAaA,GACpB5jB,GAAOyf,MAAQA,GACfzf,GAAO+mB,OAxvNP,SAAgBrwB,EAAYpB,GAE1B,OADW4K,GAAQxJ,GAAcnB,GAAckS,IACnC/Q,EAAYyoB,GAAOtR,GAAYvY,EAAW,IACxD,EAsvNA0K,GAAOgnB,OAzmRP,SAAgBlyB,EAAOQ,GACrB,IAAIG,EAAS,GACb,IAAMX,IAASA,EAAMH,OACnB,OAAOc,EAET,IAAIP,GAAS,EACT0Z,EAAU,GACVja,EAASG,EAAMH,OAGnB,IADAW,EAAYuY,GAAYvY,EAAW,KAC1BJ,EAAQP,GAAQ,CACvB,IAAIxR,EAAQ2R,EAAMI,GACdI,EAAUnS,EAAO+R,EAAOJ,KAC1BW,EAAO7K,KAAKzH,GACZyrB,EAAQhkB,KAAKsK,GAEjB,CAEA,OADAyZ,GAAW7Z,EAAO8Z,GACXnZ,CACT,EAulRAuK,GAAOinB,KAluLP,SAAczyB,EAAMya,GAClB,GAAmB,mBAARza,EACT,MAAM,IAAIsG,GAAU9P,GAGtB,OAAOgkB,GAASxa,EADhBya,EAAQA,IAAUlkB,EAAYkkB,EAAQgJ,GAAUhJ,GAElD,EA6tLAjP,GAAOnB,QAAUA,GACjBmB,GAAOknB,WAhtNP,SAAoBxwB,EAAYgB,EAAGmc,GAOjC,OALEnc,GADGmc,EAAQC,GAAepd,EAAYgB,EAAGmc,GAASnc,IAAM3M,GACpD,EAEAktB,GAAUvgB,IAELwI,GAAQxJ,GAAcgM,GAAkB2M,IACvC3Y,EAAYgB,EAC1B,EAysNAsI,GAAOzZ,IAv6FP,SAAa8Q,EAAQ+Q,EAAMjlB,GACzB,OAAiB,MAAVkU,EAAiBA,EAASmX,GAAQnX,EAAQ+Q,EAAMjlB,EACzD,EAs6FA6c,GAAOmnB,QA54FP,SAAiB9vB,EAAQ+Q,EAAMjlB,EAAO8gB,GAEpC,OADAA,EAAkC,mBAAdA,EAA2BA,EAAalZ,EAC3C,MAAVsM,EAAiBA,EAASmX,GAAQnX,EAAQ+Q,EAAMjlB,EAAO8gB,EAChE,EA04FAjE,GAAOonB,QA1rNP,SAAiB1wB,GAEf,OADWwJ,GAAQxJ,GAAcoM,GAAe4M,IACpChZ,EACd,EAwrNAsJ,GAAOnI,MAhjRP,SAAe/C,EAAOma,EAAOW,GAC3B,IAAIjb,EAAkB,MAATG,EAAgB,EAAIA,EAAMH,OACvC,OAAKA,GAGDib,GAAqB,iBAAPA,GAAmBkE,GAAehf,EAAOma,EAAOW,IAChEX,EAAQ,EACRW,EAAMjb,IAGNsa,EAAiB,MAATA,EAAgB,EAAIgJ,GAAUhJ,GACtCW,EAAMA,IAAQ7kB,EAAY4J,EAASsjB,GAAUrI,IAExCD,GAAU7a,EAAOma,EAAOW,IAVtB,EAWX,EAmiRA5P,GAAOod,OAASA,GAChBpd,GAAOqnB,WAx3QP,SAAoBvyB,GAClB,OAAQA,GAASA,EAAMH,OACnBkc,GAAe/b,GACf,EACN,EAq3QAkL,GAAOsnB,aAn2QP,SAAsBxyB,EAAOE,GAC3B,OAAQF,GAASA,EAAMH,OACnBkc,GAAe/b,EAAO+Y,GAAY7Y,EAAU,IAC5C,EACN,EAg2QAgL,GAAOhG,MA5hEP,SAAepC,EAAQ2vB,EAAWC,GAKhC,OAJIA,GAAyB,iBAATA,GAAqB1T,GAAelc,EAAQ2vB,EAAWC,KACzED,EAAYC,EAAQz8B,IAEtBy8B,EAAQA,IAAUz8B,EAAYS,EAAmBg8B,IAAU,IAI3D5vB,EAASyD,GAASzD,MAEQ,iBAAb2vB,GACO,MAAbA,IAAsBrzB,GAASqzB,OAEpCA,EAAYxW,GAAawW,KACP1uB,GAAWjB,GACpBsa,GAAUrY,GAAcjC,GAAS,EAAG4vB,GAGxC5vB,EAAOoC,MAAMutB,EAAWC,GAZtB,EAaX,EA0gEAxnB,GAAOynB,OAnsLP,SAAgBjzB,EAAMya,GACpB,GAAmB,mBAARza,EACT,MAAM,IAAIsG,GAAU9P,GAGtB,OADAikB,EAAiB,MAATA,EAAgB,EAAI7Q,GAAU6Z,GAAUhJ,GAAQ,GACjDD,IAAS,SAASta,GACvB,IAAII,EAAQJ,EAAKua,GACb8K,EAAY7H,GAAUxd,EAAM,EAAGua,GAKnC,OAHIna,GACFkB,GAAU+jB,EAAWjlB,GAEhBP,GAAMC,EAAMxP,KAAM+0B,EAC3B,GACF,EAsrLA/Z,GAAO0nB,KAl1QP,SAAc5yB,GACZ,IAAIH,EAAkB,MAATG,EAAgB,EAAIA,EAAMH,OACvC,OAAOA,EAASgb,GAAU7a,EAAO,EAAGH,GAAU,EAChD,EAg1QAqL,GAAO2nB,KArzQP,SAAc7yB,EAAO4C,EAAGmc,GACtB,OAAM/e,GAASA,EAAMH,OAIdgb,GAAU7a,EAAO,GADxB4C,EAAKmc,GAASnc,IAAM3M,EAAa,EAAIktB,GAAUvgB,IAChB,EAAI,EAAIA,GAH9B,EAIX,EAgzQAsI,GAAO4nB,UArxQP,SAAmB9yB,EAAO4C,EAAGmc,GAC3B,IAAIlf,EAAkB,MAATG,EAAgB,EAAIA,EAAMH,OACvC,OAAKA,EAKEgb,GAAU7a,GADjB4C,EAAI/C,GADJ+C,EAAKmc,GAASnc,IAAM3M,EAAa,EAAIktB,GAAUvgB,KAEnB,EAAI,EAAIA,EAAG/C,GAJ9B,EAKX,EA8wQAqL,GAAO6nB,eAzuQP,SAAwB/yB,EAAOQ,GAC7B,OAAQR,GAASA,EAAMH,OACnB0c,GAAUvc,EAAO+Y,GAAYvY,EAAW,IAAI,GAAO,GACnD,EACN,EAsuQA0K,GAAO8nB,UAjsQP,SAAmBhzB,EAAOQ,GACxB,OAAQR,GAASA,EAAMH,OACnB0c,GAAUvc,EAAO+Y,GAAYvY,EAAW,IACxC,EACN,EA8rQA0K,GAAO+nB,IApuPP,SAAa5kC,EAAOu5B,GAElB,OADAA,EAAYv5B,GACLA,CACT,EAkuPA6c,GAAOgoB,SA9oLP,SAAkBxzB,EAAM8R,EAAM9hB,GAC5B,IAAIu5B,GAAU,EACV7J,GAAW,EAEf,GAAmB,mBAAR1f,EACT,MAAM,IAAIsG,GAAU9P,GAMtB,OAJIwV,GAAShc,KACXu5B,EAAU,YAAav5B,IAAYA,EAAQu5B,QAAUA,EACrD7J,EAAW,aAAc1vB,IAAYA,EAAQ0vB,SAAWA,GAEnD7sB,GAASmN,EAAM8R,EAAM,CAC1B,QAAWyX,EACX,QAAWzX,EACX,SAAY4N,GAEhB,EA+nLAlU,GAAO+U,KAAOA,GACd/U,GAAOkgB,QAAUA,GACjBlgB,GAAO8hB,QAAUA,GACjB9hB,GAAO+hB,UAAYA,GACnB/hB,GAAOioB,OArfP,SAAgB9kC,GACd,OAAI+c,GAAQ/c,GACH2S,GAAS3S,EAAOmlB,IAElBd,GAASrkB,GAAS,CAACA,GAASyf,GAAUoP,GAAa3W,GAASlY,IACrE,EAifA6c,GAAOuN,cAAgBA,GACvBvN,GAAO5G,UA10FP,SAAmB/B,EAAQrC,EAAUC,GACnC,IAAIgN,EAAQ/B,GAAQ7I,GAChB6wB,EAAYjmB,GAASlE,GAAS1G,IAAW/C,GAAa+C,GAG1D,GADArC,EAAW6Y,GAAY7Y,EAAU,GACd,MAAfC,EAAqB,CACvB,IAAIoQ,EAAOhO,GAAUA,EAAOiN,YAE1BrP,EADEizB,EACYjmB,EAAQ,IAAIoD,EAAO,GAE1B7E,GAASnJ,IACF6Q,GAAW7C,GAAQ/E,GAAWlE,GAAa/E,IAG3C,CAAC,CAEnB,CAIA,OAHC6wB,EAAY/yB,GAAYgS,IAAY9P,GAAQ,SAASlU,EAAO+R,EAAOmC,GAClE,OAAOrC,EAASC,EAAa9R,EAAO+R,EAAOmC,EAC7C,IACOpC,CACT,EAszFA+K,GAAOmoB,MArnLP,SAAe3zB,GACb,OAAOkhB,GAAIlhB,EAAM,EACnB,EAonLAwL,GAAO6b,MAAQA,GACf7b,GAAO8b,QAAUA,GACjB9b,GAAO+b,UAAYA,GACnB/b,GAAOooB,KAzmQP,SAActzB,GACZ,OAAQA,GAASA,EAAMH,OAAUqc,GAASlc,GAAS,EACrD,EAwmQAkL,GAAOqoB,OA/kQP,SAAgBvzB,EAAOE,GACrB,OAAQF,GAASA,EAAMH,OAAUqc,GAASlc,EAAO+Y,GAAY7Y,EAAU,IAAM,EAC/E,EA8kQAgL,GAAOsoB,SAxjQP,SAAkBxzB,EAAOe,GAEvB,OADAA,EAAkC,mBAAdA,EAA2BA,EAAa9K,EACpD+J,GAASA,EAAMH,OAAUqc,GAASlc,EAAO/J,EAAW8K,GAAc,EAC5E,EAsjQAmK,GAAOuoB,MAhyFP,SAAelxB,EAAQ+Q,GACrB,OAAiB,MAAV/Q,GAAwByX,GAAUzX,EAAQ+Q,EACnD,EA+xFApI,GAAOgc,MAAQA,GACfhc,GAAOkc,UAAYA,GACnBlc,GAAOwoB,OApwFP,SAAgBnxB,EAAQ+Q,EAAMgJ,GAC5B,OAAiB,MAAV/Z,EAAiBA,EAAS8Z,GAAW9Z,EAAQ+Q,EAAM2J,GAAaX,GACzE,EAmwFApR,GAAOyoB,WAzuFP,SAAoBpxB,EAAQ+Q,EAAMgJ,EAASnN,GAEzC,OADAA,EAAkC,mBAAdA,EAA2BA,EAAalZ,EAC3C,MAAVsM,EAAiBA,EAAS8Z,GAAW9Z,EAAQ+Q,EAAM2J,GAAaX,GAAUnN,EACnF,EAuuFAjE,GAAO/J,OAASA,GAChB+J,GAAO0oB,SAhrFP,SAAkBrxB,GAChB,OAAiB,MAAVA,EAAiB,GAAKY,GAAWZ,EAAQ2N,GAAO3N,GACzD,EA+qFA2I,GAAOmc,QAAUA,GACjBnc,GAAOoU,MAAQA,GACfpU,GAAO2oB,KA3mLP,SAAcxlC,EAAO6xB,GACnB,OAAOuK,GAAQxN,GAAaiD,GAAU7xB,EACxC,EA0mLA6c,GAAOoc,IAAMA,GACbpc,GAAOqc,MAAQA,GACfrc,GAAOsc,QAAUA,GACjBtc,GAAOuc,IAAMA,GACbvc,GAAO4oB,UAj3PP,SAAmB1lC,EAAO+S,GACxB,OAAO0b,GAAczuB,GAAS,GAAI+S,GAAU,GAAIiN,GAClD,EAg3PAlD,GAAO6oB,cA/1PP,SAAuB3lC,EAAO+S,GAC5B,OAAO0b,GAAczuB,GAAS,GAAI+S,GAAU,GAAIuY,GAClD,EA81PAxO,GAAOwc,QAAUA,GAGjBxc,GAAOsB,QAAUwgB,GACjB9hB,GAAO8oB,UAAY/G,GACnB/hB,GAAO+oB,OAASrI,GAChB1gB,GAAOgpB,WAAarI,GAGpB2C,GAAMtjB,GAAQA,IAKdA,GAAO6B,IAAMA,GACb7B,GAAO+iB,QAAUA,GACjB/iB,GAAOgiB,UAAYA,GACnBhiB,GAAOmiB,WAAaA,GACpBniB,GAAOvC,KAAOA,GACduC,GAAOipB,MAprFP,SAAerlB,EAAQC,EAAOC,GAa5B,OAZIA,IAAU/Y,IACZ+Y,EAAQD,EACRA,EAAQ9Y,GAEN+Y,IAAU/Y,IAEZ+Y,GADAA,EAAQ2T,GAAS3T,KACCA,EAAQA,EAAQ,GAEhCD,IAAU9Y,IAEZ8Y,GADAA,EAAQ4T,GAAS5T,KACCA,EAAQA,EAAQ,GAE7BhB,GAAU4U,GAAS7T,GAASC,EAAOC,EAC5C,EAuqFA9D,GAAO+a,MA7jLP,SAAe53B,GACb,OAAO4gB,GAAU5gB,EArzVI,EAszVvB,EA4jLA6c,GAAOkpB,UApgLP,SAAmB/lC,GACjB,OAAO4gB,GAAU5gB,EAAOu+B,EAC1B,EAmgLA1hB,GAAOmpB,cAr+KP,SAAuBhmC,EAAO8gB,GAE5B,OAAOF,GAAU5gB,EAAOu+B,EADxBzd,EAAkC,mBAAdA,EAA2BA,EAAalZ,EAE9D,EAm+KAiV,GAAOopB,UA7hLP,SAAmBjmC,EAAO8gB,GAExB,OAAOF,GAAU5gB,EAz1VI,EAw1VrB8gB,EAAkC,mBAAdA,EAA2BA,EAAalZ,EAE9D,EA2hLAiV,GAAOqpB,WA18KP,SAAoBhyB,EAAQzJ,GAC1B,OAAiB,MAAVA,GAAkBwY,GAAe/O,EAAQzJ,EAAQ8N,GAAK9N,GAC/D,EAy8KAoS,GAAOqU,OAASA,GAChBrU,GAAOspB,UA1xCP,SAAmBnmC,EAAO2zB,GACxB,OAAiB,MAAT3zB,GAAiBA,GAAUA,EAAS2zB,EAAe3zB,CAC7D,EAyxCA6c,GAAO+jB,OAASA,GAChB/jB,GAAOupB,SAz9EP,SAAkB3xB,EAAQvR,EAAQmjC,GAChC5xB,EAASyD,GAASzD,GAClBvR,EAAS0qB,GAAa1qB,GAEtB,IAAIsO,EAASiD,EAAOjD,OAKhBib,EAJJ4Z,EAAWA,IAAaz+B,EACpB4J,EACAkO,GAAUoV,GAAUuR,GAAW,EAAG70B,GAItC,OADA60B,GAAYnjC,EAAOsO,SACA,GAAKiD,EAAOC,MAAM2xB,EAAU5Z,IAAQvpB,CACzD,EA88EA2Z,GAAOgD,GAAKA,GACZhD,GAAOypB,OAj7EP,SAAgB7xB,GAEd,OADAA,EAASyD,GAASzD,KACA/J,EAAmBiL,KAAKlB,GACtCA,EAAOG,QAAQtK,EAAiBiL,IAChCd,CACN,EA66EAoI,GAAO0pB,aA55EP,SAAsB9xB,GAEpB,OADAA,EAASyD,GAASzD,KACAvJ,GAAgByK,KAAKlB,GACnCA,EAAOG,QAAQ3J,GAAc,QAC7BwJ,CACN,EAw5EAoI,GAAO2pB,MA57OP,SAAejzB,EAAYpB,EAAWue,GACpC,IAAIrf,EAAO0L,GAAQxJ,GAAcrB,GAAaiS,GAI9C,OAHIuM,GAASC,GAAepd,EAAYpB,EAAWue,KACjDve,EAAYvK,GAEPyJ,EAAKkC,EAAYmX,GAAYvY,EAAW,GACjD,EAu7OA0K,GAAO6c,KAAOA,GACd7c,GAAOmb,UAAYA,GACnBnb,GAAO4pB,QArxHP,SAAiBvyB,EAAQ/B,GACvB,OAAOmB,GAAYY,EAAQwW,GAAYvY,EAAW,GAAI6R,GACxD,EAoxHAnH,GAAO8c,SAAWA,GAClB9c,GAAOob,cAAgBA,GACvBpb,GAAO6pB,YAjvHP,SAAqBxyB,EAAQ/B,GAC3B,OAAOmB,GAAYY,EAAQwW,GAAYvY,EAAW,GAAI+R,GACxD,EAgvHArH,GAAOrC,MAAQA,GACfqC,GAAO9G,QAAUA,GACjB8G,GAAO+c,aAAeA,GACtB/c,GAAO8pB,MArtHP,SAAezyB,EAAQrC,GACrB,OAAiB,MAAVqC,EACHA,EACAyQ,GAAQzQ,EAAQwW,GAAY7Y,EAAU,GAAIgQ,GAChD,EAktHAhF,GAAO+pB,WAtrHP,SAAoB1yB,EAAQrC,GAC1B,OAAiB,MAAVqC,EACHA,EACA2Q,GAAa3Q,EAAQwW,GAAY7Y,EAAU,GAAIgQ,GACrD,EAmrHAhF,GAAOgqB,OArpHP,SAAgB3yB,EAAQrC,GACtB,OAAOqC,GAAU8P,GAAW9P,EAAQwW,GAAY7Y,EAAU,GAC5D,EAopHAgL,GAAOiqB,YAxnHP,SAAqB5yB,EAAQrC,GAC3B,OAAOqC,GAAUgQ,GAAgBhQ,EAAQwW,GAAY7Y,EAAU,GACjE,EAunHAgL,GAAO5Z,IAAMA,GACb4Z,GAAO0f,GAAKA,GACZ1f,GAAO2f,IAAMA,GACb3f,GAAO5H,IAzgHP,SAAaf,EAAQ+Q,GACnB,OAAiB,MAAV/Q,GAAkBkiB,GAAQliB,EAAQ+Q,EAAMa,GACjD,EAwgHAjJ,GAAO+M,MAAQA,GACf/M,GAAOqb,KAAOA,GACdrb,GAAOmM,SAAWA,GAClBnM,GAAOwG,SA5pOP,SAAkB9P,EAAYvT,EAAO2T,EAAW+c,GAC9Cnd,EAAagW,GAAYhW,GAAcA,EAAaT,GAAOS,GAC3DI,EAAaA,IAAc+c,EAASoE,GAAUnhB,GAAa,EAE3D,IAAInC,EAAS+B,EAAW/B,OAIxB,OAHImC,EAAY,IACdA,EAAYsH,GAAUzJ,EAASmC,EAAW,IAErCipB,GAASrpB,GACXI,GAAanC,GAAU+B,EAAWgY,QAAQvrB,EAAO2T,IAAc,IAC7DnC,GAAUgB,GAAYe,EAAYvT,EAAO2T,IAAc,CAChE,EAkpOAkJ,GAAO0O,QA9lSP,SAAiB5Z,EAAO3R,EAAO2T,GAC7B,IAAInC,EAAkB,MAATG,EAAgB,EAAIA,EAAMH,OACvC,IAAKA,EACH,OAAQ,EAEV,IAAIO,EAAqB,MAAb4B,EAAoB,EAAImhB,GAAUnhB,GAI9C,OAHI5B,EAAQ,IACVA,EAAQkJ,GAAUzJ,EAASO,EAAO,IAE7BS,GAAYb,EAAO3R,EAAO+R,EACnC,EAqlSA8K,GAAOkqB,QAlqFP,SAAiBtmB,EAAQqL,EAAOW,GAS9B,OARAX,EAAQqI,GAASrI,GACbW,IAAQ7kB,GACV6kB,EAAMX,EACNA,EAAQ,GAERW,EAAM0H,GAAS1H,GArsVnB,SAAqBhM,EAAQqL,EAAOW,GAClC,OAAOhM,GAAUtF,GAAU2Q,EAAOW,IAAQhM,EAASxF,GAAU6Q,EAAOW,EACtE,CAssVSua,CADPvmB,EAAS6T,GAAS7T,GACSqL,EAAOW,EACpC,EAypFA5P,GAAOohB,OAASA,GAChBphB,GAAOmC,YAAcA,GACrBnC,GAAOE,QAAUA,GACjBF,GAAOpM,cAAgBA,GACvBoM,GAAO0M,YAAcA,GACrB1M,GAAOqN,kBAAoBA,GAC3BrN,GAAOoqB,UAtwKP,SAAmBjnC,GACjB,OAAiB,IAAVA,IAA4B,IAAVA,GACtB8c,GAAa9c,IAAUulB,GAAWvlB,IAAUyI,CACjD,EAowKAoU,GAAOjC,SAAWA,GAClBiC,GAAOlM,OAASA,GAChBkM,GAAOqqB,UA7sKP,SAAmBlnC,GACjB,OAAO8c,GAAa9c,IAA6B,IAAnBA,EAAM8P,WAAmBqa,GAAcnqB,EACvE,EA4sKA6c,GAAOsqB,QAzqKP,SAAiBnnC,GACf,GAAa,MAATA,EACF,OAAO,EAET,GAAIupB,GAAYvpB,KACX+c,GAAQ/c,IAA0B,iBAATA,GAA4C,mBAAhBA,EAAMsZ,QAC1DsB,GAAS5a,IAAUmR,GAAanR,IAAUgf,GAAYhf,IAC1D,OAAQA,EAAMwR,OAEhB,IAAI8P,EAAMC,GAAOvhB,GACjB,GAAIshB,GAAOxY,GAAUwY,GAAOnY,EAC1B,OAAQnJ,EAAM8V,KAEhB,GAAIsT,GAAYppB,GACd,OAAQmpB,GAASnpB,GAAOwR,OAE1B,IAAK,IAAIiC,KAAOzT,EACd,GAAImY,GAAe1G,KAAKzR,EAAOyT,GAC7B,OAAO,EAGX,OAAO,CACT,EAopKAoJ,GAAOuqB,QAtnKP,SAAiBpnC,EAAO6lB,GACtB,OAAOe,GAAY5mB,EAAO6lB,EAC5B,EAqnKAhJ,GAAOwqB,YAnlKP,SAAqBrnC,EAAO6lB,EAAO/E,GAEjC,IAAIxO,GADJwO,EAAkC,mBAAdA,EAA2BA,EAAalZ,GAClCkZ,EAAW9gB,EAAO6lB,GAASje,EACrD,OAAO0K,IAAW1K,EAAYgf,GAAY5mB,EAAO6lB,EAAOje,EAAWkZ,KAAgBxO,CACrF,EAglKAuK,GAAO4f,QAAUA,GACjB5f,GAAO/B,SA1hKP,SAAkB9a,GAChB,MAAuB,iBAATA,GAAqB6a,GAAe7a,EACpD,EAyhKA6c,GAAOkI,WAAaA,GACpBlI,GAAO6f,UAAYA,GACnB7f,GAAOyZ,SAAWA,GAClBzZ,GAAOhM,MAAQA,GACfgM,GAAOyqB,QA11JP,SAAiBpzB,EAAQzJ,GACvB,OAAOyJ,IAAWzJ,GAAUge,GAAYvU,EAAQzJ,EAAQ+e,GAAa/e,GACvE,EAy1JAoS,GAAO0qB,YAvzJP,SAAqBrzB,EAAQzJ,EAAQqW,GAEnC,OADAA,EAAkC,mBAAdA,EAA2BA,EAAalZ,EACrD6gB,GAAYvU,EAAQzJ,EAAQ+e,GAAa/e,GAASqW,EAC3D,EAqzJAjE,GAAO2qB,MAvxJP,SAAexnC,GAIb,OAAO28B,GAAS38B,IAAUA,IAAUA,CACtC,EAmxJA6c,GAAO4qB,SAvvJP,SAAkBznC,GAChB,GAAI02B,GAAW12B,GACb,MAAM,IAAIwX,GAtsXM,mEAwsXlB,OAAOsR,GAAa9oB,EACtB,EAmvJA6c,GAAO6qB,MAxsJP,SAAe1nC,GACb,OAAgB,MAATA,CACT,EAusJA6c,GAAO8qB,OAjuJP,SAAgB3nC,GACd,OAAiB,OAAVA,CACT,EAguJA6c,GAAO8f,SAAWA,GAClB9f,GAAOQ,SAAWA,GAClBR,GAAOC,aAAeA,GACtBD,GAAOsN,cAAgBA,GACvBtN,GAAO9L,SAAWA,GAClB8L,GAAO+qB,cArlJP,SAAuB5nC,GACrB,OAAO08B,GAAU18B,IAAUA,IAAS,kBAAqBA,GAASmI,CACpE,EAolJA0U,GAAO5L,MAAQA,GACf4L,GAAO+f,SAAWA,GAClB/f,GAAOwH,SAAWA,GAClBxH,GAAO1L,aAAeA,GACtB0L,GAAOgrB,YAn/IP,SAAqB7nC,GACnB,OAAOA,IAAU4H,CACnB,EAk/IAiV,GAAOirB,UA/9IP,SAAmB9nC,GACjB,OAAO8c,GAAa9c,IAAUuhB,GAAOvhB,IAAUsJ,CACjD,EA89IAuT,GAAOkrB,UA38IP,SAAmB/nC,GACjB,OAAO8c,GAAa9c,IAn6XP,oBAm6XiBulB,GAAWvlB,EAC3C,EA08IA6c,GAAO1O,KAz/RP,SAAcwD,EAAOyyB,GACnB,OAAgB,MAATzyB,EAAgB,GAAKoJ,GAAWtJ,KAAKE,EAAOyyB,EACrD,EAw/RAvnB,GAAOqiB,UAAYA,GACnBriB,GAAO6J,KAAOA,GACd7J,GAAOmrB,YAh9RP,SAAqBr2B,EAAO3R,EAAO2T,GACjC,IAAInC,EAAkB,MAATG,EAAgB,EAAIA,EAAMH,OACvC,IAAKA,EACH,OAAQ,EAEV,IAAIO,EAAQP,EAKZ,OAJImC,IAAc/L,IAEhBmK,GADAA,EAAQ+iB,GAAUnhB,IACF,EAAIsH,GAAUzJ,EAASO,EAAO,GAAKoJ,GAAUpJ,EAAOP,EAAS,IAExExR,GAAUA,EArvMrB,SAA2B2R,EAAO3R,EAAO2T,GAEvC,IADA,IAAI5B,EAAQ4B,EAAY,EACjB5B,KACL,GAAIJ,EAAMI,KAAW/R,EACnB,OAAO+R,EAGX,OAAOA,CACT,CA8uMQk2B,CAAkBt2B,EAAO3R,EAAO+R,GAChC2B,GAAc/B,EAAOmC,GAAW/B,GAAO,EAC7C,EAo8RA8K,GAAOsiB,UAAYA,GACnBtiB,GAAOuiB,WAAaA,GACpBviB,GAAOggB,GAAKA,GACZhgB,GAAOigB,IAAMA,GACbjgB,GAAO3B,IAhfP,SAAavJ,GACX,OAAQA,GAASA,EAAMH,OACnB4S,GAAazS,EAAOqX,GAAUpD,IAC9Bhe,CACN,EA6eAiV,GAAOqrB,MApdP,SAAev2B,EAAOE,GACpB,OAAQF,GAASA,EAAMH,OACnB4S,GAAazS,EAAO+Y,GAAY7Y,EAAU,GAAI+T,IAC9Che,CACN,EAidAiV,GAAOsrB,KAjcP,SAAcx2B,GACZ,OAAOqC,GAASrC,EAAOqX,GACzB,EAgcAnM,GAAOurB,OAvaP,SAAgBz2B,EAAOE,GACrB,OAAOmC,GAASrC,EAAO+Y,GAAY7Y,EAAU,GAC/C,EAsaAgL,GAAOzB,IAlZP,SAAazJ,GACX,OAAQA,GAASA,EAAMH,OACnB4S,GAAazS,EAAOqX,GAAUK,IAC9BzhB,CACN,EA+YAiV,GAAOwrB,MAtXP,SAAe12B,EAAOE,GACpB,OAAQF,GAASA,EAAMH,OACnB4S,GAAazS,EAAO+Y,GAAY7Y,EAAU,GAAIwX,IAC9CzhB,CACN,EAmXAiV,GAAOsZ,UAAYA,GACnBtZ,GAAO8Z,UAAYA,GACnB9Z,GAAOyrB,WAztBP,WACE,MAAO,CAAC,CACV,EAwtBAzrB,GAAO0rB,WAzsBP,WACE,MAAO,EACT,EAwsBA1rB,GAAO2rB,SAzrBP,WACE,OAAO,CACT,EAwrBA3rB,GAAOkkB,SAAWA,GAClBlkB,GAAO4rB,IA77RP,SAAa92B,EAAO4C,GAClB,OAAQ5C,GAASA,EAAMH,OAAU8Y,GAAQ3Y,EAAOmjB,GAAUvgB,IAAM3M,CAClE,EA47RAiV,GAAO6rB,WAliCP,WAIE,OAHIh5B,GAAKuH,IAAMpV,OACb6N,GAAKuH,EAAI0B,IAEJ9W,IACT,EA8hCAgb,GAAOmY,KAAOA,GACdnY,GAAO3C,IAAMA,GACb2C,GAAO8rB,IAj5EP,SAAal0B,EAAQjD,EAAQuiB,GAC3Btf,EAASyD,GAASzD,GAGlB,IAAIm0B,GAFJp3B,EAASsjB,GAAUtjB,IAEM+E,GAAW9B,GAAU,EAC9C,IAAKjD,GAAUo3B,GAAap3B,EAC1B,OAAOiD,EAET,IAAIsY,GAAOvb,EAASo3B,GAAa,EACjC,OACE9U,GAAcvZ,GAAYwS,GAAMgH,GAChCtf,EACAqf,GAAczZ,GAAW0S,GAAMgH,EAEnC,EAo4EAlX,GAAOgsB,OA32EP,SAAgBp0B,EAAQjD,EAAQuiB,GAC9Btf,EAASyD,GAASzD,GAGlB,IAAIm0B,GAFJp3B,EAASsjB,GAAUtjB,IAEM+E,GAAW9B,GAAU,EAC9C,OAAQjD,GAAUo3B,EAAYp3B,EACzBiD,EAASqf,GAActiB,EAASo3B,EAAW7U,GAC5Ctf,CACN,EAo2EAoI,GAAOisB,SA30EP,SAAkBr0B,EAAQjD,EAAQuiB,GAChCtf,EAASyD,GAASzD,GAGlB,IAAIm0B,GAFJp3B,EAASsjB,GAAUtjB,IAEM+E,GAAW9B,GAAU,EAC9C,OAAQjD,GAAUo3B,EAAYp3B,EACzBsiB,GAActiB,EAASo3B,EAAW7U,GAAStf,EAC5CA,CACN,EAo0EAoI,GAAOzN,SA1yEP,SAAkBqF,EAAQs0B,EAAOrY,GAM/B,OALIA,GAAkB,MAATqY,EACXA,EAAQ,EACCA,IACTA,GAASA,GAEJztB,GAAepD,GAASzD,GAAQG,QAAQzJ,GAAa,IAAK49B,GAAS,EAC5E,EAoyEAlsB,GAAOrB,OA1rFP,SAAgBkF,EAAOC,EAAOqoB,GA2B5B,GA1BIA,GAA+B,kBAAZA,GAAyBrY,GAAejQ,EAAOC,EAAOqoB,KAC3EroB,EAAQqoB,EAAWphC,GAEjBohC,IAAaphC,IACK,kBAAT+Y,GACTqoB,EAAWroB,EACXA,EAAQ/Y,GAEe,kBAAT8Y,IACdsoB,EAAWtoB,EACXA,EAAQ9Y,IAGR8Y,IAAU9Y,GAAa+Y,IAAU/Y,GACnC8Y,EAAQ,EACRC,EAAQ,IAGRD,EAAQyT,GAASzT,GACbC,IAAU/Y,GACZ+Y,EAAQD,EACRA,EAAQ,GAERC,EAAQwT,GAASxT,IAGjBD,EAAQC,EAAO,CACjB,IAAIsoB,EAAOvoB,EACXA,EAAQC,EACRA,EAAQsoB,CACV,CACA,GAAID,GAAYtoB,EAAQ,GAAKC,EAAQ,EAAG,CACtC,IAAI4W,EAAOhc,KACX,OAAOJ,GAAUuF,EAAS6W,GAAQ5W,EAAQD,EAAQzR,GAAe,QAAUsoB,EAAO,IAAI/lB,OAAS,KAAOmP,EACxG,CACA,OAAOrB,GAAWoB,EAAOC,EAC3B,EAspFA9D,GAAOqsB,OA5+NP,SAAgB31B,EAAY1B,EAAUC,GACpC,IAAIT,EAAO0L,GAAQxJ,GAAcP,GAAcoB,GAC3CnB,EAAYme,UAAU5f,OAAS,EAEnC,OAAOH,EAAKkC,EAAYmX,GAAY7Y,EAAU,GAAIC,EAAamB,EAAWkN,GAC5E,EAw+NAtD,GAAOssB,YAh9NP,SAAqB51B,EAAY1B,EAAUC,GACzC,IAAIT,EAAO0L,GAAQxJ,GAAcL,GAAmBkB,GAChDnB,EAAYme,UAAU5f,OAAS,EAEnC,OAAOH,EAAKkC,EAAYmX,GAAY7Y,EAAU,GAAIC,EAAamB,EAAWgR,GAC5E,EA48NApH,GAAOusB,OA/wEP,SAAgB30B,EAAQF,EAAGmc,GAMzB,OAJEnc,GADGmc,EAAQC,GAAelc,EAAQF,EAAGmc,GAASnc,IAAM3M,GAChD,EAEAktB,GAAUvgB,GAETqX,GAAW1T,GAASzD,GAASF,EACtC,EAywEAsI,GAAOjI,QApvEP,WACE,IAAIrD,EAAO6f,UACP3c,EAASyD,GAAS3G,EAAK,IAE3B,OAAOA,EAAKC,OAAS,EAAIiD,EAASA,EAAOG,QAAQrD,EAAK,GAAIA,EAAK,GACjE,EAgvEAsL,GAAOvK,OAtoGP,SAAgB4B,EAAQ+Q,EAAM0O,GAG5B,IAAI5hB,GAAS,EACTP,GAHJyT,EAAOC,GAASD,EAAM/Q,IAGJ1C,OAOlB,IAJKA,IACHA,EAAS,EACT0C,EAAStM,KAEFmK,EAAQP,GAAQ,CACvB,IAAIxR,EAAkB,MAAVkU,EAAiBtM,EAAYsM,EAAOiR,GAAMF,EAAKlT,KACvD/R,IAAU4H,IACZmK,EAAQP,EACRxR,EAAQ2zB,GAEVzf,EAAS6Q,GAAW/kB,GAASA,EAAMyR,KAAKyC,GAAUlU,CACpD,CACA,OAAOkU,CACT,EAmnGA2I,GAAOqkB,MAAQA,GACfrkB,GAAO3F,aAAeA,EACtB2F,GAAOwsB,OA15NP,SAAgB91B,GAEd,OADWwJ,GAAQxJ,GAAc8L,GAAc4M,IACnC1Y,EACd,EAw5NAsJ,GAAO/G,KA/0NP,SAAcvC,GACZ,GAAkB,MAAdA,EACF,OAAO,EAET,GAAIgW,GAAYhW,GACd,OAAOqpB,GAASrpB,GAAcgD,GAAWhD,GAAcA,EAAW/B,OAEpE,IAAI8P,EAAMC,GAAOhO,GACjB,OAAI+N,GAAOxY,GAAUwY,GAAOnY,EACnBoK,EAAWuC,KAEbqT,GAAS5V,GAAY/B,MAC9B,EAo0NAqL,GAAOrZ,UAAYA,GACnBqZ,GAAOysB,KA/xNP,SAAc/1B,EAAYpB,EAAWue,GACnC,IAAIrf,EAAO0L,GAAQxJ,GAAcJ,GAAYuZ,GAI7C,OAHIgE,GAASC,GAAepd,EAAYpB,EAAWue,KACjDve,EAAYvK,GAEPyJ,EAAKkC,EAAYmX,GAAYvY,EAAW,GACjD,EA0xNA0K,GAAO0sB,YAhsRP,SAAqB53B,EAAO3R,GAC1B,OAAO2sB,GAAgBhb,EAAO3R,EAChC,EA+rRA6c,GAAO2sB,cApqRP,SAAuB73B,EAAO3R,EAAO6R,GACnC,OAAOmb,GAAkBrb,EAAO3R,EAAO0qB,GAAY7Y,EAAU,GAC/D,EAmqRAgL,GAAO4sB,cAjpRP,SAAuB93B,EAAO3R,GAC5B,IAAIwR,EAAkB,MAATG,EAAgB,EAAIA,EAAMH,OACvC,GAAIA,EAAQ,CACV,IAAIO,EAAQ4a,GAAgBhb,EAAO3R,GACnC,GAAI+R,EAAQP,GAAUqO,GAAGlO,EAAMI,GAAQ/R,GACrC,OAAO+R,CAEX,CACA,OAAQ,CACV,EAyoRA8K,GAAO6sB,gBArnRP,SAAyB/3B,EAAO3R,GAC9B,OAAO2sB,GAAgBhb,EAAO3R,GAAO,EACvC,EAonRA6c,GAAO8sB,kBAzlRP,SAA2Bh4B,EAAO3R,EAAO6R,GACvC,OAAOmb,GAAkBrb,EAAO3R,EAAO0qB,GAAY7Y,EAAU,IAAI,EACnE,EAwlRAgL,GAAO+sB,kBAtkRP,SAA2Bj4B,EAAO3R,GAEhC,GADsB,MAAT2R,GAAoBA,EAAMH,OAC3B,CACV,IAAIO,EAAQ4a,GAAgBhb,EAAO3R,GAAO,GAAQ,EAClD,GAAI6f,GAAGlO,EAAMI,GAAQ/R,GACnB,OAAO+R,CAEX,CACA,OAAQ,CACV,EA8jRA8K,GAAOwiB,UAAYA,GACnBxiB,GAAOgtB,WA3oEP,SAAoBp1B,EAAQvR,EAAQmjC,GAOlC,OANA5xB,EAASyD,GAASzD,GAClB4xB,EAAuB,MAAZA,EACP,EACA3mB,GAAUoV,GAAUuR,GAAW,EAAG5xB,EAAOjD,QAE7CtO,EAAS0qB,GAAa1qB,GACfuR,EAAOC,MAAM2xB,EAAUA,EAAWnjC,EAAOsO,SAAWtO,CAC7D,EAooEA2Z,GAAOskB,SAAWA,GAClBtkB,GAAOitB,IAzUP,SAAan4B,GACX,OAAQA,GAASA,EAAMH,OACnByC,GAAQtC,EAAOqX,IACf,CACN,EAsUAnM,GAAOktB,MA7SP,SAAep4B,EAAOE,GACpB,OAAQF,GAASA,EAAMH,OACnByC,GAAQtC,EAAO+Y,GAAY7Y,EAAU,IACrC,CACN,EA0SAgL,GAAOmtB,SA7hEP,SAAkBv1B,EAAQpT,EAASqvB,GAIjC,IAAI7tB,EAAWga,GAAO6G,iBAElBgN,GAASC,GAAelc,EAAQpT,EAASqvB,KAC3CrvB,EAAUuG,GAEZ6M,EAASyD,GAASzD,GAClBpT,EAAUm8B,GAAa,CAAC,EAAGn8B,EAASwB,EAAU8yB,IAE9C,IAIIsU,EACAC,EALAC,EAAU3M,GAAa,CAAC,EAAGn8B,EAAQ8oC,QAAStnC,EAASsnC,QAASxU,IAC9DyU,EAAc7xB,GAAK4xB,GACnBE,EAAgBv1B,GAAWq1B,EAASC,GAIpCr4B,EAAQ,EACRu4B,EAAcjpC,EAAQipC,aAAen+B,GACrC1B,EAAS,WAGT8/B,EAAe//B,IAChBnJ,EAAQilC,QAAUn6B,IAAW1B,OAAS,IACvC6/B,EAAY7/B,OAAS,KACpB6/B,IAAgBz/B,EAAgBc,GAAeQ,IAAW1B,OAAS,KACnEpJ,EAAQmpC,UAAYr+B,IAAW1B,OAAS,KACzC,KAMEggC,EAAY,kBACbtyB,GAAe1G,KAAKpQ,EAAS,cACzBA,EAAQopC,UAAY,IAAI71B,QAAQ,MAAO,KACvC,6BAA+B/F,GAAmB,KACnD,KAEN4F,EAAOG,QAAQ21B,GAAc,SAAS5zB,EAAO+zB,EAAaC,EAAkBC,EAAiBC,EAAe93B,GAsB1G,OArBA43B,IAAqBA,EAAmBC,GAGxCngC,GAAUgK,EAAOC,MAAM3C,EAAOgB,GAAQ6B,QAAQxI,GAAmBoJ,IAG7Dk1B,IACFT,GAAa,EACbx/B,GAAU,YAAcigC,EAAc,UAEpCG,IACFX,GAAe,EACfz/B,GAAU,OAASogC,EAAgB,eAEjCF,IACFlgC,GAAU,iBAAmBkgC,EAAmB,+BAElD54B,EAAQgB,EAAS4D,EAAMnF,OAIhBmF,CACT,IAEAlM,GAAU,OAIV,IAAIqgC,EAAW3yB,GAAe1G,KAAKpQ,EAAS,aAAeA,EAAQypC,SACnE,GAAKA,GAKA,GAAIr/B,GAA2BkK,KAAKm1B,GACvC,MAAM,IAAItzB,GA3idmB,2DAsid7B/M,EAAS,iBAAmBA,EAAS,QASvCA,GAAUy/B,EAAez/B,EAAOmK,QAAQ1K,EAAsB,IAAMO,GACjEmK,QAAQzK,EAAqB,MAC7ByK,QAAQxK,EAAuB,OAGlCK,EAAS,aAAeqgC,GAAY,OAAS,SAC1CA,EACG,GACA,wBAEJ,qBACCb,EACI,mBACA,KAEJC,EACG,uFAEA,OAEJz/B,EACA,gBAEF,IAAI6H,EAASstB,IAAQ,WACnB,OAAOjwB,GAASy6B,EAAaK,EAAY,UAAYhgC,GAClD2G,MAAMxJ,EAAWyiC,EACtB,IAKA,GADA/3B,EAAO7H,OAASA,EACZgyB,GAAQnqB,GACV,MAAMA,EAER,OAAOA,CACT,EA26DAuK,GAAOkuB,MApsBP,SAAex2B,EAAG1C,GAEhB,IADA0C,EAAIugB,GAAUvgB,IACN,GAAKA,EAAIpM,EACf,MAAO,GAET,IAAI4J,EAAQ1J,EACRmJ,EAAS2J,GAAU5G,EAAGlM,GAE1BwJ,EAAW6Y,GAAY7Y,GACvB0C,GAAKlM,EAGL,IADA,IAAIiK,EAASgC,GAAU9C,EAAQK,KACtBE,EAAQwC,GACf1C,EAASE,GAEX,OAAOO,CACT,EAqrBAuK,GAAOsX,SAAWA,GAClBtX,GAAOiY,UAAYA,GACnBjY,GAAOugB,SAAWA,GAClBvgB,GAAOmuB,QAx5DP,SAAiBhrC,GACf,OAAOkY,GAASlY,GAAO++B,aACzB,EAu5DAliB,GAAOyX,SAAWA,GAClBzX,GAAOouB,cApuIP,SAAuBjrC,GACrB,OAAOA,EACH0f,GAAUoV,GAAU90B,IAAQ,iBAAmBmI,GACpC,IAAVnI,EAAcA,EAAQ,CAC7B,EAiuIA6c,GAAO3E,SAAWA,GAClB2E,GAAOquB,QAn4DP,SAAiBlrC,GACf,OAAOkY,GAASlY,GAAOu/B,aACzB,EAk4DA1iB,GAAOsuB,KA12DP,SAAc12B,EAAQsf,EAAOrD,GAE3B,IADAjc,EAASyD,GAASzD,MACHic,GAASqD,IAAUnsB,GAChC,OAAO4M,GAASC,GAElB,IAAKA,KAAYsf,EAAQnG,GAAamG,IACpC,OAAOtf,EAET,IAAIU,EAAauB,GAAcjC,GAC3BW,EAAasB,GAAcqd,GAI/B,OAAOhF,GAAU5Z,EAHLD,GAAgBC,EAAYC,GAC9BC,GAAcF,EAAYC,GAAc,GAETjH,KAAK,GAChD,EA61DA0O,GAAOuuB,QAx0DP,SAAiB32B,EAAQsf,EAAOrD,GAE9B,IADAjc,EAASyD,GAASzD,MACHic,GAASqD,IAAUnsB,GAChC,OAAO6M,EAAOC,MAAM,EAAGC,GAAgBF,GAAU,GAEnD,IAAKA,KAAYsf,EAAQnG,GAAamG,IACpC,OAAOtf,EAET,IAAIU,EAAauB,GAAcjC,GAG/B,OAAOsa,GAAU5Z,EAAY,EAFnBE,GAAcF,EAAYuB,GAAcqd,IAAU,GAEvB5lB,KAAK,GAC5C,EA6zDA0O,GAAOwuB,UAxyDP,SAAmB52B,EAAQsf,EAAOrD,GAEhC,IADAjc,EAASyD,GAASzD,MACHic,GAASqD,IAAUnsB,GAChC,OAAO6M,EAAOG,QAAQzJ,GAAa,IAErC,IAAKsJ,KAAYsf,EAAQnG,GAAamG,IACpC,OAAOtf,EAET,IAAIU,EAAauB,GAAcjC,GAG/B,OAAOsa,GAAU5Z,EAFLD,GAAgBC,EAAYuB,GAAcqd,KAElB5lB,KAAK,GAC3C,EA6xDA0O,GAAOyuB,SAtvDP,SAAkB72B,EAAQpT,GACxB,IAAImQ,EAnvdmB,GAovdnB+5B,EAnvdqB,MAqvdzB,GAAIluB,GAAShc,GAAU,CACrB,IAAI+iC,EAAY,cAAe/iC,EAAUA,EAAQ+iC,UAAYA,EAC7D5yB,EAAS,WAAYnQ,EAAUyzB,GAAUzzB,EAAQmQ,QAAUA,EAC3D+5B,EAAW,aAAclqC,EAAUusB,GAAavsB,EAAQkqC,UAAYA,CACtE,CAGA,IAAI3C,GAFJn0B,EAASyD,GAASzD,IAEKjD,OACvB,GAAIkE,GAAWjB,GAAS,CACtB,IAAIU,EAAauB,GAAcjC,GAC/Bm0B,EAAYzzB,EAAW3D,MACzB,CACA,GAAIA,GAAUo3B,EACZ,OAAOn0B,EAET,IAAIgY,EAAMjb,EAAS+E,GAAWg1B,GAC9B,GAAI9e,EAAM,EACR,OAAO8e,EAET,IAAIj5B,EAAS6C,EACT4Z,GAAU5Z,EAAY,EAAGsX,GAAKte,KAAK,IACnCsG,EAAOC,MAAM,EAAG+X,GAEpB,GAAI2X,IAAcx8B,EAChB,OAAO0K,EAASi5B,EAKlB,GAHIp2B,IACFsX,GAAQna,EAAOd,OAASib,GAEtB1b,GAASqzB,IACX,GAAI3vB,EAAOC,MAAM+X,GAAK+e,OAAOpH,GAAY,CACvC,IAAIztB,EACA80B,EAAYn5B,EAMhB,IAJK8xB,EAAUsH,SACbtH,EAAY55B,GAAO45B,EAAU35B,OAAQyN,GAAStM,GAAQ0M,KAAK8rB,IAAc,MAE3EA,EAAU5tB,UAAY,EACdG,EAAQytB,EAAU9rB,KAAKmzB,IAC7B,IAAIE,EAASh1B,EAAM5E,MAErBO,EAASA,EAAOoC,MAAM,EAAGi3B,IAAW/jC,EAAY6kB,EAAMkf,EACxD,OACK,GAAIl3B,EAAO8W,QAAQqC,GAAawW,GAAY3X,IAAQA,EAAK,CAC9D,IAAI1a,EAAQO,EAAO01B,YAAY5D,GAC3BryB,GAAS,IACXO,EAASA,EAAOoC,MAAM,EAAG3C,GAE7B,CACA,OAAOO,EAASi5B,CAClB,EAisDA1uB,GAAO+uB,SA5qDP,SAAkBn3B,GAEhB,OADAA,EAASyD,GAASzD,KACAlK,EAAiBoL,KAAKlB,GACpCA,EAAOG,QAAQvK,EAAe2M,IAC9BvC,CACN,EAwqDAoI,GAAOgvB,SAvpBP,SAAkBC,GAChB,IAAInkC,IAAOyQ,GACX,OAAOF,GAAS4zB,GAAUnkC,CAC5B,EAqpBAkV,GAAOyiB,UAAYA,GACnBziB,GAAOoiB,WAAaA,GAGpBpiB,GAAOkvB,KAAOh2B,GACd8G,GAAOmvB,UAAYpS,GACnB/c,GAAOovB,MAAQ/T,GAEfiI,GAAMtjB,IACApS,GAAS,CAAC,EACduZ,GAAWnH,IAAQ,SAASxL,EAAMyf,GAC3B3Y,GAAe1G,KAAKoL,GAAOhF,UAAWiZ,KACzCrmB,GAAOqmB,GAAczf,EAEzB,IACO5G,IACH,CAAE,OAAS,IAWjBoS,GAAOqvB,QA/ihBK,UAkjhBZl6B,GAAU,CAAC,OAAQ,UAAW,QAAS,aAAc,UAAW,iBAAiB,SAAS8e,GACxFjU,GAAOiU,GAAY1a,YAAcyG,EACnC,IAGA7K,GAAU,CAAC,OAAQ,SAAS,SAAS8e,EAAY/e,GAC/CiL,GAAYnF,UAAUiZ,GAAc,SAASvc,GAC3CA,EAAIA,IAAM3M,EAAY,EAAIqT,GAAU6Z,GAAUvgB,GAAI,GAElD,IAAIjC,EAAUzQ,KAAKic,eAAiB/L,EAChC,IAAIiL,GAAYnb,MAChBA,KAAK+1B,QAUT,OARItlB,EAAOwL,aACTxL,EAAO0L,cAAgB7C,GAAU5G,EAAGjC,EAAO0L,eAE3C1L,EAAO2L,UAAUxW,KAAK,CACpB,KAAQ0T,GAAU5G,EAAGlM,GACrB,KAAQyoB,GAAcxe,EAAOuL,QAAU,EAAI,QAAU,MAGlDvL,CACT,EAEA0K,GAAYnF,UAAUiZ,EAAa,SAAW,SAASvc,GACrD,OAAO1S,KAAK6Z,UAAUoV,GAAYvc,GAAGmH,SACvC,CACF,IAGA1J,GAAU,CAAC,SAAU,MAAO,cAAc,SAAS8e,EAAY/e,GAC7D,IAAI9R,EAAO8R,EAAQ,EACfo6B,EAjihBe,GAiihBJlsC,GA/hhBG,GA+hhByBA,EAE3C+c,GAAYnF,UAAUiZ,GAAc,SAASjf,GAC3C,IAAIS,EAASzQ,KAAK+1B,QAMlB,OALAtlB,EAAOyL,cAActW,KAAK,CACxB,SAAYijB,GAAY7Y,EAAU,GAClC,KAAQ5R,IAEVqS,EAAOwL,aAAexL,EAAOwL,cAAgBquB,EACtC75B,CACT,CACF,IAGAN,GAAU,CAAC,OAAQ,SAAS,SAAS8e,EAAY/e,GAC/C,IAAIq6B,EAAW,QAAUr6B,EAAQ,QAAU,IAE3CiL,GAAYnF,UAAUiZ,GAAc,WAClC,OAAOjvB,KAAKuqC,GAAU,GAAGpsC,QAAQ,EACnC,CACF,IAGAgS,GAAU,CAAC,UAAW,SAAS,SAAS8e,EAAY/e,GAClD,IAAIs6B,EAAW,QAAUt6B,EAAQ,GAAK,SAEtCiL,GAAYnF,UAAUiZ,GAAc,WAClC,OAAOjvB,KAAKic,aAAe,IAAId,GAAYnb,MAAQA,KAAKwqC,GAAU,EACpE,CACF,IAEArvB,GAAYnF,UAAU4pB,QAAU,WAC9B,OAAO5/B,KAAKygC,OAAOtZ,GACrB,EAEAhM,GAAYnF,UAAU6hB,KAAO,SAASvnB,GACpC,OAAOtQ,KAAKygC,OAAOnwB,GAAW+lB,MAChC,EAEAlb,GAAYnF,UAAU8hB,SAAW,SAASxnB,GACxC,OAAOtQ,KAAK6Z,UAAUge,KAAKvnB,EAC7B,EAEA6K,GAAYnF,UAAUiiB,UAAYjO,IAAS,SAAS5G,EAAM1T,GACxD,MAAmB,mBAAR0T,EACF,IAAIjI,GAAYnb,MAElBA,KAAKgU,KAAI,SAAS7V,GACvB,OAAOwmB,GAAWxmB,EAAOilB,EAAM1T,EACjC,GACF,IAEAyL,GAAYnF,UAAU+rB,OAAS,SAASzxB,GACtC,OAAOtQ,KAAKygC,OAAOtG,GAAOtR,GAAYvY,IACxC,EAEA6K,GAAYnF,UAAUnD,MAAQ,SAASoX,EAAOW,GAC5CX,EAAQgJ,GAAUhJ,GAElB,IAAIxZ,EAASzQ,KACb,OAAIyQ,EAAOwL,eAAiBgO,EAAQ,GAAKW,EAAM,GACtC,IAAIzP,GAAY1K,IAErBwZ,EAAQ,EACVxZ,EAASA,EAAOmyB,WAAW3Y,GAClBA,IACTxZ,EAASA,EAAO0vB,KAAKlW,IAEnBW,IAAQ7kB,IAEV0K,GADAma,EAAMqI,GAAUrI,IACD,EAAIna,EAAO2vB,WAAWxV,GAAOna,EAAOkyB,KAAK/X,EAAMX,IAEzDxZ,EACT,EAEA0K,GAAYnF,UAAU6sB,eAAiB,SAASvyB,GAC9C,OAAOtQ,KAAK6Z,UAAUipB,UAAUxyB,GAAWuJ,SAC7C,EAEAsB,GAAYnF,UAAUklB,QAAU,WAC9B,OAAOl7B,KAAK2iC,KAAKn8B,EACnB,EAGA2b,GAAWhH,GAAYnF,WAAW,SAASxG,EAAMyf,GAC/C,IAAIwb,EAAgB,qCAAqC32B,KAAKmb,GAC1Dyb,EAAU,kBAAkB52B,KAAKmb,GACjC0b,EAAa3vB,GAAO0vB,EAAW,QAAwB,QAAdzb,EAAuB,QAAU,IAAOA,GACjF2b,EAAeF,GAAW,QAAQ52B,KAAKmb,GAEtC0b,IAGL3vB,GAAOhF,UAAUiZ,GAAc,WAC7B,IAAI9wB,EAAQ6B,KAAK2b,YACbjM,EAAOg7B,EAAU,CAAC,GAAKnb,UACvBsb,EAAS1sC,aAAiBgd,GAC1BnL,EAAWN,EAAK,GAChBo7B,EAAUD,GAAU3vB,GAAQ/c,GAE5Bu5B,EAAc,SAASv5B,GACzB,IAAIsS,EAASk6B,EAAWp7B,MAAMyL,GAAQhK,GAAU,CAAC7S,GAAQuR,IACzD,OAAQg7B,GAAWhvB,EAAYjL,EAAO,GAAKA,CAC7C,EAEIq6B,GAAWL,GAAoC,mBAAZz6B,GAA6C,GAAnBA,EAASL,SAExEk7B,EAASC,GAAU,GAErB,IAAIpvB,EAAW1b,KAAK6b,UAChBkvB,IAAa/qC,KAAK4b,YAAYjM,OAC9Bq7B,EAAcJ,IAAiBlvB,EAC/BuvB,EAAWJ,IAAWE,EAE1B,IAAKH,GAAgBE,EAAS,CAC5B3sC,EAAQ8sC,EAAW9sC,EAAQ,IAAIgd,GAAYnb,MAC3C,IAAIyQ,EAASjB,EAAKD,MAAMpR,EAAOuR,GAE/B,OADAe,EAAOmL,YAAYhW,KAAK,CAAE,KAAQmqB,GAAM,KAAQ,CAAC2H,GAAc,QAAW3xB,IACnE,IAAIqV,GAAc3K,EAAQiL,EACnC,CACA,OAAIsvB,GAAeC,EACVz7B,EAAKD,MAAMvP,KAAM0P,IAE1Be,EAASzQ,KAAK+vB,KAAK2H,GACZsT,EAAeN,EAAUj6B,EAAOtS,QAAQ,GAAKsS,EAAOtS,QAAWsS,EACxE,EACF,IAGAN,GAAU,CAAC,MAAO,OAAQ,QAAS,OAAQ,SAAU,YAAY,SAAS8e,GACxE,IAAIzf,EAAOuG,GAAWkZ,GAClBic,EAAY,0BAA0Bp3B,KAAKmb,GAAc,MAAQ,OACjE2b,EAAe,kBAAkB92B,KAAKmb,GAE1CjU,GAAOhF,UAAUiZ,GAAc,WAC7B,IAAIvf,EAAO6f,UACX,GAAIqb,IAAiB5qC,KAAK6b,UAAW,CACnC,IAAI1d,EAAQ6B,KAAK7B,QACjB,OAAOqR,EAAKD,MAAM2L,GAAQ/c,GAASA,EAAQ,GAAIuR,EACjD,CACA,OAAO1P,KAAKkrC,IAAW,SAAS/sC,GAC9B,OAAOqR,EAAKD,MAAM2L,GAAQ/c,GAASA,EAAQ,GAAIuR,EACjD,GACF,CACF,IAGAyS,GAAWhH,GAAYnF,WAAW,SAASxG,EAAMyf,GAC/C,IAAI0b,EAAa3vB,GAAOiU,GACxB,GAAI0b,EAAY,CACd,IAAI/4B,EAAM+4B,EAAW5sC,KAAO,GACvBuY,GAAe1G,KAAKyK,GAAWzI,KAClCyI,GAAUzI,GAAO,IAEnByI,GAAUzI,GAAKhM,KAAK,CAAE,KAAQqpB,EAAY,KAAQ0b,GACpD,CACF,IAEAtwB,GAAUiW,GAAavqB,EAlthBA,GAkthB+BhI,MAAQ,CAAC,CAC7D,KAAQ,UACR,KAAQgI,IAIVoV,GAAYnF,UAAU+f,MAh9dtB,WACE,IAAItlB,EAAS,IAAI0K,GAAYnb,KAAK2b,aAOlC,OANAlL,EAAOmL,YAAcgC,GAAU5d,KAAK4b,aACpCnL,EAAOuL,QAAUhc,KAAKgc,QACtBvL,EAAOwL,aAAejc,KAAKic,aAC3BxL,EAAOyL,cAAgB0B,GAAU5d,KAAKkc,eACtCzL,EAAO0L,cAAgBnc,KAAKmc,cAC5B1L,EAAO2L,UAAYwB,GAAU5d,KAAKoc,WAC3B3L,CACT,EAw8dA0K,GAAYnF,UAAU6D,QA97dtB,WACE,GAAI7Z,KAAKic,aAAc,CACrB,IAAIxL,EAAS,IAAI0K,GAAYnb,MAC7ByQ,EAAOuL,SAAW,EAClBvL,EAAOwL,cAAe,CACxB,MACExL,EAASzQ,KAAK+1B,SACP/Z,UAAY,EAErB,OAAOvL,CACT,EAq7dA0K,GAAYnF,UAAU7X,MA36dtB,WACE,IAAI2R,EAAQ9P,KAAK2b,YAAYxd,QACzBgtC,EAAMnrC,KAAKgc,QACXiB,EAAQ/B,GAAQpL,GAChBs7B,EAAUD,EAAM,EAChB7Z,EAAYrU,EAAQnN,EAAMH,OAAS,EACnC07B,EA8pIN,SAAiBphB,EAAOW,EAAKyP,GAI3B,IAHA,IAAInqB,GAAS,EACTP,EAAS0qB,EAAW1qB,SAEfO,EAAQP,GAAQ,CACvB,IAAInR,EAAO67B,EAAWnqB,GAClB+D,EAAOzV,EAAKyV,KAEhB,OAAQzV,EAAKJ,MACX,IAAK,OAAa6rB,GAAShW,EAAM,MACjC,IAAK,YAAa2W,GAAO3W,EAAM,MAC/B,IAAK,OAAa2W,EAAMtR,GAAUsR,EAAKX,EAAQhW,GAAO,MACtD,IAAK,YAAagW,EAAQ7Q,GAAU6Q,EAAOW,EAAM3W,GAErD,CACA,MAAO,CAAE,MAASgW,EAAO,IAAOW,EAClC,CA9qIa0gB,CAAQ,EAAGha,EAAWtxB,KAAKoc,WAClC6N,EAAQohB,EAAKphB,MACbW,EAAMygB,EAAKzgB,IACXjb,EAASib,EAAMX,EACf/Z,EAAQk7B,EAAUxgB,EAAOX,EAAQ,EACjCtB,EAAY3oB,KAAKkc,cACjBqvB,EAAa5iB,EAAUhZ,OACvBa,EAAW,EACXg7B,EAAYlyB,GAAU3J,EAAQ3P,KAAKmc,eAEvC,IAAKc,IAAWmuB,GAAW9Z,GAAa3hB,GAAU67B,GAAa77B,EAC7D,OAAO4c,GAAiBzc,EAAO9P,KAAK4b,aAEtC,IAAInL,EAAS,GAEbkR,EACA,KAAOhS,KAAYa,EAAWg7B,GAAW,CAMvC,IAHA,IAAIC,GAAa,EACbttC,EAAQ2R,EAHZI,GAASi7B,KAKAM,EAAYF,GAAY,CAC/B,IAAI/sC,EAAOmqB,EAAU8iB,GACjBz7B,EAAWxR,EAAKwR,SAChB5R,EAAOI,EAAKJ,KACZS,EAAWmR,EAAS7R,GAExB,GA7zDY,GA6zDRC,EACFD,EAAQU,OACH,IAAKA,EAAU,CACpB,GAj0Da,GAi0DTT,EACF,SAASujB,EAET,MAAMA,CAEV,CACF,CACAlR,EAAOD,KAAcrS,CACvB,CACA,OAAOsS,CACT,EA+3dAuK,GAAOhF,UAAU6lB,GAAKlE,GACtB3c,GAAOhF,UAAUyhB,MA1iQjB,WACE,OAAOA,GAAMz3B,KACf,EAyiQAgb,GAAOhF,UAAU01B,OA7gQjB,WACE,OAAO,IAAItwB,GAAcpb,KAAK7B,QAAS6B,KAAK6b,UAC9C,EA4gQAb,GAAOhF,UAAUmlB,KAp/PjB,WACMn7B,KAAK+b,aAAehW,IACtB/F,KAAK+b,WAAamf,GAAQl7B,KAAK7B,UAEjC,IAAIi9B,EAAOp7B,KAAK8b,WAAa9b,KAAK+b,WAAWpM,OAG7C,MAAO,CAAE,KAAQyrB,EAAM,MAFXA,EAAOr1B,EAAY/F,KAAK+b,WAAW/b,KAAK8b,aAGtD,EA6+PAd,GAAOhF,UAAUqa,MA77PjB,SAAsBlyB,GAIpB,IAHA,IAAIsS,EACAmU,EAAS5kB,KAEN4kB,aAAkBnJ,IAAY,CACnC,IAAIsa,EAAQ1a,GAAauJ,GACzBmR,EAAMja,UAAY,EAClBia,EAAMha,WAAahW,EACf0K,EACFoZ,EAASlO,YAAcoa,EAEvBtlB,EAASslB,EAEX,IAAIlM,EAAWkM,EACfnR,EAASA,EAAOjJ,WAClB,CAEA,OADAkO,EAASlO,YAAcxd,EAChBsS,CACT,EA46PAuK,GAAOhF,UAAU6D,QAt5PjB,WACE,IAAI1b,EAAQ6B,KAAK2b,YACjB,GAAIxd,aAAiBgd,GAAa,CAChC,IAAIwwB,EAAUxtC,EAUd,OATI6B,KAAK4b,YAAYjM,SACnBg8B,EAAU,IAAIxwB,GAAYnb,QAE5B2rC,EAAUA,EAAQ9xB,WACV+B,YAAYhW,KAAK,CACvB,KAAQmqB,GACR,KAAQ,CAAClW,IACT,QAAW9T,IAEN,IAAIqV,GAAcuwB,EAAS3rC,KAAK6b,UACzC,CACA,OAAO7b,KAAK+vB,KAAKlW,GACnB,EAu4PAmB,GAAOhF,UAAU41B,OAAS5wB,GAAOhF,UAAU8E,QAAUE,GAAOhF,UAAU7X,MAv3PtE,WACE,OAAOouB,GAAiBvsB,KAAK2b,YAAa3b,KAAK4b,YACjD,EAw3PAZ,GAAOhF,UAAUo0B,MAAQpvB,GAAOhF,UAAUqgB,KAEtCze,KACFoD,GAAOhF,UAAU4B,IAj+PnB,WACE,OAAO5X,IACT,GAi+POgb,EACR,CAKO3F,GAQNxH,GAAKuH,EAAIA,IAIT,aACE,OAAOA,EACR,mCAaL,EAAExF,KAAK5P,iwEC/rhBW,IACK,IACJ,IACC,IACH,IACD,IACC,IACC,IACG,IACL,IACQ,IACX,IACG,IACO,IACH,EAAA6rC,EACD,IACO,IACG,IACN,IACA,IACD,IACI,IACC,IACF,IACF,IACC,IACR,IACG,IACK,KACZ,IACI,IACC,IACL,IACa,IACR,IACJ,IACM,IACE,IACI,IACX,IACM,IACM,IACd,IACM,IACD,IACC,IACA,IACF,IACD,IACK,IACN,IACI,IACD,KACE,KACR,KACG,KACK,KACN,KACI,KACU,KACF,KACX,GAAAC,EACW,KACb,KACI,KACO,KACF,KACI,KACX,KACC,KACK,KACJ,KACI,KACjB70B,OAAOc,YA8CD,KACE,KACA,MACRd,OAAOc,cClPNg0B,EAA2B,CAAC,EAGhC,SAASC,EAAoBC,GAE5B,IAAIC,EAAeH,EAAyBE,GAC5C,QAAqBlmC,IAAjBmmC,EACH,OAAOA,EAAal+B,QAGrB,IAAInI,EAASkmC,EAAyBE,GAAY,CACjDnmC,GAAImmC,EACJE,QAAQ,EACRn+B,QAAS,CAAC,GAUX,OANAo+B,EAAoBH,GAAUr8B,KAAK/J,EAAOmI,QAASnI,EAAQA,EAAOmI,QAASg+B,GAG3EnmC,EAAOsmC,QAAS,EAGTtmC,EAAOmI,OACf,CAGAg+B,EAAoBK,EAAID,ElB5BpBzuC,EAAW,GACfquC,EAAoBM,EAAI,CAAC77B,EAAQ87B,EAAUlb,EAAImb,KAC9C,IAAGD,EAAH,CAMA,IAAIE,EAAehoB,IACnB,IAASioB,EAAI,EAAGA,EAAI/uC,EAASgS,OAAQ+8B,IAAK,CACrCH,EAAW5uC,EAAS+uC,GAAG,GACvBrb,EAAK1zB,EAAS+uC,GAAG,GACjBF,EAAW7uC,EAAS+uC,GAAG,GAE3B,IAJA,IAGIC,GAAY,EACPC,EAAI,EAAGA,EAAIL,EAAS58B,OAAQi9B,MACpB,EAAXJ,GAAsBC,GAAgBD,IAAa9+B,OAAOgJ,KAAKs1B,EAAoBM,GAAG3H,OAAO/yB,GAASo6B,EAAoBM,EAAE16B,GAAK26B,EAASK,MAC9IL,EAAS90B,OAAOm1B,IAAK,IAErBD,GAAY,EACTH,EAAWC,IAAcA,EAAeD,IAG7C,GAAGG,EAAW,CACbhvC,EAAS8Z,OAAOi1B,IAAK,GACrB,IAAIG,EAAIxb,SACEtrB,IAAN8mC,IAAiBp8B,EAASo8B,EAC/B,CACD,CACA,OAAOp8B,CArBP,CAJC+7B,EAAWA,GAAY,EACvB,IAAI,IAAIE,EAAI/uC,EAASgS,OAAQ+8B,EAAI,GAAK/uC,EAAS+uC,EAAI,GAAG,GAAKF,EAAUE,IAAK/uC,EAAS+uC,GAAK/uC,EAAS+uC,EAAI,GACrG/uC,EAAS+uC,GAAK,CAACH,EAAUlb,EAAImb,EAuBjB,EmB3BdR,EAAoBt5B,EAAK7M,IACxB,IAAIinC,EAASjnC,GAAUA,EAAOknC,WAC7B,IAAOlnC,EAAiB,QACxB,IAAM,EAEP,OADAmmC,EAAoBgB,EAAEF,EAAQ,CAAEG,EAAGH,IAC5BA,CAAM,ECLdd,EAAoBgB,EAAI,CAACh/B,EAASk/B,KACjC,IAAI,IAAIt7B,KAAOs7B,EACXlB,EAAoBmB,EAAED,EAAYt7B,KAASo6B,EAAoBmB,EAAEn/B,EAAS4D,IAC5ElE,OAAOsK,eAAehK,EAAS4D,EAAK,CAAEw7B,YAAY,EAAMhsC,IAAK8rC,EAAWt7B,IAE1E,ECNDo6B,EAAoBqB,EAAI,CAAC,EAGzBrB,EAAoBt9B,EAAK4+B,GACjBtzB,QAAQuzB,IAAI7/B,OAAOgJ,KAAKs1B,EAAoBqB,GAAGhG,QAAO,CAACmG,EAAU57B,KACvEo6B,EAAoBqB,EAAEz7B,GAAK07B,EAASE,GAC7BA,IACL,KCNJxB,EAAoByB,EAAKH,GAEZA,EAAU,IAAMA,EAAU,SAAW,CAAC,KAAO,uBAAuB,KAAO,wBAAwBA,GCHhHtB,EAAoBv+B,EAAI,WACvB,GAA0B,iBAAfigC,WAAyB,OAAOA,WAC3C,IACC,OAAO1tC,MAAQ,IAAI8N,SAAS,cAAb,EAChB,CAAE,MAAOY,GACR,GAAsB,iBAAX5M,OAAqB,OAAOA,MACxC,CACA,CAPuB,GCAxBkqC,EAAoBmB,EAAI,CAACQ,EAAK9Q,IAAUnvB,OAAOsI,UAAUM,eAAe1G,KAAK+9B,EAAK9Q,GvBA9Ej/B,EAAa,CAAC,EACdC,EAAoB,aAExBmuC,EAAoB4B,EAAI,CAACC,EAAKzS,EAAMxpB,EAAK07B,KACxC,GAAG1vC,EAAWiwC,GAAQjwC,EAAWiwC,GAAKjoC,KAAKw1B,OAA3C,CACA,IAAI0S,EAAQC,EACZ,QAAWhoC,IAAR6L,EAEF,IADA,IAAIo8B,EAAUC,SAASC,qBAAqB,UACpCxB,EAAI,EAAGA,EAAIsB,EAAQr+B,OAAQ+8B,IAAK,CACvC,IAAIyB,EAAIH,EAAQtB,GAChB,GAAGyB,EAAEC,aAAa,QAAUP,GAAOM,EAAEC,aAAa,iBAAmBvwC,EAAoB+T,EAAK,CAAEk8B,EAASK,EAAG,KAAO,CACpH,CAEGL,IACHC,GAAa,GACbD,EAASG,SAASI,cAAc,WAEzBC,QAAU,QACjBR,EAAOS,QAAU,IACbvC,EAAoBwC,IACvBV,EAAOW,aAAa,QAASzC,EAAoBwC,IAElDV,EAAOW,aAAa,eAAgB5wC,EAAoB+T,GAExDk8B,EAAOY,IAAMb,GAEdjwC,EAAWiwC,GAAO,CAACzS,GACnB,IAAIuT,EAAmB,CAACC,EAAMC,KAE7Bf,EAAOgB,QAAUhB,EAAOiB,OAAS,KACjC52B,aAAao2B,GACb,IAAIS,EAAUpxC,EAAWiwC,GAIzB,UAHOjwC,EAAWiwC,GAClBC,EAAOmB,YAAcnB,EAAOmB,WAAWC,YAAYpB,GACnDkB,GAAWA,EAAQ96B,SAASmd,GAAQA,EAAGwd,KACpCD,EAAM,OAAOA,EAAKC,EAAM,EAExBN,EAAUh2B,WAAWo2B,EAAiBrW,KAAK,UAAMvyB,EAAW,CAAE3H,KAAM,UAAWiD,OAAQysC,IAAW,MACtGA,EAAOgB,QAAUH,EAAiBrW,KAAK,KAAMwV,EAAOgB,SACpDhB,EAAOiB,OAASJ,EAAiBrW,KAAK,KAAMwV,EAAOiB,QACnDhB,GAAcE,SAAS5X,KAAK8Y,YAAYrB,EApCkB,CAoCX,EwBvChD9B,EAAoBa,EAAK7+B,IACH,oBAAXiJ,QAA0BA,OAAOc,aAC1CrK,OAAOsK,eAAehK,EAASiJ,OAAOc,YAAa,CAAE5Z,MAAO,WAE7DuP,OAAOsK,eAAehK,EAAS,aAAc,CAAE7P,OAAO,GAAO,ECL9D6tC,EAAoBoD,IAAOvpC,IAC1BA,EAAO6Y,MAAQ,GACV7Y,EAAOwpC,WAAUxpC,EAAOwpC,SAAW,IACjCxpC,GCHRmmC,EAAoBY,EAAI,WCAxB,IAAI0C,EACAtD,EAAoBv+B,EAAE8hC,gBAAeD,EAAYtD,EAAoBv+B,EAAE+hC,SAAW,IACtF,IAAIvB,EAAWjC,EAAoBv+B,EAAEwgC,SACrC,IAAKqB,GAAarB,IACbA,EAASwB,gBACZH,EAAYrB,EAASwB,cAAcf,MAC/BY,GAAW,CACf,IAAItB,EAAUC,EAASC,qBAAqB,UAC5C,GAAGF,EAAQr+B,OAEV,IADA,IAAI+8B,EAAIsB,EAAQr+B,OAAS,EAClB+8B,GAAK,KAAO4C,IAAc,aAAax7B,KAAKw7B,KAAaA,EAAYtB,EAAQtB,KAAKgC,GAE3F,CAID,IAAKY,EAAW,MAAM,IAAI35B,MAAM,yDAChC25B,EAAYA,EAAUv8B,QAAQ,OAAQ,IAAIA,QAAQ,QAAS,IAAIA,QAAQ,YAAa,KACpFi5B,EAAoB0D,EAAIJ,YClBxBtD,EAAoB2D,EAAI1B,SAAS2B,SAAWhiC,KAAK4hC,SAASK,KAK1D,IAAIC,EAAkB,CACrB,KAAM,GAGP9D,EAAoBqB,EAAET,EAAI,CAACU,EAASE,KAElC,IAAIuC,EAAqB/D,EAAoBmB,EAAE2C,EAAiBxC,GAAWwC,EAAgBxC,QAAWvnC,EACtG,GAA0B,IAAvBgqC,EAGF,GAAGA,EACFvC,EAAS5nC,KAAKmqC,EAAmB,QAC3B,CAGL,IAAIC,EAAU,IAAIh2B,SAAQ,CAAC2a,EAASoN,IAAYgO,EAAqBD,EAAgBxC,GAAW,CAAC3Y,EAASoN,KAC1GyL,EAAS5nC,KAAKmqC,EAAmB,GAAKC,GAGtC,IAAInC,EAAM7B,EAAoB0D,EAAI1D,EAAoByB,EAAEH,GAEpD9qC,EAAQ,IAAImT,MAgBhBq2B,EAAoB4B,EAAEC,GAfFgB,IACnB,GAAG7C,EAAoBmB,EAAE2C,EAAiBxC,KAEf,KAD1ByC,EAAqBD,EAAgBxC,MACRwC,EAAgBxC,QAAWvnC,GACrDgqC,GAAoB,CACtB,IAAIE,EAAYpB,IAAyB,SAAfA,EAAMzwC,KAAkB,UAAYywC,EAAMzwC,MAChE8xC,EAAUrB,GAASA,EAAMxtC,QAAUwtC,EAAMxtC,OAAOqtC,IACpDlsC,EAAMijB,QAAU,iBAAmB6nB,EAAU,cAAgB2C,EAAY,KAAOC,EAAU,IAC1F1tC,EAAMzE,KAAO,iBACbyE,EAAMpE,KAAO6xC,EACbztC,EAAM2tC,QAAUD,EAChBH,EAAmB,GAAGvtC,EACvB,CACD,GAEwC,SAAW8qC,EAASA,EAE/D,CACD,EAWFtB,EAAoBM,EAAEM,EAAKU,GAA0C,IAA7BwC,EAAgBxC,GAGxD,IAAI8C,EAAuB,CAACC,EAA4B7xC,KACvD,IAKIytC,EAAUqB,EALVf,EAAW/tC,EAAK,GAChB8xC,EAAc9xC,EAAK,GACnB+xC,EAAU/xC,EAAK,GAGIkuC,EAAI,EAC3B,GAAGH,EAAS9E,MAAM3hC,GAAgC,IAAxBgqC,EAAgBhqC,KAAa,CACtD,IAAImmC,KAAYqE,EACZtE,EAAoBmB,EAAEmD,EAAarE,KACrCD,EAAoBK,EAAEJ,GAAYqE,EAAYrE,IAGhD,GAAGsE,EAAS,IAAI9/B,EAAS8/B,EAAQvE,EAClC,CAEA,IADGqE,GAA4BA,EAA2B7xC,GACrDkuC,EAAIH,EAAS58B,OAAQ+8B,IACzBY,EAAUf,EAASG,GAChBV,EAAoBmB,EAAE2C,EAAiBxC,IAAYwC,EAAgBxC,IACrEwC,EAAgBxC,GAAS,KAE1BwC,EAAgBxC,GAAW,EAE5B,OAAOtB,EAAoBM,EAAE77B,EAAO,EAGjC+/B,EAAqB5iC,KAA4B,sBAAIA,KAA4B,uBAAK,GAC1F4iC,EAAmBt8B,QAAQk8B,EAAqB9X,KAAK,KAAM,IAC3DkY,EAAmB5qC,KAAOwqC,EAAqB9X,KAAK,KAAMkY,EAAmB5qC,KAAK0yB,KAAKkY,QCvFvFxE,EAAoBwC,QAAKzoC,ECGzB,IAAI0qC,EAAsBzE,EAAoBM,OAAEvmC,EAAW,CAAC,OAAO,IAAOimC,EAAoB,SAC9FyE,EAAsBzE,EAAoBM,EAAEmE","sources":["webpack:///nextcloud/webpack/runtime/chunk loaded","webpack:///nextcloud/webpack/runtime/load script","webpack:///nextcloud/apps/settings/src/components/SelectSharingPermissions.vue","webpack:///nextcloud/apps/settings/src/components/SelectSharingPermissions.vue?vue&type=script&lang=ts","webpack://nextcloud/./apps/settings/src/components/SelectSharingPermissions.vue?3aef","webpack://nextcloud/./apps/settings/src/components/SelectSharingPermissions.vue?0492","webpack:///nextcloud/apps/settings/src/components/AdminSettingsSharingForm.vue","webpack:///nextcloud/apps/settings/src/components/AdminSettingsSharingForm.vue?vue&type=script&lang=ts","webpack://nextcloud/./apps/settings/src/components/AdminSettingsSharingForm.vue?b61d","webpack://nextcloud/./apps/settings/src/components/AdminSettingsSharingForm.vue?8936","webpack:///nextcloud/apps/settings/src/views/AdminSettingsSharing.vue?vue&type=script&lang=ts","webpack:///nextcloud/apps/settings/src/views/AdminSettingsSharing.vue","webpack://nextcloud/./apps/settings/src/views/AdminSettingsSharing.vue?a501","webpack:///nextcloud/apps/settings/src/admin-settings-sharing.ts","webpack:///nextcloud/apps/settings/src/components/AdminSettingsSharingForm.vue?vue&type=style&index=0&id=c857d40a&prod&scoped=true&lang=scss","webpack:///nextcloud/apps/settings/src/components/SelectSharingPermissions.vue?vue&type=style&index=0&id=54c0ce93&prod&scoped=true&lang=css","webpack:///nextcloud/node_modules/lodash/lodash.js","webpack:///nextcloud/node_modules/@nextcloud/vue/dist/index.mjs","webpack:///nextcloud/webpack/bootstrap","webpack:///nextcloud/webpack/runtime/compat get default export","webpack:///nextcloud/webpack/runtime/define property getters","webpack:///nextcloud/webpack/runtime/ensure chunk","webpack:///nextcloud/webpack/runtime/get javascript chunk filename","webpack:///nextcloud/webpack/runtime/global","webpack:///nextcloud/webpack/runtime/hasOwnProperty shorthand","webpack:///nextcloud/webpack/runtime/make namespace object","webpack:///nextcloud/webpack/runtime/node module decorator","webpack:///nextcloud/webpack/runtime/runtimeId","webpack:///nextcloud/webpack/runtime/publicPath","webpack:///nextcloud/webpack/runtime/jsonp chunk loading","webpack:///nextcloud/webpack/runtime/nonce","webpack:///nextcloud/webpack/startup"],"sourcesContent":["var deferred = [];\n__webpack_require__.O = (result, chunkIds, fn, priority) => {\n\tif(chunkIds) {\n\t\tpriority = priority || 0;\n\t\tfor(var i = deferred.length; i > 0 && deferred[i - 1][2] > priority; i--) deferred[i] = deferred[i - 1];\n\t\tdeferred[i] = [chunkIds, fn, priority];\n\t\treturn;\n\t}\n\tvar notFulfilled = Infinity;\n\tfor (var i = 0; i < deferred.length; i++) {\n\t\tvar chunkIds = deferred[i][0];\n\t\tvar fn = deferred[i][1];\n\t\tvar priority = deferred[i][2];\n\t\tvar fulfilled = true;\n\t\tfor (var j = 0; j < chunkIds.length; j++) {\n\t\t\tif ((priority & 1 === 0 || notFulfilled >= priority) && Object.keys(__webpack_require__.O).every((key) => (__webpack_require__.O[key](chunkIds[j])))) {\n\t\t\t\tchunkIds.splice(j--, 1);\n\t\t\t} else {\n\t\t\t\tfulfilled = false;\n\t\t\t\tif(priority < notFulfilled) notFulfilled = priority;\n\t\t\t}\n\t\t}\n\t\tif(fulfilled) {\n\t\t\tdeferred.splice(i--, 1)\n\t\t\tvar r = fn();\n\t\t\tif (r !== undefined) result = r;\n\t\t}\n\t}\n\treturn result;\n};","var inProgress = {};\nvar dataWebpackPrefix = \"nextcloud:\";\n// loadScript function to load a script via script tag\n__webpack_require__.l = (url, done, key, chunkId) => {\n\tif(inProgress[url]) { inProgress[url].push(done); return; }\n\tvar script, needAttach;\n\tif(key !== undefined) {\n\t\tvar scripts = document.getElementsByTagName(\"script\");\n\t\tfor(var i = 0; i < scripts.length; i++) {\n\t\t\tvar s = scripts[i];\n\t\t\tif(s.getAttribute(\"src\") == url || s.getAttribute(\"data-webpack\") == dataWebpackPrefix + key) { script = s; break; }\n\t\t}\n\t}\n\tif(!script) {\n\t\tneedAttach = true;\n\t\tscript = document.createElement('script');\n\n\t\tscript.charset = 'utf-8';\n\t\tscript.timeout = 120;\n\t\tif (__webpack_require__.nc) {\n\t\t\tscript.setAttribute(\"nonce\", __webpack_require__.nc);\n\t\t}\n\t\tscript.setAttribute(\"data-webpack\", dataWebpackPrefix + key);\n\n\t\tscript.src = url;\n\t}\n\tinProgress[url] = [done];\n\tvar onScriptComplete = (prev, event) => {\n\t\t// avoid mem leaks in IE.\n\t\tscript.onerror = script.onload = null;\n\t\tclearTimeout(timeout);\n\t\tvar doneFns = inProgress[url];\n\t\tdelete inProgress[url];\n\t\tscript.parentNode && script.parentNode.removeChild(script);\n\t\tdoneFns && doneFns.forEach((fn) => (fn(event)));\n\t\tif(prev) return prev(event);\n\t}\n\tvar timeout = setTimeout(onScriptComplete.bind(null, undefined, { type: 'timeout', target: script }), 120000);\n\tscript.onerror = onScriptComplete.bind(null, script.onerror);\n\tscript.onload = onScriptComplete.bind(null, script.onload);\n\tneedAttach && document.head.appendChild(script);\n};","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('fieldset',{staticClass:\"permissions-select\"},[_c('NcCheckboxRadioSwitch',{attrs:{\"checked\":_vm.canCreate},on:{\"update:checked\":function($event){return _vm.toggle(_vm.PERMISSION_CREATE)}}},[_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.t('settings', 'Create'))+\"\\n\\t\")]),_vm._v(\" \"),_c('NcCheckboxRadioSwitch',{attrs:{\"checked\":_vm.canUpdate},on:{\"update:checked\":function($event){return _vm.toggle(_vm.PERMISSION_UPDATE)}}},[_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.t('settings', 'Change'))+\"\\n\\t\")]),_vm._v(\" \"),_c('NcCheckboxRadioSwitch',{attrs:{\"checked\":_vm.canDelete},on:{\"update:checked\":function($event){return _vm.toggle(_vm.PERMISSION_DELETE)}}},[_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.t('settings', 'Delete'))+\"\\n\\t\")]),_vm._v(\" \"),_c('NcCheckboxRadioSwitch',{attrs:{\"checked\":_vm.canShare},on:{\"update:checked\":function($event){return _vm.toggle(_vm.PERMISSION_SHARE)}}},[_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.t('settings', 'Reshare'))+\"\\n\\t\")])],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-4.use[1]!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SelectSharingPermissions.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-4.use[1]!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SelectSharingPermissions.vue?vue&type=script&lang=ts\"","\n import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SelectSharingPermissions.vue?vue&type=style&index=0&id=54c0ce93&prod&scoped=true&lang=css\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SelectSharingPermissions.vue?vue&type=style&index=0&id=54c0ce93&prod&scoped=true&lang=css\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./SelectSharingPermissions.vue?vue&type=template&id=54c0ce93&scoped=true\"\nimport script from \"./SelectSharingPermissions.vue?vue&type=script&lang=ts\"\nexport * from \"./SelectSharingPermissions.vue?vue&type=script&lang=ts\"\nimport style0 from \"./SelectSharingPermissions.vue?vue&type=style&index=0&id=54c0ce93&prod&scoped=true&lang=css\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"54c0ce93\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('form',{staticClass:\"sharing\"},[_c('NcCheckboxRadioSwitch',{attrs:{\"aria-controls\":\"settings-sharing-api settings-sharing-api-settings settings-sharing-default-permissions settings-sharing-privary-related\",\"type\":\"switch\",\"checked\":_vm.settings.enabled},on:{\"update:checked\":function($event){return _vm.$set(_vm.settings, \"enabled\", $event)}}},[_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.t('settings', 'Allow apps to use the Share API'))+\"\\n\\t\")]),_vm._v(\" \"),_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.settings.enabled),expression:\"settings.enabled\"}],staticClass:\"sharing__sub-section\",attrs:{\"id\":\"settings-sharing-api-settings\"}},[_c('NcCheckboxRadioSwitch',{attrs:{\"checked\":_vm.settings.allowResharing},on:{\"update:checked\":function($event){return _vm.$set(_vm.settings, \"allowResharing\", $event)}}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('settings', 'Allow resharing'))+\"\\n\\t\\t\")]),_vm._v(\" \"),_c('NcCheckboxRadioSwitch',{attrs:{\"checked\":_vm.settings.allowGroupSharing},on:{\"update:checked\":function($event){return _vm.$set(_vm.settings, \"allowGroupSharing\", $event)}}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('settings', 'Allow sharing with groups'))+\"\\n\\t\\t\")]),_vm._v(\" \"),_c('NcCheckboxRadioSwitch',{attrs:{\"checked\":_vm.settings.onlyShareWithGroupMembers},on:{\"update:checked\":function($event){return _vm.$set(_vm.settings, \"onlyShareWithGroupMembers\", $event)}}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('settings', 'Restrict users to only share with users in their groups'))+\"\\n\\t\\t\")]),_vm._v(\" \"),_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.settings.onlyShareWithGroupMembers),expression:\"settings.onlyShareWithGroupMembers\"}],staticClass:\"sharing__labeled-entry sharing__input\",attrs:{\"id\":\"settings-sharing-api-excluded-groups\"}},[_c('label',{attrs:{\"for\":\"settings-sharing-only-group-members-excluded-groups\"}},[_vm._v(_vm._s(_vm.t('settings', 'Ignore the following groups when checking group membership')))]),_vm._v(\" \"),_c('NcSettingsSelectGroup',{staticStyle:{\"width\":\"100%\"},attrs:{\"id\":\"settings-sharing-only-group-members-excluded-groups\",\"label\":_vm.t('settings', 'Ignore the following groups when checking group membership')},model:{value:(_vm.settings.onlyShareWithGroupMembersExcludeGroupList),callback:function ($$v) {_vm.$set(_vm.settings, \"onlyShareWithGroupMembersExcludeGroupList\", $$v)},expression:\"settings.onlyShareWithGroupMembersExcludeGroupList\"}})],1)],1),_vm._v(\" \"),_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.settings.enabled),expression:\"settings.enabled\"}],staticClass:\"sharing__section\",attrs:{\"id\":\"settings-sharing-api\"}},[_c('NcCheckboxRadioSwitch',{attrs:{\"type\":\"switch\",\"aria-controls\":\"settings-sharing-api-public-link\",\"checked\":_vm.settings.allowLinks},on:{\"update:checked\":function($event){return _vm.$set(_vm.settings, \"allowLinks\", $event)}}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('settings', 'Allow users to share via link and emails'))+\"\\n\\t\\t\")]),_vm._v(\" \"),_c('fieldset',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.settings.allowLinks),expression:\"settings.allowLinks\"}],staticClass:\"sharing__sub-section\",attrs:{\"id\":\"settings-sharing-api-public-link\"}},[_c('NcCheckboxRadioSwitch',{attrs:{\"checked\":_vm.settings.allowPublicUpload},on:{\"update:checked\":function($event){return _vm.$set(_vm.settings, \"allowPublicUpload\", $event)}}},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('settings', 'Allow public uploads'))+\"\\n\\t\\t\\t\")]),_vm._v(\" \"),_c('NcCheckboxRadioSwitch',{attrs:{\"checked\":_vm.settings.enableLinkPasswordByDefault},on:{\"update:checked\":function($event){return _vm.$set(_vm.settings, \"enableLinkPasswordByDefault\", $event)}}},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('settings', 'Always ask for a password'))+\"\\n\\t\\t\\t\")]),_vm._v(\" \"),_c('NcCheckboxRadioSwitch',{attrs:{\"checked\":_vm.settings.enforceLinksPassword,\"disabled\":!_vm.settings.enableLinkPasswordByDefault},on:{\"update:checked\":function($event){return _vm.$set(_vm.settings, \"enforceLinksPassword\", $event)}}},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('settings', 'Enforce password protection'))+\"\\n\\t\\t\\t\")]),_vm._v(\" \"),(_vm.settings.passwordExcludedGroupsFeatureEnabled)?_c('label',{staticClass:\"sharing__labeled-entry sharing__input\"},[_c('span',[_vm._v(_vm._s(_vm.t('settings', 'Exclude groups from password requirements')))]),_vm._v(\" \"),_c('NcSettingsSelectGroup',{staticStyle:{\"width\":\"100%\"},attrs:{\"disabled\":!_vm.settings.enforceLinksPassword || !_vm.settings.enableLinkPasswordByDefault},model:{value:(_vm.settings.passwordExcludedGroups),callback:function ($$v) {_vm.$set(_vm.settings, \"passwordExcludedGroups\", $$v)},expression:\"settings.passwordExcludedGroups\"}})],1):_vm._e(),_vm._v(\" \"),_c('label',{staticClass:\"sharing__labeled-entry sharing__input\"},[_c('span',[_vm._v(_vm._s(_vm.t('settings', 'Exclude groups from creating link shares')))]),_vm._v(\" \"),_c('NcSettingsSelectGroup',{staticStyle:{\"width\":\"100%\"},attrs:{\"label\":_vm.t('settings', 'Exclude groups from creating link shares')},model:{value:(_vm.settings.allowLinksExcludeGroups),callback:function ($$v) {_vm.$set(_vm.settings, \"allowLinksExcludeGroups\", $$v)},expression:\"settings.allowLinksExcludeGroups\"}})],1)],1),_vm._v(\" \"),_c('label',[_vm._v(_vm._s(_vm.t('settings', 'Limit sharing based on groups')))]),_vm._v(\" \"),_c('div',{staticClass:\"sharing__sub-section\"},[_c('NcCheckboxRadioSwitch',{attrs:{\"checked\":_vm.settings.excludeGroups,\"name\":\"excludeGroups\",\"value\":\"no\",\"type\":\"radio\"},on:{\"update:checked\":[function($event){return _vm.$set(_vm.settings, \"excludeGroups\", $event)},_vm.onUpdateExcludeGroups]}},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('settings', 'Allow sharing for everyone (default)'))+\"\\n\\t\\t\\t\")]),_vm._v(\" \"),_c('NcCheckboxRadioSwitch',{attrs:{\"checked\":_vm.settings.excludeGroups,\"name\":\"excludeGroups\",\"value\":\"yes\",\"type\":\"radio\"},on:{\"update:checked\":[function($event){return _vm.$set(_vm.settings, \"excludeGroups\", $event)},_vm.onUpdateExcludeGroups]}},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('settings', 'Exclude some groups from sharing'))+\"\\n\\t\\t\\t\")]),_vm._v(\" \"),_c('NcCheckboxRadioSwitch',{attrs:{\"checked\":_vm.settings.excludeGroups,\"name\":\"excludeGroups\",\"value\":\"allow\",\"type\":\"radio\"},on:{\"update:checked\":[function($event){return _vm.$set(_vm.settings, \"excludeGroups\", $event)},_vm.onUpdateExcludeGroups]}},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('settings', 'Limit sharing to some groups'))+\"\\n\\t\\t\\t\")]),_vm._v(\" \"),_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.settings.excludeGroups !== 'no'),expression:\"settings.excludeGroups !== 'no'\"}],staticClass:\"sharing__labeled-entry sharing__input\"},[_c('NcSettingsSelectGroup',{staticStyle:{\"width\":\"100%\"},attrs:{\"id\":\"settings-sharing-excluded-groups\",\"aria-describedby\":\"settings-sharing-excluded-groups-desc\",\"label\":_vm.settings.excludeGroups === 'allow' ? _vm.t('settings', 'Groups allowed to share') : _vm.t('settings', 'Groups excluded from sharing'),\"disabled\":_vm.settings.excludeGroups === 'no'},model:{value:(_vm.settings.excludeGroupsList),callback:function ($$v) {_vm.$set(_vm.settings, \"excludeGroupsList\", $$v)},expression:\"settings.excludeGroupsList\"}}),_vm._v(\" \"),_c('em',{attrs:{\"id\":\"settings-sharing-excluded-groups-desc\"}},[_vm._v(_vm._s(_vm.t('settings', 'Not allowed groups will still be able to receive shares, but not to initiate them.')))])],1)],1),_vm._v(\" \"),_c('NcCheckboxRadioSwitch',{attrs:{\"type\":\"switch\",\"aria-controls\":\"settings-sharing-api-expiration\",\"checked\":_vm.settings.defaultInternalExpireDate},on:{\"update:checked\":function($event){return _vm.$set(_vm.settings, \"defaultInternalExpireDate\", $event)}}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('settings', 'Set default expiration date for shares'))+\"\\n\\t\\t\")]),_vm._v(\" \"),_c('fieldset',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.settings.defaultInternalExpireDate),expression:\"settings.defaultInternalExpireDate\"}],staticClass:\"sharing__sub-section\",attrs:{\"id\":\"settings-sharing-api-expiration\"}},[_c('NcCheckboxRadioSwitch',{attrs:{\"checked\":_vm.settings.enforceInternalExpireDate},on:{\"update:checked\":function($event){return _vm.$set(_vm.settings, \"enforceInternalExpireDate\", $event)}}},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('settings', 'Enforce expiration date'))+\"\\n\\t\\t\\t\")]),_vm._v(\" \"),_c('NcTextField',{staticClass:\"sharing__input\",attrs:{\"type\":\"number\",\"label\":_vm.t('settings', 'Default expiration time of new shares in days'),\"placeholder\":_vm.t('settings', 'Expire shares after x days'),\"value\":_vm.settings.internalExpireAfterNDays},on:{\"update:value\":function($event){return _vm.$set(_vm.settings, \"internalExpireAfterNDays\", $event)}}})],1),_vm._v(\" \"),_c('NcCheckboxRadioSwitch',{attrs:{\"type\":\"switch\",\"aria-controls\":\"settings-sharing-remote-api-expiration\",\"checked\":_vm.settings.defaultRemoteExpireDate},on:{\"update:checked\":function($event){return _vm.$set(_vm.settings, \"defaultRemoteExpireDate\", $event)}}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('settings', 'Set default expiration date for shares to other servers'))+\"\\n\\t\\t\")]),_vm._v(\" \"),_c('fieldset',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.settings.defaultRemoteExpireDate),expression:\"settings.defaultRemoteExpireDate\"}],staticClass:\"sharing__sub-section\",attrs:{\"id\":\"settings-sharing-remote-api-expiration\"}},[_c('NcCheckboxRadioSwitch',{attrs:{\"checked\":_vm.settings.enforceRemoteExpireDate},on:{\"update:checked\":function($event){return _vm.$set(_vm.settings, \"enforceRemoteExpireDate\", $event)}}},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('settings', 'Enforce expiration date for remote shares'))+\"\\n\\t\\t\\t\")]),_vm._v(\" \"),_c('NcTextField',{staticClass:\"sharing__input\",attrs:{\"type\":\"number\",\"label\":_vm.t('settings', 'Default expiration time of remote shares in days'),\"placeholder\":_vm.t('settings', 'Expire remote shares after x days'),\"value\":_vm.settings.remoteExpireAfterNDays},on:{\"update:value\":function($event){return _vm.$set(_vm.settings, \"remoteExpireAfterNDays\", $event)}}})],1),_vm._v(\" \"),_c('NcCheckboxRadioSwitch',{attrs:{\"type\":\"switch\",\"aria-controls\":\"settings-sharing-api-api-expiration\",\"checked\":_vm.settings.defaultExpireDate,\"disabled\":!_vm.settings.allowLinks},on:{\"update:checked\":function($event){return _vm.$set(_vm.settings, \"defaultExpireDate\", $event)}}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('settings', 'Set default expiration date for shares via link or mail'))+\"\\n\\t\\t\")]),_vm._v(\" \"),_c('fieldset',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.settings.allowLinks && _vm.settings.defaultExpireDate),expression:\"settings.allowLinks && settings.defaultExpireDate\"}],staticClass:\"sharing__sub-section\",attrs:{\"id\":\"settings-sharing-api-api-expiration\"}},[_c('NcCheckboxRadioSwitch',{attrs:{\"checked\":_vm.settings.enforceExpireDate},on:{\"update:checked\":function($event){return _vm.$set(_vm.settings, \"enforceExpireDate\", $event)}}},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('settings', 'Enforce expiration date for remote shares'))+\"\\n\\t\\t\\t\")]),_vm._v(\" \"),_c('NcTextField',{staticClass:\"sharing__input\",attrs:{\"type\":\"number\",\"label\":_vm.t('settings', 'Default expiration time of shares in days'),\"placeholder\":_vm.t('settings', 'Expire shares after x days'),\"value\":_vm.settings.expireAfterNDays},on:{\"update:value\":function($event){return _vm.$set(_vm.settings, \"expireAfterNDays\", $event)}}})],1)],1),_vm._v(\" \"),_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.settings.enabled),expression:\"settings.enabled\"}],staticClass:\"sharing__section\",attrs:{\"id\":\"settings-sharing-privary-related\"}},[_c('h3',[_vm._v(_vm._s(_vm.t('settings', 'Privacy settings for sharing')))]),_vm._v(\" \"),_c('NcCheckboxRadioSwitch',{attrs:{\"type\":\"switch\",\"aria-controls\":\"settings-sharing-privacy-user-enumeration\",\"checked\":_vm.settings.allowShareDialogUserEnumeration},on:{\"update:checked\":function($event){return _vm.$set(_vm.settings, \"allowShareDialogUserEnumeration\", $event)}}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('settings', 'Allow username autocompletion in share dialog and allow access to the system address book'))+\"\\n\\t\\t\")]),_vm._v(\" \"),_c('fieldset',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.settings.allowShareDialogUserEnumeration),expression:\"settings.allowShareDialogUserEnumeration\"}],staticClass:\"sharing__sub-section\",attrs:{\"id\":\"settings-sharing-privacy-user-enumeration\"}},[_c('em',[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('settings', 'If autocompletion \"same group\" and \"phone number integration\" are enabled a match in either is enough to show the user.'))+\"\\n\\t\\t\\t\")]),_vm._v(\" \"),_c('NcCheckboxRadioSwitch',{attrs:{\"checked\":_vm.settings.restrictUserEnumerationToGroup},on:{\"update:checked\":function($event){return _vm.$set(_vm.settings, \"restrictUserEnumerationToGroup\", $event)}}},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('settings', 'Allow username autocompletion to users within the same groups and limit system address books to users in the same groups'))+\"\\n\\t\\t\\t\")]),_vm._v(\" \"),_c('NcCheckboxRadioSwitch',{attrs:{\"checked\":_vm.settings.restrictUserEnumerationToPhone},on:{\"update:checked\":function($event){return _vm.$set(_vm.settings, \"restrictUserEnumerationToPhone\", $event)}}},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('settings', 'Allow username autocompletion to users based on phone number integration'))+\"\\n\\t\\t\\t\")])],1),_vm._v(\" \"),_c('NcCheckboxRadioSwitch',{attrs:{\"type\":\"switch\",\"checked\":_vm.settings.restrictUserEnumerationFullMatch},on:{\"update:checked\":function($event){return _vm.$set(_vm.settings, \"restrictUserEnumerationFullMatch\", $event)}}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('settings', 'Allow autocompletion when entering the full name or email address (ignoring missing phonebook match and being in the same group)'))+\"\\n\\t\\t\")]),_vm._v(\" \"),_c('NcCheckboxRadioSwitch',{attrs:{\"type\":\"switch\",\"checked\":_vm.publicShareDisclaimerEnabled},on:{\"update:checked\":function($event){_vm.publicShareDisclaimerEnabled=$event}}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('settings', 'Show disclaimer text on the public link upload page (only shown when the file list is hidden)'))+\"\\n\\t\\t\")]),_vm._v(\" \"),(typeof _vm.settings.publicShareDisclaimerText === 'string')?_c('div',{staticClass:\"sharing__sub-section\",attrs:{\"aria-describedby\":\"settings-sharing-privary-related-disclaimer-hint\"}},[_c('NcTextArea',{staticClass:\"sharing__input\",attrs:{\"label\":_vm.t('settings', 'Disclaimer text'),\"aria-describedby\":\"settings-sharing-privary-related-disclaimer-hint\",\"value\":_vm.settings.publicShareDisclaimerText},on:{\"update:value\":_vm.onUpdateDisclaimer}}),_vm._v(\" \"),_c('em',{staticClass:\"sharing__input\",attrs:{\"id\":\"settings-sharing-privary-related-disclaimer-hint\"}},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('settings', 'This text will be shown on the public link upload page when the file list is hidden.'))+\"\\n\\t\\t\\t\")])],1):_vm._e()],1),_vm._v(\" \"),_c('div',{staticClass:\"sharing__section\",attrs:{\"id\":\"settings-sharing-default-permissions\"}},[_c('h3',[_vm._v(_vm._s(_vm.t('settings', 'Default share permissions')))]),_vm._v(\" \"),_c('SelectSharingPermissions',{attrs:{\"value\":_vm.settings.defaultPermissions},on:{\"update:value\":function($event){return _vm.$set(_vm.settings, \"defaultPermissions\", $event)}}})],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-4.use[1]!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AdminSettingsSharingForm.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-4.use[1]!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AdminSettingsSharingForm.vue?vue&type=script&lang=ts\"","\n import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AdminSettingsSharingForm.vue?vue&type=style&index=0&id=c857d40a&prod&scoped=true&lang=scss\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AdminSettingsSharingForm.vue?vue&type=style&index=0&id=c857d40a&prod&scoped=true&lang=scss\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./AdminSettingsSharingForm.vue?vue&type=template&id=c857d40a&scoped=true\"\nimport script from \"./AdminSettingsSharingForm.vue?vue&type=script&lang=ts\"\nexport * from \"./AdminSettingsSharingForm.vue?vue&type=script&lang=ts\"\nimport style0 from \"./AdminSettingsSharingForm.vue?vue&type=style&index=0&id=c857d40a&prod&scoped=true&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"c857d40a\",\n null\n \n)\n\nexport default component.exports","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-4.use[1]!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AdminSettingsSharing.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-4.use[1]!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AdminSettingsSharing.vue?vue&type=script&lang=ts\"","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('NcSettingsSection',{attrs:{\"data-cy-settings-sharing-section\":\"\",\"limit-width\":true,\"doc-url\":_vm.documentationLink,\"name\":_vm.t('settings', 'Sharing'),\"description\":_vm.t('settings', 'As admin you can fine-tune the sharing behavior. Please see the documentation for more information.')}},[(!_vm.sharingAppEnabled)?_c('NcNoteCard',{attrs:{\"type\":\"warning\"}},[_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.t('settings', 'You need to enable the File sharing App.'))+\"\\n\\t\")]):_c('AdminSettingsSharingForm')],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { render, staticRenderFns } from \"./AdminSettingsSharing.vue?vue&type=template&id=4dd263b2\"\nimport script from \"./AdminSettingsSharing.vue?vue&type=script&lang=ts\"\nexport * from \"./AdminSettingsSharing.vue?vue&type=script&lang=ts\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","/**\n * @copyright Copyright (c) 2023 Ferdinand Thiessen <opensource@fthiessen.de>\n *\n * @author Ferdinand Thiessen <opensource@fthiessen.de>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\nimport Vue from 'vue';\nimport AdminSettingsSharing from './views/AdminSettingsSharing.vue';\nexport default new Vue({\n name: 'AdminSettingsSharingSection',\n el: '#vue-admin-settings-sharing',\n render: (h) => h(AdminSettingsSharing),\n});\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.sharing[data-v-c857d40a]{display:flex;flex-direction:column;gap:12px}.sharing__labeled-entry[data-v-c857d40a]{display:flex;flex:1 0;flex-direction:column;gap:4px}.sharing__section[data-v-c857d40a]{display:flex;flex-direction:column;gap:4px;margin-block-end:12px}.sharing__sub-section[data-v-c857d40a]{display:flex;flex-direction:column;gap:4px;margin-inline-start:44px;margin-block-end:12px}.sharing__input[data-v-c857d40a]{max-width:500px;margin-inline-start:14px}.sharing__input[data-v-c857d40a] .v-select.select{width:100%}@media only screen and (max-width: 350px){.sharing__sub-section[data-v-c857d40a]{margin-inline-start:14px}}`, \"\",{\"version\":3,\"sources\":[\"webpack://./apps/settings/src/components/AdminSettingsSharingForm.vue\"],\"names\":[],\"mappings\":\"AACA,0BACC,YAAA,CACA,qBAAA,CACA,QAAA,CAEA,yCACC,YAAA,CACA,QAAA,CACA,qBAAA,CACA,OAAA,CAGD,mCACC,YAAA,CACA,qBAAA,CACA,OAAA,CACA,qBAAA,CAGD,uCACC,YAAA,CACA,qBAAA,CACA,OAAA,CAEA,wBAAA,CACA,qBAAA,CAGD,iCACC,eAAA,CAEA,wBAAA,CAEA,kDACC,UAAA,CAKH,0CAGE,uCACC,wBAAA,CAAA\",\"sourcesContent\":[\"\\n.sharing {\\n\\tdisplay: flex;\\n\\tflex-direction: column;\\n\\tgap: 12px;\\n\\n\\t&__labeled-entry {\\n\\t\\tdisplay: flex;\\n\\t\\tflex: 1 0;\\n\\t\\tflex-direction: column;\\n\\t\\tgap: 4px;\\n\\t}\\n\\n\\t&__section {\\n\\t\\tdisplay: flex;\\n\\t\\tflex-direction: column;\\n\\t\\tgap: 4px;\\n\\t\\tmargin-block-end: 12px\\n\\t}\\n\\n\\t&__sub-section {\\n\\t\\tdisplay: flex;\\n\\t\\tflex-direction: column;\\n\\t\\tgap: 4px;\\n\\n\\t\\tmargin-inline-start: 44px;\\n\\t\\tmargin-block-end: 12px\\n\\t}\\n\\n\\t&__input {\\n\\t\\tmax-width: 500px;\\n\\t\\t// align with checkboxes\\n\\t\\tmargin-inline-start: 14px;\\n\\n\\t\\t:deep(.v-select.select) {\\n\\t\\t\\twidth: 100%;\\n\\t\\t}\\n\\t}\\n}\\n\\n@media only screen and (max-width: 350px) {\\n\\t// ensure no overflow happens on small devices (required for WCAG)\\n\\t.sharing {\\n\\t\\t&__sub-section {\\n\\t\\t\\tmargin-inline-start: 14px;\\n\\t\\t}\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `\n.permissions-select[data-v-54c0ce93] {\n\tdisplay: flex;\n\tflex-wrap: wrap;\n\tgap: 4px;\n}\n`, \"\",{\"version\":3,\"sources\":[\"webpack://./apps/settings/src/components/SelectSharingPermissions.vue\"],\"names\":[],\"mappings\":\";AA8FA;CACA,aAAA;CACA,eAAA;CACA,QAAA;AACA\",\"sourcesContent\":[\"<!--\\n\\t- @copyright 2023 Ferdinand Thiessen <opensource@fthiessen.de>\\n\\t-\\n\\t- @author Ferdinand Thiessen <opensource@fthiessen.de>\\n\\t-\\n\\t- @license AGPL-3.0-or-later\\n\\t-\\n\\t- This program is free software: you can redistribute it and/or modify\\n\\t- it under the terms of the GNU Affero General Public License as\\n\\t- published by the Free Software Foundation, either version 3 of the\\n\\t- License, or (at your option) any later version.\\n\\t-\\n\\t- This program is distributed in the hope that it will be useful,\\n\\t- but WITHOUT ANY WARRANTY; without even the implied warranty of\\n\\t- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\\n\\t- GNU Affero General Public License for more details.\\n\\t-\\n\\t- You should have received a copy of the GNU Affero General Public License\\n\\t- along with this program. If not, see <http://www.gnu.org/licenses/>.\\n\\t-\\n-->\\n<template>\\n\\t<fieldset class=\\\"permissions-select\\\">\\n\\t\\t<NcCheckboxRadioSwitch :checked=\\\"canCreate\\\" @update:checked=\\\"toggle(PERMISSION_CREATE)\\\">\\n\\t\\t\\t{{ t('settings', 'Create') }}\\n\\t\\t</NcCheckboxRadioSwitch>\\n\\t\\t<NcCheckboxRadioSwitch :checked=\\\"canUpdate\\\" @update:checked=\\\"toggle(PERMISSION_UPDATE)\\\">\\n\\t\\t\\t{{ t('settings', 'Change') }}\\n\\t\\t</NcCheckboxRadioSwitch>\\n\\t\\t<NcCheckboxRadioSwitch :checked=\\\"canDelete\\\" @update:checked=\\\"toggle(PERMISSION_DELETE)\\\">\\n\\t\\t\\t{{ t('settings', 'Delete') }}\\n\\t\\t</NcCheckboxRadioSwitch>\\n\\t\\t<NcCheckboxRadioSwitch :checked=\\\"canShare\\\" @update:checked=\\\"toggle(PERMISSION_SHARE)\\\">\\n\\t\\t\\t{{ t('settings', 'Reshare') }}\\n\\t\\t</NcCheckboxRadioSwitch>\\n\\t</fieldset>\\n</template>\\n\\n<script lang=\\\"ts\\\">\\nimport { translate } from '@nextcloud/l10n'\\nimport { NcCheckboxRadioSwitch } from '@nextcloud/vue'\\nimport { defineComponent } from 'vue'\\n\\nexport default defineComponent({\\n\\tname: 'SelectSharingPermissions',\\n\\tcomponents: {\\n\\t\\tNcCheckboxRadioSwitch,\\n\\t},\\n\\tprops: {\\n\\t\\tvalue: {\\n\\t\\t\\ttype: Number,\\n\\t\\t\\trequired: true,\\n\\t\\t},\\n\\t},\\n\\temits: {\\n\\t\\t'update:value': (value: number) => typeof value === 'number',\\n\\t},\\n\\tdata() {\\n\\t\\treturn {\\n\\t\\t\\tPERMISSION_UPDATE: 2,\\n\\t\\t\\tPERMISSION_CREATE: 4,\\n\\t\\t\\tPERMISSION_DELETE: 8,\\n\\t\\t\\tPERMISSION_SHARE: 16,\\n\\t\\t}\\n\\t},\\n\\tcomputed: {\\n\\t\\tcanCreate() {\\n\\t\\t\\treturn (this.value & this.PERMISSION_CREATE) !== 0\\n\\t\\t},\\n\\t\\tcanUpdate() {\\n\\t\\t\\treturn (this.value & this.PERMISSION_UPDATE) !== 0\\n\\t\\t},\\n\\t\\tcanDelete() {\\n\\t\\t\\treturn (this.value & this.PERMISSION_DELETE) !== 0\\n\\t\\t},\\n\\t\\tcanShare() {\\n\\t\\t\\treturn (this.value & this.PERMISSION_SHARE) !== 0\\n\\t\\t},\\n\\t},\\n\\tmethods: {\\n\\t\\tt: translate,\\n\\t\\t/**\\n\\t\\t * Toggle a permission\\n\\t\\t * @param permission The permission (bit) to toggle\\n\\t\\t */\\n\\t\\ttoggle(permission: number) {\\n\\t\\t\\t// xor to toggle the bit\\n\\t\\t\\tthis.$emit('update:value', this.value ^ permission)\\n\\t\\t},\\n\\t},\\n})\\n</script>\\n\\n<style scoped>\\n.permissions-select {\\n\\tdisplay: flex;\\n\\tflex-wrap: wrap;\\n\\tgap: 4px;\\n}\\n</style>\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","/**\n * @license\n * Lodash <https://lodash.com/>\n * Copyright OpenJS Foundation and other contributors <https://openjsf.org/>\n * Released under MIT license <https://lodash.com/license>\n * Based on Underscore.js 1.8.3 <http://underscorejs.org/LICENSE>\n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\n;(function() {\n\n /** Used as a safe reference for `undefined` in pre-ES5 environments. */\n var undefined;\n\n /** Used as the semantic version number. */\n var VERSION = '4.17.21';\n\n /** Used as the size to enable large array optimizations. */\n var LARGE_ARRAY_SIZE = 200;\n\n /** Error message constants. */\n var CORE_ERROR_TEXT = 'Unsupported core-js use. Try https://npms.io/search?q=ponyfill.',\n FUNC_ERROR_TEXT = 'Expected a function',\n INVALID_TEMPL_VAR_ERROR_TEXT = 'Invalid `variable` option passed into `_.template`';\n\n /** Used to stand-in for `undefined` hash values. */\n var HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n /** Used as the maximum memoize cache size. */\n var MAX_MEMOIZE_SIZE = 500;\n\n /** Used as the internal argument placeholder. */\n var PLACEHOLDER = '__lodash_placeholder__';\n\n /** Used to compose bitmasks for cloning. */\n var CLONE_DEEP_FLAG = 1,\n CLONE_FLAT_FLAG = 2,\n CLONE_SYMBOLS_FLAG = 4;\n\n /** Used to compose bitmasks for value comparisons. */\n var COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n\n /** Used to compose bitmasks for function metadata. */\n var WRAP_BIND_FLAG = 1,\n WRAP_BIND_KEY_FLAG = 2,\n WRAP_CURRY_BOUND_FLAG = 4,\n WRAP_CURRY_FLAG = 8,\n WRAP_CURRY_RIGHT_FLAG = 16,\n WRAP_PARTIAL_FLAG = 32,\n WRAP_PARTIAL_RIGHT_FLAG = 64,\n WRAP_ARY_FLAG = 128,\n WRAP_REARG_FLAG = 256,\n WRAP_FLIP_FLAG = 512;\n\n /** Used as default options for `_.truncate`. */\n var DEFAULT_TRUNC_LENGTH = 30,\n DEFAULT_TRUNC_OMISSION = '...';\n\n /** Used to detect hot functions by number of calls within a span of milliseconds. */\n var HOT_COUNT = 800,\n HOT_SPAN = 16;\n\n /** Used to indicate the type of lazy iteratees. */\n var LAZY_FILTER_FLAG = 1,\n LAZY_MAP_FLAG = 2,\n LAZY_WHILE_FLAG = 3;\n\n /** Used as references for various `Number` constants. */\n var INFINITY = 1 / 0,\n MAX_SAFE_INTEGER = 9007199254740991,\n MAX_INTEGER = 1.7976931348623157e+308,\n NAN = 0 / 0;\n\n /** Used as references for the maximum length and index of an array. */\n var MAX_ARRAY_LENGTH = 4294967295,\n MAX_ARRAY_INDEX = MAX_ARRAY_LENGTH - 1,\n HALF_MAX_ARRAY_LENGTH = MAX_ARRAY_LENGTH >>> 1;\n\n /** Used to associate wrap methods with their bit flags. */\n var wrapFlags = [\n ['ary', WRAP_ARY_FLAG],\n ['bind', WRAP_BIND_FLAG],\n ['bindKey', WRAP_BIND_KEY_FLAG],\n ['curry', WRAP_CURRY_FLAG],\n ['curryRight', WRAP_CURRY_RIGHT_FLAG],\n ['flip', WRAP_FLIP_FLAG],\n ['partial', WRAP_PARTIAL_FLAG],\n ['partialRight', WRAP_PARTIAL_RIGHT_FLAG],\n ['rearg', WRAP_REARG_FLAG]\n ];\n\n /** `Object#toString` result references. */\n var argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n asyncTag = '[object AsyncFunction]',\n boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n domExcTag = '[object DOMException]',\n errorTag = '[object Error]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n nullTag = '[object Null]',\n objectTag = '[object Object]',\n promiseTag = '[object Promise]',\n proxyTag = '[object Proxy]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n symbolTag = '[object Symbol]',\n undefinedTag = '[object Undefined]',\n weakMapTag = '[object WeakMap]',\n weakSetTag = '[object WeakSet]';\n\n var arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]',\n float32Tag = '[object Float32Array]',\n float64Tag = '[object Float64Array]',\n int8Tag = '[object Int8Array]',\n int16Tag = '[object Int16Array]',\n int32Tag = '[object Int32Array]',\n uint8Tag = '[object Uint8Array]',\n uint8ClampedTag = '[object Uint8ClampedArray]',\n uint16Tag = '[object Uint16Array]',\n uint32Tag = '[object Uint32Array]';\n\n /** Used to match empty string literals in compiled template source. */\n var reEmptyStringLeading = /\\b__p \\+= '';/g,\n reEmptyStringMiddle = /\\b(__p \\+=) '' \\+/g,\n reEmptyStringTrailing = /(__e\\(.*?\\)|\\b__t\\)) \\+\\n'';/g;\n\n /** Used to match HTML entities and HTML characters. */\n var reEscapedHtml = /&(?:amp|lt|gt|quot|#39);/g,\n reUnescapedHtml = /[&<>\"']/g,\n reHasEscapedHtml = RegExp(reEscapedHtml.source),\n reHasUnescapedHtml = RegExp(reUnescapedHtml.source);\n\n /** Used to match template delimiters. */\n var reEscape = /<%-([\\s\\S]+?)%>/g,\n reEvaluate = /<%([\\s\\S]+?)%>/g,\n reInterpolate = /<%=([\\s\\S]+?)%>/g;\n\n /** Used to match property names within property paths. */\n var reIsDeepProp = /\\.|\\[(?:[^[\\]]*|([\"'])(?:(?!\\1)[^\\\\]|\\\\.)*?\\1)\\]/,\n reIsPlainProp = /^\\w*$/,\n rePropName = /[^.[\\]]+|\\[(?:(-?\\d+(?:\\.\\d+)?)|([\"'])((?:(?!\\2)[^\\\\]|\\\\.)*?)\\2)\\]|(?=(?:\\.|\\[\\])(?:\\.|\\[\\]|$))/g;\n\n /**\n * Used to match `RegExp`\n * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).\n */\n var reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g,\n reHasRegExpChar = RegExp(reRegExpChar.source);\n\n /** Used to match leading whitespace. */\n var reTrimStart = /^\\s+/;\n\n /** Used to match a single whitespace character. */\n var reWhitespace = /\\s/;\n\n /** Used to match wrap detail comments. */\n var reWrapComment = /\\{(?:\\n\\/\\* \\[wrapped with .+\\] \\*\\/)?\\n?/,\n reWrapDetails = /\\{\\n\\/\\* \\[wrapped with (.+)\\] \\*/,\n reSplitDetails = /,? & /;\n\n /** Used to match words composed of alphanumeric characters. */\n var reAsciiWord = /[^\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\x7f]+/g;\n\n /**\n * Used to validate the `validate` option in `_.template` variable.\n *\n * Forbids characters which could potentially change the meaning of the function argument definition:\n * - \"(),\" (modification of function parameters)\n * - \"=\" (default value)\n * - \"[]{}\" (destructuring of function parameters)\n * - \"/\" (beginning of a comment)\n * - whitespace\n */\n var reForbiddenIdentifierChars = /[()=,{}\\[\\]\\/\\s]/;\n\n /** Used to match backslashes in property paths. */\n var reEscapeChar = /\\\\(\\\\)?/g;\n\n /**\n * Used to match\n * [ES template delimiters](http://ecma-international.org/ecma-262/7.0/#sec-template-literal-lexical-components).\n */\n var reEsTemplate = /\\$\\{([^\\\\}]*(?:\\\\.[^\\\\}]*)*)\\}/g;\n\n /** Used to match `RegExp` flags from their coerced string values. */\n var reFlags = /\\w*$/;\n\n /** Used to detect bad signed hexadecimal string values. */\n var reIsBadHex = /^[-+]0x[0-9a-f]+$/i;\n\n /** Used to detect binary string values. */\n var reIsBinary = /^0b[01]+$/i;\n\n /** Used to detect host constructors (Safari). */\n var reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n\n /** Used to detect octal string values. */\n var reIsOctal = /^0o[0-7]+$/i;\n\n /** Used to detect unsigned integer values. */\n var reIsUint = /^(?:0|[1-9]\\d*)$/;\n\n /** Used to match Latin Unicode letters (excluding mathematical operators). */\n var reLatin = /[\\xc0-\\xd6\\xd8-\\xf6\\xf8-\\xff\\u0100-\\u017f]/g;\n\n /** Used to ensure capturing order of template delimiters. */\n var reNoMatch = /($^)/;\n\n /** Used to match unescaped characters in compiled string literals. */\n var reUnescapedString = /['\\n\\r\\u2028\\u2029\\\\]/g;\n\n /** Used to compose unicode character classes. */\n var rsAstralRange = '\\\\ud800-\\\\udfff',\n rsComboMarksRange = '\\\\u0300-\\\\u036f',\n reComboHalfMarksRange = '\\\\ufe20-\\\\ufe2f',\n rsComboSymbolsRange = '\\\\u20d0-\\\\u20ff',\n rsComboRange = rsComboMarksRange + reComboHalfMarksRange + rsComboSymbolsRange,\n rsDingbatRange = '\\\\u2700-\\\\u27bf',\n rsLowerRange = 'a-z\\\\xdf-\\\\xf6\\\\xf8-\\\\xff',\n rsMathOpRange = '\\\\xac\\\\xb1\\\\xd7\\\\xf7',\n rsNonCharRange = '\\\\x00-\\\\x2f\\\\x3a-\\\\x40\\\\x5b-\\\\x60\\\\x7b-\\\\xbf',\n rsPunctuationRange = '\\\\u2000-\\\\u206f',\n rsSpaceRange = ' \\\\t\\\\x0b\\\\f\\\\xa0\\\\ufeff\\\\n\\\\r\\\\u2028\\\\u2029\\\\u1680\\\\u180e\\\\u2000\\\\u2001\\\\u2002\\\\u2003\\\\u2004\\\\u2005\\\\u2006\\\\u2007\\\\u2008\\\\u2009\\\\u200a\\\\u202f\\\\u205f\\\\u3000',\n rsUpperRange = 'A-Z\\\\xc0-\\\\xd6\\\\xd8-\\\\xde',\n rsVarRange = '\\\\ufe0e\\\\ufe0f',\n rsBreakRange = rsMathOpRange + rsNonCharRange + rsPunctuationRange + rsSpaceRange;\n\n /** Used to compose unicode capture groups. */\n var rsApos = \"['\\u2019]\",\n rsAstral = '[' + rsAstralRange + ']',\n rsBreak = '[' + rsBreakRange + ']',\n rsCombo = '[' + rsComboRange + ']',\n rsDigits = '\\\\d+',\n rsDingbat = '[' + rsDingbatRange + ']',\n rsLower = '[' + rsLowerRange + ']',\n rsMisc = '[^' + rsAstralRange + rsBreakRange + rsDigits + rsDingbatRange + rsLowerRange + rsUpperRange + ']',\n rsFitz = '\\\\ud83c[\\\\udffb-\\\\udfff]',\n rsModifier = '(?:' + rsCombo + '|' + rsFitz + ')',\n rsNonAstral = '[^' + rsAstralRange + ']',\n rsRegional = '(?:\\\\ud83c[\\\\udde6-\\\\uddff]){2}',\n rsSurrPair = '[\\\\ud800-\\\\udbff][\\\\udc00-\\\\udfff]',\n rsUpper = '[' + rsUpperRange + ']',\n rsZWJ = '\\\\u200d';\n\n /** Used to compose unicode regexes. */\n var rsMiscLower = '(?:' + rsLower + '|' + rsMisc + ')',\n rsMiscUpper = '(?:' + rsUpper + '|' + rsMisc + ')',\n rsOptContrLower = '(?:' + rsApos + '(?:d|ll|m|re|s|t|ve))?',\n rsOptContrUpper = '(?:' + rsApos + '(?:D|LL|M|RE|S|T|VE))?',\n reOptMod = rsModifier + '?',\n rsOptVar = '[' + rsVarRange + ']?',\n rsOptJoin = '(?:' + rsZWJ + '(?:' + [rsNonAstral, rsRegional, rsSurrPair].join('|') + ')' + rsOptVar + reOptMod + ')*',\n rsOrdLower = '\\\\d*(?:1st|2nd|3rd|(?![123])\\\\dth)(?=\\\\b|[A-Z_])',\n rsOrdUpper = '\\\\d*(?:1ST|2ND|3RD|(?![123])\\\\dTH)(?=\\\\b|[a-z_])',\n rsSeq = rsOptVar + reOptMod + rsOptJoin,\n rsEmoji = '(?:' + [rsDingbat, rsRegional, rsSurrPair].join('|') + ')' + rsSeq,\n rsSymbol = '(?:' + [rsNonAstral + rsCombo + '?', rsCombo, rsRegional, rsSurrPair, rsAstral].join('|') + ')';\n\n /** Used to match apostrophes. */\n var reApos = RegExp(rsApos, 'g');\n\n /**\n * Used to match [combining diacritical marks](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks) and\n * [combining diacritical marks for symbols](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks_for_Symbols).\n */\n var reComboMark = RegExp(rsCombo, 'g');\n\n /** Used to match [string symbols](https://mathiasbynens.be/notes/javascript-unicode). */\n var reUnicode = RegExp(rsFitz + '(?=' + rsFitz + ')|' + rsSymbol + rsSeq, 'g');\n\n /** Used to match complex or compound words. */\n var reUnicodeWord = RegExp([\n rsUpper + '?' + rsLower + '+' + rsOptContrLower + '(?=' + [rsBreak, rsUpper, '$'].join('|') + ')',\n rsMiscUpper + '+' + rsOptContrUpper + '(?=' + [rsBreak, rsUpper + rsMiscLower, '$'].join('|') + ')',\n rsUpper + '?' + rsMiscLower + '+' + rsOptContrLower,\n rsUpper + '+' + rsOptContrUpper,\n rsOrdUpper,\n rsOrdLower,\n rsDigits,\n rsEmoji\n ].join('|'), 'g');\n\n /** Used to detect strings with [zero-width joiners or code points from the astral planes](http://eev.ee/blog/2015/09/12/dark-corners-of-unicode/). */\n var reHasUnicode = RegExp('[' + rsZWJ + rsAstralRange + rsComboRange + rsVarRange + ']');\n\n /** Used to detect strings that need a more robust regexp to match words. */\n var reHasUnicodeWord = /[a-z][A-Z]|[A-Z]{2}[a-z]|[0-9][a-zA-Z]|[a-zA-Z][0-9]|[^a-zA-Z0-9 ]/;\n\n /** Used to assign default `context` object properties. */\n var contextProps = [\n 'Array', 'Buffer', 'DataView', 'Date', 'Error', 'Float32Array', 'Float64Array',\n 'Function', 'Int8Array', 'Int16Array', 'Int32Array', 'Map', 'Math', 'Object',\n 'Promise', 'RegExp', 'Set', 'String', 'Symbol', 'TypeError', 'Uint8Array',\n 'Uint8ClampedArray', 'Uint16Array', 'Uint32Array', 'WeakMap',\n '_', 'clearTimeout', 'isFinite', 'parseInt', 'setTimeout'\n ];\n\n /** Used to make template sourceURLs easier to identify. */\n var templateCounter = -1;\n\n /** Used to identify `toStringTag` values of typed arrays. */\n var typedArrayTags = {};\n typedArrayTags[float32Tag] = typedArrayTags[float64Tag] =\n typedArrayTags[int8Tag] = typedArrayTags[int16Tag] =\n typedArrayTags[int32Tag] = typedArrayTags[uint8Tag] =\n typedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] =\n typedArrayTags[uint32Tag] = true;\n typedArrayTags[argsTag] = typedArrayTags[arrayTag] =\n typedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] =\n typedArrayTags[dataViewTag] = typedArrayTags[dateTag] =\n typedArrayTags[errorTag] = typedArrayTags[funcTag] =\n typedArrayTags[mapTag] = typedArrayTags[numberTag] =\n typedArrayTags[objectTag] = typedArrayTags[regexpTag] =\n typedArrayTags[setTag] = typedArrayTags[stringTag] =\n typedArrayTags[weakMapTag] = false;\n\n /** Used to identify `toStringTag` values supported by `_.clone`. */\n var cloneableTags = {};\n cloneableTags[argsTag] = cloneableTags[arrayTag] =\n cloneableTags[arrayBufferTag] = cloneableTags[dataViewTag] =\n cloneableTags[boolTag] = cloneableTags[dateTag] =\n cloneableTags[float32Tag] = cloneableTags[float64Tag] =\n cloneableTags[int8Tag] = cloneableTags[int16Tag] =\n cloneableTags[int32Tag] = cloneableTags[mapTag] =\n cloneableTags[numberTag] = cloneableTags[objectTag] =\n cloneableTags[regexpTag] = cloneableTags[setTag] =\n cloneableTags[stringTag] = cloneableTags[symbolTag] =\n cloneableTags[uint8Tag] = cloneableTags[uint8ClampedTag] =\n cloneableTags[uint16Tag] = cloneableTags[uint32Tag] = true;\n cloneableTags[errorTag] = cloneableTags[funcTag] =\n cloneableTags[weakMapTag] = false;\n\n /** Used to map Latin Unicode letters to basic Latin letters. */\n var deburredLetters = {\n // Latin-1 Supplement block.\n '\\xc0': 'A', '\\xc1': 'A', '\\xc2': 'A', '\\xc3': 'A', '\\xc4': 'A', '\\xc5': 'A',\n '\\xe0': 'a', '\\xe1': 'a', '\\xe2': 'a', '\\xe3': 'a', '\\xe4': 'a', '\\xe5': 'a',\n '\\xc7': 'C', '\\xe7': 'c',\n '\\xd0': 'D', '\\xf0': 'd',\n '\\xc8': 'E', '\\xc9': 'E', '\\xca': 'E', '\\xcb': 'E',\n '\\xe8': 'e', '\\xe9': 'e', '\\xea': 'e', '\\xeb': 'e',\n '\\xcc': 'I', '\\xcd': 'I', '\\xce': 'I', '\\xcf': 'I',\n '\\xec': 'i', '\\xed': 'i', '\\xee': 'i', '\\xef': 'i',\n '\\xd1': 'N', '\\xf1': 'n',\n '\\xd2': 'O', '\\xd3': 'O', '\\xd4': 'O', '\\xd5': 'O', '\\xd6': 'O', '\\xd8': 'O',\n '\\xf2': 'o', '\\xf3': 'o', '\\xf4': 'o', '\\xf5': 'o', '\\xf6': 'o', '\\xf8': 'o',\n '\\xd9': 'U', '\\xda': 'U', '\\xdb': 'U', '\\xdc': 'U',\n '\\xf9': 'u', '\\xfa': 'u', '\\xfb': 'u', '\\xfc': 'u',\n '\\xdd': 'Y', '\\xfd': 'y', '\\xff': 'y',\n '\\xc6': 'Ae', '\\xe6': 'ae',\n '\\xde': 'Th', '\\xfe': 'th',\n '\\xdf': 'ss',\n // Latin Extended-A block.\n '\\u0100': 'A', '\\u0102': 'A', '\\u0104': 'A',\n '\\u0101': 'a', '\\u0103': 'a', '\\u0105': 'a',\n '\\u0106': 'C', '\\u0108': 'C', '\\u010a': 'C', '\\u010c': 'C',\n '\\u0107': 'c', '\\u0109': 'c', '\\u010b': 'c', '\\u010d': 'c',\n '\\u010e': 'D', '\\u0110': 'D', '\\u010f': 'd', '\\u0111': 'd',\n '\\u0112': 'E', '\\u0114': 'E', '\\u0116': 'E', '\\u0118': 'E', '\\u011a': 'E',\n '\\u0113': 'e', '\\u0115': 'e', '\\u0117': 'e', '\\u0119': 'e', '\\u011b': 'e',\n '\\u011c': 'G', '\\u011e': 'G', '\\u0120': 'G', '\\u0122': 'G',\n '\\u011d': 'g', '\\u011f': 'g', '\\u0121': 'g', '\\u0123': 'g',\n '\\u0124': 'H', '\\u0126': 'H', '\\u0125': 'h', '\\u0127': 'h',\n '\\u0128': 'I', '\\u012a': 'I', '\\u012c': 'I', '\\u012e': 'I', '\\u0130': 'I',\n '\\u0129': 'i', '\\u012b': 'i', '\\u012d': 'i', '\\u012f': 'i', '\\u0131': 'i',\n '\\u0134': 'J', '\\u0135': 'j',\n '\\u0136': 'K', '\\u0137': 'k', '\\u0138': 'k',\n '\\u0139': 'L', '\\u013b': 'L', '\\u013d': 'L', '\\u013f': 'L', '\\u0141': 'L',\n '\\u013a': 'l', '\\u013c': 'l', '\\u013e': 'l', '\\u0140': 'l', '\\u0142': 'l',\n '\\u0143': 'N', '\\u0145': 'N', '\\u0147': 'N', '\\u014a': 'N',\n '\\u0144': 'n', '\\u0146': 'n', '\\u0148': 'n', '\\u014b': 'n',\n '\\u014c': 'O', '\\u014e': 'O', '\\u0150': 'O',\n '\\u014d': 'o', '\\u014f': 'o', '\\u0151': 'o',\n '\\u0154': 'R', '\\u0156': 'R', '\\u0158': 'R',\n '\\u0155': 'r', '\\u0157': 'r', '\\u0159': 'r',\n '\\u015a': 'S', '\\u015c': 'S', '\\u015e': 'S', '\\u0160': 'S',\n '\\u015b': 's', '\\u015d': 's', '\\u015f': 's', '\\u0161': 's',\n '\\u0162': 'T', '\\u0164': 'T', '\\u0166': 'T',\n '\\u0163': 't', '\\u0165': 't', '\\u0167': 't',\n '\\u0168': 'U', '\\u016a': 'U', '\\u016c': 'U', '\\u016e': 'U', '\\u0170': 'U', '\\u0172': 'U',\n '\\u0169': 'u', '\\u016b': 'u', '\\u016d': 'u', '\\u016f': 'u', '\\u0171': 'u', '\\u0173': 'u',\n '\\u0174': 'W', '\\u0175': 'w',\n '\\u0176': 'Y', '\\u0177': 'y', '\\u0178': 'Y',\n '\\u0179': 'Z', '\\u017b': 'Z', '\\u017d': 'Z',\n '\\u017a': 'z', '\\u017c': 'z', '\\u017e': 'z',\n '\\u0132': 'IJ', '\\u0133': 'ij',\n '\\u0152': 'Oe', '\\u0153': 'oe',\n '\\u0149': \"'n\", '\\u017f': 's'\n };\n\n /** Used to map characters to HTML entities. */\n var htmlEscapes = {\n '&': '&',\n '<': '<',\n '>': '>',\n '\"': '"',\n \"'\": '''\n };\n\n /** Used to map HTML entities to characters. */\n var htmlUnescapes = {\n '&': '&',\n '<': '<',\n '>': '>',\n '"': '\"',\n ''': \"'\"\n };\n\n /** Used to escape characters for inclusion in compiled string literals. */\n var stringEscapes = {\n '\\\\': '\\\\',\n \"'\": \"'\",\n '\\n': 'n',\n '\\r': 'r',\n '\\u2028': 'u2028',\n '\\u2029': 'u2029'\n };\n\n /** Built-in method references without a dependency on `root`. */\n var freeParseFloat = parseFloat,\n freeParseInt = parseInt;\n\n /** Detect free variable `global` from Node.js. */\n var freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\n /** Detect free variable `self`. */\n var freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n /** Used as a reference to the global object. */\n var root = freeGlobal || freeSelf || Function('return this')();\n\n /** Detect free variable `exports`. */\n var freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n /** Detect free variable `module`. */\n var freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n /** Detect the popular CommonJS extension `module.exports`. */\n var moduleExports = freeModule && freeModule.exports === freeExports;\n\n /** Detect free variable `process` from Node.js. */\n var freeProcess = moduleExports && freeGlobal.process;\n\n /** Used to access faster Node.js helpers. */\n var nodeUtil = (function() {\n try {\n // Use `util.types` for Node.js 10+.\n var types = freeModule && freeModule.require && freeModule.require('util').types;\n\n if (types) {\n return types;\n }\n\n // Legacy `process.binding('util')` for Node.js < 10.\n return freeProcess && freeProcess.binding && freeProcess.binding('util');\n } catch (e) {}\n }());\n\n /* Node.js helper references. */\n var nodeIsArrayBuffer = nodeUtil && nodeUtil.isArrayBuffer,\n nodeIsDate = nodeUtil && nodeUtil.isDate,\n nodeIsMap = nodeUtil && nodeUtil.isMap,\n nodeIsRegExp = nodeUtil && nodeUtil.isRegExp,\n nodeIsSet = nodeUtil && nodeUtil.isSet,\n nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray;\n\n /*--------------------------------------------------------------------------*/\n\n /**\n * A faster alternative to `Function#apply`, this function invokes `func`\n * with the `this` binding of `thisArg` and the arguments of `args`.\n *\n * @private\n * @param {Function} func The function to invoke.\n * @param {*} thisArg The `this` binding of `func`.\n * @param {Array} args The arguments to invoke `func` with.\n * @returns {*} Returns the result of `func`.\n */\n function apply(func, thisArg, args) {\n switch (args.length) {\n case 0: return func.call(thisArg);\n case 1: return func.call(thisArg, args[0]);\n case 2: return func.call(thisArg, args[0], args[1]);\n case 3: return func.call(thisArg, args[0], args[1], args[2]);\n }\n return func.apply(thisArg, args);\n }\n\n /**\n * A specialized version of `baseAggregator` for arrays.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} setter The function to set `accumulator` values.\n * @param {Function} iteratee The iteratee to transform keys.\n * @param {Object} accumulator The initial aggregated object.\n * @returns {Function} Returns `accumulator`.\n */\n function arrayAggregator(array, setter, iteratee, accumulator) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n var value = array[index];\n setter(accumulator, value, iteratee(value), array);\n }\n return accumulator;\n }\n\n /**\n * A specialized version of `_.forEach` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns `array`.\n */\n function arrayEach(array, iteratee) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (iteratee(array[index], index, array) === false) {\n break;\n }\n }\n return array;\n }\n\n /**\n * A specialized version of `_.forEachRight` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns `array`.\n */\n function arrayEachRight(array, iteratee) {\n var length = array == null ? 0 : array.length;\n\n while (length--) {\n if (iteratee(array[length], length, array) === false) {\n break;\n }\n }\n return array;\n }\n\n /**\n * A specialized version of `_.every` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {boolean} Returns `true` if all elements pass the predicate check,\n * else `false`.\n */\n function arrayEvery(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (!predicate(array[index], index, array)) {\n return false;\n }\n }\n return true;\n }\n\n /**\n * A specialized version of `_.filter` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n */\n function arrayFilter(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length,\n resIndex = 0,\n result = [];\n\n while (++index < length) {\n var value = array[index];\n if (predicate(value, index, array)) {\n result[resIndex++] = value;\n }\n }\n return result;\n }\n\n /**\n * A specialized version of `_.includes` for arrays without support for\n * specifying an index to search from.\n *\n * @private\n * @param {Array} [array] The array to inspect.\n * @param {*} target The value to search for.\n * @returns {boolean} Returns `true` if `target` is found, else `false`.\n */\n function arrayIncludes(array, value) {\n var length = array == null ? 0 : array.length;\n return !!length && baseIndexOf(array, value, 0) > -1;\n }\n\n /**\n * This function is like `arrayIncludes` except that it accepts a comparator.\n *\n * @private\n * @param {Array} [array] The array to inspect.\n * @param {*} target The value to search for.\n * @param {Function} comparator The comparator invoked per element.\n * @returns {boolean} Returns `true` if `target` is found, else `false`.\n */\n function arrayIncludesWith(array, value, comparator) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (comparator(value, array[index])) {\n return true;\n }\n }\n return false;\n }\n\n /**\n * A specialized version of `_.map` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n */\n function arrayMap(array, iteratee) {\n var index = -1,\n length = array == null ? 0 : array.length,\n result = Array(length);\n\n while (++index < length) {\n result[index] = iteratee(array[index], index, array);\n }\n return result;\n }\n\n /**\n * Appends the elements of `values` to `array`.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {Array} values The values to append.\n * @returns {Array} Returns `array`.\n */\n function arrayPush(array, values) {\n var index = -1,\n length = values.length,\n offset = array.length;\n\n while (++index < length) {\n array[offset + index] = values[index];\n }\n return array;\n }\n\n /**\n * A specialized version of `_.reduce` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {*} [accumulator] The initial value.\n * @param {boolean} [initAccum] Specify using the first element of `array` as\n * the initial value.\n * @returns {*} Returns the accumulated value.\n */\n function arrayReduce(array, iteratee, accumulator, initAccum) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n if (initAccum && length) {\n accumulator = array[++index];\n }\n while (++index < length) {\n accumulator = iteratee(accumulator, array[index], index, array);\n }\n return accumulator;\n }\n\n /**\n * A specialized version of `_.reduceRight` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {*} [accumulator] The initial value.\n * @param {boolean} [initAccum] Specify using the last element of `array` as\n * the initial value.\n * @returns {*} Returns the accumulated value.\n */\n function arrayReduceRight(array, iteratee, accumulator, initAccum) {\n var length = array == null ? 0 : array.length;\n if (initAccum && length) {\n accumulator = array[--length];\n }\n while (length--) {\n accumulator = iteratee(accumulator, array[length], length, array);\n }\n return accumulator;\n }\n\n /**\n * A specialized version of `_.some` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {boolean} Returns `true` if any element passes the predicate check,\n * else `false`.\n */\n function arraySome(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (predicate(array[index], index, array)) {\n return true;\n }\n }\n return false;\n }\n\n /**\n * Gets the size of an ASCII `string`.\n *\n * @private\n * @param {string} string The string inspect.\n * @returns {number} Returns the string size.\n */\n var asciiSize = baseProperty('length');\n\n /**\n * Converts an ASCII `string` to an array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the converted array.\n */\n function asciiToArray(string) {\n return string.split('');\n }\n\n /**\n * Splits an ASCII `string` into an array of its words.\n *\n * @private\n * @param {string} The string to inspect.\n * @returns {Array} Returns the words of `string`.\n */\n function asciiWords(string) {\n return string.match(reAsciiWord) || [];\n }\n\n /**\n * The base implementation of methods like `_.findKey` and `_.findLastKey`,\n * without support for iteratee shorthands, which iterates over `collection`\n * using `eachFunc`.\n *\n * @private\n * @param {Array|Object} collection The collection to inspect.\n * @param {Function} predicate The function invoked per iteration.\n * @param {Function} eachFunc The function to iterate over `collection`.\n * @returns {*} Returns the found element or its key, else `undefined`.\n */\n function baseFindKey(collection, predicate, eachFunc) {\n var result;\n eachFunc(collection, function(value, key, collection) {\n if (predicate(value, key, collection)) {\n result = key;\n return false;\n }\n });\n return result;\n }\n\n /**\n * The base implementation of `_.findIndex` and `_.findLastIndex` without\n * support for iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Function} predicate The function invoked per iteration.\n * @param {number} fromIndex The index to search from.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\n function baseFindIndex(array, predicate, fromIndex, fromRight) {\n var length = array.length,\n index = fromIndex + (fromRight ? 1 : -1);\n\n while ((fromRight ? index-- : ++index < length)) {\n if (predicate(array[index], index, array)) {\n return index;\n }\n }\n return -1;\n }\n\n /**\n * The base implementation of `_.indexOf` without `fromIndex` bounds checks.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} fromIndex The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\n function baseIndexOf(array, value, fromIndex) {\n return value === value\n ? strictIndexOf(array, value, fromIndex)\n : baseFindIndex(array, baseIsNaN, fromIndex);\n }\n\n /**\n * This function is like `baseIndexOf` except that it accepts a comparator.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} fromIndex The index to search from.\n * @param {Function} comparator The comparator invoked per element.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\n function baseIndexOfWith(array, value, fromIndex, comparator) {\n var index = fromIndex - 1,\n length = array.length;\n\n while (++index < length) {\n if (comparator(array[index], value)) {\n return index;\n }\n }\n return -1;\n }\n\n /**\n * The base implementation of `_.isNaN` without support for number objects.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is `NaN`, else `false`.\n */\n function baseIsNaN(value) {\n return value !== value;\n }\n\n /**\n * The base implementation of `_.mean` and `_.meanBy` without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {number} Returns the mean.\n */\n function baseMean(array, iteratee) {\n var length = array == null ? 0 : array.length;\n return length ? (baseSum(array, iteratee) / length) : NAN;\n }\n\n /**\n * The base implementation of `_.property` without support for deep paths.\n *\n * @private\n * @param {string} key The key of the property to get.\n * @returns {Function} Returns the new accessor function.\n */\n function baseProperty(key) {\n return function(object) {\n return object == null ? undefined : object[key];\n };\n }\n\n /**\n * The base implementation of `_.propertyOf` without support for deep paths.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Function} Returns the new accessor function.\n */\n function basePropertyOf(object) {\n return function(key) {\n return object == null ? undefined : object[key];\n };\n }\n\n /**\n * The base implementation of `_.reduce` and `_.reduceRight`, without support\n * for iteratee shorthands, which iterates over `collection` using `eachFunc`.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {*} accumulator The initial value.\n * @param {boolean} initAccum Specify using the first or last element of\n * `collection` as the initial value.\n * @param {Function} eachFunc The function to iterate over `collection`.\n * @returns {*} Returns the accumulated value.\n */\n function baseReduce(collection, iteratee, accumulator, initAccum, eachFunc) {\n eachFunc(collection, function(value, index, collection) {\n accumulator = initAccum\n ? (initAccum = false, value)\n : iteratee(accumulator, value, index, collection);\n });\n return accumulator;\n }\n\n /**\n * The base implementation of `_.sortBy` which uses `comparer` to define the\n * sort order of `array` and replaces criteria objects with their corresponding\n * values.\n *\n * @private\n * @param {Array} array The array to sort.\n * @param {Function} comparer The function to define sort order.\n * @returns {Array} Returns `array`.\n */\n function baseSortBy(array, comparer) {\n var length = array.length;\n\n array.sort(comparer);\n while (length--) {\n array[length] = array[length].value;\n }\n return array;\n }\n\n /**\n * The base implementation of `_.sum` and `_.sumBy` without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {number} Returns the sum.\n */\n function baseSum(array, iteratee) {\n var result,\n index = -1,\n length = array.length;\n\n while (++index < length) {\n var current = iteratee(array[index]);\n if (current !== undefined) {\n result = result === undefined ? current : (result + current);\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `_.times` without support for iteratee shorthands\n * or max array length checks.\n *\n * @private\n * @param {number} n The number of times to invoke `iteratee`.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the array of results.\n */\n function baseTimes(n, iteratee) {\n var index = -1,\n result = Array(n);\n\n while (++index < n) {\n result[index] = iteratee(index);\n }\n return result;\n }\n\n /**\n * The base implementation of `_.toPairs` and `_.toPairsIn` which creates an array\n * of key-value pairs for `object` corresponding to the property names of `props`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array} props The property names to get values for.\n * @returns {Object} Returns the key-value pairs.\n */\n function baseToPairs(object, props) {\n return arrayMap(props, function(key) {\n return [key, object[key]];\n });\n }\n\n /**\n * The base implementation of `_.trim`.\n *\n * @private\n * @param {string} string The string to trim.\n * @returns {string} Returns the trimmed string.\n */\n function baseTrim(string) {\n return string\n ? string.slice(0, trimmedEndIndex(string) + 1).replace(reTrimStart, '')\n : string;\n }\n\n /**\n * The base implementation of `_.unary` without support for storing metadata.\n *\n * @private\n * @param {Function} func The function to cap arguments for.\n * @returns {Function} Returns the new capped function.\n */\n function baseUnary(func) {\n return function(value) {\n return func(value);\n };\n }\n\n /**\n * The base implementation of `_.values` and `_.valuesIn` which creates an\n * array of `object` property values corresponding to the property names\n * of `props`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array} props The property names to get values for.\n * @returns {Object} Returns the array of property values.\n */\n function baseValues(object, props) {\n return arrayMap(props, function(key) {\n return object[key];\n });\n }\n\n /**\n * Checks if a `cache` value for `key` exists.\n *\n * @private\n * @param {Object} cache The cache to query.\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\n function cacheHas(cache, key) {\n return cache.has(key);\n }\n\n /**\n * Used by `_.trim` and `_.trimStart` to get the index of the first string symbol\n * that is not found in the character symbols.\n *\n * @private\n * @param {Array} strSymbols The string symbols to inspect.\n * @param {Array} chrSymbols The character symbols to find.\n * @returns {number} Returns the index of the first unmatched string symbol.\n */\n function charsStartIndex(strSymbols, chrSymbols) {\n var index = -1,\n length = strSymbols.length;\n\n while (++index < length && baseIndexOf(chrSymbols, strSymbols[index], 0) > -1) {}\n return index;\n }\n\n /**\n * Used by `_.trim` and `_.trimEnd` to get the index of the last string symbol\n * that is not found in the character symbols.\n *\n * @private\n * @param {Array} strSymbols The string symbols to inspect.\n * @param {Array} chrSymbols The character symbols to find.\n * @returns {number} Returns the index of the last unmatched string symbol.\n */\n function charsEndIndex(strSymbols, chrSymbols) {\n var index = strSymbols.length;\n\n while (index-- && baseIndexOf(chrSymbols, strSymbols[index], 0) > -1) {}\n return index;\n }\n\n /**\n * Gets the number of `placeholder` occurrences in `array`.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} placeholder The placeholder to search for.\n * @returns {number} Returns the placeholder count.\n */\n function countHolders(array, placeholder) {\n var length = array.length,\n result = 0;\n\n while (length--) {\n if (array[length] === placeholder) {\n ++result;\n }\n }\n return result;\n }\n\n /**\n * Used by `_.deburr` to convert Latin-1 Supplement and Latin Extended-A\n * letters to basic Latin letters.\n *\n * @private\n * @param {string} letter The matched letter to deburr.\n * @returns {string} Returns the deburred letter.\n */\n var deburrLetter = basePropertyOf(deburredLetters);\n\n /**\n * Used by `_.escape` to convert characters to HTML entities.\n *\n * @private\n * @param {string} chr The matched character to escape.\n * @returns {string} Returns the escaped character.\n */\n var escapeHtmlChar = basePropertyOf(htmlEscapes);\n\n /**\n * Used by `_.template` to escape characters for inclusion in compiled string literals.\n *\n * @private\n * @param {string} chr The matched character to escape.\n * @returns {string} Returns the escaped character.\n */\n function escapeStringChar(chr) {\n return '\\\\' + stringEscapes[chr];\n }\n\n /**\n * Gets the value at `key` of `object`.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\n function getValue(object, key) {\n return object == null ? undefined : object[key];\n }\n\n /**\n * Checks if `string` contains Unicode symbols.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {boolean} Returns `true` if a symbol is found, else `false`.\n */\n function hasUnicode(string) {\n return reHasUnicode.test(string);\n }\n\n /**\n * Checks if `string` contains a word composed of Unicode symbols.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {boolean} Returns `true` if a word is found, else `false`.\n */\n function hasUnicodeWord(string) {\n return reHasUnicodeWord.test(string);\n }\n\n /**\n * Converts `iterator` to an array.\n *\n * @private\n * @param {Object} iterator The iterator to convert.\n * @returns {Array} Returns the converted array.\n */\n function iteratorToArray(iterator) {\n var data,\n result = [];\n\n while (!(data = iterator.next()).done) {\n result.push(data.value);\n }\n return result;\n }\n\n /**\n * Converts `map` to its key-value pairs.\n *\n * @private\n * @param {Object} map The map to convert.\n * @returns {Array} Returns the key-value pairs.\n */\n function mapToArray(map) {\n var index = -1,\n result = Array(map.size);\n\n map.forEach(function(value, key) {\n result[++index] = [key, value];\n });\n return result;\n }\n\n /**\n * Creates a unary function that invokes `func` with its argument transformed.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {Function} transform The argument transform.\n * @returns {Function} Returns the new function.\n */\n function overArg(func, transform) {\n return function(arg) {\n return func(transform(arg));\n };\n }\n\n /**\n * Replaces all `placeholder` elements in `array` with an internal placeholder\n * and returns an array of their indexes.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {*} placeholder The placeholder to replace.\n * @returns {Array} Returns the new array of placeholder indexes.\n */\n function replaceHolders(array, placeholder) {\n var index = -1,\n length = array.length,\n resIndex = 0,\n result = [];\n\n while (++index < length) {\n var value = array[index];\n if (value === placeholder || value === PLACEHOLDER) {\n array[index] = PLACEHOLDER;\n result[resIndex++] = index;\n }\n }\n return result;\n }\n\n /**\n * Converts `set` to an array of its values.\n *\n * @private\n * @param {Object} set The set to convert.\n * @returns {Array} Returns the values.\n */\n function setToArray(set) {\n var index = -1,\n result = Array(set.size);\n\n set.forEach(function(value) {\n result[++index] = value;\n });\n return result;\n }\n\n /**\n * Converts `set` to its value-value pairs.\n *\n * @private\n * @param {Object} set The set to convert.\n * @returns {Array} Returns the value-value pairs.\n */\n function setToPairs(set) {\n var index = -1,\n result = Array(set.size);\n\n set.forEach(function(value) {\n result[++index] = [value, value];\n });\n return result;\n }\n\n /**\n * A specialized version of `_.indexOf` which performs strict equality\n * comparisons of values, i.e. `===`.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} fromIndex The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\n function strictIndexOf(array, value, fromIndex) {\n var index = fromIndex - 1,\n length = array.length;\n\n while (++index < length) {\n if (array[index] === value) {\n return index;\n }\n }\n return -1;\n }\n\n /**\n * A specialized version of `_.lastIndexOf` which performs strict equality\n * comparisons of values, i.e. `===`.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} fromIndex The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\n function strictLastIndexOf(array, value, fromIndex) {\n var index = fromIndex + 1;\n while (index--) {\n if (array[index] === value) {\n return index;\n }\n }\n return index;\n }\n\n /**\n * Gets the number of symbols in `string`.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {number} Returns the string size.\n */\n function stringSize(string) {\n return hasUnicode(string)\n ? unicodeSize(string)\n : asciiSize(string);\n }\n\n /**\n * Converts `string` to an array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the converted array.\n */\n function stringToArray(string) {\n return hasUnicode(string)\n ? unicodeToArray(string)\n : asciiToArray(string);\n }\n\n /**\n * Used by `_.trim` and `_.trimEnd` to get the index of the last non-whitespace\n * character of `string`.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {number} Returns the index of the last non-whitespace character.\n */\n function trimmedEndIndex(string) {\n var index = string.length;\n\n while (index-- && reWhitespace.test(string.charAt(index))) {}\n return index;\n }\n\n /**\n * Used by `_.unescape` to convert HTML entities to characters.\n *\n * @private\n * @param {string} chr The matched character to unescape.\n * @returns {string} Returns the unescaped character.\n */\n var unescapeHtmlChar = basePropertyOf(htmlUnescapes);\n\n /**\n * Gets the size of a Unicode `string`.\n *\n * @private\n * @param {string} string The string inspect.\n * @returns {number} Returns the string size.\n */\n function unicodeSize(string) {\n var result = reUnicode.lastIndex = 0;\n while (reUnicode.test(string)) {\n ++result;\n }\n return result;\n }\n\n /**\n * Converts a Unicode `string` to an array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the converted array.\n */\n function unicodeToArray(string) {\n return string.match(reUnicode) || [];\n }\n\n /**\n * Splits a Unicode `string` into an array of its words.\n *\n * @private\n * @param {string} The string to inspect.\n * @returns {Array} Returns the words of `string`.\n */\n function unicodeWords(string) {\n return string.match(reUnicodeWord) || [];\n }\n\n /*--------------------------------------------------------------------------*/\n\n /**\n * Create a new pristine `lodash` function using the `context` object.\n *\n * @static\n * @memberOf _\n * @since 1.1.0\n * @category Util\n * @param {Object} [context=root] The context object.\n * @returns {Function} Returns a new `lodash` function.\n * @example\n *\n * _.mixin({ 'foo': _.constant('foo') });\n *\n * var lodash = _.runInContext();\n * lodash.mixin({ 'bar': lodash.constant('bar') });\n *\n * _.isFunction(_.foo);\n * // => true\n * _.isFunction(_.bar);\n * // => false\n *\n * lodash.isFunction(lodash.foo);\n * // => false\n * lodash.isFunction(lodash.bar);\n * // => true\n *\n * // Create a suped-up `defer` in Node.js.\n * var defer = _.runInContext({ 'setTimeout': setImmediate }).defer;\n */\n var runInContext = (function runInContext(context) {\n context = context == null ? root : _.defaults(root.Object(), context, _.pick(root, contextProps));\n\n /** Built-in constructor references. */\n var Array = context.Array,\n Date = context.Date,\n Error = context.Error,\n Function = context.Function,\n Math = context.Math,\n Object = context.Object,\n RegExp = context.RegExp,\n String = context.String,\n TypeError = context.TypeError;\n\n /** Used for built-in method references. */\n var arrayProto = Array.prototype,\n funcProto = Function.prototype,\n objectProto = Object.prototype;\n\n /** Used to detect overreaching core-js shims. */\n var coreJsData = context['__core-js_shared__'];\n\n /** Used to resolve the decompiled source of functions. */\n var funcToString = funcProto.toString;\n\n /** Used to check objects for own properties. */\n var hasOwnProperty = objectProto.hasOwnProperty;\n\n /** Used to generate unique IDs. */\n var idCounter = 0;\n\n /** Used to detect methods masquerading as native. */\n var maskSrcKey = (function() {\n var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');\n return uid ? ('Symbol(src)_1.' + uid) : '';\n }());\n\n /**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\n var nativeObjectToString = objectProto.toString;\n\n /** Used to infer the `Object` constructor. */\n var objectCtorString = funcToString.call(Object);\n\n /** Used to restore the original `_` reference in `_.noConflict`. */\n var oldDash = root._;\n\n /** Used to detect if a method is native. */\n var reIsNative = RegExp('^' +\n funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\\\$&')\n .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$'\n );\n\n /** Built-in value references. */\n var Buffer = moduleExports ? context.Buffer : undefined,\n Symbol = context.Symbol,\n Uint8Array = context.Uint8Array,\n allocUnsafe = Buffer ? Buffer.allocUnsafe : undefined,\n getPrototype = overArg(Object.getPrototypeOf, Object),\n objectCreate = Object.create,\n propertyIsEnumerable = objectProto.propertyIsEnumerable,\n splice = arrayProto.splice,\n spreadableSymbol = Symbol ? Symbol.isConcatSpreadable : undefined,\n symIterator = Symbol ? Symbol.iterator : undefined,\n symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n var defineProperty = (function() {\n try {\n var func = getNative(Object, 'defineProperty');\n func({}, '', {});\n return func;\n } catch (e) {}\n }());\n\n /** Mocked built-ins. */\n var ctxClearTimeout = context.clearTimeout !== root.clearTimeout && context.clearTimeout,\n ctxNow = Date && Date.now !== root.Date.now && Date.now,\n ctxSetTimeout = context.setTimeout !== root.setTimeout && context.setTimeout;\n\n /* Built-in method references for those with the same name as other `lodash` methods. */\n var nativeCeil = Math.ceil,\n nativeFloor = Math.floor,\n nativeGetSymbols = Object.getOwnPropertySymbols,\n nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined,\n nativeIsFinite = context.isFinite,\n nativeJoin = arrayProto.join,\n nativeKeys = overArg(Object.keys, Object),\n nativeMax = Math.max,\n nativeMin = Math.min,\n nativeNow = Date.now,\n nativeParseInt = context.parseInt,\n nativeRandom = Math.random,\n nativeReverse = arrayProto.reverse;\n\n /* Built-in method references that are verified to be native. */\n var DataView = getNative(context, 'DataView'),\n Map = getNative(context, 'Map'),\n Promise = getNative(context, 'Promise'),\n Set = getNative(context, 'Set'),\n WeakMap = getNative(context, 'WeakMap'),\n nativeCreate = getNative(Object, 'create');\n\n /** Used to store function metadata. */\n var metaMap = WeakMap && new WeakMap;\n\n /** Used to lookup unminified function names. */\n var realNames = {};\n\n /** Used to detect maps, sets, and weakmaps. */\n var dataViewCtorString = toSource(DataView),\n mapCtorString = toSource(Map),\n promiseCtorString = toSource(Promise),\n setCtorString = toSource(Set),\n weakMapCtorString = toSource(WeakMap);\n\n /** Used to convert symbols to primitives and strings. */\n var symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolValueOf = symbolProto ? symbolProto.valueOf : undefined,\n symbolToString = symbolProto ? symbolProto.toString : undefined;\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates a `lodash` object which wraps `value` to enable implicit method\n * chain sequences. Methods that operate on and return arrays, collections,\n * and functions can be chained together. Methods that retrieve a single value\n * or may return a primitive value will automatically end the chain sequence\n * and return the unwrapped value. Otherwise, the value must be unwrapped\n * with `_#value`.\n *\n * Explicit chain sequences, which must be unwrapped with `_#value`, may be\n * enabled using `_.chain`.\n *\n * The execution of chained methods is lazy, that is, it's deferred until\n * `_#value` is implicitly or explicitly called.\n *\n * Lazy evaluation allows several methods to support shortcut fusion.\n * Shortcut fusion is an optimization to merge iteratee calls; this avoids\n * the creation of intermediate arrays and can greatly reduce the number of\n * iteratee executions. Sections of a chain sequence qualify for shortcut\n * fusion if the section is applied to an array and iteratees accept only\n * one argument. The heuristic for whether a section qualifies for shortcut\n * fusion is subject to change.\n *\n * Chaining is supported in custom builds as long as the `_#value` method is\n * directly or indirectly included in the build.\n *\n * In addition to lodash methods, wrappers have `Array` and `String` methods.\n *\n * The wrapper `Array` methods are:\n * `concat`, `join`, `pop`, `push`, `shift`, `sort`, `splice`, and `unshift`\n *\n * The wrapper `String` methods are:\n * `replace` and `split`\n *\n * The wrapper methods that support shortcut fusion are:\n * `at`, `compact`, `drop`, `dropRight`, `dropWhile`, `filter`, `find`,\n * `findLast`, `head`, `initial`, `last`, `map`, `reject`, `reverse`, `slice`,\n * `tail`, `take`, `takeRight`, `takeRightWhile`, `takeWhile`, and `toArray`\n *\n * The chainable wrapper methods are:\n * `after`, `ary`, `assign`, `assignIn`, `assignInWith`, `assignWith`, `at`,\n * `before`, `bind`, `bindAll`, `bindKey`, `castArray`, `chain`, `chunk`,\n * `commit`, `compact`, `concat`, `conforms`, `constant`, `countBy`, `create`,\n * `curry`, `debounce`, `defaults`, `defaultsDeep`, `defer`, `delay`,\n * `difference`, `differenceBy`, `differenceWith`, `drop`, `dropRight`,\n * `dropRightWhile`, `dropWhile`, `extend`, `extendWith`, `fill`, `filter`,\n * `flatMap`, `flatMapDeep`, `flatMapDepth`, `flatten`, `flattenDeep`,\n * `flattenDepth`, `flip`, `flow`, `flowRight`, `fromPairs`, `functions`,\n * `functionsIn`, `groupBy`, `initial`, `intersection`, `intersectionBy`,\n * `intersectionWith`, `invert`, `invertBy`, `invokeMap`, `iteratee`, `keyBy`,\n * `keys`, `keysIn`, `map`, `mapKeys`, `mapValues`, `matches`, `matchesProperty`,\n * `memoize`, `merge`, `mergeWith`, `method`, `methodOf`, `mixin`, `negate`,\n * `nthArg`, `omit`, `omitBy`, `once`, `orderBy`, `over`, `overArgs`,\n * `overEvery`, `overSome`, `partial`, `partialRight`, `partition`, `pick`,\n * `pickBy`, `plant`, `property`, `propertyOf`, `pull`, `pullAll`, `pullAllBy`,\n * `pullAllWith`, `pullAt`, `push`, `range`, `rangeRight`, `rearg`, `reject`,\n * `remove`, `rest`, `reverse`, `sampleSize`, `set`, `setWith`, `shuffle`,\n * `slice`, `sort`, `sortBy`, `splice`, `spread`, `tail`, `take`, `takeRight`,\n * `takeRightWhile`, `takeWhile`, `tap`, `throttle`, `thru`, `toArray`,\n * `toPairs`, `toPairsIn`, `toPath`, `toPlainObject`, `transform`, `unary`,\n * `union`, `unionBy`, `unionWith`, `uniq`, `uniqBy`, `uniqWith`, `unset`,\n * `unshift`, `unzip`, `unzipWith`, `update`, `updateWith`, `values`,\n * `valuesIn`, `without`, `wrap`, `xor`, `xorBy`, `xorWith`, `zip`,\n * `zipObject`, `zipObjectDeep`, and `zipWith`\n *\n * The wrapper methods that are **not** chainable by default are:\n * `add`, `attempt`, `camelCase`, `capitalize`, `ceil`, `clamp`, `clone`,\n * `cloneDeep`, `cloneDeepWith`, `cloneWith`, `conformsTo`, `deburr`,\n * `defaultTo`, `divide`, `each`, `eachRight`, `endsWith`, `eq`, `escape`,\n * `escapeRegExp`, `every`, `find`, `findIndex`, `findKey`, `findLast`,\n * `findLastIndex`, `findLastKey`, `first`, `floor`, `forEach`, `forEachRight`,\n * `forIn`, `forInRight`, `forOwn`, `forOwnRight`, `get`, `gt`, `gte`, `has`,\n * `hasIn`, `head`, `identity`, `includes`, `indexOf`, `inRange`, `invoke`,\n * `isArguments`, `isArray`, `isArrayBuffer`, `isArrayLike`, `isArrayLikeObject`,\n * `isBoolean`, `isBuffer`, `isDate`, `isElement`, `isEmpty`, `isEqual`,\n * `isEqualWith`, `isError`, `isFinite`, `isFunction`, `isInteger`, `isLength`,\n * `isMap`, `isMatch`, `isMatchWith`, `isNaN`, `isNative`, `isNil`, `isNull`,\n * `isNumber`, `isObject`, `isObjectLike`, `isPlainObject`, `isRegExp`,\n * `isSafeInteger`, `isSet`, `isString`, `isUndefined`, `isTypedArray`,\n * `isWeakMap`, `isWeakSet`, `join`, `kebabCase`, `last`, `lastIndexOf`,\n * `lowerCase`, `lowerFirst`, `lt`, `lte`, `max`, `maxBy`, `mean`, `meanBy`,\n * `min`, `minBy`, `multiply`, `noConflict`, `noop`, `now`, `nth`, `pad`,\n * `padEnd`, `padStart`, `parseInt`, `pop`, `random`, `reduce`, `reduceRight`,\n * `repeat`, `result`, `round`, `runInContext`, `sample`, `shift`, `size`,\n * `snakeCase`, `some`, `sortedIndex`, `sortedIndexBy`, `sortedLastIndex`,\n * `sortedLastIndexBy`, `startCase`, `startsWith`, `stubArray`, `stubFalse`,\n * `stubObject`, `stubString`, `stubTrue`, `subtract`, `sum`, `sumBy`,\n * `template`, `times`, `toFinite`, `toInteger`, `toJSON`, `toLength`,\n * `toLower`, `toNumber`, `toSafeInteger`, `toString`, `toUpper`, `trim`,\n * `trimEnd`, `trimStart`, `truncate`, `unescape`, `uniqueId`, `upperCase`,\n * `upperFirst`, `value`, and `words`\n *\n * @name _\n * @constructor\n * @category Seq\n * @param {*} value The value to wrap in a `lodash` instance.\n * @returns {Object} Returns the new `lodash` wrapper instance.\n * @example\n *\n * function square(n) {\n * return n * n;\n * }\n *\n * var wrapped = _([1, 2, 3]);\n *\n * // Returns an unwrapped value.\n * wrapped.reduce(_.add);\n * // => 6\n *\n * // Returns a wrapped value.\n * var squares = wrapped.map(square);\n *\n * _.isArray(squares);\n * // => false\n *\n * _.isArray(squares.value());\n * // => true\n */\n function lodash(value) {\n if (isObjectLike(value) && !isArray(value) && !(value instanceof LazyWrapper)) {\n if (value instanceof LodashWrapper) {\n return value;\n }\n if (hasOwnProperty.call(value, '__wrapped__')) {\n return wrapperClone(value);\n }\n }\n return new LodashWrapper(value);\n }\n\n /**\n * The base implementation of `_.create` without support for assigning\n * properties to the created object.\n *\n * @private\n * @param {Object} proto The object to inherit from.\n * @returns {Object} Returns the new object.\n */\n var baseCreate = (function() {\n function object() {}\n return function(proto) {\n if (!isObject(proto)) {\n return {};\n }\n if (objectCreate) {\n return objectCreate(proto);\n }\n object.prototype = proto;\n var result = new object;\n object.prototype = undefined;\n return result;\n };\n }());\n\n /**\n * The function whose prototype chain sequence wrappers inherit from.\n *\n * @private\n */\n function baseLodash() {\n // No operation performed.\n }\n\n /**\n * The base constructor for creating `lodash` wrapper objects.\n *\n * @private\n * @param {*} value The value to wrap.\n * @param {boolean} [chainAll] Enable explicit method chain sequences.\n */\n function LodashWrapper(value, chainAll) {\n this.__wrapped__ = value;\n this.__actions__ = [];\n this.__chain__ = !!chainAll;\n this.__index__ = 0;\n this.__values__ = undefined;\n }\n\n /**\n * By default, the template delimiters used by lodash are like those in\n * embedded Ruby (ERB) as well as ES2015 template strings. Change the\n * following template settings to use alternative delimiters.\n *\n * @static\n * @memberOf _\n * @type {Object}\n */\n lodash.templateSettings = {\n\n /**\n * Used to detect `data` property values to be HTML-escaped.\n *\n * @memberOf _.templateSettings\n * @type {RegExp}\n */\n 'escape': reEscape,\n\n /**\n * Used to detect code to be evaluated.\n *\n * @memberOf _.templateSettings\n * @type {RegExp}\n */\n 'evaluate': reEvaluate,\n\n /**\n * Used to detect `data` property values to inject.\n *\n * @memberOf _.templateSettings\n * @type {RegExp}\n */\n 'interpolate': reInterpolate,\n\n /**\n * Used to reference the data object in the template text.\n *\n * @memberOf _.templateSettings\n * @type {string}\n */\n 'variable': '',\n\n /**\n * Used to import variables into the compiled template.\n *\n * @memberOf _.templateSettings\n * @type {Object}\n */\n 'imports': {\n\n /**\n * A reference to the `lodash` function.\n *\n * @memberOf _.templateSettings.imports\n * @type {Function}\n */\n '_': lodash\n }\n };\n\n // Ensure wrappers are instances of `baseLodash`.\n lodash.prototype = baseLodash.prototype;\n lodash.prototype.constructor = lodash;\n\n LodashWrapper.prototype = baseCreate(baseLodash.prototype);\n LodashWrapper.prototype.constructor = LodashWrapper;\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates a lazy wrapper object which wraps `value` to enable lazy evaluation.\n *\n * @private\n * @constructor\n * @param {*} value The value to wrap.\n */\n function LazyWrapper(value) {\n this.__wrapped__ = value;\n this.__actions__ = [];\n this.__dir__ = 1;\n this.__filtered__ = false;\n this.__iteratees__ = [];\n this.__takeCount__ = MAX_ARRAY_LENGTH;\n this.__views__ = [];\n }\n\n /**\n * Creates a clone of the lazy wrapper object.\n *\n * @private\n * @name clone\n * @memberOf LazyWrapper\n * @returns {Object} Returns the cloned `LazyWrapper` object.\n */\n function lazyClone() {\n var result = new LazyWrapper(this.__wrapped__);\n result.__actions__ = copyArray(this.__actions__);\n result.__dir__ = this.__dir__;\n result.__filtered__ = this.__filtered__;\n result.__iteratees__ = copyArray(this.__iteratees__);\n result.__takeCount__ = this.__takeCount__;\n result.__views__ = copyArray(this.__views__);\n return result;\n }\n\n /**\n * Reverses the direction of lazy iteration.\n *\n * @private\n * @name reverse\n * @memberOf LazyWrapper\n * @returns {Object} Returns the new reversed `LazyWrapper` object.\n */\n function lazyReverse() {\n if (this.__filtered__) {\n var result = new LazyWrapper(this);\n result.__dir__ = -1;\n result.__filtered__ = true;\n } else {\n result = this.clone();\n result.__dir__ *= -1;\n }\n return result;\n }\n\n /**\n * Extracts the unwrapped value from its lazy wrapper.\n *\n * @private\n * @name value\n * @memberOf LazyWrapper\n * @returns {*} Returns the unwrapped value.\n */\n function lazyValue() {\n var array = this.__wrapped__.value(),\n dir = this.__dir__,\n isArr = isArray(array),\n isRight = dir < 0,\n arrLength = isArr ? array.length : 0,\n view = getView(0, arrLength, this.__views__),\n start = view.start,\n end = view.end,\n length = end - start,\n index = isRight ? end : (start - 1),\n iteratees = this.__iteratees__,\n iterLength = iteratees.length,\n resIndex = 0,\n takeCount = nativeMin(length, this.__takeCount__);\n\n if (!isArr || (!isRight && arrLength == length && takeCount == length)) {\n return baseWrapperValue(array, this.__actions__);\n }\n var result = [];\n\n outer:\n while (length-- && resIndex < takeCount) {\n index += dir;\n\n var iterIndex = -1,\n value = array[index];\n\n while (++iterIndex < iterLength) {\n var data = iteratees[iterIndex],\n iteratee = data.iteratee,\n type = data.type,\n computed = iteratee(value);\n\n if (type == LAZY_MAP_FLAG) {\n value = computed;\n } else if (!computed) {\n if (type == LAZY_FILTER_FLAG) {\n continue outer;\n } else {\n break outer;\n }\n }\n }\n result[resIndex++] = value;\n }\n return result;\n }\n\n // Ensure `LazyWrapper` is an instance of `baseLodash`.\n LazyWrapper.prototype = baseCreate(baseLodash.prototype);\n LazyWrapper.prototype.constructor = LazyWrapper;\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates a hash object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\n function Hash(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n }\n\n /**\n * Removes all key-value entries from the hash.\n *\n * @private\n * @name clear\n * @memberOf Hash\n */\n function hashClear() {\n this.__data__ = nativeCreate ? nativeCreate(null) : {};\n this.size = 0;\n }\n\n /**\n * Removes `key` and its value from the hash.\n *\n * @private\n * @name delete\n * @memberOf Hash\n * @param {Object} hash The hash to modify.\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\n function hashDelete(key) {\n var result = this.has(key) && delete this.__data__[key];\n this.size -= result ? 1 : 0;\n return result;\n }\n\n /**\n * Gets the hash value for `key`.\n *\n * @private\n * @name get\n * @memberOf Hash\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\n function hashGet(key) {\n var data = this.__data__;\n if (nativeCreate) {\n var result = data[key];\n return result === HASH_UNDEFINED ? undefined : result;\n }\n return hasOwnProperty.call(data, key) ? data[key] : undefined;\n }\n\n /**\n * Checks if a hash value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Hash\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\n function hashHas(key) {\n var data = this.__data__;\n return nativeCreate ? (data[key] !== undefined) : hasOwnProperty.call(data, key);\n }\n\n /**\n * Sets the hash `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Hash\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the hash instance.\n */\n function hashSet(key, value) {\n var data = this.__data__;\n this.size += this.has(key) ? 0 : 1;\n data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value;\n return this;\n }\n\n // Add methods to `Hash`.\n Hash.prototype.clear = hashClear;\n Hash.prototype['delete'] = hashDelete;\n Hash.prototype.get = hashGet;\n Hash.prototype.has = hashHas;\n Hash.prototype.set = hashSet;\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates an list cache object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\n function ListCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n }\n\n /**\n * Removes all key-value entries from the list cache.\n *\n * @private\n * @name clear\n * @memberOf ListCache\n */\n function listCacheClear() {\n this.__data__ = [];\n this.size = 0;\n }\n\n /**\n * Removes `key` and its value from the list cache.\n *\n * @private\n * @name delete\n * @memberOf ListCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\n function listCacheDelete(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n return false;\n }\n var lastIndex = data.length - 1;\n if (index == lastIndex) {\n data.pop();\n } else {\n splice.call(data, index, 1);\n }\n --this.size;\n return true;\n }\n\n /**\n * Gets the list cache value for `key`.\n *\n * @private\n * @name get\n * @memberOf ListCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\n function listCacheGet(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n return index < 0 ? undefined : data[index][1];\n }\n\n /**\n * Checks if a list cache value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf ListCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\n function listCacheHas(key) {\n return assocIndexOf(this.__data__, key) > -1;\n }\n\n /**\n * Sets the list cache `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf ListCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the list cache instance.\n */\n function listCacheSet(key, value) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n ++this.size;\n data.push([key, value]);\n } else {\n data[index][1] = value;\n }\n return this;\n }\n\n // Add methods to `ListCache`.\n ListCache.prototype.clear = listCacheClear;\n ListCache.prototype['delete'] = listCacheDelete;\n ListCache.prototype.get = listCacheGet;\n ListCache.prototype.has = listCacheHas;\n ListCache.prototype.set = listCacheSet;\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates a map cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\n function MapCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n }\n\n /**\n * Removes all key-value entries from the map.\n *\n * @private\n * @name clear\n * @memberOf MapCache\n */\n function mapCacheClear() {\n this.size = 0;\n this.__data__ = {\n 'hash': new Hash,\n 'map': new (Map || ListCache),\n 'string': new Hash\n };\n }\n\n /**\n * Removes `key` and its value from the map.\n *\n * @private\n * @name delete\n * @memberOf MapCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\n function mapCacheDelete(key) {\n var result = getMapData(this, key)['delete'](key);\n this.size -= result ? 1 : 0;\n return result;\n }\n\n /**\n * Gets the map value for `key`.\n *\n * @private\n * @name get\n * @memberOf MapCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\n function mapCacheGet(key) {\n return getMapData(this, key).get(key);\n }\n\n /**\n * Checks if a map value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf MapCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\n function mapCacheHas(key) {\n return getMapData(this, key).has(key);\n }\n\n /**\n * Sets the map `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf MapCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the map cache instance.\n */\n function mapCacheSet(key, value) {\n var data = getMapData(this, key),\n size = data.size;\n\n data.set(key, value);\n this.size += data.size == size ? 0 : 1;\n return this;\n }\n\n // Add methods to `MapCache`.\n MapCache.prototype.clear = mapCacheClear;\n MapCache.prototype['delete'] = mapCacheDelete;\n MapCache.prototype.get = mapCacheGet;\n MapCache.prototype.has = mapCacheHas;\n MapCache.prototype.set = mapCacheSet;\n\n /*------------------------------------------------------------------------*/\n\n /**\n *\n * Creates an array cache object to store unique values.\n *\n * @private\n * @constructor\n * @param {Array} [values] The values to cache.\n */\n function SetCache(values) {\n var index = -1,\n length = values == null ? 0 : values.length;\n\n this.__data__ = new MapCache;\n while (++index < length) {\n this.add(values[index]);\n }\n }\n\n /**\n * Adds `value` to the array cache.\n *\n * @private\n * @name add\n * @memberOf SetCache\n * @alias push\n * @param {*} value The value to cache.\n * @returns {Object} Returns the cache instance.\n */\n function setCacheAdd(value) {\n this.__data__.set(value, HASH_UNDEFINED);\n return this;\n }\n\n /**\n * Checks if `value` is in the array cache.\n *\n * @private\n * @name has\n * @memberOf SetCache\n * @param {*} value The value to search for.\n * @returns {number} Returns `true` if `value` is found, else `false`.\n */\n function setCacheHas(value) {\n return this.__data__.has(value);\n }\n\n // Add methods to `SetCache`.\n SetCache.prototype.add = SetCache.prototype.push = setCacheAdd;\n SetCache.prototype.has = setCacheHas;\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates a stack cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\n function Stack(entries) {\n var data = this.__data__ = new ListCache(entries);\n this.size = data.size;\n }\n\n /**\n * Removes all key-value entries from the stack.\n *\n * @private\n * @name clear\n * @memberOf Stack\n */\n function stackClear() {\n this.__data__ = new ListCache;\n this.size = 0;\n }\n\n /**\n * Removes `key` and its value from the stack.\n *\n * @private\n * @name delete\n * @memberOf Stack\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\n function stackDelete(key) {\n var data = this.__data__,\n result = data['delete'](key);\n\n this.size = data.size;\n return result;\n }\n\n /**\n * Gets the stack value for `key`.\n *\n * @private\n * @name get\n * @memberOf Stack\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\n function stackGet(key) {\n return this.__data__.get(key);\n }\n\n /**\n * Checks if a stack value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Stack\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\n function stackHas(key) {\n return this.__data__.has(key);\n }\n\n /**\n * Sets the stack `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Stack\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the stack cache instance.\n */\n function stackSet(key, value) {\n var data = this.__data__;\n if (data instanceof ListCache) {\n var pairs = data.__data__;\n if (!Map || (pairs.length < LARGE_ARRAY_SIZE - 1)) {\n pairs.push([key, value]);\n this.size = ++data.size;\n return this;\n }\n data = this.__data__ = new MapCache(pairs);\n }\n data.set(key, value);\n this.size = data.size;\n return this;\n }\n\n // Add methods to `Stack`.\n Stack.prototype.clear = stackClear;\n Stack.prototype['delete'] = stackDelete;\n Stack.prototype.get = stackGet;\n Stack.prototype.has = stackHas;\n Stack.prototype.set = stackSet;\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates an array of the enumerable property names of the array-like `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @param {boolean} inherited Specify returning inherited property names.\n * @returns {Array} Returns the array of property names.\n */\n function arrayLikeKeys(value, inherited) {\n var isArr = isArray(value),\n isArg = !isArr && isArguments(value),\n isBuff = !isArr && !isArg && isBuffer(value),\n isType = !isArr && !isArg && !isBuff && isTypedArray(value),\n skipIndexes = isArr || isArg || isBuff || isType,\n result = skipIndexes ? baseTimes(value.length, String) : [],\n length = result.length;\n\n for (var key in value) {\n if ((inherited || hasOwnProperty.call(value, key)) &&\n !(skipIndexes && (\n // Safari 9 has enumerable `arguments.length` in strict mode.\n key == 'length' ||\n // Node.js 0.10 has enumerable non-index properties on buffers.\n (isBuff && (key == 'offset' || key == 'parent')) ||\n // PhantomJS 2 has enumerable non-index properties on typed arrays.\n (isType && (key == 'buffer' || key == 'byteLength' || key == 'byteOffset')) ||\n // Skip index properties.\n isIndex(key, length)\n ))) {\n result.push(key);\n }\n }\n return result;\n }\n\n /**\n * A specialized version of `_.sample` for arrays.\n *\n * @private\n * @param {Array} array The array to sample.\n * @returns {*} Returns the random element.\n */\n function arraySample(array) {\n var length = array.length;\n return length ? array[baseRandom(0, length - 1)] : undefined;\n }\n\n /**\n * A specialized version of `_.sampleSize` for arrays.\n *\n * @private\n * @param {Array} array The array to sample.\n * @param {number} n The number of elements to sample.\n * @returns {Array} Returns the random elements.\n */\n function arraySampleSize(array, n) {\n return shuffleSelf(copyArray(array), baseClamp(n, 0, array.length));\n }\n\n /**\n * A specialized version of `_.shuffle` for arrays.\n *\n * @private\n * @param {Array} array The array to shuffle.\n * @returns {Array} Returns the new shuffled array.\n */\n function arrayShuffle(array) {\n return shuffleSelf(copyArray(array));\n }\n\n /**\n * This function is like `assignValue` except that it doesn't assign\n * `undefined` values.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\n function assignMergeValue(object, key, value) {\n if ((value !== undefined && !eq(object[key], value)) ||\n (value === undefined && !(key in object))) {\n baseAssignValue(object, key, value);\n }\n }\n\n /**\n * Assigns `value` to `key` of `object` if the existing value is not equivalent\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\n function assignValue(object, key, value) {\n var objValue = object[key];\n if (!(hasOwnProperty.call(object, key) && eq(objValue, value)) ||\n (value === undefined && !(key in object))) {\n baseAssignValue(object, key, value);\n }\n }\n\n /**\n * Gets the index at which the `key` is found in `array` of key-value pairs.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} key The key to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\n function assocIndexOf(array, key) {\n var length = array.length;\n while (length--) {\n if (eq(array[length][0], key)) {\n return length;\n }\n }\n return -1;\n }\n\n /**\n * Aggregates elements of `collection` on `accumulator` with keys transformed\n * by `iteratee` and values set by `setter`.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} setter The function to set `accumulator` values.\n * @param {Function} iteratee The iteratee to transform keys.\n * @param {Object} accumulator The initial aggregated object.\n * @returns {Function} Returns `accumulator`.\n */\n function baseAggregator(collection, setter, iteratee, accumulator) {\n baseEach(collection, function(value, key, collection) {\n setter(accumulator, value, iteratee(value), collection);\n });\n return accumulator;\n }\n\n /**\n * The base implementation of `_.assign` without support for multiple sources\n * or `customizer` functions.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @returns {Object} Returns `object`.\n */\n function baseAssign(object, source) {\n return object && copyObject(source, keys(source), object);\n }\n\n /**\n * The base implementation of `_.assignIn` without support for multiple sources\n * or `customizer` functions.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @returns {Object} Returns `object`.\n */\n function baseAssignIn(object, source) {\n return object && copyObject(source, keysIn(source), object);\n }\n\n /**\n * The base implementation of `assignValue` and `assignMergeValue` without\n * value checks.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\n function baseAssignValue(object, key, value) {\n if (key == '__proto__' && defineProperty) {\n defineProperty(object, key, {\n 'configurable': true,\n 'enumerable': true,\n 'value': value,\n 'writable': true\n });\n } else {\n object[key] = value;\n }\n }\n\n /**\n * The base implementation of `_.at` without support for individual paths.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {string[]} paths The property paths to pick.\n * @returns {Array} Returns the picked elements.\n */\n function baseAt(object, paths) {\n var index = -1,\n length = paths.length,\n result = Array(length),\n skip = object == null;\n\n while (++index < length) {\n result[index] = skip ? undefined : get(object, paths[index]);\n }\n return result;\n }\n\n /**\n * The base implementation of `_.clamp` which doesn't coerce arguments.\n *\n * @private\n * @param {number} number The number to clamp.\n * @param {number} [lower] The lower bound.\n * @param {number} upper The upper bound.\n * @returns {number} Returns the clamped number.\n */\n function baseClamp(number, lower, upper) {\n if (number === number) {\n if (upper !== undefined) {\n number = number <= upper ? number : upper;\n }\n if (lower !== undefined) {\n number = number >= lower ? number : lower;\n }\n }\n return number;\n }\n\n /**\n * The base implementation of `_.clone` and `_.cloneDeep` which tracks\n * traversed objects.\n *\n * @private\n * @param {*} value The value to clone.\n * @param {boolean} bitmask The bitmask flags.\n * 1 - Deep clone\n * 2 - Flatten inherited properties\n * 4 - Clone symbols\n * @param {Function} [customizer] The function to customize cloning.\n * @param {string} [key] The key of `value`.\n * @param {Object} [object] The parent object of `value`.\n * @param {Object} [stack] Tracks traversed objects and their clone counterparts.\n * @returns {*} Returns the cloned value.\n */\n function baseClone(value, bitmask, customizer, key, object, stack) {\n var result,\n isDeep = bitmask & CLONE_DEEP_FLAG,\n isFlat = bitmask & CLONE_FLAT_FLAG,\n isFull = bitmask & CLONE_SYMBOLS_FLAG;\n\n if (customizer) {\n result = object ? customizer(value, key, object, stack) : customizer(value);\n }\n if (result !== undefined) {\n return result;\n }\n if (!isObject(value)) {\n return value;\n }\n var isArr = isArray(value);\n if (isArr) {\n result = initCloneArray(value);\n if (!isDeep) {\n return copyArray(value, result);\n }\n } else {\n var tag = getTag(value),\n isFunc = tag == funcTag || tag == genTag;\n\n if (isBuffer(value)) {\n return cloneBuffer(value, isDeep);\n }\n if (tag == objectTag || tag == argsTag || (isFunc && !object)) {\n result = (isFlat || isFunc) ? {} : initCloneObject(value);\n if (!isDeep) {\n return isFlat\n ? copySymbolsIn(value, baseAssignIn(result, value))\n : copySymbols(value, baseAssign(result, value));\n }\n } else {\n if (!cloneableTags[tag]) {\n return object ? value : {};\n }\n result = initCloneByTag(value, tag, isDeep);\n }\n }\n // Check for circular references and return its corresponding clone.\n stack || (stack = new Stack);\n var stacked = stack.get(value);\n if (stacked) {\n return stacked;\n }\n stack.set(value, result);\n\n if (isSet(value)) {\n value.forEach(function(subValue) {\n result.add(baseClone(subValue, bitmask, customizer, subValue, value, stack));\n });\n } else if (isMap(value)) {\n value.forEach(function(subValue, key) {\n result.set(key, baseClone(subValue, bitmask, customizer, key, value, stack));\n });\n }\n\n var keysFunc = isFull\n ? (isFlat ? getAllKeysIn : getAllKeys)\n : (isFlat ? keysIn : keys);\n\n var props = isArr ? undefined : keysFunc(value);\n arrayEach(props || value, function(subValue, key) {\n if (props) {\n key = subValue;\n subValue = value[key];\n }\n // Recursively populate clone (susceptible to call stack limits).\n assignValue(result, key, baseClone(subValue, bitmask, customizer, key, value, stack));\n });\n return result;\n }\n\n /**\n * The base implementation of `_.conforms` which doesn't clone `source`.\n *\n * @private\n * @param {Object} source The object of property predicates to conform to.\n * @returns {Function} Returns the new spec function.\n */\n function baseConforms(source) {\n var props = keys(source);\n return function(object) {\n return baseConformsTo(object, source, props);\n };\n }\n\n /**\n * The base implementation of `_.conformsTo` which accepts `props` to check.\n *\n * @private\n * @param {Object} object The object to inspect.\n * @param {Object} source The object of property predicates to conform to.\n * @returns {boolean} Returns `true` if `object` conforms, else `false`.\n */\n function baseConformsTo(object, source, props) {\n var length = props.length;\n if (object == null) {\n return !length;\n }\n object = Object(object);\n while (length--) {\n var key = props[length],\n predicate = source[key],\n value = object[key];\n\n if ((value === undefined && !(key in object)) || !predicate(value)) {\n return false;\n }\n }\n return true;\n }\n\n /**\n * The base implementation of `_.delay` and `_.defer` which accepts `args`\n * to provide to `func`.\n *\n * @private\n * @param {Function} func The function to delay.\n * @param {number} wait The number of milliseconds to delay invocation.\n * @param {Array} args The arguments to provide to `func`.\n * @returns {number|Object} Returns the timer id or timeout object.\n */\n function baseDelay(func, wait, args) {\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n return setTimeout(function() { func.apply(undefined, args); }, wait);\n }\n\n /**\n * The base implementation of methods like `_.difference` without support\n * for excluding multiple arrays or iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Array} values The values to exclude.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of filtered values.\n */\n function baseDifference(array, values, iteratee, comparator) {\n var index = -1,\n includes = arrayIncludes,\n isCommon = true,\n length = array.length,\n result = [],\n valuesLength = values.length;\n\n if (!length) {\n return result;\n }\n if (iteratee) {\n values = arrayMap(values, baseUnary(iteratee));\n }\n if (comparator) {\n includes = arrayIncludesWith;\n isCommon = false;\n }\n else if (values.length >= LARGE_ARRAY_SIZE) {\n includes = cacheHas;\n isCommon = false;\n values = new SetCache(values);\n }\n outer:\n while (++index < length) {\n var value = array[index],\n computed = iteratee == null ? value : iteratee(value);\n\n value = (comparator || value !== 0) ? value : 0;\n if (isCommon && computed === computed) {\n var valuesIndex = valuesLength;\n while (valuesIndex--) {\n if (values[valuesIndex] === computed) {\n continue outer;\n }\n }\n result.push(value);\n }\n else if (!includes(values, computed, comparator)) {\n result.push(value);\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `_.forEach` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array|Object} Returns `collection`.\n */\n var baseEach = createBaseEach(baseForOwn);\n\n /**\n * The base implementation of `_.forEachRight` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array|Object} Returns `collection`.\n */\n var baseEachRight = createBaseEach(baseForOwnRight, true);\n\n /**\n * The base implementation of `_.every` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {boolean} Returns `true` if all elements pass the predicate check,\n * else `false`\n */\n function baseEvery(collection, predicate) {\n var result = true;\n baseEach(collection, function(value, index, collection) {\n result = !!predicate(value, index, collection);\n return result;\n });\n return result;\n }\n\n /**\n * The base implementation of methods like `_.max` and `_.min` which accepts a\n * `comparator` to determine the extremum value.\n *\n * @private\n * @param {Array} array The array to iterate over.\n * @param {Function} iteratee The iteratee invoked per iteration.\n * @param {Function} comparator The comparator used to compare values.\n * @returns {*} Returns the extremum value.\n */\n function baseExtremum(array, iteratee, comparator) {\n var index = -1,\n length = array.length;\n\n while (++index < length) {\n var value = array[index],\n current = iteratee(value);\n\n if (current != null && (computed === undefined\n ? (current === current && !isSymbol(current))\n : comparator(current, computed)\n )) {\n var computed = current,\n result = value;\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `_.fill` without an iteratee call guard.\n *\n * @private\n * @param {Array} array The array to fill.\n * @param {*} value The value to fill `array` with.\n * @param {number} [start=0] The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns `array`.\n */\n function baseFill(array, value, start, end) {\n var length = array.length;\n\n start = toInteger(start);\n if (start < 0) {\n start = -start > length ? 0 : (length + start);\n }\n end = (end === undefined || end > length) ? length : toInteger(end);\n if (end < 0) {\n end += length;\n }\n end = start > end ? 0 : toLength(end);\n while (start < end) {\n array[start++] = value;\n }\n return array;\n }\n\n /**\n * The base implementation of `_.filter` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n */\n function baseFilter(collection, predicate) {\n var result = [];\n baseEach(collection, function(value, index, collection) {\n if (predicate(value, index, collection)) {\n result.push(value);\n }\n });\n return result;\n }\n\n /**\n * The base implementation of `_.flatten` with support for restricting flattening.\n *\n * @private\n * @param {Array} array The array to flatten.\n * @param {number} depth The maximum recursion depth.\n * @param {boolean} [predicate=isFlattenable] The function invoked per iteration.\n * @param {boolean} [isStrict] Restrict to values that pass `predicate` checks.\n * @param {Array} [result=[]] The initial result value.\n * @returns {Array} Returns the new flattened array.\n */\n function baseFlatten(array, depth, predicate, isStrict, result) {\n var index = -1,\n length = array.length;\n\n predicate || (predicate = isFlattenable);\n result || (result = []);\n\n while (++index < length) {\n var value = array[index];\n if (depth > 0 && predicate(value)) {\n if (depth > 1) {\n // Recursively flatten arrays (susceptible to call stack limits).\n baseFlatten(value, depth - 1, predicate, isStrict, result);\n } else {\n arrayPush(result, value);\n }\n } else if (!isStrict) {\n result[result.length] = value;\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `baseForOwn` which iterates over `object`\n * properties returned by `keysFunc` and invokes `iteratee` for each property.\n * Iteratee functions may exit iteration early by explicitly returning `false`.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @returns {Object} Returns `object`.\n */\n var baseFor = createBaseFor();\n\n /**\n * This function is like `baseFor` except that it iterates over properties\n * in the opposite order.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @returns {Object} Returns `object`.\n */\n var baseForRight = createBaseFor(true);\n\n /**\n * The base implementation of `_.forOwn` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Object} Returns `object`.\n */\n function baseForOwn(object, iteratee) {\n return object && baseFor(object, iteratee, keys);\n }\n\n /**\n * The base implementation of `_.forOwnRight` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Object} Returns `object`.\n */\n function baseForOwnRight(object, iteratee) {\n return object && baseForRight(object, iteratee, keys);\n }\n\n /**\n * The base implementation of `_.functions` which creates an array of\n * `object` function property names filtered from `props`.\n *\n * @private\n * @param {Object} object The object to inspect.\n * @param {Array} props The property names to filter.\n * @returns {Array} Returns the function names.\n */\n function baseFunctions(object, props) {\n return arrayFilter(props, function(key) {\n return isFunction(object[key]);\n });\n }\n\n /**\n * The base implementation of `_.get` without support for default values.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to get.\n * @returns {*} Returns the resolved value.\n */\n function baseGet(object, path) {\n path = castPath(path, object);\n\n var index = 0,\n length = path.length;\n\n while (object != null && index < length) {\n object = object[toKey(path[index++])];\n }\n return (index && index == length) ? object : undefined;\n }\n\n /**\n * The base implementation of `getAllKeys` and `getAllKeysIn` which uses\n * `keysFunc` and `symbolsFunc` to get the enumerable property names and\n * symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @param {Function} symbolsFunc The function to get the symbols of `object`.\n * @returns {Array} Returns the array of property names and symbols.\n */\n function baseGetAllKeys(object, keysFunc, symbolsFunc) {\n var result = keysFunc(object);\n return isArray(object) ? result : arrayPush(result, symbolsFunc(object));\n }\n\n /**\n * The base implementation of `getTag` without fallbacks for buggy environments.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\n function baseGetTag(value) {\n if (value == null) {\n return value === undefined ? undefinedTag : nullTag;\n }\n return (symToStringTag && symToStringTag in Object(value))\n ? getRawTag(value)\n : objectToString(value);\n }\n\n /**\n * The base implementation of `_.gt` which doesn't coerce arguments.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if `value` is greater than `other`,\n * else `false`.\n */\n function baseGt(value, other) {\n return value > other;\n }\n\n /**\n * The base implementation of `_.has` without support for deep paths.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {Array|string} key The key to check.\n * @returns {boolean} Returns `true` if `key` exists, else `false`.\n */\n function baseHas(object, key) {\n return object != null && hasOwnProperty.call(object, key);\n }\n\n /**\n * The base implementation of `_.hasIn` without support for deep paths.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {Array|string} key The key to check.\n * @returns {boolean} Returns `true` if `key` exists, else `false`.\n */\n function baseHasIn(object, key) {\n return object != null && key in Object(object);\n }\n\n /**\n * The base implementation of `_.inRange` which doesn't coerce arguments.\n *\n * @private\n * @param {number} number The number to check.\n * @param {number} start The start of the range.\n * @param {number} end The end of the range.\n * @returns {boolean} Returns `true` if `number` is in the range, else `false`.\n */\n function baseInRange(number, start, end) {\n return number >= nativeMin(start, end) && number < nativeMax(start, end);\n }\n\n /**\n * The base implementation of methods like `_.intersection`, without support\n * for iteratee shorthands, that accepts an array of arrays to inspect.\n *\n * @private\n * @param {Array} arrays The arrays to inspect.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of shared values.\n */\n function baseIntersection(arrays, iteratee, comparator) {\n var includes = comparator ? arrayIncludesWith : arrayIncludes,\n length = arrays[0].length,\n othLength = arrays.length,\n othIndex = othLength,\n caches = Array(othLength),\n maxLength = Infinity,\n result = [];\n\n while (othIndex--) {\n var array = arrays[othIndex];\n if (othIndex && iteratee) {\n array = arrayMap(array, baseUnary(iteratee));\n }\n maxLength = nativeMin(array.length, maxLength);\n caches[othIndex] = !comparator && (iteratee || (length >= 120 && array.length >= 120))\n ? new SetCache(othIndex && array)\n : undefined;\n }\n array = arrays[0];\n\n var index = -1,\n seen = caches[0];\n\n outer:\n while (++index < length && result.length < maxLength) {\n var value = array[index],\n computed = iteratee ? iteratee(value) : value;\n\n value = (comparator || value !== 0) ? value : 0;\n if (!(seen\n ? cacheHas(seen, computed)\n : includes(result, computed, comparator)\n )) {\n othIndex = othLength;\n while (--othIndex) {\n var cache = caches[othIndex];\n if (!(cache\n ? cacheHas(cache, computed)\n : includes(arrays[othIndex], computed, comparator))\n ) {\n continue outer;\n }\n }\n if (seen) {\n seen.push(computed);\n }\n result.push(value);\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `_.invert` and `_.invertBy` which inverts\n * `object` with values transformed by `iteratee` and set by `setter`.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} setter The function to set `accumulator` values.\n * @param {Function} iteratee The iteratee to transform values.\n * @param {Object} accumulator The initial inverted object.\n * @returns {Function} Returns `accumulator`.\n */\n function baseInverter(object, setter, iteratee, accumulator) {\n baseForOwn(object, function(value, key, object) {\n setter(accumulator, iteratee(value), key, object);\n });\n return accumulator;\n }\n\n /**\n * The base implementation of `_.invoke` without support for individual\n * method arguments.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the method to invoke.\n * @param {Array} args The arguments to invoke the method with.\n * @returns {*} Returns the result of the invoked method.\n */\n function baseInvoke(object, path, args) {\n path = castPath(path, object);\n object = parent(object, path);\n var func = object == null ? object : object[toKey(last(path))];\n return func == null ? undefined : apply(func, object, args);\n }\n\n /**\n * The base implementation of `_.isArguments`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n */\n function baseIsArguments(value) {\n return isObjectLike(value) && baseGetTag(value) == argsTag;\n }\n\n /**\n * The base implementation of `_.isArrayBuffer` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array buffer, else `false`.\n */\n function baseIsArrayBuffer(value) {\n return isObjectLike(value) && baseGetTag(value) == arrayBufferTag;\n }\n\n /**\n * The base implementation of `_.isDate` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a date object, else `false`.\n */\n function baseIsDate(value) {\n return isObjectLike(value) && baseGetTag(value) == dateTag;\n }\n\n /**\n * The base implementation of `_.isEqual` which supports partial comparisons\n * and tracks traversed objects.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @param {boolean} bitmask The bitmask flags.\n * 1 - Unordered comparison\n * 2 - Partial comparison\n * @param {Function} [customizer] The function to customize comparisons.\n * @param {Object} [stack] Tracks traversed `value` and `other` objects.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n */\n function baseIsEqual(value, other, bitmask, customizer, stack) {\n if (value === other) {\n return true;\n }\n if (value == null || other == null || (!isObjectLike(value) && !isObjectLike(other))) {\n return value !== value && other !== other;\n }\n return baseIsEqualDeep(value, other, bitmask, customizer, baseIsEqual, stack);\n }\n\n /**\n * A specialized version of `baseIsEqual` for arrays and objects which performs\n * deep comparisons and tracks traversed objects enabling objects with circular\n * references to be compared.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} [stack] Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\n function baseIsEqualDeep(object, other, bitmask, customizer, equalFunc, stack) {\n var objIsArr = isArray(object),\n othIsArr = isArray(other),\n objTag = objIsArr ? arrayTag : getTag(object),\n othTag = othIsArr ? arrayTag : getTag(other);\n\n objTag = objTag == argsTag ? objectTag : objTag;\n othTag = othTag == argsTag ? objectTag : othTag;\n\n var objIsObj = objTag == objectTag,\n othIsObj = othTag == objectTag,\n isSameTag = objTag == othTag;\n\n if (isSameTag && isBuffer(object)) {\n if (!isBuffer(other)) {\n return false;\n }\n objIsArr = true;\n objIsObj = false;\n }\n if (isSameTag && !objIsObj) {\n stack || (stack = new Stack);\n return (objIsArr || isTypedArray(object))\n ? equalArrays(object, other, bitmask, customizer, equalFunc, stack)\n : equalByTag(object, other, objTag, bitmask, customizer, equalFunc, stack);\n }\n if (!(bitmask & COMPARE_PARTIAL_FLAG)) {\n var objIsWrapped = objIsObj && hasOwnProperty.call(object, '__wrapped__'),\n othIsWrapped = othIsObj && hasOwnProperty.call(other, '__wrapped__');\n\n if (objIsWrapped || othIsWrapped) {\n var objUnwrapped = objIsWrapped ? object.value() : object,\n othUnwrapped = othIsWrapped ? other.value() : other;\n\n stack || (stack = new Stack);\n return equalFunc(objUnwrapped, othUnwrapped, bitmask, customizer, stack);\n }\n }\n if (!isSameTag) {\n return false;\n }\n stack || (stack = new Stack);\n return equalObjects(object, other, bitmask, customizer, equalFunc, stack);\n }\n\n /**\n * The base implementation of `_.isMap` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a map, else `false`.\n */\n function baseIsMap(value) {\n return isObjectLike(value) && getTag(value) == mapTag;\n }\n\n /**\n * The base implementation of `_.isMatch` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The object to inspect.\n * @param {Object} source The object of property values to match.\n * @param {Array} matchData The property names, values, and compare flags to match.\n * @param {Function} [customizer] The function to customize comparisons.\n * @returns {boolean} Returns `true` if `object` is a match, else `false`.\n */\n function baseIsMatch(object, source, matchData, customizer) {\n var index = matchData.length,\n length = index,\n noCustomizer = !customizer;\n\n if (object == null) {\n return !length;\n }\n object = Object(object);\n while (index--) {\n var data = matchData[index];\n if ((noCustomizer && data[2])\n ? data[1] !== object[data[0]]\n : !(data[0] in object)\n ) {\n return false;\n }\n }\n while (++index < length) {\n data = matchData[index];\n var key = data[0],\n objValue = object[key],\n srcValue = data[1];\n\n if (noCustomizer && data[2]) {\n if (objValue === undefined && !(key in object)) {\n return false;\n }\n } else {\n var stack = new Stack;\n if (customizer) {\n var result = customizer(objValue, srcValue, key, object, source, stack);\n }\n if (!(result === undefined\n ? baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG, customizer, stack)\n : result\n )) {\n return false;\n }\n }\n }\n return true;\n }\n\n /**\n * The base implementation of `_.isNative` without bad shim checks.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function,\n * else `false`.\n */\n function baseIsNative(value) {\n if (!isObject(value) || isMasked(value)) {\n return false;\n }\n var pattern = isFunction(value) ? reIsNative : reIsHostCtor;\n return pattern.test(toSource(value));\n }\n\n /**\n * The base implementation of `_.isRegExp` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a regexp, else `false`.\n */\n function baseIsRegExp(value) {\n return isObjectLike(value) && baseGetTag(value) == regexpTag;\n }\n\n /**\n * The base implementation of `_.isSet` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a set, else `false`.\n */\n function baseIsSet(value) {\n return isObjectLike(value) && getTag(value) == setTag;\n }\n\n /**\n * The base implementation of `_.isTypedArray` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n */\n function baseIsTypedArray(value) {\n return isObjectLike(value) &&\n isLength(value.length) && !!typedArrayTags[baseGetTag(value)];\n }\n\n /**\n * The base implementation of `_.iteratee`.\n *\n * @private\n * @param {*} [value=_.identity] The value to convert to an iteratee.\n * @returns {Function} Returns the iteratee.\n */\n function baseIteratee(value) {\n // Don't store the `typeof` result in a variable to avoid a JIT bug in Safari 9.\n // See https://bugs.webkit.org/show_bug.cgi?id=156034 for more details.\n if (typeof value == 'function') {\n return value;\n }\n if (value == null) {\n return identity;\n }\n if (typeof value == 'object') {\n return isArray(value)\n ? baseMatchesProperty(value[0], value[1])\n : baseMatches(value);\n }\n return property(value);\n }\n\n /**\n * The base implementation of `_.keys` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\n function baseKeys(object) {\n if (!isPrototype(object)) {\n return nativeKeys(object);\n }\n var result = [];\n for (var key in Object(object)) {\n if (hasOwnProperty.call(object, key) && key != 'constructor') {\n result.push(key);\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `_.keysIn` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\n function baseKeysIn(object) {\n if (!isObject(object)) {\n return nativeKeysIn(object);\n }\n var isProto = isPrototype(object),\n result = [];\n\n for (var key in object) {\n if (!(key == 'constructor' && (isProto || !hasOwnProperty.call(object, key)))) {\n result.push(key);\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `_.lt` which doesn't coerce arguments.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if `value` is less than `other`,\n * else `false`.\n */\n function baseLt(value, other) {\n return value < other;\n }\n\n /**\n * The base implementation of `_.map` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n */\n function baseMap(collection, iteratee) {\n var index = -1,\n result = isArrayLike(collection) ? Array(collection.length) : [];\n\n baseEach(collection, function(value, key, collection) {\n result[++index] = iteratee(value, key, collection);\n });\n return result;\n }\n\n /**\n * The base implementation of `_.matches` which doesn't clone `source`.\n *\n * @private\n * @param {Object} source The object of property values to match.\n * @returns {Function} Returns the new spec function.\n */\n function baseMatches(source) {\n var matchData = getMatchData(source);\n if (matchData.length == 1 && matchData[0][2]) {\n return matchesStrictComparable(matchData[0][0], matchData[0][1]);\n }\n return function(object) {\n return object === source || baseIsMatch(object, source, matchData);\n };\n }\n\n /**\n * The base implementation of `_.matchesProperty` which doesn't clone `srcValue`.\n *\n * @private\n * @param {string} path The path of the property to get.\n * @param {*} srcValue The value to match.\n * @returns {Function} Returns the new spec function.\n */\n function baseMatchesProperty(path, srcValue) {\n if (isKey(path) && isStrictComparable(srcValue)) {\n return matchesStrictComparable(toKey(path), srcValue);\n }\n return function(object) {\n var objValue = get(object, path);\n return (objValue === undefined && objValue === srcValue)\n ? hasIn(object, path)\n : baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG);\n };\n }\n\n /**\n * The base implementation of `_.merge` without support for multiple sources.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @param {number} srcIndex The index of `source`.\n * @param {Function} [customizer] The function to customize merged values.\n * @param {Object} [stack] Tracks traversed source values and their merged\n * counterparts.\n */\n function baseMerge(object, source, srcIndex, customizer, stack) {\n if (object === source) {\n return;\n }\n baseFor(source, function(srcValue, key) {\n stack || (stack = new Stack);\n if (isObject(srcValue)) {\n baseMergeDeep(object, source, key, srcIndex, baseMerge, customizer, stack);\n }\n else {\n var newValue = customizer\n ? customizer(safeGet(object, key), srcValue, (key + ''), object, source, stack)\n : undefined;\n\n if (newValue === undefined) {\n newValue = srcValue;\n }\n assignMergeValue(object, key, newValue);\n }\n }, keysIn);\n }\n\n /**\n * A specialized version of `baseMerge` for arrays and objects which performs\n * deep merges and tracks traversed objects enabling objects with circular\n * references to be merged.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @param {string} key The key of the value to merge.\n * @param {number} srcIndex The index of `source`.\n * @param {Function} mergeFunc The function to merge values.\n * @param {Function} [customizer] The function to customize assigned values.\n * @param {Object} [stack] Tracks traversed source values and their merged\n * counterparts.\n */\n function baseMergeDeep(object, source, key, srcIndex, mergeFunc, customizer, stack) {\n var objValue = safeGet(object, key),\n srcValue = safeGet(source, key),\n stacked = stack.get(srcValue);\n\n if (stacked) {\n assignMergeValue(object, key, stacked);\n return;\n }\n var newValue = customizer\n ? customizer(objValue, srcValue, (key + ''), object, source, stack)\n : undefined;\n\n var isCommon = newValue === undefined;\n\n if (isCommon) {\n var isArr = isArray(srcValue),\n isBuff = !isArr && isBuffer(srcValue),\n isTyped = !isArr && !isBuff && isTypedArray(srcValue);\n\n newValue = srcValue;\n if (isArr || isBuff || isTyped) {\n if (isArray(objValue)) {\n newValue = objValue;\n }\n else if (isArrayLikeObject(objValue)) {\n newValue = copyArray(objValue);\n }\n else if (isBuff) {\n isCommon = false;\n newValue = cloneBuffer(srcValue, true);\n }\n else if (isTyped) {\n isCommon = false;\n newValue = cloneTypedArray(srcValue, true);\n }\n else {\n newValue = [];\n }\n }\n else if (isPlainObject(srcValue) || isArguments(srcValue)) {\n newValue = objValue;\n if (isArguments(objValue)) {\n newValue = toPlainObject(objValue);\n }\n else if (!isObject(objValue) || isFunction(objValue)) {\n newValue = initCloneObject(srcValue);\n }\n }\n else {\n isCommon = false;\n }\n }\n if (isCommon) {\n // Recursively merge objects and arrays (susceptible to call stack limits).\n stack.set(srcValue, newValue);\n mergeFunc(newValue, srcValue, srcIndex, customizer, stack);\n stack['delete'](srcValue);\n }\n assignMergeValue(object, key, newValue);\n }\n\n /**\n * The base implementation of `_.nth` which doesn't coerce arguments.\n *\n * @private\n * @param {Array} array The array to query.\n * @param {number} n The index of the element to return.\n * @returns {*} Returns the nth element of `array`.\n */\n function baseNth(array, n) {\n var length = array.length;\n if (!length) {\n return;\n }\n n += n < 0 ? length : 0;\n return isIndex(n, length) ? array[n] : undefined;\n }\n\n /**\n * The base implementation of `_.orderBy` without param guards.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function[]|Object[]|string[]} iteratees The iteratees to sort by.\n * @param {string[]} orders The sort orders of `iteratees`.\n * @returns {Array} Returns the new sorted array.\n */\n function baseOrderBy(collection, iteratees, orders) {\n if (iteratees.length) {\n iteratees = arrayMap(iteratees, function(iteratee) {\n if (isArray(iteratee)) {\n return function(value) {\n return baseGet(value, iteratee.length === 1 ? iteratee[0] : iteratee);\n }\n }\n return iteratee;\n });\n } else {\n iteratees = [identity];\n }\n\n var index = -1;\n iteratees = arrayMap(iteratees, baseUnary(getIteratee()));\n\n var result = baseMap(collection, function(value, key, collection) {\n var criteria = arrayMap(iteratees, function(iteratee) {\n return iteratee(value);\n });\n return { 'criteria': criteria, 'index': ++index, 'value': value };\n });\n\n return baseSortBy(result, function(object, other) {\n return compareMultiple(object, other, orders);\n });\n }\n\n /**\n * The base implementation of `_.pick` without support for individual\n * property identifiers.\n *\n * @private\n * @param {Object} object The source object.\n * @param {string[]} paths The property paths to pick.\n * @returns {Object} Returns the new object.\n */\n function basePick(object, paths) {\n return basePickBy(object, paths, function(value, path) {\n return hasIn(object, path);\n });\n }\n\n /**\n * The base implementation of `_.pickBy` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The source object.\n * @param {string[]} paths The property paths to pick.\n * @param {Function} predicate The function invoked per property.\n * @returns {Object} Returns the new object.\n */\n function basePickBy(object, paths, predicate) {\n var index = -1,\n length = paths.length,\n result = {};\n\n while (++index < length) {\n var path = paths[index],\n value = baseGet(object, path);\n\n if (predicate(value, path)) {\n baseSet(result, castPath(path, object), value);\n }\n }\n return result;\n }\n\n /**\n * A specialized version of `baseProperty` which supports deep paths.\n *\n * @private\n * @param {Array|string} path The path of the property to get.\n * @returns {Function} Returns the new accessor function.\n */\n function basePropertyDeep(path) {\n return function(object) {\n return baseGet(object, path);\n };\n }\n\n /**\n * The base implementation of `_.pullAllBy` without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {Array} values The values to remove.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns `array`.\n */\n function basePullAll(array, values, iteratee, comparator) {\n var indexOf = comparator ? baseIndexOfWith : baseIndexOf,\n index = -1,\n length = values.length,\n seen = array;\n\n if (array === values) {\n values = copyArray(values);\n }\n if (iteratee) {\n seen = arrayMap(array, baseUnary(iteratee));\n }\n while (++index < length) {\n var fromIndex = 0,\n value = values[index],\n computed = iteratee ? iteratee(value) : value;\n\n while ((fromIndex = indexOf(seen, computed, fromIndex, comparator)) > -1) {\n if (seen !== array) {\n splice.call(seen, fromIndex, 1);\n }\n splice.call(array, fromIndex, 1);\n }\n }\n return array;\n }\n\n /**\n * The base implementation of `_.pullAt` without support for individual\n * indexes or capturing the removed elements.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {number[]} indexes The indexes of elements to remove.\n * @returns {Array} Returns `array`.\n */\n function basePullAt(array, indexes) {\n var length = array ? indexes.length : 0,\n lastIndex = length - 1;\n\n while (length--) {\n var index = indexes[length];\n if (length == lastIndex || index !== previous) {\n var previous = index;\n if (isIndex(index)) {\n splice.call(array, index, 1);\n } else {\n baseUnset(array, index);\n }\n }\n }\n return array;\n }\n\n /**\n * The base implementation of `_.random` without support for returning\n * floating-point numbers.\n *\n * @private\n * @param {number} lower The lower bound.\n * @param {number} upper The upper bound.\n * @returns {number} Returns the random number.\n */\n function baseRandom(lower, upper) {\n return lower + nativeFloor(nativeRandom() * (upper - lower + 1));\n }\n\n /**\n * The base implementation of `_.range` and `_.rangeRight` which doesn't\n * coerce arguments.\n *\n * @private\n * @param {number} start The start of the range.\n * @param {number} end The end of the range.\n * @param {number} step The value to increment or decrement by.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Array} Returns the range of numbers.\n */\n function baseRange(start, end, step, fromRight) {\n var index = -1,\n length = nativeMax(nativeCeil((end - start) / (step || 1)), 0),\n result = Array(length);\n\n while (length--) {\n result[fromRight ? length : ++index] = start;\n start += step;\n }\n return result;\n }\n\n /**\n * The base implementation of `_.repeat` which doesn't coerce arguments.\n *\n * @private\n * @param {string} string The string to repeat.\n * @param {number} n The number of times to repeat the string.\n * @returns {string} Returns the repeated string.\n */\n function baseRepeat(string, n) {\n var result = '';\n if (!string || n < 1 || n > MAX_SAFE_INTEGER) {\n return result;\n }\n // Leverage the exponentiation by squaring algorithm for a faster repeat.\n // See https://en.wikipedia.org/wiki/Exponentiation_by_squaring for more details.\n do {\n if (n % 2) {\n result += string;\n }\n n = nativeFloor(n / 2);\n if (n) {\n string += string;\n }\n } while (n);\n\n return result;\n }\n\n /**\n * The base implementation of `_.rest` which doesn't validate or coerce arguments.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @returns {Function} Returns the new function.\n */\n function baseRest(func, start) {\n return setToString(overRest(func, start, identity), func + '');\n }\n\n /**\n * The base implementation of `_.sample`.\n *\n * @private\n * @param {Array|Object} collection The collection to sample.\n * @returns {*} Returns the random element.\n */\n function baseSample(collection) {\n return arraySample(values(collection));\n }\n\n /**\n * The base implementation of `_.sampleSize` without param guards.\n *\n * @private\n * @param {Array|Object} collection The collection to sample.\n * @param {number} n The number of elements to sample.\n * @returns {Array} Returns the random elements.\n */\n function baseSampleSize(collection, n) {\n var array = values(collection);\n return shuffleSelf(array, baseClamp(n, 0, array.length));\n }\n\n /**\n * The base implementation of `_.set`.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to set.\n * @param {*} value The value to set.\n * @param {Function} [customizer] The function to customize path creation.\n * @returns {Object} Returns `object`.\n */\n function baseSet(object, path, value, customizer) {\n if (!isObject(object)) {\n return object;\n }\n path = castPath(path, object);\n\n var index = -1,\n length = path.length,\n lastIndex = length - 1,\n nested = object;\n\n while (nested != null && ++index < length) {\n var key = toKey(path[index]),\n newValue = value;\n\n if (key === '__proto__' || key === 'constructor' || key === 'prototype') {\n return object;\n }\n\n if (index != lastIndex) {\n var objValue = nested[key];\n newValue = customizer ? customizer(objValue, key, nested) : undefined;\n if (newValue === undefined) {\n newValue = isObject(objValue)\n ? objValue\n : (isIndex(path[index + 1]) ? [] : {});\n }\n }\n assignValue(nested, key, newValue);\n nested = nested[key];\n }\n return object;\n }\n\n /**\n * The base implementation of `setData` without support for hot loop shorting.\n *\n * @private\n * @param {Function} func The function to associate metadata with.\n * @param {*} data The metadata.\n * @returns {Function} Returns `func`.\n */\n var baseSetData = !metaMap ? identity : function(func, data) {\n metaMap.set(func, data);\n return func;\n };\n\n /**\n * The base implementation of `setToString` without support for hot loop shorting.\n *\n * @private\n * @param {Function} func The function to modify.\n * @param {Function} string The `toString` result.\n * @returns {Function} Returns `func`.\n */\n var baseSetToString = !defineProperty ? identity : function(func, string) {\n return defineProperty(func, 'toString', {\n 'configurable': true,\n 'enumerable': false,\n 'value': constant(string),\n 'writable': true\n });\n };\n\n /**\n * The base implementation of `_.shuffle`.\n *\n * @private\n * @param {Array|Object} collection The collection to shuffle.\n * @returns {Array} Returns the new shuffled array.\n */\n function baseShuffle(collection) {\n return shuffleSelf(values(collection));\n }\n\n /**\n * The base implementation of `_.slice` without an iteratee call guard.\n *\n * @private\n * @param {Array} array The array to slice.\n * @param {number} [start=0] The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns the slice of `array`.\n */\n function baseSlice(array, start, end) {\n var index = -1,\n length = array.length;\n\n if (start < 0) {\n start = -start > length ? 0 : (length + start);\n }\n end = end > length ? length : end;\n if (end < 0) {\n end += length;\n }\n length = start > end ? 0 : ((end - start) >>> 0);\n start >>>= 0;\n\n var result = Array(length);\n while (++index < length) {\n result[index] = array[index + start];\n }\n return result;\n }\n\n /**\n * The base implementation of `_.some` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {boolean} Returns `true` if any element passes the predicate check,\n * else `false`.\n */\n function baseSome(collection, predicate) {\n var result;\n\n baseEach(collection, function(value, index, collection) {\n result = predicate(value, index, collection);\n return !result;\n });\n return !!result;\n }\n\n /**\n * The base implementation of `_.sortedIndex` and `_.sortedLastIndex` which\n * performs a binary search of `array` to determine the index at which `value`\n * should be inserted into `array` in order to maintain its sort order.\n *\n * @private\n * @param {Array} array The sorted array to inspect.\n * @param {*} value The value to evaluate.\n * @param {boolean} [retHighest] Specify returning the highest qualified index.\n * @returns {number} Returns the index at which `value` should be inserted\n * into `array`.\n */\n function baseSortedIndex(array, value, retHighest) {\n var low = 0,\n high = array == null ? low : array.length;\n\n if (typeof value == 'number' && value === value && high <= HALF_MAX_ARRAY_LENGTH) {\n while (low < high) {\n var mid = (low + high) >>> 1,\n computed = array[mid];\n\n if (computed !== null && !isSymbol(computed) &&\n (retHighest ? (computed <= value) : (computed < value))) {\n low = mid + 1;\n } else {\n high = mid;\n }\n }\n return high;\n }\n return baseSortedIndexBy(array, value, identity, retHighest);\n }\n\n /**\n * The base implementation of `_.sortedIndexBy` and `_.sortedLastIndexBy`\n * which invokes `iteratee` for `value` and each element of `array` to compute\n * their sort ranking. The iteratee is invoked with one argument; (value).\n *\n * @private\n * @param {Array} array The sorted array to inspect.\n * @param {*} value The value to evaluate.\n * @param {Function} iteratee The iteratee invoked per element.\n * @param {boolean} [retHighest] Specify returning the highest qualified index.\n * @returns {number} Returns the index at which `value` should be inserted\n * into `array`.\n */\n function baseSortedIndexBy(array, value, iteratee, retHighest) {\n var low = 0,\n high = array == null ? 0 : array.length;\n if (high === 0) {\n return 0;\n }\n\n value = iteratee(value);\n var valIsNaN = value !== value,\n valIsNull = value === null,\n valIsSymbol = isSymbol(value),\n valIsUndefined = value === undefined;\n\n while (low < high) {\n var mid = nativeFloor((low + high) / 2),\n computed = iteratee(array[mid]),\n othIsDefined = computed !== undefined,\n othIsNull = computed === null,\n othIsReflexive = computed === computed,\n othIsSymbol = isSymbol(computed);\n\n if (valIsNaN) {\n var setLow = retHighest || othIsReflexive;\n } else if (valIsUndefined) {\n setLow = othIsReflexive && (retHighest || othIsDefined);\n } else if (valIsNull) {\n setLow = othIsReflexive && othIsDefined && (retHighest || !othIsNull);\n } else if (valIsSymbol) {\n setLow = othIsReflexive && othIsDefined && !othIsNull && (retHighest || !othIsSymbol);\n } else if (othIsNull || othIsSymbol) {\n setLow = false;\n } else {\n setLow = retHighest ? (computed <= value) : (computed < value);\n }\n if (setLow) {\n low = mid + 1;\n } else {\n high = mid;\n }\n }\n return nativeMin(high, MAX_ARRAY_INDEX);\n }\n\n /**\n * The base implementation of `_.sortedUniq` and `_.sortedUniqBy` without\n * support for iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @returns {Array} Returns the new duplicate free array.\n */\n function baseSortedUniq(array, iteratee) {\n var index = -1,\n length = array.length,\n resIndex = 0,\n result = [];\n\n while (++index < length) {\n var value = array[index],\n computed = iteratee ? iteratee(value) : value;\n\n if (!index || !eq(computed, seen)) {\n var seen = computed;\n result[resIndex++] = value === 0 ? 0 : value;\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `_.toNumber` which doesn't ensure correct\n * conversions of binary, hexadecimal, or octal string values.\n *\n * @private\n * @param {*} value The value to process.\n * @returns {number} Returns the number.\n */\n function baseToNumber(value) {\n if (typeof value == 'number') {\n return value;\n }\n if (isSymbol(value)) {\n return NAN;\n }\n return +value;\n }\n\n /**\n * The base implementation of `_.toString` which doesn't convert nullish\n * values to empty strings.\n *\n * @private\n * @param {*} value The value to process.\n * @returns {string} Returns the string.\n */\n function baseToString(value) {\n // Exit early for strings to avoid a performance hit in some environments.\n if (typeof value == 'string') {\n return value;\n }\n if (isArray(value)) {\n // Recursively convert values (susceptible to call stack limits).\n return arrayMap(value, baseToString) + '';\n }\n if (isSymbol(value)) {\n return symbolToString ? symbolToString.call(value) : '';\n }\n var result = (value + '');\n return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n }\n\n /**\n * The base implementation of `_.uniqBy` without support for iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new duplicate free array.\n */\n function baseUniq(array, iteratee, comparator) {\n var index = -1,\n includes = arrayIncludes,\n length = array.length,\n isCommon = true,\n result = [],\n seen = result;\n\n if (comparator) {\n isCommon = false;\n includes = arrayIncludesWith;\n }\n else if (length >= LARGE_ARRAY_SIZE) {\n var set = iteratee ? null : createSet(array);\n if (set) {\n return setToArray(set);\n }\n isCommon = false;\n includes = cacheHas;\n seen = new SetCache;\n }\n else {\n seen = iteratee ? [] : result;\n }\n outer:\n while (++index < length) {\n var value = array[index],\n computed = iteratee ? iteratee(value) : value;\n\n value = (comparator || value !== 0) ? value : 0;\n if (isCommon && computed === computed) {\n var seenIndex = seen.length;\n while (seenIndex--) {\n if (seen[seenIndex] === computed) {\n continue outer;\n }\n }\n if (iteratee) {\n seen.push(computed);\n }\n result.push(value);\n }\n else if (!includes(seen, computed, comparator)) {\n if (seen !== result) {\n seen.push(computed);\n }\n result.push(value);\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `_.unset`.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {Array|string} path The property path to unset.\n * @returns {boolean} Returns `true` if the property is deleted, else `false`.\n */\n function baseUnset(object, path) {\n path = castPath(path, object);\n object = parent(object, path);\n return object == null || delete object[toKey(last(path))];\n }\n\n /**\n * The base implementation of `_.update`.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to update.\n * @param {Function} updater The function to produce the updated value.\n * @param {Function} [customizer] The function to customize path creation.\n * @returns {Object} Returns `object`.\n */\n function baseUpdate(object, path, updater, customizer) {\n return baseSet(object, path, updater(baseGet(object, path)), customizer);\n }\n\n /**\n * The base implementation of methods like `_.dropWhile` and `_.takeWhile`\n * without support for iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to query.\n * @param {Function} predicate The function invoked per iteration.\n * @param {boolean} [isDrop] Specify dropping elements instead of taking them.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Array} Returns the slice of `array`.\n */\n function baseWhile(array, predicate, isDrop, fromRight) {\n var length = array.length,\n index = fromRight ? length : -1;\n\n while ((fromRight ? index-- : ++index < length) &&\n predicate(array[index], index, array)) {}\n\n return isDrop\n ? baseSlice(array, (fromRight ? 0 : index), (fromRight ? index + 1 : length))\n : baseSlice(array, (fromRight ? index + 1 : 0), (fromRight ? length : index));\n }\n\n /**\n * The base implementation of `wrapperValue` which returns the result of\n * performing a sequence of actions on the unwrapped `value`, where each\n * successive action is supplied the return value of the previous.\n *\n * @private\n * @param {*} value The unwrapped value.\n * @param {Array} actions Actions to perform to resolve the unwrapped value.\n * @returns {*} Returns the resolved value.\n */\n function baseWrapperValue(value, actions) {\n var result = value;\n if (result instanceof LazyWrapper) {\n result = result.value();\n }\n return arrayReduce(actions, function(result, action) {\n return action.func.apply(action.thisArg, arrayPush([result], action.args));\n }, result);\n }\n\n /**\n * The base implementation of methods like `_.xor`, without support for\n * iteratee shorthands, that accepts an array of arrays to inspect.\n *\n * @private\n * @param {Array} arrays The arrays to inspect.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of values.\n */\n function baseXor(arrays, iteratee, comparator) {\n var length = arrays.length;\n if (length < 2) {\n return length ? baseUniq(arrays[0]) : [];\n }\n var index = -1,\n result = Array(length);\n\n while (++index < length) {\n var array = arrays[index],\n othIndex = -1;\n\n while (++othIndex < length) {\n if (othIndex != index) {\n result[index] = baseDifference(result[index] || array, arrays[othIndex], iteratee, comparator);\n }\n }\n }\n return baseUniq(baseFlatten(result, 1), iteratee, comparator);\n }\n\n /**\n * This base implementation of `_.zipObject` which assigns values using `assignFunc`.\n *\n * @private\n * @param {Array} props The property identifiers.\n * @param {Array} values The property values.\n * @param {Function} assignFunc The function to assign values.\n * @returns {Object} Returns the new object.\n */\n function baseZipObject(props, values, assignFunc) {\n var index = -1,\n length = props.length,\n valsLength = values.length,\n result = {};\n\n while (++index < length) {\n var value = index < valsLength ? values[index] : undefined;\n assignFunc(result, props[index], value);\n }\n return result;\n }\n\n /**\n * Casts `value` to an empty array if it's not an array like object.\n *\n * @private\n * @param {*} value The value to inspect.\n * @returns {Array|Object} Returns the cast array-like object.\n */\n function castArrayLikeObject(value) {\n return isArrayLikeObject(value) ? value : [];\n }\n\n /**\n * Casts `value` to `identity` if it's not a function.\n *\n * @private\n * @param {*} value The value to inspect.\n * @returns {Function} Returns cast function.\n */\n function castFunction(value) {\n return typeof value == 'function' ? value : identity;\n }\n\n /**\n * Casts `value` to a path array if it's not one.\n *\n * @private\n * @param {*} value The value to inspect.\n * @param {Object} [object] The object to query keys on.\n * @returns {Array} Returns the cast property path array.\n */\n function castPath(value, object) {\n if (isArray(value)) {\n return value;\n }\n return isKey(value, object) ? [value] : stringToPath(toString(value));\n }\n\n /**\n * A `baseRest` alias which can be replaced with `identity` by module\n * replacement plugins.\n *\n * @private\n * @type {Function}\n * @param {Function} func The function to apply a rest parameter to.\n * @returns {Function} Returns the new function.\n */\n var castRest = baseRest;\n\n /**\n * Casts `array` to a slice if it's needed.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {number} start The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns the cast slice.\n */\n function castSlice(array, start, end) {\n var length = array.length;\n end = end === undefined ? length : end;\n return (!start && end >= length) ? array : baseSlice(array, start, end);\n }\n\n /**\n * A simple wrapper around the global [`clearTimeout`](https://mdn.io/clearTimeout).\n *\n * @private\n * @param {number|Object} id The timer id or timeout object of the timer to clear.\n */\n var clearTimeout = ctxClearTimeout || function(id) {\n return root.clearTimeout(id);\n };\n\n /**\n * Creates a clone of `buffer`.\n *\n * @private\n * @param {Buffer} buffer The buffer to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Buffer} Returns the cloned buffer.\n */\n function cloneBuffer(buffer, isDeep) {\n if (isDeep) {\n return buffer.slice();\n }\n var length = buffer.length,\n result = allocUnsafe ? allocUnsafe(length) : new buffer.constructor(length);\n\n buffer.copy(result);\n return result;\n }\n\n /**\n * Creates a clone of `arrayBuffer`.\n *\n * @private\n * @param {ArrayBuffer} arrayBuffer The array buffer to clone.\n * @returns {ArrayBuffer} Returns the cloned array buffer.\n */\n function cloneArrayBuffer(arrayBuffer) {\n var result = new arrayBuffer.constructor(arrayBuffer.byteLength);\n new Uint8Array(result).set(new Uint8Array(arrayBuffer));\n return result;\n }\n\n /**\n * Creates a clone of `dataView`.\n *\n * @private\n * @param {Object} dataView The data view to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned data view.\n */\n function cloneDataView(dataView, isDeep) {\n var buffer = isDeep ? cloneArrayBuffer(dataView.buffer) : dataView.buffer;\n return new dataView.constructor(buffer, dataView.byteOffset, dataView.byteLength);\n }\n\n /**\n * Creates a clone of `regexp`.\n *\n * @private\n * @param {Object} regexp The regexp to clone.\n * @returns {Object} Returns the cloned regexp.\n */\n function cloneRegExp(regexp) {\n var result = new regexp.constructor(regexp.source, reFlags.exec(regexp));\n result.lastIndex = regexp.lastIndex;\n return result;\n }\n\n /**\n * Creates a clone of the `symbol` object.\n *\n * @private\n * @param {Object} symbol The symbol object to clone.\n * @returns {Object} Returns the cloned symbol object.\n */\n function cloneSymbol(symbol) {\n return symbolValueOf ? Object(symbolValueOf.call(symbol)) : {};\n }\n\n /**\n * Creates a clone of `typedArray`.\n *\n * @private\n * @param {Object} typedArray The typed array to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned typed array.\n */\n function cloneTypedArray(typedArray, isDeep) {\n var buffer = isDeep ? cloneArrayBuffer(typedArray.buffer) : typedArray.buffer;\n return new typedArray.constructor(buffer, typedArray.byteOffset, typedArray.length);\n }\n\n /**\n * Compares values to sort them in ascending order.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {number} Returns the sort order indicator for `value`.\n */\n function compareAscending(value, other) {\n if (value !== other) {\n var valIsDefined = value !== undefined,\n valIsNull = value === null,\n valIsReflexive = value === value,\n valIsSymbol = isSymbol(value);\n\n var othIsDefined = other !== undefined,\n othIsNull = other === null,\n othIsReflexive = other === other,\n othIsSymbol = isSymbol(other);\n\n if ((!othIsNull && !othIsSymbol && !valIsSymbol && value > other) ||\n (valIsSymbol && othIsDefined && othIsReflexive && !othIsNull && !othIsSymbol) ||\n (valIsNull && othIsDefined && othIsReflexive) ||\n (!valIsDefined && othIsReflexive) ||\n !valIsReflexive) {\n return 1;\n }\n if ((!valIsNull && !valIsSymbol && !othIsSymbol && value < other) ||\n (othIsSymbol && valIsDefined && valIsReflexive && !valIsNull && !valIsSymbol) ||\n (othIsNull && valIsDefined && valIsReflexive) ||\n (!othIsDefined && valIsReflexive) ||\n !othIsReflexive) {\n return -1;\n }\n }\n return 0;\n }\n\n /**\n * Used by `_.orderBy` to compare multiple properties of a value to another\n * and stable sort them.\n *\n * If `orders` is unspecified, all values are sorted in ascending order. Otherwise,\n * specify an order of \"desc\" for descending or \"asc\" for ascending sort order\n * of corresponding values.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {boolean[]|string[]} orders The order to sort by for each property.\n * @returns {number} Returns the sort order indicator for `object`.\n */\n function compareMultiple(object, other, orders) {\n var index = -1,\n objCriteria = object.criteria,\n othCriteria = other.criteria,\n length = objCriteria.length,\n ordersLength = orders.length;\n\n while (++index < length) {\n var result = compareAscending(objCriteria[index], othCriteria[index]);\n if (result) {\n if (index >= ordersLength) {\n return result;\n }\n var order = orders[index];\n return result * (order == 'desc' ? -1 : 1);\n }\n }\n // Fixes an `Array#sort` bug in the JS engine embedded in Adobe applications\n // that causes it, under certain circumstances, to provide the same value for\n // `object` and `other`. See https://github.com/jashkenas/underscore/pull/1247\n // for more details.\n //\n // This also ensures a stable sort in V8 and other engines.\n // See https://bugs.chromium.org/p/v8/issues/detail?id=90 for more details.\n return object.index - other.index;\n }\n\n /**\n * Creates an array that is the composition of partially applied arguments,\n * placeholders, and provided arguments into a single array of arguments.\n *\n * @private\n * @param {Array} args The provided arguments.\n * @param {Array} partials The arguments to prepend to those provided.\n * @param {Array} holders The `partials` placeholder indexes.\n * @params {boolean} [isCurried] Specify composing for a curried function.\n * @returns {Array} Returns the new array of composed arguments.\n */\n function composeArgs(args, partials, holders, isCurried) {\n var argsIndex = -1,\n argsLength = args.length,\n holdersLength = holders.length,\n leftIndex = -1,\n leftLength = partials.length,\n rangeLength = nativeMax(argsLength - holdersLength, 0),\n result = Array(leftLength + rangeLength),\n isUncurried = !isCurried;\n\n while (++leftIndex < leftLength) {\n result[leftIndex] = partials[leftIndex];\n }\n while (++argsIndex < holdersLength) {\n if (isUncurried || argsIndex < argsLength) {\n result[holders[argsIndex]] = args[argsIndex];\n }\n }\n while (rangeLength--) {\n result[leftIndex++] = args[argsIndex++];\n }\n return result;\n }\n\n /**\n * This function is like `composeArgs` except that the arguments composition\n * is tailored for `_.partialRight`.\n *\n * @private\n * @param {Array} args The provided arguments.\n * @param {Array} partials The arguments to append to those provided.\n * @param {Array} holders The `partials` placeholder indexes.\n * @params {boolean} [isCurried] Specify composing for a curried function.\n * @returns {Array} Returns the new array of composed arguments.\n */\n function composeArgsRight(args, partials, holders, isCurried) {\n var argsIndex = -1,\n argsLength = args.length,\n holdersIndex = -1,\n holdersLength = holders.length,\n rightIndex = -1,\n rightLength = partials.length,\n rangeLength = nativeMax(argsLength - holdersLength, 0),\n result = Array(rangeLength + rightLength),\n isUncurried = !isCurried;\n\n while (++argsIndex < rangeLength) {\n result[argsIndex] = args[argsIndex];\n }\n var offset = argsIndex;\n while (++rightIndex < rightLength) {\n result[offset + rightIndex] = partials[rightIndex];\n }\n while (++holdersIndex < holdersLength) {\n if (isUncurried || argsIndex < argsLength) {\n result[offset + holders[holdersIndex]] = args[argsIndex++];\n }\n }\n return result;\n }\n\n /**\n * Copies the values of `source` to `array`.\n *\n * @private\n * @param {Array} source The array to copy values from.\n * @param {Array} [array=[]] The array to copy values to.\n * @returns {Array} Returns `array`.\n */\n function copyArray(source, array) {\n var index = -1,\n length = source.length;\n\n array || (array = Array(length));\n while (++index < length) {\n array[index] = source[index];\n }\n return array;\n }\n\n /**\n * Copies properties of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy properties from.\n * @param {Array} props The property identifiers to copy.\n * @param {Object} [object={}] The object to copy properties to.\n * @param {Function} [customizer] The function to customize copied values.\n * @returns {Object} Returns `object`.\n */\n function copyObject(source, props, object, customizer) {\n var isNew = !object;\n object || (object = {});\n\n var index = -1,\n length = props.length;\n\n while (++index < length) {\n var key = props[index];\n\n var newValue = customizer\n ? customizer(object[key], source[key], key, object, source)\n : undefined;\n\n if (newValue === undefined) {\n newValue = source[key];\n }\n if (isNew) {\n baseAssignValue(object, key, newValue);\n } else {\n assignValue(object, key, newValue);\n }\n }\n return object;\n }\n\n /**\n * Copies own symbols of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy symbols from.\n * @param {Object} [object={}] The object to copy symbols to.\n * @returns {Object} Returns `object`.\n */\n function copySymbols(source, object) {\n return copyObject(source, getSymbols(source), object);\n }\n\n /**\n * Copies own and inherited symbols of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy symbols from.\n * @param {Object} [object={}] The object to copy symbols to.\n * @returns {Object} Returns `object`.\n */\n function copySymbolsIn(source, object) {\n return copyObject(source, getSymbolsIn(source), object);\n }\n\n /**\n * Creates a function like `_.groupBy`.\n *\n * @private\n * @param {Function} setter The function to set accumulator values.\n * @param {Function} [initializer] The accumulator object initializer.\n * @returns {Function} Returns the new aggregator function.\n */\n function createAggregator(setter, initializer) {\n return function(collection, iteratee) {\n var func = isArray(collection) ? arrayAggregator : baseAggregator,\n accumulator = initializer ? initializer() : {};\n\n return func(collection, setter, getIteratee(iteratee, 2), accumulator);\n };\n }\n\n /**\n * Creates a function like `_.assign`.\n *\n * @private\n * @param {Function} assigner The function to assign values.\n * @returns {Function} Returns the new assigner function.\n */\n function createAssigner(assigner) {\n return baseRest(function(object, sources) {\n var index = -1,\n length = sources.length,\n customizer = length > 1 ? sources[length - 1] : undefined,\n guard = length > 2 ? sources[2] : undefined;\n\n customizer = (assigner.length > 3 && typeof customizer == 'function')\n ? (length--, customizer)\n : undefined;\n\n if (guard && isIterateeCall(sources[0], sources[1], guard)) {\n customizer = length < 3 ? undefined : customizer;\n length = 1;\n }\n object = Object(object);\n while (++index < length) {\n var source = sources[index];\n if (source) {\n assigner(object, source, index, customizer);\n }\n }\n return object;\n });\n }\n\n /**\n * Creates a `baseEach` or `baseEachRight` function.\n *\n * @private\n * @param {Function} eachFunc The function to iterate over a collection.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new base function.\n */\n function createBaseEach(eachFunc, fromRight) {\n return function(collection, iteratee) {\n if (collection == null) {\n return collection;\n }\n if (!isArrayLike(collection)) {\n return eachFunc(collection, iteratee);\n }\n var length = collection.length,\n index = fromRight ? length : -1,\n iterable = Object(collection);\n\n while ((fromRight ? index-- : ++index < length)) {\n if (iteratee(iterable[index], index, iterable) === false) {\n break;\n }\n }\n return collection;\n };\n }\n\n /**\n * Creates a base function for methods like `_.forIn` and `_.forOwn`.\n *\n * @private\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new base function.\n */\n function createBaseFor(fromRight) {\n return function(object, iteratee, keysFunc) {\n var index = -1,\n iterable = Object(object),\n props = keysFunc(object),\n length = props.length;\n\n while (length--) {\n var key = props[fromRight ? length : ++index];\n if (iteratee(iterable[key], key, iterable) === false) {\n break;\n }\n }\n return object;\n };\n }\n\n /**\n * Creates a function that wraps `func` to invoke it with the optional `this`\n * binding of `thisArg`.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @param {*} [thisArg] The `this` binding of `func`.\n * @returns {Function} Returns the new wrapped function.\n */\n function createBind(func, bitmask, thisArg) {\n var isBind = bitmask & WRAP_BIND_FLAG,\n Ctor = createCtor(func);\n\n function wrapper() {\n var fn = (this && this !== root && this instanceof wrapper) ? Ctor : func;\n return fn.apply(isBind ? thisArg : this, arguments);\n }\n return wrapper;\n }\n\n /**\n * Creates a function like `_.lowerFirst`.\n *\n * @private\n * @param {string} methodName The name of the `String` case method to use.\n * @returns {Function} Returns the new case function.\n */\n function createCaseFirst(methodName) {\n return function(string) {\n string = toString(string);\n\n var strSymbols = hasUnicode(string)\n ? stringToArray(string)\n : undefined;\n\n var chr = strSymbols\n ? strSymbols[0]\n : string.charAt(0);\n\n var trailing = strSymbols\n ? castSlice(strSymbols, 1).join('')\n : string.slice(1);\n\n return chr[methodName]() + trailing;\n };\n }\n\n /**\n * Creates a function like `_.camelCase`.\n *\n * @private\n * @param {Function} callback The function to combine each word.\n * @returns {Function} Returns the new compounder function.\n */\n function createCompounder(callback) {\n return function(string) {\n return arrayReduce(words(deburr(string).replace(reApos, '')), callback, '');\n };\n }\n\n /**\n * Creates a function that produces an instance of `Ctor` regardless of\n * whether it was invoked as part of a `new` expression or by `call` or `apply`.\n *\n * @private\n * @param {Function} Ctor The constructor to wrap.\n * @returns {Function} Returns the new wrapped function.\n */\n function createCtor(Ctor) {\n return function() {\n // Use a `switch` statement to work with class constructors. See\n // http://ecma-international.org/ecma-262/7.0/#sec-ecmascript-function-objects-call-thisargument-argumentslist\n // for more details.\n var args = arguments;\n switch (args.length) {\n case 0: return new Ctor;\n case 1: return new Ctor(args[0]);\n case 2: return new Ctor(args[0], args[1]);\n case 3: return new Ctor(args[0], args[1], args[2]);\n case 4: return new Ctor(args[0], args[1], args[2], args[3]);\n case 5: return new Ctor(args[0], args[1], args[2], args[3], args[4]);\n case 6: return new Ctor(args[0], args[1], args[2], args[3], args[4], args[5]);\n case 7: return new Ctor(args[0], args[1], args[2], args[3], args[4], args[5], args[6]);\n }\n var thisBinding = baseCreate(Ctor.prototype),\n result = Ctor.apply(thisBinding, args);\n\n // Mimic the constructor's `return` behavior.\n // See https://es5.github.io/#x13.2.2 for more details.\n return isObject(result) ? result : thisBinding;\n };\n }\n\n /**\n * Creates a function that wraps `func` to enable currying.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @param {number} arity The arity of `func`.\n * @returns {Function} Returns the new wrapped function.\n */\n function createCurry(func, bitmask, arity) {\n var Ctor = createCtor(func);\n\n function wrapper() {\n var length = arguments.length,\n args = Array(length),\n index = length,\n placeholder = getHolder(wrapper);\n\n while (index--) {\n args[index] = arguments[index];\n }\n var holders = (length < 3 && args[0] !== placeholder && args[length - 1] !== placeholder)\n ? []\n : replaceHolders(args, placeholder);\n\n length -= holders.length;\n if (length < arity) {\n return createRecurry(\n func, bitmask, createHybrid, wrapper.placeholder, undefined,\n args, holders, undefined, undefined, arity - length);\n }\n var fn = (this && this !== root && this instanceof wrapper) ? Ctor : func;\n return apply(fn, this, args);\n }\n return wrapper;\n }\n\n /**\n * Creates a `_.find` or `_.findLast` function.\n *\n * @private\n * @param {Function} findIndexFunc The function to find the collection index.\n * @returns {Function} Returns the new find function.\n */\n function createFind(findIndexFunc) {\n return function(collection, predicate, fromIndex) {\n var iterable = Object(collection);\n if (!isArrayLike(collection)) {\n var iteratee = getIteratee(predicate, 3);\n collection = keys(collection);\n predicate = function(key) { return iteratee(iterable[key], key, iterable); };\n }\n var index = findIndexFunc(collection, predicate, fromIndex);\n return index > -1 ? iterable[iteratee ? collection[index] : index] : undefined;\n };\n }\n\n /**\n * Creates a `_.flow` or `_.flowRight` function.\n *\n * @private\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new flow function.\n */\n function createFlow(fromRight) {\n return flatRest(function(funcs) {\n var length = funcs.length,\n index = length,\n prereq = LodashWrapper.prototype.thru;\n\n if (fromRight) {\n funcs.reverse();\n }\n while (index--) {\n var func = funcs[index];\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n if (prereq && !wrapper && getFuncName(func) == 'wrapper') {\n var wrapper = new LodashWrapper([], true);\n }\n }\n index = wrapper ? index : length;\n while (++index < length) {\n func = funcs[index];\n\n var funcName = getFuncName(func),\n data = funcName == 'wrapper' ? getData(func) : undefined;\n\n if (data && isLaziable(data[0]) &&\n data[1] == (WRAP_ARY_FLAG | WRAP_CURRY_FLAG | WRAP_PARTIAL_FLAG | WRAP_REARG_FLAG) &&\n !data[4].length && data[9] == 1\n ) {\n wrapper = wrapper[getFuncName(data[0])].apply(wrapper, data[3]);\n } else {\n wrapper = (func.length == 1 && isLaziable(func))\n ? wrapper[funcName]()\n : wrapper.thru(func);\n }\n }\n return function() {\n var args = arguments,\n value = args[0];\n\n if (wrapper && args.length == 1 && isArray(value)) {\n return wrapper.plant(value).value();\n }\n var index = 0,\n result = length ? funcs[index].apply(this, args) : value;\n\n while (++index < length) {\n result = funcs[index].call(this, result);\n }\n return result;\n };\n });\n }\n\n /**\n * Creates a function that wraps `func` to invoke it with optional `this`\n * binding of `thisArg`, partial application, and currying.\n *\n * @private\n * @param {Function|string} func The function or method name to wrap.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @param {*} [thisArg] The `this` binding of `func`.\n * @param {Array} [partials] The arguments to prepend to those provided to\n * the new function.\n * @param {Array} [holders] The `partials` placeholder indexes.\n * @param {Array} [partialsRight] The arguments to append to those provided\n * to the new function.\n * @param {Array} [holdersRight] The `partialsRight` placeholder indexes.\n * @param {Array} [argPos] The argument positions of the new function.\n * @param {number} [ary] The arity cap of `func`.\n * @param {number} [arity] The arity of `func`.\n * @returns {Function} Returns the new wrapped function.\n */\n function createHybrid(func, bitmask, thisArg, partials, holders, partialsRight, holdersRight, argPos, ary, arity) {\n var isAry = bitmask & WRAP_ARY_FLAG,\n isBind = bitmask & WRAP_BIND_FLAG,\n isBindKey = bitmask & WRAP_BIND_KEY_FLAG,\n isCurried = bitmask & (WRAP_CURRY_FLAG | WRAP_CURRY_RIGHT_FLAG),\n isFlip = bitmask & WRAP_FLIP_FLAG,\n Ctor = isBindKey ? undefined : createCtor(func);\n\n function wrapper() {\n var length = arguments.length,\n args = Array(length),\n index = length;\n\n while (index--) {\n args[index] = arguments[index];\n }\n if (isCurried) {\n var placeholder = getHolder(wrapper),\n holdersCount = countHolders(args, placeholder);\n }\n if (partials) {\n args = composeArgs(args, partials, holders, isCurried);\n }\n if (partialsRight) {\n args = composeArgsRight(args, partialsRight, holdersRight, isCurried);\n }\n length -= holdersCount;\n if (isCurried && length < arity) {\n var newHolders = replaceHolders(args, placeholder);\n return createRecurry(\n func, bitmask, createHybrid, wrapper.placeholder, thisArg,\n args, newHolders, argPos, ary, arity - length\n );\n }\n var thisBinding = isBind ? thisArg : this,\n fn = isBindKey ? thisBinding[func] : func;\n\n length = args.length;\n if (argPos) {\n args = reorder(args, argPos);\n } else if (isFlip && length > 1) {\n args.reverse();\n }\n if (isAry && ary < length) {\n args.length = ary;\n }\n if (this && this !== root && this instanceof wrapper) {\n fn = Ctor || createCtor(fn);\n }\n return fn.apply(thisBinding, args);\n }\n return wrapper;\n }\n\n /**\n * Creates a function like `_.invertBy`.\n *\n * @private\n * @param {Function} setter The function to set accumulator values.\n * @param {Function} toIteratee The function to resolve iteratees.\n * @returns {Function} Returns the new inverter function.\n */\n function createInverter(setter, toIteratee) {\n return function(object, iteratee) {\n return baseInverter(object, setter, toIteratee(iteratee), {});\n };\n }\n\n /**\n * Creates a function that performs a mathematical operation on two values.\n *\n * @private\n * @param {Function} operator The function to perform the operation.\n * @param {number} [defaultValue] The value used for `undefined` arguments.\n * @returns {Function} Returns the new mathematical operation function.\n */\n function createMathOperation(operator, defaultValue) {\n return function(value, other) {\n var result;\n if (value === undefined && other === undefined) {\n return defaultValue;\n }\n if (value !== undefined) {\n result = value;\n }\n if (other !== undefined) {\n if (result === undefined) {\n return other;\n }\n if (typeof value == 'string' || typeof other == 'string') {\n value = baseToString(value);\n other = baseToString(other);\n } else {\n value = baseToNumber(value);\n other = baseToNumber(other);\n }\n result = operator(value, other);\n }\n return result;\n };\n }\n\n /**\n * Creates a function like `_.over`.\n *\n * @private\n * @param {Function} arrayFunc The function to iterate over iteratees.\n * @returns {Function} Returns the new over function.\n */\n function createOver(arrayFunc) {\n return flatRest(function(iteratees) {\n iteratees = arrayMap(iteratees, baseUnary(getIteratee()));\n return baseRest(function(args) {\n var thisArg = this;\n return arrayFunc(iteratees, function(iteratee) {\n return apply(iteratee, thisArg, args);\n });\n });\n });\n }\n\n /**\n * Creates the padding for `string` based on `length`. The `chars` string\n * is truncated if the number of characters exceeds `length`.\n *\n * @private\n * @param {number} length The padding length.\n * @param {string} [chars=' '] The string used as padding.\n * @returns {string} Returns the padding for `string`.\n */\n function createPadding(length, chars) {\n chars = chars === undefined ? ' ' : baseToString(chars);\n\n var charsLength = chars.length;\n if (charsLength < 2) {\n return charsLength ? baseRepeat(chars, length) : chars;\n }\n var result = baseRepeat(chars, nativeCeil(length / stringSize(chars)));\n return hasUnicode(chars)\n ? castSlice(stringToArray(result), 0, length).join('')\n : result.slice(0, length);\n }\n\n /**\n * Creates a function that wraps `func` to invoke it with the `this` binding\n * of `thisArg` and `partials` prepended to the arguments it receives.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @param {*} thisArg The `this` binding of `func`.\n * @param {Array} partials The arguments to prepend to those provided to\n * the new function.\n * @returns {Function} Returns the new wrapped function.\n */\n function createPartial(func, bitmask, thisArg, partials) {\n var isBind = bitmask & WRAP_BIND_FLAG,\n Ctor = createCtor(func);\n\n function wrapper() {\n var argsIndex = -1,\n argsLength = arguments.length,\n leftIndex = -1,\n leftLength = partials.length,\n args = Array(leftLength + argsLength),\n fn = (this && this !== root && this instanceof wrapper) ? Ctor : func;\n\n while (++leftIndex < leftLength) {\n args[leftIndex] = partials[leftIndex];\n }\n while (argsLength--) {\n args[leftIndex++] = arguments[++argsIndex];\n }\n return apply(fn, isBind ? thisArg : this, args);\n }\n return wrapper;\n }\n\n /**\n * Creates a `_.range` or `_.rangeRight` function.\n *\n * @private\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new range function.\n */\n function createRange(fromRight) {\n return function(start, end, step) {\n if (step && typeof step != 'number' && isIterateeCall(start, end, step)) {\n end = step = undefined;\n }\n // Ensure the sign of `-0` is preserved.\n start = toFinite(start);\n if (end === undefined) {\n end = start;\n start = 0;\n } else {\n end = toFinite(end);\n }\n step = step === undefined ? (start < end ? 1 : -1) : toFinite(step);\n return baseRange(start, end, step, fromRight);\n };\n }\n\n /**\n * Creates a function that performs a relational operation on two values.\n *\n * @private\n * @param {Function} operator The function to perform the operation.\n * @returns {Function} Returns the new relational operation function.\n */\n function createRelationalOperation(operator) {\n return function(value, other) {\n if (!(typeof value == 'string' && typeof other == 'string')) {\n value = toNumber(value);\n other = toNumber(other);\n }\n return operator(value, other);\n };\n }\n\n /**\n * Creates a function that wraps `func` to continue currying.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @param {Function} wrapFunc The function to create the `func` wrapper.\n * @param {*} placeholder The placeholder value.\n * @param {*} [thisArg] The `this` binding of `func`.\n * @param {Array} [partials] The arguments to prepend to those provided to\n * the new function.\n * @param {Array} [holders] The `partials` placeholder indexes.\n * @param {Array} [argPos] The argument positions of the new function.\n * @param {number} [ary] The arity cap of `func`.\n * @param {number} [arity] The arity of `func`.\n * @returns {Function} Returns the new wrapped function.\n */\n function createRecurry(func, bitmask, wrapFunc, placeholder, thisArg, partials, holders, argPos, ary, arity) {\n var isCurry = bitmask & WRAP_CURRY_FLAG,\n newHolders = isCurry ? holders : undefined,\n newHoldersRight = isCurry ? undefined : holders,\n newPartials = isCurry ? partials : undefined,\n newPartialsRight = isCurry ? undefined : partials;\n\n bitmask |= (isCurry ? WRAP_PARTIAL_FLAG : WRAP_PARTIAL_RIGHT_FLAG);\n bitmask &= ~(isCurry ? WRAP_PARTIAL_RIGHT_FLAG : WRAP_PARTIAL_FLAG);\n\n if (!(bitmask & WRAP_CURRY_BOUND_FLAG)) {\n bitmask &= ~(WRAP_BIND_FLAG | WRAP_BIND_KEY_FLAG);\n }\n var newData = [\n func, bitmask, thisArg, newPartials, newHolders, newPartialsRight,\n newHoldersRight, argPos, ary, arity\n ];\n\n var result = wrapFunc.apply(undefined, newData);\n if (isLaziable(func)) {\n setData(result, newData);\n }\n result.placeholder = placeholder;\n return setWrapToString(result, func, bitmask);\n }\n\n /**\n * Creates a function like `_.round`.\n *\n * @private\n * @param {string} methodName The name of the `Math` method to use when rounding.\n * @returns {Function} Returns the new round function.\n */\n function createRound(methodName) {\n var func = Math[methodName];\n return function(number, precision) {\n number = toNumber(number);\n precision = precision == null ? 0 : nativeMin(toInteger(precision), 292);\n if (precision && nativeIsFinite(number)) {\n // Shift with exponential notation to avoid floating-point issues.\n // See [MDN](https://mdn.io/round#Examples) for more details.\n var pair = (toString(number) + 'e').split('e'),\n value = func(pair[0] + 'e' + (+pair[1] + precision));\n\n pair = (toString(value) + 'e').split('e');\n return +(pair[0] + 'e' + (+pair[1] - precision));\n }\n return func(number);\n };\n }\n\n /**\n * Creates a set object of `values`.\n *\n * @private\n * @param {Array} values The values to add to the set.\n * @returns {Object} Returns the new set.\n */\n var createSet = !(Set && (1 / setToArray(new Set([,-0]))[1]) == INFINITY) ? noop : function(values) {\n return new Set(values);\n };\n\n /**\n * Creates a `_.toPairs` or `_.toPairsIn` function.\n *\n * @private\n * @param {Function} keysFunc The function to get the keys of a given object.\n * @returns {Function} Returns the new pairs function.\n */\n function createToPairs(keysFunc) {\n return function(object) {\n var tag = getTag(object);\n if (tag == mapTag) {\n return mapToArray(object);\n }\n if (tag == setTag) {\n return setToPairs(object);\n }\n return baseToPairs(object, keysFunc(object));\n };\n }\n\n /**\n * Creates a function that either curries or invokes `func` with optional\n * `this` binding and partially applied arguments.\n *\n * @private\n * @param {Function|string} func The function or method name to wrap.\n * @param {number} bitmask The bitmask flags.\n * 1 - `_.bind`\n * 2 - `_.bindKey`\n * 4 - `_.curry` or `_.curryRight` of a bound function\n * 8 - `_.curry`\n * 16 - `_.curryRight`\n * 32 - `_.partial`\n * 64 - `_.partialRight`\n * 128 - `_.rearg`\n * 256 - `_.ary`\n * 512 - `_.flip`\n * @param {*} [thisArg] The `this` binding of `func`.\n * @param {Array} [partials] The arguments to be partially applied.\n * @param {Array} [holders] The `partials` placeholder indexes.\n * @param {Array} [argPos] The argument positions of the new function.\n * @param {number} [ary] The arity cap of `func`.\n * @param {number} [arity] The arity of `func`.\n * @returns {Function} Returns the new wrapped function.\n */\n function createWrap(func, bitmask, thisArg, partials, holders, argPos, ary, arity) {\n var isBindKey = bitmask & WRAP_BIND_KEY_FLAG;\n if (!isBindKey && typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n var length = partials ? partials.length : 0;\n if (!length) {\n bitmask &= ~(WRAP_PARTIAL_FLAG | WRAP_PARTIAL_RIGHT_FLAG);\n partials = holders = undefined;\n }\n ary = ary === undefined ? ary : nativeMax(toInteger(ary), 0);\n arity = arity === undefined ? arity : toInteger(arity);\n length -= holders ? holders.length : 0;\n\n if (bitmask & WRAP_PARTIAL_RIGHT_FLAG) {\n var partialsRight = partials,\n holdersRight = holders;\n\n partials = holders = undefined;\n }\n var data = isBindKey ? undefined : getData(func);\n\n var newData = [\n func, bitmask, thisArg, partials, holders, partialsRight, holdersRight,\n argPos, ary, arity\n ];\n\n if (data) {\n mergeData(newData, data);\n }\n func = newData[0];\n bitmask = newData[1];\n thisArg = newData[2];\n partials = newData[3];\n holders = newData[4];\n arity = newData[9] = newData[9] === undefined\n ? (isBindKey ? 0 : func.length)\n : nativeMax(newData[9] - length, 0);\n\n if (!arity && bitmask & (WRAP_CURRY_FLAG | WRAP_CURRY_RIGHT_FLAG)) {\n bitmask &= ~(WRAP_CURRY_FLAG | WRAP_CURRY_RIGHT_FLAG);\n }\n if (!bitmask || bitmask == WRAP_BIND_FLAG) {\n var result = createBind(func, bitmask, thisArg);\n } else if (bitmask == WRAP_CURRY_FLAG || bitmask == WRAP_CURRY_RIGHT_FLAG) {\n result = createCurry(func, bitmask, arity);\n } else if ((bitmask == WRAP_PARTIAL_FLAG || bitmask == (WRAP_BIND_FLAG | WRAP_PARTIAL_FLAG)) && !holders.length) {\n result = createPartial(func, bitmask, thisArg, partials);\n } else {\n result = createHybrid.apply(undefined, newData);\n }\n var setter = data ? baseSetData : setData;\n return setWrapToString(setter(result, newData), func, bitmask);\n }\n\n /**\n * Used by `_.defaults` to customize its `_.assignIn` use to assign properties\n * of source objects to the destination object for all destination properties\n * that resolve to `undefined`.\n *\n * @private\n * @param {*} objValue The destination value.\n * @param {*} srcValue The source value.\n * @param {string} key The key of the property to assign.\n * @param {Object} object The parent object of `objValue`.\n * @returns {*} Returns the value to assign.\n */\n function customDefaultsAssignIn(objValue, srcValue, key, object) {\n if (objValue === undefined ||\n (eq(objValue, objectProto[key]) && !hasOwnProperty.call(object, key))) {\n return srcValue;\n }\n return objValue;\n }\n\n /**\n * Used by `_.defaultsDeep` to customize its `_.merge` use to merge source\n * objects into destination objects that are passed thru.\n *\n * @private\n * @param {*} objValue The destination value.\n * @param {*} srcValue The source value.\n * @param {string} key The key of the property to merge.\n * @param {Object} object The parent object of `objValue`.\n * @param {Object} source The parent object of `srcValue`.\n * @param {Object} [stack] Tracks traversed source values and their merged\n * counterparts.\n * @returns {*} Returns the value to assign.\n */\n function customDefaultsMerge(objValue, srcValue, key, object, source, stack) {\n if (isObject(objValue) && isObject(srcValue)) {\n // Recursively merge objects and arrays (susceptible to call stack limits).\n stack.set(srcValue, objValue);\n baseMerge(objValue, srcValue, undefined, customDefaultsMerge, stack);\n stack['delete'](srcValue);\n }\n return objValue;\n }\n\n /**\n * Used by `_.omit` to customize its `_.cloneDeep` use to only clone plain\n * objects.\n *\n * @private\n * @param {*} value The value to inspect.\n * @param {string} key The key of the property to inspect.\n * @returns {*} Returns the uncloned value or `undefined` to defer cloning to `_.cloneDeep`.\n */\n function customOmitClone(value) {\n return isPlainObject(value) ? undefined : value;\n }\n\n /**\n * A specialized version of `baseIsEqualDeep` for arrays with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Array} array The array to compare.\n * @param {Array} other The other array to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `array` and `other` objects.\n * @returns {boolean} Returns `true` if the arrays are equivalent, else `false`.\n */\n function equalArrays(array, other, bitmask, customizer, equalFunc, stack) {\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n arrLength = array.length,\n othLength = other.length;\n\n if (arrLength != othLength && !(isPartial && othLength > arrLength)) {\n return false;\n }\n // Check that cyclic values are equal.\n var arrStacked = stack.get(array);\n var othStacked = stack.get(other);\n if (arrStacked && othStacked) {\n return arrStacked == other && othStacked == array;\n }\n var index = -1,\n result = true,\n seen = (bitmask & COMPARE_UNORDERED_FLAG) ? new SetCache : undefined;\n\n stack.set(array, other);\n stack.set(other, array);\n\n // Ignore non-index properties.\n while (++index < arrLength) {\n var arrValue = array[index],\n othValue = other[index];\n\n if (customizer) {\n var compared = isPartial\n ? customizer(othValue, arrValue, index, other, array, stack)\n : customizer(arrValue, othValue, index, array, other, stack);\n }\n if (compared !== undefined) {\n if (compared) {\n continue;\n }\n result = false;\n break;\n }\n // Recursively compare arrays (susceptible to call stack limits).\n if (seen) {\n if (!arraySome(other, function(othValue, othIndex) {\n if (!cacheHas(seen, othIndex) &&\n (arrValue === othValue || equalFunc(arrValue, othValue, bitmask, customizer, stack))) {\n return seen.push(othIndex);\n }\n })) {\n result = false;\n break;\n }\n } else if (!(\n arrValue === othValue ||\n equalFunc(arrValue, othValue, bitmask, customizer, stack)\n )) {\n result = false;\n break;\n }\n }\n stack['delete'](array);\n stack['delete'](other);\n return result;\n }\n\n /**\n * A specialized version of `baseIsEqualDeep` for comparing objects of\n * the same `toStringTag`.\n *\n * **Note:** This function only supports comparing values with tags of\n * `Boolean`, `Date`, `Error`, `Number`, `RegExp`, or `String`.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {string} tag The `toStringTag` of the objects to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\n function equalByTag(object, other, tag, bitmask, customizer, equalFunc, stack) {\n switch (tag) {\n case dataViewTag:\n if ((object.byteLength != other.byteLength) ||\n (object.byteOffset != other.byteOffset)) {\n return false;\n }\n object = object.buffer;\n other = other.buffer;\n\n case arrayBufferTag:\n if ((object.byteLength != other.byteLength) ||\n !equalFunc(new Uint8Array(object), new Uint8Array(other))) {\n return false;\n }\n return true;\n\n case boolTag:\n case dateTag:\n case numberTag:\n // Coerce booleans to `1` or `0` and dates to milliseconds.\n // Invalid dates are coerced to `NaN`.\n return eq(+object, +other);\n\n case errorTag:\n return object.name == other.name && object.message == other.message;\n\n case regexpTag:\n case stringTag:\n // Coerce regexes to strings and treat strings, primitives and objects,\n // as equal. See http://www.ecma-international.org/ecma-262/7.0/#sec-regexp.prototype.tostring\n // for more details.\n return object == (other + '');\n\n case mapTag:\n var convert = mapToArray;\n\n case setTag:\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG;\n convert || (convert = setToArray);\n\n if (object.size != other.size && !isPartial) {\n return false;\n }\n // Assume cyclic values are equal.\n var stacked = stack.get(object);\n if (stacked) {\n return stacked == other;\n }\n bitmask |= COMPARE_UNORDERED_FLAG;\n\n // Recursively compare objects (susceptible to call stack limits).\n stack.set(object, other);\n var result = equalArrays(convert(object), convert(other), bitmask, customizer, equalFunc, stack);\n stack['delete'](object);\n return result;\n\n case symbolTag:\n if (symbolValueOf) {\n return symbolValueOf.call(object) == symbolValueOf.call(other);\n }\n }\n return false;\n }\n\n /**\n * A specialized version of `baseIsEqualDeep` for objects with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\n function equalObjects(object, other, bitmask, customizer, equalFunc, stack) {\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n objProps = getAllKeys(object),\n objLength = objProps.length,\n othProps = getAllKeys(other),\n othLength = othProps.length;\n\n if (objLength != othLength && !isPartial) {\n return false;\n }\n var index = objLength;\n while (index--) {\n var key = objProps[index];\n if (!(isPartial ? key in other : hasOwnProperty.call(other, key))) {\n return false;\n }\n }\n // Check that cyclic values are equal.\n var objStacked = stack.get(object);\n var othStacked = stack.get(other);\n if (objStacked && othStacked) {\n return objStacked == other && othStacked == object;\n }\n var result = true;\n stack.set(object, other);\n stack.set(other, object);\n\n var skipCtor = isPartial;\n while (++index < objLength) {\n key = objProps[index];\n var objValue = object[key],\n othValue = other[key];\n\n if (customizer) {\n var compared = isPartial\n ? customizer(othValue, objValue, key, other, object, stack)\n : customizer(objValue, othValue, key, object, other, stack);\n }\n // Recursively compare objects (susceptible to call stack limits).\n if (!(compared === undefined\n ? (objValue === othValue || equalFunc(objValue, othValue, bitmask, customizer, stack))\n : compared\n )) {\n result = false;\n break;\n }\n skipCtor || (skipCtor = key == 'constructor');\n }\n if (result && !skipCtor) {\n var objCtor = object.constructor,\n othCtor = other.constructor;\n\n // Non `Object` object instances with different constructors are not equal.\n if (objCtor != othCtor &&\n ('constructor' in object && 'constructor' in other) &&\n !(typeof objCtor == 'function' && objCtor instanceof objCtor &&\n typeof othCtor == 'function' && othCtor instanceof othCtor)) {\n result = false;\n }\n }\n stack['delete'](object);\n stack['delete'](other);\n return result;\n }\n\n /**\n * A specialized version of `baseRest` which flattens the rest array.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @returns {Function} Returns the new function.\n */\n function flatRest(func) {\n return setToString(overRest(func, undefined, flatten), func + '');\n }\n\n /**\n * Creates an array of own enumerable property names and symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names and symbols.\n */\n function getAllKeys(object) {\n return baseGetAllKeys(object, keys, getSymbols);\n }\n\n /**\n * Creates an array of own and inherited enumerable property names and\n * symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names and symbols.\n */\n function getAllKeysIn(object) {\n return baseGetAllKeys(object, keysIn, getSymbolsIn);\n }\n\n /**\n * Gets metadata for `func`.\n *\n * @private\n * @param {Function} func The function to query.\n * @returns {*} Returns the metadata for `func`.\n */\n var getData = !metaMap ? noop : function(func) {\n return metaMap.get(func);\n };\n\n /**\n * Gets the name of `func`.\n *\n * @private\n * @param {Function} func The function to query.\n * @returns {string} Returns the function name.\n */\n function getFuncName(func) {\n var result = (func.name + ''),\n array = realNames[result],\n length = hasOwnProperty.call(realNames, result) ? array.length : 0;\n\n while (length--) {\n var data = array[length],\n otherFunc = data.func;\n if (otherFunc == null || otherFunc == func) {\n return data.name;\n }\n }\n return result;\n }\n\n /**\n * Gets the argument placeholder value for `func`.\n *\n * @private\n * @param {Function} func The function to inspect.\n * @returns {*} Returns the placeholder value.\n */\n function getHolder(func) {\n var object = hasOwnProperty.call(lodash, 'placeholder') ? lodash : func;\n return object.placeholder;\n }\n\n /**\n * Gets the appropriate \"iteratee\" function. If `_.iteratee` is customized,\n * this function returns the custom method, otherwise it returns `baseIteratee`.\n * If arguments are provided, the chosen function is invoked with them and\n * its result is returned.\n *\n * @private\n * @param {*} [value] The value to convert to an iteratee.\n * @param {number} [arity] The arity of the created iteratee.\n * @returns {Function} Returns the chosen function or its result.\n */\n function getIteratee() {\n var result = lodash.iteratee || iteratee;\n result = result === iteratee ? baseIteratee : result;\n return arguments.length ? result(arguments[0], arguments[1]) : result;\n }\n\n /**\n * Gets the data for `map`.\n *\n * @private\n * @param {Object} map The map to query.\n * @param {string} key The reference key.\n * @returns {*} Returns the map data.\n */\n function getMapData(map, key) {\n var data = map.__data__;\n return isKeyable(key)\n ? data[typeof key == 'string' ? 'string' : 'hash']\n : data.map;\n }\n\n /**\n * Gets the property names, values, and compare flags of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the match data of `object`.\n */\n function getMatchData(object) {\n var result = keys(object),\n length = result.length;\n\n while (length--) {\n var key = result[length],\n value = object[key];\n\n result[length] = [key, value, isStrictComparable(value)];\n }\n return result;\n }\n\n /**\n * Gets the native function at `key` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the method to get.\n * @returns {*} Returns the function if it's native, else `undefined`.\n */\n function getNative(object, key) {\n var value = getValue(object, key);\n return baseIsNative(value) ? value : undefined;\n }\n\n /**\n * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the raw `toStringTag`.\n */\n function getRawTag(value) {\n var isOwn = hasOwnProperty.call(value, symToStringTag),\n tag = value[symToStringTag];\n\n try {\n value[symToStringTag] = undefined;\n var unmasked = true;\n } catch (e) {}\n\n var result = nativeObjectToString.call(value);\n if (unmasked) {\n if (isOwn) {\n value[symToStringTag] = tag;\n } else {\n delete value[symToStringTag];\n }\n }\n return result;\n }\n\n /**\n * Creates an array of the own enumerable symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of symbols.\n */\n var getSymbols = !nativeGetSymbols ? stubArray : function(object) {\n if (object == null) {\n return [];\n }\n object = Object(object);\n return arrayFilter(nativeGetSymbols(object), function(symbol) {\n return propertyIsEnumerable.call(object, symbol);\n });\n };\n\n /**\n * Creates an array of the own and inherited enumerable symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of symbols.\n */\n var getSymbolsIn = !nativeGetSymbols ? stubArray : function(object) {\n var result = [];\n while (object) {\n arrayPush(result, getSymbols(object));\n object = getPrototype(object);\n }\n return result;\n };\n\n /**\n * Gets the `toStringTag` of `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\n var getTag = baseGetTag;\n\n // Fallback for data views, maps, sets, and weak maps in IE 11 and promises in Node.js < 6.\n if ((DataView && getTag(new DataView(new ArrayBuffer(1))) != dataViewTag) ||\n (Map && getTag(new Map) != mapTag) ||\n (Promise && getTag(Promise.resolve()) != promiseTag) ||\n (Set && getTag(new Set) != setTag) ||\n (WeakMap && getTag(new WeakMap) != weakMapTag)) {\n getTag = function(value) {\n var result = baseGetTag(value),\n Ctor = result == objectTag ? value.constructor : undefined,\n ctorString = Ctor ? toSource(Ctor) : '';\n\n if (ctorString) {\n switch (ctorString) {\n case dataViewCtorString: return dataViewTag;\n case mapCtorString: return mapTag;\n case promiseCtorString: return promiseTag;\n case setCtorString: return setTag;\n case weakMapCtorString: return weakMapTag;\n }\n }\n return result;\n };\n }\n\n /**\n * Gets the view, applying any `transforms` to the `start` and `end` positions.\n *\n * @private\n * @param {number} start The start of the view.\n * @param {number} end The end of the view.\n * @param {Array} transforms The transformations to apply to the view.\n * @returns {Object} Returns an object containing the `start` and `end`\n * positions of the view.\n */\n function getView(start, end, transforms) {\n var index = -1,\n length = transforms.length;\n\n while (++index < length) {\n var data = transforms[index],\n size = data.size;\n\n switch (data.type) {\n case 'drop': start += size; break;\n case 'dropRight': end -= size; break;\n case 'take': end = nativeMin(end, start + size); break;\n case 'takeRight': start = nativeMax(start, end - size); break;\n }\n }\n return { 'start': start, 'end': end };\n }\n\n /**\n * Extracts wrapper details from the `source` body comment.\n *\n * @private\n * @param {string} source The source to inspect.\n * @returns {Array} Returns the wrapper details.\n */\n function getWrapDetails(source) {\n var match = source.match(reWrapDetails);\n return match ? match[1].split(reSplitDetails) : [];\n }\n\n /**\n * Checks if `path` exists on `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} path The path to check.\n * @param {Function} hasFunc The function to check properties.\n * @returns {boolean} Returns `true` if `path` exists, else `false`.\n */\n function hasPath(object, path, hasFunc) {\n path = castPath(path, object);\n\n var index = -1,\n length = path.length,\n result = false;\n\n while (++index < length) {\n var key = toKey(path[index]);\n if (!(result = object != null && hasFunc(object, key))) {\n break;\n }\n object = object[key];\n }\n if (result || ++index != length) {\n return result;\n }\n length = object == null ? 0 : object.length;\n return !!length && isLength(length) && isIndex(key, length) &&\n (isArray(object) || isArguments(object));\n }\n\n /**\n * Initializes an array clone.\n *\n * @private\n * @param {Array} array The array to clone.\n * @returns {Array} Returns the initialized clone.\n */\n function initCloneArray(array) {\n var length = array.length,\n result = new array.constructor(length);\n\n // Add properties assigned by `RegExp#exec`.\n if (length && typeof array[0] == 'string' && hasOwnProperty.call(array, 'index')) {\n result.index = array.index;\n result.input = array.input;\n }\n return result;\n }\n\n /**\n * Initializes an object clone.\n *\n * @private\n * @param {Object} object The object to clone.\n * @returns {Object} Returns the initialized clone.\n */\n function initCloneObject(object) {\n return (typeof object.constructor == 'function' && !isPrototype(object))\n ? baseCreate(getPrototype(object))\n : {};\n }\n\n /**\n * Initializes an object clone based on its `toStringTag`.\n *\n * **Note:** This function only supports cloning values with tags of\n * `Boolean`, `Date`, `Error`, `Map`, `Number`, `RegExp`, `Set`, or `String`.\n *\n * @private\n * @param {Object} object The object to clone.\n * @param {string} tag The `toStringTag` of the object to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the initialized clone.\n */\n function initCloneByTag(object, tag, isDeep) {\n var Ctor = object.constructor;\n switch (tag) {\n case arrayBufferTag:\n return cloneArrayBuffer(object);\n\n case boolTag:\n case dateTag:\n return new Ctor(+object);\n\n case dataViewTag:\n return cloneDataView(object, isDeep);\n\n case float32Tag: case float64Tag:\n case int8Tag: case int16Tag: case int32Tag:\n case uint8Tag: case uint8ClampedTag: case uint16Tag: case uint32Tag:\n return cloneTypedArray(object, isDeep);\n\n case mapTag:\n return new Ctor;\n\n case numberTag:\n case stringTag:\n return new Ctor(object);\n\n case regexpTag:\n return cloneRegExp(object);\n\n case setTag:\n return new Ctor;\n\n case symbolTag:\n return cloneSymbol(object);\n }\n }\n\n /**\n * Inserts wrapper `details` in a comment at the top of the `source` body.\n *\n * @private\n * @param {string} source The source to modify.\n * @returns {Array} details The details to insert.\n * @returns {string} Returns the modified source.\n */\n function insertWrapDetails(source, details) {\n var length = details.length;\n if (!length) {\n return source;\n }\n var lastIndex = length - 1;\n details[lastIndex] = (length > 1 ? '& ' : '') + details[lastIndex];\n details = details.join(length > 2 ? ', ' : ' ');\n return source.replace(reWrapComment, '{\\n/* [wrapped with ' + details + '] */\\n');\n }\n\n /**\n * Checks if `value` is a flattenable `arguments` object or array.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is flattenable, else `false`.\n */\n function isFlattenable(value) {\n return isArray(value) || isArguments(value) ||\n !!(spreadableSymbol && value && value[spreadableSymbol]);\n }\n\n /**\n * Checks if `value` is a valid array-like index.\n *\n * @private\n * @param {*} value The value to check.\n * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n */\n function isIndex(value, length) {\n var type = typeof value;\n length = length == null ? MAX_SAFE_INTEGER : length;\n\n return !!length &&\n (type == 'number' ||\n (type != 'symbol' && reIsUint.test(value))) &&\n (value > -1 && value % 1 == 0 && value < length);\n }\n\n /**\n * Checks if the given arguments are from an iteratee call.\n *\n * @private\n * @param {*} value The potential iteratee value argument.\n * @param {*} index The potential iteratee index or key argument.\n * @param {*} object The potential iteratee object argument.\n * @returns {boolean} Returns `true` if the arguments are from an iteratee call,\n * else `false`.\n */\n function isIterateeCall(value, index, object) {\n if (!isObject(object)) {\n return false;\n }\n var type = typeof index;\n if (type == 'number'\n ? (isArrayLike(object) && isIndex(index, object.length))\n : (type == 'string' && index in object)\n ) {\n return eq(object[index], value);\n }\n return false;\n }\n\n /**\n * Checks if `value` is a property name and not a property path.\n *\n * @private\n * @param {*} value The value to check.\n * @param {Object} [object] The object to query keys on.\n * @returns {boolean} Returns `true` if `value` is a property name, else `false`.\n */\n function isKey(value, object) {\n if (isArray(value)) {\n return false;\n }\n var type = typeof value;\n if (type == 'number' || type == 'symbol' || type == 'boolean' ||\n value == null || isSymbol(value)) {\n return true;\n }\n return reIsPlainProp.test(value) || !reIsDeepProp.test(value) ||\n (object != null && value in Object(object));\n }\n\n /**\n * Checks if `value` is suitable for use as unique object key.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is suitable, else `false`.\n */\n function isKeyable(value) {\n var type = typeof value;\n return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean')\n ? (value !== '__proto__')\n : (value === null);\n }\n\n /**\n * Checks if `func` has a lazy counterpart.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` has a lazy counterpart,\n * else `false`.\n */\n function isLaziable(func) {\n var funcName = getFuncName(func),\n other = lodash[funcName];\n\n if (typeof other != 'function' || !(funcName in LazyWrapper.prototype)) {\n return false;\n }\n if (func === other) {\n return true;\n }\n var data = getData(other);\n return !!data && func === data[0];\n }\n\n /**\n * Checks if `func` has its source masked.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` is masked, else `false`.\n */\n function isMasked(func) {\n return !!maskSrcKey && (maskSrcKey in func);\n }\n\n /**\n * Checks if `func` is capable of being masked.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `func` is maskable, else `false`.\n */\n var isMaskable = coreJsData ? isFunction : stubFalse;\n\n /**\n * Checks if `value` is likely a prototype object.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.\n */\n function isPrototype(value) {\n var Ctor = value && value.constructor,\n proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto;\n\n return value === proto;\n }\n\n /**\n * Checks if `value` is suitable for strict equality comparisons, i.e. `===`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` if suitable for strict\n * equality comparisons, else `false`.\n */\n function isStrictComparable(value) {\n return value === value && !isObject(value);\n }\n\n /**\n * A specialized version of `matchesProperty` for source values suitable\n * for strict equality comparisons, i.e. `===`.\n *\n * @private\n * @param {string} key The key of the property to get.\n * @param {*} srcValue The value to match.\n * @returns {Function} Returns the new spec function.\n */\n function matchesStrictComparable(key, srcValue) {\n return function(object) {\n if (object == null) {\n return false;\n }\n return object[key] === srcValue &&\n (srcValue !== undefined || (key in Object(object)));\n };\n }\n\n /**\n * A specialized version of `_.memoize` which clears the memoized function's\n * cache when it exceeds `MAX_MEMOIZE_SIZE`.\n *\n * @private\n * @param {Function} func The function to have its output memoized.\n * @returns {Function} Returns the new memoized function.\n */\n function memoizeCapped(func) {\n var result = memoize(func, function(key) {\n if (cache.size === MAX_MEMOIZE_SIZE) {\n cache.clear();\n }\n return key;\n });\n\n var cache = result.cache;\n return result;\n }\n\n /**\n * Merges the function metadata of `source` into `data`.\n *\n * Merging metadata reduces the number of wrappers used to invoke a function.\n * This is possible because methods like `_.bind`, `_.curry`, and `_.partial`\n * may be applied regardless of execution order. Methods like `_.ary` and\n * `_.rearg` modify function arguments, making the order in which they are\n * executed important, preventing the merging of metadata. However, we make\n * an exception for a safe combined case where curried functions have `_.ary`\n * and or `_.rearg` applied.\n *\n * @private\n * @param {Array} data The destination metadata.\n * @param {Array} source The source metadata.\n * @returns {Array} Returns `data`.\n */\n function mergeData(data, source) {\n var bitmask = data[1],\n srcBitmask = source[1],\n newBitmask = bitmask | srcBitmask,\n isCommon = newBitmask < (WRAP_BIND_FLAG | WRAP_BIND_KEY_FLAG | WRAP_ARY_FLAG);\n\n var isCombo =\n ((srcBitmask == WRAP_ARY_FLAG) && (bitmask == WRAP_CURRY_FLAG)) ||\n ((srcBitmask == WRAP_ARY_FLAG) && (bitmask == WRAP_REARG_FLAG) && (data[7].length <= source[8])) ||\n ((srcBitmask == (WRAP_ARY_FLAG | WRAP_REARG_FLAG)) && (source[7].length <= source[8]) && (bitmask == WRAP_CURRY_FLAG));\n\n // Exit early if metadata can't be merged.\n if (!(isCommon || isCombo)) {\n return data;\n }\n // Use source `thisArg` if available.\n if (srcBitmask & WRAP_BIND_FLAG) {\n data[2] = source[2];\n // Set when currying a bound function.\n newBitmask |= bitmask & WRAP_BIND_FLAG ? 0 : WRAP_CURRY_BOUND_FLAG;\n }\n // Compose partial arguments.\n var value = source[3];\n if (value) {\n var partials = data[3];\n data[3] = partials ? composeArgs(partials, value, source[4]) : value;\n data[4] = partials ? replaceHolders(data[3], PLACEHOLDER) : source[4];\n }\n // Compose partial right arguments.\n value = source[5];\n if (value) {\n partials = data[5];\n data[5] = partials ? composeArgsRight(partials, value, source[6]) : value;\n data[6] = partials ? replaceHolders(data[5], PLACEHOLDER) : source[6];\n }\n // Use source `argPos` if available.\n value = source[7];\n if (value) {\n data[7] = value;\n }\n // Use source `ary` if it's smaller.\n if (srcBitmask & WRAP_ARY_FLAG) {\n data[8] = data[8] == null ? source[8] : nativeMin(data[8], source[8]);\n }\n // Use source `arity` if one is not provided.\n if (data[9] == null) {\n data[9] = source[9];\n }\n // Use source `func` and merge bitmasks.\n data[0] = source[0];\n data[1] = newBitmask;\n\n return data;\n }\n\n /**\n * This function is like\n * [`Object.keys`](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * except that it includes inherited enumerable properties.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\n function nativeKeysIn(object) {\n var result = [];\n if (object != null) {\n for (var key in Object(object)) {\n result.push(key);\n }\n }\n return result;\n }\n\n /**\n * Converts `value` to a string using `Object.prototype.toString`.\n *\n * @private\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n */\n function objectToString(value) {\n return nativeObjectToString.call(value);\n }\n\n /**\n * A specialized version of `baseRest` which transforms the rest array.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @param {Function} transform The rest array transform.\n * @returns {Function} Returns the new function.\n */\n function overRest(func, start, transform) {\n start = nativeMax(start === undefined ? (func.length - 1) : start, 0);\n return function() {\n var args = arguments,\n index = -1,\n length = nativeMax(args.length - start, 0),\n array = Array(length);\n\n while (++index < length) {\n array[index] = args[start + index];\n }\n index = -1;\n var otherArgs = Array(start + 1);\n while (++index < start) {\n otherArgs[index] = args[index];\n }\n otherArgs[start] = transform(array);\n return apply(func, this, otherArgs);\n };\n }\n\n /**\n * Gets the parent value at `path` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array} path The path to get the parent value of.\n * @returns {*} Returns the parent value.\n */\n function parent(object, path) {\n return path.length < 2 ? object : baseGet(object, baseSlice(path, 0, -1));\n }\n\n /**\n * Reorder `array` according to the specified indexes where the element at\n * the first index is assigned as the first element, the element at\n * the second index is assigned as the second element, and so on.\n *\n * @private\n * @param {Array} array The array to reorder.\n * @param {Array} indexes The arranged array indexes.\n * @returns {Array} Returns `array`.\n */\n function reorder(array, indexes) {\n var arrLength = array.length,\n length = nativeMin(indexes.length, arrLength),\n oldArray = copyArray(array);\n\n while (length--) {\n var index = indexes[length];\n array[length] = isIndex(index, arrLength) ? oldArray[index] : undefined;\n }\n return array;\n }\n\n /**\n * Gets the value at `key`, unless `key` is \"__proto__\" or \"constructor\".\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\n function safeGet(object, key) {\n if (key === 'constructor' && typeof object[key] === 'function') {\n return;\n }\n\n if (key == '__proto__') {\n return;\n }\n\n return object[key];\n }\n\n /**\n * Sets metadata for `func`.\n *\n * **Note:** If this function becomes hot, i.e. is invoked a lot in a short\n * period of time, it will trip its breaker and transition to an identity\n * function to avoid garbage collection pauses in V8. See\n * [V8 issue 2070](https://bugs.chromium.org/p/v8/issues/detail?id=2070)\n * for more details.\n *\n * @private\n * @param {Function} func The function to associate metadata with.\n * @param {*} data The metadata.\n * @returns {Function} Returns `func`.\n */\n var setData = shortOut(baseSetData);\n\n /**\n * A simple wrapper around the global [`setTimeout`](https://mdn.io/setTimeout).\n *\n * @private\n * @param {Function} func The function to delay.\n * @param {number} wait The number of milliseconds to delay invocation.\n * @returns {number|Object} Returns the timer id or timeout object.\n */\n var setTimeout = ctxSetTimeout || function(func, wait) {\n return root.setTimeout(func, wait);\n };\n\n /**\n * Sets the `toString` method of `func` to return `string`.\n *\n * @private\n * @param {Function} func The function to modify.\n * @param {Function} string The `toString` result.\n * @returns {Function} Returns `func`.\n */\n var setToString = shortOut(baseSetToString);\n\n /**\n * Sets the `toString` method of `wrapper` to mimic the source of `reference`\n * with wrapper details in a comment at the top of the source body.\n *\n * @private\n * @param {Function} wrapper The function to modify.\n * @param {Function} reference The reference function.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @returns {Function} Returns `wrapper`.\n */\n function setWrapToString(wrapper, reference, bitmask) {\n var source = (reference + '');\n return setToString(wrapper, insertWrapDetails(source, updateWrapDetails(getWrapDetails(source), bitmask)));\n }\n\n /**\n * Creates a function that'll short out and invoke `identity` instead\n * of `func` when it's called `HOT_COUNT` or more times in `HOT_SPAN`\n * milliseconds.\n *\n * @private\n * @param {Function} func The function to restrict.\n * @returns {Function} Returns the new shortable function.\n */\n function shortOut(func) {\n var count = 0,\n lastCalled = 0;\n\n return function() {\n var stamp = nativeNow(),\n remaining = HOT_SPAN - (stamp - lastCalled);\n\n lastCalled = stamp;\n if (remaining > 0) {\n if (++count >= HOT_COUNT) {\n return arguments[0];\n }\n } else {\n count = 0;\n }\n return func.apply(undefined, arguments);\n };\n }\n\n /**\n * A specialized version of `_.shuffle` which mutates and sets the size of `array`.\n *\n * @private\n * @param {Array} array The array to shuffle.\n * @param {number} [size=array.length] The size of `array`.\n * @returns {Array} Returns `array`.\n */\n function shuffleSelf(array, size) {\n var index = -1,\n length = array.length,\n lastIndex = length - 1;\n\n size = size === undefined ? length : size;\n while (++index < size) {\n var rand = baseRandom(index, lastIndex),\n value = array[rand];\n\n array[rand] = array[index];\n array[index] = value;\n }\n array.length = size;\n return array;\n }\n\n /**\n * Converts `string` to a property path array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the property path array.\n */\n var stringToPath = memoizeCapped(function(string) {\n var result = [];\n if (string.charCodeAt(0) === 46 /* . */) {\n result.push('');\n }\n string.replace(rePropName, function(match, number, quote, subString) {\n result.push(quote ? subString.replace(reEscapeChar, '$1') : (number || match));\n });\n return result;\n });\n\n /**\n * Converts `value` to a string key if it's not a string or symbol.\n *\n * @private\n * @param {*} value The value to inspect.\n * @returns {string|symbol} Returns the key.\n */\n function toKey(value) {\n if (typeof value == 'string' || isSymbol(value)) {\n return value;\n }\n var result = (value + '');\n return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n }\n\n /**\n * Converts `func` to its source code.\n *\n * @private\n * @param {Function} func The function to convert.\n * @returns {string} Returns the source code.\n */\n function toSource(func) {\n if (func != null) {\n try {\n return funcToString.call(func);\n } catch (e) {}\n try {\n return (func + '');\n } catch (e) {}\n }\n return '';\n }\n\n /**\n * Updates wrapper `details` based on `bitmask` flags.\n *\n * @private\n * @returns {Array} details The details to modify.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @returns {Array} Returns `details`.\n */\n function updateWrapDetails(details, bitmask) {\n arrayEach(wrapFlags, function(pair) {\n var value = '_.' + pair[0];\n if ((bitmask & pair[1]) && !arrayIncludes(details, value)) {\n details.push(value);\n }\n });\n return details.sort();\n }\n\n /**\n * Creates a clone of `wrapper`.\n *\n * @private\n * @param {Object} wrapper The wrapper to clone.\n * @returns {Object} Returns the cloned wrapper.\n */\n function wrapperClone(wrapper) {\n if (wrapper instanceof LazyWrapper) {\n return wrapper.clone();\n }\n var result = new LodashWrapper(wrapper.__wrapped__, wrapper.__chain__);\n result.__actions__ = copyArray(wrapper.__actions__);\n result.__index__ = wrapper.__index__;\n result.__values__ = wrapper.__values__;\n return result;\n }\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates an array of elements split into groups the length of `size`.\n * If `array` can't be split evenly, the final chunk will be the remaining\n * elements.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to process.\n * @param {number} [size=1] The length of each chunk\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Array} Returns the new array of chunks.\n * @example\n *\n * _.chunk(['a', 'b', 'c', 'd'], 2);\n * // => [['a', 'b'], ['c', 'd']]\n *\n * _.chunk(['a', 'b', 'c', 'd'], 3);\n * // => [['a', 'b', 'c'], ['d']]\n */\n function chunk(array, size, guard) {\n if ((guard ? isIterateeCall(array, size, guard) : size === undefined)) {\n size = 1;\n } else {\n size = nativeMax(toInteger(size), 0);\n }\n var length = array == null ? 0 : array.length;\n if (!length || size < 1) {\n return [];\n }\n var index = 0,\n resIndex = 0,\n result = Array(nativeCeil(length / size));\n\n while (index < length) {\n result[resIndex++] = baseSlice(array, index, (index += size));\n }\n return result;\n }\n\n /**\n * Creates an array with all falsey values removed. The values `false`, `null`,\n * `0`, `\"\"`, `undefined`, and `NaN` are falsey.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to compact.\n * @returns {Array} Returns the new array of filtered values.\n * @example\n *\n * _.compact([0, 1, false, 2, '', 3]);\n * // => [1, 2, 3]\n */\n function compact(array) {\n var index = -1,\n length = array == null ? 0 : array.length,\n resIndex = 0,\n result = [];\n\n while (++index < length) {\n var value = array[index];\n if (value) {\n result[resIndex++] = value;\n }\n }\n return result;\n }\n\n /**\n * Creates a new array concatenating `array` with any additional arrays\n * and/or values.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to concatenate.\n * @param {...*} [values] The values to concatenate.\n * @returns {Array} Returns the new concatenated array.\n * @example\n *\n * var array = [1];\n * var other = _.concat(array, 2, [3], [[4]]);\n *\n * console.log(other);\n * // => [1, 2, 3, [4]]\n *\n * console.log(array);\n * // => [1]\n */\n function concat() {\n var length = arguments.length;\n if (!length) {\n return [];\n }\n var args = Array(length - 1),\n array = arguments[0],\n index = length;\n\n while (index--) {\n args[index - 1] = arguments[index];\n }\n return arrayPush(isArray(array) ? copyArray(array) : [array], baseFlatten(args, 1));\n }\n\n /**\n * Creates an array of `array` values not included in the other given arrays\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons. The order and references of result values are\n * determined by the first array.\n *\n * **Note:** Unlike `_.pullAll`, this method returns a new array.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {...Array} [values] The values to exclude.\n * @returns {Array} Returns the new array of filtered values.\n * @see _.without, _.xor\n * @example\n *\n * _.difference([2, 1], [2, 3]);\n * // => [1]\n */\n var difference = baseRest(function(array, values) {\n return isArrayLikeObject(array)\n ? baseDifference(array, baseFlatten(values, 1, isArrayLikeObject, true))\n : [];\n });\n\n /**\n * This method is like `_.difference` except that it accepts `iteratee` which\n * is invoked for each element of `array` and `values` to generate the criterion\n * by which they're compared. The order and references of result values are\n * determined by the first array. The iteratee is invoked with one argument:\n * (value).\n *\n * **Note:** Unlike `_.pullAllBy`, this method returns a new array.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {...Array} [values] The values to exclude.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {Array} Returns the new array of filtered values.\n * @example\n *\n * _.differenceBy([2.1, 1.2], [2.3, 3.4], Math.floor);\n * // => [1.2]\n *\n * // The `_.property` iteratee shorthand.\n * _.differenceBy([{ 'x': 2 }, { 'x': 1 }], [{ 'x': 1 }], 'x');\n * // => [{ 'x': 2 }]\n */\n var differenceBy = baseRest(function(array, values) {\n var iteratee = last(values);\n if (isArrayLikeObject(iteratee)) {\n iteratee = undefined;\n }\n return isArrayLikeObject(array)\n ? baseDifference(array, baseFlatten(values, 1, isArrayLikeObject, true), getIteratee(iteratee, 2))\n : [];\n });\n\n /**\n * This method is like `_.difference` except that it accepts `comparator`\n * which is invoked to compare elements of `array` to `values`. The order and\n * references of result values are determined by the first array. The comparator\n * is invoked with two arguments: (arrVal, othVal).\n *\n * **Note:** Unlike `_.pullAllWith`, this method returns a new array.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {...Array} [values] The values to exclude.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of filtered values.\n * @example\n *\n * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }];\n *\n * _.differenceWith(objects, [{ 'x': 1, 'y': 2 }], _.isEqual);\n * // => [{ 'x': 2, 'y': 1 }]\n */\n var differenceWith = baseRest(function(array, values) {\n var comparator = last(values);\n if (isArrayLikeObject(comparator)) {\n comparator = undefined;\n }\n return isArrayLikeObject(array)\n ? baseDifference(array, baseFlatten(values, 1, isArrayLikeObject, true), undefined, comparator)\n : [];\n });\n\n /**\n * Creates a slice of `array` with `n` elements dropped from the beginning.\n *\n * @static\n * @memberOf _\n * @since 0.5.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {number} [n=1] The number of elements to drop.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * _.drop([1, 2, 3]);\n * // => [2, 3]\n *\n * _.drop([1, 2, 3], 2);\n * // => [3]\n *\n * _.drop([1, 2, 3], 5);\n * // => []\n *\n * _.drop([1, 2, 3], 0);\n * // => [1, 2, 3]\n */\n function drop(array, n, guard) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return [];\n }\n n = (guard || n === undefined) ? 1 : toInteger(n);\n return baseSlice(array, n < 0 ? 0 : n, length);\n }\n\n /**\n * Creates a slice of `array` with `n` elements dropped from the end.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {number} [n=1] The number of elements to drop.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * _.dropRight([1, 2, 3]);\n * // => [1, 2]\n *\n * _.dropRight([1, 2, 3], 2);\n * // => [1]\n *\n * _.dropRight([1, 2, 3], 5);\n * // => []\n *\n * _.dropRight([1, 2, 3], 0);\n * // => [1, 2, 3]\n */\n function dropRight(array, n, guard) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return [];\n }\n n = (guard || n === undefined) ? 1 : toInteger(n);\n n = length - n;\n return baseSlice(array, 0, n < 0 ? 0 : n);\n }\n\n /**\n * Creates a slice of `array` excluding elements dropped from the end.\n * Elements are dropped until `predicate` returns falsey. The predicate is\n * invoked with three arguments: (value, index, array).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'active': true },\n * { 'user': 'fred', 'active': false },\n * { 'user': 'pebbles', 'active': false }\n * ];\n *\n * _.dropRightWhile(users, function(o) { return !o.active; });\n * // => objects for ['barney']\n *\n * // The `_.matches` iteratee shorthand.\n * _.dropRightWhile(users, { 'user': 'pebbles', 'active': false });\n * // => objects for ['barney', 'fred']\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.dropRightWhile(users, ['active', false]);\n * // => objects for ['barney']\n *\n * // The `_.property` iteratee shorthand.\n * _.dropRightWhile(users, 'active');\n * // => objects for ['barney', 'fred', 'pebbles']\n */\n function dropRightWhile(array, predicate) {\n return (array && array.length)\n ? baseWhile(array, getIteratee(predicate, 3), true, true)\n : [];\n }\n\n /**\n * Creates a slice of `array` excluding elements dropped from the beginning.\n * Elements are dropped until `predicate` returns falsey. The predicate is\n * invoked with three arguments: (value, index, array).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'active': false },\n * { 'user': 'fred', 'active': false },\n * { 'user': 'pebbles', 'active': true }\n * ];\n *\n * _.dropWhile(users, function(o) { return !o.active; });\n * // => objects for ['pebbles']\n *\n * // The `_.matches` iteratee shorthand.\n * _.dropWhile(users, { 'user': 'barney', 'active': false });\n * // => objects for ['fred', 'pebbles']\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.dropWhile(users, ['active', false]);\n * // => objects for ['pebbles']\n *\n * // The `_.property` iteratee shorthand.\n * _.dropWhile(users, 'active');\n * // => objects for ['barney', 'fred', 'pebbles']\n */\n function dropWhile(array, predicate) {\n return (array && array.length)\n ? baseWhile(array, getIteratee(predicate, 3), true)\n : [];\n }\n\n /**\n * Fills elements of `array` with `value` from `start` up to, but not\n * including, `end`.\n *\n * **Note:** This method mutates `array`.\n *\n * @static\n * @memberOf _\n * @since 3.2.0\n * @category Array\n * @param {Array} array The array to fill.\n * @param {*} value The value to fill `array` with.\n * @param {number} [start=0] The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns `array`.\n * @example\n *\n * var array = [1, 2, 3];\n *\n * _.fill(array, 'a');\n * console.log(array);\n * // => ['a', 'a', 'a']\n *\n * _.fill(Array(3), 2);\n * // => [2, 2, 2]\n *\n * _.fill([4, 6, 8, 10], '*', 1, 3);\n * // => [4, '*', '*', 10]\n */\n function fill(array, value, start, end) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return [];\n }\n if (start && typeof start != 'number' && isIterateeCall(array, value, start)) {\n start = 0;\n end = length;\n }\n return baseFill(array, value, start, end);\n }\n\n /**\n * This method is like `_.find` except that it returns the index of the first\n * element `predicate` returns truthy for instead of the element itself.\n *\n * @static\n * @memberOf _\n * @since 1.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param {number} [fromIndex=0] The index to search from.\n * @returns {number} Returns the index of the found element, else `-1`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'active': false },\n * { 'user': 'fred', 'active': false },\n * { 'user': 'pebbles', 'active': true }\n * ];\n *\n * _.findIndex(users, function(o) { return o.user == 'barney'; });\n * // => 0\n *\n * // The `_.matches` iteratee shorthand.\n * _.findIndex(users, { 'user': 'fred', 'active': false });\n * // => 1\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.findIndex(users, ['active', false]);\n * // => 0\n *\n * // The `_.property` iteratee shorthand.\n * _.findIndex(users, 'active');\n * // => 2\n */\n function findIndex(array, predicate, fromIndex) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return -1;\n }\n var index = fromIndex == null ? 0 : toInteger(fromIndex);\n if (index < 0) {\n index = nativeMax(length + index, 0);\n }\n return baseFindIndex(array, getIteratee(predicate, 3), index);\n }\n\n /**\n * This method is like `_.findIndex` except that it iterates over elements\n * of `collection` from right to left.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param {number} [fromIndex=array.length-1] The index to search from.\n * @returns {number} Returns the index of the found element, else `-1`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'active': true },\n * { 'user': 'fred', 'active': false },\n * { 'user': 'pebbles', 'active': false }\n * ];\n *\n * _.findLastIndex(users, function(o) { return o.user == 'pebbles'; });\n * // => 2\n *\n * // The `_.matches` iteratee shorthand.\n * _.findLastIndex(users, { 'user': 'barney', 'active': true });\n * // => 0\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.findLastIndex(users, ['active', false]);\n * // => 2\n *\n * // The `_.property` iteratee shorthand.\n * _.findLastIndex(users, 'active');\n * // => 0\n */\n function findLastIndex(array, predicate, fromIndex) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return -1;\n }\n var index = length - 1;\n if (fromIndex !== undefined) {\n index = toInteger(fromIndex);\n index = fromIndex < 0\n ? nativeMax(length + index, 0)\n : nativeMin(index, length - 1);\n }\n return baseFindIndex(array, getIteratee(predicate, 3), index, true);\n }\n\n /**\n * Flattens `array` a single level deep.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to flatten.\n * @returns {Array} Returns the new flattened array.\n * @example\n *\n * _.flatten([1, [2, [3, [4]], 5]]);\n * // => [1, 2, [3, [4]], 5]\n */\n function flatten(array) {\n var length = array == null ? 0 : array.length;\n return length ? baseFlatten(array, 1) : [];\n }\n\n /**\n * Recursively flattens `array`.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to flatten.\n * @returns {Array} Returns the new flattened array.\n * @example\n *\n * _.flattenDeep([1, [2, [3, [4]], 5]]);\n * // => [1, 2, 3, 4, 5]\n */\n function flattenDeep(array) {\n var length = array == null ? 0 : array.length;\n return length ? baseFlatten(array, INFINITY) : [];\n }\n\n /**\n * Recursively flatten `array` up to `depth` times.\n *\n * @static\n * @memberOf _\n * @since 4.4.0\n * @category Array\n * @param {Array} array The array to flatten.\n * @param {number} [depth=1] The maximum recursion depth.\n * @returns {Array} Returns the new flattened array.\n * @example\n *\n * var array = [1, [2, [3, [4]], 5]];\n *\n * _.flattenDepth(array, 1);\n * // => [1, 2, [3, [4]], 5]\n *\n * _.flattenDepth(array, 2);\n * // => [1, 2, 3, [4], 5]\n */\n function flattenDepth(array, depth) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return [];\n }\n depth = depth === undefined ? 1 : toInteger(depth);\n return baseFlatten(array, depth);\n }\n\n /**\n * The inverse of `_.toPairs`; this method returns an object composed\n * from key-value `pairs`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} pairs The key-value pairs.\n * @returns {Object} Returns the new object.\n * @example\n *\n * _.fromPairs([['a', 1], ['b', 2]]);\n * // => { 'a': 1, 'b': 2 }\n */\n function fromPairs(pairs) {\n var index = -1,\n length = pairs == null ? 0 : pairs.length,\n result = {};\n\n while (++index < length) {\n var pair = pairs[index];\n result[pair[0]] = pair[1];\n }\n return result;\n }\n\n /**\n * Gets the first element of `array`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @alias first\n * @category Array\n * @param {Array} array The array to query.\n * @returns {*} Returns the first element of `array`.\n * @example\n *\n * _.head([1, 2, 3]);\n * // => 1\n *\n * _.head([]);\n * // => undefined\n */\n function head(array) {\n return (array && array.length) ? array[0] : undefined;\n }\n\n /**\n * Gets the index at which the first occurrence of `value` is found in `array`\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons. If `fromIndex` is negative, it's used as the\n * offset from the end of `array`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} [fromIndex=0] The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n * @example\n *\n * _.indexOf([1, 2, 1, 2], 2);\n * // => 1\n *\n * // Search from the `fromIndex`.\n * _.indexOf([1, 2, 1, 2], 2, 2);\n * // => 3\n */\n function indexOf(array, value, fromIndex) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return -1;\n }\n var index = fromIndex == null ? 0 : toInteger(fromIndex);\n if (index < 0) {\n index = nativeMax(length + index, 0);\n }\n return baseIndexOf(array, value, index);\n }\n\n /**\n * Gets all but the last element of `array`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to query.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * _.initial([1, 2, 3]);\n * // => [1, 2]\n */\n function initial(array) {\n var length = array == null ? 0 : array.length;\n return length ? baseSlice(array, 0, -1) : [];\n }\n\n /**\n * Creates an array of unique values that are included in all given arrays\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons. The order and references of result values are\n * determined by the first array.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @returns {Array} Returns the new array of intersecting values.\n * @example\n *\n * _.intersection([2, 1], [2, 3]);\n * // => [2]\n */\n var intersection = baseRest(function(arrays) {\n var mapped = arrayMap(arrays, castArrayLikeObject);\n return (mapped.length && mapped[0] === arrays[0])\n ? baseIntersection(mapped)\n : [];\n });\n\n /**\n * This method is like `_.intersection` except that it accepts `iteratee`\n * which is invoked for each element of each `arrays` to generate the criterion\n * by which they're compared. The order and references of result values are\n * determined by the first array. The iteratee is invoked with one argument:\n * (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {Array} Returns the new array of intersecting values.\n * @example\n *\n * _.intersectionBy([2.1, 1.2], [2.3, 3.4], Math.floor);\n * // => [2.1]\n *\n * // The `_.property` iteratee shorthand.\n * _.intersectionBy([{ 'x': 1 }], [{ 'x': 2 }, { 'x': 1 }], 'x');\n * // => [{ 'x': 1 }]\n */\n var intersectionBy = baseRest(function(arrays) {\n var iteratee = last(arrays),\n mapped = arrayMap(arrays, castArrayLikeObject);\n\n if (iteratee === last(mapped)) {\n iteratee = undefined;\n } else {\n mapped.pop();\n }\n return (mapped.length && mapped[0] === arrays[0])\n ? baseIntersection(mapped, getIteratee(iteratee, 2))\n : [];\n });\n\n /**\n * This method is like `_.intersection` except that it accepts `comparator`\n * which is invoked to compare elements of `arrays`. The order and references\n * of result values are determined by the first array. The comparator is\n * invoked with two arguments: (arrVal, othVal).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of intersecting values.\n * @example\n *\n * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }];\n * var others = [{ 'x': 1, 'y': 1 }, { 'x': 1, 'y': 2 }];\n *\n * _.intersectionWith(objects, others, _.isEqual);\n * // => [{ 'x': 1, 'y': 2 }]\n */\n var intersectionWith = baseRest(function(arrays) {\n var comparator = last(arrays),\n mapped = arrayMap(arrays, castArrayLikeObject);\n\n comparator = typeof comparator == 'function' ? comparator : undefined;\n if (comparator) {\n mapped.pop();\n }\n return (mapped.length && mapped[0] === arrays[0])\n ? baseIntersection(mapped, undefined, comparator)\n : [];\n });\n\n /**\n * Converts all elements in `array` into a string separated by `separator`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to convert.\n * @param {string} [separator=','] The element separator.\n * @returns {string} Returns the joined string.\n * @example\n *\n * _.join(['a', 'b', 'c'], '~');\n * // => 'a~b~c'\n */\n function join(array, separator) {\n return array == null ? '' : nativeJoin.call(array, separator);\n }\n\n /**\n * Gets the last element of `array`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to query.\n * @returns {*} Returns the last element of `array`.\n * @example\n *\n * _.last([1, 2, 3]);\n * // => 3\n */\n function last(array) {\n var length = array == null ? 0 : array.length;\n return length ? array[length - 1] : undefined;\n }\n\n /**\n * This method is like `_.indexOf` except that it iterates over elements of\n * `array` from right to left.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} [fromIndex=array.length-1] The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n * @example\n *\n * _.lastIndexOf([1, 2, 1, 2], 2);\n * // => 3\n *\n * // Search from the `fromIndex`.\n * _.lastIndexOf([1, 2, 1, 2], 2, 2);\n * // => 1\n */\n function lastIndexOf(array, value, fromIndex) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return -1;\n }\n var index = length;\n if (fromIndex !== undefined) {\n index = toInteger(fromIndex);\n index = index < 0 ? nativeMax(length + index, 0) : nativeMin(index, length - 1);\n }\n return value === value\n ? strictLastIndexOf(array, value, index)\n : baseFindIndex(array, baseIsNaN, index, true);\n }\n\n /**\n * Gets the element at index `n` of `array`. If `n` is negative, the nth\n * element from the end is returned.\n *\n * @static\n * @memberOf _\n * @since 4.11.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {number} [n=0] The index of the element to return.\n * @returns {*} Returns the nth element of `array`.\n * @example\n *\n * var array = ['a', 'b', 'c', 'd'];\n *\n * _.nth(array, 1);\n * // => 'b'\n *\n * _.nth(array, -2);\n * // => 'c';\n */\n function nth(array, n) {\n return (array && array.length) ? baseNth(array, toInteger(n)) : undefined;\n }\n\n /**\n * Removes all given values from `array` using\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * **Note:** Unlike `_.without`, this method mutates `array`. Use `_.remove`\n * to remove elements from an array by predicate.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Array\n * @param {Array} array The array to modify.\n * @param {...*} [values] The values to remove.\n * @returns {Array} Returns `array`.\n * @example\n *\n * var array = ['a', 'b', 'c', 'a', 'b', 'c'];\n *\n * _.pull(array, 'a', 'c');\n * console.log(array);\n * // => ['b', 'b']\n */\n var pull = baseRest(pullAll);\n\n /**\n * This method is like `_.pull` except that it accepts an array of values to remove.\n *\n * **Note:** Unlike `_.difference`, this method mutates `array`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to modify.\n * @param {Array} values The values to remove.\n * @returns {Array} Returns `array`.\n * @example\n *\n * var array = ['a', 'b', 'c', 'a', 'b', 'c'];\n *\n * _.pullAll(array, ['a', 'c']);\n * console.log(array);\n * // => ['b', 'b']\n */\n function pullAll(array, values) {\n return (array && array.length && values && values.length)\n ? basePullAll(array, values)\n : array;\n }\n\n /**\n * This method is like `_.pullAll` except that it accepts `iteratee` which is\n * invoked for each element of `array` and `values` to generate the criterion\n * by which they're compared. The iteratee is invoked with one argument: (value).\n *\n * **Note:** Unlike `_.differenceBy`, this method mutates `array`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to modify.\n * @param {Array} values The values to remove.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {Array} Returns `array`.\n * @example\n *\n * var array = [{ 'x': 1 }, { 'x': 2 }, { 'x': 3 }, { 'x': 1 }];\n *\n * _.pullAllBy(array, [{ 'x': 1 }, { 'x': 3 }], 'x');\n * console.log(array);\n * // => [{ 'x': 2 }]\n */\n function pullAllBy(array, values, iteratee) {\n return (array && array.length && values && values.length)\n ? basePullAll(array, values, getIteratee(iteratee, 2))\n : array;\n }\n\n /**\n * This method is like `_.pullAll` except that it accepts `comparator` which\n * is invoked to compare elements of `array` to `values`. The comparator is\n * invoked with two arguments: (arrVal, othVal).\n *\n * **Note:** Unlike `_.differenceWith`, this method mutates `array`.\n *\n * @static\n * @memberOf _\n * @since 4.6.0\n * @category Array\n * @param {Array} array The array to modify.\n * @param {Array} values The values to remove.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns `array`.\n * @example\n *\n * var array = [{ 'x': 1, 'y': 2 }, { 'x': 3, 'y': 4 }, { 'x': 5, 'y': 6 }];\n *\n * _.pullAllWith(array, [{ 'x': 3, 'y': 4 }], _.isEqual);\n * console.log(array);\n * // => [{ 'x': 1, 'y': 2 }, { 'x': 5, 'y': 6 }]\n */\n function pullAllWith(array, values, comparator) {\n return (array && array.length && values && values.length)\n ? basePullAll(array, values, undefined, comparator)\n : array;\n }\n\n /**\n * Removes elements from `array` corresponding to `indexes` and returns an\n * array of removed elements.\n *\n * **Note:** Unlike `_.at`, this method mutates `array`.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to modify.\n * @param {...(number|number[])} [indexes] The indexes of elements to remove.\n * @returns {Array} Returns the new array of removed elements.\n * @example\n *\n * var array = ['a', 'b', 'c', 'd'];\n * var pulled = _.pullAt(array, [1, 3]);\n *\n * console.log(array);\n * // => ['a', 'c']\n *\n * console.log(pulled);\n * // => ['b', 'd']\n */\n var pullAt = flatRest(function(array, indexes) {\n var length = array == null ? 0 : array.length,\n result = baseAt(array, indexes);\n\n basePullAt(array, arrayMap(indexes, function(index) {\n return isIndex(index, length) ? +index : index;\n }).sort(compareAscending));\n\n return result;\n });\n\n /**\n * Removes all elements from `array` that `predicate` returns truthy for\n * and returns an array of the removed elements. The predicate is invoked\n * with three arguments: (value, index, array).\n *\n * **Note:** Unlike `_.filter`, this method mutates `array`. Use `_.pull`\n * to pull elements from an array by value.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Array\n * @param {Array} array The array to modify.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new array of removed elements.\n * @example\n *\n * var array = [1, 2, 3, 4];\n * var evens = _.remove(array, function(n) {\n * return n % 2 == 0;\n * });\n *\n * console.log(array);\n * // => [1, 3]\n *\n * console.log(evens);\n * // => [2, 4]\n */\n function remove(array, predicate) {\n var result = [];\n if (!(array && array.length)) {\n return result;\n }\n var index = -1,\n indexes = [],\n length = array.length;\n\n predicate = getIteratee(predicate, 3);\n while (++index < length) {\n var value = array[index];\n if (predicate(value, index, array)) {\n result.push(value);\n indexes.push(index);\n }\n }\n basePullAt(array, indexes);\n return result;\n }\n\n /**\n * Reverses `array` so that the first element becomes the last, the second\n * element becomes the second to last, and so on.\n *\n * **Note:** This method mutates `array` and is based on\n * [`Array#reverse`](https://mdn.io/Array/reverse).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to modify.\n * @returns {Array} Returns `array`.\n * @example\n *\n * var array = [1, 2, 3];\n *\n * _.reverse(array);\n * // => [3, 2, 1]\n *\n * console.log(array);\n * // => [3, 2, 1]\n */\n function reverse(array) {\n return array == null ? array : nativeReverse.call(array);\n }\n\n /**\n * Creates a slice of `array` from `start` up to, but not including, `end`.\n *\n * **Note:** This method is used instead of\n * [`Array#slice`](https://mdn.io/Array/slice) to ensure dense arrays are\n * returned.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to slice.\n * @param {number} [start=0] The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns the slice of `array`.\n */\n function slice(array, start, end) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return [];\n }\n if (end && typeof end != 'number' && isIterateeCall(array, start, end)) {\n start = 0;\n end = length;\n }\n else {\n start = start == null ? 0 : toInteger(start);\n end = end === undefined ? length : toInteger(end);\n }\n return baseSlice(array, start, end);\n }\n\n /**\n * Uses a binary search to determine the lowest index at which `value`\n * should be inserted into `array` in order to maintain its sort order.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The sorted array to inspect.\n * @param {*} value The value to evaluate.\n * @returns {number} Returns the index at which `value` should be inserted\n * into `array`.\n * @example\n *\n * _.sortedIndex([30, 50], 40);\n * // => 1\n */\n function sortedIndex(array, value) {\n return baseSortedIndex(array, value);\n }\n\n /**\n * This method is like `_.sortedIndex` except that it accepts `iteratee`\n * which is invoked for `value` and each element of `array` to compute their\n * sort ranking. The iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The sorted array to inspect.\n * @param {*} value The value to evaluate.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {number} Returns the index at which `value` should be inserted\n * into `array`.\n * @example\n *\n * var objects = [{ 'x': 4 }, { 'x': 5 }];\n *\n * _.sortedIndexBy(objects, { 'x': 4 }, function(o) { return o.x; });\n * // => 0\n *\n * // The `_.property` iteratee shorthand.\n * _.sortedIndexBy(objects, { 'x': 4 }, 'x');\n * // => 0\n */\n function sortedIndexBy(array, value, iteratee) {\n return baseSortedIndexBy(array, value, getIteratee(iteratee, 2));\n }\n\n /**\n * This method is like `_.indexOf` except that it performs a binary\n * search on a sorted `array`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n * @example\n *\n * _.sortedIndexOf([4, 5, 5, 5, 6], 5);\n * // => 1\n */\n function sortedIndexOf(array, value) {\n var length = array == null ? 0 : array.length;\n if (length) {\n var index = baseSortedIndex(array, value);\n if (index < length && eq(array[index], value)) {\n return index;\n }\n }\n return -1;\n }\n\n /**\n * This method is like `_.sortedIndex` except that it returns the highest\n * index at which `value` should be inserted into `array` in order to\n * maintain its sort order.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The sorted array to inspect.\n * @param {*} value The value to evaluate.\n * @returns {number} Returns the index at which `value` should be inserted\n * into `array`.\n * @example\n *\n * _.sortedLastIndex([4, 5, 5, 5, 6], 5);\n * // => 4\n */\n function sortedLastIndex(array, value) {\n return baseSortedIndex(array, value, true);\n }\n\n /**\n * This method is like `_.sortedLastIndex` except that it accepts `iteratee`\n * which is invoked for `value` and each element of `array` to compute their\n * sort ranking. The iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The sorted array to inspect.\n * @param {*} value The value to evaluate.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {number} Returns the index at which `value` should be inserted\n * into `array`.\n * @example\n *\n * var objects = [{ 'x': 4 }, { 'x': 5 }];\n *\n * _.sortedLastIndexBy(objects, { 'x': 4 }, function(o) { return o.x; });\n * // => 1\n *\n * // The `_.property` iteratee shorthand.\n * _.sortedLastIndexBy(objects, { 'x': 4 }, 'x');\n * // => 1\n */\n function sortedLastIndexBy(array, value, iteratee) {\n return baseSortedIndexBy(array, value, getIteratee(iteratee, 2), true);\n }\n\n /**\n * This method is like `_.lastIndexOf` except that it performs a binary\n * search on a sorted `array`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n * @example\n *\n * _.sortedLastIndexOf([4, 5, 5, 5, 6], 5);\n * // => 3\n */\n function sortedLastIndexOf(array, value) {\n var length = array == null ? 0 : array.length;\n if (length) {\n var index = baseSortedIndex(array, value, true) - 1;\n if (eq(array[index], value)) {\n return index;\n }\n }\n return -1;\n }\n\n /**\n * This method is like `_.uniq` except that it's designed and optimized\n * for sorted arrays.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @returns {Array} Returns the new duplicate free array.\n * @example\n *\n * _.sortedUniq([1, 1, 2]);\n * // => [1, 2]\n */\n function sortedUniq(array) {\n return (array && array.length)\n ? baseSortedUniq(array)\n : [];\n }\n\n /**\n * This method is like `_.uniqBy` except that it's designed and optimized\n * for sorted arrays.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @returns {Array} Returns the new duplicate free array.\n * @example\n *\n * _.sortedUniqBy([1.1, 1.2, 2.3, 2.4], Math.floor);\n * // => [1.1, 2.3]\n */\n function sortedUniqBy(array, iteratee) {\n return (array && array.length)\n ? baseSortedUniq(array, getIteratee(iteratee, 2))\n : [];\n }\n\n /**\n * Gets all but the first element of `array`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to query.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * _.tail([1, 2, 3]);\n * // => [2, 3]\n */\n function tail(array) {\n var length = array == null ? 0 : array.length;\n return length ? baseSlice(array, 1, length) : [];\n }\n\n /**\n * Creates a slice of `array` with `n` elements taken from the beginning.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {number} [n=1] The number of elements to take.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * _.take([1, 2, 3]);\n * // => [1]\n *\n * _.take([1, 2, 3], 2);\n * // => [1, 2]\n *\n * _.take([1, 2, 3], 5);\n * // => [1, 2, 3]\n *\n * _.take([1, 2, 3], 0);\n * // => []\n */\n function take(array, n, guard) {\n if (!(array && array.length)) {\n return [];\n }\n n = (guard || n === undefined) ? 1 : toInteger(n);\n return baseSlice(array, 0, n < 0 ? 0 : n);\n }\n\n /**\n * Creates a slice of `array` with `n` elements taken from the end.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {number} [n=1] The number of elements to take.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * _.takeRight([1, 2, 3]);\n * // => [3]\n *\n * _.takeRight([1, 2, 3], 2);\n * // => [2, 3]\n *\n * _.takeRight([1, 2, 3], 5);\n * // => [1, 2, 3]\n *\n * _.takeRight([1, 2, 3], 0);\n * // => []\n */\n function takeRight(array, n, guard) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return [];\n }\n n = (guard || n === undefined) ? 1 : toInteger(n);\n n = length - n;\n return baseSlice(array, n < 0 ? 0 : n, length);\n }\n\n /**\n * Creates a slice of `array` with elements taken from the end. Elements are\n * taken until `predicate` returns falsey. The predicate is invoked with\n * three arguments: (value, index, array).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'active': true },\n * { 'user': 'fred', 'active': false },\n * { 'user': 'pebbles', 'active': false }\n * ];\n *\n * _.takeRightWhile(users, function(o) { return !o.active; });\n * // => objects for ['fred', 'pebbles']\n *\n * // The `_.matches` iteratee shorthand.\n * _.takeRightWhile(users, { 'user': 'pebbles', 'active': false });\n * // => objects for ['pebbles']\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.takeRightWhile(users, ['active', false]);\n * // => objects for ['fred', 'pebbles']\n *\n * // The `_.property` iteratee shorthand.\n * _.takeRightWhile(users, 'active');\n * // => []\n */\n function takeRightWhile(array, predicate) {\n return (array && array.length)\n ? baseWhile(array, getIteratee(predicate, 3), false, true)\n : [];\n }\n\n /**\n * Creates a slice of `array` with elements taken from the beginning. Elements\n * are taken until `predicate` returns falsey. The predicate is invoked with\n * three arguments: (value, index, array).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'active': false },\n * { 'user': 'fred', 'active': false },\n * { 'user': 'pebbles', 'active': true }\n * ];\n *\n * _.takeWhile(users, function(o) { return !o.active; });\n * // => objects for ['barney', 'fred']\n *\n * // The `_.matches` iteratee shorthand.\n * _.takeWhile(users, { 'user': 'barney', 'active': false });\n * // => objects for ['barney']\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.takeWhile(users, ['active', false]);\n * // => objects for ['barney', 'fred']\n *\n * // The `_.property` iteratee shorthand.\n * _.takeWhile(users, 'active');\n * // => []\n */\n function takeWhile(array, predicate) {\n return (array && array.length)\n ? baseWhile(array, getIteratee(predicate, 3))\n : [];\n }\n\n /**\n * Creates an array of unique values, in order, from all given arrays using\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @returns {Array} Returns the new array of combined values.\n * @example\n *\n * _.union([2], [1, 2]);\n * // => [2, 1]\n */\n var union = baseRest(function(arrays) {\n return baseUniq(baseFlatten(arrays, 1, isArrayLikeObject, true));\n });\n\n /**\n * This method is like `_.union` except that it accepts `iteratee` which is\n * invoked for each element of each `arrays` to generate the criterion by\n * which uniqueness is computed. Result values are chosen from the first\n * array in which the value occurs. The iteratee is invoked with one argument:\n * (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {Array} Returns the new array of combined values.\n * @example\n *\n * _.unionBy([2.1], [1.2, 2.3], Math.floor);\n * // => [2.1, 1.2]\n *\n * // The `_.property` iteratee shorthand.\n * _.unionBy([{ 'x': 1 }], [{ 'x': 2 }, { 'x': 1 }], 'x');\n * // => [{ 'x': 1 }, { 'x': 2 }]\n */\n var unionBy = baseRest(function(arrays) {\n var iteratee = last(arrays);\n if (isArrayLikeObject(iteratee)) {\n iteratee = undefined;\n }\n return baseUniq(baseFlatten(arrays, 1, isArrayLikeObject, true), getIteratee(iteratee, 2));\n });\n\n /**\n * This method is like `_.union` except that it accepts `comparator` which\n * is invoked to compare elements of `arrays`. Result values are chosen from\n * the first array in which the value occurs. The comparator is invoked\n * with two arguments: (arrVal, othVal).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of combined values.\n * @example\n *\n * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }];\n * var others = [{ 'x': 1, 'y': 1 }, { 'x': 1, 'y': 2 }];\n *\n * _.unionWith(objects, others, _.isEqual);\n * // => [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }, { 'x': 1, 'y': 1 }]\n */\n var unionWith = baseRest(function(arrays) {\n var comparator = last(arrays);\n comparator = typeof comparator == 'function' ? comparator : undefined;\n return baseUniq(baseFlatten(arrays, 1, isArrayLikeObject, true), undefined, comparator);\n });\n\n /**\n * Creates a duplicate-free version of an array, using\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons, in which only the first occurrence of each element\n * is kept. The order of result values is determined by the order they occur\n * in the array.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @returns {Array} Returns the new duplicate free array.\n * @example\n *\n * _.uniq([2, 1, 2]);\n * // => [2, 1]\n */\n function uniq(array) {\n return (array && array.length) ? baseUniq(array) : [];\n }\n\n /**\n * This method is like `_.uniq` except that it accepts `iteratee` which is\n * invoked for each element in `array` to generate the criterion by which\n * uniqueness is computed. The order of result values is determined by the\n * order they occur in the array. The iteratee is invoked with one argument:\n * (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {Array} Returns the new duplicate free array.\n * @example\n *\n * _.uniqBy([2.1, 1.2, 2.3], Math.floor);\n * // => [2.1, 1.2]\n *\n * // The `_.property` iteratee shorthand.\n * _.uniqBy([{ 'x': 1 }, { 'x': 2 }, { 'x': 1 }], 'x');\n * // => [{ 'x': 1 }, { 'x': 2 }]\n */\n function uniqBy(array, iteratee) {\n return (array && array.length) ? baseUniq(array, getIteratee(iteratee, 2)) : [];\n }\n\n /**\n * This method is like `_.uniq` except that it accepts `comparator` which\n * is invoked to compare elements of `array`. The order of result values is\n * determined by the order they occur in the array.The comparator is invoked\n * with two arguments: (arrVal, othVal).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new duplicate free array.\n * @example\n *\n * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }, { 'x': 1, 'y': 2 }];\n *\n * _.uniqWith(objects, _.isEqual);\n * // => [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }]\n */\n function uniqWith(array, comparator) {\n comparator = typeof comparator == 'function' ? comparator : undefined;\n return (array && array.length) ? baseUniq(array, undefined, comparator) : [];\n }\n\n /**\n * This method is like `_.zip` except that it accepts an array of grouped\n * elements and creates an array regrouping the elements to their pre-zip\n * configuration.\n *\n * @static\n * @memberOf _\n * @since 1.2.0\n * @category Array\n * @param {Array} array The array of grouped elements to process.\n * @returns {Array} Returns the new array of regrouped elements.\n * @example\n *\n * var zipped = _.zip(['a', 'b'], [1, 2], [true, false]);\n * // => [['a', 1, true], ['b', 2, false]]\n *\n * _.unzip(zipped);\n * // => [['a', 'b'], [1, 2], [true, false]]\n */\n function unzip(array) {\n if (!(array && array.length)) {\n return [];\n }\n var length = 0;\n array = arrayFilter(array, function(group) {\n if (isArrayLikeObject(group)) {\n length = nativeMax(group.length, length);\n return true;\n }\n });\n return baseTimes(length, function(index) {\n return arrayMap(array, baseProperty(index));\n });\n }\n\n /**\n * This method is like `_.unzip` except that it accepts `iteratee` to specify\n * how regrouped values should be combined. The iteratee is invoked with the\n * elements of each group: (...group).\n *\n * @static\n * @memberOf _\n * @since 3.8.0\n * @category Array\n * @param {Array} array The array of grouped elements to process.\n * @param {Function} [iteratee=_.identity] The function to combine\n * regrouped values.\n * @returns {Array} Returns the new array of regrouped elements.\n * @example\n *\n * var zipped = _.zip([1, 2], [10, 20], [100, 200]);\n * // => [[1, 10, 100], [2, 20, 200]]\n *\n * _.unzipWith(zipped, _.add);\n * // => [3, 30, 300]\n */\n function unzipWith(array, iteratee) {\n if (!(array && array.length)) {\n return [];\n }\n var result = unzip(array);\n if (iteratee == null) {\n return result;\n }\n return arrayMap(result, function(group) {\n return apply(iteratee, undefined, group);\n });\n }\n\n /**\n * Creates an array excluding all given values using\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * **Note:** Unlike `_.pull`, this method returns a new array.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {...*} [values] The values to exclude.\n * @returns {Array} Returns the new array of filtered values.\n * @see _.difference, _.xor\n * @example\n *\n * _.without([2, 1, 2, 3], 1, 2);\n * // => [3]\n */\n var without = baseRest(function(array, values) {\n return isArrayLikeObject(array)\n ? baseDifference(array, values)\n : [];\n });\n\n /**\n * Creates an array of unique values that is the\n * [symmetric difference](https://en.wikipedia.org/wiki/Symmetric_difference)\n * of the given arrays. The order of result values is determined by the order\n * they occur in the arrays.\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @returns {Array} Returns the new array of filtered values.\n * @see _.difference, _.without\n * @example\n *\n * _.xor([2, 1], [2, 3]);\n * // => [1, 3]\n */\n var xor = baseRest(function(arrays) {\n return baseXor(arrayFilter(arrays, isArrayLikeObject));\n });\n\n /**\n * This method is like `_.xor` except that it accepts `iteratee` which is\n * invoked for each element of each `arrays` to generate the criterion by\n * which by which they're compared. The order of result values is determined\n * by the order they occur in the arrays. The iteratee is invoked with one\n * argument: (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {Array} Returns the new array of filtered values.\n * @example\n *\n * _.xorBy([2.1, 1.2], [2.3, 3.4], Math.floor);\n * // => [1.2, 3.4]\n *\n * // The `_.property` iteratee shorthand.\n * _.xorBy([{ 'x': 1 }], [{ 'x': 2 }, { 'x': 1 }], 'x');\n * // => [{ 'x': 2 }]\n */\n var xorBy = baseRest(function(arrays) {\n var iteratee = last(arrays);\n if (isArrayLikeObject(iteratee)) {\n iteratee = undefined;\n }\n return baseXor(arrayFilter(arrays, isArrayLikeObject), getIteratee(iteratee, 2));\n });\n\n /**\n * This method is like `_.xor` except that it accepts `comparator` which is\n * invoked to compare elements of `arrays`. The order of result values is\n * determined by the order they occur in the arrays. The comparator is invoked\n * with two arguments: (arrVal, othVal).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of filtered values.\n * @example\n *\n * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }];\n * var others = [{ 'x': 1, 'y': 1 }, { 'x': 1, 'y': 2 }];\n *\n * _.xorWith(objects, others, _.isEqual);\n * // => [{ 'x': 2, 'y': 1 }, { 'x': 1, 'y': 1 }]\n */\n var xorWith = baseRest(function(arrays) {\n var comparator = last(arrays);\n comparator = typeof comparator == 'function' ? comparator : undefined;\n return baseXor(arrayFilter(arrays, isArrayLikeObject), undefined, comparator);\n });\n\n /**\n * Creates an array of grouped elements, the first of which contains the\n * first elements of the given arrays, the second of which contains the\n * second elements of the given arrays, and so on.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {...Array} [arrays] The arrays to process.\n * @returns {Array} Returns the new array of grouped elements.\n * @example\n *\n * _.zip(['a', 'b'], [1, 2], [true, false]);\n * // => [['a', 1, true], ['b', 2, false]]\n */\n var zip = baseRest(unzip);\n\n /**\n * This method is like `_.fromPairs` except that it accepts two arrays,\n * one of property identifiers and one of corresponding values.\n *\n * @static\n * @memberOf _\n * @since 0.4.0\n * @category Array\n * @param {Array} [props=[]] The property identifiers.\n * @param {Array} [values=[]] The property values.\n * @returns {Object} Returns the new object.\n * @example\n *\n * _.zipObject(['a', 'b'], [1, 2]);\n * // => { 'a': 1, 'b': 2 }\n */\n function zipObject(props, values) {\n return baseZipObject(props || [], values || [], assignValue);\n }\n\n /**\n * This method is like `_.zipObject` except that it supports property paths.\n *\n * @static\n * @memberOf _\n * @since 4.1.0\n * @category Array\n * @param {Array} [props=[]] The property identifiers.\n * @param {Array} [values=[]] The property values.\n * @returns {Object} Returns the new object.\n * @example\n *\n * _.zipObjectDeep(['a.b[0].c', 'a.b[1].d'], [1, 2]);\n * // => { 'a': { 'b': [{ 'c': 1 }, { 'd': 2 }] } }\n */\n function zipObjectDeep(props, values) {\n return baseZipObject(props || [], values || [], baseSet);\n }\n\n /**\n * This method is like `_.zip` except that it accepts `iteratee` to specify\n * how grouped values should be combined. The iteratee is invoked with the\n * elements of each group: (...group).\n *\n * @static\n * @memberOf _\n * @since 3.8.0\n * @category Array\n * @param {...Array} [arrays] The arrays to process.\n * @param {Function} [iteratee=_.identity] The function to combine\n * grouped values.\n * @returns {Array} Returns the new array of grouped elements.\n * @example\n *\n * _.zipWith([1, 2], [10, 20], [100, 200], function(a, b, c) {\n * return a + b + c;\n * });\n * // => [111, 222]\n */\n var zipWith = baseRest(function(arrays) {\n var length = arrays.length,\n iteratee = length > 1 ? arrays[length - 1] : undefined;\n\n iteratee = typeof iteratee == 'function' ? (arrays.pop(), iteratee) : undefined;\n return unzipWith(arrays, iteratee);\n });\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates a `lodash` wrapper instance that wraps `value` with explicit method\n * chain sequences enabled. The result of such sequences must be unwrapped\n * with `_#value`.\n *\n * @static\n * @memberOf _\n * @since 1.3.0\n * @category Seq\n * @param {*} value The value to wrap.\n * @returns {Object} Returns the new `lodash` wrapper instance.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36 },\n * { 'user': 'fred', 'age': 40 },\n * { 'user': 'pebbles', 'age': 1 }\n * ];\n *\n * var youngest = _\n * .chain(users)\n * .sortBy('age')\n * .map(function(o) {\n * return o.user + ' is ' + o.age;\n * })\n * .head()\n * .value();\n * // => 'pebbles is 1'\n */\n function chain(value) {\n var result = lodash(value);\n result.__chain__ = true;\n return result;\n }\n\n /**\n * This method invokes `interceptor` and returns `value`. The interceptor\n * is invoked with one argument; (value). The purpose of this method is to\n * \"tap into\" a method chain sequence in order to modify intermediate results.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Seq\n * @param {*} value The value to provide to `interceptor`.\n * @param {Function} interceptor The function to invoke.\n * @returns {*} Returns `value`.\n * @example\n *\n * _([1, 2, 3])\n * .tap(function(array) {\n * // Mutate input array.\n * array.pop();\n * })\n * .reverse()\n * .value();\n * // => [2, 1]\n */\n function tap(value, interceptor) {\n interceptor(value);\n return value;\n }\n\n /**\n * This method is like `_.tap` except that it returns the result of `interceptor`.\n * The purpose of this method is to \"pass thru\" values replacing intermediate\n * results in a method chain sequence.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Seq\n * @param {*} value The value to provide to `interceptor`.\n * @param {Function} interceptor The function to invoke.\n * @returns {*} Returns the result of `interceptor`.\n * @example\n *\n * _(' abc ')\n * .chain()\n * .trim()\n * .thru(function(value) {\n * return [value];\n * })\n * .value();\n * // => ['abc']\n */\n function thru(value, interceptor) {\n return interceptor(value);\n }\n\n /**\n * This method is the wrapper version of `_.at`.\n *\n * @name at\n * @memberOf _\n * @since 1.0.0\n * @category Seq\n * @param {...(string|string[])} [paths] The property paths to pick.\n * @returns {Object} Returns the new `lodash` wrapper instance.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }, 4] };\n *\n * _(object).at(['a[0].b.c', 'a[1]']).value();\n * // => [3, 4]\n */\n var wrapperAt = flatRest(function(paths) {\n var length = paths.length,\n start = length ? paths[0] : 0,\n value = this.__wrapped__,\n interceptor = function(object) { return baseAt(object, paths); };\n\n if (length > 1 || this.__actions__.length ||\n !(value instanceof LazyWrapper) || !isIndex(start)) {\n return this.thru(interceptor);\n }\n value = value.slice(start, +start + (length ? 1 : 0));\n value.__actions__.push({\n 'func': thru,\n 'args': [interceptor],\n 'thisArg': undefined\n });\n return new LodashWrapper(value, this.__chain__).thru(function(array) {\n if (length && !array.length) {\n array.push(undefined);\n }\n return array;\n });\n });\n\n /**\n * Creates a `lodash` wrapper instance with explicit method chain sequences enabled.\n *\n * @name chain\n * @memberOf _\n * @since 0.1.0\n * @category Seq\n * @returns {Object} Returns the new `lodash` wrapper instance.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36 },\n * { 'user': 'fred', 'age': 40 }\n * ];\n *\n * // A sequence without explicit chaining.\n * _(users).head();\n * // => { 'user': 'barney', 'age': 36 }\n *\n * // A sequence with explicit chaining.\n * _(users)\n * .chain()\n * .head()\n * .pick('user')\n * .value();\n * // => { 'user': 'barney' }\n */\n function wrapperChain() {\n return chain(this);\n }\n\n /**\n * Executes the chain sequence and returns the wrapped result.\n *\n * @name commit\n * @memberOf _\n * @since 3.2.0\n * @category Seq\n * @returns {Object} Returns the new `lodash` wrapper instance.\n * @example\n *\n * var array = [1, 2];\n * var wrapped = _(array).push(3);\n *\n * console.log(array);\n * // => [1, 2]\n *\n * wrapped = wrapped.commit();\n * console.log(array);\n * // => [1, 2, 3]\n *\n * wrapped.last();\n * // => 3\n *\n * console.log(array);\n * // => [1, 2, 3]\n */\n function wrapperCommit() {\n return new LodashWrapper(this.value(), this.__chain__);\n }\n\n /**\n * Gets the next value on a wrapped object following the\n * [iterator protocol](https://mdn.io/iteration_protocols#iterator).\n *\n * @name next\n * @memberOf _\n * @since 4.0.0\n * @category Seq\n * @returns {Object} Returns the next iterator value.\n * @example\n *\n * var wrapped = _([1, 2]);\n *\n * wrapped.next();\n * // => { 'done': false, 'value': 1 }\n *\n * wrapped.next();\n * // => { 'done': false, 'value': 2 }\n *\n * wrapped.next();\n * // => { 'done': true, 'value': undefined }\n */\n function wrapperNext() {\n if (this.__values__ === undefined) {\n this.__values__ = toArray(this.value());\n }\n var done = this.__index__ >= this.__values__.length,\n value = done ? undefined : this.__values__[this.__index__++];\n\n return { 'done': done, 'value': value };\n }\n\n /**\n * Enables the wrapper to be iterable.\n *\n * @name Symbol.iterator\n * @memberOf _\n * @since 4.0.0\n * @category Seq\n * @returns {Object} Returns the wrapper object.\n * @example\n *\n * var wrapped = _([1, 2]);\n *\n * wrapped[Symbol.iterator]() === wrapped;\n * // => true\n *\n * Array.from(wrapped);\n * // => [1, 2]\n */\n function wrapperToIterator() {\n return this;\n }\n\n /**\n * Creates a clone of the chain sequence planting `value` as the wrapped value.\n *\n * @name plant\n * @memberOf _\n * @since 3.2.0\n * @category Seq\n * @param {*} value The value to plant.\n * @returns {Object} Returns the new `lodash` wrapper instance.\n * @example\n *\n * function square(n) {\n * return n * n;\n * }\n *\n * var wrapped = _([1, 2]).map(square);\n * var other = wrapped.plant([3, 4]);\n *\n * other.value();\n * // => [9, 16]\n *\n * wrapped.value();\n * // => [1, 4]\n */\n function wrapperPlant(value) {\n var result,\n parent = this;\n\n while (parent instanceof baseLodash) {\n var clone = wrapperClone(parent);\n clone.__index__ = 0;\n clone.__values__ = undefined;\n if (result) {\n previous.__wrapped__ = clone;\n } else {\n result = clone;\n }\n var previous = clone;\n parent = parent.__wrapped__;\n }\n previous.__wrapped__ = value;\n return result;\n }\n\n /**\n * This method is the wrapper version of `_.reverse`.\n *\n * **Note:** This method mutates the wrapped array.\n *\n * @name reverse\n * @memberOf _\n * @since 0.1.0\n * @category Seq\n * @returns {Object} Returns the new `lodash` wrapper instance.\n * @example\n *\n * var array = [1, 2, 3];\n *\n * _(array).reverse().value()\n * // => [3, 2, 1]\n *\n * console.log(array);\n * // => [3, 2, 1]\n */\n function wrapperReverse() {\n var value = this.__wrapped__;\n if (value instanceof LazyWrapper) {\n var wrapped = value;\n if (this.__actions__.length) {\n wrapped = new LazyWrapper(this);\n }\n wrapped = wrapped.reverse();\n wrapped.__actions__.push({\n 'func': thru,\n 'args': [reverse],\n 'thisArg': undefined\n });\n return new LodashWrapper(wrapped, this.__chain__);\n }\n return this.thru(reverse);\n }\n\n /**\n * Executes the chain sequence to resolve the unwrapped value.\n *\n * @name value\n * @memberOf _\n * @since 0.1.0\n * @alias toJSON, valueOf\n * @category Seq\n * @returns {*} Returns the resolved unwrapped value.\n * @example\n *\n * _([1, 2, 3]).value();\n * // => [1, 2, 3]\n */\n function wrapperValue() {\n return baseWrapperValue(this.__wrapped__, this.__actions__);\n }\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates an object composed of keys generated from the results of running\n * each element of `collection` thru `iteratee`. The corresponding value of\n * each key is the number of times the key was returned by `iteratee`. The\n * iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 0.5.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The iteratee to transform keys.\n * @returns {Object} Returns the composed aggregate object.\n * @example\n *\n * _.countBy([6.1, 4.2, 6.3], Math.floor);\n * // => { '4': 1, '6': 2 }\n *\n * // The `_.property` iteratee shorthand.\n * _.countBy(['one', 'two', 'three'], 'length');\n * // => { '3': 2, '5': 1 }\n */\n var countBy = createAggregator(function(result, value, key) {\n if (hasOwnProperty.call(result, key)) {\n ++result[key];\n } else {\n baseAssignValue(result, key, 1);\n }\n });\n\n /**\n * Checks if `predicate` returns truthy for **all** elements of `collection`.\n * Iteration is stopped once `predicate` returns falsey. The predicate is\n * invoked with three arguments: (value, index|key, collection).\n *\n * **Note:** This method returns `true` for\n * [empty collections](https://en.wikipedia.org/wiki/Empty_set) because\n * [everything is true](https://en.wikipedia.org/wiki/Vacuous_truth) of\n * elements of empty collections.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {boolean} Returns `true` if all elements pass the predicate check,\n * else `false`.\n * @example\n *\n * _.every([true, 1, null, 'yes'], Boolean);\n * // => false\n *\n * var users = [\n * { 'user': 'barney', 'age': 36, 'active': false },\n * { 'user': 'fred', 'age': 40, 'active': false }\n * ];\n *\n * // The `_.matches` iteratee shorthand.\n * _.every(users, { 'user': 'barney', 'active': false });\n * // => false\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.every(users, ['active', false]);\n * // => true\n *\n * // The `_.property` iteratee shorthand.\n * _.every(users, 'active');\n * // => false\n */\n function every(collection, predicate, guard) {\n var func = isArray(collection) ? arrayEvery : baseEvery;\n if (guard && isIterateeCall(collection, predicate, guard)) {\n predicate = undefined;\n }\n return func(collection, getIteratee(predicate, 3));\n }\n\n /**\n * Iterates over elements of `collection`, returning an array of all elements\n * `predicate` returns truthy for. The predicate is invoked with three\n * arguments: (value, index|key, collection).\n *\n * **Note:** Unlike `_.remove`, this method returns a new array.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n * @see _.reject\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36, 'active': true },\n * { 'user': 'fred', 'age': 40, 'active': false }\n * ];\n *\n * _.filter(users, function(o) { return !o.active; });\n * // => objects for ['fred']\n *\n * // The `_.matches` iteratee shorthand.\n * _.filter(users, { 'age': 36, 'active': true });\n * // => objects for ['barney']\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.filter(users, ['active', false]);\n * // => objects for ['fred']\n *\n * // The `_.property` iteratee shorthand.\n * _.filter(users, 'active');\n * // => objects for ['barney']\n *\n * // Combining several predicates using `_.overEvery` or `_.overSome`.\n * _.filter(users, _.overSome([{ 'age': 36 }, ['age', 40]]));\n * // => objects for ['fred', 'barney']\n */\n function filter(collection, predicate) {\n var func = isArray(collection) ? arrayFilter : baseFilter;\n return func(collection, getIteratee(predicate, 3));\n }\n\n /**\n * Iterates over elements of `collection`, returning the first element\n * `predicate` returns truthy for. The predicate is invoked with three\n * arguments: (value, index|key, collection).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to inspect.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param {number} [fromIndex=0] The index to search from.\n * @returns {*} Returns the matched element, else `undefined`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36, 'active': true },\n * { 'user': 'fred', 'age': 40, 'active': false },\n * { 'user': 'pebbles', 'age': 1, 'active': true }\n * ];\n *\n * _.find(users, function(o) { return o.age < 40; });\n * // => object for 'barney'\n *\n * // The `_.matches` iteratee shorthand.\n * _.find(users, { 'age': 1, 'active': true });\n * // => object for 'pebbles'\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.find(users, ['active', false]);\n * // => object for 'fred'\n *\n * // The `_.property` iteratee shorthand.\n * _.find(users, 'active');\n * // => object for 'barney'\n */\n var find = createFind(findIndex);\n\n /**\n * This method is like `_.find` except that it iterates over elements of\n * `collection` from right to left.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to inspect.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param {number} [fromIndex=collection.length-1] The index to search from.\n * @returns {*} Returns the matched element, else `undefined`.\n * @example\n *\n * _.findLast([1, 2, 3, 4], function(n) {\n * return n % 2 == 1;\n * });\n * // => 3\n */\n var findLast = createFind(findLastIndex);\n\n /**\n * Creates a flattened array of values by running each element in `collection`\n * thru `iteratee` and flattening the mapped results. The iteratee is invoked\n * with three arguments: (value, index|key, collection).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new flattened array.\n * @example\n *\n * function duplicate(n) {\n * return [n, n];\n * }\n *\n * _.flatMap([1, 2], duplicate);\n * // => [1, 1, 2, 2]\n */\n function flatMap(collection, iteratee) {\n return baseFlatten(map(collection, iteratee), 1);\n }\n\n /**\n * This method is like `_.flatMap` except that it recursively flattens the\n * mapped results.\n *\n * @static\n * @memberOf _\n * @since 4.7.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new flattened array.\n * @example\n *\n * function duplicate(n) {\n * return [[[n, n]]];\n * }\n *\n * _.flatMapDeep([1, 2], duplicate);\n * // => [1, 1, 2, 2]\n */\n function flatMapDeep(collection, iteratee) {\n return baseFlatten(map(collection, iteratee), INFINITY);\n }\n\n /**\n * This method is like `_.flatMap` except that it recursively flattens the\n * mapped results up to `depth` times.\n *\n * @static\n * @memberOf _\n * @since 4.7.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @param {number} [depth=1] The maximum recursion depth.\n * @returns {Array} Returns the new flattened array.\n * @example\n *\n * function duplicate(n) {\n * return [[[n, n]]];\n * }\n *\n * _.flatMapDepth([1, 2], duplicate, 2);\n * // => [[1, 1], [2, 2]]\n */\n function flatMapDepth(collection, iteratee, depth) {\n depth = depth === undefined ? 1 : toInteger(depth);\n return baseFlatten(map(collection, iteratee), depth);\n }\n\n /**\n * Iterates over elements of `collection` and invokes `iteratee` for each element.\n * The iteratee is invoked with three arguments: (value, index|key, collection).\n * Iteratee functions may exit iteration early by explicitly returning `false`.\n *\n * **Note:** As with other \"Collections\" methods, objects with a \"length\"\n * property are iterated like arrays. To avoid this behavior use `_.forIn`\n * or `_.forOwn` for object iteration.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @alias each\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Array|Object} Returns `collection`.\n * @see _.forEachRight\n * @example\n *\n * _.forEach([1, 2], function(value) {\n * console.log(value);\n * });\n * // => Logs `1` then `2`.\n *\n * _.forEach({ 'a': 1, 'b': 2 }, function(value, key) {\n * console.log(key);\n * });\n * // => Logs 'a' then 'b' (iteration order is not guaranteed).\n */\n function forEach(collection, iteratee) {\n var func = isArray(collection) ? arrayEach : baseEach;\n return func(collection, getIteratee(iteratee, 3));\n }\n\n /**\n * This method is like `_.forEach` except that it iterates over elements of\n * `collection` from right to left.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @alias eachRight\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Array|Object} Returns `collection`.\n * @see _.forEach\n * @example\n *\n * _.forEachRight([1, 2], function(value) {\n * console.log(value);\n * });\n * // => Logs `2` then `1`.\n */\n function forEachRight(collection, iteratee) {\n var func = isArray(collection) ? arrayEachRight : baseEachRight;\n return func(collection, getIteratee(iteratee, 3));\n }\n\n /**\n * Creates an object composed of keys generated from the results of running\n * each element of `collection` thru `iteratee`. The order of grouped values\n * is determined by the order they occur in `collection`. The corresponding\n * value of each key is an array of elements responsible for generating the\n * key. The iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The iteratee to transform keys.\n * @returns {Object} Returns the composed aggregate object.\n * @example\n *\n * _.groupBy([6.1, 4.2, 6.3], Math.floor);\n * // => { '4': [4.2], '6': [6.1, 6.3] }\n *\n * // The `_.property` iteratee shorthand.\n * _.groupBy(['one', 'two', 'three'], 'length');\n * // => { '3': ['one', 'two'], '5': ['three'] }\n */\n var groupBy = createAggregator(function(result, value, key) {\n if (hasOwnProperty.call(result, key)) {\n result[key].push(value);\n } else {\n baseAssignValue(result, key, [value]);\n }\n });\n\n /**\n * Checks if `value` is in `collection`. If `collection` is a string, it's\n * checked for a substring of `value`, otherwise\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * is used for equality comparisons. If `fromIndex` is negative, it's used as\n * the offset from the end of `collection`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object|string} collection The collection to inspect.\n * @param {*} value The value to search for.\n * @param {number} [fromIndex=0] The index to search from.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.reduce`.\n * @returns {boolean} Returns `true` if `value` is found, else `false`.\n * @example\n *\n * _.includes([1, 2, 3], 1);\n * // => true\n *\n * _.includes([1, 2, 3], 1, 2);\n * // => false\n *\n * _.includes({ 'a': 1, 'b': 2 }, 1);\n * // => true\n *\n * _.includes('abcd', 'bc');\n * // => true\n */\n function includes(collection, value, fromIndex, guard) {\n collection = isArrayLike(collection) ? collection : values(collection);\n fromIndex = (fromIndex && !guard) ? toInteger(fromIndex) : 0;\n\n var length = collection.length;\n if (fromIndex < 0) {\n fromIndex = nativeMax(length + fromIndex, 0);\n }\n return isString(collection)\n ? (fromIndex <= length && collection.indexOf(value, fromIndex) > -1)\n : (!!length && baseIndexOf(collection, value, fromIndex) > -1);\n }\n\n /**\n * Invokes the method at `path` of each element in `collection`, returning\n * an array of the results of each invoked method. Any additional arguments\n * are provided to each invoked method. If `path` is a function, it's invoked\n * for, and `this` bound to, each element in `collection`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Array|Function|string} path The path of the method to invoke or\n * the function invoked per iteration.\n * @param {...*} [args] The arguments to invoke each method with.\n * @returns {Array} Returns the array of results.\n * @example\n *\n * _.invokeMap([[5, 1, 7], [3, 2, 1]], 'sort');\n * // => [[1, 5, 7], [1, 2, 3]]\n *\n * _.invokeMap([123, 456], String.prototype.split, '');\n * // => [['1', '2', '3'], ['4', '5', '6']]\n */\n var invokeMap = baseRest(function(collection, path, args) {\n var index = -1,\n isFunc = typeof path == 'function',\n result = isArrayLike(collection) ? Array(collection.length) : [];\n\n baseEach(collection, function(value) {\n result[++index] = isFunc ? apply(path, value, args) : baseInvoke(value, path, args);\n });\n return result;\n });\n\n /**\n * Creates an object composed of keys generated from the results of running\n * each element of `collection` thru `iteratee`. The corresponding value of\n * each key is the last element responsible for generating the key. The\n * iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The iteratee to transform keys.\n * @returns {Object} Returns the composed aggregate object.\n * @example\n *\n * var array = [\n * { 'dir': 'left', 'code': 97 },\n * { 'dir': 'right', 'code': 100 }\n * ];\n *\n * _.keyBy(array, function(o) {\n * return String.fromCharCode(o.code);\n * });\n * // => { 'a': { 'dir': 'left', 'code': 97 }, 'd': { 'dir': 'right', 'code': 100 } }\n *\n * _.keyBy(array, 'dir');\n * // => { 'left': { 'dir': 'left', 'code': 97 }, 'right': { 'dir': 'right', 'code': 100 } }\n */\n var keyBy = createAggregator(function(result, value, key) {\n baseAssignValue(result, key, value);\n });\n\n /**\n * Creates an array of values by running each element in `collection` thru\n * `iteratee`. The iteratee is invoked with three arguments:\n * (value, index|key, collection).\n *\n * Many lodash methods are guarded to work as iteratees for methods like\n * `_.every`, `_.filter`, `_.map`, `_.mapValues`, `_.reject`, and `_.some`.\n *\n * The guarded methods are:\n * `ary`, `chunk`, `curry`, `curryRight`, `drop`, `dropRight`, `every`,\n * `fill`, `invert`, `parseInt`, `random`, `range`, `rangeRight`, `repeat`,\n * `sampleSize`, `slice`, `some`, `sortBy`, `split`, `take`, `takeRight`,\n * `template`, `trim`, `trimEnd`, `trimStart`, and `words`\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n * @example\n *\n * function square(n) {\n * return n * n;\n * }\n *\n * _.map([4, 8], square);\n * // => [16, 64]\n *\n * _.map({ 'a': 4, 'b': 8 }, square);\n * // => [16, 64] (iteration order is not guaranteed)\n *\n * var users = [\n * { 'user': 'barney' },\n * { 'user': 'fred' }\n * ];\n *\n * // The `_.property` iteratee shorthand.\n * _.map(users, 'user');\n * // => ['barney', 'fred']\n */\n function map(collection, iteratee) {\n var func = isArray(collection) ? arrayMap : baseMap;\n return func(collection, getIteratee(iteratee, 3));\n }\n\n /**\n * This method is like `_.sortBy` except that it allows specifying the sort\n * orders of the iteratees to sort by. If `orders` is unspecified, all values\n * are sorted in ascending order. Otherwise, specify an order of \"desc\" for\n * descending or \"asc\" for ascending sort order of corresponding values.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Array[]|Function[]|Object[]|string[]} [iteratees=[_.identity]]\n * The iteratees to sort by.\n * @param {string[]} [orders] The sort orders of `iteratees`.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.reduce`.\n * @returns {Array} Returns the new sorted array.\n * @example\n *\n * var users = [\n * { 'user': 'fred', 'age': 48 },\n * { 'user': 'barney', 'age': 34 },\n * { 'user': 'fred', 'age': 40 },\n * { 'user': 'barney', 'age': 36 }\n * ];\n *\n * // Sort by `user` in ascending order and by `age` in descending order.\n * _.orderBy(users, ['user', 'age'], ['asc', 'desc']);\n * // => objects for [['barney', 36], ['barney', 34], ['fred', 48], ['fred', 40]]\n */\n function orderBy(collection, iteratees, orders, guard) {\n if (collection == null) {\n return [];\n }\n if (!isArray(iteratees)) {\n iteratees = iteratees == null ? [] : [iteratees];\n }\n orders = guard ? undefined : orders;\n if (!isArray(orders)) {\n orders = orders == null ? [] : [orders];\n }\n return baseOrderBy(collection, iteratees, orders);\n }\n\n /**\n * Creates an array of elements split into two groups, the first of which\n * contains elements `predicate` returns truthy for, the second of which\n * contains elements `predicate` returns falsey for. The predicate is\n * invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the array of grouped elements.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36, 'active': false },\n * { 'user': 'fred', 'age': 40, 'active': true },\n * { 'user': 'pebbles', 'age': 1, 'active': false }\n * ];\n *\n * _.partition(users, function(o) { return o.active; });\n * // => objects for [['fred'], ['barney', 'pebbles']]\n *\n * // The `_.matches` iteratee shorthand.\n * _.partition(users, { 'age': 1, 'active': false });\n * // => objects for [['pebbles'], ['barney', 'fred']]\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.partition(users, ['active', false]);\n * // => objects for [['barney', 'pebbles'], ['fred']]\n *\n * // The `_.property` iteratee shorthand.\n * _.partition(users, 'active');\n * // => objects for [['fred'], ['barney', 'pebbles']]\n */\n var partition = createAggregator(function(result, value, key) {\n result[key ? 0 : 1].push(value);\n }, function() { return [[], []]; });\n\n /**\n * Reduces `collection` to a value which is the accumulated result of running\n * each element in `collection` thru `iteratee`, where each successive\n * invocation is supplied the return value of the previous. If `accumulator`\n * is not given, the first element of `collection` is used as the initial\n * value. The iteratee is invoked with four arguments:\n * (accumulator, value, index|key, collection).\n *\n * Many lodash methods are guarded to work as iteratees for methods like\n * `_.reduce`, `_.reduceRight`, and `_.transform`.\n *\n * The guarded methods are:\n * `assign`, `defaults`, `defaultsDeep`, `includes`, `merge`, `orderBy`,\n * and `sortBy`\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @param {*} [accumulator] The initial value.\n * @returns {*} Returns the accumulated value.\n * @see _.reduceRight\n * @example\n *\n * _.reduce([1, 2], function(sum, n) {\n * return sum + n;\n * }, 0);\n * // => 3\n *\n * _.reduce({ 'a': 1, 'b': 2, 'c': 1 }, function(result, value, key) {\n * (result[value] || (result[value] = [])).push(key);\n * return result;\n * }, {});\n * // => { '1': ['a', 'c'], '2': ['b'] } (iteration order is not guaranteed)\n */\n function reduce(collection, iteratee, accumulator) {\n var func = isArray(collection) ? arrayReduce : baseReduce,\n initAccum = arguments.length < 3;\n\n return func(collection, getIteratee(iteratee, 4), accumulator, initAccum, baseEach);\n }\n\n /**\n * This method is like `_.reduce` except that it iterates over elements of\n * `collection` from right to left.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @param {*} [accumulator] The initial value.\n * @returns {*} Returns the accumulated value.\n * @see _.reduce\n * @example\n *\n * var array = [[0, 1], [2, 3], [4, 5]];\n *\n * _.reduceRight(array, function(flattened, other) {\n * return flattened.concat(other);\n * }, []);\n * // => [4, 5, 2, 3, 0, 1]\n */\n function reduceRight(collection, iteratee, accumulator) {\n var func = isArray(collection) ? arrayReduceRight : baseReduce,\n initAccum = arguments.length < 3;\n\n return func(collection, getIteratee(iteratee, 4), accumulator, initAccum, baseEachRight);\n }\n\n /**\n * The opposite of `_.filter`; this method returns the elements of `collection`\n * that `predicate` does **not** return truthy for.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n * @see _.filter\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36, 'active': false },\n * { 'user': 'fred', 'age': 40, 'active': true }\n * ];\n *\n * _.reject(users, function(o) { return !o.active; });\n * // => objects for ['fred']\n *\n * // The `_.matches` iteratee shorthand.\n * _.reject(users, { 'age': 40, 'active': true });\n * // => objects for ['barney']\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.reject(users, ['active', false]);\n * // => objects for ['fred']\n *\n * // The `_.property` iteratee shorthand.\n * _.reject(users, 'active');\n * // => objects for ['barney']\n */\n function reject(collection, predicate) {\n var func = isArray(collection) ? arrayFilter : baseFilter;\n return func(collection, negate(getIteratee(predicate, 3)));\n }\n\n /**\n * Gets a random element from `collection`.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to sample.\n * @returns {*} Returns the random element.\n * @example\n *\n * _.sample([1, 2, 3, 4]);\n * // => 2\n */\n function sample(collection) {\n var func = isArray(collection) ? arraySample : baseSample;\n return func(collection);\n }\n\n /**\n * Gets `n` random elements at unique keys from `collection` up to the\n * size of `collection`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to sample.\n * @param {number} [n=1] The number of elements to sample.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Array} Returns the random elements.\n * @example\n *\n * _.sampleSize([1, 2, 3], 2);\n * // => [3, 1]\n *\n * _.sampleSize([1, 2, 3], 4);\n * // => [2, 3, 1]\n */\n function sampleSize(collection, n, guard) {\n if ((guard ? isIterateeCall(collection, n, guard) : n === undefined)) {\n n = 1;\n } else {\n n = toInteger(n);\n }\n var func = isArray(collection) ? arraySampleSize : baseSampleSize;\n return func(collection, n);\n }\n\n /**\n * Creates an array of shuffled values, using a version of the\n * [Fisher-Yates shuffle](https://en.wikipedia.org/wiki/Fisher-Yates_shuffle).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to shuffle.\n * @returns {Array} Returns the new shuffled array.\n * @example\n *\n * _.shuffle([1, 2, 3, 4]);\n * // => [4, 1, 3, 2]\n */\n function shuffle(collection) {\n var func = isArray(collection) ? arrayShuffle : baseShuffle;\n return func(collection);\n }\n\n /**\n * Gets the size of `collection` by returning its length for array-like\n * values or the number of own enumerable string keyed properties for objects.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object|string} collection The collection to inspect.\n * @returns {number} Returns the collection size.\n * @example\n *\n * _.size([1, 2, 3]);\n * // => 3\n *\n * _.size({ 'a': 1, 'b': 2 });\n * // => 2\n *\n * _.size('pebbles');\n * // => 7\n */\n function size(collection) {\n if (collection == null) {\n return 0;\n }\n if (isArrayLike(collection)) {\n return isString(collection) ? stringSize(collection) : collection.length;\n }\n var tag = getTag(collection);\n if (tag == mapTag || tag == setTag) {\n return collection.size;\n }\n return baseKeys(collection).length;\n }\n\n /**\n * Checks if `predicate` returns truthy for **any** element of `collection`.\n * Iteration is stopped once `predicate` returns truthy. The predicate is\n * invoked with three arguments: (value, index|key, collection).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {boolean} Returns `true` if any element passes the predicate check,\n * else `false`.\n * @example\n *\n * _.some([null, 0, 'yes', false], Boolean);\n * // => true\n *\n * var users = [\n * { 'user': 'barney', 'active': true },\n * { 'user': 'fred', 'active': false }\n * ];\n *\n * // The `_.matches` iteratee shorthand.\n * _.some(users, { 'user': 'barney', 'active': false });\n * // => false\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.some(users, ['active', false]);\n * // => true\n *\n * // The `_.property` iteratee shorthand.\n * _.some(users, 'active');\n * // => true\n */\n function some(collection, predicate, guard) {\n var func = isArray(collection) ? arraySome : baseSome;\n if (guard && isIterateeCall(collection, predicate, guard)) {\n predicate = undefined;\n }\n return func(collection, getIteratee(predicate, 3));\n }\n\n /**\n * Creates an array of elements, sorted in ascending order by the results of\n * running each element in a collection thru each iteratee. This method\n * performs a stable sort, that is, it preserves the original sort order of\n * equal elements. The iteratees are invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {...(Function|Function[])} [iteratees=[_.identity]]\n * The iteratees to sort by.\n * @returns {Array} Returns the new sorted array.\n * @example\n *\n * var users = [\n * { 'user': 'fred', 'age': 48 },\n * { 'user': 'barney', 'age': 36 },\n * { 'user': 'fred', 'age': 30 },\n * { 'user': 'barney', 'age': 34 }\n * ];\n *\n * _.sortBy(users, [function(o) { return o.user; }]);\n * // => objects for [['barney', 36], ['barney', 34], ['fred', 48], ['fred', 30]]\n *\n * _.sortBy(users, ['user', 'age']);\n * // => objects for [['barney', 34], ['barney', 36], ['fred', 30], ['fred', 48]]\n */\n var sortBy = baseRest(function(collection, iteratees) {\n if (collection == null) {\n return [];\n }\n var length = iteratees.length;\n if (length > 1 && isIterateeCall(collection, iteratees[0], iteratees[1])) {\n iteratees = [];\n } else if (length > 2 && isIterateeCall(iteratees[0], iteratees[1], iteratees[2])) {\n iteratees = [iteratees[0]];\n }\n return baseOrderBy(collection, baseFlatten(iteratees, 1), []);\n });\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Gets the timestamp of the number of milliseconds that have elapsed since\n * the Unix epoch (1 January 1970 00:00:00 UTC).\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Date\n * @returns {number} Returns the timestamp.\n * @example\n *\n * _.defer(function(stamp) {\n * console.log(_.now() - stamp);\n * }, _.now());\n * // => Logs the number of milliseconds it took for the deferred invocation.\n */\n var now = ctxNow || function() {\n return root.Date.now();\n };\n\n /*------------------------------------------------------------------------*/\n\n /**\n * The opposite of `_.before`; this method creates a function that invokes\n * `func` once it's called `n` or more times.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {number} n The number of calls before `func` is invoked.\n * @param {Function} func The function to restrict.\n * @returns {Function} Returns the new restricted function.\n * @example\n *\n * var saves = ['profile', 'settings'];\n *\n * var done = _.after(saves.length, function() {\n * console.log('done saving!');\n * });\n *\n * _.forEach(saves, function(type) {\n * asyncSave({ 'type': type, 'complete': done });\n * });\n * // => Logs 'done saving!' after the two async saves have completed.\n */\n function after(n, func) {\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n n = toInteger(n);\n return function() {\n if (--n < 1) {\n return func.apply(this, arguments);\n }\n };\n }\n\n /**\n * Creates a function that invokes `func`, with up to `n` arguments,\n * ignoring any additional arguments.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Function\n * @param {Function} func The function to cap arguments for.\n * @param {number} [n=func.length] The arity cap.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Function} Returns the new capped function.\n * @example\n *\n * _.map(['6', '8', '10'], _.ary(parseInt, 1));\n * // => [6, 8, 10]\n */\n function ary(func, n, guard) {\n n = guard ? undefined : n;\n n = (func && n == null) ? func.length : n;\n return createWrap(func, WRAP_ARY_FLAG, undefined, undefined, undefined, undefined, n);\n }\n\n /**\n * Creates a function that invokes `func`, with the `this` binding and arguments\n * of the created function, while it's called less than `n` times. Subsequent\n * calls to the created function return the result of the last `func` invocation.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Function\n * @param {number} n The number of calls at which `func` is no longer invoked.\n * @param {Function} func The function to restrict.\n * @returns {Function} Returns the new restricted function.\n * @example\n *\n * jQuery(element).on('click', _.before(5, addContactToList));\n * // => Allows adding up to 4 contacts to the list.\n */\n function before(n, func) {\n var result;\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n n = toInteger(n);\n return function() {\n if (--n > 0) {\n result = func.apply(this, arguments);\n }\n if (n <= 1) {\n func = undefined;\n }\n return result;\n };\n }\n\n /**\n * Creates a function that invokes `func` with the `this` binding of `thisArg`\n * and `partials` prepended to the arguments it receives.\n *\n * The `_.bind.placeholder` value, which defaults to `_` in monolithic builds,\n * may be used as a placeholder for partially applied arguments.\n *\n * **Note:** Unlike native `Function#bind`, this method doesn't set the \"length\"\n * property of bound functions.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to bind.\n * @param {*} thisArg The `this` binding of `func`.\n * @param {...*} [partials] The arguments to be partially applied.\n * @returns {Function} Returns the new bound function.\n * @example\n *\n * function greet(greeting, punctuation) {\n * return greeting + ' ' + this.user + punctuation;\n * }\n *\n * var object = { 'user': 'fred' };\n *\n * var bound = _.bind(greet, object, 'hi');\n * bound('!');\n * // => 'hi fred!'\n *\n * // Bound with placeholders.\n * var bound = _.bind(greet, object, _, '!');\n * bound('hi');\n * // => 'hi fred!'\n */\n var bind = baseRest(function(func, thisArg, partials) {\n var bitmask = WRAP_BIND_FLAG;\n if (partials.length) {\n var holders = replaceHolders(partials, getHolder(bind));\n bitmask |= WRAP_PARTIAL_FLAG;\n }\n return createWrap(func, bitmask, thisArg, partials, holders);\n });\n\n /**\n * Creates a function that invokes the method at `object[key]` with `partials`\n * prepended to the arguments it receives.\n *\n * This method differs from `_.bind` by allowing bound functions to reference\n * methods that may be redefined or don't yet exist. See\n * [Peter Michaux's article](http://peter.michaux.ca/articles/lazy-function-definition-pattern)\n * for more details.\n *\n * The `_.bindKey.placeholder` value, which defaults to `_` in monolithic\n * builds, may be used as a placeholder for partially applied arguments.\n *\n * @static\n * @memberOf _\n * @since 0.10.0\n * @category Function\n * @param {Object} object The object to invoke the method on.\n * @param {string} key The key of the method.\n * @param {...*} [partials] The arguments to be partially applied.\n * @returns {Function} Returns the new bound function.\n * @example\n *\n * var object = {\n * 'user': 'fred',\n * 'greet': function(greeting, punctuation) {\n * return greeting + ' ' + this.user + punctuation;\n * }\n * };\n *\n * var bound = _.bindKey(object, 'greet', 'hi');\n * bound('!');\n * // => 'hi fred!'\n *\n * object.greet = function(greeting, punctuation) {\n * return greeting + 'ya ' + this.user + punctuation;\n * };\n *\n * bound('!');\n * // => 'hiya fred!'\n *\n * // Bound with placeholders.\n * var bound = _.bindKey(object, 'greet', _, '!');\n * bound('hi');\n * // => 'hiya fred!'\n */\n var bindKey = baseRest(function(object, key, partials) {\n var bitmask = WRAP_BIND_FLAG | WRAP_BIND_KEY_FLAG;\n if (partials.length) {\n var holders = replaceHolders(partials, getHolder(bindKey));\n bitmask |= WRAP_PARTIAL_FLAG;\n }\n return createWrap(key, bitmask, object, partials, holders);\n });\n\n /**\n * Creates a function that accepts arguments of `func` and either invokes\n * `func` returning its result, if at least `arity` number of arguments have\n * been provided, or returns a function that accepts the remaining `func`\n * arguments, and so on. The arity of `func` may be specified if `func.length`\n * is not sufficient.\n *\n * The `_.curry.placeholder` value, which defaults to `_` in monolithic builds,\n * may be used as a placeholder for provided arguments.\n *\n * **Note:** This method doesn't set the \"length\" property of curried functions.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Function\n * @param {Function} func The function to curry.\n * @param {number} [arity=func.length] The arity of `func`.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Function} Returns the new curried function.\n * @example\n *\n * var abc = function(a, b, c) {\n * return [a, b, c];\n * };\n *\n * var curried = _.curry(abc);\n *\n * curried(1)(2)(3);\n * // => [1, 2, 3]\n *\n * curried(1, 2)(3);\n * // => [1, 2, 3]\n *\n * curried(1, 2, 3);\n * // => [1, 2, 3]\n *\n * // Curried with placeholders.\n * curried(1)(_, 3)(2);\n * // => [1, 2, 3]\n */\n function curry(func, arity, guard) {\n arity = guard ? undefined : arity;\n var result = createWrap(func, WRAP_CURRY_FLAG, undefined, undefined, undefined, undefined, undefined, arity);\n result.placeholder = curry.placeholder;\n return result;\n }\n\n /**\n * This method is like `_.curry` except that arguments are applied to `func`\n * in the manner of `_.partialRight` instead of `_.partial`.\n *\n * The `_.curryRight.placeholder` value, which defaults to `_` in monolithic\n * builds, may be used as a placeholder for provided arguments.\n *\n * **Note:** This method doesn't set the \"length\" property of curried functions.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Function\n * @param {Function} func The function to curry.\n * @param {number} [arity=func.length] The arity of `func`.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Function} Returns the new curried function.\n * @example\n *\n * var abc = function(a, b, c) {\n * return [a, b, c];\n * };\n *\n * var curried = _.curryRight(abc);\n *\n * curried(3)(2)(1);\n * // => [1, 2, 3]\n *\n * curried(2, 3)(1);\n * // => [1, 2, 3]\n *\n * curried(1, 2, 3);\n * // => [1, 2, 3]\n *\n * // Curried with placeholders.\n * curried(3)(1, _)(2);\n * // => [1, 2, 3]\n */\n function curryRight(func, arity, guard) {\n arity = guard ? undefined : arity;\n var result = createWrap(func, WRAP_CURRY_RIGHT_FLAG, undefined, undefined, undefined, undefined, undefined, arity);\n result.placeholder = curryRight.placeholder;\n return result;\n }\n\n /**\n * Creates a debounced function that delays invoking `func` until after `wait`\n * milliseconds have elapsed since the last time the debounced function was\n * invoked. The debounced function comes with a `cancel` method to cancel\n * delayed `func` invocations and a `flush` method to immediately invoke them.\n * Provide `options` to indicate whether `func` should be invoked on the\n * leading and/or trailing edge of the `wait` timeout. The `func` is invoked\n * with the last arguments provided to the debounced function. Subsequent\n * calls to the debounced function return the result of the last `func`\n * invocation.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is\n * invoked on the trailing edge of the timeout only if the debounced function\n * is invoked more than once during the `wait` timeout.\n *\n * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n * until to the next tick, similar to `setTimeout` with a timeout of `0`.\n *\n * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n * for details over the differences between `_.debounce` and `_.throttle`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to debounce.\n * @param {number} [wait=0] The number of milliseconds to delay.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.leading=false]\n * Specify invoking on the leading edge of the timeout.\n * @param {number} [options.maxWait]\n * The maximum time `func` is allowed to be delayed before it's invoked.\n * @param {boolean} [options.trailing=true]\n * Specify invoking on the trailing edge of the timeout.\n * @returns {Function} Returns the new debounced function.\n * @example\n *\n * // Avoid costly calculations while the window size is in flux.\n * jQuery(window).on('resize', _.debounce(calculateLayout, 150));\n *\n * // Invoke `sendMail` when clicked, debouncing subsequent calls.\n * jQuery(element).on('click', _.debounce(sendMail, 300, {\n * 'leading': true,\n * 'trailing': false\n * }));\n *\n * // Ensure `batchLog` is invoked once after 1 second of debounced calls.\n * var debounced = _.debounce(batchLog, 250, { 'maxWait': 1000 });\n * var source = new EventSource('/stream');\n * jQuery(source).on('message', debounced);\n *\n * // Cancel the trailing debounced invocation.\n * jQuery(window).on('popstate', debounced.cancel);\n */\n function debounce(func, wait, options) {\n var lastArgs,\n lastThis,\n maxWait,\n result,\n timerId,\n lastCallTime,\n lastInvokeTime = 0,\n leading = false,\n maxing = false,\n trailing = true;\n\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n wait = toNumber(wait) || 0;\n if (isObject(options)) {\n leading = !!options.leading;\n maxing = 'maxWait' in options;\n maxWait = maxing ? nativeMax(toNumber(options.maxWait) || 0, wait) : maxWait;\n trailing = 'trailing' in options ? !!options.trailing : trailing;\n }\n\n function invokeFunc(time) {\n var args = lastArgs,\n thisArg = lastThis;\n\n lastArgs = lastThis = undefined;\n lastInvokeTime = time;\n result = func.apply(thisArg, args);\n return result;\n }\n\n function leadingEdge(time) {\n // Reset any `maxWait` timer.\n lastInvokeTime = time;\n // Start the timer for the trailing edge.\n timerId = setTimeout(timerExpired, wait);\n // Invoke the leading edge.\n return leading ? invokeFunc(time) : result;\n }\n\n function remainingWait(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime,\n timeWaiting = wait - timeSinceLastCall;\n\n return maxing\n ? nativeMin(timeWaiting, maxWait - timeSinceLastInvoke)\n : timeWaiting;\n }\n\n function shouldInvoke(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime;\n\n // Either this is the first call, activity has stopped and we're at the\n // trailing edge, the system time has gone backwards and we're treating\n // it as the trailing edge, or we've hit the `maxWait` limit.\n return (lastCallTime === undefined || (timeSinceLastCall >= wait) ||\n (timeSinceLastCall < 0) || (maxing && timeSinceLastInvoke >= maxWait));\n }\n\n function timerExpired() {\n var time = now();\n if (shouldInvoke(time)) {\n return trailingEdge(time);\n }\n // Restart the timer.\n timerId = setTimeout(timerExpired, remainingWait(time));\n }\n\n function trailingEdge(time) {\n timerId = undefined;\n\n // Only invoke if we have `lastArgs` which means `func` has been\n // debounced at least once.\n if (trailing && lastArgs) {\n return invokeFunc(time);\n }\n lastArgs = lastThis = undefined;\n return result;\n }\n\n function cancel() {\n if (timerId !== undefined) {\n clearTimeout(timerId);\n }\n lastInvokeTime = 0;\n lastArgs = lastCallTime = lastThis = timerId = undefined;\n }\n\n function flush() {\n return timerId === undefined ? result : trailingEdge(now());\n }\n\n function debounced() {\n var time = now(),\n isInvoking = shouldInvoke(time);\n\n lastArgs = arguments;\n lastThis = this;\n lastCallTime = time;\n\n if (isInvoking) {\n if (timerId === undefined) {\n return leadingEdge(lastCallTime);\n }\n if (maxing) {\n // Handle invocations in a tight loop.\n clearTimeout(timerId);\n timerId = setTimeout(timerExpired, wait);\n return invokeFunc(lastCallTime);\n }\n }\n if (timerId === undefined) {\n timerId = setTimeout(timerExpired, wait);\n }\n return result;\n }\n debounced.cancel = cancel;\n debounced.flush = flush;\n return debounced;\n }\n\n /**\n * Defers invoking the `func` until the current call stack has cleared. Any\n * additional arguments are provided to `func` when it's invoked.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to defer.\n * @param {...*} [args] The arguments to invoke `func` with.\n * @returns {number} Returns the timer id.\n * @example\n *\n * _.defer(function(text) {\n * console.log(text);\n * }, 'deferred');\n * // => Logs 'deferred' after one millisecond.\n */\n var defer = baseRest(function(func, args) {\n return baseDelay(func, 1, args);\n });\n\n /**\n * Invokes `func` after `wait` milliseconds. Any additional arguments are\n * provided to `func` when it's invoked.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to delay.\n * @param {number} wait The number of milliseconds to delay invocation.\n * @param {...*} [args] The arguments to invoke `func` with.\n * @returns {number} Returns the timer id.\n * @example\n *\n * _.delay(function(text) {\n * console.log(text);\n * }, 1000, 'later');\n * // => Logs 'later' after one second.\n */\n var delay = baseRest(function(func, wait, args) {\n return baseDelay(func, toNumber(wait) || 0, args);\n });\n\n /**\n * Creates a function that invokes `func` with arguments reversed.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Function\n * @param {Function} func The function to flip arguments for.\n * @returns {Function} Returns the new flipped function.\n * @example\n *\n * var flipped = _.flip(function() {\n * return _.toArray(arguments);\n * });\n *\n * flipped('a', 'b', 'c', 'd');\n * // => ['d', 'c', 'b', 'a']\n */\n function flip(func) {\n return createWrap(func, WRAP_FLIP_FLAG);\n }\n\n /**\n * Creates a function that memoizes the result of `func`. If `resolver` is\n * provided, it determines the cache key for storing the result based on the\n * arguments provided to the memoized function. By default, the first argument\n * provided to the memoized function is used as the map cache key. The `func`\n * is invoked with the `this` binding of the memoized function.\n *\n * **Note:** The cache is exposed as the `cache` property on the memoized\n * function. Its creation may be customized by replacing the `_.memoize.Cache`\n * constructor with one whose instances implement the\n * [`Map`](http://ecma-international.org/ecma-262/7.0/#sec-properties-of-the-map-prototype-object)\n * method interface of `clear`, `delete`, `get`, `has`, and `set`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to have its output memoized.\n * @param {Function} [resolver] The function to resolve the cache key.\n * @returns {Function} Returns the new memoized function.\n * @example\n *\n * var object = { 'a': 1, 'b': 2 };\n * var other = { 'c': 3, 'd': 4 };\n *\n * var values = _.memoize(_.values);\n * values(object);\n * // => [1, 2]\n *\n * values(other);\n * // => [3, 4]\n *\n * object.a = 2;\n * values(object);\n * // => [1, 2]\n *\n * // Modify the result cache.\n * values.cache.set(object, ['a', 'b']);\n * values(object);\n * // => ['a', 'b']\n *\n * // Replace `_.memoize.Cache`.\n * _.memoize.Cache = WeakMap;\n */\n function memoize(func, resolver) {\n if (typeof func != 'function' || (resolver != null && typeof resolver != 'function')) {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n var memoized = function() {\n var args = arguments,\n key = resolver ? resolver.apply(this, args) : args[0],\n cache = memoized.cache;\n\n if (cache.has(key)) {\n return cache.get(key);\n }\n var result = func.apply(this, args);\n memoized.cache = cache.set(key, result) || cache;\n return result;\n };\n memoized.cache = new (memoize.Cache || MapCache);\n return memoized;\n }\n\n // Expose `MapCache`.\n memoize.Cache = MapCache;\n\n /**\n * Creates a function that negates the result of the predicate `func`. The\n * `func` predicate is invoked with the `this` binding and arguments of the\n * created function.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Function\n * @param {Function} predicate The predicate to negate.\n * @returns {Function} Returns the new negated function.\n * @example\n *\n * function isEven(n) {\n * return n % 2 == 0;\n * }\n *\n * _.filter([1, 2, 3, 4, 5, 6], _.negate(isEven));\n * // => [1, 3, 5]\n */\n function negate(predicate) {\n if (typeof predicate != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n return function() {\n var args = arguments;\n switch (args.length) {\n case 0: return !predicate.call(this);\n case 1: return !predicate.call(this, args[0]);\n case 2: return !predicate.call(this, args[0], args[1]);\n case 3: return !predicate.call(this, args[0], args[1], args[2]);\n }\n return !predicate.apply(this, args);\n };\n }\n\n /**\n * Creates a function that is restricted to invoking `func` once. Repeat calls\n * to the function return the value of the first invocation. The `func` is\n * invoked with the `this` binding and arguments of the created function.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to restrict.\n * @returns {Function} Returns the new restricted function.\n * @example\n *\n * var initialize = _.once(createApplication);\n * initialize();\n * initialize();\n * // => `createApplication` is invoked once\n */\n function once(func) {\n return before(2, func);\n }\n\n /**\n * Creates a function that invokes `func` with its arguments transformed.\n *\n * @static\n * @since 4.0.0\n * @memberOf _\n * @category Function\n * @param {Function} func The function to wrap.\n * @param {...(Function|Function[])} [transforms=[_.identity]]\n * The argument transforms.\n * @returns {Function} Returns the new function.\n * @example\n *\n * function doubled(n) {\n * return n * 2;\n * }\n *\n * function square(n) {\n * return n * n;\n * }\n *\n * var func = _.overArgs(function(x, y) {\n * return [x, y];\n * }, [square, doubled]);\n *\n * func(9, 3);\n * // => [81, 6]\n *\n * func(10, 5);\n * // => [100, 10]\n */\n var overArgs = castRest(function(func, transforms) {\n transforms = (transforms.length == 1 && isArray(transforms[0]))\n ? arrayMap(transforms[0], baseUnary(getIteratee()))\n : arrayMap(baseFlatten(transforms, 1), baseUnary(getIteratee()));\n\n var funcsLength = transforms.length;\n return baseRest(function(args) {\n var index = -1,\n length = nativeMin(args.length, funcsLength);\n\n while (++index < length) {\n args[index] = transforms[index].call(this, args[index]);\n }\n return apply(func, this, args);\n });\n });\n\n /**\n * Creates a function that invokes `func` with `partials` prepended to the\n * arguments it receives. This method is like `_.bind` except it does **not**\n * alter the `this` binding.\n *\n * The `_.partial.placeholder` value, which defaults to `_` in monolithic\n * builds, may be used as a placeholder for partially applied arguments.\n *\n * **Note:** This method doesn't set the \"length\" property of partially\n * applied functions.\n *\n * @static\n * @memberOf _\n * @since 0.2.0\n * @category Function\n * @param {Function} func The function to partially apply arguments to.\n * @param {...*} [partials] The arguments to be partially applied.\n * @returns {Function} Returns the new partially applied function.\n * @example\n *\n * function greet(greeting, name) {\n * return greeting + ' ' + name;\n * }\n *\n * var sayHelloTo = _.partial(greet, 'hello');\n * sayHelloTo('fred');\n * // => 'hello fred'\n *\n * // Partially applied with placeholders.\n * var greetFred = _.partial(greet, _, 'fred');\n * greetFred('hi');\n * // => 'hi fred'\n */\n var partial = baseRest(function(func, partials) {\n var holders = replaceHolders(partials, getHolder(partial));\n return createWrap(func, WRAP_PARTIAL_FLAG, undefined, partials, holders);\n });\n\n /**\n * This method is like `_.partial` except that partially applied arguments\n * are appended to the arguments it receives.\n *\n * The `_.partialRight.placeholder` value, which defaults to `_` in monolithic\n * builds, may be used as a placeholder for partially applied arguments.\n *\n * **Note:** This method doesn't set the \"length\" property of partially\n * applied functions.\n *\n * @static\n * @memberOf _\n * @since 1.0.0\n * @category Function\n * @param {Function} func The function to partially apply arguments to.\n * @param {...*} [partials] The arguments to be partially applied.\n * @returns {Function} Returns the new partially applied function.\n * @example\n *\n * function greet(greeting, name) {\n * return greeting + ' ' + name;\n * }\n *\n * var greetFred = _.partialRight(greet, 'fred');\n * greetFred('hi');\n * // => 'hi fred'\n *\n * // Partially applied with placeholders.\n * var sayHelloTo = _.partialRight(greet, 'hello', _);\n * sayHelloTo('fred');\n * // => 'hello fred'\n */\n var partialRight = baseRest(function(func, partials) {\n var holders = replaceHolders(partials, getHolder(partialRight));\n return createWrap(func, WRAP_PARTIAL_RIGHT_FLAG, undefined, partials, holders);\n });\n\n /**\n * Creates a function that invokes `func` with arguments arranged according\n * to the specified `indexes` where the argument value at the first index is\n * provided as the first argument, the argument value at the second index is\n * provided as the second argument, and so on.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Function\n * @param {Function} func The function to rearrange arguments for.\n * @param {...(number|number[])} indexes The arranged argument indexes.\n * @returns {Function} Returns the new function.\n * @example\n *\n * var rearged = _.rearg(function(a, b, c) {\n * return [a, b, c];\n * }, [2, 0, 1]);\n *\n * rearged('b', 'c', 'a')\n * // => ['a', 'b', 'c']\n */\n var rearg = flatRest(function(func, indexes) {\n return createWrap(func, WRAP_REARG_FLAG, undefined, undefined, undefined, indexes);\n });\n\n /**\n * Creates a function that invokes `func` with the `this` binding of the\n * created function and arguments from `start` and beyond provided as\n * an array.\n *\n * **Note:** This method is based on the\n * [rest parameter](https://mdn.io/rest_parameters).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Function\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @returns {Function} Returns the new function.\n * @example\n *\n * var say = _.rest(function(what, names) {\n * return what + ' ' + _.initial(names).join(', ') +\n * (_.size(names) > 1 ? ', & ' : '') + _.last(names);\n * });\n *\n * say('hello', 'fred', 'barney', 'pebbles');\n * // => 'hello fred, barney, & pebbles'\n */\n function rest(func, start) {\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n start = start === undefined ? start : toInteger(start);\n return baseRest(func, start);\n }\n\n /**\n * Creates a function that invokes `func` with the `this` binding of the\n * create function and an array of arguments much like\n * [`Function#apply`](http://www.ecma-international.org/ecma-262/7.0/#sec-function.prototype.apply).\n *\n * **Note:** This method is based on the\n * [spread operator](https://mdn.io/spread_operator).\n *\n * @static\n * @memberOf _\n * @since 3.2.0\n * @category Function\n * @param {Function} func The function to spread arguments over.\n * @param {number} [start=0] The start position of the spread.\n * @returns {Function} Returns the new function.\n * @example\n *\n * var say = _.spread(function(who, what) {\n * return who + ' says ' + what;\n * });\n *\n * say(['fred', 'hello']);\n * // => 'fred says hello'\n *\n * var numbers = Promise.all([\n * Promise.resolve(40),\n * Promise.resolve(36)\n * ]);\n *\n * numbers.then(_.spread(function(x, y) {\n * return x + y;\n * }));\n * // => a Promise of 76\n */\n function spread(func, start) {\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n start = start == null ? 0 : nativeMax(toInteger(start), 0);\n return baseRest(function(args) {\n var array = args[start],\n otherArgs = castSlice(args, 0, start);\n\n if (array) {\n arrayPush(otherArgs, array);\n }\n return apply(func, this, otherArgs);\n });\n }\n\n /**\n * Creates a throttled function that only invokes `func` at most once per\n * every `wait` milliseconds. The throttled function comes with a `cancel`\n * method to cancel delayed `func` invocations and a `flush` method to\n * immediately invoke them. Provide `options` to indicate whether `func`\n * should be invoked on the leading and/or trailing edge of the `wait`\n * timeout. The `func` is invoked with the last arguments provided to the\n * throttled function. Subsequent calls to the throttled function return the\n * result of the last `func` invocation.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is\n * invoked on the trailing edge of the timeout only if the throttled function\n * is invoked more than once during the `wait` timeout.\n *\n * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n * until to the next tick, similar to `setTimeout` with a timeout of `0`.\n *\n * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n * for details over the differences between `_.throttle` and `_.debounce`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to throttle.\n * @param {number} [wait=0] The number of milliseconds to throttle invocations to.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.leading=true]\n * Specify invoking on the leading edge of the timeout.\n * @param {boolean} [options.trailing=true]\n * Specify invoking on the trailing edge of the timeout.\n * @returns {Function} Returns the new throttled function.\n * @example\n *\n * // Avoid excessively updating the position while scrolling.\n * jQuery(window).on('scroll', _.throttle(updatePosition, 100));\n *\n * // Invoke `renewToken` when the click event is fired, but not more than once every 5 minutes.\n * var throttled = _.throttle(renewToken, 300000, { 'trailing': false });\n * jQuery(element).on('click', throttled);\n *\n * // Cancel the trailing throttled invocation.\n * jQuery(window).on('popstate', throttled.cancel);\n */\n function throttle(func, wait, options) {\n var leading = true,\n trailing = true;\n\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n if (isObject(options)) {\n leading = 'leading' in options ? !!options.leading : leading;\n trailing = 'trailing' in options ? !!options.trailing : trailing;\n }\n return debounce(func, wait, {\n 'leading': leading,\n 'maxWait': wait,\n 'trailing': trailing\n });\n }\n\n /**\n * Creates a function that accepts up to one argument, ignoring any\n * additional arguments.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Function\n * @param {Function} func The function to cap arguments for.\n * @returns {Function} Returns the new capped function.\n * @example\n *\n * _.map(['6', '8', '10'], _.unary(parseInt));\n * // => [6, 8, 10]\n */\n function unary(func) {\n return ary(func, 1);\n }\n\n /**\n * Creates a function that provides `value` to `wrapper` as its first\n * argument. Any additional arguments provided to the function are appended\n * to those provided to the `wrapper`. The wrapper is invoked with the `this`\n * binding of the created function.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {*} value The value to wrap.\n * @param {Function} [wrapper=identity] The wrapper function.\n * @returns {Function} Returns the new function.\n * @example\n *\n * var p = _.wrap(_.escape, function(func, text) {\n * return '<p>' + func(text) + '</p>';\n * });\n *\n * p('fred, barney, & pebbles');\n * // => '<p>fred, barney, & pebbles</p>'\n */\n function wrap(value, wrapper) {\n return partial(castFunction(wrapper), value);\n }\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Casts `value` as an array if it's not one.\n *\n * @static\n * @memberOf _\n * @since 4.4.0\n * @category Lang\n * @param {*} value The value to inspect.\n * @returns {Array} Returns the cast array.\n * @example\n *\n * _.castArray(1);\n * // => [1]\n *\n * _.castArray({ 'a': 1 });\n * // => [{ 'a': 1 }]\n *\n * _.castArray('abc');\n * // => ['abc']\n *\n * _.castArray(null);\n * // => [null]\n *\n * _.castArray(undefined);\n * // => [undefined]\n *\n * _.castArray();\n * // => []\n *\n * var array = [1, 2, 3];\n * console.log(_.castArray(array) === array);\n * // => true\n */\n function castArray() {\n if (!arguments.length) {\n return [];\n }\n var value = arguments[0];\n return isArray(value) ? value : [value];\n }\n\n /**\n * Creates a shallow clone of `value`.\n *\n * **Note:** This method is loosely based on the\n * [structured clone algorithm](https://mdn.io/Structured_clone_algorithm)\n * and supports cloning arrays, array buffers, booleans, date objects, maps,\n * numbers, `Object` objects, regexes, sets, strings, symbols, and typed\n * arrays. The own enumerable properties of `arguments` objects are cloned\n * as plain objects. An empty object is returned for uncloneable values such\n * as error objects, functions, DOM nodes, and WeakMaps.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to clone.\n * @returns {*} Returns the cloned value.\n * @see _.cloneDeep\n * @example\n *\n * var objects = [{ 'a': 1 }, { 'b': 2 }];\n *\n * var shallow = _.clone(objects);\n * console.log(shallow[0] === objects[0]);\n * // => true\n */\n function clone(value) {\n return baseClone(value, CLONE_SYMBOLS_FLAG);\n }\n\n /**\n * This method is like `_.clone` except that it accepts `customizer` which\n * is invoked to produce the cloned value. If `customizer` returns `undefined`,\n * cloning is handled by the method instead. The `customizer` is invoked with\n * up to four arguments; (value [, index|key, object, stack]).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to clone.\n * @param {Function} [customizer] The function to customize cloning.\n * @returns {*} Returns the cloned value.\n * @see _.cloneDeepWith\n * @example\n *\n * function customizer(value) {\n * if (_.isElement(value)) {\n * return value.cloneNode(false);\n * }\n * }\n *\n * var el = _.cloneWith(document.body, customizer);\n *\n * console.log(el === document.body);\n * // => false\n * console.log(el.nodeName);\n * // => 'BODY'\n * console.log(el.childNodes.length);\n * // => 0\n */\n function cloneWith(value, customizer) {\n customizer = typeof customizer == 'function' ? customizer : undefined;\n return baseClone(value, CLONE_SYMBOLS_FLAG, customizer);\n }\n\n /**\n * This method is like `_.clone` except that it recursively clones `value`.\n *\n * @static\n * @memberOf _\n * @since 1.0.0\n * @category Lang\n * @param {*} value The value to recursively clone.\n * @returns {*} Returns the deep cloned value.\n * @see _.clone\n * @example\n *\n * var objects = [{ 'a': 1 }, { 'b': 2 }];\n *\n * var deep = _.cloneDeep(objects);\n * console.log(deep[0] === objects[0]);\n * // => false\n */\n function cloneDeep(value) {\n return baseClone(value, CLONE_DEEP_FLAG | CLONE_SYMBOLS_FLAG);\n }\n\n /**\n * This method is like `_.cloneWith` except that it recursively clones `value`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to recursively clone.\n * @param {Function} [customizer] The function to customize cloning.\n * @returns {*} Returns the deep cloned value.\n * @see _.cloneWith\n * @example\n *\n * function customizer(value) {\n * if (_.isElement(value)) {\n * return value.cloneNode(true);\n * }\n * }\n *\n * var el = _.cloneDeepWith(document.body, customizer);\n *\n * console.log(el === document.body);\n * // => false\n * console.log(el.nodeName);\n * // => 'BODY'\n * console.log(el.childNodes.length);\n * // => 20\n */\n function cloneDeepWith(value, customizer) {\n customizer = typeof customizer == 'function' ? customizer : undefined;\n return baseClone(value, CLONE_DEEP_FLAG | CLONE_SYMBOLS_FLAG, customizer);\n }\n\n /**\n * Checks if `object` conforms to `source` by invoking the predicate\n * properties of `source` with the corresponding property values of `object`.\n *\n * **Note:** This method is equivalent to `_.conforms` when `source` is\n * partially applied.\n *\n * @static\n * @memberOf _\n * @since 4.14.0\n * @category Lang\n * @param {Object} object The object to inspect.\n * @param {Object} source The object of property predicates to conform to.\n * @returns {boolean} Returns `true` if `object` conforms, else `false`.\n * @example\n *\n * var object = { 'a': 1, 'b': 2 };\n *\n * _.conformsTo(object, { 'b': function(n) { return n > 1; } });\n * // => true\n *\n * _.conformsTo(object, { 'b': function(n) { return n > 2; } });\n * // => false\n */\n function conformsTo(object, source) {\n return source == null || baseConformsTo(object, source, keys(source));\n }\n\n /**\n * Performs a\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * comparison between two values to determine if they are equivalent.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.eq(object, object);\n * // => true\n *\n * _.eq(object, other);\n * // => false\n *\n * _.eq('a', 'a');\n * // => true\n *\n * _.eq('a', Object('a'));\n * // => false\n *\n * _.eq(NaN, NaN);\n * // => true\n */\n function eq(value, other) {\n return value === other || (value !== value && other !== other);\n }\n\n /**\n * Checks if `value` is greater than `other`.\n *\n * @static\n * @memberOf _\n * @since 3.9.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if `value` is greater than `other`,\n * else `false`.\n * @see _.lt\n * @example\n *\n * _.gt(3, 1);\n * // => true\n *\n * _.gt(3, 3);\n * // => false\n *\n * _.gt(1, 3);\n * // => false\n */\n var gt = createRelationalOperation(baseGt);\n\n /**\n * Checks if `value` is greater than or equal to `other`.\n *\n * @static\n * @memberOf _\n * @since 3.9.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if `value` is greater than or equal to\n * `other`, else `false`.\n * @see _.lte\n * @example\n *\n * _.gte(3, 1);\n * // => true\n *\n * _.gte(3, 3);\n * // => true\n *\n * _.gte(1, 3);\n * // => false\n */\n var gte = createRelationalOperation(function(value, other) {\n return value >= other;\n });\n\n /**\n * Checks if `value` is likely an `arguments` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n * else `false`.\n * @example\n *\n * _.isArguments(function() { return arguments; }());\n * // => true\n *\n * _.isArguments([1, 2, 3]);\n * // => false\n */\n var isArguments = baseIsArguments(function() { return arguments; }()) ? baseIsArguments : function(value) {\n return isObjectLike(value) && hasOwnProperty.call(value, 'callee') &&\n !propertyIsEnumerable.call(value, 'callee');\n };\n\n /**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\n var isArray = Array.isArray;\n\n /**\n * Checks if `value` is classified as an `ArrayBuffer` object.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array buffer, else `false`.\n * @example\n *\n * _.isArrayBuffer(new ArrayBuffer(2));\n * // => true\n *\n * _.isArrayBuffer(new Array(2));\n * // => false\n */\n var isArrayBuffer = nodeIsArrayBuffer ? baseUnary(nodeIsArrayBuffer) : baseIsArrayBuffer;\n\n /**\n * Checks if `value` is array-like. A value is considered array-like if it's\n * not a function and has a `value.length` that's an integer greater than or\n * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n * @example\n *\n * _.isArrayLike([1, 2, 3]);\n * // => true\n *\n * _.isArrayLike(document.body.children);\n * // => true\n *\n * _.isArrayLike('abc');\n * // => true\n *\n * _.isArrayLike(_.noop);\n * // => false\n */\n function isArrayLike(value) {\n return value != null && isLength(value.length) && !isFunction(value);\n }\n\n /**\n * This method is like `_.isArrayLike` except that it also checks if `value`\n * is an object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array-like object,\n * else `false`.\n * @example\n *\n * _.isArrayLikeObject([1, 2, 3]);\n * // => true\n *\n * _.isArrayLikeObject(document.body.children);\n * // => true\n *\n * _.isArrayLikeObject('abc');\n * // => false\n *\n * _.isArrayLikeObject(_.noop);\n * // => false\n */\n function isArrayLikeObject(value) {\n return isObjectLike(value) && isArrayLike(value);\n }\n\n /**\n * Checks if `value` is classified as a boolean primitive or object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a boolean, else `false`.\n * @example\n *\n * _.isBoolean(false);\n * // => true\n *\n * _.isBoolean(null);\n * // => false\n */\n function isBoolean(value) {\n return value === true || value === false ||\n (isObjectLike(value) && baseGetTag(value) == boolTag);\n }\n\n /**\n * Checks if `value` is a buffer.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a buffer, else `false`.\n * @example\n *\n * _.isBuffer(new Buffer(2));\n * // => true\n *\n * _.isBuffer(new Uint8Array(2));\n * // => false\n */\n var isBuffer = nativeIsBuffer || stubFalse;\n\n /**\n * Checks if `value` is classified as a `Date` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a date object, else `false`.\n * @example\n *\n * _.isDate(new Date);\n * // => true\n *\n * _.isDate('Mon April 23 2012');\n * // => false\n */\n var isDate = nodeIsDate ? baseUnary(nodeIsDate) : baseIsDate;\n\n /**\n * Checks if `value` is likely a DOM element.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a DOM element, else `false`.\n * @example\n *\n * _.isElement(document.body);\n * // => true\n *\n * _.isElement('<body>');\n * // => false\n */\n function isElement(value) {\n return isObjectLike(value) && value.nodeType === 1 && !isPlainObject(value);\n }\n\n /**\n * Checks if `value` is an empty object, collection, map, or set.\n *\n * Objects are considered empty if they have no own enumerable string keyed\n * properties.\n *\n * Array-like values such as `arguments` objects, arrays, buffers, strings, or\n * jQuery-like collections are considered empty if they have a `length` of `0`.\n * Similarly, maps and sets are considered empty if they have a `size` of `0`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is empty, else `false`.\n * @example\n *\n * _.isEmpty(null);\n * // => true\n *\n * _.isEmpty(true);\n * // => true\n *\n * _.isEmpty(1);\n * // => true\n *\n * _.isEmpty([1, 2, 3]);\n * // => false\n *\n * _.isEmpty({ 'a': 1 });\n * // => false\n */\n function isEmpty(value) {\n if (value == null) {\n return true;\n }\n if (isArrayLike(value) &&\n (isArray(value) || typeof value == 'string' || typeof value.splice == 'function' ||\n isBuffer(value) || isTypedArray(value) || isArguments(value))) {\n return !value.length;\n }\n var tag = getTag(value);\n if (tag == mapTag || tag == setTag) {\n return !value.size;\n }\n if (isPrototype(value)) {\n return !baseKeys(value).length;\n }\n for (var key in value) {\n if (hasOwnProperty.call(value, key)) {\n return false;\n }\n }\n return true;\n }\n\n /**\n * Performs a deep comparison between two values to determine if they are\n * equivalent.\n *\n * **Note:** This method supports comparing arrays, array buffers, booleans,\n * date objects, error objects, maps, numbers, `Object` objects, regexes,\n * sets, strings, symbols, and typed arrays. `Object` objects are compared\n * by their own, not inherited, enumerable properties. Functions and DOM\n * nodes are compared by strict equality, i.e. `===`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.isEqual(object, other);\n * // => true\n *\n * object === other;\n * // => false\n */\n function isEqual(value, other) {\n return baseIsEqual(value, other);\n }\n\n /**\n * This method is like `_.isEqual` except that it accepts `customizer` which\n * is invoked to compare values. If `customizer` returns `undefined`, comparisons\n * are handled by the method instead. The `customizer` is invoked with up to\n * six arguments: (objValue, othValue [, index|key, object, other, stack]).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @param {Function} [customizer] The function to customize comparisons.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * function isGreeting(value) {\n * return /^h(?:i|ello)$/.test(value);\n * }\n *\n * function customizer(objValue, othValue) {\n * if (isGreeting(objValue) && isGreeting(othValue)) {\n * return true;\n * }\n * }\n *\n * var array = ['hello', 'goodbye'];\n * var other = ['hi', 'goodbye'];\n *\n * _.isEqualWith(array, other, customizer);\n * // => true\n */\n function isEqualWith(value, other, customizer) {\n customizer = typeof customizer == 'function' ? customizer : undefined;\n var result = customizer ? customizer(value, other) : undefined;\n return result === undefined ? baseIsEqual(value, other, undefined, customizer) : !!result;\n }\n\n /**\n * Checks if `value` is an `Error`, `EvalError`, `RangeError`, `ReferenceError`,\n * `SyntaxError`, `TypeError`, or `URIError` object.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an error object, else `false`.\n * @example\n *\n * _.isError(new Error);\n * // => true\n *\n * _.isError(Error);\n * // => false\n */\n function isError(value) {\n if (!isObjectLike(value)) {\n return false;\n }\n var tag = baseGetTag(value);\n return tag == errorTag || tag == domExcTag ||\n (typeof value.message == 'string' && typeof value.name == 'string' && !isPlainObject(value));\n }\n\n /**\n * Checks if `value` is a finite primitive number.\n *\n * **Note:** This method is based on\n * [`Number.isFinite`](https://mdn.io/Number/isFinite).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a finite number, else `false`.\n * @example\n *\n * _.isFinite(3);\n * // => true\n *\n * _.isFinite(Number.MIN_VALUE);\n * // => true\n *\n * _.isFinite(Infinity);\n * // => false\n *\n * _.isFinite('3');\n * // => false\n */\n function isFinite(value) {\n return typeof value == 'number' && nativeIsFinite(value);\n }\n\n /**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\n function isFunction(value) {\n if (!isObject(value)) {\n return false;\n }\n // The use of `Object#toString` avoids issues with the `typeof` operator\n // in Safari 9 which returns 'object' for typed arrays and other constructors.\n var tag = baseGetTag(value);\n return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag;\n }\n\n /**\n * Checks if `value` is an integer.\n *\n * **Note:** This method is based on\n * [`Number.isInteger`](https://mdn.io/Number/isInteger).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an integer, else `false`.\n * @example\n *\n * _.isInteger(3);\n * // => true\n *\n * _.isInteger(Number.MIN_VALUE);\n * // => false\n *\n * _.isInteger(Infinity);\n * // => false\n *\n * _.isInteger('3');\n * // => false\n */\n function isInteger(value) {\n return typeof value == 'number' && value == toInteger(value);\n }\n\n /**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This method is loosely based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n * @example\n *\n * _.isLength(3);\n * // => true\n *\n * _.isLength(Number.MIN_VALUE);\n * // => false\n *\n * _.isLength(Infinity);\n * // => false\n *\n * _.isLength('3');\n * // => false\n */\n function isLength(value) {\n return typeof value == 'number' &&\n value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n }\n\n /**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\n function isObject(value) {\n var type = typeof value;\n return value != null && (type == 'object' || type == 'function');\n }\n\n /**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\n function isObjectLike(value) {\n return value != null && typeof value == 'object';\n }\n\n /**\n * Checks if `value` is classified as a `Map` object.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a map, else `false`.\n * @example\n *\n * _.isMap(new Map);\n * // => true\n *\n * _.isMap(new WeakMap);\n * // => false\n */\n var isMap = nodeIsMap ? baseUnary(nodeIsMap) : baseIsMap;\n\n /**\n * Performs a partial deep comparison between `object` and `source` to\n * determine if `object` contains equivalent property values.\n *\n * **Note:** This method is equivalent to `_.matches` when `source` is\n * partially applied.\n *\n * Partial comparisons will match empty array and empty object `source`\n * values against any array or object value, respectively. See `_.isEqual`\n * for a list of supported value comparisons.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {Object} object The object to inspect.\n * @param {Object} source The object of property values to match.\n * @returns {boolean} Returns `true` if `object` is a match, else `false`.\n * @example\n *\n * var object = { 'a': 1, 'b': 2 };\n *\n * _.isMatch(object, { 'b': 2 });\n * // => true\n *\n * _.isMatch(object, { 'b': 1 });\n * // => false\n */\n function isMatch(object, source) {\n return object === source || baseIsMatch(object, source, getMatchData(source));\n }\n\n /**\n * This method is like `_.isMatch` except that it accepts `customizer` which\n * is invoked to compare values. If `customizer` returns `undefined`, comparisons\n * are handled by the method instead. The `customizer` is invoked with five\n * arguments: (objValue, srcValue, index|key, object, source).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {Object} object The object to inspect.\n * @param {Object} source The object of property values to match.\n * @param {Function} [customizer] The function to customize comparisons.\n * @returns {boolean} Returns `true` if `object` is a match, else `false`.\n * @example\n *\n * function isGreeting(value) {\n * return /^h(?:i|ello)$/.test(value);\n * }\n *\n * function customizer(objValue, srcValue) {\n * if (isGreeting(objValue) && isGreeting(srcValue)) {\n * return true;\n * }\n * }\n *\n * var object = { 'greeting': 'hello' };\n * var source = { 'greeting': 'hi' };\n *\n * _.isMatchWith(object, source, customizer);\n * // => true\n */\n function isMatchWith(object, source, customizer) {\n customizer = typeof customizer == 'function' ? customizer : undefined;\n return baseIsMatch(object, source, getMatchData(source), customizer);\n }\n\n /**\n * Checks if `value` is `NaN`.\n *\n * **Note:** This method is based on\n * [`Number.isNaN`](https://mdn.io/Number/isNaN) and is not the same as\n * global [`isNaN`](https://mdn.io/isNaN) which returns `true` for\n * `undefined` and other non-number values.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is `NaN`, else `false`.\n * @example\n *\n * _.isNaN(NaN);\n * // => true\n *\n * _.isNaN(new Number(NaN));\n * // => true\n *\n * isNaN(undefined);\n * // => true\n *\n * _.isNaN(undefined);\n * // => false\n */\n function isNaN(value) {\n // An `NaN` primitive is the only value that is not equal to itself.\n // Perform the `toStringTag` check first to avoid errors with some\n // ActiveX objects in IE.\n return isNumber(value) && value != +value;\n }\n\n /**\n * Checks if `value` is a pristine native function.\n *\n * **Note:** This method can't reliably detect native functions in the presence\n * of the core-js package because core-js circumvents this kind of detection.\n * Despite multiple requests, the core-js maintainer has made it clear: any\n * attempt to fix the detection will be obstructed. As a result, we're left\n * with little choice but to throw an error. Unfortunately, this also affects\n * packages, like [babel-polyfill](https://www.npmjs.com/package/babel-polyfill),\n * which rely on core-js.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function,\n * else `false`.\n * @example\n *\n * _.isNative(Array.prototype.push);\n * // => true\n *\n * _.isNative(_);\n * // => false\n */\n function isNative(value) {\n if (isMaskable(value)) {\n throw new Error(CORE_ERROR_TEXT);\n }\n return baseIsNative(value);\n }\n\n /**\n * Checks if `value` is `null`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is `null`, else `false`.\n * @example\n *\n * _.isNull(null);\n * // => true\n *\n * _.isNull(void 0);\n * // => false\n */\n function isNull(value) {\n return value === null;\n }\n\n /**\n * Checks if `value` is `null` or `undefined`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is nullish, else `false`.\n * @example\n *\n * _.isNil(null);\n * // => true\n *\n * _.isNil(void 0);\n * // => true\n *\n * _.isNil(NaN);\n * // => false\n */\n function isNil(value) {\n return value == null;\n }\n\n /**\n * Checks if `value` is classified as a `Number` primitive or object.\n *\n * **Note:** To exclude `Infinity`, `-Infinity`, and `NaN`, which are\n * classified as numbers, use the `_.isFinite` method.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a number, else `false`.\n * @example\n *\n * _.isNumber(3);\n * // => true\n *\n * _.isNumber(Number.MIN_VALUE);\n * // => true\n *\n * _.isNumber(Infinity);\n * // => true\n *\n * _.isNumber('3');\n * // => false\n */\n function isNumber(value) {\n return typeof value == 'number' ||\n (isObjectLike(value) && baseGetTag(value) == numberTag);\n }\n\n /**\n * Checks if `value` is a plain object, that is, an object created by the\n * `Object` constructor or one with a `[[Prototype]]` of `null`.\n *\n * @static\n * @memberOf _\n * @since 0.8.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a plain object, else `false`.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * }\n *\n * _.isPlainObject(new Foo);\n * // => false\n *\n * _.isPlainObject([1, 2, 3]);\n * // => false\n *\n * _.isPlainObject({ 'x': 0, 'y': 0 });\n * // => true\n *\n * _.isPlainObject(Object.create(null));\n * // => true\n */\n function isPlainObject(value) {\n if (!isObjectLike(value) || baseGetTag(value) != objectTag) {\n return false;\n }\n var proto = getPrototype(value);\n if (proto === null) {\n return true;\n }\n var Ctor = hasOwnProperty.call(proto, 'constructor') && proto.constructor;\n return typeof Ctor == 'function' && Ctor instanceof Ctor &&\n funcToString.call(Ctor) == objectCtorString;\n }\n\n /**\n * Checks if `value` is classified as a `RegExp` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a regexp, else `false`.\n * @example\n *\n * _.isRegExp(/abc/);\n * // => true\n *\n * _.isRegExp('/abc/');\n * // => false\n */\n var isRegExp = nodeIsRegExp ? baseUnary(nodeIsRegExp) : baseIsRegExp;\n\n /**\n * Checks if `value` is a safe integer. An integer is safe if it's an IEEE-754\n * double precision number which isn't the result of a rounded unsafe integer.\n *\n * **Note:** This method is based on\n * [`Number.isSafeInteger`](https://mdn.io/Number/isSafeInteger).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a safe integer, else `false`.\n * @example\n *\n * _.isSafeInteger(3);\n * // => true\n *\n * _.isSafeInteger(Number.MIN_VALUE);\n * // => false\n *\n * _.isSafeInteger(Infinity);\n * // => false\n *\n * _.isSafeInteger('3');\n * // => false\n */\n function isSafeInteger(value) {\n return isInteger(value) && value >= -MAX_SAFE_INTEGER && value <= MAX_SAFE_INTEGER;\n }\n\n /**\n * Checks if `value` is classified as a `Set` object.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a set, else `false`.\n * @example\n *\n * _.isSet(new Set);\n * // => true\n *\n * _.isSet(new WeakSet);\n * // => false\n */\n var isSet = nodeIsSet ? baseUnary(nodeIsSet) : baseIsSet;\n\n /**\n * Checks if `value` is classified as a `String` primitive or object.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a string, else `false`.\n * @example\n *\n * _.isString('abc');\n * // => true\n *\n * _.isString(1);\n * // => false\n */\n function isString(value) {\n return typeof value == 'string' ||\n (!isArray(value) && isObjectLike(value) && baseGetTag(value) == stringTag);\n }\n\n /**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\n function isSymbol(value) {\n return typeof value == 'symbol' ||\n (isObjectLike(value) && baseGetTag(value) == symbolTag);\n }\n\n /**\n * Checks if `value` is classified as a typed array.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n * @example\n *\n * _.isTypedArray(new Uint8Array);\n * // => true\n *\n * _.isTypedArray([]);\n * // => false\n */\n var isTypedArray = nodeIsTypedArray ? baseUnary(nodeIsTypedArray) : baseIsTypedArray;\n\n /**\n * Checks if `value` is `undefined`.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is `undefined`, else `false`.\n * @example\n *\n * _.isUndefined(void 0);\n * // => true\n *\n * _.isUndefined(null);\n * // => false\n */\n function isUndefined(value) {\n return value === undefined;\n }\n\n /**\n * Checks if `value` is classified as a `WeakMap` object.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a weak map, else `false`.\n * @example\n *\n * _.isWeakMap(new WeakMap);\n * // => true\n *\n * _.isWeakMap(new Map);\n * // => false\n */\n function isWeakMap(value) {\n return isObjectLike(value) && getTag(value) == weakMapTag;\n }\n\n /**\n * Checks if `value` is classified as a `WeakSet` object.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a weak set, else `false`.\n * @example\n *\n * _.isWeakSet(new WeakSet);\n * // => true\n *\n * _.isWeakSet(new Set);\n * // => false\n */\n function isWeakSet(value) {\n return isObjectLike(value) && baseGetTag(value) == weakSetTag;\n }\n\n /**\n * Checks if `value` is less than `other`.\n *\n * @static\n * @memberOf _\n * @since 3.9.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if `value` is less than `other`,\n * else `false`.\n * @see _.gt\n * @example\n *\n * _.lt(1, 3);\n * // => true\n *\n * _.lt(3, 3);\n * // => false\n *\n * _.lt(3, 1);\n * // => false\n */\n var lt = createRelationalOperation(baseLt);\n\n /**\n * Checks if `value` is less than or equal to `other`.\n *\n * @static\n * @memberOf _\n * @since 3.9.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if `value` is less than or equal to\n * `other`, else `false`.\n * @see _.gte\n * @example\n *\n * _.lte(1, 3);\n * // => true\n *\n * _.lte(3, 3);\n * // => true\n *\n * _.lte(3, 1);\n * // => false\n */\n var lte = createRelationalOperation(function(value, other) {\n return value <= other;\n });\n\n /**\n * Converts `value` to an array.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {Array} Returns the converted array.\n * @example\n *\n * _.toArray({ 'a': 1, 'b': 2 });\n * // => [1, 2]\n *\n * _.toArray('abc');\n * // => ['a', 'b', 'c']\n *\n * _.toArray(1);\n * // => []\n *\n * _.toArray(null);\n * // => []\n */\n function toArray(value) {\n if (!value) {\n return [];\n }\n if (isArrayLike(value)) {\n return isString(value) ? stringToArray(value) : copyArray(value);\n }\n if (symIterator && value[symIterator]) {\n return iteratorToArray(value[symIterator]());\n }\n var tag = getTag(value),\n func = tag == mapTag ? mapToArray : (tag == setTag ? setToArray : values);\n\n return func(value);\n }\n\n /**\n * Converts `value` to a finite number.\n *\n * @static\n * @memberOf _\n * @since 4.12.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {number} Returns the converted number.\n * @example\n *\n * _.toFinite(3.2);\n * // => 3.2\n *\n * _.toFinite(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toFinite(Infinity);\n * // => 1.7976931348623157e+308\n *\n * _.toFinite('3.2');\n * // => 3.2\n */\n function toFinite(value) {\n if (!value) {\n return value === 0 ? value : 0;\n }\n value = toNumber(value);\n if (value === INFINITY || value === -INFINITY) {\n var sign = (value < 0 ? -1 : 1);\n return sign * MAX_INTEGER;\n }\n return value === value ? value : 0;\n }\n\n /**\n * Converts `value` to an integer.\n *\n * **Note:** This method is loosely based on\n * [`ToInteger`](http://www.ecma-international.org/ecma-262/7.0/#sec-tointeger).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {number} Returns the converted integer.\n * @example\n *\n * _.toInteger(3.2);\n * // => 3\n *\n * _.toInteger(Number.MIN_VALUE);\n * // => 0\n *\n * _.toInteger(Infinity);\n * // => 1.7976931348623157e+308\n *\n * _.toInteger('3.2');\n * // => 3\n */\n function toInteger(value) {\n var result = toFinite(value),\n remainder = result % 1;\n\n return result === result ? (remainder ? result - remainder : result) : 0;\n }\n\n /**\n * Converts `value` to an integer suitable for use as the length of an\n * array-like object.\n *\n * **Note:** This method is based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {number} Returns the converted integer.\n * @example\n *\n * _.toLength(3.2);\n * // => 3\n *\n * _.toLength(Number.MIN_VALUE);\n * // => 0\n *\n * _.toLength(Infinity);\n * // => 4294967295\n *\n * _.toLength('3.2');\n * // => 3\n */\n function toLength(value) {\n return value ? baseClamp(toInteger(value), 0, MAX_ARRAY_LENGTH) : 0;\n }\n\n /**\n * Converts `value` to a number.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to process.\n * @returns {number} Returns the number.\n * @example\n *\n * _.toNumber(3.2);\n * // => 3.2\n *\n * _.toNumber(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toNumber(Infinity);\n * // => Infinity\n *\n * _.toNumber('3.2');\n * // => 3.2\n */\n function toNumber(value) {\n if (typeof value == 'number') {\n return value;\n }\n if (isSymbol(value)) {\n return NAN;\n }\n if (isObject(value)) {\n var other = typeof value.valueOf == 'function' ? value.valueOf() : value;\n value = isObject(other) ? (other + '') : other;\n }\n if (typeof value != 'string') {\n return value === 0 ? value : +value;\n }\n value = baseTrim(value);\n var isBinary = reIsBinary.test(value);\n return (isBinary || reIsOctal.test(value))\n ? freeParseInt(value.slice(2), isBinary ? 2 : 8)\n : (reIsBadHex.test(value) ? NAN : +value);\n }\n\n /**\n * Converts `value` to a plain object flattening inherited enumerable string\n * keyed properties of `value` to own properties of the plain object.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {Object} Returns the converted plain object.\n * @example\n *\n * function Foo() {\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.assign({ 'a': 1 }, new Foo);\n * // => { 'a': 1, 'b': 2 }\n *\n * _.assign({ 'a': 1 }, _.toPlainObject(new Foo));\n * // => { 'a': 1, 'b': 2, 'c': 3 }\n */\n function toPlainObject(value) {\n return copyObject(value, keysIn(value));\n }\n\n /**\n * Converts `value` to a safe integer. A safe integer can be compared and\n * represented correctly.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {number} Returns the converted integer.\n * @example\n *\n * _.toSafeInteger(3.2);\n * // => 3\n *\n * _.toSafeInteger(Number.MIN_VALUE);\n * // => 0\n *\n * _.toSafeInteger(Infinity);\n * // => 9007199254740991\n *\n * _.toSafeInteger('3.2');\n * // => 3\n */\n function toSafeInteger(value) {\n return value\n ? baseClamp(toInteger(value), -MAX_SAFE_INTEGER, MAX_SAFE_INTEGER)\n : (value === 0 ? value : 0);\n }\n\n /**\n * Converts `value` to a string. An empty string is returned for `null`\n * and `undefined` values. The sign of `-0` is preserved.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n * @example\n *\n * _.toString(null);\n * // => ''\n *\n * _.toString(-0);\n * // => '-0'\n *\n * _.toString([1, 2, 3]);\n * // => '1,2,3'\n */\n function toString(value) {\n return value == null ? '' : baseToString(value);\n }\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Assigns own enumerable string keyed properties of source objects to the\n * destination object. Source objects are applied from left to right.\n * Subsequent sources overwrite property assignments of previous sources.\n *\n * **Note:** This method mutates `object` and is loosely based on\n * [`Object.assign`](https://mdn.io/Object/assign).\n *\n * @static\n * @memberOf _\n * @since 0.10.0\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @see _.assignIn\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * }\n *\n * function Bar() {\n * this.c = 3;\n * }\n *\n * Foo.prototype.b = 2;\n * Bar.prototype.d = 4;\n *\n * _.assign({ 'a': 0 }, new Foo, new Bar);\n * // => { 'a': 1, 'c': 3 }\n */\n var assign = createAssigner(function(object, source) {\n if (isPrototype(source) || isArrayLike(source)) {\n copyObject(source, keys(source), object);\n return;\n }\n for (var key in source) {\n if (hasOwnProperty.call(source, key)) {\n assignValue(object, key, source[key]);\n }\n }\n });\n\n /**\n * This method is like `_.assign` except that it iterates over own and\n * inherited source properties.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @alias extend\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @see _.assign\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * }\n *\n * function Bar() {\n * this.c = 3;\n * }\n *\n * Foo.prototype.b = 2;\n * Bar.prototype.d = 4;\n *\n * _.assignIn({ 'a': 0 }, new Foo, new Bar);\n * // => { 'a': 1, 'b': 2, 'c': 3, 'd': 4 }\n */\n var assignIn = createAssigner(function(object, source) {\n copyObject(source, keysIn(source), object);\n });\n\n /**\n * This method is like `_.assignIn` except that it accepts `customizer`\n * which is invoked to produce the assigned values. If `customizer` returns\n * `undefined`, assignment is handled by the method instead. The `customizer`\n * is invoked with five arguments: (objValue, srcValue, key, object, source).\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @alias extendWith\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} sources The source objects.\n * @param {Function} [customizer] The function to customize assigned values.\n * @returns {Object} Returns `object`.\n * @see _.assignWith\n * @example\n *\n * function customizer(objValue, srcValue) {\n * return _.isUndefined(objValue) ? srcValue : objValue;\n * }\n *\n * var defaults = _.partialRight(_.assignInWith, customizer);\n *\n * defaults({ 'a': 1 }, { 'b': 2 }, { 'a': 3 });\n * // => { 'a': 1, 'b': 2 }\n */\n var assignInWith = createAssigner(function(object, source, srcIndex, customizer) {\n copyObject(source, keysIn(source), object, customizer);\n });\n\n /**\n * This method is like `_.assign` except that it accepts `customizer`\n * which is invoked to produce the assigned values. If `customizer` returns\n * `undefined`, assignment is handled by the method instead. The `customizer`\n * is invoked with five arguments: (objValue, srcValue, key, object, source).\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} sources The source objects.\n * @param {Function} [customizer] The function to customize assigned values.\n * @returns {Object} Returns `object`.\n * @see _.assignInWith\n * @example\n *\n * function customizer(objValue, srcValue) {\n * return _.isUndefined(objValue) ? srcValue : objValue;\n * }\n *\n * var defaults = _.partialRight(_.assignWith, customizer);\n *\n * defaults({ 'a': 1 }, { 'b': 2 }, { 'a': 3 });\n * // => { 'a': 1, 'b': 2 }\n */\n var assignWith = createAssigner(function(object, source, srcIndex, customizer) {\n copyObject(source, keys(source), object, customizer);\n });\n\n /**\n * Creates an array of values corresponding to `paths` of `object`.\n *\n * @static\n * @memberOf _\n * @since 1.0.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {...(string|string[])} [paths] The property paths to pick.\n * @returns {Array} Returns the picked values.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }, 4] };\n *\n * _.at(object, ['a[0].b.c', 'a[1]']);\n * // => [3, 4]\n */\n var at = flatRest(baseAt);\n\n /**\n * Creates an object that inherits from the `prototype` object. If a\n * `properties` object is given, its own enumerable string keyed properties\n * are assigned to the created object.\n *\n * @static\n * @memberOf _\n * @since 2.3.0\n * @category Object\n * @param {Object} prototype The object to inherit from.\n * @param {Object} [properties] The properties to assign to the object.\n * @returns {Object} Returns the new object.\n * @example\n *\n * function Shape() {\n * this.x = 0;\n * this.y = 0;\n * }\n *\n * function Circle() {\n * Shape.call(this);\n * }\n *\n * Circle.prototype = _.create(Shape.prototype, {\n * 'constructor': Circle\n * });\n *\n * var circle = new Circle;\n * circle instanceof Circle;\n * // => true\n *\n * circle instanceof Shape;\n * // => true\n */\n function create(prototype, properties) {\n var result = baseCreate(prototype);\n return properties == null ? result : baseAssign(result, properties);\n }\n\n /**\n * Assigns own and inherited enumerable string keyed properties of source\n * objects to the destination object for all destination properties that\n * resolve to `undefined`. Source objects are applied from left to right.\n * Once a property is set, additional values of the same property are ignored.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @see _.defaultsDeep\n * @example\n *\n * _.defaults({ 'a': 1 }, { 'b': 2 }, { 'a': 3 });\n * // => { 'a': 1, 'b': 2 }\n */\n var defaults = baseRest(function(object, sources) {\n object = Object(object);\n\n var index = -1;\n var length = sources.length;\n var guard = length > 2 ? sources[2] : undefined;\n\n if (guard && isIterateeCall(sources[0], sources[1], guard)) {\n length = 1;\n }\n\n while (++index < length) {\n var source = sources[index];\n var props = keysIn(source);\n var propsIndex = -1;\n var propsLength = props.length;\n\n while (++propsIndex < propsLength) {\n var key = props[propsIndex];\n var value = object[key];\n\n if (value === undefined ||\n (eq(value, objectProto[key]) && !hasOwnProperty.call(object, key))) {\n object[key] = source[key];\n }\n }\n }\n\n return object;\n });\n\n /**\n * This method is like `_.defaults` except that it recursively assigns\n * default properties.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 3.10.0\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @see _.defaults\n * @example\n *\n * _.defaultsDeep({ 'a': { 'b': 2 } }, { 'a': { 'b': 1, 'c': 3 } });\n * // => { 'a': { 'b': 2, 'c': 3 } }\n */\n var defaultsDeep = baseRest(function(args) {\n args.push(undefined, customDefaultsMerge);\n return apply(mergeWith, undefined, args);\n });\n\n /**\n * This method is like `_.find` except that it returns the key of the first\n * element `predicate` returns truthy for instead of the element itself.\n *\n * @static\n * @memberOf _\n * @since 1.1.0\n * @category Object\n * @param {Object} object The object to inspect.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {string|undefined} Returns the key of the matched element,\n * else `undefined`.\n * @example\n *\n * var users = {\n * 'barney': { 'age': 36, 'active': true },\n * 'fred': { 'age': 40, 'active': false },\n * 'pebbles': { 'age': 1, 'active': true }\n * };\n *\n * _.findKey(users, function(o) { return o.age < 40; });\n * // => 'barney' (iteration order is not guaranteed)\n *\n * // The `_.matches` iteratee shorthand.\n * _.findKey(users, { 'age': 1, 'active': true });\n * // => 'pebbles'\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.findKey(users, ['active', false]);\n * // => 'fred'\n *\n * // The `_.property` iteratee shorthand.\n * _.findKey(users, 'active');\n * // => 'barney'\n */\n function findKey(object, predicate) {\n return baseFindKey(object, getIteratee(predicate, 3), baseForOwn);\n }\n\n /**\n * This method is like `_.findKey` except that it iterates over elements of\n * a collection in the opposite order.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Object\n * @param {Object} object The object to inspect.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {string|undefined} Returns the key of the matched element,\n * else `undefined`.\n * @example\n *\n * var users = {\n * 'barney': { 'age': 36, 'active': true },\n * 'fred': { 'age': 40, 'active': false },\n * 'pebbles': { 'age': 1, 'active': true }\n * };\n *\n * _.findLastKey(users, function(o) { return o.age < 40; });\n * // => returns 'pebbles' assuming `_.findKey` returns 'barney'\n *\n * // The `_.matches` iteratee shorthand.\n * _.findLastKey(users, { 'age': 36, 'active': true });\n * // => 'barney'\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.findLastKey(users, ['active', false]);\n * // => 'fred'\n *\n * // The `_.property` iteratee shorthand.\n * _.findLastKey(users, 'active');\n * // => 'pebbles'\n */\n function findLastKey(object, predicate) {\n return baseFindKey(object, getIteratee(predicate, 3), baseForOwnRight);\n }\n\n /**\n * Iterates over own and inherited enumerable string keyed properties of an\n * object and invokes `iteratee` for each property. The iteratee is invoked\n * with three arguments: (value, key, object). Iteratee functions may exit\n * iteration early by explicitly returning `false`.\n *\n * @static\n * @memberOf _\n * @since 0.3.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Object} Returns `object`.\n * @see _.forInRight\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.forIn(new Foo, function(value, key) {\n * console.log(key);\n * });\n * // => Logs 'a', 'b', then 'c' (iteration order is not guaranteed).\n */\n function forIn(object, iteratee) {\n return object == null\n ? object\n : baseFor(object, getIteratee(iteratee, 3), keysIn);\n }\n\n /**\n * This method is like `_.forIn` except that it iterates over properties of\n * `object` in the opposite order.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Object} Returns `object`.\n * @see _.forIn\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.forInRight(new Foo, function(value, key) {\n * console.log(key);\n * });\n * // => Logs 'c', 'b', then 'a' assuming `_.forIn` logs 'a', 'b', then 'c'.\n */\n function forInRight(object, iteratee) {\n return object == null\n ? object\n : baseForRight(object, getIteratee(iteratee, 3), keysIn);\n }\n\n /**\n * Iterates over own enumerable string keyed properties of an object and\n * invokes `iteratee` for each property. The iteratee is invoked with three\n * arguments: (value, key, object). Iteratee functions may exit iteration\n * early by explicitly returning `false`.\n *\n * @static\n * @memberOf _\n * @since 0.3.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Object} Returns `object`.\n * @see _.forOwnRight\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.forOwn(new Foo, function(value, key) {\n * console.log(key);\n * });\n * // => Logs 'a' then 'b' (iteration order is not guaranteed).\n */\n function forOwn(object, iteratee) {\n return object && baseForOwn(object, getIteratee(iteratee, 3));\n }\n\n /**\n * This method is like `_.forOwn` except that it iterates over properties of\n * `object` in the opposite order.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Object} Returns `object`.\n * @see _.forOwn\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.forOwnRight(new Foo, function(value, key) {\n * console.log(key);\n * });\n * // => Logs 'b' then 'a' assuming `_.forOwn` logs 'a' then 'b'.\n */\n function forOwnRight(object, iteratee) {\n return object && baseForOwnRight(object, getIteratee(iteratee, 3));\n }\n\n /**\n * Creates an array of function property names from own enumerable properties\n * of `object`.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to inspect.\n * @returns {Array} Returns the function names.\n * @see _.functionsIn\n * @example\n *\n * function Foo() {\n * this.a = _.constant('a');\n * this.b = _.constant('b');\n * }\n *\n * Foo.prototype.c = _.constant('c');\n *\n * _.functions(new Foo);\n * // => ['a', 'b']\n */\n function functions(object) {\n return object == null ? [] : baseFunctions(object, keys(object));\n }\n\n /**\n * Creates an array of function property names from own and inherited\n * enumerable properties of `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The object to inspect.\n * @returns {Array} Returns the function names.\n * @see _.functions\n * @example\n *\n * function Foo() {\n * this.a = _.constant('a');\n * this.b = _.constant('b');\n * }\n *\n * Foo.prototype.c = _.constant('c');\n *\n * _.functionsIn(new Foo);\n * // => ['a', 'b', 'c']\n */\n function functionsIn(object) {\n return object == null ? [] : baseFunctions(object, keysIn(object));\n }\n\n /**\n * Gets the value at `path` of `object`. If the resolved value is\n * `undefined`, the `defaultValue` is returned in its place.\n *\n * @static\n * @memberOf _\n * @since 3.7.0\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to get.\n * @param {*} [defaultValue] The value returned for `undefined` resolved values.\n * @returns {*} Returns the resolved value.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }] };\n *\n * _.get(object, 'a[0].b.c');\n * // => 3\n *\n * _.get(object, ['a', '0', 'b', 'c']);\n * // => 3\n *\n * _.get(object, 'a.b.c', 'default');\n * // => 'default'\n */\n function get(object, path, defaultValue) {\n var result = object == null ? undefined : baseGet(object, path);\n return result === undefined ? defaultValue : result;\n }\n\n /**\n * Checks if `path` is a direct property of `object`.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path to check.\n * @returns {boolean} Returns `true` if `path` exists, else `false`.\n * @example\n *\n * var object = { 'a': { 'b': 2 } };\n * var other = _.create({ 'a': _.create({ 'b': 2 }) });\n *\n * _.has(object, 'a');\n * // => true\n *\n * _.has(object, 'a.b');\n * // => true\n *\n * _.has(object, ['a', 'b']);\n * // => true\n *\n * _.has(other, 'a');\n * // => false\n */\n function has(object, path) {\n return object != null && hasPath(object, path, baseHas);\n }\n\n /**\n * Checks if `path` is a direct or inherited property of `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path to check.\n * @returns {boolean} Returns `true` if `path` exists, else `false`.\n * @example\n *\n * var object = _.create({ 'a': _.create({ 'b': 2 }) });\n *\n * _.hasIn(object, 'a');\n * // => true\n *\n * _.hasIn(object, 'a.b');\n * // => true\n *\n * _.hasIn(object, ['a', 'b']);\n * // => true\n *\n * _.hasIn(object, 'b');\n * // => false\n */\n function hasIn(object, path) {\n return object != null && hasPath(object, path, baseHasIn);\n }\n\n /**\n * Creates an object composed of the inverted keys and values of `object`.\n * If `object` contains duplicate values, subsequent values overwrite\n * property assignments of previous values.\n *\n * @static\n * @memberOf _\n * @since 0.7.0\n * @category Object\n * @param {Object} object The object to invert.\n * @returns {Object} Returns the new inverted object.\n * @example\n *\n * var object = { 'a': 1, 'b': 2, 'c': 1 };\n *\n * _.invert(object);\n * // => { '1': 'c', '2': 'b' }\n */\n var invert = createInverter(function(result, value, key) {\n if (value != null &&\n typeof value.toString != 'function') {\n value = nativeObjectToString.call(value);\n }\n\n result[value] = key;\n }, constant(identity));\n\n /**\n * This method is like `_.invert` except that the inverted object is generated\n * from the results of running each element of `object` thru `iteratee`. The\n * corresponding inverted value of each inverted key is an array of keys\n * responsible for generating the inverted value. The iteratee is invoked\n * with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 4.1.0\n * @category Object\n * @param {Object} object The object to invert.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {Object} Returns the new inverted object.\n * @example\n *\n * var object = { 'a': 1, 'b': 2, 'c': 1 };\n *\n * _.invertBy(object);\n * // => { '1': ['a', 'c'], '2': ['b'] }\n *\n * _.invertBy(object, function(value) {\n * return 'group' + value;\n * });\n * // => { 'group1': ['a', 'c'], 'group2': ['b'] }\n */\n var invertBy = createInverter(function(result, value, key) {\n if (value != null &&\n typeof value.toString != 'function') {\n value = nativeObjectToString.call(value);\n }\n\n if (hasOwnProperty.call(result, value)) {\n result[value].push(key);\n } else {\n result[value] = [key];\n }\n }, getIteratee);\n\n /**\n * Invokes the method at `path` of `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the method to invoke.\n * @param {...*} [args] The arguments to invoke the method with.\n * @returns {*} Returns the result of the invoked method.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': [1, 2, 3, 4] } }] };\n *\n * _.invoke(object, 'a[0].b.c.slice', 1, 3);\n * // => [2, 3]\n */\n var invoke = baseRest(baseInvoke);\n\n /**\n * Creates an array of the own enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects. See the\n * [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * for more details.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keys(new Foo);\n * // => ['a', 'b'] (iteration order is not guaranteed)\n *\n * _.keys('hi');\n * // => ['0', '1']\n */\n function keys(object) {\n return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object);\n }\n\n /**\n * Creates an array of the own and inherited enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keysIn(new Foo);\n * // => ['a', 'b', 'c'] (iteration order is not guaranteed)\n */\n function keysIn(object) {\n return isArrayLike(object) ? arrayLikeKeys(object, true) : baseKeysIn(object);\n }\n\n /**\n * The opposite of `_.mapValues`; this method creates an object with the\n * same values as `object` and keys generated by running each own enumerable\n * string keyed property of `object` thru `iteratee`. The iteratee is invoked\n * with three arguments: (value, key, object).\n *\n * @static\n * @memberOf _\n * @since 3.8.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Object} Returns the new mapped object.\n * @see _.mapValues\n * @example\n *\n * _.mapKeys({ 'a': 1, 'b': 2 }, function(value, key) {\n * return key + value;\n * });\n * // => { 'a1': 1, 'b2': 2 }\n */\n function mapKeys(object, iteratee) {\n var result = {};\n iteratee = getIteratee(iteratee, 3);\n\n baseForOwn(object, function(value, key, object) {\n baseAssignValue(result, iteratee(value, key, object), value);\n });\n return result;\n }\n\n /**\n * Creates an object with the same keys as `object` and values generated\n * by running each own enumerable string keyed property of `object` thru\n * `iteratee`. The iteratee is invoked with three arguments:\n * (value, key, object).\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Object} Returns the new mapped object.\n * @see _.mapKeys\n * @example\n *\n * var users = {\n * 'fred': { 'user': 'fred', 'age': 40 },\n * 'pebbles': { 'user': 'pebbles', 'age': 1 }\n * };\n *\n * _.mapValues(users, function(o) { return o.age; });\n * // => { 'fred': 40, 'pebbles': 1 } (iteration order is not guaranteed)\n *\n * // The `_.property` iteratee shorthand.\n * _.mapValues(users, 'age');\n * // => { 'fred': 40, 'pebbles': 1 } (iteration order is not guaranteed)\n */\n function mapValues(object, iteratee) {\n var result = {};\n iteratee = getIteratee(iteratee, 3);\n\n baseForOwn(object, function(value, key, object) {\n baseAssignValue(result, key, iteratee(value, key, object));\n });\n return result;\n }\n\n /**\n * This method is like `_.assign` except that it recursively merges own and\n * inherited enumerable string keyed properties of source objects into the\n * destination object. Source properties that resolve to `undefined` are\n * skipped if a destination value exists. Array and plain object properties\n * are merged recursively. Other objects and value types are overridden by\n * assignment. Source objects are applied from left to right. Subsequent\n * sources overwrite property assignments of previous sources.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 0.5.0\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @example\n *\n * var object = {\n * 'a': [{ 'b': 2 }, { 'd': 4 }]\n * };\n *\n * var other = {\n * 'a': [{ 'c': 3 }, { 'e': 5 }]\n * };\n *\n * _.merge(object, other);\n * // => { 'a': [{ 'b': 2, 'c': 3 }, { 'd': 4, 'e': 5 }] }\n */\n var merge = createAssigner(function(object, source, srcIndex) {\n baseMerge(object, source, srcIndex);\n });\n\n /**\n * This method is like `_.merge` except that it accepts `customizer` which\n * is invoked to produce the merged values of the destination and source\n * properties. If `customizer` returns `undefined`, merging is handled by the\n * method instead. The `customizer` is invoked with six arguments:\n * (objValue, srcValue, key, object, source, stack).\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} sources The source objects.\n * @param {Function} customizer The function to customize assigned values.\n * @returns {Object} Returns `object`.\n * @example\n *\n * function customizer(objValue, srcValue) {\n * if (_.isArray(objValue)) {\n * return objValue.concat(srcValue);\n * }\n * }\n *\n * var object = { 'a': [1], 'b': [2] };\n * var other = { 'a': [3], 'b': [4] };\n *\n * _.mergeWith(object, other, customizer);\n * // => { 'a': [1, 3], 'b': [2, 4] }\n */\n var mergeWith = createAssigner(function(object, source, srcIndex, customizer) {\n baseMerge(object, source, srcIndex, customizer);\n });\n\n /**\n * The opposite of `_.pick`; this method creates an object composed of the\n * own and inherited enumerable property paths of `object` that are not omitted.\n *\n * **Note:** This method is considerably slower than `_.pick`.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The source object.\n * @param {...(string|string[])} [paths] The property paths to omit.\n * @returns {Object} Returns the new object.\n * @example\n *\n * var object = { 'a': 1, 'b': '2', 'c': 3 };\n *\n * _.omit(object, ['a', 'c']);\n * // => { 'b': '2' }\n */\n var omit = flatRest(function(object, paths) {\n var result = {};\n if (object == null) {\n return result;\n }\n var isDeep = false;\n paths = arrayMap(paths, function(path) {\n path = castPath(path, object);\n isDeep || (isDeep = path.length > 1);\n return path;\n });\n copyObject(object, getAllKeysIn(object), result);\n if (isDeep) {\n result = baseClone(result, CLONE_DEEP_FLAG | CLONE_FLAT_FLAG | CLONE_SYMBOLS_FLAG, customOmitClone);\n }\n var length = paths.length;\n while (length--) {\n baseUnset(result, paths[length]);\n }\n return result;\n });\n\n /**\n * The opposite of `_.pickBy`; this method creates an object composed of\n * the own and inherited enumerable string keyed properties of `object` that\n * `predicate` doesn't return truthy for. The predicate is invoked with two\n * arguments: (value, key).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The source object.\n * @param {Function} [predicate=_.identity] The function invoked per property.\n * @returns {Object} Returns the new object.\n * @example\n *\n * var object = { 'a': 1, 'b': '2', 'c': 3 };\n *\n * _.omitBy(object, _.isNumber);\n * // => { 'b': '2' }\n */\n function omitBy(object, predicate) {\n return pickBy(object, negate(getIteratee(predicate)));\n }\n\n /**\n * Creates an object composed of the picked `object` properties.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The source object.\n * @param {...(string|string[])} [paths] The property paths to pick.\n * @returns {Object} Returns the new object.\n * @example\n *\n * var object = { 'a': 1, 'b': '2', 'c': 3 };\n *\n * _.pick(object, ['a', 'c']);\n * // => { 'a': 1, 'c': 3 }\n */\n var pick = flatRest(function(object, paths) {\n return object == null ? {} : basePick(object, paths);\n });\n\n /**\n * Creates an object composed of the `object` properties `predicate` returns\n * truthy for. The predicate is invoked with two arguments: (value, key).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The source object.\n * @param {Function} [predicate=_.identity] The function invoked per property.\n * @returns {Object} Returns the new object.\n * @example\n *\n * var object = { 'a': 1, 'b': '2', 'c': 3 };\n *\n * _.pickBy(object, _.isNumber);\n * // => { 'a': 1, 'c': 3 }\n */\n function pickBy(object, predicate) {\n if (object == null) {\n return {};\n }\n var props = arrayMap(getAllKeysIn(object), function(prop) {\n return [prop];\n });\n predicate = getIteratee(predicate);\n return basePickBy(object, props, function(value, path) {\n return predicate(value, path[0]);\n });\n }\n\n /**\n * This method is like `_.get` except that if the resolved value is a\n * function it's invoked with the `this` binding of its parent object and\n * its result is returned.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to resolve.\n * @param {*} [defaultValue] The value returned for `undefined` resolved values.\n * @returns {*} Returns the resolved value.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c1': 3, 'c2': _.constant(4) } }] };\n *\n * _.result(object, 'a[0].b.c1');\n * // => 3\n *\n * _.result(object, 'a[0].b.c2');\n * // => 4\n *\n * _.result(object, 'a[0].b.c3', 'default');\n * // => 'default'\n *\n * _.result(object, 'a[0].b.c3', _.constant('default'));\n * // => 'default'\n */\n function result(object, path, defaultValue) {\n path = castPath(path, object);\n\n var index = -1,\n length = path.length;\n\n // Ensure the loop is entered when path is empty.\n if (!length) {\n length = 1;\n object = undefined;\n }\n while (++index < length) {\n var value = object == null ? undefined : object[toKey(path[index])];\n if (value === undefined) {\n index = length;\n value = defaultValue;\n }\n object = isFunction(value) ? value.call(object) : value;\n }\n return object;\n }\n\n /**\n * Sets the value at `path` of `object`. If a portion of `path` doesn't exist,\n * it's created. Arrays are created for missing index properties while objects\n * are created for all other missing properties. Use `_.setWith` to customize\n * `path` creation.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 3.7.0\n * @category Object\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns `object`.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }] };\n *\n * _.set(object, 'a[0].b.c', 4);\n * console.log(object.a[0].b.c);\n * // => 4\n *\n * _.set(object, ['x', '0', 'y', 'z'], 5);\n * console.log(object.x[0].y.z);\n * // => 5\n */\n function set(object, path, value) {\n return object == null ? object : baseSet(object, path, value);\n }\n\n /**\n * This method is like `_.set` except that it accepts `customizer` which is\n * invoked to produce the objects of `path`. If `customizer` returns `undefined`\n * path creation is handled by the method instead. The `customizer` is invoked\n * with three arguments: (nsValue, key, nsObject).\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to set.\n * @param {*} value The value to set.\n * @param {Function} [customizer] The function to customize assigned values.\n * @returns {Object} Returns `object`.\n * @example\n *\n * var object = {};\n *\n * _.setWith(object, '[0][1]', 'a', Object);\n * // => { '0': { '1': 'a' } }\n */\n function setWith(object, path, value, customizer) {\n customizer = typeof customizer == 'function' ? customizer : undefined;\n return object == null ? object : baseSet(object, path, value, customizer);\n }\n\n /**\n * Creates an array of own enumerable string keyed-value pairs for `object`\n * which can be consumed by `_.fromPairs`. If `object` is a map or set, its\n * entries are returned.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @alias entries\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the key-value pairs.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.toPairs(new Foo);\n * // => [['a', 1], ['b', 2]] (iteration order is not guaranteed)\n */\n var toPairs = createToPairs(keys);\n\n /**\n * Creates an array of own and inherited enumerable string keyed-value pairs\n * for `object` which can be consumed by `_.fromPairs`. If `object` is a map\n * or set, its entries are returned.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @alias entriesIn\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the key-value pairs.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.toPairsIn(new Foo);\n * // => [['a', 1], ['b', 2], ['c', 3]] (iteration order is not guaranteed)\n */\n var toPairsIn = createToPairs(keysIn);\n\n /**\n * An alternative to `_.reduce`; this method transforms `object` to a new\n * `accumulator` object which is the result of running each of its own\n * enumerable string keyed properties thru `iteratee`, with each invocation\n * potentially mutating the `accumulator` object. If `accumulator` is not\n * provided, a new object with the same `[[Prototype]]` will be used. The\n * iteratee is invoked with four arguments: (accumulator, value, key, object).\n * Iteratee functions may exit iteration early by explicitly returning `false`.\n *\n * @static\n * @memberOf _\n * @since 1.3.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @param {*} [accumulator] The custom accumulator value.\n * @returns {*} Returns the accumulated value.\n * @example\n *\n * _.transform([2, 3, 4], function(result, n) {\n * result.push(n *= n);\n * return n % 2 == 0;\n * }, []);\n * // => [4, 9]\n *\n * _.transform({ 'a': 1, 'b': 2, 'c': 1 }, function(result, value, key) {\n * (result[value] || (result[value] = [])).push(key);\n * }, {});\n * // => { '1': ['a', 'c'], '2': ['b'] }\n */\n function transform(object, iteratee, accumulator) {\n var isArr = isArray(object),\n isArrLike = isArr || isBuffer(object) || isTypedArray(object);\n\n iteratee = getIteratee(iteratee, 4);\n if (accumulator == null) {\n var Ctor = object && object.constructor;\n if (isArrLike) {\n accumulator = isArr ? new Ctor : [];\n }\n else if (isObject(object)) {\n accumulator = isFunction(Ctor) ? baseCreate(getPrototype(object)) : {};\n }\n else {\n accumulator = {};\n }\n }\n (isArrLike ? arrayEach : baseForOwn)(object, function(value, index, object) {\n return iteratee(accumulator, value, index, object);\n });\n return accumulator;\n }\n\n /**\n * Removes the property at `path` of `object`.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to unset.\n * @returns {boolean} Returns `true` if the property is deleted, else `false`.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 7 } }] };\n * _.unset(object, 'a[0].b.c');\n * // => true\n *\n * console.log(object);\n * // => { 'a': [{ 'b': {} }] };\n *\n * _.unset(object, ['a', '0', 'b', 'c']);\n * // => true\n *\n * console.log(object);\n * // => { 'a': [{ 'b': {} }] };\n */\n function unset(object, path) {\n return object == null ? true : baseUnset(object, path);\n }\n\n /**\n * This method is like `_.set` except that accepts `updater` to produce the\n * value to set. Use `_.updateWith` to customize `path` creation. The `updater`\n * is invoked with one argument: (value).\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.6.0\n * @category Object\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to set.\n * @param {Function} updater The function to produce the updated value.\n * @returns {Object} Returns `object`.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }] };\n *\n * _.update(object, 'a[0].b.c', function(n) { return n * n; });\n * console.log(object.a[0].b.c);\n * // => 9\n *\n * _.update(object, 'x[0].y.z', function(n) { return n ? n + 1 : 0; });\n * console.log(object.x[0].y.z);\n * // => 0\n */\n function update(object, path, updater) {\n return object == null ? object : baseUpdate(object, path, castFunction(updater));\n }\n\n /**\n * This method is like `_.update` except that it accepts `customizer` which is\n * invoked to produce the objects of `path`. If `customizer` returns `undefined`\n * path creation is handled by the method instead. The `customizer` is invoked\n * with three arguments: (nsValue, key, nsObject).\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.6.0\n * @category Object\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to set.\n * @param {Function} updater The function to produce the updated value.\n * @param {Function} [customizer] The function to customize assigned values.\n * @returns {Object} Returns `object`.\n * @example\n *\n * var object = {};\n *\n * _.updateWith(object, '[0][1]', _.constant('a'), Object);\n * // => { '0': { '1': 'a' } }\n */\n function updateWith(object, path, updater, customizer) {\n customizer = typeof customizer == 'function' ? customizer : undefined;\n return object == null ? object : baseUpdate(object, path, castFunction(updater), customizer);\n }\n\n /**\n * Creates an array of the own enumerable string keyed property values of `object`.\n *\n * **Note:** Non-object values are coerced to objects.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property values.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.values(new Foo);\n * // => [1, 2] (iteration order is not guaranteed)\n *\n * _.values('hi');\n * // => ['h', 'i']\n */\n function values(object) {\n return object == null ? [] : baseValues(object, keys(object));\n }\n\n /**\n * Creates an array of the own and inherited enumerable string keyed property\n * values of `object`.\n *\n * **Note:** Non-object values are coerced to objects.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property values.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.valuesIn(new Foo);\n * // => [1, 2, 3] (iteration order is not guaranteed)\n */\n function valuesIn(object) {\n return object == null ? [] : baseValues(object, keysIn(object));\n }\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Clamps `number` within the inclusive `lower` and `upper` bounds.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Number\n * @param {number} number The number to clamp.\n * @param {number} [lower] The lower bound.\n * @param {number} upper The upper bound.\n * @returns {number} Returns the clamped number.\n * @example\n *\n * _.clamp(-10, -5, 5);\n * // => -5\n *\n * _.clamp(10, -5, 5);\n * // => 5\n */\n function clamp(number, lower, upper) {\n if (upper === undefined) {\n upper = lower;\n lower = undefined;\n }\n if (upper !== undefined) {\n upper = toNumber(upper);\n upper = upper === upper ? upper : 0;\n }\n if (lower !== undefined) {\n lower = toNumber(lower);\n lower = lower === lower ? lower : 0;\n }\n return baseClamp(toNumber(number), lower, upper);\n }\n\n /**\n * Checks if `n` is between `start` and up to, but not including, `end`. If\n * `end` is not specified, it's set to `start` with `start` then set to `0`.\n * If `start` is greater than `end` the params are swapped to support\n * negative ranges.\n *\n * @static\n * @memberOf _\n * @since 3.3.0\n * @category Number\n * @param {number} number The number to check.\n * @param {number} [start=0] The start of the range.\n * @param {number} end The end of the range.\n * @returns {boolean} Returns `true` if `number` is in the range, else `false`.\n * @see _.range, _.rangeRight\n * @example\n *\n * _.inRange(3, 2, 4);\n * // => true\n *\n * _.inRange(4, 8);\n * // => true\n *\n * _.inRange(4, 2);\n * // => false\n *\n * _.inRange(2, 2);\n * // => false\n *\n * _.inRange(1.2, 2);\n * // => true\n *\n * _.inRange(5.2, 4);\n * // => false\n *\n * _.inRange(-3, -2, -6);\n * // => true\n */\n function inRange(number, start, end) {\n start = toFinite(start);\n if (end === undefined) {\n end = start;\n start = 0;\n } else {\n end = toFinite(end);\n }\n number = toNumber(number);\n return baseInRange(number, start, end);\n }\n\n /**\n * Produces a random number between the inclusive `lower` and `upper` bounds.\n * If only one argument is provided a number between `0` and the given number\n * is returned. If `floating` is `true`, or either `lower` or `upper` are\n * floats, a floating-point number is returned instead of an integer.\n *\n * **Note:** JavaScript follows the IEEE-754 standard for resolving\n * floating-point values which can produce unexpected results.\n *\n * @static\n * @memberOf _\n * @since 0.7.0\n * @category Number\n * @param {number} [lower=0] The lower bound.\n * @param {number} [upper=1] The upper bound.\n * @param {boolean} [floating] Specify returning a floating-point number.\n * @returns {number} Returns the random number.\n * @example\n *\n * _.random(0, 5);\n * // => an integer between 0 and 5\n *\n * _.random(5);\n * // => also an integer between 0 and 5\n *\n * _.random(5, true);\n * // => a floating-point number between 0 and 5\n *\n * _.random(1.2, 5.2);\n * // => a floating-point number between 1.2 and 5.2\n */\n function random(lower, upper, floating) {\n if (floating && typeof floating != 'boolean' && isIterateeCall(lower, upper, floating)) {\n upper = floating = undefined;\n }\n if (floating === undefined) {\n if (typeof upper == 'boolean') {\n floating = upper;\n upper = undefined;\n }\n else if (typeof lower == 'boolean') {\n floating = lower;\n lower = undefined;\n }\n }\n if (lower === undefined && upper === undefined) {\n lower = 0;\n upper = 1;\n }\n else {\n lower = toFinite(lower);\n if (upper === undefined) {\n upper = lower;\n lower = 0;\n } else {\n upper = toFinite(upper);\n }\n }\n if (lower > upper) {\n var temp = lower;\n lower = upper;\n upper = temp;\n }\n if (floating || lower % 1 || upper % 1) {\n var rand = nativeRandom();\n return nativeMin(lower + (rand * (upper - lower + freeParseFloat('1e-' + ((rand + '').length - 1)))), upper);\n }\n return baseRandom(lower, upper);\n }\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Converts `string` to [camel case](https://en.wikipedia.org/wiki/CamelCase).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the camel cased string.\n * @example\n *\n * _.camelCase('Foo Bar');\n * // => 'fooBar'\n *\n * _.camelCase('--foo-bar--');\n * // => 'fooBar'\n *\n * _.camelCase('__FOO_BAR__');\n * // => 'fooBar'\n */\n var camelCase = createCompounder(function(result, word, index) {\n word = word.toLowerCase();\n return result + (index ? capitalize(word) : word);\n });\n\n /**\n * Converts the first character of `string` to upper case and the remaining\n * to lower case.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to capitalize.\n * @returns {string} Returns the capitalized string.\n * @example\n *\n * _.capitalize('FRED');\n * // => 'Fred'\n */\n function capitalize(string) {\n return upperFirst(toString(string).toLowerCase());\n }\n\n /**\n * Deburrs `string` by converting\n * [Latin-1 Supplement](https://en.wikipedia.org/wiki/Latin-1_Supplement_(Unicode_block)#Character_table)\n * and [Latin Extended-A](https://en.wikipedia.org/wiki/Latin_Extended-A)\n * letters to basic Latin letters and removing\n * [combining diacritical marks](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to deburr.\n * @returns {string} Returns the deburred string.\n * @example\n *\n * _.deburr('déjà vu');\n * // => 'deja vu'\n */\n function deburr(string) {\n string = toString(string);\n return string && string.replace(reLatin, deburrLetter).replace(reComboMark, '');\n }\n\n /**\n * Checks if `string` ends with the given target string.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to inspect.\n * @param {string} [target] The string to search for.\n * @param {number} [position=string.length] The position to search up to.\n * @returns {boolean} Returns `true` if `string` ends with `target`,\n * else `false`.\n * @example\n *\n * _.endsWith('abc', 'c');\n * // => true\n *\n * _.endsWith('abc', 'b');\n * // => false\n *\n * _.endsWith('abc', 'b', 2);\n * // => true\n */\n function endsWith(string, target, position) {\n string = toString(string);\n target = baseToString(target);\n\n var length = string.length;\n position = position === undefined\n ? length\n : baseClamp(toInteger(position), 0, length);\n\n var end = position;\n position -= target.length;\n return position >= 0 && string.slice(position, end) == target;\n }\n\n /**\n * Converts the characters \"&\", \"<\", \">\", '\"', and \"'\" in `string` to their\n * corresponding HTML entities.\n *\n * **Note:** No other characters are escaped. To escape additional\n * characters use a third-party library like [_he_](https://mths.be/he).\n *\n * Though the \">\" character is escaped for symmetry, characters like\n * \">\" and \"/\" don't need escaping in HTML and have no special meaning\n * unless they're part of a tag or unquoted attribute value. See\n * [Mathias Bynens's article](https://mathiasbynens.be/notes/ambiguous-ampersands)\n * (under \"semi-related fun fact\") for more details.\n *\n * When working with HTML you should always\n * [quote attribute values](http://wonko.com/post/html-escaping) to reduce\n * XSS vectors.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category String\n * @param {string} [string=''] The string to escape.\n * @returns {string} Returns the escaped string.\n * @example\n *\n * _.escape('fred, barney, & pebbles');\n * // => 'fred, barney, & pebbles'\n */\n function escape(string) {\n string = toString(string);\n return (string && reHasUnescapedHtml.test(string))\n ? string.replace(reUnescapedHtml, escapeHtmlChar)\n : string;\n }\n\n /**\n * Escapes the `RegExp` special characters \"^\", \"$\", \"\\\", \".\", \"*\", \"+\",\n * \"?\", \"(\", \")\", \"[\", \"]\", \"{\", \"}\", and \"|\" in `string`.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to escape.\n * @returns {string} Returns the escaped string.\n * @example\n *\n * _.escapeRegExp('[lodash](https://lodash.com/)');\n * // => '\\[lodash\\]\\(https://lodash\\.com/\\)'\n */\n function escapeRegExp(string) {\n string = toString(string);\n return (string && reHasRegExpChar.test(string))\n ? string.replace(reRegExpChar, '\\\\$&')\n : string;\n }\n\n /**\n * Converts `string` to\n * [kebab case](https://en.wikipedia.org/wiki/Letter_case#Special_case_styles).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the kebab cased string.\n * @example\n *\n * _.kebabCase('Foo Bar');\n * // => 'foo-bar'\n *\n * _.kebabCase('fooBar');\n * // => 'foo-bar'\n *\n * _.kebabCase('__FOO_BAR__');\n * // => 'foo-bar'\n */\n var kebabCase = createCompounder(function(result, word, index) {\n return result + (index ? '-' : '') + word.toLowerCase();\n });\n\n /**\n * Converts `string`, as space separated words, to lower case.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the lower cased string.\n * @example\n *\n * _.lowerCase('--Foo-Bar--');\n * // => 'foo bar'\n *\n * _.lowerCase('fooBar');\n * // => 'foo bar'\n *\n * _.lowerCase('__FOO_BAR__');\n * // => 'foo bar'\n */\n var lowerCase = createCompounder(function(result, word, index) {\n return result + (index ? ' ' : '') + word.toLowerCase();\n });\n\n /**\n * Converts the first character of `string` to lower case.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the converted string.\n * @example\n *\n * _.lowerFirst('Fred');\n * // => 'fred'\n *\n * _.lowerFirst('FRED');\n * // => 'fRED'\n */\n var lowerFirst = createCaseFirst('toLowerCase');\n\n /**\n * Pads `string` on the left and right sides if it's shorter than `length`.\n * Padding characters are truncated if they can't be evenly divided by `length`.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to pad.\n * @param {number} [length=0] The padding length.\n * @param {string} [chars=' '] The string used as padding.\n * @returns {string} Returns the padded string.\n * @example\n *\n * _.pad('abc', 8);\n * // => ' abc '\n *\n * _.pad('abc', 8, '_-');\n * // => '_-abc_-_'\n *\n * _.pad('abc', 3);\n * // => 'abc'\n */\n function pad(string, length, chars) {\n string = toString(string);\n length = toInteger(length);\n\n var strLength = length ? stringSize(string) : 0;\n if (!length || strLength >= length) {\n return string;\n }\n var mid = (length - strLength) / 2;\n return (\n createPadding(nativeFloor(mid), chars) +\n string +\n createPadding(nativeCeil(mid), chars)\n );\n }\n\n /**\n * Pads `string` on the right side if it's shorter than `length`. Padding\n * characters are truncated if they exceed `length`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to pad.\n * @param {number} [length=0] The padding length.\n * @param {string} [chars=' '] The string used as padding.\n * @returns {string} Returns the padded string.\n * @example\n *\n * _.padEnd('abc', 6);\n * // => 'abc '\n *\n * _.padEnd('abc', 6, '_-');\n * // => 'abc_-_'\n *\n * _.padEnd('abc', 3);\n * // => 'abc'\n */\n function padEnd(string, length, chars) {\n string = toString(string);\n length = toInteger(length);\n\n var strLength = length ? stringSize(string) : 0;\n return (length && strLength < length)\n ? (string + createPadding(length - strLength, chars))\n : string;\n }\n\n /**\n * Pads `string` on the left side if it's shorter than `length`. Padding\n * characters are truncated if they exceed `length`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to pad.\n * @param {number} [length=0] The padding length.\n * @param {string} [chars=' '] The string used as padding.\n * @returns {string} Returns the padded string.\n * @example\n *\n * _.padStart('abc', 6);\n * // => ' abc'\n *\n * _.padStart('abc', 6, '_-');\n * // => '_-_abc'\n *\n * _.padStart('abc', 3);\n * // => 'abc'\n */\n function padStart(string, length, chars) {\n string = toString(string);\n length = toInteger(length);\n\n var strLength = length ? stringSize(string) : 0;\n return (length && strLength < length)\n ? (createPadding(length - strLength, chars) + string)\n : string;\n }\n\n /**\n * Converts `string` to an integer of the specified radix. If `radix` is\n * `undefined` or `0`, a `radix` of `10` is used unless `value` is a\n * hexadecimal, in which case a `radix` of `16` is used.\n *\n * **Note:** This method aligns with the\n * [ES5 implementation](https://es5.github.io/#x15.1.2.2) of `parseInt`.\n *\n * @static\n * @memberOf _\n * @since 1.1.0\n * @category String\n * @param {string} string The string to convert.\n * @param {number} [radix=10] The radix to interpret `value` by.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {number} Returns the converted integer.\n * @example\n *\n * _.parseInt('08');\n * // => 8\n *\n * _.map(['6', '08', '10'], _.parseInt);\n * // => [6, 8, 10]\n */\n function parseInt(string, radix, guard) {\n if (guard || radix == null) {\n radix = 0;\n } else if (radix) {\n radix = +radix;\n }\n return nativeParseInt(toString(string).replace(reTrimStart, ''), radix || 0);\n }\n\n /**\n * Repeats the given string `n` times.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to repeat.\n * @param {number} [n=1] The number of times to repeat the string.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {string} Returns the repeated string.\n * @example\n *\n * _.repeat('*', 3);\n * // => '***'\n *\n * _.repeat('abc', 2);\n * // => 'abcabc'\n *\n * _.repeat('abc', 0);\n * // => ''\n */\n function repeat(string, n, guard) {\n if ((guard ? isIterateeCall(string, n, guard) : n === undefined)) {\n n = 1;\n } else {\n n = toInteger(n);\n }\n return baseRepeat(toString(string), n);\n }\n\n /**\n * Replaces matches for `pattern` in `string` with `replacement`.\n *\n * **Note:** This method is based on\n * [`String#replace`](https://mdn.io/String/replace).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to modify.\n * @param {RegExp|string} pattern The pattern to replace.\n * @param {Function|string} replacement The match replacement.\n * @returns {string} Returns the modified string.\n * @example\n *\n * _.replace('Hi Fred', 'Fred', 'Barney');\n * // => 'Hi Barney'\n */\n function replace() {\n var args = arguments,\n string = toString(args[0]);\n\n return args.length < 3 ? string : string.replace(args[1], args[2]);\n }\n\n /**\n * Converts `string` to\n * [snake case](https://en.wikipedia.org/wiki/Snake_case).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the snake cased string.\n * @example\n *\n * _.snakeCase('Foo Bar');\n * // => 'foo_bar'\n *\n * _.snakeCase('fooBar');\n * // => 'foo_bar'\n *\n * _.snakeCase('--FOO-BAR--');\n * // => 'foo_bar'\n */\n var snakeCase = createCompounder(function(result, word, index) {\n return result + (index ? '_' : '') + word.toLowerCase();\n });\n\n /**\n * Splits `string` by `separator`.\n *\n * **Note:** This method is based on\n * [`String#split`](https://mdn.io/String/split).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to split.\n * @param {RegExp|string} separator The separator pattern to split by.\n * @param {number} [limit] The length to truncate results to.\n * @returns {Array} Returns the string segments.\n * @example\n *\n * _.split('a-b-c', '-', 2);\n * // => ['a', 'b']\n */\n function split(string, separator, limit) {\n if (limit && typeof limit != 'number' && isIterateeCall(string, separator, limit)) {\n separator = limit = undefined;\n }\n limit = limit === undefined ? MAX_ARRAY_LENGTH : limit >>> 0;\n if (!limit) {\n return [];\n }\n string = toString(string);\n if (string && (\n typeof separator == 'string' ||\n (separator != null && !isRegExp(separator))\n )) {\n separator = baseToString(separator);\n if (!separator && hasUnicode(string)) {\n return castSlice(stringToArray(string), 0, limit);\n }\n }\n return string.split(separator, limit);\n }\n\n /**\n * Converts `string` to\n * [start case](https://en.wikipedia.org/wiki/Letter_case#Stylistic_or_specialised_usage).\n *\n * @static\n * @memberOf _\n * @since 3.1.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the start cased string.\n * @example\n *\n * _.startCase('--foo-bar--');\n * // => 'Foo Bar'\n *\n * _.startCase('fooBar');\n * // => 'Foo Bar'\n *\n * _.startCase('__FOO_BAR__');\n * // => 'FOO BAR'\n */\n var startCase = createCompounder(function(result, word, index) {\n return result + (index ? ' ' : '') + upperFirst(word);\n });\n\n /**\n * Checks if `string` starts with the given target string.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to inspect.\n * @param {string} [target] The string to search for.\n * @param {number} [position=0] The position to search from.\n * @returns {boolean} Returns `true` if `string` starts with `target`,\n * else `false`.\n * @example\n *\n * _.startsWith('abc', 'a');\n * // => true\n *\n * _.startsWith('abc', 'b');\n * // => false\n *\n * _.startsWith('abc', 'b', 1);\n * // => true\n */\n function startsWith(string, target, position) {\n string = toString(string);\n position = position == null\n ? 0\n : baseClamp(toInteger(position), 0, string.length);\n\n target = baseToString(target);\n return string.slice(position, position + target.length) == target;\n }\n\n /**\n * Creates a compiled template function that can interpolate data properties\n * in \"interpolate\" delimiters, HTML-escape interpolated data properties in\n * \"escape\" delimiters, and execute JavaScript in \"evaluate\" delimiters. Data\n * properties may be accessed as free variables in the template. If a setting\n * object is given, it takes precedence over `_.templateSettings` values.\n *\n * **Note:** In the development build `_.template` utilizes\n * [sourceURLs](http://www.html5rocks.com/en/tutorials/developertools/sourcemaps/#toc-sourceurl)\n * for easier debugging.\n *\n * For more information on precompiling templates see\n * [lodash's custom builds documentation](https://lodash.com/custom-builds).\n *\n * For more information on Chrome extension sandboxes see\n * [Chrome's extensions documentation](https://developer.chrome.com/extensions/sandboxingEval).\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category String\n * @param {string} [string=''] The template string.\n * @param {Object} [options={}] The options object.\n * @param {RegExp} [options.escape=_.templateSettings.escape]\n * The HTML \"escape\" delimiter.\n * @param {RegExp} [options.evaluate=_.templateSettings.evaluate]\n * The \"evaluate\" delimiter.\n * @param {Object} [options.imports=_.templateSettings.imports]\n * An object to import into the template as free variables.\n * @param {RegExp} [options.interpolate=_.templateSettings.interpolate]\n * The \"interpolate\" delimiter.\n * @param {string} [options.sourceURL='lodash.templateSources[n]']\n * The sourceURL of the compiled template.\n * @param {string} [options.variable='obj']\n * The data object variable name.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Function} Returns the compiled template function.\n * @example\n *\n * // Use the \"interpolate\" delimiter to create a compiled template.\n * var compiled = _.template('hello <%= user %>!');\n * compiled({ 'user': 'fred' });\n * // => 'hello fred!'\n *\n * // Use the HTML \"escape\" delimiter to escape data property values.\n * var compiled = _.template('<b><%- value %></b>');\n * compiled({ 'value': '<script>' });\n * // => '<b><script></b>'\n *\n * // Use the \"evaluate\" delimiter to execute JavaScript and generate HTML.\n * var compiled = _.template('<% _.forEach(users, function(user) { %><li><%- user %></li><% }); %>');\n * compiled({ 'users': ['fred', 'barney'] });\n * // => '<li>fred</li><li>barney</li>'\n *\n * // Use the internal `print` function in \"evaluate\" delimiters.\n * var compiled = _.template('<% print(\"hello \" + user); %>!');\n * compiled({ 'user': 'barney' });\n * // => 'hello barney!'\n *\n * // Use the ES template literal delimiter as an \"interpolate\" delimiter.\n * // Disable support by replacing the \"interpolate\" delimiter.\n * var compiled = _.template('hello ${ user }!');\n * compiled({ 'user': 'pebbles' });\n * // => 'hello pebbles!'\n *\n * // Use backslashes to treat delimiters as plain text.\n * var compiled = _.template('<%= \"\\\\<%- value %\\\\>\" %>');\n * compiled({ 'value': 'ignored' });\n * // => '<%- value %>'\n *\n * // Use the `imports` option to import `jQuery` as `jq`.\n * var text = '<% jq.each(users, function(user) { %><li><%- user %></li><% }); %>';\n * var compiled = _.template(text, { 'imports': { 'jq': jQuery } });\n * compiled({ 'users': ['fred', 'barney'] });\n * // => '<li>fred</li><li>barney</li>'\n *\n * // Use the `sourceURL` option to specify a custom sourceURL for the template.\n * var compiled = _.template('hello <%= user %>!', { 'sourceURL': '/basic/greeting.jst' });\n * compiled(data);\n * // => Find the source of \"greeting.jst\" under the Sources tab or Resources panel of the web inspector.\n *\n * // Use the `variable` option to ensure a with-statement isn't used in the compiled template.\n * var compiled = _.template('hi <%= data.user %>!', { 'variable': 'data' });\n * compiled.source;\n * // => function(data) {\n * // var __t, __p = '';\n * // __p += 'hi ' + ((__t = ( data.user )) == null ? '' : __t) + '!';\n * // return __p;\n * // }\n *\n * // Use custom template delimiters.\n * _.templateSettings.interpolate = /{{([\\s\\S]+?)}}/g;\n * var compiled = _.template('hello {{ user }}!');\n * compiled({ 'user': 'mustache' });\n * // => 'hello mustache!'\n *\n * // Use the `source` property to inline compiled templates for meaningful\n * // line numbers in error messages and stack traces.\n * fs.writeFileSync(path.join(process.cwd(), 'jst.js'), '\\\n * var JST = {\\\n * \"main\": ' + _.template(mainText).source + '\\\n * };\\\n * ');\n */\n function template(string, options, guard) {\n // Based on John Resig's `tmpl` implementation\n // (http://ejohn.org/blog/javascript-micro-templating/)\n // and Laura Doktorova's doT.js (https://github.com/olado/doT).\n var settings = lodash.templateSettings;\n\n if (guard && isIterateeCall(string, options, guard)) {\n options = undefined;\n }\n string = toString(string);\n options = assignInWith({}, options, settings, customDefaultsAssignIn);\n\n var imports = assignInWith({}, options.imports, settings.imports, customDefaultsAssignIn),\n importsKeys = keys(imports),\n importsValues = baseValues(imports, importsKeys);\n\n var isEscaping,\n isEvaluating,\n index = 0,\n interpolate = options.interpolate || reNoMatch,\n source = \"__p += '\";\n\n // Compile the regexp to match each delimiter.\n var reDelimiters = RegExp(\n (options.escape || reNoMatch).source + '|' +\n interpolate.source + '|' +\n (interpolate === reInterpolate ? reEsTemplate : reNoMatch).source + '|' +\n (options.evaluate || reNoMatch).source + '|$'\n , 'g');\n\n // Use a sourceURL for easier debugging.\n // The sourceURL gets injected into the source that's eval-ed, so be careful\n // to normalize all kinds of whitespace, so e.g. newlines (and unicode versions of it) can't sneak in\n // and escape the comment, thus injecting code that gets evaled.\n var sourceURL = '//# sourceURL=' +\n (hasOwnProperty.call(options, 'sourceURL')\n ? (options.sourceURL + '').replace(/\\s/g, ' ')\n : ('lodash.templateSources[' + (++templateCounter) + ']')\n ) + '\\n';\n\n string.replace(reDelimiters, function(match, escapeValue, interpolateValue, esTemplateValue, evaluateValue, offset) {\n interpolateValue || (interpolateValue = esTemplateValue);\n\n // Escape characters that can't be included in string literals.\n source += string.slice(index, offset).replace(reUnescapedString, escapeStringChar);\n\n // Replace delimiters with snippets.\n if (escapeValue) {\n isEscaping = true;\n source += \"' +\\n__e(\" + escapeValue + \") +\\n'\";\n }\n if (evaluateValue) {\n isEvaluating = true;\n source += \"';\\n\" + evaluateValue + \";\\n__p += '\";\n }\n if (interpolateValue) {\n source += \"' +\\n((__t = (\" + interpolateValue + \")) == null ? '' : __t) +\\n'\";\n }\n index = offset + match.length;\n\n // The JS engine embedded in Adobe products needs `match` returned in\n // order to produce the correct `offset` value.\n return match;\n });\n\n source += \"';\\n\";\n\n // If `variable` is not specified wrap a with-statement around the generated\n // code to add the data object to the top of the scope chain.\n var variable = hasOwnProperty.call(options, 'variable') && options.variable;\n if (!variable) {\n source = 'with (obj) {\\n' + source + '\\n}\\n';\n }\n // Throw an error if a forbidden character was found in `variable`, to prevent\n // potential command injection attacks.\n else if (reForbiddenIdentifierChars.test(variable)) {\n throw new Error(INVALID_TEMPL_VAR_ERROR_TEXT);\n }\n\n // Cleanup code by stripping empty strings.\n source = (isEvaluating ? source.replace(reEmptyStringLeading, '') : source)\n .replace(reEmptyStringMiddle, '$1')\n .replace(reEmptyStringTrailing, '$1;');\n\n // Frame code as the function body.\n source = 'function(' + (variable || 'obj') + ') {\\n' +\n (variable\n ? ''\n : 'obj || (obj = {});\\n'\n ) +\n \"var __t, __p = ''\" +\n (isEscaping\n ? ', __e = _.escape'\n : ''\n ) +\n (isEvaluating\n ? ', __j = Array.prototype.join;\\n' +\n \"function print() { __p += __j.call(arguments, '') }\\n\"\n : ';\\n'\n ) +\n source +\n 'return __p\\n}';\n\n var result = attempt(function() {\n return Function(importsKeys, sourceURL + 'return ' + source)\n .apply(undefined, importsValues);\n });\n\n // Provide the compiled function's source by its `toString` method or\n // the `source` property as a convenience for inlining compiled templates.\n result.source = source;\n if (isError(result)) {\n throw result;\n }\n return result;\n }\n\n /**\n * Converts `string`, as a whole, to lower case just like\n * [String#toLowerCase](https://mdn.io/toLowerCase).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the lower cased string.\n * @example\n *\n * _.toLower('--Foo-Bar--');\n * // => '--foo-bar--'\n *\n * _.toLower('fooBar');\n * // => 'foobar'\n *\n * _.toLower('__FOO_BAR__');\n * // => '__foo_bar__'\n */\n function toLower(value) {\n return toString(value).toLowerCase();\n }\n\n /**\n * Converts `string`, as a whole, to upper case just like\n * [String#toUpperCase](https://mdn.io/toUpperCase).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the upper cased string.\n * @example\n *\n * _.toUpper('--foo-bar--');\n * // => '--FOO-BAR--'\n *\n * _.toUpper('fooBar');\n * // => 'FOOBAR'\n *\n * _.toUpper('__foo_bar__');\n * // => '__FOO_BAR__'\n */\n function toUpper(value) {\n return toString(value).toUpperCase();\n }\n\n /**\n * Removes leading and trailing whitespace or specified characters from `string`.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to trim.\n * @param {string} [chars=whitespace] The characters to trim.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {string} Returns the trimmed string.\n * @example\n *\n * _.trim(' abc ');\n * // => 'abc'\n *\n * _.trim('-_-abc-_-', '_-');\n * // => 'abc'\n *\n * _.map([' foo ', ' bar '], _.trim);\n * // => ['foo', 'bar']\n */\n function trim(string, chars, guard) {\n string = toString(string);\n if (string && (guard || chars === undefined)) {\n return baseTrim(string);\n }\n if (!string || !(chars = baseToString(chars))) {\n return string;\n }\n var strSymbols = stringToArray(string),\n chrSymbols = stringToArray(chars),\n start = charsStartIndex(strSymbols, chrSymbols),\n end = charsEndIndex(strSymbols, chrSymbols) + 1;\n\n return castSlice(strSymbols, start, end).join('');\n }\n\n /**\n * Removes trailing whitespace or specified characters from `string`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to trim.\n * @param {string} [chars=whitespace] The characters to trim.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {string} Returns the trimmed string.\n * @example\n *\n * _.trimEnd(' abc ');\n * // => ' abc'\n *\n * _.trimEnd('-_-abc-_-', '_-');\n * // => '-_-abc'\n */\n function trimEnd(string, chars, guard) {\n string = toString(string);\n if (string && (guard || chars === undefined)) {\n return string.slice(0, trimmedEndIndex(string) + 1);\n }\n if (!string || !(chars = baseToString(chars))) {\n return string;\n }\n var strSymbols = stringToArray(string),\n end = charsEndIndex(strSymbols, stringToArray(chars)) + 1;\n\n return castSlice(strSymbols, 0, end).join('');\n }\n\n /**\n * Removes leading whitespace or specified characters from `string`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to trim.\n * @param {string} [chars=whitespace] The characters to trim.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {string} Returns the trimmed string.\n * @example\n *\n * _.trimStart(' abc ');\n * // => 'abc '\n *\n * _.trimStart('-_-abc-_-', '_-');\n * // => 'abc-_-'\n */\n function trimStart(string, chars, guard) {\n string = toString(string);\n if (string && (guard || chars === undefined)) {\n return string.replace(reTrimStart, '');\n }\n if (!string || !(chars = baseToString(chars))) {\n return string;\n }\n var strSymbols = stringToArray(string),\n start = charsStartIndex(strSymbols, stringToArray(chars));\n\n return castSlice(strSymbols, start).join('');\n }\n\n /**\n * Truncates `string` if it's longer than the given maximum string length.\n * The last characters of the truncated string are replaced with the omission\n * string which defaults to \"...\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to truncate.\n * @param {Object} [options={}] The options object.\n * @param {number} [options.length=30] The maximum string length.\n * @param {string} [options.omission='...'] The string to indicate text is omitted.\n * @param {RegExp|string} [options.separator] The separator pattern to truncate to.\n * @returns {string} Returns the truncated string.\n * @example\n *\n * _.truncate('hi-diddly-ho there, neighborino');\n * // => 'hi-diddly-ho there, neighbo...'\n *\n * _.truncate('hi-diddly-ho there, neighborino', {\n * 'length': 24,\n * 'separator': ' '\n * });\n * // => 'hi-diddly-ho there,...'\n *\n * _.truncate('hi-diddly-ho there, neighborino', {\n * 'length': 24,\n * 'separator': /,? +/\n * });\n * // => 'hi-diddly-ho there...'\n *\n * _.truncate('hi-diddly-ho there, neighborino', {\n * 'omission': ' [...]'\n * });\n * // => 'hi-diddly-ho there, neig [...]'\n */\n function truncate(string, options) {\n var length = DEFAULT_TRUNC_LENGTH,\n omission = DEFAULT_TRUNC_OMISSION;\n\n if (isObject(options)) {\n var separator = 'separator' in options ? options.separator : separator;\n length = 'length' in options ? toInteger(options.length) : length;\n omission = 'omission' in options ? baseToString(options.omission) : omission;\n }\n string = toString(string);\n\n var strLength = string.length;\n if (hasUnicode(string)) {\n var strSymbols = stringToArray(string);\n strLength = strSymbols.length;\n }\n if (length >= strLength) {\n return string;\n }\n var end = length - stringSize(omission);\n if (end < 1) {\n return omission;\n }\n var result = strSymbols\n ? castSlice(strSymbols, 0, end).join('')\n : string.slice(0, end);\n\n if (separator === undefined) {\n return result + omission;\n }\n if (strSymbols) {\n end += (result.length - end);\n }\n if (isRegExp(separator)) {\n if (string.slice(end).search(separator)) {\n var match,\n substring = result;\n\n if (!separator.global) {\n separator = RegExp(separator.source, toString(reFlags.exec(separator)) + 'g');\n }\n separator.lastIndex = 0;\n while ((match = separator.exec(substring))) {\n var newEnd = match.index;\n }\n result = result.slice(0, newEnd === undefined ? end : newEnd);\n }\n } else if (string.indexOf(baseToString(separator), end) != end) {\n var index = result.lastIndexOf(separator);\n if (index > -1) {\n result = result.slice(0, index);\n }\n }\n return result + omission;\n }\n\n /**\n * The inverse of `_.escape`; this method converts the HTML entities\n * `&`, `<`, `>`, `"`, and `'` in `string` to\n * their corresponding characters.\n *\n * **Note:** No other HTML entities are unescaped. To unescape additional\n * HTML entities use a third-party library like [_he_](https://mths.be/he).\n *\n * @static\n * @memberOf _\n * @since 0.6.0\n * @category String\n * @param {string} [string=''] The string to unescape.\n * @returns {string} Returns the unescaped string.\n * @example\n *\n * _.unescape('fred, barney, & pebbles');\n * // => 'fred, barney, & pebbles'\n */\n function unescape(string) {\n string = toString(string);\n return (string && reHasEscapedHtml.test(string))\n ? string.replace(reEscapedHtml, unescapeHtmlChar)\n : string;\n }\n\n /**\n * Converts `string`, as space separated words, to upper case.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the upper cased string.\n * @example\n *\n * _.upperCase('--foo-bar');\n * // => 'FOO BAR'\n *\n * _.upperCase('fooBar');\n * // => 'FOO BAR'\n *\n * _.upperCase('__foo_bar__');\n * // => 'FOO BAR'\n */\n var upperCase = createCompounder(function(result, word, index) {\n return result + (index ? ' ' : '') + word.toUpperCase();\n });\n\n /**\n * Converts the first character of `string` to upper case.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the converted string.\n * @example\n *\n * _.upperFirst('fred');\n * // => 'Fred'\n *\n * _.upperFirst('FRED');\n * // => 'FRED'\n */\n var upperFirst = createCaseFirst('toUpperCase');\n\n /**\n * Splits `string` into an array of its words.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to inspect.\n * @param {RegExp|string} [pattern] The pattern to match words.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Array} Returns the words of `string`.\n * @example\n *\n * _.words('fred, barney, & pebbles');\n * // => ['fred', 'barney', 'pebbles']\n *\n * _.words('fred, barney, & pebbles', /[^, ]+/g);\n * // => ['fred', 'barney', '&', 'pebbles']\n */\n function words(string, pattern, guard) {\n string = toString(string);\n pattern = guard ? undefined : pattern;\n\n if (pattern === undefined) {\n return hasUnicodeWord(string) ? unicodeWords(string) : asciiWords(string);\n }\n return string.match(pattern) || [];\n }\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Attempts to invoke `func`, returning either the result or the caught error\n * object. Any additional arguments are provided to `func` when it's invoked.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Util\n * @param {Function} func The function to attempt.\n * @param {...*} [args] The arguments to invoke `func` with.\n * @returns {*} Returns the `func` result or error object.\n * @example\n *\n * // Avoid throwing errors for invalid selectors.\n * var elements = _.attempt(function(selector) {\n * return document.querySelectorAll(selector);\n * }, '>_>');\n *\n * if (_.isError(elements)) {\n * elements = [];\n * }\n */\n var attempt = baseRest(function(func, args) {\n try {\n return apply(func, undefined, args);\n } catch (e) {\n return isError(e) ? e : new Error(e);\n }\n });\n\n /**\n * Binds methods of an object to the object itself, overwriting the existing\n * method.\n *\n * **Note:** This method doesn't set the \"length\" property of bound functions.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @param {Object} object The object to bind and assign the bound methods to.\n * @param {...(string|string[])} methodNames The object method names to bind.\n * @returns {Object} Returns `object`.\n * @example\n *\n * var view = {\n * 'label': 'docs',\n * 'click': function() {\n * console.log('clicked ' + this.label);\n * }\n * };\n *\n * _.bindAll(view, ['click']);\n * jQuery(element).on('click', view.click);\n * // => Logs 'clicked docs' when clicked.\n */\n var bindAll = flatRest(function(object, methodNames) {\n arrayEach(methodNames, function(key) {\n key = toKey(key);\n baseAssignValue(object, key, bind(object[key], object));\n });\n return object;\n });\n\n /**\n * Creates a function that iterates over `pairs` and invokes the corresponding\n * function of the first predicate to return truthy. The predicate-function\n * pairs are invoked with the `this` binding and arguments of the created\n * function.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Util\n * @param {Array} pairs The predicate-function pairs.\n * @returns {Function} Returns the new composite function.\n * @example\n *\n * var func = _.cond([\n * [_.matches({ 'a': 1 }), _.constant('matches A')],\n * [_.conforms({ 'b': _.isNumber }), _.constant('matches B')],\n * [_.stubTrue, _.constant('no match')]\n * ]);\n *\n * func({ 'a': 1, 'b': 2 });\n * // => 'matches A'\n *\n * func({ 'a': 0, 'b': 1 });\n * // => 'matches B'\n *\n * func({ 'a': '1', 'b': '2' });\n * // => 'no match'\n */\n function cond(pairs) {\n var length = pairs == null ? 0 : pairs.length,\n toIteratee = getIteratee();\n\n pairs = !length ? [] : arrayMap(pairs, function(pair) {\n if (typeof pair[1] != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n return [toIteratee(pair[0]), pair[1]];\n });\n\n return baseRest(function(args) {\n var index = -1;\n while (++index < length) {\n var pair = pairs[index];\n if (apply(pair[0], this, args)) {\n return apply(pair[1], this, args);\n }\n }\n });\n }\n\n /**\n * Creates a function that invokes the predicate properties of `source` with\n * the corresponding property values of a given object, returning `true` if\n * all predicates return truthy, else `false`.\n *\n * **Note:** The created function is equivalent to `_.conformsTo` with\n * `source` partially applied.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Util\n * @param {Object} source The object of property predicates to conform to.\n * @returns {Function} Returns the new spec function.\n * @example\n *\n * var objects = [\n * { 'a': 2, 'b': 1 },\n * { 'a': 1, 'b': 2 }\n * ];\n *\n * _.filter(objects, _.conforms({ 'b': function(n) { return n > 1; } }));\n * // => [{ 'a': 1, 'b': 2 }]\n */\n function conforms(source) {\n return baseConforms(baseClone(source, CLONE_DEEP_FLAG));\n }\n\n /**\n * Creates a function that returns `value`.\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Util\n * @param {*} value The value to return from the new function.\n * @returns {Function} Returns the new constant function.\n * @example\n *\n * var objects = _.times(2, _.constant({ 'a': 1 }));\n *\n * console.log(objects);\n * // => [{ 'a': 1 }, { 'a': 1 }]\n *\n * console.log(objects[0] === objects[1]);\n * // => true\n */\n function constant(value) {\n return function() {\n return value;\n };\n }\n\n /**\n * Checks `value` to determine whether a default value should be returned in\n * its place. The `defaultValue` is returned if `value` is `NaN`, `null`,\n * or `undefined`.\n *\n * @static\n * @memberOf _\n * @since 4.14.0\n * @category Util\n * @param {*} value The value to check.\n * @param {*} defaultValue The default value.\n * @returns {*} Returns the resolved value.\n * @example\n *\n * _.defaultTo(1, 10);\n * // => 1\n *\n * _.defaultTo(undefined, 10);\n * // => 10\n */\n function defaultTo(value, defaultValue) {\n return (value == null || value !== value) ? defaultValue : value;\n }\n\n /**\n * Creates a function that returns the result of invoking the given functions\n * with the `this` binding of the created function, where each successive\n * invocation is supplied the return value of the previous.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Util\n * @param {...(Function|Function[])} [funcs] The functions to invoke.\n * @returns {Function} Returns the new composite function.\n * @see _.flowRight\n * @example\n *\n * function square(n) {\n * return n * n;\n * }\n *\n * var addSquare = _.flow([_.add, square]);\n * addSquare(1, 2);\n * // => 9\n */\n var flow = createFlow();\n\n /**\n * This method is like `_.flow` except that it creates a function that\n * invokes the given functions from right to left.\n *\n * @static\n * @since 3.0.0\n * @memberOf _\n * @category Util\n * @param {...(Function|Function[])} [funcs] The functions to invoke.\n * @returns {Function} Returns the new composite function.\n * @see _.flow\n * @example\n *\n * function square(n) {\n * return n * n;\n * }\n *\n * var addSquare = _.flowRight([square, _.add]);\n * addSquare(1, 2);\n * // => 9\n */\n var flowRight = createFlow(true);\n\n /**\n * This method returns the first argument it receives.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @param {*} value Any value.\n * @returns {*} Returns `value`.\n * @example\n *\n * var object = { 'a': 1 };\n *\n * console.log(_.identity(object) === object);\n * // => true\n */\n function identity(value) {\n return value;\n }\n\n /**\n * Creates a function that invokes `func` with the arguments of the created\n * function. If `func` is a property name, the created function returns the\n * property value for a given element. If `func` is an array or object, the\n * created function returns `true` for elements that contain the equivalent\n * source properties, otherwise it returns `false`.\n *\n * @static\n * @since 4.0.0\n * @memberOf _\n * @category Util\n * @param {*} [func=_.identity] The value to convert to a callback.\n * @returns {Function} Returns the callback.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36, 'active': true },\n * { 'user': 'fred', 'age': 40, 'active': false }\n * ];\n *\n * // The `_.matches` iteratee shorthand.\n * _.filter(users, _.iteratee({ 'user': 'barney', 'active': true }));\n * // => [{ 'user': 'barney', 'age': 36, 'active': true }]\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.filter(users, _.iteratee(['user', 'fred']));\n * // => [{ 'user': 'fred', 'age': 40 }]\n *\n * // The `_.property` iteratee shorthand.\n * _.map(users, _.iteratee('user'));\n * // => ['barney', 'fred']\n *\n * // Create custom iteratee shorthands.\n * _.iteratee = _.wrap(_.iteratee, function(iteratee, func) {\n * return !_.isRegExp(func) ? iteratee(func) : function(string) {\n * return func.test(string);\n * };\n * });\n *\n * _.filter(['abc', 'def'], /ef/);\n * // => ['def']\n */\n function iteratee(func) {\n return baseIteratee(typeof func == 'function' ? func : baseClone(func, CLONE_DEEP_FLAG));\n }\n\n /**\n * Creates a function that performs a partial deep comparison between a given\n * object and `source`, returning `true` if the given object has equivalent\n * property values, else `false`.\n *\n * **Note:** The created function is equivalent to `_.isMatch` with `source`\n * partially applied.\n *\n * Partial comparisons will match empty array and empty object `source`\n * values against any array or object value, respectively. See `_.isEqual`\n * for a list of supported value comparisons.\n *\n * **Note:** Multiple values can be checked by combining several matchers\n * using `_.overSome`\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Util\n * @param {Object} source The object of property values to match.\n * @returns {Function} Returns the new spec function.\n * @example\n *\n * var objects = [\n * { 'a': 1, 'b': 2, 'c': 3 },\n * { 'a': 4, 'b': 5, 'c': 6 }\n * ];\n *\n * _.filter(objects, _.matches({ 'a': 4, 'c': 6 }));\n * // => [{ 'a': 4, 'b': 5, 'c': 6 }]\n *\n * // Checking for several possible values\n * _.filter(objects, _.overSome([_.matches({ 'a': 1 }), _.matches({ 'a': 4 })]));\n * // => [{ 'a': 1, 'b': 2, 'c': 3 }, { 'a': 4, 'b': 5, 'c': 6 }]\n */\n function matches(source) {\n return baseMatches(baseClone(source, CLONE_DEEP_FLAG));\n }\n\n /**\n * Creates a function that performs a partial deep comparison between the\n * value at `path` of a given object to `srcValue`, returning `true` if the\n * object value is equivalent, else `false`.\n *\n * **Note:** Partial comparisons will match empty array and empty object\n * `srcValue` values against any array or object value, respectively. See\n * `_.isEqual` for a list of supported value comparisons.\n *\n * **Note:** Multiple values can be checked by combining several matchers\n * using `_.overSome`\n *\n * @static\n * @memberOf _\n * @since 3.2.0\n * @category Util\n * @param {Array|string} path The path of the property to get.\n * @param {*} srcValue The value to match.\n * @returns {Function} Returns the new spec function.\n * @example\n *\n * var objects = [\n * { 'a': 1, 'b': 2, 'c': 3 },\n * { 'a': 4, 'b': 5, 'c': 6 }\n * ];\n *\n * _.find(objects, _.matchesProperty('a', 4));\n * // => { 'a': 4, 'b': 5, 'c': 6 }\n *\n * // Checking for several possible values\n * _.filter(objects, _.overSome([_.matchesProperty('a', 1), _.matchesProperty('a', 4)]));\n * // => [{ 'a': 1, 'b': 2, 'c': 3 }, { 'a': 4, 'b': 5, 'c': 6 }]\n */\n function matchesProperty(path, srcValue) {\n return baseMatchesProperty(path, baseClone(srcValue, CLONE_DEEP_FLAG));\n }\n\n /**\n * Creates a function that invokes the method at `path` of a given object.\n * Any additional arguments are provided to the invoked method.\n *\n * @static\n * @memberOf _\n * @since 3.7.0\n * @category Util\n * @param {Array|string} path The path of the method to invoke.\n * @param {...*} [args] The arguments to invoke the method with.\n * @returns {Function} Returns the new invoker function.\n * @example\n *\n * var objects = [\n * { 'a': { 'b': _.constant(2) } },\n * { 'a': { 'b': _.constant(1) } }\n * ];\n *\n * _.map(objects, _.method('a.b'));\n * // => [2, 1]\n *\n * _.map(objects, _.method(['a', 'b']));\n * // => [2, 1]\n */\n var method = baseRest(function(path, args) {\n return function(object) {\n return baseInvoke(object, path, args);\n };\n });\n\n /**\n * The opposite of `_.method`; this method creates a function that invokes\n * the method at a given path of `object`. Any additional arguments are\n * provided to the invoked method.\n *\n * @static\n * @memberOf _\n * @since 3.7.0\n * @category Util\n * @param {Object} object The object to query.\n * @param {...*} [args] The arguments to invoke the method with.\n * @returns {Function} Returns the new invoker function.\n * @example\n *\n * var array = _.times(3, _.constant),\n * object = { 'a': array, 'b': array, 'c': array };\n *\n * _.map(['a[2]', 'c[0]'], _.methodOf(object));\n * // => [2, 0]\n *\n * _.map([['a', '2'], ['c', '0']], _.methodOf(object));\n * // => [2, 0]\n */\n var methodOf = baseRest(function(object, args) {\n return function(path) {\n return baseInvoke(object, path, args);\n };\n });\n\n /**\n * Adds all own enumerable string keyed function properties of a source\n * object to the destination object. If `object` is a function, then methods\n * are added to its prototype as well.\n *\n * **Note:** Use `_.runInContext` to create a pristine `lodash` function to\n * avoid conflicts caused by modifying the original.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @param {Function|Object} [object=lodash] The destination object.\n * @param {Object} source The object of functions to add.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.chain=true] Specify whether mixins are chainable.\n * @returns {Function|Object} Returns `object`.\n * @example\n *\n * function vowels(string) {\n * return _.filter(string, function(v) {\n * return /[aeiou]/i.test(v);\n * });\n * }\n *\n * _.mixin({ 'vowels': vowels });\n * _.vowels('fred');\n * // => ['e']\n *\n * _('fred').vowels().value();\n * // => ['e']\n *\n * _.mixin({ 'vowels': vowels }, { 'chain': false });\n * _('fred').vowels();\n * // => ['e']\n */\n function mixin(object, source, options) {\n var props = keys(source),\n methodNames = baseFunctions(source, props);\n\n if (options == null &&\n !(isObject(source) && (methodNames.length || !props.length))) {\n options = source;\n source = object;\n object = this;\n methodNames = baseFunctions(source, keys(source));\n }\n var chain = !(isObject(options) && 'chain' in options) || !!options.chain,\n isFunc = isFunction(object);\n\n arrayEach(methodNames, function(methodName) {\n var func = source[methodName];\n object[methodName] = func;\n if (isFunc) {\n object.prototype[methodName] = function() {\n var chainAll = this.__chain__;\n if (chain || chainAll) {\n var result = object(this.__wrapped__),\n actions = result.__actions__ = copyArray(this.__actions__);\n\n actions.push({ 'func': func, 'args': arguments, 'thisArg': object });\n result.__chain__ = chainAll;\n return result;\n }\n return func.apply(object, arrayPush([this.value()], arguments));\n };\n }\n });\n\n return object;\n }\n\n /**\n * Reverts the `_` variable to its previous value and returns a reference to\n * the `lodash` function.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @returns {Function} Returns the `lodash` function.\n * @example\n *\n * var lodash = _.noConflict();\n */\n function noConflict() {\n if (root._ === this) {\n root._ = oldDash;\n }\n return this;\n }\n\n /**\n * This method returns `undefined`.\n *\n * @static\n * @memberOf _\n * @since 2.3.0\n * @category Util\n * @example\n *\n * _.times(2, _.noop);\n * // => [undefined, undefined]\n */\n function noop() {\n // No operation performed.\n }\n\n /**\n * Creates a function that gets the argument at index `n`. If `n` is negative,\n * the nth argument from the end is returned.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Util\n * @param {number} [n=0] The index of the argument to return.\n * @returns {Function} Returns the new pass-thru function.\n * @example\n *\n * var func = _.nthArg(1);\n * func('a', 'b', 'c', 'd');\n * // => 'b'\n *\n * var func = _.nthArg(-2);\n * func('a', 'b', 'c', 'd');\n * // => 'c'\n */\n function nthArg(n) {\n n = toInteger(n);\n return baseRest(function(args) {\n return baseNth(args, n);\n });\n }\n\n /**\n * Creates a function that invokes `iteratees` with the arguments it receives\n * and returns their results.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Util\n * @param {...(Function|Function[])} [iteratees=[_.identity]]\n * The iteratees to invoke.\n * @returns {Function} Returns the new function.\n * @example\n *\n * var func = _.over([Math.max, Math.min]);\n *\n * func(1, 2, 3, 4);\n * // => [4, 1]\n */\n var over = createOver(arrayMap);\n\n /**\n * Creates a function that checks if **all** of the `predicates` return\n * truthy when invoked with the arguments it receives.\n *\n * Following shorthands are possible for providing predicates.\n * Pass an `Object` and it will be used as an parameter for `_.matches` to create the predicate.\n * Pass an `Array` of parameters for `_.matchesProperty` and the predicate will be created using them.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Util\n * @param {...(Function|Function[])} [predicates=[_.identity]]\n * The predicates to check.\n * @returns {Function} Returns the new function.\n * @example\n *\n * var func = _.overEvery([Boolean, isFinite]);\n *\n * func('1');\n * // => true\n *\n * func(null);\n * // => false\n *\n * func(NaN);\n * // => false\n */\n var overEvery = createOver(arrayEvery);\n\n /**\n * Creates a function that checks if **any** of the `predicates` return\n * truthy when invoked with the arguments it receives.\n *\n * Following shorthands are possible for providing predicates.\n * Pass an `Object` and it will be used as an parameter for `_.matches` to create the predicate.\n * Pass an `Array` of parameters for `_.matchesProperty` and the predicate will be created using them.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Util\n * @param {...(Function|Function[])} [predicates=[_.identity]]\n * The predicates to check.\n * @returns {Function} Returns the new function.\n * @example\n *\n * var func = _.overSome([Boolean, isFinite]);\n *\n * func('1');\n * // => true\n *\n * func(null);\n * // => true\n *\n * func(NaN);\n * // => false\n *\n * var matchesFunc = _.overSome([{ 'a': 1 }, { 'a': 2 }])\n * var matchesPropertyFunc = _.overSome([['a', 1], ['a', 2]])\n */\n var overSome = createOver(arraySome);\n\n /**\n * Creates a function that returns the value at `path` of a given object.\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Util\n * @param {Array|string} path The path of the property to get.\n * @returns {Function} Returns the new accessor function.\n * @example\n *\n * var objects = [\n * { 'a': { 'b': 2 } },\n * { 'a': { 'b': 1 } }\n * ];\n *\n * _.map(objects, _.property('a.b'));\n * // => [2, 1]\n *\n * _.map(_.sortBy(objects, _.property(['a', 'b'])), 'a.b');\n * // => [1, 2]\n */\n function property(path) {\n return isKey(path) ? baseProperty(toKey(path)) : basePropertyDeep(path);\n }\n\n /**\n * The opposite of `_.property`; this method creates a function that returns\n * the value at a given path of `object`.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Util\n * @param {Object} object The object to query.\n * @returns {Function} Returns the new accessor function.\n * @example\n *\n * var array = [0, 1, 2],\n * object = { 'a': array, 'b': array, 'c': array };\n *\n * _.map(['a[2]', 'c[0]'], _.propertyOf(object));\n * // => [2, 0]\n *\n * _.map([['a', '2'], ['c', '0']], _.propertyOf(object));\n * // => [2, 0]\n */\n function propertyOf(object) {\n return function(path) {\n return object == null ? undefined : baseGet(object, path);\n };\n }\n\n /**\n * Creates an array of numbers (positive and/or negative) progressing from\n * `start` up to, but not including, `end`. A step of `-1` is used if a negative\n * `start` is specified without an `end` or `step`. If `end` is not specified,\n * it's set to `start` with `start` then set to `0`.\n *\n * **Note:** JavaScript follows the IEEE-754 standard for resolving\n * floating-point values which can produce unexpected results.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @param {number} [start=0] The start of the range.\n * @param {number} end The end of the range.\n * @param {number} [step=1] The value to increment or decrement by.\n * @returns {Array} Returns the range of numbers.\n * @see _.inRange, _.rangeRight\n * @example\n *\n * _.range(4);\n * // => [0, 1, 2, 3]\n *\n * _.range(-4);\n * // => [0, -1, -2, -3]\n *\n * _.range(1, 5);\n * // => [1, 2, 3, 4]\n *\n * _.range(0, 20, 5);\n * // => [0, 5, 10, 15]\n *\n * _.range(0, -4, -1);\n * // => [0, -1, -2, -3]\n *\n * _.range(1, 4, 0);\n * // => [1, 1, 1]\n *\n * _.range(0);\n * // => []\n */\n var range = createRange();\n\n /**\n * This method is like `_.range` except that it populates values in\n * descending order.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Util\n * @param {number} [start=0] The start of the range.\n * @param {number} end The end of the range.\n * @param {number} [step=1] The value to increment or decrement by.\n * @returns {Array} Returns the range of numbers.\n * @see _.inRange, _.range\n * @example\n *\n * _.rangeRight(4);\n * // => [3, 2, 1, 0]\n *\n * _.rangeRight(-4);\n * // => [-3, -2, -1, 0]\n *\n * _.rangeRight(1, 5);\n * // => [4, 3, 2, 1]\n *\n * _.rangeRight(0, 20, 5);\n * // => [15, 10, 5, 0]\n *\n * _.rangeRight(0, -4, -1);\n * // => [-3, -2, -1, 0]\n *\n * _.rangeRight(1, 4, 0);\n * // => [1, 1, 1]\n *\n * _.rangeRight(0);\n * // => []\n */\n var rangeRight = createRange(true);\n\n /**\n * This method returns a new empty array.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {Array} Returns the new empty array.\n * @example\n *\n * var arrays = _.times(2, _.stubArray);\n *\n * console.log(arrays);\n * // => [[], []]\n *\n * console.log(arrays[0] === arrays[1]);\n * // => false\n */\n function stubArray() {\n return [];\n }\n\n /**\n * This method returns `false`.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {boolean} Returns `false`.\n * @example\n *\n * _.times(2, _.stubFalse);\n * // => [false, false]\n */\n function stubFalse() {\n return false;\n }\n\n /**\n * This method returns a new empty object.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {Object} Returns the new empty object.\n * @example\n *\n * var objects = _.times(2, _.stubObject);\n *\n * console.log(objects);\n * // => [{}, {}]\n *\n * console.log(objects[0] === objects[1]);\n * // => false\n */\n function stubObject() {\n return {};\n }\n\n /**\n * This method returns an empty string.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {string} Returns the empty string.\n * @example\n *\n * _.times(2, _.stubString);\n * // => ['', '']\n */\n function stubString() {\n return '';\n }\n\n /**\n * This method returns `true`.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {boolean} Returns `true`.\n * @example\n *\n * _.times(2, _.stubTrue);\n * // => [true, true]\n */\n function stubTrue() {\n return true;\n }\n\n /**\n * Invokes the iteratee `n` times, returning an array of the results of\n * each invocation. The iteratee is invoked with one argument; (index).\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @param {number} n The number of times to invoke `iteratee`.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the array of results.\n * @example\n *\n * _.times(3, String);\n * // => ['0', '1', '2']\n *\n * _.times(4, _.constant(0));\n * // => [0, 0, 0, 0]\n */\n function times(n, iteratee) {\n n = toInteger(n);\n if (n < 1 || n > MAX_SAFE_INTEGER) {\n return [];\n }\n var index = MAX_ARRAY_LENGTH,\n length = nativeMin(n, MAX_ARRAY_LENGTH);\n\n iteratee = getIteratee(iteratee);\n n -= MAX_ARRAY_LENGTH;\n\n var result = baseTimes(length, iteratee);\n while (++index < n) {\n iteratee(index);\n }\n return result;\n }\n\n /**\n * Converts `value` to a property path array.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Util\n * @param {*} value The value to convert.\n * @returns {Array} Returns the new property path array.\n * @example\n *\n * _.toPath('a.b.c');\n * // => ['a', 'b', 'c']\n *\n * _.toPath('a[0].b.c');\n * // => ['a', '0', 'b', 'c']\n */\n function toPath(value) {\n if (isArray(value)) {\n return arrayMap(value, toKey);\n }\n return isSymbol(value) ? [value] : copyArray(stringToPath(toString(value)));\n }\n\n /**\n * Generates a unique ID. If `prefix` is given, the ID is appended to it.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @param {string} [prefix=''] The value to prefix the ID with.\n * @returns {string} Returns the unique ID.\n * @example\n *\n * _.uniqueId('contact_');\n * // => 'contact_104'\n *\n * _.uniqueId();\n * // => '105'\n */\n function uniqueId(prefix) {\n var id = ++idCounter;\n return toString(prefix) + id;\n }\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Adds two numbers.\n *\n * @static\n * @memberOf _\n * @since 3.4.0\n * @category Math\n * @param {number} augend The first number in an addition.\n * @param {number} addend The second number in an addition.\n * @returns {number} Returns the total.\n * @example\n *\n * _.add(6, 4);\n * // => 10\n */\n var add = createMathOperation(function(augend, addend) {\n return augend + addend;\n }, 0);\n\n /**\n * Computes `number` rounded up to `precision`.\n *\n * @static\n * @memberOf _\n * @since 3.10.0\n * @category Math\n * @param {number} number The number to round up.\n * @param {number} [precision=0] The precision to round up to.\n * @returns {number} Returns the rounded up number.\n * @example\n *\n * _.ceil(4.006);\n * // => 5\n *\n * _.ceil(6.004, 2);\n * // => 6.01\n *\n * _.ceil(6040, -2);\n * // => 6100\n */\n var ceil = createRound('ceil');\n\n /**\n * Divide two numbers.\n *\n * @static\n * @memberOf _\n * @since 4.7.0\n * @category Math\n * @param {number} dividend The first number in a division.\n * @param {number} divisor The second number in a division.\n * @returns {number} Returns the quotient.\n * @example\n *\n * _.divide(6, 4);\n * // => 1.5\n */\n var divide = createMathOperation(function(dividend, divisor) {\n return dividend / divisor;\n }, 1);\n\n /**\n * Computes `number` rounded down to `precision`.\n *\n * @static\n * @memberOf _\n * @since 3.10.0\n * @category Math\n * @param {number} number The number to round down.\n * @param {number} [precision=0] The precision to round down to.\n * @returns {number} Returns the rounded down number.\n * @example\n *\n * _.floor(4.006);\n * // => 4\n *\n * _.floor(0.046, 2);\n * // => 0.04\n *\n * _.floor(4060, -2);\n * // => 4000\n */\n var floor = createRound('floor');\n\n /**\n * Computes the maximum value of `array`. If `array` is empty or falsey,\n * `undefined` is returned.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Math\n * @param {Array} array The array to iterate over.\n * @returns {*} Returns the maximum value.\n * @example\n *\n * _.max([4, 2, 8, 6]);\n * // => 8\n *\n * _.max([]);\n * // => undefined\n */\n function max(array) {\n return (array && array.length)\n ? baseExtremum(array, identity, baseGt)\n : undefined;\n }\n\n /**\n * This method is like `_.max` except that it accepts `iteratee` which is\n * invoked for each element in `array` to generate the criterion by which\n * the value is ranked. The iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Math\n * @param {Array} array The array to iterate over.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {*} Returns the maximum value.\n * @example\n *\n * var objects = [{ 'n': 1 }, { 'n': 2 }];\n *\n * _.maxBy(objects, function(o) { return o.n; });\n * // => { 'n': 2 }\n *\n * // The `_.property` iteratee shorthand.\n * _.maxBy(objects, 'n');\n * // => { 'n': 2 }\n */\n function maxBy(array, iteratee) {\n return (array && array.length)\n ? baseExtremum(array, getIteratee(iteratee, 2), baseGt)\n : undefined;\n }\n\n /**\n * Computes the mean of the values in `array`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Math\n * @param {Array} array The array to iterate over.\n * @returns {number} Returns the mean.\n * @example\n *\n * _.mean([4, 2, 8, 6]);\n * // => 5\n */\n function mean(array) {\n return baseMean(array, identity);\n }\n\n /**\n * This method is like `_.mean` except that it accepts `iteratee` which is\n * invoked for each element in `array` to generate the value to be averaged.\n * The iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 4.7.0\n * @category Math\n * @param {Array} array The array to iterate over.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {number} Returns the mean.\n * @example\n *\n * var objects = [{ 'n': 4 }, { 'n': 2 }, { 'n': 8 }, { 'n': 6 }];\n *\n * _.meanBy(objects, function(o) { return o.n; });\n * // => 5\n *\n * // The `_.property` iteratee shorthand.\n * _.meanBy(objects, 'n');\n * // => 5\n */\n function meanBy(array, iteratee) {\n return baseMean(array, getIteratee(iteratee, 2));\n }\n\n /**\n * Computes the minimum value of `array`. If `array` is empty or falsey,\n * `undefined` is returned.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Math\n * @param {Array} array The array to iterate over.\n * @returns {*} Returns the minimum value.\n * @example\n *\n * _.min([4, 2, 8, 6]);\n * // => 2\n *\n * _.min([]);\n * // => undefined\n */\n function min(array) {\n return (array && array.length)\n ? baseExtremum(array, identity, baseLt)\n : undefined;\n }\n\n /**\n * This method is like `_.min` except that it accepts `iteratee` which is\n * invoked for each element in `array` to generate the criterion by which\n * the value is ranked. The iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Math\n * @param {Array} array The array to iterate over.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {*} Returns the minimum value.\n * @example\n *\n * var objects = [{ 'n': 1 }, { 'n': 2 }];\n *\n * _.minBy(objects, function(o) { return o.n; });\n * // => { 'n': 1 }\n *\n * // The `_.property` iteratee shorthand.\n * _.minBy(objects, 'n');\n * // => { 'n': 1 }\n */\n function minBy(array, iteratee) {\n return (array && array.length)\n ? baseExtremum(array, getIteratee(iteratee, 2), baseLt)\n : undefined;\n }\n\n /**\n * Multiply two numbers.\n *\n * @static\n * @memberOf _\n * @since 4.7.0\n * @category Math\n * @param {number} multiplier The first number in a multiplication.\n * @param {number} multiplicand The second number in a multiplication.\n * @returns {number} Returns the product.\n * @example\n *\n * _.multiply(6, 4);\n * // => 24\n */\n var multiply = createMathOperation(function(multiplier, multiplicand) {\n return multiplier * multiplicand;\n }, 1);\n\n /**\n * Computes `number` rounded to `precision`.\n *\n * @static\n * @memberOf _\n * @since 3.10.0\n * @category Math\n * @param {number} number The number to round.\n * @param {number} [precision=0] The precision to round to.\n * @returns {number} Returns the rounded number.\n * @example\n *\n * _.round(4.006);\n * // => 4\n *\n * _.round(4.006, 2);\n * // => 4.01\n *\n * _.round(4060, -2);\n * // => 4100\n */\n var round = createRound('round');\n\n /**\n * Subtract two numbers.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Math\n * @param {number} minuend The first number in a subtraction.\n * @param {number} subtrahend The second number in a subtraction.\n * @returns {number} Returns the difference.\n * @example\n *\n * _.subtract(6, 4);\n * // => 2\n */\n var subtract = createMathOperation(function(minuend, subtrahend) {\n return minuend - subtrahend;\n }, 0);\n\n /**\n * Computes the sum of the values in `array`.\n *\n * @static\n * @memberOf _\n * @since 3.4.0\n * @category Math\n * @param {Array} array The array to iterate over.\n * @returns {number} Returns the sum.\n * @example\n *\n * _.sum([4, 2, 8, 6]);\n * // => 20\n */\n function sum(array) {\n return (array && array.length)\n ? baseSum(array, identity)\n : 0;\n }\n\n /**\n * This method is like `_.sum` except that it accepts `iteratee` which is\n * invoked for each element in `array` to generate the value to be summed.\n * The iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Math\n * @param {Array} array The array to iterate over.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {number} Returns the sum.\n * @example\n *\n * var objects = [{ 'n': 4 }, { 'n': 2 }, { 'n': 8 }, { 'n': 6 }];\n *\n * _.sumBy(objects, function(o) { return o.n; });\n * // => 20\n *\n * // The `_.property` iteratee shorthand.\n * _.sumBy(objects, 'n');\n * // => 20\n */\n function sumBy(array, iteratee) {\n return (array && array.length)\n ? baseSum(array, getIteratee(iteratee, 2))\n : 0;\n }\n\n /*------------------------------------------------------------------------*/\n\n // Add methods that return wrapped values in chain sequences.\n lodash.after = after;\n lodash.ary = ary;\n lodash.assign = assign;\n lodash.assignIn = assignIn;\n lodash.assignInWith = assignInWith;\n lodash.assignWith = assignWith;\n lodash.at = at;\n lodash.before = before;\n lodash.bind = bind;\n lodash.bindAll = bindAll;\n lodash.bindKey = bindKey;\n lodash.castArray = castArray;\n lodash.chain = chain;\n lodash.chunk = chunk;\n lodash.compact = compact;\n lodash.concat = concat;\n lodash.cond = cond;\n lodash.conforms = conforms;\n lodash.constant = constant;\n lodash.countBy = countBy;\n lodash.create = create;\n lodash.curry = curry;\n lodash.curryRight = curryRight;\n lodash.debounce = debounce;\n lodash.defaults = defaults;\n lodash.defaultsDeep = defaultsDeep;\n lodash.defer = defer;\n lodash.delay = delay;\n lodash.difference = difference;\n lodash.differenceBy = differenceBy;\n lodash.differenceWith = differenceWith;\n lodash.drop = drop;\n lodash.dropRight = dropRight;\n lodash.dropRightWhile = dropRightWhile;\n lodash.dropWhile = dropWhile;\n lodash.fill = fill;\n lodash.filter = filter;\n lodash.flatMap = flatMap;\n lodash.flatMapDeep = flatMapDeep;\n lodash.flatMapDepth = flatMapDepth;\n lodash.flatten = flatten;\n lodash.flattenDeep = flattenDeep;\n lodash.flattenDepth = flattenDepth;\n lodash.flip = flip;\n lodash.flow = flow;\n lodash.flowRight = flowRight;\n lodash.fromPairs = fromPairs;\n lodash.functions = functions;\n lodash.functionsIn = functionsIn;\n lodash.groupBy = groupBy;\n lodash.initial = initial;\n lodash.intersection = intersection;\n lodash.intersectionBy = intersectionBy;\n lodash.intersectionWith = intersectionWith;\n lodash.invert = invert;\n lodash.invertBy = invertBy;\n lodash.invokeMap = invokeMap;\n lodash.iteratee = iteratee;\n lodash.keyBy = keyBy;\n lodash.keys = keys;\n lodash.keysIn = keysIn;\n lodash.map = map;\n lodash.mapKeys = mapKeys;\n lodash.mapValues = mapValues;\n lodash.matches = matches;\n lodash.matchesProperty = matchesProperty;\n lodash.memoize = memoize;\n lodash.merge = merge;\n lodash.mergeWith = mergeWith;\n lodash.method = method;\n lodash.methodOf = methodOf;\n lodash.mixin = mixin;\n lodash.negate = negate;\n lodash.nthArg = nthArg;\n lodash.omit = omit;\n lodash.omitBy = omitBy;\n lodash.once = once;\n lodash.orderBy = orderBy;\n lodash.over = over;\n lodash.overArgs = overArgs;\n lodash.overEvery = overEvery;\n lodash.overSome = overSome;\n lodash.partial = partial;\n lodash.partialRight = partialRight;\n lodash.partition = partition;\n lodash.pick = pick;\n lodash.pickBy = pickBy;\n lodash.property = property;\n lodash.propertyOf = propertyOf;\n lodash.pull = pull;\n lodash.pullAll = pullAll;\n lodash.pullAllBy = pullAllBy;\n lodash.pullAllWith = pullAllWith;\n lodash.pullAt = pullAt;\n lodash.range = range;\n lodash.rangeRight = rangeRight;\n lodash.rearg = rearg;\n lodash.reject = reject;\n lodash.remove = remove;\n lodash.rest = rest;\n lodash.reverse = reverse;\n lodash.sampleSize = sampleSize;\n lodash.set = set;\n lodash.setWith = setWith;\n lodash.shuffle = shuffle;\n lodash.slice = slice;\n lodash.sortBy = sortBy;\n lodash.sortedUniq = sortedUniq;\n lodash.sortedUniqBy = sortedUniqBy;\n lodash.split = split;\n lodash.spread = spread;\n lodash.tail = tail;\n lodash.take = take;\n lodash.takeRight = takeRight;\n lodash.takeRightWhile = takeRightWhile;\n lodash.takeWhile = takeWhile;\n lodash.tap = tap;\n lodash.throttle = throttle;\n lodash.thru = thru;\n lodash.toArray = toArray;\n lodash.toPairs = toPairs;\n lodash.toPairsIn = toPairsIn;\n lodash.toPath = toPath;\n lodash.toPlainObject = toPlainObject;\n lodash.transform = transform;\n lodash.unary = unary;\n lodash.union = union;\n lodash.unionBy = unionBy;\n lodash.unionWith = unionWith;\n lodash.uniq = uniq;\n lodash.uniqBy = uniqBy;\n lodash.uniqWith = uniqWith;\n lodash.unset = unset;\n lodash.unzip = unzip;\n lodash.unzipWith = unzipWith;\n lodash.update = update;\n lodash.updateWith = updateWith;\n lodash.values = values;\n lodash.valuesIn = valuesIn;\n lodash.without = without;\n lodash.words = words;\n lodash.wrap = wrap;\n lodash.xor = xor;\n lodash.xorBy = xorBy;\n lodash.xorWith = xorWith;\n lodash.zip = zip;\n lodash.zipObject = zipObject;\n lodash.zipObjectDeep = zipObjectDeep;\n lodash.zipWith = zipWith;\n\n // Add aliases.\n lodash.entries = toPairs;\n lodash.entriesIn = toPairsIn;\n lodash.extend = assignIn;\n lodash.extendWith = assignInWith;\n\n // Add methods to `lodash.prototype`.\n mixin(lodash, lodash);\n\n /*------------------------------------------------------------------------*/\n\n // Add methods that return unwrapped values in chain sequences.\n lodash.add = add;\n lodash.attempt = attempt;\n lodash.camelCase = camelCase;\n lodash.capitalize = capitalize;\n lodash.ceil = ceil;\n lodash.clamp = clamp;\n lodash.clone = clone;\n lodash.cloneDeep = cloneDeep;\n lodash.cloneDeepWith = cloneDeepWith;\n lodash.cloneWith = cloneWith;\n lodash.conformsTo = conformsTo;\n lodash.deburr = deburr;\n lodash.defaultTo = defaultTo;\n lodash.divide = divide;\n lodash.endsWith = endsWith;\n lodash.eq = eq;\n lodash.escape = escape;\n lodash.escapeRegExp = escapeRegExp;\n lodash.every = every;\n lodash.find = find;\n lodash.findIndex = findIndex;\n lodash.findKey = findKey;\n lodash.findLast = findLast;\n lodash.findLastIndex = findLastIndex;\n lodash.findLastKey = findLastKey;\n lodash.floor = floor;\n lodash.forEach = forEach;\n lodash.forEachRight = forEachRight;\n lodash.forIn = forIn;\n lodash.forInRight = forInRight;\n lodash.forOwn = forOwn;\n lodash.forOwnRight = forOwnRight;\n lodash.get = get;\n lodash.gt = gt;\n lodash.gte = gte;\n lodash.has = has;\n lodash.hasIn = hasIn;\n lodash.head = head;\n lodash.identity = identity;\n lodash.includes = includes;\n lodash.indexOf = indexOf;\n lodash.inRange = inRange;\n lodash.invoke = invoke;\n lodash.isArguments = isArguments;\n lodash.isArray = isArray;\n lodash.isArrayBuffer = isArrayBuffer;\n lodash.isArrayLike = isArrayLike;\n lodash.isArrayLikeObject = isArrayLikeObject;\n lodash.isBoolean = isBoolean;\n lodash.isBuffer = isBuffer;\n lodash.isDate = isDate;\n lodash.isElement = isElement;\n lodash.isEmpty = isEmpty;\n lodash.isEqual = isEqual;\n lodash.isEqualWith = isEqualWith;\n lodash.isError = isError;\n lodash.isFinite = isFinite;\n lodash.isFunction = isFunction;\n lodash.isInteger = isInteger;\n lodash.isLength = isLength;\n lodash.isMap = isMap;\n lodash.isMatch = isMatch;\n lodash.isMatchWith = isMatchWith;\n lodash.isNaN = isNaN;\n lodash.isNative = isNative;\n lodash.isNil = isNil;\n lodash.isNull = isNull;\n lodash.isNumber = isNumber;\n lodash.isObject = isObject;\n lodash.isObjectLike = isObjectLike;\n lodash.isPlainObject = isPlainObject;\n lodash.isRegExp = isRegExp;\n lodash.isSafeInteger = isSafeInteger;\n lodash.isSet = isSet;\n lodash.isString = isString;\n lodash.isSymbol = isSymbol;\n lodash.isTypedArray = isTypedArray;\n lodash.isUndefined = isUndefined;\n lodash.isWeakMap = isWeakMap;\n lodash.isWeakSet = isWeakSet;\n lodash.join = join;\n lodash.kebabCase = kebabCase;\n lodash.last = last;\n lodash.lastIndexOf = lastIndexOf;\n lodash.lowerCase = lowerCase;\n lodash.lowerFirst = lowerFirst;\n lodash.lt = lt;\n lodash.lte = lte;\n lodash.max = max;\n lodash.maxBy = maxBy;\n lodash.mean = mean;\n lodash.meanBy = meanBy;\n lodash.min = min;\n lodash.minBy = minBy;\n lodash.stubArray = stubArray;\n lodash.stubFalse = stubFalse;\n lodash.stubObject = stubObject;\n lodash.stubString = stubString;\n lodash.stubTrue = stubTrue;\n lodash.multiply = multiply;\n lodash.nth = nth;\n lodash.noConflict = noConflict;\n lodash.noop = noop;\n lodash.now = now;\n lodash.pad = pad;\n lodash.padEnd = padEnd;\n lodash.padStart = padStart;\n lodash.parseInt = parseInt;\n lodash.random = random;\n lodash.reduce = reduce;\n lodash.reduceRight = reduceRight;\n lodash.repeat = repeat;\n lodash.replace = replace;\n lodash.result = result;\n lodash.round = round;\n lodash.runInContext = runInContext;\n lodash.sample = sample;\n lodash.size = size;\n lodash.snakeCase = snakeCase;\n lodash.some = some;\n lodash.sortedIndex = sortedIndex;\n lodash.sortedIndexBy = sortedIndexBy;\n lodash.sortedIndexOf = sortedIndexOf;\n lodash.sortedLastIndex = sortedLastIndex;\n lodash.sortedLastIndexBy = sortedLastIndexBy;\n lodash.sortedLastIndexOf = sortedLastIndexOf;\n lodash.startCase = startCase;\n lodash.startsWith = startsWith;\n lodash.subtract = subtract;\n lodash.sum = sum;\n lodash.sumBy = sumBy;\n lodash.template = template;\n lodash.times = times;\n lodash.toFinite = toFinite;\n lodash.toInteger = toInteger;\n lodash.toLength = toLength;\n lodash.toLower = toLower;\n lodash.toNumber = toNumber;\n lodash.toSafeInteger = toSafeInteger;\n lodash.toString = toString;\n lodash.toUpper = toUpper;\n lodash.trim = trim;\n lodash.trimEnd = trimEnd;\n lodash.trimStart = trimStart;\n lodash.truncate = truncate;\n lodash.unescape = unescape;\n lodash.uniqueId = uniqueId;\n lodash.upperCase = upperCase;\n lodash.upperFirst = upperFirst;\n\n // Add aliases.\n lodash.each = forEach;\n lodash.eachRight = forEachRight;\n lodash.first = head;\n\n mixin(lodash, (function() {\n var source = {};\n baseForOwn(lodash, function(func, methodName) {\n if (!hasOwnProperty.call(lodash.prototype, methodName)) {\n source[methodName] = func;\n }\n });\n return source;\n }()), { 'chain': false });\n\n /*------------------------------------------------------------------------*/\n\n /**\n * The semantic version number.\n *\n * @static\n * @memberOf _\n * @type {string}\n */\n lodash.VERSION = VERSION;\n\n // Assign default placeholders.\n arrayEach(['bind', 'bindKey', 'curry', 'curryRight', 'partial', 'partialRight'], function(methodName) {\n lodash[methodName].placeholder = lodash;\n });\n\n // Add `LazyWrapper` methods for `_.drop` and `_.take` variants.\n arrayEach(['drop', 'take'], function(methodName, index) {\n LazyWrapper.prototype[methodName] = function(n) {\n n = n === undefined ? 1 : nativeMax(toInteger(n), 0);\n\n var result = (this.__filtered__ && !index)\n ? new LazyWrapper(this)\n : this.clone();\n\n if (result.__filtered__) {\n result.__takeCount__ = nativeMin(n, result.__takeCount__);\n } else {\n result.__views__.push({\n 'size': nativeMin(n, MAX_ARRAY_LENGTH),\n 'type': methodName + (result.__dir__ < 0 ? 'Right' : '')\n });\n }\n return result;\n };\n\n LazyWrapper.prototype[methodName + 'Right'] = function(n) {\n return this.reverse()[methodName](n).reverse();\n };\n });\n\n // Add `LazyWrapper` methods that accept an `iteratee` value.\n arrayEach(['filter', 'map', 'takeWhile'], function(methodName, index) {\n var type = index + 1,\n isFilter = type == LAZY_FILTER_FLAG || type == LAZY_WHILE_FLAG;\n\n LazyWrapper.prototype[methodName] = function(iteratee) {\n var result = this.clone();\n result.__iteratees__.push({\n 'iteratee': getIteratee(iteratee, 3),\n 'type': type\n });\n result.__filtered__ = result.__filtered__ || isFilter;\n return result;\n };\n });\n\n // Add `LazyWrapper` methods for `_.head` and `_.last`.\n arrayEach(['head', 'last'], function(methodName, index) {\n var takeName = 'take' + (index ? 'Right' : '');\n\n LazyWrapper.prototype[methodName] = function() {\n return this[takeName](1).value()[0];\n };\n });\n\n // Add `LazyWrapper` methods for `_.initial` and `_.tail`.\n arrayEach(['initial', 'tail'], function(methodName, index) {\n var dropName = 'drop' + (index ? '' : 'Right');\n\n LazyWrapper.prototype[methodName] = function() {\n return this.__filtered__ ? new LazyWrapper(this) : this[dropName](1);\n };\n });\n\n LazyWrapper.prototype.compact = function() {\n return this.filter(identity);\n };\n\n LazyWrapper.prototype.find = function(predicate) {\n return this.filter(predicate).head();\n };\n\n LazyWrapper.prototype.findLast = function(predicate) {\n return this.reverse().find(predicate);\n };\n\n LazyWrapper.prototype.invokeMap = baseRest(function(path, args) {\n if (typeof path == 'function') {\n return new LazyWrapper(this);\n }\n return this.map(function(value) {\n return baseInvoke(value, path, args);\n });\n });\n\n LazyWrapper.prototype.reject = function(predicate) {\n return this.filter(negate(getIteratee(predicate)));\n };\n\n LazyWrapper.prototype.slice = function(start, end) {\n start = toInteger(start);\n\n var result = this;\n if (result.__filtered__ && (start > 0 || end < 0)) {\n return new LazyWrapper(result);\n }\n if (start < 0) {\n result = result.takeRight(-start);\n } else if (start) {\n result = result.drop(start);\n }\n if (end !== undefined) {\n end = toInteger(end);\n result = end < 0 ? result.dropRight(-end) : result.take(end - start);\n }\n return result;\n };\n\n LazyWrapper.prototype.takeRightWhile = function(predicate) {\n return this.reverse().takeWhile(predicate).reverse();\n };\n\n LazyWrapper.prototype.toArray = function() {\n return this.take(MAX_ARRAY_LENGTH);\n };\n\n // Add `LazyWrapper` methods to `lodash.prototype`.\n baseForOwn(LazyWrapper.prototype, function(func, methodName) {\n var checkIteratee = /^(?:filter|find|map|reject)|While$/.test(methodName),\n isTaker = /^(?:head|last)$/.test(methodName),\n lodashFunc = lodash[isTaker ? ('take' + (methodName == 'last' ? 'Right' : '')) : methodName],\n retUnwrapped = isTaker || /^find/.test(methodName);\n\n if (!lodashFunc) {\n return;\n }\n lodash.prototype[methodName] = function() {\n var value = this.__wrapped__,\n args = isTaker ? [1] : arguments,\n isLazy = value instanceof LazyWrapper,\n iteratee = args[0],\n useLazy = isLazy || isArray(value);\n\n var interceptor = function(value) {\n var result = lodashFunc.apply(lodash, arrayPush([value], args));\n return (isTaker && chainAll) ? result[0] : result;\n };\n\n if (useLazy && checkIteratee && typeof iteratee == 'function' && iteratee.length != 1) {\n // Avoid lazy use if the iteratee has a \"length\" value other than `1`.\n isLazy = useLazy = false;\n }\n var chainAll = this.__chain__,\n isHybrid = !!this.__actions__.length,\n isUnwrapped = retUnwrapped && !chainAll,\n onlyLazy = isLazy && !isHybrid;\n\n if (!retUnwrapped && useLazy) {\n value = onlyLazy ? value : new LazyWrapper(this);\n var result = func.apply(value, args);\n result.__actions__.push({ 'func': thru, 'args': [interceptor], 'thisArg': undefined });\n return new LodashWrapper(result, chainAll);\n }\n if (isUnwrapped && onlyLazy) {\n return func.apply(this, args);\n }\n result = this.thru(interceptor);\n return isUnwrapped ? (isTaker ? result.value()[0] : result.value()) : result;\n };\n });\n\n // Add `Array` methods to `lodash.prototype`.\n arrayEach(['pop', 'push', 'shift', 'sort', 'splice', 'unshift'], function(methodName) {\n var func = arrayProto[methodName],\n chainName = /^(?:push|sort|unshift)$/.test(methodName) ? 'tap' : 'thru',\n retUnwrapped = /^(?:pop|shift)$/.test(methodName);\n\n lodash.prototype[methodName] = function() {\n var args = arguments;\n if (retUnwrapped && !this.__chain__) {\n var value = this.value();\n return func.apply(isArray(value) ? value : [], args);\n }\n return this[chainName](function(value) {\n return func.apply(isArray(value) ? value : [], args);\n });\n };\n });\n\n // Map minified method names to their real names.\n baseForOwn(LazyWrapper.prototype, function(func, methodName) {\n var lodashFunc = lodash[methodName];\n if (lodashFunc) {\n var key = lodashFunc.name + '';\n if (!hasOwnProperty.call(realNames, key)) {\n realNames[key] = [];\n }\n realNames[key].push({ 'name': methodName, 'func': lodashFunc });\n }\n });\n\n realNames[createHybrid(undefined, WRAP_BIND_KEY_FLAG).name] = [{\n 'name': 'wrapper',\n 'func': undefined\n }];\n\n // Add methods to `LazyWrapper`.\n LazyWrapper.prototype.clone = lazyClone;\n LazyWrapper.prototype.reverse = lazyReverse;\n LazyWrapper.prototype.value = lazyValue;\n\n // Add chain sequence methods to the `lodash` wrapper.\n lodash.prototype.at = wrapperAt;\n lodash.prototype.chain = wrapperChain;\n lodash.prototype.commit = wrapperCommit;\n lodash.prototype.next = wrapperNext;\n lodash.prototype.plant = wrapperPlant;\n lodash.prototype.reverse = wrapperReverse;\n lodash.prototype.toJSON = lodash.prototype.valueOf = lodash.prototype.value = wrapperValue;\n\n // Add lazy aliases.\n lodash.prototype.first = lodash.prototype.head;\n\n if (symIterator) {\n lodash.prototype[symIterator] = wrapperToIterator;\n }\n return lodash;\n });\n\n /*--------------------------------------------------------------------------*/\n\n // Export lodash.\n var _ = runInContext();\n\n // Some AMD build optimizers, like r.js, check for condition patterns like:\n if (typeof define == 'function' && typeof define.amd == 'object' && define.amd) {\n // Expose Lodash on the global object to prevent errors when Lodash is\n // loaded by a script tag in the presence of an AMD loader.\n // See http://requirejs.org/docs/errors.html#mismatch for more details.\n // Use `_.noConflict` to remove Lodash from the global object.\n root._ = _;\n\n // Define as an anonymous module so, through path mapping, it can be\n // referenced as the \"underscore\" module.\n define(function() {\n return _;\n });\n }\n // Check for `exports` after `define` in case a build optimizer adds it.\n else if (freeModule) {\n // Export for Node.js.\n (freeModule.exports = _)._ = _;\n // Export for CommonJS support.\n freeExports._ = _;\n }\n else {\n // Export to the global object.\n root._ = _;\n }\n}.call(this));\n","import './assets/NcRichText-DNXuHl34.css';\nimport i from \"./Components/NcActionButton.mjs\";\nimport { N as e } from \"./chunks/NcActionButtonGroup-DU1taycQ.mjs\";\nimport m from \"./Components/NcActionCaption.mjs\";\nimport a from \"./Components/NcActionCheckbox.mjs\";\nimport { N as p } from \"./chunks/NcActionInput-53RB9uQe.mjs\";\nimport c from \"./Components/NcActionLink.mjs\";\nimport s from \"./Components/NcActionRadio.mjs\";\nimport N from \"./Components/NcActionRouter.mjs\";\nimport { N as n } from \"./chunks/NcActions-DiFslXqv.mjs\";\nimport f from \"./Components/NcActionSeparator.mjs\";\nimport l from \"./Components/NcActionText.mjs\";\nimport u from \"./Components/NcActionTextEditable.mjs\";\nimport { N as d } from \"./chunks/NcAppContent-BDhK1rUf.mjs\";\nimport g from \"./Components/NcAppContentDetails.mjs\";\nimport A from \"./Components/NcAppContentList.mjs\";\nimport { N as S } from \"./chunks/NcAppNavigation-CElLRpH-.mjs\";\nimport { N as b } from \"./chunks/NcAppNavigationCaption-DI7SIPdI.mjs\";\nimport v from \"./Components/NcAppNavigationIconBullet.mjs\";\nimport { N as T } from \"./chunks/NcAppNavigationItem-Djfc0DPY.mjs\";\nimport k from \"./Components/NcAppNavigationList.mjs\";\nimport P from \"./Components/NcAppNavigationNew.mjs\";\nimport { N as x } from \"./chunks/NcAppNavigationNewItem-CN3vYnc_.mjs\";\nimport { N as C } from \"./chunks/NcAppNavigationSettings-LmpAoM-x.mjs\";\nimport I from \"./Components/NcAppNavigationSpacer.mjs\";\nimport { N as h } from \"./chunks/NcAppSettingsDialog-BLOgrVCz.mjs\";\nimport E from \"./Components/NcAppSettingsSection.mjs\";\nimport { N as B } from \"./chunks/NcAppSidebar-CqER6-dl.mjs\";\nimport R from \"./Components/NcAppSidebarTab.mjs\";\nimport { N as L } from \"./chunks/NcAvatar-BBhoG-za.mjs\";\nimport { u as ct } from \"./chunks/NcAvatar-BBhoG-za.mjs\";\nimport { N as y } from \"./chunks/NcBreadcrumb-BxCf2hEA.mjs\";\nimport { N as M } from \"./chunks/NcBreadcrumbs-BmK-6Q-n.mjs\";\nimport O from \"./Components/NcButton.mjs\";\nimport { N as D } from \"./chunks/NcCheckboxRadioSwitch-BOl1O2zi.mjs\";\nimport { N as _ } from \"./chunks/NcColorPicker-CeoImUTC.mjs\";\nimport { N as j } from \"./chunks/NcContent-BPA0KfuT.mjs\";\nimport F from \"./Components/NcCounterBubble.mjs\";\nimport { N as W } from \"./chunks/NcDashboardWidget-2-nW7dII.mjs\";\nimport { N as w } from \"./chunks/NcDashboardWidgetItem-D2yoF9Oo.mjs\";\nimport { N as z } from \"./chunks/NcDateTime-CeOdKcvC.mjs\";\nimport { u as Nt } from \"./chunks/NcDateTime-CeOdKcvC.mjs\";\nimport G from \"./Components/NcDateTimePicker.mjs\";\nimport V from \"./Components/NcDateTimePickerNative.mjs\";\nimport { N as H } from \"./chunks/NcDialog-C_1rhUHk.mjs\";\nimport { N as K } from \"./chunks/NcDialogButton-DQFoaN7q.mjs\";\nimport { N as U } from \"./chunks/NcEmojiPicker-Cie30NYK.mjs\";\nimport $ from \"./Components/NcEmptyContent.mjs\";\nimport q from \"./Components/NcGuestContent.mjs\";\nimport { N as J } from \"./chunks/NcHeaderMenu-DOGXti7v.mjs\";\nimport { N as Q } from \"./chunks/index-CnpswYi6.mjs\";\nimport { N as X } from \"./chunks/NcIconSvgWrapper-BTdzvQGV.mjs\";\nimport { N as Y } from \"./chunks/NcListItem-BopkGRDs.mjs\";\nimport { N as Z } from \"./chunks/NcListItemIcon-CI23iFQz.mjs\";\nimport oo from \"./Components/NcLoadingIcon.mjs\";\nimport ro from \"./Components/NcModal.mjs\";\nimport to from \"./Components/NcNoteCard.mjs\";\nimport { N as io } from \"./chunks/NcPasswordField-BgSp7dK4.mjs\";\nimport { N as eo } from \"./chunks/NcPopover--V3R3EKV.mjs\";\nimport { N as mo } from \"./chunks/NcProgressBar-DDAeXyp8.mjs\";\nimport { N as ao } from \"./chunks/NcRelatedResourcesPanel-Ch1b_Gl3.mjs\";\nimport { N as po } from \"./chunks/index-uiNhPYvS.mjs\";\nimport { r as ft } from \"./chunks/index-uiNhPYvS.mjs\";\nimport { N as co, a as so } from \"./chunks/NcRichContenteditable-CEqdmoem.mjs\";\nimport { N as No } from \"./chunks/NcRichText-CUKFkHQg.mjs\";\nimport { N as ut, h as dt, d as gt, i as At, b as St, r as bt, c as vt, a as Tt } from \"./chunks/index-CU14QsCg.mjs\";\nimport \"@vueuse/core\";\nimport \"vue\";\nimport { a as Pt, g as xt, b as Ct, c as It, d as ht, s as Et } from \"./chunks/referencePickerModal-AvSHyw1b.mjs\";\nimport \"unist-util-visit\";\nimport \"unist-builder\";\nimport \"@nextcloud/router\";\nimport \"@nextcloud/axios\";\n/* empty css */\nimport { N as no } from \"./chunks/NcSelect-Bo71Yd6L.mjs\";\nimport { N as fo } from \"./chunks/NcTextField-D_eUEl2B.mjs\";\nimport \"@nextcloud/event-bus\";\nimport { N as lo } from \"./chunks/NcSavingIndicatorIcon-Bf0SEmgS.mjs\";\nimport { N as uo } from \"./chunks/NcSelectTags-9aCrLRT0.mjs\";\nimport { N as go } from \"./chunks/NcSettingsInputText-JboV8u2l.mjs\";\nimport { N as Ao } from \"./chunks/NcSettingsSection-Lgwm3w2e.mjs\";\nimport { N as So } from \"./chunks/NcSettingsSelectGroup-DUzmbtZx.mjs\";\nimport { N as bo } from \"./chunks/NcTimezonePicker-CH1lkCMF.mjs\";\nimport { N as vo } from \"./chunks/NcUserBubble-C0HbPO9p.mjs\";\nimport { N as To } from \"./chunks/NcUserStatusIcon-HOUdT_MR.mjs\";\nimport ko from \"./Components/NcTextArea.mjs\";\nimport { isFullscreenState as Rt, useIsFullscreen as Lt } from \"./Composables/useIsFullscreen.mjs\";\nimport { MOBILE_BREAKPOINT as Mt, MOBILE_SMALL_BREAKPOINT as Ot, isMobileState as Dt, useIsMobile as _t, useIsSmallMobile as jt } from \"./Composables/useIsMobile.mjs\";\nimport { E as Wt, a as wt, e as zt, g as Gt, s as Vt } from \"./chunks/emoji-k4gWHxrE.mjs\";\nimport { u as Kt } from \"./chunks/usernameToColor-BHkzj1tb.mjs\";\nimport { directive as Po } from \"./Directives/Focus.mjs\";\nimport { directive as xo } from \"./Directives/Linkify.mjs\";\nimport \"./Directives/Tooltip.mjs\";\nimport { default as $t } from \"./Mixins/clickOutsideOptions.mjs\";\nimport { default as Jt } from \"./Mixins/isFullscreen.mjs\";\nimport { default as Xt } from \"./Mixins/isMobile.mjs\";\nimport { VTooltip as Co } from \"floating-vue\";\nimport { VTooltip as Zt } from \"floating-vue\";\n/**\n * @copyright Copyright (c) 2018 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\nconst Io = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({\n __proto__: null,\n NcActionButton: i,\n NcActionButtonGroup: e,\n NcActionCaption: m,\n NcActionCheckbox: a,\n NcActionInput: p,\n NcActionLink: c,\n NcActionRadio: s,\n NcActionRouter: N,\n NcActionSeparator: f,\n NcActionText: l,\n NcActionTextEditable: u,\n NcActions: n,\n NcAppContent: d,\n NcAppContentDetails: g,\n NcAppContentList: A,\n NcAppNavigation: S,\n NcAppNavigationCaption: b,\n NcAppNavigationIconBullet: v,\n NcAppNavigationItem: T,\n NcAppNavigationList: k,\n NcAppNavigationNew: P,\n NcAppNavigationNewItem: x,\n NcAppNavigationSettings: C,\n NcAppNavigationSpacer: I,\n NcAppSettingsDialog: h,\n NcAppSettingsSection: E,\n NcAppSidebar: B,\n NcAppSidebarTab: R,\n NcAutoCompleteResult: co,\n NcAvatar: L,\n NcBreadcrumb: y,\n NcBreadcrumbs: M,\n NcButton: O,\n NcCheckboxRadioSwitch: D,\n NcColorPicker: _,\n NcContent: j,\n NcCounterBubble: F,\n NcDashboardWidget: W,\n NcDashboardWidgetItem: w,\n NcDateTime: z,\n NcDateTimePicker: G,\n NcDateTimePickerNative: V,\n NcDialog: H,\n NcDialogButton: K,\n NcEmojiPicker: U,\n NcEmptyContent: $,\n NcGuestContent: q,\n NcHeaderMenu: J,\n NcHighlight: Q,\n NcIconSvgWrapper: X,\n NcListItem: Y,\n NcListItemIcon: Z,\n NcLoadingIcon: oo,\n NcMentionBubble: po,\n NcModal: ro,\n NcNoteCard: to,\n NcPasswordField: io,\n NcPopover: eo,\n NcProgressBar: mo,\n NcRelatedResourcesPanel: ao,\n NcRichContenteditable: so,\n NcRichText: No,\n NcSavingIndicatorIcon: lo,\n NcSelect: no,\n NcSelectTags: uo,\n NcSettingsInputText: go,\n NcSettingsSection: Ao,\n NcSettingsSelectGroup: So,\n NcTextArea: ko,\n NcTextField: fo,\n NcTimezonePicker: bo,\n NcUserBubble: vo,\n NcUserStatusIcon: To\n}, Symbol.toStringTag, { value: \"Module\" }));\n/**\n * @copyright 2022 Christopher Ng <chrng8@gmail.com>\n *\n * @author Christopher Ng <chrng8@gmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\nconst et = (o) => o.type === \"click\" || o.type === \"keydown\" && o.key === \"Enter\";\n/**\n * @copyright Copyright (c) 2018 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\nconst ho = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({\n __proto__: null,\n Focus: Po,\n Linkify: xo,\n Tooltip: Co\n}, Symbol.toStringTag, { value: \"Module\" })), mt = {\n install(o) {\n Object.entries(Io).forEach(([t, r]) => {\n o.component(r.name || t, r);\n }), Object.entries(ho).forEach(([t, r]) => {\n o.directive(t, r);\n });\n }\n};\nexport {\n Wt as EmojiSkinTone,\n Po as Focus,\n xo as Linkify,\n Mt as MOBILE_BREAKPOINT,\n Ot as MOBILE_SMALL_BREAKPOINT,\n i as NcActionButton,\n e as NcActionButtonGroup,\n m as NcActionCaption,\n a as NcActionCheckbox,\n p as NcActionInput,\n c as NcActionLink,\n s as NcActionRadio,\n N as NcActionRouter,\n f as NcActionSeparator,\n l as NcActionText,\n u as NcActionTextEditable,\n n as NcActions,\n d as NcAppContent,\n g as NcAppContentDetails,\n A as NcAppContentList,\n S as NcAppNavigation,\n b as NcAppNavigationCaption,\n v as NcAppNavigationIconBullet,\n T as NcAppNavigationItem,\n k as NcAppNavigationList,\n P as NcAppNavigationNew,\n x as NcAppNavigationNewItem,\n C as NcAppNavigationSettings,\n I as NcAppNavigationSpacer,\n h as NcAppSettingsDialog,\n E as NcAppSettingsSection,\n B as NcAppSidebar,\n R as NcAppSidebarTab,\n co as NcAutoCompleteResult,\n L as NcAvatar,\n y as NcBreadcrumb,\n M as NcBreadcrumbs,\n O as NcButton,\n D as NcCheckboxRadioSwitch,\n _ as NcColorPicker,\n j as NcContent,\n F as NcCounterBubble,\n ut as NcCustomPickerRenderResult,\n W as NcDashboardWidget,\n w as NcDashboardWidgetItem,\n z as NcDateTime,\n G as NcDateTimePicker,\n V as NcDateTimePickerNative,\n H as NcDialog,\n K as NcDialogButton,\n U as NcEmojiPicker,\n $ as NcEmptyContent,\n q as NcGuestContent,\n J as NcHeaderMenu,\n Q as NcHighlight,\n X as NcIconSvgWrapper,\n Y as NcListItem,\n Z as NcListItemIcon,\n oo as NcLoadingIcon,\n po as NcMentionBubble,\n ro as NcModal,\n to as NcNoteCard,\n io as NcPasswordField,\n eo as NcPopover,\n mo as NcProgressBar,\n ao as NcRelatedResourcesPanel,\n so as NcRichContenteditable,\n No as NcRichText,\n lo as NcSavingIndicatorIcon,\n no as NcSelect,\n uo as NcSelectTags,\n go as NcSettingsInputText,\n Ao as NcSettingsSection,\n So as NcSettingsSelectGroup,\n ko as NcTextArea,\n fo as NcTextField,\n bo as NcTimezonePicker,\n vo as NcUserBubble,\n To as NcUserStatusIcon,\n mt as NextcloudVuePlugin,\n Zt as Tooltip,\n Pt as anyLinkProviderId,\n $t as clickOutsideOptions,\n wt as emojiAddRecent,\n zt as emojiSearch,\n Gt as getCurrentSkinTone,\n xt as getLinkWithPicker,\n Ct as getProvider,\n It as getProviders,\n dt as hasInteractiveView,\n et as isA11yActivation,\n gt as isCustomPickerElementRegistered,\n Jt as isFullscreen,\n Rt as isFullscreenState,\n Xt as isMobile,\n Dt as isMobileState,\n At as isWidgetRegistered,\n St as registerCustomPickerElement,\n bt as registerWidget,\n vt as renderCustomPickerElement,\n Tt as renderWidget,\n ft as richEditor,\n ht as searchProvider,\n Vt as setCurrentSkinTone,\n Et as sortProviders,\n Nt as useFormatDateTime,\n Lt as useIsFullscreen,\n _t as useIsMobile,\n jt as useIsSmallMobile,\n ct as userStatus,\n Kt as usernameToColor\n};\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\tid: moduleId,\n\t\tloaded: false,\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Flag the module as loaded\n\tmodule.loaded = true;\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n// expose the modules object (__webpack_modules__)\n__webpack_require__.m = __webpack_modules__;\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.f = {};\n// This file contains only the entry chunk.\n// The chunk loading function for additional chunks\n__webpack_require__.e = (chunkId) => {\n\treturn Promise.all(Object.keys(__webpack_require__.f).reduce((promises, key) => {\n\t\t__webpack_require__.f[key](chunkId, promises);\n\t\treturn promises;\n\t}, []));\n};","// This function allow to reference async chunks\n__webpack_require__.u = (chunkId) => {\n\t// return url for filenames based on template\n\treturn \"\" + chunkId + \"-\" + chunkId + \".js?v=\" + {\"1110\":\"a5d6e6f59aa058840a1e\",\"5455\":\"8915a218db5b7bc90f34\"}[chunkId] + \"\";\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","__webpack_require__.nmd = (module) => {\n\tmodule.paths = [];\n\tif (!module.children) module.children = [];\n\treturn module;\n};","__webpack_require__.j = 3674;","var scriptUrl;\nif (__webpack_require__.g.importScripts) scriptUrl = __webpack_require__.g.location + \"\";\nvar document = __webpack_require__.g.document;\nif (!scriptUrl && document) {\n\tif (document.currentScript)\n\t\tscriptUrl = document.currentScript.src;\n\tif (!scriptUrl) {\n\t\tvar scripts = document.getElementsByTagName(\"script\");\n\t\tif(scripts.length) {\n\t\t\tvar i = scripts.length - 1;\n\t\t\twhile (i > -1 && (!scriptUrl || !/^http(s?):/.test(scriptUrl))) scriptUrl = scripts[i--].src;\n\t\t}\n\t}\n}\n// When supporting browsers where an automatic publicPath is not supported you must specify an output.publicPath manually via configuration\n// or pass an empty string (\"\") and set the __webpack_public_path__ variable from your code to use your own logic.\nif (!scriptUrl) throw new Error(\"Automatic publicPath is not supported in this browser\");\nscriptUrl = scriptUrl.replace(/#.*$/, \"\").replace(/\\?.*$/, \"\").replace(/\\/[^\\/]+$/, \"/\");\n__webpack_require__.p = scriptUrl;","__webpack_require__.b = document.baseURI || self.location.href;\n\n// object to store loaded and loading chunks\n// undefined = chunk not loaded, null = chunk preloaded/prefetched\n// [resolve, reject, Promise] = chunk loading, 0 = chunk loaded\nvar installedChunks = {\n\t3674: 0\n};\n\n__webpack_require__.f.j = (chunkId, promises) => {\n\t\t// JSONP chunk loading for javascript\n\t\tvar installedChunkData = __webpack_require__.o(installedChunks, chunkId) ? installedChunks[chunkId] : undefined;\n\t\tif(installedChunkData !== 0) { // 0 means \"already installed\".\n\n\t\t\t// a Promise means \"currently loading\".\n\t\t\tif(installedChunkData) {\n\t\t\t\tpromises.push(installedChunkData[2]);\n\t\t\t} else {\n\t\t\t\tif(true) { // all chunks have JS\n\t\t\t\t\t// setup Promise in chunk cache\n\t\t\t\t\tvar promise = new Promise((resolve, reject) => (installedChunkData = installedChunks[chunkId] = [resolve, reject]));\n\t\t\t\t\tpromises.push(installedChunkData[2] = promise);\n\n\t\t\t\t\t// start chunk loading\n\t\t\t\t\tvar url = __webpack_require__.p + __webpack_require__.u(chunkId);\n\t\t\t\t\t// create error before stack unwound to get useful stacktrace later\n\t\t\t\t\tvar error = new Error();\n\t\t\t\t\tvar loadingEnded = (event) => {\n\t\t\t\t\t\tif(__webpack_require__.o(installedChunks, chunkId)) {\n\t\t\t\t\t\t\tinstalledChunkData = installedChunks[chunkId];\n\t\t\t\t\t\t\tif(installedChunkData !== 0) installedChunks[chunkId] = undefined;\n\t\t\t\t\t\t\tif(installedChunkData) {\n\t\t\t\t\t\t\t\tvar errorType = event && (event.type === 'load' ? 'missing' : event.type);\n\t\t\t\t\t\t\t\tvar realSrc = event && event.target && event.target.src;\n\t\t\t\t\t\t\t\terror.message = 'Loading chunk ' + chunkId + ' failed.\\n(' + errorType + ': ' + realSrc + ')';\n\t\t\t\t\t\t\t\terror.name = 'ChunkLoadError';\n\t\t\t\t\t\t\t\terror.type = errorType;\n\t\t\t\t\t\t\t\terror.request = realSrc;\n\t\t\t\t\t\t\t\tinstalledChunkData[1](error);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t\t__webpack_require__.l(url, loadingEnded, \"chunk-\" + chunkId, chunkId);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n};\n\n// no prefetching\n\n// no preloaded\n\n// no HMR\n\n// no HMR manifest\n\n__webpack_require__.O.j = (chunkId) => (installedChunks[chunkId] === 0);\n\n// install a JSONP callback for chunk loading\nvar webpackJsonpCallback = (parentChunkLoadingFunction, data) => {\n\tvar chunkIds = data[0];\n\tvar moreModules = data[1];\n\tvar runtime = data[2];\n\t// add \"moreModules\" to the modules object,\n\t// then flag all \"chunkIds\" as loaded and fire callback\n\tvar moduleId, chunkId, i = 0;\n\tif(chunkIds.some((id) => (installedChunks[id] !== 0))) {\n\t\tfor(moduleId in moreModules) {\n\t\t\tif(__webpack_require__.o(moreModules, moduleId)) {\n\t\t\t\t__webpack_require__.m[moduleId] = moreModules[moduleId];\n\t\t\t}\n\t\t}\n\t\tif(runtime) var result = runtime(__webpack_require__);\n\t}\n\tif(parentChunkLoadingFunction) parentChunkLoadingFunction(data);\n\tfor(;i < chunkIds.length; i++) {\n\t\tchunkId = chunkIds[i];\n\t\tif(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) {\n\t\t\tinstalledChunks[chunkId][0]();\n\t\t}\n\t\tinstalledChunks[chunkId] = 0;\n\t}\n\treturn __webpack_require__.O(result);\n}\n\nvar chunkLoadingGlobal = self[\"webpackChunknextcloud\"] = self[\"webpackChunknextcloud\"] || [];\nchunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0));\nchunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal));","__webpack_require__.nc = undefined;","// startup\n// Load entry module and return exports\n// This entry module depends on other loaded chunks and execution need to be delayed\nvar __webpack_exports__ = __webpack_require__.O(undefined, [4208], () => (__webpack_require__(45402)))\n__webpack_exports__ = __webpack_require__.O(__webpack_exports__);\n"],"names":["deferred","inProgress","dataWebpackPrefix","defineComponent","name","components","NcCheckboxRadioSwitch","props","value","type","Number","required","emits","data","PERMISSION_UPDATE","PERMISSION_CREATE","PERMISSION_DELETE","PERMISSION_SHARE","computed","canCreate","canUpdate","canDelete","canShare","methods","t","translate","toggle","permission","$emit","options","styleTagTransform","setAttributes","insert","domAPI","insertStyleElement","locals","_vm","this","_c","_self","_setupProxy","staticClass","attrs","on","$event","_v","_s","NcSettingsSelectGroup","NcTextArea","NcTextField","SelectSharingPermissions","settingsData","loadState","settings","console","warn","Proxy","get","target","property","set","newValue","configName","concat","snakeCase","JSON","stringify","window","OCP","AppConfig","setValue","publicShareDisclaimerEnabled","publicShareDisclaimerText","onUpdateDisclaimer","debounce","success","showSuccess","error","showError","deleteKey","onUpdateExcludeGroups","excludeGroups","enabled","$set","directives","rawName","expression","allowResharing","allowGroupSharing","onlyShareWithGroupMembers","staticStyle","model","onlyShareWithGroupMembersExcludeGroupList","callback","$$v","allowLinks","allowPublicUpload","enableLinkPasswordByDefault","enforceLinksPassword","passwordExcludedGroupsFeatureEnabled","passwordExcludedGroups","_e","allowLinksExcludeGroups","excludeGroupsList","defaultInternalExpireDate","enforceInternalExpireDate","internalExpireAfterNDays","defaultRemoteExpireDate","enforceRemoteExpireDate","remoteExpireAfterNDays","defaultExpireDate","enforceExpireDate","expireAfterNDays","allowShareDialogUserEnumeration","restrictUserEnumerationToGroup","restrictUserEnumerationToPhone","restrictUserEnumerationFullMatch","defaultPermissions","AdminSettingsSharingForm","NcNoteCard","NcSettingsSection","documentationLink","sharingAppEnabled","Vue","el","render","h","AdminSettingsSharing","___CSS_LOADER_EXPORT___","push","module","id","undefined","FUNC_ERROR_TEXT","HASH_UNDEFINED","PLACEHOLDER","WRAP_PARTIAL_FLAG","WRAP_ARY_FLAG","INFINITY","MAX_SAFE_INTEGER","NAN","MAX_ARRAY_LENGTH","wrapFlags","argsTag","arrayTag","boolTag","dateTag","errorTag","funcTag","genTag","mapTag","numberTag","objectTag","promiseTag","regexpTag","setTag","stringTag","symbolTag","weakMapTag","arrayBufferTag","dataViewTag","float32Tag","float64Tag","int8Tag","int16Tag","int32Tag","uint8Tag","uint8ClampedTag","uint16Tag","uint32Tag","reEmptyStringLeading","reEmptyStringMiddle","reEmptyStringTrailing","reEscapedHtml","reUnescapedHtml","reHasEscapedHtml","RegExp","source","reHasUnescapedHtml","reEscape","reEvaluate","reInterpolate","reIsDeepProp","reIsPlainProp","rePropName","reRegExpChar","reHasRegExpChar","reTrimStart","reWhitespace","reWrapComment","reWrapDetails","reSplitDetails","reAsciiWord","reForbiddenIdentifierChars","reEscapeChar","reEsTemplate","reFlags","reIsBadHex","reIsBinary","reIsHostCtor","reIsOctal","reIsUint","reLatin","reNoMatch","reUnescapedString","rsAstralRange","rsComboRange","rsComboMarksRange","rsDingbatRange","rsLowerRange","rsUpperRange","rsVarRange","rsBreakRange","rsMathOpRange","rsAstral","rsBreak","rsCombo","rsDigits","rsDingbat","rsLower","rsMisc","rsFitz","rsNonAstral","rsRegional","rsSurrPair","rsUpper","rsZWJ","rsMiscLower","rsMiscUpper","rsOptContrLower","rsOptContrUpper","reOptMod","rsModifier","rsOptVar","rsSeq","join","rsEmoji","rsSymbol","reApos","reComboMark","reUnicode","reUnicodeWord","reHasUnicode","reHasUnicodeWord","contextProps","templateCounter","typedArrayTags","cloneableTags","stringEscapes","freeParseFloat","parseFloat","freeParseInt","parseInt","freeGlobal","g","Object","freeSelf","self","root","Function","freeExports","exports","nodeType","freeModule","moduleExports","freeProcess","process","nodeUtil","require","types","binding","e","nodeIsArrayBuffer","isArrayBuffer","nodeIsDate","isDate","nodeIsMap","isMap","nodeIsRegExp","isRegExp","nodeIsSet","isSet","nodeIsTypedArray","isTypedArray","apply","func","thisArg","args","length","call","arrayAggregator","array","setter","iteratee","accumulator","index","arrayEach","arrayEachRight","arrayEvery","predicate","arrayFilter","resIndex","result","arrayIncludes","baseIndexOf","arrayIncludesWith","comparator","arrayMap","Array","arrayPush","values","offset","arrayReduce","initAccum","arrayReduceRight","arraySome","asciiSize","baseProperty","baseFindKey","collection","eachFunc","key","baseFindIndex","fromIndex","fromRight","strictIndexOf","baseIsNaN","baseIndexOfWith","baseMean","baseSum","object","basePropertyOf","baseReduce","current","baseTimes","n","baseTrim","string","slice","trimmedEndIndex","replace","baseUnary","baseValues","cacheHas","cache","has","charsStartIndex","strSymbols","chrSymbols","charsEndIndex","deburrLetter","escapeHtmlChar","escapeStringChar","chr","hasUnicode","test","mapToArray","map","size","forEach","overArg","transform","arg","replaceHolders","placeholder","setToArray","setToPairs","stringSize","lastIndex","unicodeSize","stringToArray","match","unicodeToArray","split","asciiToArray","charAt","unescapeHtmlChar","_","runInContext","context","uid","defaults","pick","Date","Error","Math","String","TypeError","arrayProto","prototype","funcProto","objectProto","coreJsData","funcToString","toString","hasOwnProperty","idCounter","maskSrcKey","exec","keys","IE_PROTO","nativeObjectToString","objectCtorString","oldDash","reIsNative","Buffer","Symbol","Uint8Array","allocUnsafe","getPrototype","getPrototypeOf","objectCreate","create","propertyIsEnumerable","splice","spreadableSymbol","isConcatSpreadable","symIterator","iterator","symToStringTag","toStringTag","defineProperty","getNative","ctxClearTimeout","clearTimeout","ctxNow","now","ctxSetTimeout","setTimeout","nativeCeil","ceil","nativeFloor","floor","nativeGetSymbols","getOwnPropertySymbols","nativeIsBuffer","isBuffer","nativeIsFinite","isFinite","nativeJoin","nativeKeys","nativeMax","max","nativeMin","min","nativeNow","nativeParseInt","nativeRandom","random","nativeReverse","reverse","DataView","Map","Promise","Set","WeakMap","nativeCreate","metaMap","realNames","dataViewCtorString","toSource","mapCtorString","promiseCtorString","setCtorString","weakMapCtorString","symbolProto","symbolValueOf","valueOf","symbolToString","lodash","isObjectLike","isArray","LazyWrapper","LodashWrapper","wrapperClone","baseCreate","proto","isObject","baseLodash","chainAll","__wrapped__","__actions__","__chain__","__index__","__values__","__dir__","__filtered__","__iteratees__","__takeCount__","__views__","Hash","entries","clear","entry","ListCache","MapCache","SetCache","__data__","add","Stack","arrayLikeKeys","inherited","isArr","isArg","isArguments","isBuff","isType","skipIndexes","isIndex","arraySample","baseRandom","arraySampleSize","shuffleSelf","copyArray","baseClamp","arrayShuffle","assignMergeValue","eq","baseAssignValue","assignValue","objValue","assocIndexOf","baseAggregator","baseEach","baseAssign","copyObject","baseAt","paths","skip","number","lower","upper","baseClone","bitmask","customizer","stack","isDeep","isFlat","isFull","constructor","input","initCloneArray","tag","getTag","isFunc","cloneBuffer","initCloneObject","getSymbolsIn","copySymbolsIn","keysIn","baseAssignIn","getSymbols","copySymbols","symbol","Ctor","cloneArrayBuffer","dataView","buffer","byteOffset","byteLength","cloneDataView","cloneTypedArray","regexp","cloneRegExp","initCloneByTag","stacked","subValue","getAllKeysIn","getAllKeys","baseConformsTo","baseDelay","wait","baseDifference","includes","isCommon","valuesLength","outer","valuesIndex","templateSettings","pop","getMapData","pairs","LARGE_ARRAY_SIZE","createBaseEach","baseForOwn","baseEachRight","baseForOwnRight","baseEvery","baseExtremum","isSymbol","baseFilter","baseFlatten","depth","isStrict","isFlattenable","baseFor","createBaseFor","baseForRight","baseFunctions","isFunction","baseGet","path","castPath","toKey","baseGetAllKeys","keysFunc","symbolsFunc","baseGetTag","isOwn","unmasked","getRawTag","objectToString","baseGt","other","baseHas","baseHasIn","baseIntersection","arrays","othLength","othIndex","caches","maxLength","Infinity","seen","baseInvoke","parent","last","baseIsArguments","baseIsEqual","equalFunc","objIsArr","othIsArr","objTag","othTag","objIsObj","othIsObj","isSameTag","equalArrays","message","convert","isPartial","equalByTag","objIsWrapped","othIsWrapped","objUnwrapped","othUnwrapped","objProps","objLength","objStacked","othStacked","skipCtor","othValue","compared","objCtor","othCtor","equalObjects","baseIsEqualDeep","baseIsMatch","matchData","noCustomizer","srcValue","COMPARE_PARTIAL_FLAG","baseIsNative","baseIteratee","identity","baseMatchesProperty","baseMatches","baseKeys","isPrototype","baseLt","baseMap","isArrayLike","getMatchData","matchesStrictComparable","isKey","isStrictComparable","hasIn","baseMerge","srcIndex","mergeFunc","safeGet","isTyped","isArrayLikeObject","isPlainObject","toPlainObject","baseMergeDeep","baseNth","baseOrderBy","iteratees","orders","getIteratee","criteria","comparer","sort","objCriteria","othCriteria","ordersLength","compareAscending","compareMultiple","baseSortBy","basePickBy","baseSet","basePullAll","indexOf","basePullAt","indexes","previous","baseUnset","baseRepeat","baseRest","start","setToString","overRest","baseSample","baseSampleSize","nested","baseSetData","baseSetToString","constant","baseShuffle","baseSlice","end","baseSome","baseSortedIndex","retHighest","low","high","mid","baseSortedIndexBy","valIsNaN","valIsNull","valIsSymbol","valIsUndefined","othIsDefined","othIsNull","othIsReflexive","othIsSymbol","setLow","baseSortedUniq","baseToNumber","baseToString","baseUniq","createSet","seenIndex","baseUpdate","updater","baseWhile","isDrop","baseWrapperValue","actions","action","baseXor","baseZipObject","assignFunc","valsLength","castArrayLikeObject","castFunction","stringToPath","castRest","castSlice","copy","arrayBuffer","typedArray","valIsDefined","valIsReflexive","composeArgs","partials","holders","isCurried","argsIndex","argsLength","holdersLength","leftIndex","leftLength","rangeLength","isUncurried","composeArgsRight","holdersIndex","rightIndex","rightLength","isNew","createAggregator","initializer","createAssigner","assigner","sources","guard","isIterateeCall","iterable","createCaseFirst","methodName","trailing","createCompounder","words","deburr","createCtor","arguments","thisBinding","createFind","findIndexFunc","createFlow","flatRest","funcs","prereq","thru","wrapper","getFuncName","funcName","getData","isLaziable","plant","createHybrid","partialsRight","holdersRight","argPos","ary","arity","isAry","isBind","isBindKey","isFlip","getHolder","holdersCount","countHolders","newHolders","createRecurry","fn","arrLength","oldArray","reorder","createInverter","toIteratee","baseInverter","createMathOperation","operator","defaultValue","createOver","arrayFunc","createPadding","chars","charsLength","createRange","step","toFinite","baseRange","createRelationalOperation","toNumber","wrapFunc","isCurry","newData","setData","setWrapToString","createRound","precision","toInteger","pair","noop","createToPairs","baseToPairs","createWrap","srcBitmask","newBitmask","isCombo","mergeData","createCurry","createPartial","createBind","customDefaultsAssignIn","customDefaultsMerge","customOmitClone","arrStacked","arrValue","flatten","otherFunc","getValue","stubArray","hasPath","hasFunc","isLength","ArrayBuffer","resolve","ctorString","isMaskable","stubFalse","otherArgs","shortOut","reference","details","insertWrapDetails","updateWrapDetails","getWrapDetails","count","lastCalled","stamp","remaining","rand","memoize","charCodeAt","quote","subString","clone","difference","differenceBy","differenceWith","findIndex","findLastIndex","head","intersection","mapped","intersectionBy","intersectionWith","pull","pullAll","pullAt","union","unionBy","unionWith","unzip","group","unzipWith","without","xor","xorBy","xorWith","zip","zipWith","chain","interceptor","wrapperAt","countBy","find","findLast","forEachRight","groupBy","invokeMap","keyBy","partition","sortBy","before","bind","bindKey","WRAP_BIND_FLAG","lastArgs","lastThis","maxWait","timerId","lastCallTime","lastInvokeTime","leading","maxing","invokeFunc","time","shouldInvoke","timeSinceLastCall","timerExpired","trailingEdge","timeWaiting","remainingWait","debounced","isInvoking","leadingEdge","cancel","flush","defer","delay","resolver","memoized","Cache","negate","overArgs","transforms","funcsLength","partial","partialRight","rearg","gt","gte","isError","isInteger","isNumber","isString","lt","lte","toArray","next","done","iteratorToArray","remainder","toLength","isBinary","assign","assignIn","assignInWith","assignWith","at","propsIndex","propsLength","defaultsDeep","mergeWith","invert","invertBy","invoke","nativeKeysIn","isProto","baseKeysIn","merge","omit","CLONE_DEEP_FLAG","basePick","pickBy","prop","toPairs","toPairsIn","camelCase","word","toLowerCase","capitalize","upperFirst","kebabCase","lowerCase","lowerFirst","startCase","upperCase","toUpperCase","pattern","hasUnicodeWord","unicodeWords","asciiWords","attempt","bindAll","methodNames","flow","flowRight","method","methodOf","mixin","over","overEvery","overSome","basePropertyDeep","range","rangeRight","augend","addend","divide","dividend","divisor","multiply","multiplier","multiplicand","round","subtract","minuend","subtrahend","after","castArray","chunk","compact","cond","conforms","baseConforms","properties","curry","curryRight","drop","dropRight","dropRightWhile","dropWhile","fill","baseFill","filter","flatMap","flatMapDeep","flatMapDepth","flattenDeep","flattenDepth","flip","fromPairs","functions","functionsIn","initial","mapKeys","mapValues","matches","matchesProperty","nthArg","omitBy","once","orderBy","propertyOf","pullAllBy","pullAllWith","reject","remove","rest","sampleSize","setWith","shuffle","sortedUniq","sortedUniqBy","separator","limit","spread","tail","take","takeRight","takeRightWhile","takeWhile","tap","throttle","toPath","isArrLike","unary","uniq","uniqBy","uniqWith","unset","update","updateWith","valuesIn","wrap","zipObject","zipObjectDeep","entriesIn","extend","extendWith","clamp","cloneDeep","cloneDeepWith","cloneWith","conformsTo","defaultTo","endsWith","position","escape","escapeRegExp","every","findKey","findLastKey","forIn","forInRight","forOwn","forOwnRight","inRange","baseInRange","isBoolean","isElement","isEmpty","isEqual","isEqualWith","isMatch","isMatchWith","isNaN","isNative","isNil","isNull","isSafeInteger","isUndefined","isWeakMap","isWeakSet","lastIndexOf","strictLastIndexOf","maxBy","mean","meanBy","minBy","stubObject","stubString","stubTrue","nth","noConflict","pad","strLength","padEnd","padStart","radix","floating","temp","reduce","reduceRight","repeat","sample","some","sortedIndex","sortedIndexBy","sortedIndexOf","sortedLastIndex","sortedLastIndexBy","sortedLastIndexOf","startsWith","sum","sumBy","template","isEscaping","isEvaluating","imports","importsKeys","importsValues","interpolate","reDelimiters","evaluate","sourceURL","escapeValue","interpolateValue","esTemplateValue","evaluateValue","variable","times","toLower","toSafeInteger","toUpper","trim","trimEnd","trimStart","truncate","omission","search","substring","global","newEnd","unescape","uniqueId","prefix","each","eachRight","first","VERSION","isFilter","takeName","dropName","checkIteratee","isTaker","lodashFunc","retUnwrapped","isLazy","useLazy","isHybrid","isUnwrapped","onlyLazy","chainName","dir","isRight","view","getView","iterLength","takeCount","iterIndex","commit","wrapped","toJSON","A","N","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","loaded","__webpack_modules__","m","O","chunkIds","priority","notFulfilled","i","fulfilled","j","r","getter","__esModule","d","a","definition","o","enumerable","f","chunkId","all","promises","u","globalThis","obj","l","url","script","needAttach","scripts","document","getElementsByTagName","s","getAttribute","createElement","charset","timeout","nc","setAttribute","src","onScriptComplete","prev","event","onerror","onload","doneFns","parentNode","removeChild","appendChild","nmd","children","scriptUrl","importScripts","location","currentScript","p","b","baseURI","href","installedChunks","installedChunkData","promise","errorType","realSrc","request","webpackJsonpCallback","parentChunkLoadingFunction","moreModules","runtime","chunkLoadingGlobal","__webpack_exports__"],"sourceRoot":""}
\ No newline at end of file +{"version":3,"file":"settings-vue-settings-admin-sharing.js?v=65e52c8015aac2b2a2b4","mappings":"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","sources":["webpack:///nextcloud/webpack/runtime/chunk loaded","webpack:///nextcloud/webpack/runtime/load script","webpack:///nextcloud/apps/settings/src/components/SelectSharingPermissions.vue","webpack:///nextcloud/apps/settings/src/components/SelectSharingPermissions.vue?vue&type=script&lang=ts","webpack://nextcloud/./apps/settings/src/components/SelectSharingPermissions.vue?3aef","webpack://nextcloud/./apps/settings/src/components/SelectSharingPermissions.vue?0492","webpack:///nextcloud/apps/settings/src/components/AdminSettingsSharingForm.vue","webpack:///nextcloud/apps/settings/src/components/AdminSettingsSharingForm.vue?vue&type=script&lang=ts","webpack://nextcloud/./apps/settings/src/components/AdminSettingsSharingForm.vue?bc1a","webpack://nextcloud/./apps/settings/src/components/AdminSettingsSharingForm.vue?8936","webpack:///nextcloud/apps/settings/src/views/AdminSettingsSharing.vue?vue&type=script&lang=ts","webpack:///nextcloud/apps/settings/src/views/AdminSettingsSharing.vue","webpack://nextcloud/./apps/settings/src/views/AdminSettingsSharing.vue?a501","webpack:///nextcloud/apps/settings/src/admin-settings-sharing.ts","webpack:///nextcloud/apps/settings/src/components/AdminSettingsSharingForm.vue?vue&type=style&index=0&id=965ea99a&prod&scoped=true&lang=scss","webpack:///nextcloud/apps/settings/src/components/SelectSharingPermissions.vue?vue&type=style&index=0&id=54c0ce93&prod&scoped=true&lang=css","webpack:///nextcloud/node_modules/lodash/lodash.js","webpack:///nextcloud/node_modules/@nextcloud/vue/dist/index.mjs","webpack:///nextcloud/webpack/bootstrap","webpack:///nextcloud/webpack/runtime/compat get default export","webpack:///nextcloud/webpack/runtime/define property getters","webpack:///nextcloud/webpack/runtime/ensure chunk","webpack:///nextcloud/webpack/runtime/get javascript chunk filename","webpack:///nextcloud/webpack/runtime/global","webpack:///nextcloud/webpack/runtime/hasOwnProperty shorthand","webpack:///nextcloud/webpack/runtime/make namespace object","webpack:///nextcloud/webpack/runtime/node module decorator","webpack:///nextcloud/webpack/runtime/runtimeId","webpack:///nextcloud/webpack/runtime/publicPath","webpack:///nextcloud/webpack/runtime/jsonp chunk loading","webpack:///nextcloud/webpack/runtime/nonce","webpack:///nextcloud/webpack/startup"],"sourcesContent":["var deferred = [];\n__webpack_require__.O = (result, chunkIds, fn, priority) => {\n\tif(chunkIds) {\n\t\tpriority = priority || 0;\n\t\tfor(var i = deferred.length; i > 0 && deferred[i - 1][2] > priority; i--) deferred[i] = deferred[i - 1];\n\t\tdeferred[i] = [chunkIds, fn, priority];\n\t\treturn;\n\t}\n\tvar notFulfilled = Infinity;\n\tfor (var i = 0; i < deferred.length; i++) {\n\t\tvar chunkIds = deferred[i][0];\n\t\tvar fn = deferred[i][1];\n\t\tvar priority = deferred[i][2];\n\t\tvar fulfilled = true;\n\t\tfor (var j = 0; j < chunkIds.length; j++) {\n\t\t\tif ((priority & 1 === 0 || notFulfilled >= priority) && Object.keys(__webpack_require__.O).every((key) => (__webpack_require__.O[key](chunkIds[j])))) {\n\t\t\t\tchunkIds.splice(j--, 1);\n\t\t\t} else {\n\t\t\t\tfulfilled = false;\n\t\t\t\tif(priority < notFulfilled) notFulfilled = priority;\n\t\t\t}\n\t\t}\n\t\tif(fulfilled) {\n\t\t\tdeferred.splice(i--, 1)\n\t\t\tvar r = fn();\n\t\t\tif (r !== undefined) result = r;\n\t\t}\n\t}\n\treturn result;\n};","var inProgress = {};\nvar dataWebpackPrefix = \"nextcloud:\";\n// loadScript function to load a script via script tag\n__webpack_require__.l = (url, done, key, chunkId) => {\n\tif(inProgress[url]) { inProgress[url].push(done); return; }\n\tvar script, needAttach;\n\tif(key !== undefined) {\n\t\tvar scripts = document.getElementsByTagName(\"script\");\n\t\tfor(var i = 0; i < scripts.length; i++) {\n\t\t\tvar s = scripts[i];\n\t\t\tif(s.getAttribute(\"src\") == url || s.getAttribute(\"data-webpack\") == dataWebpackPrefix + key) { script = s; break; }\n\t\t}\n\t}\n\tif(!script) {\n\t\tneedAttach = true;\n\t\tscript = document.createElement('script');\n\n\t\tscript.charset = 'utf-8';\n\t\tscript.timeout = 120;\n\t\tif (__webpack_require__.nc) {\n\t\t\tscript.setAttribute(\"nonce\", __webpack_require__.nc);\n\t\t}\n\t\tscript.setAttribute(\"data-webpack\", dataWebpackPrefix + key);\n\n\t\tscript.src = url;\n\t}\n\tinProgress[url] = [done];\n\tvar onScriptComplete = (prev, event) => {\n\t\t// avoid mem leaks in IE.\n\t\tscript.onerror = script.onload = null;\n\t\tclearTimeout(timeout);\n\t\tvar doneFns = inProgress[url];\n\t\tdelete inProgress[url];\n\t\tscript.parentNode && script.parentNode.removeChild(script);\n\t\tdoneFns && doneFns.forEach((fn) => (fn(event)));\n\t\tif(prev) return prev(event);\n\t}\n\tvar timeout = setTimeout(onScriptComplete.bind(null, undefined, { type: 'timeout', target: script }), 120000);\n\tscript.onerror = onScriptComplete.bind(null, script.onerror);\n\tscript.onload = onScriptComplete.bind(null, script.onload);\n\tneedAttach && document.head.appendChild(script);\n};","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('fieldset',{staticClass:\"permissions-select\"},[_c('NcCheckboxRadioSwitch',{attrs:{\"checked\":_vm.canCreate},on:{\"update:checked\":function($event){return _vm.toggle(_vm.PERMISSION_CREATE)}}},[_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.t('settings', 'Create'))+\"\\n\\t\")]),_vm._v(\" \"),_c('NcCheckboxRadioSwitch',{attrs:{\"checked\":_vm.canUpdate},on:{\"update:checked\":function($event){return _vm.toggle(_vm.PERMISSION_UPDATE)}}},[_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.t('settings', 'Change'))+\"\\n\\t\")]),_vm._v(\" \"),_c('NcCheckboxRadioSwitch',{attrs:{\"checked\":_vm.canDelete},on:{\"update:checked\":function($event){return _vm.toggle(_vm.PERMISSION_DELETE)}}},[_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.t('settings', 'Delete'))+\"\\n\\t\")]),_vm._v(\" \"),_c('NcCheckboxRadioSwitch',{attrs:{\"checked\":_vm.canShare},on:{\"update:checked\":function($event){return _vm.toggle(_vm.PERMISSION_SHARE)}}},[_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.t('settings', 'Reshare'))+\"\\n\\t\")])],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-4.use[1]!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SelectSharingPermissions.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-4.use[1]!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SelectSharingPermissions.vue?vue&type=script&lang=ts\"","\n import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SelectSharingPermissions.vue?vue&type=style&index=0&id=54c0ce93&prod&scoped=true&lang=css\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SelectSharingPermissions.vue?vue&type=style&index=0&id=54c0ce93&prod&scoped=true&lang=css\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./SelectSharingPermissions.vue?vue&type=template&id=54c0ce93&scoped=true\"\nimport script from \"./SelectSharingPermissions.vue?vue&type=script&lang=ts\"\nexport * from \"./SelectSharingPermissions.vue?vue&type=script&lang=ts\"\nimport style0 from \"./SelectSharingPermissions.vue?vue&type=style&index=0&id=54c0ce93&prod&scoped=true&lang=css\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"54c0ce93\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('form',{staticClass:\"sharing\"},[_c('NcCheckboxRadioSwitch',{attrs:{\"aria-controls\":\"settings-sharing-api settings-sharing-api-settings settings-sharing-default-permissions settings-sharing-privary-related\",\"type\":\"switch\",\"checked\":_vm.settings.enabled},on:{\"update:checked\":function($event){return _vm.$set(_vm.settings, \"enabled\", $event)}}},[_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.t('settings', 'Allow apps to use the Share API'))+\"\\n\\t\")]),_vm._v(\" \"),_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.settings.enabled),expression:\"settings.enabled\"}],staticClass:\"sharing__sub-section\",attrs:{\"id\":\"settings-sharing-api-settings\"}},[_c('NcCheckboxRadioSwitch',{attrs:{\"checked\":_vm.settings.allowResharing},on:{\"update:checked\":function($event){return _vm.$set(_vm.settings, \"allowResharing\", $event)}}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('settings', 'Allow resharing'))+\"\\n\\t\\t\")]),_vm._v(\" \"),_c('NcCheckboxRadioSwitch',{attrs:{\"checked\":_vm.settings.allowGroupSharing},on:{\"update:checked\":function($event){return _vm.$set(_vm.settings, \"allowGroupSharing\", $event)}}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('settings', 'Allow sharing with groups'))+\"\\n\\t\\t\")]),_vm._v(\" \"),_c('NcCheckboxRadioSwitch',{attrs:{\"checked\":_vm.settings.onlyShareWithGroupMembers},on:{\"update:checked\":function($event){return _vm.$set(_vm.settings, \"onlyShareWithGroupMembers\", $event)}}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('settings', 'Restrict users to only share with users in their groups'))+\"\\n\\t\\t\")]),_vm._v(\" \"),_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.settings.onlyShareWithGroupMembers),expression:\"settings.onlyShareWithGroupMembers\"}],staticClass:\"sharing__labeled-entry sharing__input\",attrs:{\"id\":\"settings-sharing-api-excluded-groups\"}},[_c('label',{attrs:{\"for\":\"settings-sharing-only-group-members-excluded-groups\"}},[_vm._v(_vm._s(_vm.t('settings', 'Ignore the following groups when checking group membership')))]),_vm._v(\" \"),_c('NcSettingsSelectGroup',{staticStyle:{\"width\":\"100%\"},attrs:{\"id\":\"settings-sharing-only-group-members-excluded-groups\",\"label\":_vm.t('settings', 'Ignore the following groups when checking group membership')},model:{value:(_vm.settings.onlyShareWithGroupMembersExcludeGroupList),callback:function ($$v) {_vm.$set(_vm.settings, \"onlyShareWithGroupMembersExcludeGroupList\", $$v)},expression:\"settings.onlyShareWithGroupMembersExcludeGroupList\"}})],1)],1),_vm._v(\" \"),_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.settings.enabled),expression:\"settings.enabled\"}],staticClass:\"sharing__section\",attrs:{\"id\":\"settings-sharing-api\"}},[_c('NcCheckboxRadioSwitch',{attrs:{\"type\":\"switch\",\"aria-controls\":\"settings-sharing-api-public-link\",\"checked\":_vm.settings.allowLinks},on:{\"update:checked\":function($event){return _vm.$set(_vm.settings, \"allowLinks\", $event)}}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('settings', 'Allow users to share via link and emails'))+\"\\n\\t\\t\")]),_vm._v(\" \"),_c('fieldset',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.settings.allowLinks),expression:\"settings.allowLinks\"}],staticClass:\"sharing__sub-section\",attrs:{\"id\":\"settings-sharing-api-public-link\"}},[_c('NcCheckboxRadioSwitch',{attrs:{\"checked\":_vm.settings.allowPublicUpload},on:{\"update:checked\":function($event){return _vm.$set(_vm.settings, \"allowPublicUpload\", $event)}}},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('settings', 'Allow public uploads'))+\"\\n\\t\\t\\t\")]),_vm._v(\" \"),_c('NcCheckboxRadioSwitch',{attrs:{\"checked\":_vm.settings.enableLinkPasswordByDefault},on:{\"update:checked\":function($event){return _vm.$set(_vm.settings, \"enableLinkPasswordByDefault\", $event)}}},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('settings', 'Always ask for a password'))+\"\\n\\t\\t\\t\")]),_vm._v(\" \"),_c('NcCheckboxRadioSwitch',{attrs:{\"checked\":_vm.settings.enforceLinksPassword,\"disabled\":!_vm.settings.enableLinkPasswordByDefault},on:{\"update:checked\":function($event){return _vm.$set(_vm.settings, \"enforceLinksPassword\", $event)}}},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('settings', 'Enforce password protection'))+\"\\n\\t\\t\\t\")]),_vm._v(\" \"),(_vm.settings.passwordExcludedGroupsFeatureEnabled)?_c('label',{staticClass:\"sharing__labeled-entry sharing__input\"},[_c('span',[_vm._v(_vm._s(_vm.t('settings', 'Exclude groups from password requirements')))]),_vm._v(\" \"),_c('NcSettingsSelectGroup',{staticStyle:{\"width\":\"100%\"},attrs:{\"disabled\":!_vm.settings.enforceLinksPassword || !_vm.settings.enableLinkPasswordByDefault},model:{value:(_vm.settings.passwordExcludedGroups),callback:function ($$v) {_vm.$set(_vm.settings, \"passwordExcludedGroups\", $$v)},expression:\"settings.passwordExcludedGroups\"}})],1):_vm._e(),_vm._v(\" \"),_c('label',{staticClass:\"sharing__labeled-entry sharing__input\"},[_c('span',[_vm._v(_vm._s(_vm.t('settings', 'Exclude groups from creating link shares')))]),_vm._v(\" \"),_c('NcSettingsSelectGroup',{staticStyle:{\"width\":\"100%\"},attrs:{\"label\":_vm.t('settings', 'Exclude groups from creating link shares')},model:{value:(_vm.settings.allowLinksExcludeGroups),callback:function ($$v) {_vm.$set(_vm.settings, \"allowLinksExcludeGroups\", $$v)},expression:\"settings.allowLinksExcludeGroups\"}})],1)],1),_vm._v(\" \"),_c('label',[_vm._v(_vm._s(_vm.t('settings', 'Limit sharing based on groups')))]),_vm._v(\" \"),_c('div',{staticClass:\"sharing__sub-section\"},[_c('NcCheckboxRadioSwitch',{attrs:{\"checked\":_vm.settings.excludeGroups,\"name\":\"excludeGroups\",\"value\":\"no\",\"type\":\"radio\"},on:{\"update:checked\":[function($event){return _vm.$set(_vm.settings, \"excludeGroups\", $event)},_vm.onUpdateExcludeGroups]}},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('settings', 'Allow sharing for everyone (default)'))+\"\\n\\t\\t\\t\")]),_vm._v(\" \"),_c('NcCheckboxRadioSwitch',{attrs:{\"checked\":_vm.settings.excludeGroups,\"name\":\"excludeGroups\",\"value\":\"yes\",\"type\":\"radio\"},on:{\"update:checked\":[function($event){return _vm.$set(_vm.settings, \"excludeGroups\", $event)},_vm.onUpdateExcludeGroups]}},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('settings', 'Exclude some groups from sharing'))+\"\\n\\t\\t\\t\")]),_vm._v(\" \"),_c('NcCheckboxRadioSwitch',{attrs:{\"checked\":_vm.settings.excludeGroups,\"name\":\"excludeGroups\",\"value\":\"allow\",\"type\":\"radio\"},on:{\"update:checked\":[function($event){return _vm.$set(_vm.settings, \"excludeGroups\", $event)},_vm.onUpdateExcludeGroups]}},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('settings', 'Limit sharing to some groups'))+\"\\n\\t\\t\\t\")]),_vm._v(\" \"),_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.settings.excludeGroups !== 'no'),expression:\"settings.excludeGroups !== 'no'\"}],staticClass:\"sharing__labeled-entry sharing__input\"},[_c('NcSettingsSelectGroup',{staticStyle:{\"width\":\"100%\"},attrs:{\"id\":\"settings-sharing-excluded-groups\",\"aria-describedby\":\"settings-sharing-excluded-groups-desc\",\"label\":_vm.settings.excludeGroups === 'allow' ? _vm.t('settings', 'Groups allowed to share') : _vm.t('settings', 'Groups excluded from sharing'),\"disabled\":_vm.settings.excludeGroups === 'no'},model:{value:(_vm.settings.excludeGroupsList),callback:function ($$v) {_vm.$set(_vm.settings, \"excludeGroupsList\", $$v)},expression:\"settings.excludeGroupsList\"}}),_vm._v(\" \"),_c('em',{attrs:{\"id\":\"settings-sharing-excluded-groups-desc\"}},[_vm._v(_vm._s(_vm.t('settings', 'Not allowed groups will still be able to receive shares, but not to initiate them.')))])],1)],1),_vm._v(\" \"),_c('NcCheckboxRadioSwitch',{attrs:{\"type\":\"switch\",\"aria-controls\":\"settings-sharing-api-expiration\",\"checked\":_vm.settings.defaultInternalExpireDate},on:{\"update:checked\":function($event){return _vm.$set(_vm.settings, \"defaultInternalExpireDate\", $event)}}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('settings', 'Set default expiration date for shares'))+\"\\n\\t\\t\")]),_vm._v(\" \"),_c('fieldset',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.settings.defaultInternalExpireDate),expression:\"settings.defaultInternalExpireDate\"}],staticClass:\"sharing__sub-section\",attrs:{\"id\":\"settings-sharing-api-expiration\"}},[_c('NcCheckboxRadioSwitch',{attrs:{\"checked\":_vm.settings.enforceInternalExpireDate},on:{\"update:checked\":function($event){return _vm.$set(_vm.settings, \"enforceInternalExpireDate\", $event)}}},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('settings', 'Enforce expiration date'))+\"\\n\\t\\t\\t\")]),_vm._v(\" \"),_c('NcTextField',{staticClass:\"sharing__input\",attrs:{\"type\":\"number\",\"label\":_vm.t('settings', 'Default expiration time of new shares in days'),\"placeholder\":_vm.t('settings', 'Expire shares after x days'),\"value\":_vm.settings.internalExpireAfterNDays},on:{\"update:value\":function($event){return _vm.$set(_vm.settings, \"internalExpireAfterNDays\", $event)}}})],1),_vm._v(\" \"),_c('NcCheckboxRadioSwitch',{attrs:{\"type\":\"switch\",\"aria-controls\":\"settings-sharing-remote-api-expiration\",\"checked\":_vm.settings.defaultRemoteExpireDate},on:{\"update:checked\":function($event){return _vm.$set(_vm.settings, \"defaultRemoteExpireDate\", $event)}}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('settings', 'Set default expiration date for shares to other servers'))+\"\\n\\t\\t\")]),_vm._v(\" \"),_c('fieldset',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.settings.defaultRemoteExpireDate),expression:\"settings.defaultRemoteExpireDate\"}],staticClass:\"sharing__sub-section\",attrs:{\"id\":\"settings-sharing-remote-api-expiration\"}},[_c('NcCheckboxRadioSwitch',{attrs:{\"checked\":_vm.settings.enforceRemoteExpireDate},on:{\"update:checked\":function($event){return _vm.$set(_vm.settings, \"enforceRemoteExpireDate\", $event)}}},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('settings', 'Enforce expiration date for remote shares'))+\"\\n\\t\\t\\t\")]),_vm._v(\" \"),_c('NcTextField',{staticClass:\"sharing__input\",attrs:{\"type\":\"number\",\"label\":_vm.t('settings', 'Default expiration time of remote shares in days'),\"placeholder\":_vm.t('settings', 'Expire remote shares after x days'),\"value\":_vm.settings.remoteExpireAfterNDays},on:{\"update:value\":function($event){return _vm.$set(_vm.settings, \"remoteExpireAfterNDays\", $event)}}})],1),_vm._v(\" \"),_c('NcCheckboxRadioSwitch',{attrs:{\"type\":\"switch\",\"aria-controls\":\"settings-sharing-api-api-expiration\",\"checked\":_vm.settings.defaultExpireDate,\"disabled\":!_vm.settings.allowLinks},on:{\"update:checked\":function($event){return _vm.$set(_vm.settings, \"defaultExpireDate\", $event)}}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('settings', 'Set default expiration date for shares via link or mail'))+\"\\n\\t\\t\")]),_vm._v(\" \"),_c('fieldset',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.settings.allowLinks && _vm.settings.defaultExpireDate),expression:\"settings.allowLinks && settings.defaultExpireDate\"}],staticClass:\"sharing__sub-section\",attrs:{\"id\":\"settings-sharing-api-api-expiration\"}},[_c('NcCheckboxRadioSwitch',{attrs:{\"checked\":_vm.settings.enforceExpireDate},on:{\"update:checked\":function($event){return _vm.$set(_vm.settings, \"enforceExpireDate\", $event)}}},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('settings', 'Enforce expiration date for remote shares'))+\"\\n\\t\\t\\t\")]),_vm._v(\" \"),_c('NcTextField',{staticClass:\"sharing__input\",attrs:{\"type\":\"number\",\"label\":_vm.t('settings', 'Default expiration time of shares in days'),\"placeholder\":_vm.t('settings', 'Expire shares after x days'),\"value\":_vm.settings.expireAfterNDays},on:{\"update:value\":function($event){return _vm.$set(_vm.settings, \"expireAfterNDays\", $event)}}})],1)],1),_vm._v(\" \"),_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.settings.enabled),expression:\"settings.enabled\"}],staticClass:\"sharing__section\",attrs:{\"id\":\"settings-sharing-privary-related\"}},[_c('h3',[_vm._v(_vm._s(_vm.t('settings', 'Privacy settings for sharing')))]),_vm._v(\" \"),_c('NcCheckboxRadioSwitch',{attrs:{\"type\":\"switch\",\"aria-controls\":\"settings-sharing-privacy-user-enumeration\",\"checked\":_vm.settings.allowShareDialogUserEnumeration},on:{\"update:checked\":function($event){return _vm.$set(_vm.settings, \"allowShareDialogUserEnumeration\", $event)}}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('settings', 'Allow account name autocompletion in share dialog and allow access to the system address book'))+\"\\n\\t\\t\")]),_vm._v(\" \"),_c('fieldset',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.settings.allowShareDialogUserEnumeration),expression:\"settings.allowShareDialogUserEnumeration\"}],staticClass:\"sharing__sub-section\",attrs:{\"id\":\"settings-sharing-privacy-user-enumeration\"}},[_c('em',[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('settings', 'If autocompletion \"same group\" and \"phone number integration\" are enabled a match in either is enough to show the user.'))+\"\\n\\t\\t\\t\")]),_vm._v(\" \"),_c('NcCheckboxRadioSwitch',{attrs:{\"checked\":_vm.settings.restrictUserEnumerationToGroup},on:{\"update:checked\":function($event){return _vm.$set(_vm.settings, \"restrictUserEnumerationToGroup\", $event)}}},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('settings', 'Allow account name autocompletion to users within the same groups and limit system address books to users in the same groups'))+\"\\n\\t\\t\\t\")]),_vm._v(\" \"),_c('NcCheckboxRadioSwitch',{attrs:{\"checked\":_vm.settings.restrictUserEnumerationToPhone},on:{\"update:checked\":function($event){return _vm.$set(_vm.settings, \"restrictUserEnumerationToPhone\", $event)}}},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('settings', 'Allow account name autocompletion to users based on phone number integration'))+\"\\n\\t\\t\\t\")])],1),_vm._v(\" \"),_c('NcCheckboxRadioSwitch',{attrs:{\"type\":\"switch\",\"checked\":_vm.settings.restrictUserEnumerationFullMatch},on:{\"update:checked\":function($event){return _vm.$set(_vm.settings, \"restrictUserEnumerationFullMatch\", $event)}}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('settings', 'Allow autocompletion when entering the full name or email address (ignoring missing phonebook match and being in the same group)'))+\"\\n\\t\\t\")]),_vm._v(\" \"),_c('NcCheckboxRadioSwitch',{attrs:{\"type\":\"switch\",\"checked\":_vm.publicShareDisclaimerEnabled},on:{\"update:checked\":function($event){_vm.publicShareDisclaimerEnabled=$event}}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('settings', 'Show disclaimer text on the public link upload page (only shown when the file list is hidden)'))+\"\\n\\t\\t\")]),_vm._v(\" \"),(typeof _vm.settings.publicShareDisclaimerText === 'string')?_c('div',{staticClass:\"sharing__sub-section\",attrs:{\"aria-describedby\":\"settings-sharing-privary-related-disclaimer-hint\"}},[_c('NcTextArea',{staticClass:\"sharing__input\",attrs:{\"label\":_vm.t('settings', 'Disclaimer text'),\"aria-describedby\":\"settings-sharing-privary-related-disclaimer-hint\",\"value\":_vm.settings.publicShareDisclaimerText},on:{\"update:value\":_vm.onUpdateDisclaimer}}),_vm._v(\" \"),_c('em',{staticClass:\"sharing__input\",attrs:{\"id\":\"settings-sharing-privary-related-disclaimer-hint\"}},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('settings', 'This text will be shown on the public link upload page when the file list is hidden.'))+\"\\n\\t\\t\\t\")])],1):_vm._e()],1),_vm._v(\" \"),_c('div',{staticClass:\"sharing__section\",attrs:{\"id\":\"settings-sharing-default-permissions\"}},[_c('h3',[_vm._v(_vm._s(_vm.t('settings', 'Default share permissions')))]),_vm._v(\" \"),_c('SelectSharingPermissions',{attrs:{\"value\":_vm.settings.defaultPermissions},on:{\"update:value\":function($event){return _vm.$set(_vm.settings, \"defaultPermissions\", $event)}}})],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-4.use[1]!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AdminSettingsSharingForm.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-4.use[1]!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AdminSettingsSharingForm.vue?vue&type=script&lang=ts\"","\n import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AdminSettingsSharingForm.vue?vue&type=style&index=0&id=965ea99a&prod&scoped=true&lang=scss\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AdminSettingsSharingForm.vue?vue&type=style&index=0&id=965ea99a&prod&scoped=true&lang=scss\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./AdminSettingsSharingForm.vue?vue&type=template&id=965ea99a&scoped=true\"\nimport script from \"./AdminSettingsSharingForm.vue?vue&type=script&lang=ts\"\nexport * from \"./AdminSettingsSharingForm.vue?vue&type=script&lang=ts\"\nimport style0 from \"./AdminSettingsSharingForm.vue?vue&type=style&index=0&id=965ea99a&prod&scoped=true&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"965ea99a\",\n null\n \n)\n\nexport default component.exports","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-4.use[1]!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AdminSettingsSharing.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-4.use[1]!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AdminSettingsSharing.vue?vue&type=script&lang=ts\"","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('NcSettingsSection',{attrs:{\"data-cy-settings-sharing-section\":\"\",\"limit-width\":true,\"doc-url\":_vm.documentationLink,\"name\":_vm.t('settings', 'Sharing'),\"description\":_vm.t('settings', 'As admin you can fine-tune the sharing behavior. Please see the documentation for more information.')}},[(!_vm.sharingAppEnabled)?_c('NcNoteCard',{attrs:{\"type\":\"warning\"}},[_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.t('settings', 'You need to enable the File sharing App.'))+\"\\n\\t\")]):_c('AdminSettingsSharingForm')],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { render, staticRenderFns } from \"./AdminSettingsSharing.vue?vue&type=template&id=4dd263b2\"\nimport script from \"./AdminSettingsSharing.vue?vue&type=script&lang=ts\"\nexport * from \"./AdminSettingsSharing.vue?vue&type=script&lang=ts\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","/**\n * @copyright Copyright (c) 2023 Ferdinand Thiessen <opensource@fthiessen.de>\n *\n * @author Ferdinand Thiessen <opensource@fthiessen.de>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\nimport Vue from 'vue';\nimport AdminSettingsSharing from './views/AdminSettingsSharing.vue';\nexport default new Vue({\n name: 'AdminSettingsSharingSection',\n el: '#vue-admin-settings-sharing',\n render: (h) => h(AdminSettingsSharing),\n});\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.sharing[data-v-965ea99a]{display:flex;flex-direction:column;gap:12px}.sharing__labeled-entry[data-v-965ea99a]{display:flex;flex:1 0;flex-direction:column;gap:4px}.sharing__section[data-v-965ea99a]{display:flex;flex-direction:column;gap:4px;margin-block-end:12px}.sharing__sub-section[data-v-965ea99a]{display:flex;flex-direction:column;gap:4px;margin-inline-start:44px;margin-block-end:12px}.sharing__input[data-v-965ea99a]{max-width:500px;margin-inline-start:14px}.sharing__input[data-v-965ea99a] .v-select.select{width:100%}@media only screen and (max-width: 350px){.sharing__sub-section[data-v-965ea99a]{margin-inline-start:14px}}`, \"\",{\"version\":3,\"sources\":[\"webpack://./apps/settings/src/components/AdminSettingsSharingForm.vue\"],\"names\":[],\"mappings\":\"AACA,0BACC,YAAA,CACA,qBAAA,CACA,QAAA,CAEA,yCACC,YAAA,CACA,QAAA,CACA,qBAAA,CACA,OAAA,CAGD,mCACC,YAAA,CACA,qBAAA,CACA,OAAA,CACA,qBAAA,CAGD,uCACC,YAAA,CACA,qBAAA,CACA,OAAA,CAEA,wBAAA,CACA,qBAAA,CAGD,iCACC,eAAA,CAEA,wBAAA,CAEA,kDACC,UAAA,CAKH,0CAGE,uCACC,wBAAA,CAAA\",\"sourcesContent\":[\"\\n.sharing {\\n\\tdisplay: flex;\\n\\tflex-direction: column;\\n\\tgap: 12px;\\n\\n\\t&__labeled-entry {\\n\\t\\tdisplay: flex;\\n\\t\\tflex: 1 0;\\n\\t\\tflex-direction: column;\\n\\t\\tgap: 4px;\\n\\t}\\n\\n\\t&__section {\\n\\t\\tdisplay: flex;\\n\\t\\tflex-direction: column;\\n\\t\\tgap: 4px;\\n\\t\\tmargin-block-end: 12px\\n\\t}\\n\\n\\t&__sub-section {\\n\\t\\tdisplay: flex;\\n\\t\\tflex-direction: column;\\n\\t\\tgap: 4px;\\n\\n\\t\\tmargin-inline-start: 44px;\\n\\t\\tmargin-block-end: 12px\\n\\t}\\n\\n\\t&__input {\\n\\t\\tmax-width: 500px;\\n\\t\\t// align with checkboxes\\n\\t\\tmargin-inline-start: 14px;\\n\\n\\t\\t:deep(.v-select.select) {\\n\\t\\t\\twidth: 100%;\\n\\t\\t}\\n\\t}\\n}\\n\\n@media only screen and (max-width: 350px) {\\n\\t// ensure no overflow happens on small devices (required for WCAG)\\n\\t.sharing {\\n\\t\\t&__sub-section {\\n\\t\\t\\tmargin-inline-start: 14px;\\n\\t\\t}\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `\n.permissions-select[data-v-54c0ce93] {\n\tdisplay: flex;\n\tflex-wrap: wrap;\n\tgap: 4px;\n}\n`, \"\",{\"version\":3,\"sources\":[\"webpack://./apps/settings/src/components/SelectSharingPermissions.vue\"],\"names\":[],\"mappings\":\";AA8FA;CACA,aAAA;CACA,eAAA;CACA,QAAA;AACA\",\"sourcesContent\":[\"<!--\\n\\t- @copyright 2023 Ferdinand Thiessen <opensource@fthiessen.de>\\n\\t-\\n\\t- @author Ferdinand Thiessen <opensource@fthiessen.de>\\n\\t-\\n\\t- @license AGPL-3.0-or-later\\n\\t-\\n\\t- This program is free software: you can redistribute it and/or modify\\n\\t- it under the terms of the GNU Affero General Public License as\\n\\t- published by the Free Software Foundation, either version 3 of the\\n\\t- License, or (at your option) any later version.\\n\\t-\\n\\t- This program is distributed in the hope that it will be useful,\\n\\t- but WITHOUT ANY WARRANTY; without even the implied warranty of\\n\\t- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\\n\\t- GNU Affero General Public License for more details.\\n\\t-\\n\\t- You should have received a copy of the GNU Affero General Public License\\n\\t- along with this program. If not, see <http://www.gnu.org/licenses/>.\\n\\t-\\n-->\\n<template>\\n\\t<fieldset class=\\\"permissions-select\\\">\\n\\t\\t<NcCheckboxRadioSwitch :checked=\\\"canCreate\\\" @update:checked=\\\"toggle(PERMISSION_CREATE)\\\">\\n\\t\\t\\t{{ t('settings', 'Create') }}\\n\\t\\t</NcCheckboxRadioSwitch>\\n\\t\\t<NcCheckboxRadioSwitch :checked=\\\"canUpdate\\\" @update:checked=\\\"toggle(PERMISSION_UPDATE)\\\">\\n\\t\\t\\t{{ t('settings', 'Change') }}\\n\\t\\t</NcCheckboxRadioSwitch>\\n\\t\\t<NcCheckboxRadioSwitch :checked=\\\"canDelete\\\" @update:checked=\\\"toggle(PERMISSION_DELETE)\\\">\\n\\t\\t\\t{{ t('settings', 'Delete') }}\\n\\t\\t</NcCheckboxRadioSwitch>\\n\\t\\t<NcCheckboxRadioSwitch :checked=\\\"canShare\\\" @update:checked=\\\"toggle(PERMISSION_SHARE)\\\">\\n\\t\\t\\t{{ t('settings', 'Reshare') }}\\n\\t\\t</NcCheckboxRadioSwitch>\\n\\t</fieldset>\\n</template>\\n\\n<script lang=\\\"ts\\\">\\nimport { translate } from '@nextcloud/l10n'\\nimport { NcCheckboxRadioSwitch } from '@nextcloud/vue'\\nimport { defineComponent } from 'vue'\\n\\nexport default defineComponent({\\n\\tname: 'SelectSharingPermissions',\\n\\tcomponents: {\\n\\t\\tNcCheckboxRadioSwitch,\\n\\t},\\n\\tprops: {\\n\\t\\tvalue: {\\n\\t\\t\\ttype: Number,\\n\\t\\t\\trequired: true,\\n\\t\\t},\\n\\t},\\n\\temits: {\\n\\t\\t'update:value': (value: number) => typeof value === 'number',\\n\\t},\\n\\tdata() {\\n\\t\\treturn {\\n\\t\\t\\tPERMISSION_UPDATE: 2,\\n\\t\\t\\tPERMISSION_CREATE: 4,\\n\\t\\t\\tPERMISSION_DELETE: 8,\\n\\t\\t\\tPERMISSION_SHARE: 16,\\n\\t\\t}\\n\\t},\\n\\tcomputed: {\\n\\t\\tcanCreate() {\\n\\t\\t\\treturn (this.value & this.PERMISSION_CREATE) !== 0\\n\\t\\t},\\n\\t\\tcanUpdate() {\\n\\t\\t\\treturn (this.value & this.PERMISSION_UPDATE) !== 0\\n\\t\\t},\\n\\t\\tcanDelete() {\\n\\t\\t\\treturn (this.value & this.PERMISSION_DELETE) !== 0\\n\\t\\t},\\n\\t\\tcanShare() {\\n\\t\\t\\treturn (this.value & this.PERMISSION_SHARE) !== 0\\n\\t\\t},\\n\\t},\\n\\tmethods: {\\n\\t\\tt: translate,\\n\\t\\t/**\\n\\t\\t * Toggle a permission\\n\\t\\t * @param permission The permission (bit) to toggle\\n\\t\\t */\\n\\t\\ttoggle(permission: number) {\\n\\t\\t\\t// xor to toggle the bit\\n\\t\\t\\tthis.$emit('update:value', this.value ^ permission)\\n\\t\\t},\\n\\t},\\n})\\n</script>\\n\\n<style scoped>\\n.permissions-select {\\n\\tdisplay: flex;\\n\\tflex-wrap: wrap;\\n\\tgap: 4px;\\n}\\n</style>\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","/**\n * @license\n * Lodash <https://lodash.com/>\n * Copyright OpenJS Foundation and other contributors <https://openjsf.org/>\n * Released under MIT license <https://lodash.com/license>\n * Based on Underscore.js 1.8.3 <http://underscorejs.org/LICENSE>\n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\n;(function() {\n\n /** Used as a safe reference for `undefined` in pre-ES5 environments. */\n var undefined;\n\n /** Used as the semantic version number. */\n var VERSION = '4.17.21';\n\n /** Used as the size to enable large array optimizations. */\n var LARGE_ARRAY_SIZE = 200;\n\n /** Error message constants. */\n var CORE_ERROR_TEXT = 'Unsupported core-js use. Try https://npms.io/search?q=ponyfill.',\n FUNC_ERROR_TEXT = 'Expected a function',\n INVALID_TEMPL_VAR_ERROR_TEXT = 'Invalid `variable` option passed into `_.template`';\n\n /** Used to stand-in for `undefined` hash values. */\n var HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n /** Used as the maximum memoize cache size. */\n var MAX_MEMOIZE_SIZE = 500;\n\n /** Used as the internal argument placeholder. */\n var PLACEHOLDER = '__lodash_placeholder__';\n\n /** Used to compose bitmasks for cloning. */\n var CLONE_DEEP_FLAG = 1,\n CLONE_FLAT_FLAG = 2,\n CLONE_SYMBOLS_FLAG = 4;\n\n /** Used to compose bitmasks for value comparisons. */\n var COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n\n /** Used to compose bitmasks for function metadata. */\n var WRAP_BIND_FLAG = 1,\n WRAP_BIND_KEY_FLAG = 2,\n WRAP_CURRY_BOUND_FLAG = 4,\n WRAP_CURRY_FLAG = 8,\n WRAP_CURRY_RIGHT_FLAG = 16,\n WRAP_PARTIAL_FLAG = 32,\n WRAP_PARTIAL_RIGHT_FLAG = 64,\n WRAP_ARY_FLAG = 128,\n WRAP_REARG_FLAG = 256,\n WRAP_FLIP_FLAG = 512;\n\n /** Used as default options for `_.truncate`. */\n var DEFAULT_TRUNC_LENGTH = 30,\n DEFAULT_TRUNC_OMISSION = '...';\n\n /** Used to detect hot functions by number of calls within a span of milliseconds. */\n var HOT_COUNT = 800,\n HOT_SPAN = 16;\n\n /** Used to indicate the type of lazy iteratees. */\n var LAZY_FILTER_FLAG = 1,\n LAZY_MAP_FLAG = 2,\n LAZY_WHILE_FLAG = 3;\n\n /** Used as references for various `Number` constants. */\n var INFINITY = 1 / 0,\n MAX_SAFE_INTEGER = 9007199254740991,\n MAX_INTEGER = 1.7976931348623157e+308,\n NAN = 0 / 0;\n\n /** Used as references for the maximum length and index of an array. */\n var MAX_ARRAY_LENGTH = 4294967295,\n MAX_ARRAY_INDEX = MAX_ARRAY_LENGTH - 1,\n HALF_MAX_ARRAY_LENGTH = MAX_ARRAY_LENGTH >>> 1;\n\n /** Used to associate wrap methods with their bit flags. */\n var wrapFlags = [\n ['ary', WRAP_ARY_FLAG],\n ['bind', WRAP_BIND_FLAG],\n ['bindKey', WRAP_BIND_KEY_FLAG],\n ['curry', WRAP_CURRY_FLAG],\n ['curryRight', WRAP_CURRY_RIGHT_FLAG],\n ['flip', WRAP_FLIP_FLAG],\n ['partial', WRAP_PARTIAL_FLAG],\n ['partialRight', WRAP_PARTIAL_RIGHT_FLAG],\n ['rearg', WRAP_REARG_FLAG]\n ];\n\n /** `Object#toString` result references. */\n var argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n asyncTag = '[object AsyncFunction]',\n boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n domExcTag = '[object DOMException]',\n errorTag = '[object Error]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n nullTag = '[object Null]',\n objectTag = '[object Object]',\n promiseTag = '[object Promise]',\n proxyTag = '[object Proxy]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n symbolTag = '[object Symbol]',\n undefinedTag = '[object Undefined]',\n weakMapTag = '[object WeakMap]',\n weakSetTag = '[object WeakSet]';\n\n var arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]',\n float32Tag = '[object Float32Array]',\n float64Tag = '[object Float64Array]',\n int8Tag = '[object Int8Array]',\n int16Tag = '[object Int16Array]',\n int32Tag = '[object Int32Array]',\n uint8Tag = '[object Uint8Array]',\n uint8ClampedTag = '[object Uint8ClampedArray]',\n uint16Tag = '[object Uint16Array]',\n uint32Tag = '[object Uint32Array]';\n\n /** Used to match empty string literals in compiled template source. */\n var reEmptyStringLeading = /\\b__p \\+= '';/g,\n reEmptyStringMiddle = /\\b(__p \\+=) '' \\+/g,\n reEmptyStringTrailing = /(__e\\(.*?\\)|\\b__t\\)) \\+\\n'';/g;\n\n /** Used to match HTML entities and HTML characters. */\n var reEscapedHtml = /&(?:amp|lt|gt|quot|#39);/g,\n reUnescapedHtml = /[&<>\"']/g,\n reHasEscapedHtml = RegExp(reEscapedHtml.source),\n reHasUnescapedHtml = RegExp(reUnescapedHtml.source);\n\n /** Used to match template delimiters. */\n var reEscape = /<%-([\\s\\S]+?)%>/g,\n reEvaluate = /<%([\\s\\S]+?)%>/g,\n reInterpolate = /<%=([\\s\\S]+?)%>/g;\n\n /** Used to match property names within property paths. */\n var reIsDeepProp = /\\.|\\[(?:[^[\\]]*|([\"'])(?:(?!\\1)[^\\\\]|\\\\.)*?\\1)\\]/,\n reIsPlainProp = /^\\w*$/,\n rePropName = /[^.[\\]]+|\\[(?:(-?\\d+(?:\\.\\d+)?)|([\"'])((?:(?!\\2)[^\\\\]|\\\\.)*?)\\2)\\]|(?=(?:\\.|\\[\\])(?:\\.|\\[\\]|$))/g;\n\n /**\n * Used to match `RegExp`\n * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).\n */\n var reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g,\n reHasRegExpChar = RegExp(reRegExpChar.source);\n\n /** Used to match leading whitespace. */\n var reTrimStart = /^\\s+/;\n\n /** Used to match a single whitespace character. */\n var reWhitespace = /\\s/;\n\n /** Used to match wrap detail comments. */\n var reWrapComment = /\\{(?:\\n\\/\\* \\[wrapped with .+\\] \\*\\/)?\\n?/,\n reWrapDetails = /\\{\\n\\/\\* \\[wrapped with (.+)\\] \\*/,\n reSplitDetails = /,? & /;\n\n /** Used to match words composed of alphanumeric characters. */\n var reAsciiWord = /[^\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\x7f]+/g;\n\n /**\n * Used to validate the `validate` option in `_.template` variable.\n *\n * Forbids characters which could potentially change the meaning of the function argument definition:\n * - \"(),\" (modification of function parameters)\n * - \"=\" (default value)\n * - \"[]{}\" (destructuring of function parameters)\n * - \"/\" (beginning of a comment)\n * - whitespace\n */\n var reForbiddenIdentifierChars = /[()=,{}\\[\\]\\/\\s]/;\n\n /** Used to match backslashes in property paths. */\n var reEscapeChar = /\\\\(\\\\)?/g;\n\n /**\n * Used to match\n * [ES template delimiters](http://ecma-international.org/ecma-262/7.0/#sec-template-literal-lexical-components).\n */\n var reEsTemplate = /\\$\\{([^\\\\}]*(?:\\\\.[^\\\\}]*)*)\\}/g;\n\n /** Used to match `RegExp` flags from their coerced string values. */\n var reFlags = /\\w*$/;\n\n /** Used to detect bad signed hexadecimal string values. */\n var reIsBadHex = /^[-+]0x[0-9a-f]+$/i;\n\n /** Used to detect binary string values. */\n var reIsBinary = /^0b[01]+$/i;\n\n /** Used to detect host constructors (Safari). */\n var reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n\n /** Used to detect octal string values. */\n var reIsOctal = /^0o[0-7]+$/i;\n\n /** Used to detect unsigned integer values. */\n var reIsUint = /^(?:0|[1-9]\\d*)$/;\n\n /** Used to match Latin Unicode letters (excluding mathematical operators). */\n var reLatin = /[\\xc0-\\xd6\\xd8-\\xf6\\xf8-\\xff\\u0100-\\u017f]/g;\n\n /** Used to ensure capturing order of template delimiters. */\n var reNoMatch = /($^)/;\n\n /** Used to match unescaped characters in compiled string literals. */\n var reUnescapedString = /['\\n\\r\\u2028\\u2029\\\\]/g;\n\n /** Used to compose unicode character classes. */\n var rsAstralRange = '\\\\ud800-\\\\udfff',\n rsComboMarksRange = '\\\\u0300-\\\\u036f',\n reComboHalfMarksRange = '\\\\ufe20-\\\\ufe2f',\n rsComboSymbolsRange = '\\\\u20d0-\\\\u20ff',\n rsComboRange = rsComboMarksRange + reComboHalfMarksRange + rsComboSymbolsRange,\n rsDingbatRange = '\\\\u2700-\\\\u27bf',\n rsLowerRange = 'a-z\\\\xdf-\\\\xf6\\\\xf8-\\\\xff',\n rsMathOpRange = '\\\\xac\\\\xb1\\\\xd7\\\\xf7',\n rsNonCharRange = '\\\\x00-\\\\x2f\\\\x3a-\\\\x40\\\\x5b-\\\\x60\\\\x7b-\\\\xbf',\n rsPunctuationRange = '\\\\u2000-\\\\u206f',\n rsSpaceRange = ' \\\\t\\\\x0b\\\\f\\\\xa0\\\\ufeff\\\\n\\\\r\\\\u2028\\\\u2029\\\\u1680\\\\u180e\\\\u2000\\\\u2001\\\\u2002\\\\u2003\\\\u2004\\\\u2005\\\\u2006\\\\u2007\\\\u2008\\\\u2009\\\\u200a\\\\u202f\\\\u205f\\\\u3000',\n rsUpperRange = 'A-Z\\\\xc0-\\\\xd6\\\\xd8-\\\\xde',\n rsVarRange = '\\\\ufe0e\\\\ufe0f',\n rsBreakRange = rsMathOpRange + rsNonCharRange + rsPunctuationRange + rsSpaceRange;\n\n /** Used to compose unicode capture groups. */\n var rsApos = \"['\\u2019]\",\n rsAstral = '[' + rsAstralRange + ']',\n rsBreak = '[' + rsBreakRange + ']',\n rsCombo = '[' + rsComboRange + ']',\n rsDigits = '\\\\d+',\n rsDingbat = '[' + rsDingbatRange + ']',\n rsLower = '[' + rsLowerRange + ']',\n rsMisc = '[^' + rsAstralRange + rsBreakRange + rsDigits + rsDingbatRange + rsLowerRange + rsUpperRange + ']',\n rsFitz = '\\\\ud83c[\\\\udffb-\\\\udfff]',\n rsModifier = '(?:' + rsCombo + '|' + rsFitz + ')',\n rsNonAstral = '[^' + rsAstralRange + ']',\n rsRegional = '(?:\\\\ud83c[\\\\udde6-\\\\uddff]){2}',\n rsSurrPair = '[\\\\ud800-\\\\udbff][\\\\udc00-\\\\udfff]',\n rsUpper = '[' + rsUpperRange + ']',\n rsZWJ = '\\\\u200d';\n\n /** Used to compose unicode regexes. */\n var rsMiscLower = '(?:' + rsLower + '|' + rsMisc + ')',\n rsMiscUpper = '(?:' + rsUpper + '|' + rsMisc + ')',\n rsOptContrLower = '(?:' + rsApos + '(?:d|ll|m|re|s|t|ve))?',\n rsOptContrUpper = '(?:' + rsApos + '(?:D|LL|M|RE|S|T|VE))?',\n reOptMod = rsModifier + '?',\n rsOptVar = '[' + rsVarRange + ']?',\n rsOptJoin = '(?:' + rsZWJ + '(?:' + [rsNonAstral, rsRegional, rsSurrPair].join('|') + ')' + rsOptVar + reOptMod + ')*',\n rsOrdLower = '\\\\d*(?:1st|2nd|3rd|(?![123])\\\\dth)(?=\\\\b|[A-Z_])',\n rsOrdUpper = '\\\\d*(?:1ST|2ND|3RD|(?![123])\\\\dTH)(?=\\\\b|[a-z_])',\n rsSeq = rsOptVar + reOptMod + rsOptJoin,\n rsEmoji = '(?:' + [rsDingbat, rsRegional, rsSurrPair].join('|') + ')' + rsSeq,\n rsSymbol = '(?:' + [rsNonAstral + rsCombo + '?', rsCombo, rsRegional, rsSurrPair, rsAstral].join('|') + ')';\n\n /** Used to match apostrophes. */\n var reApos = RegExp(rsApos, 'g');\n\n /**\n * Used to match [combining diacritical marks](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks) and\n * [combining diacritical marks for symbols](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks_for_Symbols).\n */\n var reComboMark = RegExp(rsCombo, 'g');\n\n /** Used to match [string symbols](https://mathiasbynens.be/notes/javascript-unicode). */\n var reUnicode = RegExp(rsFitz + '(?=' + rsFitz + ')|' + rsSymbol + rsSeq, 'g');\n\n /** Used to match complex or compound words. */\n var reUnicodeWord = RegExp([\n rsUpper + '?' + rsLower + '+' + rsOptContrLower + '(?=' + [rsBreak, rsUpper, '$'].join('|') + ')',\n rsMiscUpper + '+' + rsOptContrUpper + '(?=' + [rsBreak, rsUpper + rsMiscLower, '$'].join('|') + ')',\n rsUpper + '?' + rsMiscLower + '+' + rsOptContrLower,\n rsUpper + '+' + rsOptContrUpper,\n rsOrdUpper,\n rsOrdLower,\n rsDigits,\n rsEmoji\n ].join('|'), 'g');\n\n /** Used to detect strings with [zero-width joiners or code points from the astral planes](http://eev.ee/blog/2015/09/12/dark-corners-of-unicode/). */\n var reHasUnicode = RegExp('[' + rsZWJ + rsAstralRange + rsComboRange + rsVarRange + ']');\n\n /** Used to detect strings that need a more robust regexp to match words. */\n var reHasUnicodeWord = /[a-z][A-Z]|[A-Z]{2}[a-z]|[0-9][a-zA-Z]|[a-zA-Z][0-9]|[^a-zA-Z0-9 ]/;\n\n /** Used to assign default `context` object properties. */\n var contextProps = [\n 'Array', 'Buffer', 'DataView', 'Date', 'Error', 'Float32Array', 'Float64Array',\n 'Function', 'Int8Array', 'Int16Array', 'Int32Array', 'Map', 'Math', 'Object',\n 'Promise', 'RegExp', 'Set', 'String', 'Symbol', 'TypeError', 'Uint8Array',\n 'Uint8ClampedArray', 'Uint16Array', 'Uint32Array', 'WeakMap',\n '_', 'clearTimeout', 'isFinite', 'parseInt', 'setTimeout'\n ];\n\n /** Used to make template sourceURLs easier to identify. */\n var templateCounter = -1;\n\n /** Used to identify `toStringTag` values of typed arrays. */\n var typedArrayTags = {};\n typedArrayTags[float32Tag] = typedArrayTags[float64Tag] =\n typedArrayTags[int8Tag] = typedArrayTags[int16Tag] =\n typedArrayTags[int32Tag] = typedArrayTags[uint8Tag] =\n typedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] =\n typedArrayTags[uint32Tag] = true;\n typedArrayTags[argsTag] = typedArrayTags[arrayTag] =\n typedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] =\n typedArrayTags[dataViewTag] = typedArrayTags[dateTag] =\n typedArrayTags[errorTag] = typedArrayTags[funcTag] =\n typedArrayTags[mapTag] = typedArrayTags[numberTag] =\n typedArrayTags[objectTag] = typedArrayTags[regexpTag] =\n typedArrayTags[setTag] = typedArrayTags[stringTag] =\n typedArrayTags[weakMapTag] = false;\n\n /** Used to identify `toStringTag` values supported by `_.clone`. */\n var cloneableTags = {};\n cloneableTags[argsTag] = cloneableTags[arrayTag] =\n cloneableTags[arrayBufferTag] = cloneableTags[dataViewTag] =\n cloneableTags[boolTag] = cloneableTags[dateTag] =\n cloneableTags[float32Tag] = cloneableTags[float64Tag] =\n cloneableTags[int8Tag] = cloneableTags[int16Tag] =\n cloneableTags[int32Tag] = cloneableTags[mapTag] =\n cloneableTags[numberTag] = cloneableTags[objectTag] =\n cloneableTags[regexpTag] = cloneableTags[setTag] =\n cloneableTags[stringTag] = cloneableTags[symbolTag] =\n cloneableTags[uint8Tag] = cloneableTags[uint8ClampedTag] =\n cloneableTags[uint16Tag] = cloneableTags[uint32Tag] = true;\n cloneableTags[errorTag] = cloneableTags[funcTag] =\n cloneableTags[weakMapTag] = false;\n\n /** Used to map Latin Unicode letters to basic Latin letters. */\n var deburredLetters = {\n // Latin-1 Supplement block.\n '\\xc0': 'A', '\\xc1': 'A', '\\xc2': 'A', '\\xc3': 'A', '\\xc4': 'A', '\\xc5': 'A',\n '\\xe0': 'a', '\\xe1': 'a', '\\xe2': 'a', '\\xe3': 'a', '\\xe4': 'a', '\\xe5': 'a',\n '\\xc7': 'C', '\\xe7': 'c',\n '\\xd0': 'D', '\\xf0': 'd',\n '\\xc8': 'E', '\\xc9': 'E', '\\xca': 'E', '\\xcb': 'E',\n '\\xe8': 'e', '\\xe9': 'e', '\\xea': 'e', '\\xeb': 'e',\n '\\xcc': 'I', '\\xcd': 'I', '\\xce': 'I', '\\xcf': 'I',\n '\\xec': 'i', '\\xed': 'i', '\\xee': 'i', '\\xef': 'i',\n '\\xd1': 'N', '\\xf1': 'n',\n '\\xd2': 'O', '\\xd3': 'O', '\\xd4': 'O', '\\xd5': 'O', '\\xd6': 'O', '\\xd8': 'O',\n '\\xf2': 'o', '\\xf3': 'o', '\\xf4': 'o', '\\xf5': 'o', '\\xf6': 'o', '\\xf8': 'o',\n '\\xd9': 'U', '\\xda': 'U', '\\xdb': 'U', '\\xdc': 'U',\n '\\xf9': 'u', '\\xfa': 'u', '\\xfb': 'u', '\\xfc': 'u',\n '\\xdd': 'Y', '\\xfd': 'y', '\\xff': 'y',\n '\\xc6': 'Ae', '\\xe6': 'ae',\n '\\xde': 'Th', '\\xfe': 'th',\n '\\xdf': 'ss',\n // Latin Extended-A block.\n '\\u0100': 'A', '\\u0102': 'A', '\\u0104': 'A',\n '\\u0101': 'a', '\\u0103': 'a', '\\u0105': 'a',\n '\\u0106': 'C', '\\u0108': 'C', '\\u010a': 'C', '\\u010c': 'C',\n '\\u0107': 'c', '\\u0109': 'c', '\\u010b': 'c', '\\u010d': 'c',\n '\\u010e': 'D', '\\u0110': 'D', '\\u010f': 'd', '\\u0111': 'd',\n '\\u0112': 'E', '\\u0114': 'E', '\\u0116': 'E', '\\u0118': 'E', '\\u011a': 'E',\n '\\u0113': 'e', '\\u0115': 'e', '\\u0117': 'e', '\\u0119': 'e', '\\u011b': 'e',\n '\\u011c': 'G', '\\u011e': 'G', '\\u0120': 'G', '\\u0122': 'G',\n '\\u011d': 'g', '\\u011f': 'g', '\\u0121': 'g', '\\u0123': 'g',\n '\\u0124': 'H', '\\u0126': 'H', '\\u0125': 'h', '\\u0127': 'h',\n '\\u0128': 'I', '\\u012a': 'I', '\\u012c': 'I', '\\u012e': 'I', '\\u0130': 'I',\n '\\u0129': 'i', '\\u012b': 'i', '\\u012d': 'i', '\\u012f': 'i', '\\u0131': 'i',\n '\\u0134': 'J', '\\u0135': 'j',\n '\\u0136': 'K', '\\u0137': 'k', '\\u0138': 'k',\n '\\u0139': 'L', '\\u013b': 'L', '\\u013d': 'L', '\\u013f': 'L', '\\u0141': 'L',\n '\\u013a': 'l', '\\u013c': 'l', '\\u013e': 'l', '\\u0140': 'l', '\\u0142': 'l',\n '\\u0143': 'N', '\\u0145': 'N', '\\u0147': 'N', '\\u014a': 'N',\n '\\u0144': 'n', '\\u0146': 'n', '\\u0148': 'n', '\\u014b': 'n',\n '\\u014c': 'O', '\\u014e': 'O', '\\u0150': 'O',\n '\\u014d': 'o', '\\u014f': 'o', '\\u0151': 'o',\n '\\u0154': 'R', '\\u0156': 'R', '\\u0158': 'R',\n '\\u0155': 'r', '\\u0157': 'r', '\\u0159': 'r',\n '\\u015a': 'S', '\\u015c': 'S', '\\u015e': 'S', '\\u0160': 'S',\n '\\u015b': 's', '\\u015d': 's', '\\u015f': 's', '\\u0161': 's',\n '\\u0162': 'T', '\\u0164': 'T', '\\u0166': 'T',\n '\\u0163': 't', '\\u0165': 't', '\\u0167': 't',\n '\\u0168': 'U', '\\u016a': 'U', '\\u016c': 'U', '\\u016e': 'U', '\\u0170': 'U', '\\u0172': 'U',\n '\\u0169': 'u', '\\u016b': 'u', '\\u016d': 'u', '\\u016f': 'u', '\\u0171': 'u', '\\u0173': 'u',\n '\\u0174': 'W', '\\u0175': 'w',\n '\\u0176': 'Y', '\\u0177': 'y', '\\u0178': 'Y',\n '\\u0179': 'Z', '\\u017b': 'Z', '\\u017d': 'Z',\n '\\u017a': 'z', '\\u017c': 'z', '\\u017e': 'z',\n '\\u0132': 'IJ', '\\u0133': 'ij',\n '\\u0152': 'Oe', '\\u0153': 'oe',\n '\\u0149': \"'n\", '\\u017f': 's'\n };\n\n /** Used to map characters to HTML entities. */\n var htmlEscapes = {\n '&': '&',\n '<': '<',\n '>': '>',\n '\"': '"',\n \"'\": '''\n };\n\n /** Used to map HTML entities to characters. */\n var htmlUnescapes = {\n '&': '&',\n '<': '<',\n '>': '>',\n '"': '\"',\n ''': \"'\"\n };\n\n /** Used to escape characters for inclusion in compiled string literals. */\n var stringEscapes = {\n '\\\\': '\\\\',\n \"'\": \"'\",\n '\\n': 'n',\n '\\r': 'r',\n '\\u2028': 'u2028',\n '\\u2029': 'u2029'\n };\n\n /** Built-in method references without a dependency on `root`. */\n var freeParseFloat = parseFloat,\n freeParseInt = parseInt;\n\n /** Detect free variable `global` from Node.js. */\n var freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\n /** Detect free variable `self`. */\n var freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n /** Used as a reference to the global object. */\n var root = freeGlobal || freeSelf || Function('return this')();\n\n /** Detect free variable `exports`. */\n var freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n /** Detect free variable `module`. */\n var freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n /** Detect the popular CommonJS extension `module.exports`. */\n var moduleExports = freeModule && freeModule.exports === freeExports;\n\n /** Detect free variable `process` from Node.js. */\n var freeProcess = moduleExports && freeGlobal.process;\n\n /** Used to access faster Node.js helpers. */\n var nodeUtil = (function() {\n try {\n // Use `util.types` for Node.js 10+.\n var types = freeModule && freeModule.require && freeModule.require('util').types;\n\n if (types) {\n return types;\n }\n\n // Legacy `process.binding('util')` for Node.js < 10.\n return freeProcess && freeProcess.binding && freeProcess.binding('util');\n } catch (e) {}\n }());\n\n /* Node.js helper references. */\n var nodeIsArrayBuffer = nodeUtil && nodeUtil.isArrayBuffer,\n nodeIsDate = nodeUtil && nodeUtil.isDate,\n nodeIsMap = nodeUtil && nodeUtil.isMap,\n nodeIsRegExp = nodeUtil && nodeUtil.isRegExp,\n nodeIsSet = nodeUtil && nodeUtil.isSet,\n nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray;\n\n /*--------------------------------------------------------------------------*/\n\n /**\n * A faster alternative to `Function#apply`, this function invokes `func`\n * with the `this` binding of `thisArg` and the arguments of `args`.\n *\n * @private\n * @param {Function} func The function to invoke.\n * @param {*} thisArg The `this` binding of `func`.\n * @param {Array} args The arguments to invoke `func` with.\n * @returns {*} Returns the result of `func`.\n */\n function apply(func, thisArg, args) {\n switch (args.length) {\n case 0: return func.call(thisArg);\n case 1: return func.call(thisArg, args[0]);\n case 2: return func.call(thisArg, args[0], args[1]);\n case 3: return func.call(thisArg, args[0], args[1], args[2]);\n }\n return func.apply(thisArg, args);\n }\n\n /**\n * A specialized version of `baseAggregator` for arrays.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} setter The function to set `accumulator` values.\n * @param {Function} iteratee The iteratee to transform keys.\n * @param {Object} accumulator The initial aggregated object.\n * @returns {Function} Returns `accumulator`.\n */\n function arrayAggregator(array, setter, iteratee, accumulator) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n var value = array[index];\n setter(accumulator, value, iteratee(value), array);\n }\n return accumulator;\n }\n\n /**\n * A specialized version of `_.forEach` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns `array`.\n */\n function arrayEach(array, iteratee) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (iteratee(array[index], index, array) === false) {\n break;\n }\n }\n return array;\n }\n\n /**\n * A specialized version of `_.forEachRight` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns `array`.\n */\n function arrayEachRight(array, iteratee) {\n var length = array == null ? 0 : array.length;\n\n while (length--) {\n if (iteratee(array[length], length, array) === false) {\n break;\n }\n }\n return array;\n }\n\n /**\n * A specialized version of `_.every` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {boolean} Returns `true` if all elements pass the predicate check,\n * else `false`.\n */\n function arrayEvery(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (!predicate(array[index], index, array)) {\n return false;\n }\n }\n return true;\n }\n\n /**\n * A specialized version of `_.filter` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n */\n function arrayFilter(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length,\n resIndex = 0,\n result = [];\n\n while (++index < length) {\n var value = array[index];\n if (predicate(value, index, array)) {\n result[resIndex++] = value;\n }\n }\n return result;\n }\n\n /**\n * A specialized version of `_.includes` for arrays without support for\n * specifying an index to search from.\n *\n * @private\n * @param {Array} [array] The array to inspect.\n * @param {*} target The value to search for.\n * @returns {boolean} Returns `true` if `target` is found, else `false`.\n */\n function arrayIncludes(array, value) {\n var length = array == null ? 0 : array.length;\n return !!length && baseIndexOf(array, value, 0) > -1;\n }\n\n /**\n * This function is like `arrayIncludes` except that it accepts a comparator.\n *\n * @private\n * @param {Array} [array] The array to inspect.\n * @param {*} target The value to search for.\n * @param {Function} comparator The comparator invoked per element.\n * @returns {boolean} Returns `true` if `target` is found, else `false`.\n */\n function arrayIncludesWith(array, value, comparator) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (comparator(value, array[index])) {\n return true;\n }\n }\n return false;\n }\n\n /**\n * A specialized version of `_.map` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n */\n function arrayMap(array, iteratee) {\n var index = -1,\n length = array == null ? 0 : array.length,\n result = Array(length);\n\n while (++index < length) {\n result[index] = iteratee(array[index], index, array);\n }\n return result;\n }\n\n /**\n * Appends the elements of `values` to `array`.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {Array} values The values to append.\n * @returns {Array} Returns `array`.\n */\n function arrayPush(array, values) {\n var index = -1,\n length = values.length,\n offset = array.length;\n\n while (++index < length) {\n array[offset + index] = values[index];\n }\n return array;\n }\n\n /**\n * A specialized version of `_.reduce` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {*} [accumulator] The initial value.\n * @param {boolean} [initAccum] Specify using the first element of `array` as\n * the initial value.\n * @returns {*} Returns the accumulated value.\n */\n function arrayReduce(array, iteratee, accumulator, initAccum) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n if (initAccum && length) {\n accumulator = array[++index];\n }\n while (++index < length) {\n accumulator = iteratee(accumulator, array[index], index, array);\n }\n return accumulator;\n }\n\n /**\n * A specialized version of `_.reduceRight` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {*} [accumulator] The initial value.\n * @param {boolean} [initAccum] Specify using the last element of `array` as\n * the initial value.\n * @returns {*} Returns the accumulated value.\n */\n function arrayReduceRight(array, iteratee, accumulator, initAccum) {\n var length = array == null ? 0 : array.length;\n if (initAccum && length) {\n accumulator = array[--length];\n }\n while (length--) {\n accumulator = iteratee(accumulator, array[length], length, array);\n }\n return accumulator;\n }\n\n /**\n * A specialized version of `_.some` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {boolean} Returns `true` if any element passes the predicate check,\n * else `false`.\n */\n function arraySome(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (predicate(array[index], index, array)) {\n return true;\n }\n }\n return false;\n }\n\n /**\n * Gets the size of an ASCII `string`.\n *\n * @private\n * @param {string} string The string inspect.\n * @returns {number} Returns the string size.\n */\n var asciiSize = baseProperty('length');\n\n /**\n * Converts an ASCII `string` to an array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the converted array.\n */\n function asciiToArray(string) {\n return string.split('');\n }\n\n /**\n * Splits an ASCII `string` into an array of its words.\n *\n * @private\n * @param {string} The string to inspect.\n * @returns {Array} Returns the words of `string`.\n */\n function asciiWords(string) {\n return string.match(reAsciiWord) || [];\n }\n\n /**\n * The base implementation of methods like `_.findKey` and `_.findLastKey`,\n * without support for iteratee shorthands, which iterates over `collection`\n * using `eachFunc`.\n *\n * @private\n * @param {Array|Object} collection The collection to inspect.\n * @param {Function} predicate The function invoked per iteration.\n * @param {Function} eachFunc The function to iterate over `collection`.\n * @returns {*} Returns the found element or its key, else `undefined`.\n */\n function baseFindKey(collection, predicate, eachFunc) {\n var result;\n eachFunc(collection, function(value, key, collection) {\n if (predicate(value, key, collection)) {\n result = key;\n return false;\n }\n });\n return result;\n }\n\n /**\n * The base implementation of `_.findIndex` and `_.findLastIndex` without\n * support for iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Function} predicate The function invoked per iteration.\n * @param {number} fromIndex The index to search from.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\n function baseFindIndex(array, predicate, fromIndex, fromRight) {\n var length = array.length,\n index = fromIndex + (fromRight ? 1 : -1);\n\n while ((fromRight ? index-- : ++index < length)) {\n if (predicate(array[index], index, array)) {\n return index;\n }\n }\n return -1;\n }\n\n /**\n * The base implementation of `_.indexOf` without `fromIndex` bounds checks.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} fromIndex The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\n function baseIndexOf(array, value, fromIndex) {\n return value === value\n ? strictIndexOf(array, value, fromIndex)\n : baseFindIndex(array, baseIsNaN, fromIndex);\n }\n\n /**\n * This function is like `baseIndexOf` except that it accepts a comparator.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} fromIndex The index to search from.\n * @param {Function} comparator The comparator invoked per element.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\n function baseIndexOfWith(array, value, fromIndex, comparator) {\n var index = fromIndex - 1,\n length = array.length;\n\n while (++index < length) {\n if (comparator(array[index], value)) {\n return index;\n }\n }\n return -1;\n }\n\n /**\n * The base implementation of `_.isNaN` without support for number objects.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is `NaN`, else `false`.\n */\n function baseIsNaN(value) {\n return value !== value;\n }\n\n /**\n * The base implementation of `_.mean` and `_.meanBy` without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {number} Returns the mean.\n */\n function baseMean(array, iteratee) {\n var length = array == null ? 0 : array.length;\n return length ? (baseSum(array, iteratee) / length) : NAN;\n }\n\n /**\n * The base implementation of `_.property` without support for deep paths.\n *\n * @private\n * @param {string} key The key of the property to get.\n * @returns {Function} Returns the new accessor function.\n */\n function baseProperty(key) {\n return function(object) {\n return object == null ? undefined : object[key];\n };\n }\n\n /**\n * The base implementation of `_.propertyOf` without support for deep paths.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Function} Returns the new accessor function.\n */\n function basePropertyOf(object) {\n return function(key) {\n return object == null ? undefined : object[key];\n };\n }\n\n /**\n * The base implementation of `_.reduce` and `_.reduceRight`, without support\n * for iteratee shorthands, which iterates over `collection` using `eachFunc`.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {*} accumulator The initial value.\n * @param {boolean} initAccum Specify using the first or last element of\n * `collection` as the initial value.\n * @param {Function} eachFunc The function to iterate over `collection`.\n * @returns {*} Returns the accumulated value.\n */\n function baseReduce(collection, iteratee, accumulator, initAccum, eachFunc) {\n eachFunc(collection, function(value, index, collection) {\n accumulator = initAccum\n ? (initAccum = false, value)\n : iteratee(accumulator, value, index, collection);\n });\n return accumulator;\n }\n\n /**\n * The base implementation of `_.sortBy` which uses `comparer` to define the\n * sort order of `array` and replaces criteria objects with their corresponding\n * values.\n *\n * @private\n * @param {Array} array The array to sort.\n * @param {Function} comparer The function to define sort order.\n * @returns {Array} Returns `array`.\n */\n function baseSortBy(array, comparer) {\n var length = array.length;\n\n array.sort(comparer);\n while (length--) {\n array[length] = array[length].value;\n }\n return array;\n }\n\n /**\n * The base implementation of `_.sum` and `_.sumBy` without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {number} Returns the sum.\n */\n function baseSum(array, iteratee) {\n var result,\n index = -1,\n length = array.length;\n\n while (++index < length) {\n var current = iteratee(array[index]);\n if (current !== undefined) {\n result = result === undefined ? current : (result + current);\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `_.times` without support for iteratee shorthands\n * or max array length checks.\n *\n * @private\n * @param {number} n The number of times to invoke `iteratee`.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the array of results.\n */\n function baseTimes(n, iteratee) {\n var index = -1,\n result = Array(n);\n\n while (++index < n) {\n result[index] = iteratee(index);\n }\n return result;\n }\n\n /**\n * The base implementation of `_.toPairs` and `_.toPairsIn` which creates an array\n * of key-value pairs for `object` corresponding to the property names of `props`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array} props The property names to get values for.\n * @returns {Object} Returns the key-value pairs.\n */\n function baseToPairs(object, props) {\n return arrayMap(props, function(key) {\n return [key, object[key]];\n });\n }\n\n /**\n * The base implementation of `_.trim`.\n *\n * @private\n * @param {string} string The string to trim.\n * @returns {string} Returns the trimmed string.\n */\n function baseTrim(string) {\n return string\n ? string.slice(0, trimmedEndIndex(string) + 1).replace(reTrimStart, '')\n : string;\n }\n\n /**\n * The base implementation of `_.unary` without support for storing metadata.\n *\n * @private\n * @param {Function} func The function to cap arguments for.\n * @returns {Function} Returns the new capped function.\n */\n function baseUnary(func) {\n return function(value) {\n return func(value);\n };\n }\n\n /**\n * The base implementation of `_.values` and `_.valuesIn` which creates an\n * array of `object` property values corresponding to the property names\n * of `props`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array} props The property names to get values for.\n * @returns {Object} Returns the array of property values.\n */\n function baseValues(object, props) {\n return arrayMap(props, function(key) {\n return object[key];\n });\n }\n\n /**\n * Checks if a `cache` value for `key` exists.\n *\n * @private\n * @param {Object} cache The cache to query.\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\n function cacheHas(cache, key) {\n return cache.has(key);\n }\n\n /**\n * Used by `_.trim` and `_.trimStart` to get the index of the first string symbol\n * that is not found in the character symbols.\n *\n * @private\n * @param {Array} strSymbols The string symbols to inspect.\n * @param {Array} chrSymbols The character symbols to find.\n * @returns {number} Returns the index of the first unmatched string symbol.\n */\n function charsStartIndex(strSymbols, chrSymbols) {\n var index = -1,\n length = strSymbols.length;\n\n while (++index < length && baseIndexOf(chrSymbols, strSymbols[index], 0) > -1) {}\n return index;\n }\n\n /**\n * Used by `_.trim` and `_.trimEnd` to get the index of the last string symbol\n * that is not found in the character symbols.\n *\n * @private\n * @param {Array} strSymbols The string symbols to inspect.\n * @param {Array} chrSymbols The character symbols to find.\n * @returns {number} Returns the index of the last unmatched string symbol.\n */\n function charsEndIndex(strSymbols, chrSymbols) {\n var index = strSymbols.length;\n\n while (index-- && baseIndexOf(chrSymbols, strSymbols[index], 0) > -1) {}\n return index;\n }\n\n /**\n * Gets the number of `placeholder` occurrences in `array`.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} placeholder The placeholder to search for.\n * @returns {number} Returns the placeholder count.\n */\n function countHolders(array, placeholder) {\n var length = array.length,\n result = 0;\n\n while (length--) {\n if (array[length] === placeholder) {\n ++result;\n }\n }\n return result;\n }\n\n /**\n * Used by `_.deburr` to convert Latin-1 Supplement and Latin Extended-A\n * letters to basic Latin letters.\n *\n * @private\n * @param {string} letter The matched letter to deburr.\n * @returns {string} Returns the deburred letter.\n */\n var deburrLetter = basePropertyOf(deburredLetters);\n\n /**\n * Used by `_.escape` to convert characters to HTML entities.\n *\n * @private\n * @param {string} chr The matched character to escape.\n * @returns {string} Returns the escaped character.\n */\n var escapeHtmlChar = basePropertyOf(htmlEscapes);\n\n /**\n * Used by `_.template` to escape characters for inclusion in compiled string literals.\n *\n * @private\n * @param {string} chr The matched character to escape.\n * @returns {string} Returns the escaped character.\n */\n function escapeStringChar(chr) {\n return '\\\\' + stringEscapes[chr];\n }\n\n /**\n * Gets the value at `key` of `object`.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\n function getValue(object, key) {\n return object == null ? undefined : object[key];\n }\n\n /**\n * Checks if `string` contains Unicode symbols.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {boolean} Returns `true` if a symbol is found, else `false`.\n */\n function hasUnicode(string) {\n return reHasUnicode.test(string);\n }\n\n /**\n * Checks if `string` contains a word composed of Unicode symbols.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {boolean} Returns `true` if a word is found, else `false`.\n */\n function hasUnicodeWord(string) {\n return reHasUnicodeWord.test(string);\n }\n\n /**\n * Converts `iterator` to an array.\n *\n * @private\n * @param {Object} iterator The iterator to convert.\n * @returns {Array} Returns the converted array.\n */\n function iteratorToArray(iterator) {\n var data,\n result = [];\n\n while (!(data = iterator.next()).done) {\n result.push(data.value);\n }\n return result;\n }\n\n /**\n * Converts `map` to its key-value pairs.\n *\n * @private\n * @param {Object} map The map to convert.\n * @returns {Array} Returns the key-value pairs.\n */\n function mapToArray(map) {\n var index = -1,\n result = Array(map.size);\n\n map.forEach(function(value, key) {\n result[++index] = [key, value];\n });\n return result;\n }\n\n /**\n * Creates a unary function that invokes `func` with its argument transformed.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {Function} transform The argument transform.\n * @returns {Function} Returns the new function.\n */\n function overArg(func, transform) {\n return function(arg) {\n return func(transform(arg));\n };\n }\n\n /**\n * Replaces all `placeholder` elements in `array` with an internal placeholder\n * and returns an array of their indexes.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {*} placeholder The placeholder to replace.\n * @returns {Array} Returns the new array of placeholder indexes.\n */\n function replaceHolders(array, placeholder) {\n var index = -1,\n length = array.length,\n resIndex = 0,\n result = [];\n\n while (++index < length) {\n var value = array[index];\n if (value === placeholder || value === PLACEHOLDER) {\n array[index] = PLACEHOLDER;\n result[resIndex++] = index;\n }\n }\n return result;\n }\n\n /**\n * Converts `set` to an array of its values.\n *\n * @private\n * @param {Object} set The set to convert.\n * @returns {Array} Returns the values.\n */\n function setToArray(set) {\n var index = -1,\n result = Array(set.size);\n\n set.forEach(function(value) {\n result[++index] = value;\n });\n return result;\n }\n\n /**\n * Converts `set` to its value-value pairs.\n *\n * @private\n * @param {Object} set The set to convert.\n * @returns {Array} Returns the value-value pairs.\n */\n function setToPairs(set) {\n var index = -1,\n result = Array(set.size);\n\n set.forEach(function(value) {\n result[++index] = [value, value];\n });\n return result;\n }\n\n /**\n * A specialized version of `_.indexOf` which performs strict equality\n * comparisons of values, i.e. `===`.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} fromIndex The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\n function strictIndexOf(array, value, fromIndex) {\n var index = fromIndex - 1,\n length = array.length;\n\n while (++index < length) {\n if (array[index] === value) {\n return index;\n }\n }\n return -1;\n }\n\n /**\n * A specialized version of `_.lastIndexOf` which performs strict equality\n * comparisons of values, i.e. `===`.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} fromIndex The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\n function strictLastIndexOf(array, value, fromIndex) {\n var index = fromIndex + 1;\n while (index--) {\n if (array[index] === value) {\n return index;\n }\n }\n return index;\n }\n\n /**\n * Gets the number of symbols in `string`.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {number} Returns the string size.\n */\n function stringSize(string) {\n return hasUnicode(string)\n ? unicodeSize(string)\n : asciiSize(string);\n }\n\n /**\n * Converts `string` to an array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the converted array.\n */\n function stringToArray(string) {\n return hasUnicode(string)\n ? unicodeToArray(string)\n : asciiToArray(string);\n }\n\n /**\n * Used by `_.trim` and `_.trimEnd` to get the index of the last non-whitespace\n * character of `string`.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {number} Returns the index of the last non-whitespace character.\n */\n function trimmedEndIndex(string) {\n var index = string.length;\n\n while (index-- && reWhitespace.test(string.charAt(index))) {}\n return index;\n }\n\n /**\n * Used by `_.unescape` to convert HTML entities to characters.\n *\n * @private\n * @param {string} chr The matched character to unescape.\n * @returns {string} Returns the unescaped character.\n */\n var unescapeHtmlChar = basePropertyOf(htmlUnescapes);\n\n /**\n * Gets the size of a Unicode `string`.\n *\n * @private\n * @param {string} string The string inspect.\n * @returns {number} Returns the string size.\n */\n function unicodeSize(string) {\n var result = reUnicode.lastIndex = 0;\n while (reUnicode.test(string)) {\n ++result;\n }\n return result;\n }\n\n /**\n * Converts a Unicode `string` to an array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the converted array.\n */\n function unicodeToArray(string) {\n return string.match(reUnicode) || [];\n }\n\n /**\n * Splits a Unicode `string` into an array of its words.\n *\n * @private\n * @param {string} The string to inspect.\n * @returns {Array} Returns the words of `string`.\n */\n function unicodeWords(string) {\n return string.match(reUnicodeWord) || [];\n }\n\n /*--------------------------------------------------------------------------*/\n\n /**\n * Create a new pristine `lodash` function using the `context` object.\n *\n * @static\n * @memberOf _\n * @since 1.1.0\n * @category Util\n * @param {Object} [context=root] The context object.\n * @returns {Function} Returns a new `lodash` function.\n * @example\n *\n * _.mixin({ 'foo': _.constant('foo') });\n *\n * var lodash = _.runInContext();\n * lodash.mixin({ 'bar': lodash.constant('bar') });\n *\n * _.isFunction(_.foo);\n * // => true\n * _.isFunction(_.bar);\n * // => false\n *\n * lodash.isFunction(lodash.foo);\n * // => false\n * lodash.isFunction(lodash.bar);\n * // => true\n *\n * // Create a suped-up `defer` in Node.js.\n * var defer = _.runInContext({ 'setTimeout': setImmediate }).defer;\n */\n var runInContext = (function runInContext(context) {\n context = context == null ? root : _.defaults(root.Object(), context, _.pick(root, contextProps));\n\n /** Built-in constructor references. */\n var Array = context.Array,\n Date = context.Date,\n Error = context.Error,\n Function = context.Function,\n Math = context.Math,\n Object = context.Object,\n RegExp = context.RegExp,\n String = context.String,\n TypeError = context.TypeError;\n\n /** Used for built-in method references. */\n var arrayProto = Array.prototype,\n funcProto = Function.prototype,\n objectProto = Object.prototype;\n\n /** Used to detect overreaching core-js shims. */\n var coreJsData = context['__core-js_shared__'];\n\n /** Used to resolve the decompiled source of functions. */\n var funcToString = funcProto.toString;\n\n /** Used to check objects for own properties. */\n var hasOwnProperty = objectProto.hasOwnProperty;\n\n /** Used to generate unique IDs. */\n var idCounter = 0;\n\n /** Used to detect methods masquerading as native. */\n var maskSrcKey = (function() {\n var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');\n return uid ? ('Symbol(src)_1.' + uid) : '';\n }());\n\n /**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\n var nativeObjectToString = objectProto.toString;\n\n /** Used to infer the `Object` constructor. */\n var objectCtorString = funcToString.call(Object);\n\n /** Used to restore the original `_` reference in `_.noConflict`. */\n var oldDash = root._;\n\n /** Used to detect if a method is native. */\n var reIsNative = RegExp('^' +\n funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\\\$&')\n .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$'\n );\n\n /** Built-in value references. */\n var Buffer = moduleExports ? context.Buffer : undefined,\n Symbol = context.Symbol,\n Uint8Array = context.Uint8Array,\n allocUnsafe = Buffer ? Buffer.allocUnsafe : undefined,\n getPrototype = overArg(Object.getPrototypeOf, Object),\n objectCreate = Object.create,\n propertyIsEnumerable = objectProto.propertyIsEnumerable,\n splice = arrayProto.splice,\n spreadableSymbol = Symbol ? Symbol.isConcatSpreadable : undefined,\n symIterator = Symbol ? Symbol.iterator : undefined,\n symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n var defineProperty = (function() {\n try {\n var func = getNative(Object, 'defineProperty');\n func({}, '', {});\n return func;\n } catch (e) {}\n }());\n\n /** Mocked built-ins. */\n var ctxClearTimeout = context.clearTimeout !== root.clearTimeout && context.clearTimeout,\n ctxNow = Date && Date.now !== root.Date.now && Date.now,\n ctxSetTimeout = context.setTimeout !== root.setTimeout && context.setTimeout;\n\n /* Built-in method references for those with the same name as other `lodash` methods. */\n var nativeCeil = Math.ceil,\n nativeFloor = Math.floor,\n nativeGetSymbols = Object.getOwnPropertySymbols,\n nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined,\n nativeIsFinite = context.isFinite,\n nativeJoin = arrayProto.join,\n nativeKeys = overArg(Object.keys, Object),\n nativeMax = Math.max,\n nativeMin = Math.min,\n nativeNow = Date.now,\n nativeParseInt = context.parseInt,\n nativeRandom = Math.random,\n nativeReverse = arrayProto.reverse;\n\n /* Built-in method references that are verified to be native. */\n var DataView = getNative(context, 'DataView'),\n Map = getNative(context, 'Map'),\n Promise = getNative(context, 'Promise'),\n Set = getNative(context, 'Set'),\n WeakMap = getNative(context, 'WeakMap'),\n nativeCreate = getNative(Object, 'create');\n\n /** Used to store function metadata. */\n var metaMap = WeakMap && new WeakMap;\n\n /** Used to lookup unminified function names. */\n var realNames = {};\n\n /** Used to detect maps, sets, and weakmaps. */\n var dataViewCtorString = toSource(DataView),\n mapCtorString = toSource(Map),\n promiseCtorString = toSource(Promise),\n setCtorString = toSource(Set),\n weakMapCtorString = toSource(WeakMap);\n\n /** Used to convert symbols to primitives and strings. */\n var symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolValueOf = symbolProto ? symbolProto.valueOf : undefined,\n symbolToString = symbolProto ? symbolProto.toString : undefined;\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates a `lodash` object which wraps `value` to enable implicit method\n * chain sequences. Methods that operate on and return arrays, collections,\n * and functions can be chained together. Methods that retrieve a single value\n * or may return a primitive value will automatically end the chain sequence\n * and return the unwrapped value. Otherwise, the value must be unwrapped\n * with `_#value`.\n *\n * Explicit chain sequences, which must be unwrapped with `_#value`, may be\n * enabled using `_.chain`.\n *\n * The execution of chained methods is lazy, that is, it's deferred until\n * `_#value` is implicitly or explicitly called.\n *\n * Lazy evaluation allows several methods to support shortcut fusion.\n * Shortcut fusion is an optimization to merge iteratee calls; this avoids\n * the creation of intermediate arrays and can greatly reduce the number of\n * iteratee executions. Sections of a chain sequence qualify for shortcut\n * fusion if the section is applied to an array and iteratees accept only\n * one argument. The heuristic for whether a section qualifies for shortcut\n * fusion is subject to change.\n *\n * Chaining is supported in custom builds as long as the `_#value` method is\n * directly or indirectly included in the build.\n *\n * In addition to lodash methods, wrappers have `Array` and `String` methods.\n *\n * The wrapper `Array` methods are:\n * `concat`, `join`, `pop`, `push`, `shift`, `sort`, `splice`, and `unshift`\n *\n * The wrapper `String` methods are:\n * `replace` and `split`\n *\n * The wrapper methods that support shortcut fusion are:\n * `at`, `compact`, `drop`, `dropRight`, `dropWhile`, `filter`, `find`,\n * `findLast`, `head`, `initial`, `last`, `map`, `reject`, `reverse`, `slice`,\n * `tail`, `take`, `takeRight`, `takeRightWhile`, `takeWhile`, and `toArray`\n *\n * The chainable wrapper methods are:\n * `after`, `ary`, `assign`, `assignIn`, `assignInWith`, `assignWith`, `at`,\n * `before`, `bind`, `bindAll`, `bindKey`, `castArray`, `chain`, `chunk`,\n * `commit`, `compact`, `concat`, `conforms`, `constant`, `countBy`, `create`,\n * `curry`, `debounce`, `defaults`, `defaultsDeep`, `defer`, `delay`,\n * `difference`, `differenceBy`, `differenceWith`, `drop`, `dropRight`,\n * `dropRightWhile`, `dropWhile`, `extend`, `extendWith`, `fill`, `filter`,\n * `flatMap`, `flatMapDeep`, `flatMapDepth`, `flatten`, `flattenDeep`,\n * `flattenDepth`, `flip`, `flow`, `flowRight`, `fromPairs`, `functions`,\n * `functionsIn`, `groupBy`, `initial`, `intersection`, `intersectionBy`,\n * `intersectionWith`, `invert`, `invertBy`, `invokeMap`, `iteratee`, `keyBy`,\n * `keys`, `keysIn`, `map`, `mapKeys`, `mapValues`, `matches`, `matchesProperty`,\n * `memoize`, `merge`, `mergeWith`, `method`, `methodOf`, `mixin`, `negate`,\n * `nthArg`, `omit`, `omitBy`, `once`, `orderBy`, `over`, `overArgs`,\n * `overEvery`, `overSome`, `partial`, `partialRight`, `partition`, `pick`,\n * `pickBy`, `plant`, `property`, `propertyOf`, `pull`, `pullAll`, `pullAllBy`,\n * `pullAllWith`, `pullAt`, `push`, `range`, `rangeRight`, `rearg`, `reject`,\n * `remove`, `rest`, `reverse`, `sampleSize`, `set`, `setWith`, `shuffle`,\n * `slice`, `sort`, `sortBy`, `splice`, `spread`, `tail`, `take`, `takeRight`,\n * `takeRightWhile`, `takeWhile`, `tap`, `throttle`, `thru`, `toArray`,\n * `toPairs`, `toPairsIn`, `toPath`, `toPlainObject`, `transform`, `unary`,\n * `union`, `unionBy`, `unionWith`, `uniq`, `uniqBy`, `uniqWith`, `unset`,\n * `unshift`, `unzip`, `unzipWith`, `update`, `updateWith`, `values`,\n * `valuesIn`, `without`, `wrap`, `xor`, `xorBy`, `xorWith`, `zip`,\n * `zipObject`, `zipObjectDeep`, and `zipWith`\n *\n * The wrapper methods that are **not** chainable by default are:\n * `add`, `attempt`, `camelCase`, `capitalize`, `ceil`, `clamp`, `clone`,\n * `cloneDeep`, `cloneDeepWith`, `cloneWith`, `conformsTo`, `deburr`,\n * `defaultTo`, `divide`, `each`, `eachRight`, `endsWith`, `eq`, `escape`,\n * `escapeRegExp`, `every`, `find`, `findIndex`, `findKey`, `findLast`,\n * `findLastIndex`, `findLastKey`, `first`, `floor`, `forEach`, `forEachRight`,\n * `forIn`, `forInRight`, `forOwn`, `forOwnRight`, `get`, `gt`, `gte`, `has`,\n * `hasIn`, `head`, `identity`, `includes`, `indexOf`, `inRange`, `invoke`,\n * `isArguments`, `isArray`, `isArrayBuffer`, `isArrayLike`, `isArrayLikeObject`,\n * `isBoolean`, `isBuffer`, `isDate`, `isElement`, `isEmpty`, `isEqual`,\n * `isEqualWith`, `isError`, `isFinite`, `isFunction`, `isInteger`, `isLength`,\n * `isMap`, `isMatch`, `isMatchWith`, `isNaN`, `isNative`, `isNil`, `isNull`,\n * `isNumber`, `isObject`, `isObjectLike`, `isPlainObject`, `isRegExp`,\n * `isSafeInteger`, `isSet`, `isString`, `isUndefined`, `isTypedArray`,\n * `isWeakMap`, `isWeakSet`, `join`, `kebabCase`, `last`, `lastIndexOf`,\n * `lowerCase`, `lowerFirst`, `lt`, `lte`, `max`, `maxBy`, `mean`, `meanBy`,\n * `min`, `minBy`, `multiply`, `noConflict`, `noop`, `now`, `nth`, `pad`,\n * `padEnd`, `padStart`, `parseInt`, `pop`, `random`, `reduce`, `reduceRight`,\n * `repeat`, `result`, `round`, `runInContext`, `sample`, `shift`, `size`,\n * `snakeCase`, `some`, `sortedIndex`, `sortedIndexBy`, `sortedLastIndex`,\n * `sortedLastIndexBy`, `startCase`, `startsWith`, `stubArray`, `stubFalse`,\n * `stubObject`, `stubString`, `stubTrue`, `subtract`, `sum`, `sumBy`,\n * `template`, `times`, `toFinite`, `toInteger`, `toJSON`, `toLength`,\n * `toLower`, `toNumber`, `toSafeInteger`, `toString`, `toUpper`, `trim`,\n * `trimEnd`, `trimStart`, `truncate`, `unescape`, `uniqueId`, `upperCase`,\n * `upperFirst`, `value`, and `words`\n *\n * @name _\n * @constructor\n * @category Seq\n * @param {*} value The value to wrap in a `lodash` instance.\n * @returns {Object} Returns the new `lodash` wrapper instance.\n * @example\n *\n * function square(n) {\n * return n * n;\n * }\n *\n * var wrapped = _([1, 2, 3]);\n *\n * // Returns an unwrapped value.\n * wrapped.reduce(_.add);\n * // => 6\n *\n * // Returns a wrapped value.\n * var squares = wrapped.map(square);\n *\n * _.isArray(squares);\n * // => false\n *\n * _.isArray(squares.value());\n * // => true\n */\n function lodash(value) {\n if (isObjectLike(value) && !isArray(value) && !(value instanceof LazyWrapper)) {\n if (value instanceof LodashWrapper) {\n return value;\n }\n if (hasOwnProperty.call(value, '__wrapped__')) {\n return wrapperClone(value);\n }\n }\n return new LodashWrapper(value);\n }\n\n /**\n * The base implementation of `_.create` without support for assigning\n * properties to the created object.\n *\n * @private\n * @param {Object} proto The object to inherit from.\n * @returns {Object} Returns the new object.\n */\n var baseCreate = (function() {\n function object() {}\n return function(proto) {\n if (!isObject(proto)) {\n return {};\n }\n if (objectCreate) {\n return objectCreate(proto);\n }\n object.prototype = proto;\n var result = new object;\n object.prototype = undefined;\n return result;\n };\n }());\n\n /**\n * The function whose prototype chain sequence wrappers inherit from.\n *\n * @private\n */\n function baseLodash() {\n // No operation performed.\n }\n\n /**\n * The base constructor for creating `lodash` wrapper objects.\n *\n * @private\n * @param {*} value The value to wrap.\n * @param {boolean} [chainAll] Enable explicit method chain sequences.\n */\n function LodashWrapper(value, chainAll) {\n this.__wrapped__ = value;\n this.__actions__ = [];\n this.__chain__ = !!chainAll;\n this.__index__ = 0;\n this.__values__ = undefined;\n }\n\n /**\n * By default, the template delimiters used by lodash are like those in\n * embedded Ruby (ERB) as well as ES2015 template strings. Change the\n * following template settings to use alternative delimiters.\n *\n * @static\n * @memberOf _\n * @type {Object}\n */\n lodash.templateSettings = {\n\n /**\n * Used to detect `data` property values to be HTML-escaped.\n *\n * @memberOf _.templateSettings\n * @type {RegExp}\n */\n 'escape': reEscape,\n\n /**\n * Used to detect code to be evaluated.\n *\n * @memberOf _.templateSettings\n * @type {RegExp}\n */\n 'evaluate': reEvaluate,\n\n /**\n * Used to detect `data` property values to inject.\n *\n * @memberOf _.templateSettings\n * @type {RegExp}\n */\n 'interpolate': reInterpolate,\n\n /**\n * Used to reference the data object in the template text.\n *\n * @memberOf _.templateSettings\n * @type {string}\n */\n 'variable': '',\n\n /**\n * Used to import variables into the compiled template.\n *\n * @memberOf _.templateSettings\n * @type {Object}\n */\n 'imports': {\n\n /**\n * A reference to the `lodash` function.\n *\n * @memberOf _.templateSettings.imports\n * @type {Function}\n */\n '_': lodash\n }\n };\n\n // Ensure wrappers are instances of `baseLodash`.\n lodash.prototype = baseLodash.prototype;\n lodash.prototype.constructor = lodash;\n\n LodashWrapper.prototype = baseCreate(baseLodash.prototype);\n LodashWrapper.prototype.constructor = LodashWrapper;\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates a lazy wrapper object which wraps `value` to enable lazy evaluation.\n *\n * @private\n * @constructor\n * @param {*} value The value to wrap.\n */\n function LazyWrapper(value) {\n this.__wrapped__ = value;\n this.__actions__ = [];\n this.__dir__ = 1;\n this.__filtered__ = false;\n this.__iteratees__ = [];\n this.__takeCount__ = MAX_ARRAY_LENGTH;\n this.__views__ = [];\n }\n\n /**\n * Creates a clone of the lazy wrapper object.\n *\n * @private\n * @name clone\n * @memberOf LazyWrapper\n * @returns {Object} Returns the cloned `LazyWrapper` object.\n */\n function lazyClone() {\n var result = new LazyWrapper(this.__wrapped__);\n result.__actions__ = copyArray(this.__actions__);\n result.__dir__ = this.__dir__;\n result.__filtered__ = this.__filtered__;\n result.__iteratees__ = copyArray(this.__iteratees__);\n result.__takeCount__ = this.__takeCount__;\n result.__views__ = copyArray(this.__views__);\n return result;\n }\n\n /**\n * Reverses the direction of lazy iteration.\n *\n * @private\n * @name reverse\n * @memberOf LazyWrapper\n * @returns {Object} Returns the new reversed `LazyWrapper` object.\n */\n function lazyReverse() {\n if (this.__filtered__) {\n var result = new LazyWrapper(this);\n result.__dir__ = -1;\n result.__filtered__ = true;\n } else {\n result = this.clone();\n result.__dir__ *= -1;\n }\n return result;\n }\n\n /**\n * Extracts the unwrapped value from its lazy wrapper.\n *\n * @private\n * @name value\n * @memberOf LazyWrapper\n * @returns {*} Returns the unwrapped value.\n */\n function lazyValue() {\n var array = this.__wrapped__.value(),\n dir = this.__dir__,\n isArr = isArray(array),\n isRight = dir < 0,\n arrLength = isArr ? array.length : 0,\n view = getView(0, arrLength, this.__views__),\n start = view.start,\n end = view.end,\n length = end - start,\n index = isRight ? end : (start - 1),\n iteratees = this.__iteratees__,\n iterLength = iteratees.length,\n resIndex = 0,\n takeCount = nativeMin(length, this.__takeCount__);\n\n if (!isArr || (!isRight && arrLength == length && takeCount == length)) {\n return baseWrapperValue(array, this.__actions__);\n }\n var result = [];\n\n outer:\n while (length-- && resIndex < takeCount) {\n index += dir;\n\n var iterIndex = -1,\n value = array[index];\n\n while (++iterIndex < iterLength) {\n var data = iteratees[iterIndex],\n iteratee = data.iteratee,\n type = data.type,\n computed = iteratee(value);\n\n if (type == LAZY_MAP_FLAG) {\n value = computed;\n } else if (!computed) {\n if (type == LAZY_FILTER_FLAG) {\n continue outer;\n } else {\n break outer;\n }\n }\n }\n result[resIndex++] = value;\n }\n return result;\n }\n\n // Ensure `LazyWrapper` is an instance of `baseLodash`.\n LazyWrapper.prototype = baseCreate(baseLodash.prototype);\n LazyWrapper.prototype.constructor = LazyWrapper;\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates a hash object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\n function Hash(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n }\n\n /**\n * Removes all key-value entries from the hash.\n *\n * @private\n * @name clear\n * @memberOf Hash\n */\n function hashClear() {\n this.__data__ = nativeCreate ? nativeCreate(null) : {};\n this.size = 0;\n }\n\n /**\n * Removes `key` and its value from the hash.\n *\n * @private\n * @name delete\n * @memberOf Hash\n * @param {Object} hash The hash to modify.\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\n function hashDelete(key) {\n var result = this.has(key) && delete this.__data__[key];\n this.size -= result ? 1 : 0;\n return result;\n }\n\n /**\n * Gets the hash value for `key`.\n *\n * @private\n * @name get\n * @memberOf Hash\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\n function hashGet(key) {\n var data = this.__data__;\n if (nativeCreate) {\n var result = data[key];\n return result === HASH_UNDEFINED ? undefined : result;\n }\n return hasOwnProperty.call(data, key) ? data[key] : undefined;\n }\n\n /**\n * Checks if a hash value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Hash\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\n function hashHas(key) {\n var data = this.__data__;\n return nativeCreate ? (data[key] !== undefined) : hasOwnProperty.call(data, key);\n }\n\n /**\n * Sets the hash `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Hash\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the hash instance.\n */\n function hashSet(key, value) {\n var data = this.__data__;\n this.size += this.has(key) ? 0 : 1;\n data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value;\n return this;\n }\n\n // Add methods to `Hash`.\n Hash.prototype.clear = hashClear;\n Hash.prototype['delete'] = hashDelete;\n Hash.prototype.get = hashGet;\n Hash.prototype.has = hashHas;\n Hash.prototype.set = hashSet;\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates an list cache object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\n function ListCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n }\n\n /**\n * Removes all key-value entries from the list cache.\n *\n * @private\n * @name clear\n * @memberOf ListCache\n */\n function listCacheClear() {\n this.__data__ = [];\n this.size = 0;\n }\n\n /**\n * Removes `key` and its value from the list cache.\n *\n * @private\n * @name delete\n * @memberOf ListCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\n function listCacheDelete(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n return false;\n }\n var lastIndex = data.length - 1;\n if (index == lastIndex) {\n data.pop();\n } else {\n splice.call(data, index, 1);\n }\n --this.size;\n return true;\n }\n\n /**\n * Gets the list cache value for `key`.\n *\n * @private\n * @name get\n * @memberOf ListCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\n function listCacheGet(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n return index < 0 ? undefined : data[index][1];\n }\n\n /**\n * Checks if a list cache value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf ListCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\n function listCacheHas(key) {\n return assocIndexOf(this.__data__, key) > -1;\n }\n\n /**\n * Sets the list cache `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf ListCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the list cache instance.\n */\n function listCacheSet(key, value) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n ++this.size;\n data.push([key, value]);\n } else {\n data[index][1] = value;\n }\n return this;\n }\n\n // Add methods to `ListCache`.\n ListCache.prototype.clear = listCacheClear;\n ListCache.prototype['delete'] = listCacheDelete;\n ListCache.prototype.get = listCacheGet;\n ListCache.prototype.has = listCacheHas;\n ListCache.prototype.set = listCacheSet;\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates a map cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\n function MapCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n }\n\n /**\n * Removes all key-value entries from the map.\n *\n * @private\n * @name clear\n * @memberOf MapCache\n */\n function mapCacheClear() {\n this.size = 0;\n this.__data__ = {\n 'hash': new Hash,\n 'map': new (Map || ListCache),\n 'string': new Hash\n };\n }\n\n /**\n * Removes `key` and its value from the map.\n *\n * @private\n * @name delete\n * @memberOf MapCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\n function mapCacheDelete(key) {\n var result = getMapData(this, key)['delete'](key);\n this.size -= result ? 1 : 0;\n return result;\n }\n\n /**\n * Gets the map value for `key`.\n *\n * @private\n * @name get\n * @memberOf MapCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\n function mapCacheGet(key) {\n return getMapData(this, key).get(key);\n }\n\n /**\n * Checks if a map value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf MapCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\n function mapCacheHas(key) {\n return getMapData(this, key).has(key);\n }\n\n /**\n * Sets the map `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf MapCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the map cache instance.\n */\n function mapCacheSet(key, value) {\n var data = getMapData(this, key),\n size = data.size;\n\n data.set(key, value);\n this.size += data.size == size ? 0 : 1;\n return this;\n }\n\n // Add methods to `MapCache`.\n MapCache.prototype.clear = mapCacheClear;\n MapCache.prototype['delete'] = mapCacheDelete;\n MapCache.prototype.get = mapCacheGet;\n MapCache.prototype.has = mapCacheHas;\n MapCache.prototype.set = mapCacheSet;\n\n /*------------------------------------------------------------------------*/\n\n /**\n *\n * Creates an array cache object to store unique values.\n *\n * @private\n * @constructor\n * @param {Array} [values] The values to cache.\n */\n function SetCache(values) {\n var index = -1,\n length = values == null ? 0 : values.length;\n\n this.__data__ = new MapCache;\n while (++index < length) {\n this.add(values[index]);\n }\n }\n\n /**\n * Adds `value` to the array cache.\n *\n * @private\n * @name add\n * @memberOf SetCache\n * @alias push\n * @param {*} value The value to cache.\n * @returns {Object} Returns the cache instance.\n */\n function setCacheAdd(value) {\n this.__data__.set(value, HASH_UNDEFINED);\n return this;\n }\n\n /**\n * Checks if `value` is in the array cache.\n *\n * @private\n * @name has\n * @memberOf SetCache\n * @param {*} value The value to search for.\n * @returns {number} Returns `true` if `value` is found, else `false`.\n */\n function setCacheHas(value) {\n return this.__data__.has(value);\n }\n\n // Add methods to `SetCache`.\n SetCache.prototype.add = SetCache.prototype.push = setCacheAdd;\n SetCache.prototype.has = setCacheHas;\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates a stack cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\n function Stack(entries) {\n var data = this.__data__ = new ListCache(entries);\n this.size = data.size;\n }\n\n /**\n * Removes all key-value entries from the stack.\n *\n * @private\n * @name clear\n * @memberOf Stack\n */\n function stackClear() {\n this.__data__ = new ListCache;\n this.size = 0;\n }\n\n /**\n * Removes `key` and its value from the stack.\n *\n * @private\n * @name delete\n * @memberOf Stack\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\n function stackDelete(key) {\n var data = this.__data__,\n result = data['delete'](key);\n\n this.size = data.size;\n return result;\n }\n\n /**\n * Gets the stack value for `key`.\n *\n * @private\n * @name get\n * @memberOf Stack\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\n function stackGet(key) {\n return this.__data__.get(key);\n }\n\n /**\n * Checks if a stack value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Stack\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\n function stackHas(key) {\n return this.__data__.has(key);\n }\n\n /**\n * Sets the stack `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Stack\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the stack cache instance.\n */\n function stackSet(key, value) {\n var data = this.__data__;\n if (data instanceof ListCache) {\n var pairs = data.__data__;\n if (!Map || (pairs.length < LARGE_ARRAY_SIZE - 1)) {\n pairs.push([key, value]);\n this.size = ++data.size;\n return this;\n }\n data = this.__data__ = new MapCache(pairs);\n }\n data.set(key, value);\n this.size = data.size;\n return this;\n }\n\n // Add methods to `Stack`.\n Stack.prototype.clear = stackClear;\n Stack.prototype['delete'] = stackDelete;\n Stack.prototype.get = stackGet;\n Stack.prototype.has = stackHas;\n Stack.prototype.set = stackSet;\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates an array of the enumerable property names of the array-like `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @param {boolean} inherited Specify returning inherited property names.\n * @returns {Array} Returns the array of property names.\n */\n function arrayLikeKeys(value, inherited) {\n var isArr = isArray(value),\n isArg = !isArr && isArguments(value),\n isBuff = !isArr && !isArg && isBuffer(value),\n isType = !isArr && !isArg && !isBuff && isTypedArray(value),\n skipIndexes = isArr || isArg || isBuff || isType,\n result = skipIndexes ? baseTimes(value.length, String) : [],\n length = result.length;\n\n for (var key in value) {\n if ((inherited || hasOwnProperty.call(value, key)) &&\n !(skipIndexes && (\n // Safari 9 has enumerable `arguments.length` in strict mode.\n key == 'length' ||\n // Node.js 0.10 has enumerable non-index properties on buffers.\n (isBuff && (key == 'offset' || key == 'parent')) ||\n // PhantomJS 2 has enumerable non-index properties on typed arrays.\n (isType && (key == 'buffer' || key == 'byteLength' || key == 'byteOffset')) ||\n // Skip index properties.\n isIndex(key, length)\n ))) {\n result.push(key);\n }\n }\n return result;\n }\n\n /**\n * A specialized version of `_.sample` for arrays.\n *\n * @private\n * @param {Array} array The array to sample.\n * @returns {*} Returns the random element.\n */\n function arraySample(array) {\n var length = array.length;\n return length ? array[baseRandom(0, length - 1)] : undefined;\n }\n\n /**\n * A specialized version of `_.sampleSize` for arrays.\n *\n * @private\n * @param {Array} array The array to sample.\n * @param {number} n The number of elements to sample.\n * @returns {Array} Returns the random elements.\n */\n function arraySampleSize(array, n) {\n return shuffleSelf(copyArray(array), baseClamp(n, 0, array.length));\n }\n\n /**\n * A specialized version of `_.shuffle` for arrays.\n *\n * @private\n * @param {Array} array The array to shuffle.\n * @returns {Array} Returns the new shuffled array.\n */\n function arrayShuffle(array) {\n return shuffleSelf(copyArray(array));\n }\n\n /**\n * This function is like `assignValue` except that it doesn't assign\n * `undefined` values.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\n function assignMergeValue(object, key, value) {\n if ((value !== undefined && !eq(object[key], value)) ||\n (value === undefined && !(key in object))) {\n baseAssignValue(object, key, value);\n }\n }\n\n /**\n * Assigns `value` to `key` of `object` if the existing value is not equivalent\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\n function assignValue(object, key, value) {\n var objValue = object[key];\n if (!(hasOwnProperty.call(object, key) && eq(objValue, value)) ||\n (value === undefined && !(key in object))) {\n baseAssignValue(object, key, value);\n }\n }\n\n /**\n * Gets the index at which the `key` is found in `array` of key-value pairs.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} key The key to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\n function assocIndexOf(array, key) {\n var length = array.length;\n while (length--) {\n if (eq(array[length][0], key)) {\n return length;\n }\n }\n return -1;\n }\n\n /**\n * Aggregates elements of `collection` on `accumulator` with keys transformed\n * by `iteratee` and values set by `setter`.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} setter The function to set `accumulator` values.\n * @param {Function} iteratee The iteratee to transform keys.\n * @param {Object} accumulator The initial aggregated object.\n * @returns {Function} Returns `accumulator`.\n */\n function baseAggregator(collection, setter, iteratee, accumulator) {\n baseEach(collection, function(value, key, collection) {\n setter(accumulator, value, iteratee(value), collection);\n });\n return accumulator;\n }\n\n /**\n * The base implementation of `_.assign` without support for multiple sources\n * or `customizer` functions.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @returns {Object} Returns `object`.\n */\n function baseAssign(object, source) {\n return object && copyObject(source, keys(source), object);\n }\n\n /**\n * The base implementation of `_.assignIn` without support for multiple sources\n * or `customizer` functions.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @returns {Object} Returns `object`.\n */\n function baseAssignIn(object, source) {\n return object && copyObject(source, keysIn(source), object);\n }\n\n /**\n * The base implementation of `assignValue` and `assignMergeValue` without\n * value checks.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\n function baseAssignValue(object, key, value) {\n if (key == '__proto__' && defineProperty) {\n defineProperty(object, key, {\n 'configurable': true,\n 'enumerable': true,\n 'value': value,\n 'writable': true\n });\n } else {\n object[key] = value;\n }\n }\n\n /**\n * The base implementation of `_.at` without support for individual paths.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {string[]} paths The property paths to pick.\n * @returns {Array} Returns the picked elements.\n */\n function baseAt(object, paths) {\n var index = -1,\n length = paths.length,\n result = Array(length),\n skip = object == null;\n\n while (++index < length) {\n result[index] = skip ? undefined : get(object, paths[index]);\n }\n return result;\n }\n\n /**\n * The base implementation of `_.clamp` which doesn't coerce arguments.\n *\n * @private\n * @param {number} number The number to clamp.\n * @param {number} [lower] The lower bound.\n * @param {number} upper The upper bound.\n * @returns {number} Returns the clamped number.\n */\n function baseClamp(number, lower, upper) {\n if (number === number) {\n if (upper !== undefined) {\n number = number <= upper ? number : upper;\n }\n if (lower !== undefined) {\n number = number >= lower ? number : lower;\n }\n }\n return number;\n }\n\n /**\n * The base implementation of `_.clone` and `_.cloneDeep` which tracks\n * traversed objects.\n *\n * @private\n * @param {*} value The value to clone.\n * @param {boolean} bitmask The bitmask flags.\n * 1 - Deep clone\n * 2 - Flatten inherited properties\n * 4 - Clone symbols\n * @param {Function} [customizer] The function to customize cloning.\n * @param {string} [key] The key of `value`.\n * @param {Object} [object] The parent object of `value`.\n * @param {Object} [stack] Tracks traversed objects and their clone counterparts.\n * @returns {*} Returns the cloned value.\n */\n function baseClone(value, bitmask, customizer, key, object, stack) {\n var result,\n isDeep = bitmask & CLONE_DEEP_FLAG,\n isFlat = bitmask & CLONE_FLAT_FLAG,\n isFull = bitmask & CLONE_SYMBOLS_FLAG;\n\n if (customizer) {\n result = object ? customizer(value, key, object, stack) : customizer(value);\n }\n if (result !== undefined) {\n return result;\n }\n if (!isObject(value)) {\n return value;\n }\n var isArr = isArray(value);\n if (isArr) {\n result = initCloneArray(value);\n if (!isDeep) {\n return copyArray(value, result);\n }\n } else {\n var tag = getTag(value),\n isFunc = tag == funcTag || tag == genTag;\n\n if (isBuffer(value)) {\n return cloneBuffer(value, isDeep);\n }\n if (tag == objectTag || tag == argsTag || (isFunc && !object)) {\n result = (isFlat || isFunc) ? {} : initCloneObject(value);\n if (!isDeep) {\n return isFlat\n ? copySymbolsIn(value, baseAssignIn(result, value))\n : copySymbols(value, baseAssign(result, value));\n }\n } else {\n if (!cloneableTags[tag]) {\n return object ? value : {};\n }\n result = initCloneByTag(value, tag, isDeep);\n }\n }\n // Check for circular references and return its corresponding clone.\n stack || (stack = new Stack);\n var stacked = stack.get(value);\n if (stacked) {\n return stacked;\n }\n stack.set(value, result);\n\n if (isSet(value)) {\n value.forEach(function(subValue) {\n result.add(baseClone(subValue, bitmask, customizer, subValue, value, stack));\n });\n } else if (isMap(value)) {\n value.forEach(function(subValue, key) {\n result.set(key, baseClone(subValue, bitmask, customizer, key, value, stack));\n });\n }\n\n var keysFunc = isFull\n ? (isFlat ? getAllKeysIn : getAllKeys)\n : (isFlat ? keysIn : keys);\n\n var props = isArr ? undefined : keysFunc(value);\n arrayEach(props || value, function(subValue, key) {\n if (props) {\n key = subValue;\n subValue = value[key];\n }\n // Recursively populate clone (susceptible to call stack limits).\n assignValue(result, key, baseClone(subValue, bitmask, customizer, key, value, stack));\n });\n return result;\n }\n\n /**\n * The base implementation of `_.conforms` which doesn't clone `source`.\n *\n * @private\n * @param {Object} source The object of property predicates to conform to.\n * @returns {Function} Returns the new spec function.\n */\n function baseConforms(source) {\n var props = keys(source);\n return function(object) {\n return baseConformsTo(object, source, props);\n };\n }\n\n /**\n * The base implementation of `_.conformsTo` which accepts `props` to check.\n *\n * @private\n * @param {Object} object The object to inspect.\n * @param {Object} source The object of property predicates to conform to.\n * @returns {boolean} Returns `true` if `object` conforms, else `false`.\n */\n function baseConformsTo(object, source, props) {\n var length = props.length;\n if (object == null) {\n return !length;\n }\n object = Object(object);\n while (length--) {\n var key = props[length],\n predicate = source[key],\n value = object[key];\n\n if ((value === undefined && !(key in object)) || !predicate(value)) {\n return false;\n }\n }\n return true;\n }\n\n /**\n * The base implementation of `_.delay` and `_.defer` which accepts `args`\n * to provide to `func`.\n *\n * @private\n * @param {Function} func The function to delay.\n * @param {number} wait The number of milliseconds to delay invocation.\n * @param {Array} args The arguments to provide to `func`.\n * @returns {number|Object} Returns the timer id or timeout object.\n */\n function baseDelay(func, wait, args) {\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n return setTimeout(function() { func.apply(undefined, args); }, wait);\n }\n\n /**\n * The base implementation of methods like `_.difference` without support\n * for excluding multiple arrays or iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Array} values The values to exclude.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of filtered values.\n */\n function baseDifference(array, values, iteratee, comparator) {\n var index = -1,\n includes = arrayIncludes,\n isCommon = true,\n length = array.length,\n result = [],\n valuesLength = values.length;\n\n if (!length) {\n return result;\n }\n if (iteratee) {\n values = arrayMap(values, baseUnary(iteratee));\n }\n if (comparator) {\n includes = arrayIncludesWith;\n isCommon = false;\n }\n else if (values.length >= LARGE_ARRAY_SIZE) {\n includes = cacheHas;\n isCommon = false;\n values = new SetCache(values);\n }\n outer:\n while (++index < length) {\n var value = array[index],\n computed = iteratee == null ? value : iteratee(value);\n\n value = (comparator || value !== 0) ? value : 0;\n if (isCommon && computed === computed) {\n var valuesIndex = valuesLength;\n while (valuesIndex--) {\n if (values[valuesIndex] === computed) {\n continue outer;\n }\n }\n result.push(value);\n }\n else if (!includes(values, computed, comparator)) {\n result.push(value);\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `_.forEach` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array|Object} Returns `collection`.\n */\n var baseEach = createBaseEach(baseForOwn);\n\n /**\n * The base implementation of `_.forEachRight` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array|Object} Returns `collection`.\n */\n var baseEachRight = createBaseEach(baseForOwnRight, true);\n\n /**\n * The base implementation of `_.every` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {boolean} Returns `true` if all elements pass the predicate check,\n * else `false`\n */\n function baseEvery(collection, predicate) {\n var result = true;\n baseEach(collection, function(value, index, collection) {\n result = !!predicate(value, index, collection);\n return result;\n });\n return result;\n }\n\n /**\n * The base implementation of methods like `_.max` and `_.min` which accepts a\n * `comparator` to determine the extremum value.\n *\n * @private\n * @param {Array} array The array to iterate over.\n * @param {Function} iteratee The iteratee invoked per iteration.\n * @param {Function} comparator The comparator used to compare values.\n * @returns {*} Returns the extremum value.\n */\n function baseExtremum(array, iteratee, comparator) {\n var index = -1,\n length = array.length;\n\n while (++index < length) {\n var value = array[index],\n current = iteratee(value);\n\n if (current != null && (computed === undefined\n ? (current === current && !isSymbol(current))\n : comparator(current, computed)\n )) {\n var computed = current,\n result = value;\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `_.fill` without an iteratee call guard.\n *\n * @private\n * @param {Array} array The array to fill.\n * @param {*} value The value to fill `array` with.\n * @param {number} [start=0] The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns `array`.\n */\n function baseFill(array, value, start, end) {\n var length = array.length;\n\n start = toInteger(start);\n if (start < 0) {\n start = -start > length ? 0 : (length + start);\n }\n end = (end === undefined || end > length) ? length : toInteger(end);\n if (end < 0) {\n end += length;\n }\n end = start > end ? 0 : toLength(end);\n while (start < end) {\n array[start++] = value;\n }\n return array;\n }\n\n /**\n * The base implementation of `_.filter` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n */\n function baseFilter(collection, predicate) {\n var result = [];\n baseEach(collection, function(value, index, collection) {\n if (predicate(value, index, collection)) {\n result.push(value);\n }\n });\n return result;\n }\n\n /**\n * The base implementation of `_.flatten` with support for restricting flattening.\n *\n * @private\n * @param {Array} array The array to flatten.\n * @param {number} depth The maximum recursion depth.\n * @param {boolean} [predicate=isFlattenable] The function invoked per iteration.\n * @param {boolean} [isStrict] Restrict to values that pass `predicate` checks.\n * @param {Array} [result=[]] The initial result value.\n * @returns {Array} Returns the new flattened array.\n */\n function baseFlatten(array, depth, predicate, isStrict, result) {\n var index = -1,\n length = array.length;\n\n predicate || (predicate = isFlattenable);\n result || (result = []);\n\n while (++index < length) {\n var value = array[index];\n if (depth > 0 && predicate(value)) {\n if (depth > 1) {\n // Recursively flatten arrays (susceptible to call stack limits).\n baseFlatten(value, depth - 1, predicate, isStrict, result);\n } else {\n arrayPush(result, value);\n }\n } else if (!isStrict) {\n result[result.length] = value;\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `baseForOwn` which iterates over `object`\n * properties returned by `keysFunc` and invokes `iteratee` for each property.\n * Iteratee functions may exit iteration early by explicitly returning `false`.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @returns {Object} Returns `object`.\n */\n var baseFor = createBaseFor();\n\n /**\n * This function is like `baseFor` except that it iterates over properties\n * in the opposite order.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @returns {Object} Returns `object`.\n */\n var baseForRight = createBaseFor(true);\n\n /**\n * The base implementation of `_.forOwn` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Object} Returns `object`.\n */\n function baseForOwn(object, iteratee) {\n return object && baseFor(object, iteratee, keys);\n }\n\n /**\n * The base implementation of `_.forOwnRight` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Object} Returns `object`.\n */\n function baseForOwnRight(object, iteratee) {\n return object && baseForRight(object, iteratee, keys);\n }\n\n /**\n * The base implementation of `_.functions` which creates an array of\n * `object` function property names filtered from `props`.\n *\n * @private\n * @param {Object} object The object to inspect.\n * @param {Array} props The property names to filter.\n * @returns {Array} Returns the function names.\n */\n function baseFunctions(object, props) {\n return arrayFilter(props, function(key) {\n return isFunction(object[key]);\n });\n }\n\n /**\n * The base implementation of `_.get` without support for default values.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to get.\n * @returns {*} Returns the resolved value.\n */\n function baseGet(object, path) {\n path = castPath(path, object);\n\n var index = 0,\n length = path.length;\n\n while (object != null && index < length) {\n object = object[toKey(path[index++])];\n }\n return (index && index == length) ? object : undefined;\n }\n\n /**\n * The base implementation of `getAllKeys` and `getAllKeysIn` which uses\n * `keysFunc` and `symbolsFunc` to get the enumerable property names and\n * symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @param {Function} symbolsFunc The function to get the symbols of `object`.\n * @returns {Array} Returns the array of property names and symbols.\n */\n function baseGetAllKeys(object, keysFunc, symbolsFunc) {\n var result = keysFunc(object);\n return isArray(object) ? result : arrayPush(result, symbolsFunc(object));\n }\n\n /**\n * The base implementation of `getTag` without fallbacks for buggy environments.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\n function baseGetTag(value) {\n if (value == null) {\n return value === undefined ? undefinedTag : nullTag;\n }\n return (symToStringTag && symToStringTag in Object(value))\n ? getRawTag(value)\n : objectToString(value);\n }\n\n /**\n * The base implementation of `_.gt` which doesn't coerce arguments.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if `value` is greater than `other`,\n * else `false`.\n */\n function baseGt(value, other) {\n return value > other;\n }\n\n /**\n * The base implementation of `_.has` without support for deep paths.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {Array|string} key The key to check.\n * @returns {boolean} Returns `true` if `key` exists, else `false`.\n */\n function baseHas(object, key) {\n return object != null && hasOwnProperty.call(object, key);\n }\n\n /**\n * The base implementation of `_.hasIn` without support for deep paths.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {Array|string} key The key to check.\n * @returns {boolean} Returns `true` if `key` exists, else `false`.\n */\n function baseHasIn(object, key) {\n return object != null && key in Object(object);\n }\n\n /**\n * The base implementation of `_.inRange` which doesn't coerce arguments.\n *\n * @private\n * @param {number} number The number to check.\n * @param {number} start The start of the range.\n * @param {number} end The end of the range.\n * @returns {boolean} Returns `true` if `number` is in the range, else `false`.\n */\n function baseInRange(number, start, end) {\n return number >= nativeMin(start, end) && number < nativeMax(start, end);\n }\n\n /**\n * The base implementation of methods like `_.intersection`, without support\n * for iteratee shorthands, that accepts an array of arrays to inspect.\n *\n * @private\n * @param {Array} arrays The arrays to inspect.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of shared values.\n */\n function baseIntersection(arrays, iteratee, comparator) {\n var includes = comparator ? arrayIncludesWith : arrayIncludes,\n length = arrays[0].length,\n othLength = arrays.length,\n othIndex = othLength,\n caches = Array(othLength),\n maxLength = Infinity,\n result = [];\n\n while (othIndex--) {\n var array = arrays[othIndex];\n if (othIndex && iteratee) {\n array = arrayMap(array, baseUnary(iteratee));\n }\n maxLength = nativeMin(array.length, maxLength);\n caches[othIndex] = !comparator && (iteratee || (length >= 120 && array.length >= 120))\n ? new SetCache(othIndex && array)\n : undefined;\n }\n array = arrays[0];\n\n var index = -1,\n seen = caches[0];\n\n outer:\n while (++index < length && result.length < maxLength) {\n var value = array[index],\n computed = iteratee ? iteratee(value) : value;\n\n value = (comparator || value !== 0) ? value : 0;\n if (!(seen\n ? cacheHas(seen, computed)\n : includes(result, computed, comparator)\n )) {\n othIndex = othLength;\n while (--othIndex) {\n var cache = caches[othIndex];\n if (!(cache\n ? cacheHas(cache, computed)\n : includes(arrays[othIndex], computed, comparator))\n ) {\n continue outer;\n }\n }\n if (seen) {\n seen.push(computed);\n }\n result.push(value);\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `_.invert` and `_.invertBy` which inverts\n * `object` with values transformed by `iteratee` and set by `setter`.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} setter The function to set `accumulator` values.\n * @param {Function} iteratee The iteratee to transform values.\n * @param {Object} accumulator The initial inverted object.\n * @returns {Function} Returns `accumulator`.\n */\n function baseInverter(object, setter, iteratee, accumulator) {\n baseForOwn(object, function(value, key, object) {\n setter(accumulator, iteratee(value), key, object);\n });\n return accumulator;\n }\n\n /**\n * The base implementation of `_.invoke` without support for individual\n * method arguments.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the method to invoke.\n * @param {Array} args The arguments to invoke the method with.\n * @returns {*} Returns the result of the invoked method.\n */\n function baseInvoke(object, path, args) {\n path = castPath(path, object);\n object = parent(object, path);\n var func = object == null ? object : object[toKey(last(path))];\n return func == null ? undefined : apply(func, object, args);\n }\n\n /**\n * The base implementation of `_.isArguments`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n */\n function baseIsArguments(value) {\n return isObjectLike(value) && baseGetTag(value) == argsTag;\n }\n\n /**\n * The base implementation of `_.isArrayBuffer` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array buffer, else `false`.\n */\n function baseIsArrayBuffer(value) {\n return isObjectLike(value) && baseGetTag(value) == arrayBufferTag;\n }\n\n /**\n * The base implementation of `_.isDate` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a date object, else `false`.\n */\n function baseIsDate(value) {\n return isObjectLike(value) && baseGetTag(value) == dateTag;\n }\n\n /**\n * The base implementation of `_.isEqual` which supports partial comparisons\n * and tracks traversed objects.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @param {boolean} bitmask The bitmask flags.\n * 1 - Unordered comparison\n * 2 - Partial comparison\n * @param {Function} [customizer] The function to customize comparisons.\n * @param {Object} [stack] Tracks traversed `value` and `other` objects.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n */\n function baseIsEqual(value, other, bitmask, customizer, stack) {\n if (value === other) {\n return true;\n }\n if (value == null || other == null || (!isObjectLike(value) && !isObjectLike(other))) {\n return value !== value && other !== other;\n }\n return baseIsEqualDeep(value, other, bitmask, customizer, baseIsEqual, stack);\n }\n\n /**\n * A specialized version of `baseIsEqual` for arrays and objects which performs\n * deep comparisons and tracks traversed objects enabling objects with circular\n * references to be compared.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} [stack] Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\n function baseIsEqualDeep(object, other, bitmask, customizer, equalFunc, stack) {\n var objIsArr = isArray(object),\n othIsArr = isArray(other),\n objTag = objIsArr ? arrayTag : getTag(object),\n othTag = othIsArr ? arrayTag : getTag(other);\n\n objTag = objTag == argsTag ? objectTag : objTag;\n othTag = othTag == argsTag ? objectTag : othTag;\n\n var objIsObj = objTag == objectTag,\n othIsObj = othTag == objectTag,\n isSameTag = objTag == othTag;\n\n if (isSameTag && isBuffer(object)) {\n if (!isBuffer(other)) {\n return false;\n }\n objIsArr = true;\n objIsObj = false;\n }\n if (isSameTag && !objIsObj) {\n stack || (stack = new Stack);\n return (objIsArr || isTypedArray(object))\n ? equalArrays(object, other, bitmask, customizer, equalFunc, stack)\n : equalByTag(object, other, objTag, bitmask, customizer, equalFunc, stack);\n }\n if (!(bitmask & COMPARE_PARTIAL_FLAG)) {\n var objIsWrapped = objIsObj && hasOwnProperty.call(object, '__wrapped__'),\n othIsWrapped = othIsObj && hasOwnProperty.call(other, '__wrapped__');\n\n if (objIsWrapped || othIsWrapped) {\n var objUnwrapped = objIsWrapped ? object.value() : object,\n othUnwrapped = othIsWrapped ? other.value() : other;\n\n stack || (stack = new Stack);\n return equalFunc(objUnwrapped, othUnwrapped, bitmask, customizer, stack);\n }\n }\n if (!isSameTag) {\n return false;\n }\n stack || (stack = new Stack);\n return equalObjects(object, other, bitmask, customizer, equalFunc, stack);\n }\n\n /**\n * The base implementation of `_.isMap` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a map, else `false`.\n */\n function baseIsMap(value) {\n return isObjectLike(value) && getTag(value) == mapTag;\n }\n\n /**\n * The base implementation of `_.isMatch` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The object to inspect.\n * @param {Object} source The object of property values to match.\n * @param {Array} matchData The property names, values, and compare flags to match.\n * @param {Function} [customizer] The function to customize comparisons.\n * @returns {boolean} Returns `true` if `object` is a match, else `false`.\n */\n function baseIsMatch(object, source, matchData, customizer) {\n var index = matchData.length,\n length = index,\n noCustomizer = !customizer;\n\n if (object == null) {\n return !length;\n }\n object = Object(object);\n while (index--) {\n var data = matchData[index];\n if ((noCustomizer && data[2])\n ? data[1] !== object[data[0]]\n : !(data[0] in object)\n ) {\n return false;\n }\n }\n while (++index < length) {\n data = matchData[index];\n var key = data[0],\n objValue = object[key],\n srcValue = data[1];\n\n if (noCustomizer && data[2]) {\n if (objValue === undefined && !(key in object)) {\n return false;\n }\n } else {\n var stack = new Stack;\n if (customizer) {\n var result = customizer(objValue, srcValue, key, object, source, stack);\n }\n if (!(result === undefined\n ? baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG, customizer, stack)\n : result\n )) {\n return false;\n }\n }\n }\n return true;\n }\n\n /**\n * The base implementation of `_.isNative` without bad shim checks.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function,\n * else `false`.\n */\n function baseIsNative(value) {\n if (!isObject(value) || isMasked(value)) {\n return false;\n }\n var pattern = isFunction(value) ? reIsNative : reIsHostCtor;\n return pattern.test(toSource(value));\n }\n\n /**\n * The base implementation of `_.isRegExp` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a regexp, else `false`.\n */\n function baseIsRegExp(value) {\n return isObjectLike(value) && baseGetTag(value) == regexpTag;\n }\n\n /**\n * The base implementation of `_.isSet` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a set, else `false`.\n */\n function baseIsSet(value) {\n return isObjectLike(value) && getTag(value) == setTag;\n }\n\n /**\n * The base implementation of `_.isTypedArray` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n */\n function baseIsTypedArray(value) {\n return isObjectLike(value) &&\n isLength(value.length) && !!typedArrayTags[baseGetTag(value)];\n }\n\n /**\n * The base implementation of `_.iteratee`.\n *\n * @private\n * @param {*} [value=_.identity] The value to convert to an iteratee.\n * @returns {Function} Returns the iteratee.\n */\n function baseIteratee(value) {\n // Don't store the `typeof` result in a variable to avoid a JIT bug in Safari 9.\n // See https://bugs.webkit.org/show_bug.cgi?id=156034 for more details.\n if (typeof value == 'function') {\n return value;\n }\n if (value == null) {\n return identity;\n }\n if (typeof value == 'object') {\n return isArray(value)\n ? baseMatchesProperty(value[0], value[1])\n : baseMatches(value);\n }\n return property(value);\n }\n\n /**\n * The base implementation of `_.keys` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\n function baseKeys(object) {\n if (!isPrototype(object)) {\n return nativeKeys(object);\n }\n var result = [];\n for (var key in Object(object)) {\n if (hasOwnProperty.call(object, key) && key != 'constructor') {\n result.push(key);\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `_.keysIn` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\n function baseKeysIn(object) {\n if (!isObject(object)) {\n return nativeKeysIn(object);\n }\n var isProto = isPrototype(object),\n result = [];\n\n for (var key in object) {\n if (!(key == 'constructor' && (isProto || !hasOwnProperty.call(object, key)))) {\n result.push(key);\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `_.lt` which doesn't coerce arguments.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if `value` is less than `other`,\n * else `false`.\n */\n function baseLt(value, other) {\n return value < other;\n }\n\n /**\n * The base implementation of `_.map` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n */\n function baseMap(collection, iteratee) {\n var index = -1,\n result = isArrayLike(collection) ? Array(collection.length) : [];\n\n baseEach(collection, function(value, key, collection) {\n result[++index] = iteratee(value, key, collection);\n });\n return result;\n }\n\n /**\n * The base implementation of `_.matches` which doesn't clone `source`.\n *\n * @private\n * @param {Object} source The object of property values to match.\n * @returns {Function} Returns the new spec function.\n */\n function baseMatches(source) {\n var matchData = getMatchData(source);\n if (matchData.length == 1 && matchData[0][2]) {\n return matchesStrictComparable(matchData[0][0], matchData[0][1]);\n }\n return function(object) {\n return object === source || baseIsMatch(object, source, matchData);\n };\n }\n\n /**\n * The base implementation of `_.matchesProperty` which doesn't clone `srcValue`.\n *\n * @private\n * @param {string} path The path of the property to get.\n * @param {*} srcValue The value to match.\n * @returns {Function} Returns the new spec function.\n */\n function baseMatchesProperty(path, srcValue) {\n if (isKey(path) && isStrictComparable(srcValue)) {\n return matchesStrictComparable(toKey(path), srcValue);\n }\n return function(object) {\n var objValue = get(object, path);\n return (objValue === undefined && objValue === srcValue)\n ? hasIn(object, path)\n : baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG);\n };\n }\n\n /**\n * The base implementation of `_.merge` without support for multiple sources.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @param {number} srcIndex The index of `source`.\n * @param {Function} [customizer] The function to customize merged values.\n * @param {Object} [stack] Tracks traversed source values and their merged\n * counterparts.\n */\n function baseMerge(object, source, srcIndex, customizer, stack) {\n if (object === source) {\n return;\n }\n baseFor(source, function(srcValue, key) {\n stack || (stack = new Stack);\n if (isObject(srcValue)) {\n baseMergeDeep(object, source, key, srcIndex, baseMerge, customizer, stack);\n }\n else {\n var newValue = customizer\n ? customizer(safeGet(object, key), srcValue, (key + ''), object, source, stack)\n : undefined;\n\n if (newValue === undefined) {\n newValue = srcValue;\n }\n assignMergeValue(object, key, newValue);\n }\n }, keysIn);\n }\n\n /**\n * A specialized version of `baseMerge` for arrays and objects which performs\n * deep merges and tracks traversed objects enabling objects with circular\n * references to be merged.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @param {string} key The key of the value to merge.\n * @param {number} srcIndex The index of `source`.\n * @param {Function} mergeFunc The function to merge values.\n * @param {Function} [customizer] The function to customize assigned values.\n * @param {Object} [stack] Tracks traversed source values and their merged\n * counterparts.\n */\n function baseMergeDeep(object, source, key, srcIndex, mergeFunc, customizer, stack) {\n var objValue = safeGet(object, key),\n srcValue = safeGet(source, key),\n stacked = stack.get(srcValue);\n\n if (stacked) {\n assignMergeValue(object, key, stacked);\n return;\n }\n var newValue = customizer\n ? customizer(objValue, srcValue, (key + ''), object, source, stack)\n : undefined;\n\n var isCommon = newValue === undefined;\n\n if (isCommon) {\n var isArr = isArray(srcValue),\n isBuff = !isArr && isBuffer(srcValue),\n isTyped = !isArr && !isBuff && isTypedArray(srcValue);\n\n newValue = srcValue;\n if (isArr || isBuff || isTyped) {\n if (isArray(objValue)) {\n newValue = objValue;\n }\n else if (isArrayLikeObject(objValue)) {\n newValue = copyArray(objValue);\n }\n else if (isBuff) {\n isCommon = false;\n newValue = cloneBuffer(srcValue, true);\n }\n else if (isTyped) {\n isCommon = false;\n newValue = cloneTypedArray(srcValue, true);\n }\n else {\n newValue = [];\n }\n }\n else if (isPlainObject(srcValue) || isArguments(srcValue)) {\n newValue = objValue;\n if (isArguments(objValue)) {\n newValue = toPlainObject(objValue);\n }\n else if (!isObject(objValue) || isFunction(objValue)) {\n newValue = initCloneObject(srcValue);\n }\n }\n else {\n isCommon = false;\n }\n }\n if (isCommon) {\n // Recursively merge objects and arrays (susceptible to call stack limits).\n stack.set(srcValue, newValue);\n mergeFunc(newValue, srcValue, srcIndex, customizer, stack);\n stack['delete'](srcValue);\n }\n assignMergeValue(object, key, newValue);\n }\n\n /**\n * The base implementation of `_.nth` which doesn't coerce arguments.\n *\n * @private\n * @param {Array} array The array to query.\n * @param {number} n The index of the element to return.\n * @returns {*} Returns the nth element of `array`.\n */\n function baseNth(array, n) {\n var length = array.length;\n if (!length) {\n return;\n }\n n += n < 0 ? length : 0;\n return isIndex(n, length) ? array[n] : undefined;\n }\n\n /**\n * The base implementation of `_.orderBy` without param guards.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function[]|Object[]|string[]} iteratees The iteratees to sort by.\n * @param {string[]} orders The sort orders of `iteratees`.\n * @returns {Array} Returns the new sorted array.\n */\n function baseOrderBy(collection, iteratees, orders) {\n if (iteratees.length) {\n iteratees = arrayMap(iteratees, function(iteratee) {\n if (isArray(iteratee)) {\n return function(value) {\n return baseGet(value, iteratee.length === 1 ? iteratee[0] : iteratee);\n }\n }\n return iteratee;\n });\n } else {\n iteratees = [identity];\n }\n\n var index = -1;\n iteratees = arrayMap(iteratees, baseUnary(getIteratee()));\n\n var result = baseMap(collection, function(value, key, collection) {\n var criteria = arrayMap(iteratees, function(iteratee) {\n return iteratee(value);\n });\n return { 'criteria': criteria, 'index': ++index, 'value': value };\n });\n\n return baseSortBy(result, function(object, other) {\n return compareMultiple(object, other, orders);\n });\n }\n\n /**\n * The base implementation of `_.pick` without support for individual\n * property identifiers.\n *\n * @private\n * @param {Object} object The source object.\n * @param {string[]} paths The property paths to pick.\n * @returns {Object} Returns the new object.\n */\n function basePick(object, paths) {\n return basePickBy(object, paths, function(value, path) {\n return hasIn(object, path);\n });\n }\n\n /**\n * The base implementation of `_.pickBy` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The source object.\n * @param {string[]} paths The property paths to pick.\n * @param {Function} predicate The function invoked per property.\n * @returns {Object} Returns the new object.\n */\n function basePickBy(object, paths, predicate) {\n var index = -1,\n length = paths.length,\n result = {};\n\n while (++index < length) {\n var path = paths[index],\n value = baseGet(object, path);\n\n if (predicate(value, path)) {\n baseSet(result, castPath(path, object), value);\n }\n }\n return result;\n }\n\n /**\n * A specialized version of `baseProperty` which supports deep paths.\n *\n * @private\n * @param {Array|string} path The path of the property to get.\n * @returns {Function} Returns the new accessor function.\n */\n function basePropertyDeep(path) {\n return function(object) {\n return baseGet(object, path);\n };\n }\n\n /**\n * The base implementation of `_.pullAllBy` without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {Array} values The values to remove.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns `array`.\n */\n function basePullAll(array, values, iteratee, comparator) {\n var indexOf = comparator ? baseIndexOfWith : baseIndexOf,\n index = -1,\n length = values.length,\n seen = array;\n\n if (array === values) {\n values = copyArray(values);\n }\n if (iteratee) {\n seen = arrayMap(array, baseUnary(iteratee));\n }\n while (++index < length) {\n var fromIndex = 0,\n value = values[index],\n computed = iteratee ? iteratee(value) : value;\n\n while ((fromIndex = indexOf(seen, computed, fromIndex, comparator)) > -1) {\n if (seen !== array) {\n splice.call(seen, fromIndex, 1);\n }\n splice.call(array, fromIndex, 1);\n }\n }\n return array;\n }\n\n /**\n * The base implementation of `_.pullAt` without support for individual\n * indexes or capturing the removed elements.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {number[]} indexes The indexes of elements to remove.\n * @returns {Array} Returns `array`.\n */\n function basePullAt(array, indexes) {\n var length = array ? indexes.length : 0,\n lastIndex = length - 1;\n\n while (length--) {\n var index = indexes[length];\n if (length == lastIndex || index !== previous) {\n var previous = index;\n if (isIndex(index)) {\n splice.call(array, index, 1);\n } else {\n baseUnset(array, index);\n }\n }\n }\n return array;\n }\n\n /**\n * The base implementation of `_.random` without support for returning\n * floating-point numbers.\n *\n * @private\n * @param {number} lower The lower bound.\n * @param {number} upper The upper bound.\n * @returns {number} Returns the random number.\n */\n function baseRandom(lower, upper) {\n return lower + nativeFloor(nativeRandom() * (upper - lower + 1));\n }\n\n /**\n * The base implementation of `_.range` and `_.rangeRight` which doesn't\n * coerce arguments.\n *\n * @private\n * @param {number} start The start of the range.\n * @param {number} end The end of the range.\n * @param {number} step The value to increment or decrement by.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Array} Returns the range of numbers.\n */\n function baseRange(start, end, step, fromRight) {\n var index = -1,\n length = nativeMax(nativeCeil((end - start) / (step || 1)), 0),\n result = Array(length);\n\n while (length--) {\n result[fromRight ? length : ++index] = start;\n start += step;\n }\n return result;\n }\n\n /**\n * The base implementation of `_.repeat` which doesn't coerce arguments.\n *\n * @private\n * @param {string} string The string to repeat.\n * @param {number} n The number of times to repeat the string.\n * @returns {string} Returns the repeated string.\n */\n function baseRepeat(string, n) {\n var result = '';\n if (!string || n < 1 || n > MAX_SAFE_INTEGER) {\n return result;\n }\n // Leverage the exponentiation by squaring algorithm for a faster repeat.\n // See https://en.wikipedia.org/wiki/Exponentiation_by_squaring for more details.\n do {\n if (n % 2) {\n result += string;\n }\n n = nativeFloor(n / 2);\n if (n) {\n string += string;\n }\n } while (n);\n\n return result;\n }\n\n /**\n * The base implementation of `_.rest` which doesn't validate or coerce arguments.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @returns {Function} Returns the new function.\n */\n function baseRest(func, start) {\n return setToString(overRest(func, start, identity), func + '');\n }\n\n /**\n * The base implementation of `_.sample`.\n *\n * @private\n * @param {Array|Object} collection The collection to sample.\n * @returns {*} Returns the random element.\n */\n function baseSample(collection) {\n return arraySample(values(collection));\n }\n\n /**\n * The base implementation of `_.sampleSize` without param guards.\n *\n * @private\n * @param {Array|Object} collection The collection to sample.\n * @param {number} n The number of elements to sample.\n * @returns {Array} Returns the random elements.\n */\n function baseSampleSize(collection, n) {\n var array = values(collection);\n return shuffleSelf(array, baseClamp(n, 0, array.length));\n }\n\n /**\n * The base implementation of `_.set`.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to set.\n * @param {*} value The value to set.\n * @param {Function} [customizer] The function to customize path creation.\n * @returns {Object} Returns `object`.\n */\n function baseSet(object, path, value, customizer) {\n if (!isObject(object)) {\n return object;\n }\n path = castPath(path, object);\n\n var index = -1,\n length = path.length,\n lastIndex = length - 1,\n nested = object;\n\n while (nested != null && ++index < length) {\n var key = toKey(path[index]),\n newValue = value;\n\n if (key === '__proto__' || key === 'constructor' || key === 'prototype') {\n return object;\n }\n\n if (index != lastIndex) {\n var objValue = nested[key];\n newValue = customizer ? customizer(objValue, key, nested) : undefined;\n if (newValue === undefined) {\n newValue = isObject(objValue)\n ? objValue\n : (isIndex(path[index + 1]) ? [] : {});\n }\n }\n assignValue(nested, key, newValue);\n nested = nested[key];\n }\n return object;\n }\n\n /**\n * The base implementation of `setData` without support for hot loop shorting.\n *\n * @private\n * @param {Function} func The function to associate metadata with.\n * @param {*} data The metadata.\n * @returns {Function} Returns `func`.\n */\n var baseSetData = !metaMap ? identity : function(func, data) {\n metaMap.set(func, data);\n return func;\n };\n\n /**\n * The base implementation of `setToString` without support for hot loop shorting.\n *\n * @private\n * @param {Function} func The function to modify.\n * @param {Function} string The `toString` result.\n * @returns {Function} Returns `func`.\n */\n var baseSetToString = !defineProperty ? identity : function(func, string) {\n return defineProperty(func, 'toString', {\n 'configurable': true,\n 'enumerable': false,\n 'value': constant(string),\n 'writable': true\n });\n };\n\n /**\n * The base implementation of `_.shuffle`.\n *\n * @private\n * @param {Array|Object} collection The collection to shuffle.\n * @returns {Array} Returns the new shuffled array.\n */\n function baseShuffle(collection) {\n return shuffleSelf(values(collection));\n }\n\n /**\n * The base implementation of `_.slice` without an iteratee call guard.\n *\n * @private\n * @param {Array} array The array to slice.\n * @param {number} [start=0] The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns the slice of `array`.\n */\n function baseSlice(array, start, end) {\n var index = -1,\n length = array.length;\n\n if (start < 0) {\n start = -start > length ? 0 : (length + start);\n }\n end = end > length ? length : end;\n if (end < 0) {\n end += length;\n }\n length = start > end ? 0 : ((end - start) >>> 0);\n start >>>= 0;\n\n var result = Array(length);\n while (++index < length) {\n result[index] = array[index + start];\n }\n return result;\n }\n\n /**\n * The base implementation of `_.some` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {boolean} Returns `true` if any element passes the predicate check,\n * else `false`.\n */\n function baseSome(collection, predicate) {\n var result;\n\n baseEach(collection, function(value, index, collection) {\n result = predicate(value, index, collection);\n return !result;\n });\n return !!result;\n }\n\n /**\n * The base implementation of `_.sortedIndex` and `_.sortedLastIndex` which\n * performs a binary search of `array` to determine the index at which `value`\n * should be inserted into `array` in order to maintain its sort order.\n *\n * @private\n * @param {Array} array The sorted array to inspect.\n * @param {*} value The value to evaluate.\n * @param {boolean} [retHighest] Specify returning the highest qualified index.\n * @returns {number} Returns the index at which `value` should be inserted\n * into `array`.\n */\n function baseSortedIndex(array, value, retHighest) {\n var low = 0,\n high = array == null ? low : array.length;\n\n if (typeof value == 'number' && value === value && high <= HALF_MAX_ARRAY_LENGTH) {\n while (low < high) {\n var mid = (low + high) >>> 1,\n computed = array[mid];\n\n if (computed !== null && !isSymbol(computed) &&\n (retHighest ? (computed <= value) : (computed < value))) {\n low = mid + 1;\n } else {\n high = mid;\n }\n }\n return high;\n }\n return baseSortedIndexBy(array, value, identity, retHighest);\n }\n\n /**\n * The base implementation of `_.sortedIndexBy` and `_.sortedLastIndexBy`\n * which invokes `iteratee` for `value` and each element of `array` to compute\n * their sort ranking. The iteratee is invoked with one argument; (value).\n *\n * @private\n * @param {Array} array The sorted array to inspect.\n * @param {*} value The value to evaluate.\n * @param {Function} iteratee The iteratee invoked per element.\n * @param {boolean} [retHighest] Specify returning the highest qualified index.\n * @returns {number} Returns the index at which `value` should be inserted\n * into `array`.\n */\n function baseSortedIndexBy(array, value, iteratee, retHighest) {\n var low = 0,\n high = array == null ? 0 : array.length;\n if (high === 0) {\n return 0;\n }\n\n value = iteratee(value);\n var valIsNaN = value !== value,\n valIsNull = value === null,\n valIsSymbol = isSymbol(value),\n valIsUndefined = value === undefined;\n\n while (low < high) {\n var mid = nativeFloor((low + high) / 2),\n computed = iteratee(array[mid]),\n othIsDefined = computed !== undefined,\n othIsNull = computed === null,\n othIsReflexive = computed === computed,\n othIsSymbol = isSymbol(computed);\n\n if (valIsNaN) {\n var setLow = retHighest || othIsReflexive;\n } else if (valIsUndefined) {\n setLow = othIsReflexive && (retHighest || othIsDefined);\n } else if (valIsNull) {\n setLow = othIsReflexive && othIsDefined && (retHighest || !othIsNull);\n } else if (valIsSymbol) {\n setLow = othIsReflexive && othIsDefined && !othIsNull && (retHighest || !othIsSymbol);\n } else if (othIsNull || othIsSymbol) {\n setLow = false;\n } else {\n setLow = retHighest ? (computed <= value) : (computed < value);\n }\n if (setLow) {\n low = mid + 1;\n } else {\n high = mid;\n }\n }\n return nativeMin(high, MAX_ARRAY_INDEX);\n }\n\n /**\n * The base implementation of `_.sortedUniq` and `_.sortedUniqBy` without\n * support for iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @returns {Array} Returns the new duplicate free array.\n */\n function baseSortedUniq(array, iteratee) {\n var index = -1,\n length = array.length,\n resIndex = 0,\n result = [];\n\n while (++index < length) {\n var value = array[index],\n computed = iteratee ? iteratee(value) : value;\n\n if (!index || !eq(computed, seen)) {\n var seen = computed;\n result[resIndex++] = value === 0 ? 0 : value;\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `_.toNumber` which doesn't ensure correct\n * conversions of binary, hexadecimal, or octal string values.\n *\n * @private\n * @param {*} value The value to process.\n * @returns {number} Returns the number.\n */\n function baseToNumber(value) {\n if (typeof value == 'number') {\n return value;\n }\n if (isSymbol(value)) {\n return NAN;\n }\n return +value;\n }\n\n /**\n * The base implementation of `_.toString` which doesn't convert nullish\n * values to empty strings.\n *\n * @private\n * @param {*} value The value to process.\n * @returns {string} Returns the string.\n */\n function baseToString(value) {\n // Exit early for strings to avoid a performance hit in some environments.\n if (typeof value == 'string') {\n return value;\n }\n if (isArray(value)) {\n // Recursively convert values (susceptible to call stack limits).\n return arrayMap(value, baseToString) + '';\n }\n if (isSymbol(value)) {\n return symbolToString ? symbolToString.call(value) : '';\n }\n var result = (value + '');\n return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n }\n\n /**\n * The base implementation of `_.uniqBy` without support for iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new duplicate free array.\n */\n function baseUniq(array, iteratee, comparator) {\n var index = -1,\n includes = arrayIncludes,\n length = array.length,\n isCommon = true,\n result = [],\n seen = result;\n\n if (comparator) {\n isCommon = false;\n includes = arrayIncludesWith;\n }\n else if (length >= LARGE_ARRAY_SIZE) {\n var set = iteratee ? null : createSet(array);\n if (set) {\n return setToArray(set);\n }\n isCommon = false;\n includes = cacheHas;\n seen = new SetCache;\n }\n else {\n seen = iteratee ? [] : result;\n }\n outer:\n while (++index < length) {\n var value = array[index],\n computed = iteratee ? iteratee(value) : value;\n\n value = (comparator || value !== 0) ? value : 0;\n if (isCommon && computed === computed) {\n var seenIndex = seen.length;\n while (seenIndex--) {\n if (seen[seenIndex] === computed) {\n continue outer;\n }\n }\n if (iteratee) {\n seen.push(computed);\n }\n result.push(value);\n }\n else if (!includes(seen, computed, comparator)) {\n if (seen !== result) {\n seen.push(computed);\n }\n result.push(value);\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `_.unset`.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {Array|string} path The property path to unset.\n * @returns {boolean} Returns `true` if the property is deleted, else `false`.\n */\n function baseUnset(object, path) {\n path = castPath(path, object);\n object = parent(object, path);\n return object == null || delete object[toKey(last(path))];\n }\n\n /**\n * The base implementation of `_.update`.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to update.\n * @param {Function} updater The function to produce the updated value.\n * @param {Function} [customizer] The function to customize path creation.\n * @returns {Object} Returns `object`.\n */\n function baseUpdate(object, path, updater, customizer) {\n return baseSet(object, path, updater(baseGet(object, path)), customizer);\n }\n\n /**\n * The base implementation of methods like `_.dropWhile` and `_.takeWhile`\n * without support for iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to query.\n * @param {Function} predicate The function invoked per iteration.\n * @param {boolean} [isDrop] Specify dropping elements instead of taking them.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Array} Returns the slice of `array`.\n */\n function baseWhile(array, predicate, isDrop, fromRight) {\n var length = array.length,\n index = fromRight ? length : -1;\n\n while ((fromRight ? index-- : ++index < length) &&\n predicate(array[index], index, array)) {}\n\n return isDrop\n ? baseSlice(array, (fromRight ? 0 : index), (fromRight ? index + 1 : length))\n : baseSlice(array, (fromRight ? index + 1 : 0), (fromRight ? length : index));\n }\n\n /**\n * The base implementation of `wrapperValue` which returns the result of\n * performing a sequence of actions on the unwrapped `value`, where each\n * successive action is supplied the return value of the previous.\n *\n * @private\n * @param {*} value The unwrapped value.\n * @param {Array} actions Actions to perform to resolve the unwrapped value.\n * @returns {*} Returns the resolved value.\n */\n function baseWrapperValue(value, actions) {\n var result = value;\n if (result instanceof LazyWrapper) {\n result = result.value();\n }\n return arrayReduce(actions, function(result, action) {\n return action.func.apply(action.thisArg, arrayPush([result], action.args));\n }, result);\n }\n\n /**\n * The base implementation of methods like `_.xor`, without support for\n * iteratee shorthands, that accepts an array of arrays to inspect.\n *\n * @private\n * @param {Array} arrays The arrays to inspect.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of values.\n */\n function baseXor(arrays, iteratee, comparator) {\n var length = arrays.length;\n if (length < 2) {\n return length ? baseUniq(arrays[0]) : [];\n }\n var index = -1,\n result = Array(length);\n\n while (++index < length) {\n var array = arrays[index],\n othIndex = -1;\n\n while (++othIndex < length) {\n if (othIndex != index) {\n result[index] = baseDifference(result[index] || array, arrays[othIndex], iteratee, comparator);\n }\n }\n }\n return baseUniq(baseFlatten(result, 1), iteratee, comparator);\n }\n\n /**\n * This base implementation of `_.zipObject` which assigns values using `assignFunc`.\n *\n * @private\n * @param {Array} props The property identifiers.\n * @param {Array} values The property values.\n * @param {Function} assignFunc The function to assign values.\n * @returns {Object} Returns the new object.\n */\n function baseZipObject(props, values, assignFunc) {\n var index = -1,\n length = props.length,\n valsLength = values.length,\n result = {};\n\n while (++index < length) {\n var value = index < valsLength ? values[index] : undefined;\n assignFunc(result, props[index], value);\n }\n return result;\n }\n\n /**\n * Casts `value` to an empty array if it's not an array like object.\n *\n * @private\n * @param {*} value The value to inspect.\n * @returns {Array|Object} Returns the cast array-like object.\n */\n function castArrayLikeObject(value) {\n return isArrayLikeObject(value) ? value : [];\n }\n\n /**\n * Casts `value` to `identity` if it's not a function.\n *\n * @private\n * @param {*} value The value to inspect.\n * @returns {Function} Returns cast function.\n */\n function castFunction(value) {\n return typeof value == 'function' ? value : identity;\n }\n\n /**\n * Casts `value` to a path array if it's not one.\n *\n * @private\n * @param {*} value The value to inspect.\n * @param {Object} [object] The object to query keys on.\n * @returns {Array} Returns the cast property path array.\n */\n function castPath(value, object) {\n if (isArray(value)) {\n return value;\n }\n return isKey(value, object) ? [value] : stringToPath(toString(value));\n }\n\n /**\n * A `baseRest` alias which can be replaced with `identity` by module\n * replacement plugins.\n *\n * @private\n * @type {Function}\n * @param {Function} func The function to apply a rest parameter to.\n * @returns {Function} Returns the new function.\n */\n var castRest = baseRest;\n\n /**\n * Casts `array` to a slice if it's needed.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {number} start The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns the cast slice.\n */\n function castSlice(array, start, end) {\n var length = array.length;\n end = end === undefined ? length : end;\n return (!start && end >= length) ? array : baseSlice(array, start, end);\n }\n\n /**\n * A simple wrapper around the global [`clearTimeout`](https://mdn.io/clearTimeout).\n *\n * @private\n * @param {number|Object} id The timer id or timeout object of the timer to clear.\n */\n var clearTimeout = ctxClearTimeout || function(id) {\n return root.clearTimeout(id);\n };\n\n /**\n * Creates a clone of `buffer`.\n *\n * @private\n * @param {Buffer} buffer The buffer to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Buffer} Returns the cloned buffer.\n */\n function cloneBuffer(buffer, isDeep) {\n if (isDeep) {\n return buffer.slice();\n }\n var length = buffer.length,\n result = allocUnsafe ? allocUnsafe(length) : new buffer.constructor(length);\n\n buffer.copy(result);\n return result;\n }\n\n /**\n * Creates a clone of `arrayBuffer`.\n *\n * @private\n * @param {ArrayBuffer} arrayBuffer The array buffer to clone.\n * @returns {ArrayBuffer} Returns the cloned array buffer.\n */\n function cloneArrayBuffer(arrayBuffer) {\n var result = new arrayBuffer.constructor(arrayBuffer.byteLength);\n new Uint8Array(result).set(new Uint8Array(arrayBuffer));\n return result;\n }\n\n /**\n * Creates a clone of `dataView`.\n *\n * @private\n * @param {Object} dataView The data view to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned data view.\n */\n function cloneDataView(dataView, isDeep) {\n var buffer = isDeep ? cloneArrayBuffer(dataView.buffer) : dataView.buffer;\n return new dataView.constructor(buffer, dataView.byteOffset, dataView.byteLength);\n }\n\n /**\n * Creates a clone of `regexp`.\n *\n * @private\n * @param {Object} regexp The regexp to clone.\n * @returns {Object} Returns the cloned regexp.\n */\n function cloneRegExp(regexp) {\n var result = new regexp.constructor(regexp.source, reFlags.exec(regexp));\n result.lastIndex = regexp.lastIndex;\n return result;\n }\n\n /**\n * Creates a clone of the `symbol` object.\n *\n * @private\n * @param {Object} symbol The symbol object to clone.\n * @returns {Object} Returns the cloned symbol object.\n */\n function cloneSymbol(symbol) {\n return symbolValueOf ? Object(symbolValueOf.call(symbol)) : {};\n }\n\n /**\n * Creates a clone of `typedArray`.\n *\n * @private\n * @param {Object} typedArray The typed array to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned typed array.\n */\n function cloneTypedArray(typedArray, isDeep) {\n var buffer = isDeep ? cloneArrayBuffer(typedArray.buffer) : typedArray.buffer;\n return new typedArray.constructor(buffer, typedArray.byteOffset, typedArray.length);\n }\n\n /**\n * Compares values to sort them in ascending order.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {number} Returns the sort order indicator for `value`.\n */\n function compareAscending(value, other) {\n if (value !== other) {\n var valIsDefined = value !== undefined,\n valIsNull = value === null,\n valIsReflexive = value === value,\n valIsSymbol = isSymbol(value);\n\n var othIsDefined = other !== undefined,\n othIsNull = other === null,\n othIsReflexive = other === other,\n othIsSymbol = isSymbol(other);\n\n if ((!othIsNull && !othIsSymbol && !valIsSymbol && value > other) ||\n (valIsSymbol && othIsDefined && othIsReflexive && !othIsNull && !othIsSymbol) ||\n (valIsNull && othIsDefined && othIsReflexive) ||\n (!valIsDefined && othIsReflexive) ||\n !valIsReflexive) {\n return 1;\n }\n if ((!valIsNull && !valIsSymbol && !othIsSymbol && value < other) ||\n (othIsSymbol && valIsDefined && valIsReflexive && !valIsNull && !valIsSymbol) ||\n (othIsNull && valIsDefined && valIsReflexive) ||\n (!othIsDefined && valIsReflexive) ||\n !othIsReflexive) {\n return -1;\n }\n }\n return 0;\n }\n\n /**\n * Used by `_.orderBy` to compare multiple properties of a value to another\n * and stable sort them.\n *\n * If `orders` is unspecified, all values are sorted in ascending order. Otherwise,\n * specify an order of \"desc\" for descending or \"asc\" for ascending sort order\n * of corresponding values.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {boolean[]|string[]} orders The order to sort by for each property.\n * @returns {number} Returns the sort order indicator for `object`.\n */\n function compareMultiple(object, other, orders) {\n var index = -1,\n objCriteria = object.criteria,\n othCriteria = other.criteria,\n length = objCriteria.length,\n ordersLength = orders.length;\n\n while (++index < length) {\n var result = compareAscending(objCriteria[index], othCriteria[index]);\n if (result) {\n if (index >= ordersLength) {\n return result;\n }\n var order = orders[index];\n return result * (order == 'desc' ? -1 : 1);\n }\n }\n // Fixes an `Array#sort` bug in the JS engine embedded in Adobe applications\n // that causes it, under certain circumstances, to provide the same value for\n // `object` and `other`. See https://github.com/jashkenas/underscore/pull/1247\n // for more details.\n //\n // This also ensures a stable sort in V8 and other engines.\n // See https://bugs.chromium.org/p/v8/issues/detail?id=90 for more details.\n return object.index - other.index;\n }\n\n /**\n * Creates an array that is the composition of partially applied arguments,\n * placeholders, and provided arguments into a single array of arguments.\n *\n * @private\n * @param {Array} args The provided arguments.\n * @param {Array} partials The arguments to prepend to those provided.\n * @param {Array} holders The `partials` placeholder indexes.\n * @params {boolean} [isCurried] Specify composing for a curried function.\n * @returns {Array} Returns the new array of composed arguments.\n */\n function composeArgs(args, partials, holders, isCurried) {\n var argsIndex = -1,\n argsLength = args.length,\n holdersLength = holders.length,\n leftIndex = -1,\n leftLength = partials.length,\n rangeLength = nativeMax(argsLength - holdersLength, 0),\n result = Array(leftLength + rangeLength),\n isUncurried = !isCurried;\n\n while (++leftIndex < leftLength) {\n result[leftIndex] = partials[leftIndex];\n }\n while (++argsIndex < holdersLength) {\n if (isUncurried || argsIndex < argsLength) {\n result[holders[argsIndex]] = args[argsIndex];\n }\n }\n while (rangeLength--) {\n result[leftIndex++] = args[argsIndex++];\n }\n return result;\n }\n\n /**\n * This function is like `composeArgs` except that the arguments composition\n * is tailored for `_.partialRight`.\n *\n * @private\n * @param {Array} args The provided arguments.\n * @param {Array} partials The arguments to append to those provided.\n * @param {Array} holders The `partials` placeholder indexes.\n * @params {boolean} [isCurried] Specify composing for a curried function.\n * @returns {Array} Returns the new array of composed arguments.\n */\n function composeArgsRight(args, partials, holders, isCurried) {\n var argsIndex = -1,\n argsLength = args.length,\n holdersIndex = -1,\n holdersLength = holders.length,\n rightIndex = -1,\n rightLength = partials.length,\n rangeLength = nativeMax(argsLength - holdersLength, 0),\n result = Array(rangeLength + rightLength),\n isUncurried = !isCurried;\n\n while (++argsIndex < rangeLength) {\n result[argsIndex] = args[argsIndex];\n }\n var offset = argsIndex;\n while (++rightIndex < rightLength) {\n result[offset + rightIndex] = partials[rightIndex];\n }\n while (++holdersIndex < holdersLength) {\n if (isUncurried || argsIndex < argsLength) {\n result[offset + holders[holdersIndex]] = args[argsIndex++];\n }\n }\n return result;\n }\n\n /**\n * Copies the values of `source` to `array`.\n *\n * @private\n * @param {Array} source The array to copy values from.\n * @param {Array} [array=[]] The array to copy values to.\n * @returns {Array} Returns `array`.\n */\n function copyArray(source, array) {\n var index = -1,\n length = source.length;\n\n array || (array = Array(length));\n while (++index < length) {\n array[index] = source[index];\n }\n return array;\n }\n\n /**\n * Copies properties of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy properties from.\n * @param {Array} props The property identifiers to copy.\n * @param {Object} [object={}] The object to copy properties to.\n * @param {Function} [customizer] The function to customize copied values.\n * @returns {Object} Returns `object`.\n */\n function copyObject(source, props, object, customizer) {\n var isNew = !object;\n object || (object = {});\n\n var index = -1,\n length = props.length;\n\n while (++index < length) {\n var key = props[index];\n\n var newValue = customizer\n ? customizer(object[key], source[key], key, object, source)\n : undefined;\n\n if (newValue === undefined) {\n newValue = source[key];\n }\n if (isNew) {\n baseAssignValue(object, key, newValue);\n } else {\n assignValue(object, key, newValue);\n }\n }\n return object;\n }\n\n /**\n * Copies own symbols of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy symbols from.\n * @param {Object} [object={}] The object to copy symbols to.\n * @returns {Object} Returns `object`.\n */\n function copySymbols(source, object) {\n return copyObject(source, getSymbols(source), object);\n }\n\n /**\n * Copies own and inherited symbols of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy symbols from.\n * @param {Object} [object={}] The object to copy symbols to.\n * @returns {Object} Returns `object`.\n */\n function copySymbolsIn(source, object) {\n return copyObject(source, getSymbolsIn(source), object);\n }\n\n /**\n * Creates a function like `_.groupBy`.\n *\n * @private\n * @param {Function} setter The function to set accumulator values.\n * @param {Function} [initializer] The accumulator object initializer.\n * @returns {Function} Returns the new aggregator function.\n */\n function createAggregator(setter, initializer) {\n return function(collection, iteratee) {\n var func = isArray(collection) ? arrayAggregator : baseAggregator,\n accumulator = initializer ? initializer() : {};\n\n return func(collection, setter, getIteratee(iteratee, 2), accumulator);\n };\n }\n\n /**\n * Creates a function like `_.assign`.\n *\n * @private\n * @param {Function} assigner The function to assign values.\n * @returns {Function} Returns the new assigner function.\n */\n function createAssigner(assigner) {\n return baseRest(function(object, sources) {\n var index = -1,\n length = sources.length,\n customizer = length > 1 ? sources[length - 1] : undefined,\n guard = length > 2 ? sources[2] : undefined;\n\n customizer = (assigner.length > 3 && typeof customizer == 'function')\n ? (length--, customizer)\n : undefined;\n\n if (guard && isIterateeCall(sources[0], sources[1], guard)) {\n customizer = length < 3 ? undefined : customizer;\n length = 1;\n }\n object = Object(object);\n while (++index < length) {\n var source = sources[index];\n if (source) {\n assigner(object, source, index, customizer);\n }\n }\n return object;\n });\n }\n\n /**\n * Creates a `baseEach` or `baseEachRight` function.\n *\n * @private\n * @param {Function} eachFunc The function to iterate over a collection.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new base function.\n */\n function createBaseEach(eachFunc, fromRight) {\n return function(collection, iteratee) {\n if (collection == null) {\n return collection;\n }\n if (!isArrayLike(collection)) {\n return eachFunc(collection, iteratee);\n }\n var length = collection.length,\n index = fromRight ? length : -1,\n iterable = Object(collection);\n\n while ((fromRight ? index-- : ++index < length)) {\n if (iteratee(iterable[index], index, iterable) === false) {\n break;\n }\n }\n return collection;\n };\n }\n\n /**\n * Creates a base function for methods like `_.forIn` and `_.forOwn`.\n *\n * @private\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new base function.\n */\n function createBaseFor(fromRight) {\n return function(object, iteratee, keysFunc) {\n var index = -1,\n iterable = Object(object),\n props = keysFunc(object),\n length = props.length;\n\n while (length--) {\n var key = props[fromRight ? length : ++index];\n if (iteratee(iterable[key], key, iterable) === false) {\n break;\n }\n }\n return object;\n };\n }\n\n /**\n * Creates a function that wraps `func` to invoke it with the optional `this`\n * binding of `thisArg`.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @param {*} [thisArg] The `this` binding of `func`.\n * @returns {Function} Returns the new wrapped function.\n */\n function createBind(func, bitmask, thisArg) {\n var isBind = bitmask & WRAP_BIND_FLAG,\n Ctor = createCtor(func);\n\n function wrapper() {\n var fn = (this && this !== root && this instanceof wrapper) ? Ctor : func;\n return fn.apply(isBind ? thisArg : this, arguments);\n }\n return wrapper;\n }\n\n /**\n * Creates a function like `_.lowerFirst`.\n *\n * @private\n * @param {string} methodName The name of the `String` case method to use.\n * @returns {Function} Returns the new case function.\n */\n function createCaseFirst(methodName) {\n return function(string) {\n string = toString(string);\n\n var strSymbols = hasUnicode(string)\n ? stringToArray(string)\n : undefined;\n\n var chr = strSymbols\n ? strSymbols[0]\n : string.charAt(0);\n\n var trailing = strSymbols\n ? castSlice(strSymbols, 1).join('')\n : string.slice(1);\n\n return chr[methodName]() + trailing;\n };\n }\n\n /**\n * Creates a function like `_.camelCase`.\n *\n * @private\n * @param {Function} callback The function to combine each word.\n * @returns {Function} Returns the new compounder function.\n */\n function createCompounder(callback) {\n return function(string) {\n return arrayReduce(words(deburr(string).replace(reApos, '')), callback, '');\n };\n }\n\n /**\n * Creates a function that produces an instance of `Ctor` regardless of\n * whether it was invoked as part of a `new` expression or by `call` or `apply`.\n *\n * @private\n * @param {Function} Ctor The constructor to wrap.\n * @returns {Function} Returns the new wrapped function.\n */\n function createCtor(Ctor) {\n return function() {\n // Use a `switch` statement to work with class constructors. See\n // http://ecma-international.org/ecma-262/7.0/#sec-ecmascript-function-objects-call-thisargument-argumentslist\n // for more details.\n var args = arguments;\n switch (args.length) {\n case 0: return new Ctor;\n case 1: return new Ctor(args[0]);\n case 2: return new Ctor(args[0], args[1]);\n case 3: return new Ctor(args[0], args[1], args[2]);\n case 4: return new Ctor(args[0], args[1], args[2], args[3]);\n case 5: return new Ctor(args[0], args[1], args[2], args[3], args[4]);\n case 6: return new Ctor(args[0], args[1], args[2], args[3], args[4], args[5]);\n case 7: return new Ctor(args[0], args[1], args[2], args[3], args[4], args[5], args[6]);\n }\n var thisBinding = baseCreate(Ctor.prototype),\n result = Ctor.apply(thisBinding, args);\n\n // Mimic the constructor's `return` behavior.\n // See https://es5.github.io/#x13.2.2 for more details.\n return isObject(result) ? result : thisBinding;\n };\n }\n\n /**\n * Creates a function that wraps `func` to enable currying.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @param {number} arity The arity of `func`.\n * @returns {Function} Returns the new wrapped function.\n */\n function createCurry(func, bitmask, arity) {\n var Ctor = createCtor(func);\n\n function wrapper() {\n var length = arguments.length,\n args = Array(length),\n index = length,\n placeholder = getHolder(wrapper);\n\n while (index--) {\n args[index] = arguments[index];\n }\n var holders = (length < 3 && args[0] !== placeholder && args[length - 1] !== placeholder)\n ? []\n : replaceHolders(args, placeholder);\n\n length -= holders.length;\n if (length < arity) {\n return createRecurry(\n func, bitmask, createHybrid, wrapper.placeholder, undefined,\n args, holders, undefined, undefined, arity - length);\n }\n var fn = (this && this !== root && this instanceof wrapper) ? Ctor : func;\n return apply(fn, this, args);\n }\n return wrapper;\n }\n\n /**\n * Creates a `_.find` or `_.findLast` function.\n *\n * @private\n * @param {Function} findIndexFunc The function to find the collection index.\n * @returns {Function} Returns the new find function.\n */\n function createFind(findIndexFunc) {\n return function(collection, predicate, fromIndex) {\n var iterable = Object(collection);\n if (!isArrayLike(collection)) {\n var iteratee = getIteratee(predicate, 3);\n collection = keys(collection);\n predicate = function(key) { return iteratee(iterable[key], key, iterable); };\n }\n var index = findIndexFunc(collection, predicate, fromIndex);\n return index > -1 ? iterable[iteratee ? collection[index] : index] : undefined;\n };\n }\n\n /**\n * Creates a `_.flow` or `_.flowRight` function.\n *\n * @private\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new flow function.\n */\n function createFlow(fromRight) {\n return flatRest(function(funcs) {\n var length = funcs.length,\n index = length,\n prereq = LodashWrapper.prototype.thru;\n\n if (fromRight) {\n funcs.reverse();\n }\n while (index--) {\n var func = funcs[index];\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n if (prereq && !wrapper && getFuncName(func) == 'wrapper') {\n var wrapper = new LodashWrapper([], true);\n }\n }\n index = wrapper ? index : length;\n while (++index < length) {\n func = funcs[index];\n\n var funcName = getFuncName(func),\n data = funcName == 'wrapper' ? getData(func) : undefined;\n\n if (data && isLaziable(data[0]) &&\n data[1] == (WRAP_ARY_FLAG | WRAP_CURRY_FLAG | WRAP_PARTIAL_FLAG | WRAP_REARG_FLAG) &&\n !data[4].length && data[9] == 1\n ) {\n wrapper = wrapper[getFuncName(data[0])].apply(wrapper, data[3]);\n } else {\n wrapper = (func.length == 1 && isLaziable(func))\n ? wrapper[funcName]()\n : wrapper.thru(func);\n }\n }\n return function() {\n var args = arguments,\n value = args[0];\n\n if (wrapper && args.length == 1 && isArray(value)) {\n return wrapper.plant(value).value();\n }\n var index = 0,\n result = length ? funcs[index].apply(this, args) : value;\n\n while (++index < length) {\n result = funcs[index].call(this, result);\n }\n return result;\n };\n });\n }\n\n /**\n * Creates a function that wraps `func` to invoke it with optional `this`\n * binding of `thisArg`, partial application, and currying.\n *\n * @private\n * @param {Function|string} func The function or method name to wrap.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @param {*} [thisArg] The `this` binding of `func`.\n * @param {Array} [partials] The arguments to prepend to those provided to\n * the new function.\n * @param {Array} [holders] The `partials` placeholder indexes.\n * @param {Array} [partialsRight] The arguments to append to those provided\n * to the new function.\n * @param {Array} [holdersRight] The `partialsRight` placeholder indexes.\n * @param {Array} [argPos] The argument positions of the new function.\n * @param {number} [ary] The arity cap of `func`.\n * @param {number} [arity] The arity of `func`.\n * @returns {Function} Returns the new wrapped function.\n */\n function createHybrid(func, bitmask, thisArg, partials, holders, partialsRight, holdersRight, argPos, ary, arity) {\n var isAry = bitmask & WRAP_ARY_FLAG,\n isBind = bitmask & WRAP_BIND_FLAG,\n isBindKey = bitmask & WRAP_BIND_KEY_FLAG,\n isCurried = bitmask & (WRAP_CURRY_FLAG | WRAP_CURRY_RIGHT_FLAG),\n isFlip = bitmask & WRAP_FLIP_FLAG,\n Ctor = isBindKey ? undefined : createCtor(func);\n\n function wrapper() {\n var length = arguments.length,\n args = Array(length),\n index = length;\n\n while (index--) {\n args[index] = arguments[index];\n }\n if (isCurried) {\n var placeholder = getHolder(wrapper),\n holdersCount = countHolders(args, placeholder);\n }\n if (partials) {\n args = composeArgs(args, partials, holders, isCurried);\n }\n if (partialsRight) {\n args = composeArgsRight(args, partialsRight, holdersRight, isCurried);\n }\n length -= holdersCount;\n if (isCurried && length < arity) {\n var newHolders = replaceHolders(args, placeholder);\n return createRecurry(\n func, bitmask, createHybrid, wrapper.placeholder, thisArg,\n args, newHolders, argPos, ary, arity - length\n );\n }\n var thisBinding = isBind ? thisArg : this,\n fn = isBindKey ? thisBinding[func] : func;\n\n length = args.length;\n if (argPos) {\n args = reorder(args, argPos);\n } else if (isFlip && length > 1) {\n args.reverse();\n }\n if (isAry && ary < length) {\n args.length = ary;\n }\n if (this && this !== root && this instanceof wrapper) {\n fn = Ctor || createCtor(fn);\n }\n return fn.apply(thisBinding, args);\n }\n return wrapper;\n }\n\n /**\n * Creates a function like `_.invertBy`.\n *\n * @private\n * @param {Function} setter The function to set accumulator values.\n * @param {Function} toIteratee The function to resolve iteratees.\n * @returns {Function} Returns the new inverter function.\n */\n function createInverter(setter, toIteratee) {\n return function(object, iteratee) {\n return baseInverter(object, setter, toIteratee(iteratee), {});\n };\n }\n\n /**\n * Creates a function that performs a mathematical operation on two values.\n *\n * @private\n * @param {Function} operator The function to perform the operation.\n * @param {number} [defaultValue] The value used for `undefined` arguments.\n * @returns {Function} Returns the new mathematical operation function.\n */\n function createMathOperation(operator, defaultValue) {\n return function(value, other) {\n var result;\n if (value === undefined && other === undefined) {\n return defaultValue;\n }\n if (value !== undefined) {\n result = value;\n }\n if (other !== undefined) {\n if (result === undefined) {\n return other;\n }\n if (typeof value == 'string' || typeof other == 'string') {\n value = baseToString(value);\n other = baseToString(other);\n } else {\n value = baseToNumber(value);\n other = baseToNumber(other);\n }\n result = operator(value, other);\n }\n return result;\n };\n }\n\n /**\n * Creates a function like `_.over`.\n *\n * @private\n * @param {Function} arrayFunc The function to iterate over iteratees.\n * @returns {Function} Returns the new over function.\n */\n function createOver(arrayFunc) {\n return flatRest(function(iteratees) {\n iteratees = arrayMap(iteratees, baseUnary(getIteratee()));\n return baseRest(function(args) {\n var thisArg = this;\n return arrayFunc(iteratees, function(iteratee) {\n return apply(iteratee, thisArg, args);\n });\n });\n });\n }\n\n /**\n * Creates the padding for `string` based on `length`. The `chars` string\n * is truncated if the number of characters exceeds `length`.\n *\n * @private\n * @param {number} length The padding length.\n * @param {string} [chars=' '] The string used as padding.\n * @returns {string} Returns the padding for `string`.\n */\n function createPadding(length, chars) {\n chars = chars === undefined ? ' ' : baseToString(chars);\n\n var charsLength = chars.length;\n if (charsLength < 2) {\n return charsLength ? baseRepeat(chars, length) : chars;\n }\n var result = baseRepeat(chars, nativeCeil(length / stringSize(chars)));\n return hasUnicode(chars)\n ? castSlice(stringToArray(result), 0, length).join('')\n : result.slice(0, length);\n }\n\n /**\n * Creates a function that wraps `func` to invoke it with the `this` binding\n * of `thisArg` and `partials` prepended to the arguments it receives.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @param {*} thisArg The `this` binding of `func`.\n * @param {Array} partials The arguments to prepend to those provided to\n * the new function.\n * @returns {Function} Returns the new wrapped function.\n */\n function createPartial(func, bitmask, thisArg, partials) {\n var isBind = bitmask & WRAP_BIND_FLAG,\n Ctor = createCtor(func);\n\n function wrapper() {\n var argsIndex = -1,\n argsLength = arguments.length,\n leftIndex = -1,\n leftLength = partials.length,\n args = Array(leftLength + argsLength),\n fn = (this && this !== root && this instanceof wrapper) ? Ctor : func;\n\n while (++leftIndex < leftLength) {\n args[leftIndex] = partials[leftIndex];\n }\n while (argsLength--) {\n args[leftIndex++] = arguments[++argsIndex];\n }\n return apply(fn, isBind ? thisArg : this, args);\n }\n return wrapper;\n }\n\n /**\n * Creates a `_.range` or `_.rangeRight` function.\n *\n * @private\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new range function.\n */\n function createRange(fromRight) {\n return function(start, end, step) {\n if (step && typeof step != 'number' && isIterateeCall(start, end, step)) {\n end = step = undefined;\n }\n // Ensure the sign of `-0` is preserved.\n start = toFinite(start);\n if (end === undefined) {\n end = start;\n start = 0;\n } else {\n end = toFinite(end);\n }\n step = step === undefined ? (start < end ? 1 : -1) : toFinite(step);\n return baseRange(start, end, step, fromRight);\n };\n }\n\n /**\n * Creates a function that performs a relational operation on two values.\n *\n * @private\n * @param {Function} operator The function to perform the operation.\n * @returns {Function} Returns the new relational operation function.\n */\n function createRelationalOperation(operator) {\n return function(value, other) {\n if (!(typeof value == 'string' && typeof other == 'string')) {\n value = toNumber(value);\n other = toNumber(other);\n }\n return operator(value, other);\n };\n }\n\n /**\n * Creates a function that wraps `func` to continue currying.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @param {Function} wrapFunc The function to create the `func` wrapper.\n * @param {*} placeholder The placeholder value.\n * @param {*} [thisArg] The `this` binding of `func`.\n * @param {Array} [partials] The arguments to prepend to those provided to\n * the new function.\n * @param {Array} [holders] The `partials` placeholder indexes.\n * @param {Array} [argPos] The argument positions of the new function.\n * @param {number} [ary] The arity cap of `func`.\n * @param {number} [arity] The arity of `func`.\n * @returns {Function} Returns the new wrapped function.\n */\n function createRecurry(func, bitmask, wrapFunc, placeholder, thisArg, partials, holders, argPos, ary, arity) {\n var isCurry = bitmask & WRAP_CURRY_FLAG,\n newHolders = isCurry ? holders : undefined,\n newHoldersRight = isCurry ? undefined : holders,\n newPartials = isCurry ? partials : undefined,\n newPartialsRight = isCurry ? undefined : partials;\n\n bitmask |= (isCurry ? WRAP_PARTIAL_FLAG : WRAP_PARTIAL_RIGHT_FLAG);\n bitmask &= ~(isCurry ? WRAP_PARTIAL_RIGHT_FLAG : WRAP_PARTIAL_FLAG);\n\n if (!(bitmask & WRAP_CURRY_BOUND_FLAG)) {\n bitmask &= ~(WRAP_BIND_FLAG | WRAP_BIND_KEY_FLAG);\n }\n var newData = [\n func, bitmask, thisArg, newPartials, newHolders, newPartialsRight,\n newHoldersRight, argPos, ary, arity\n ];\n\n var result = wrapFunc.apply(undefined, newData);\n if (isLaziable(func)) {\n setData(result, newData);\n }\n result.placeholder = placeholder;\n return setWrapToString(result, func, bitmask);\n }\n\n /**\n * Creates a function like `_.round`.\n *\n * @private\n * @param {string} methodName The name of the `Math` method to use when rounding.\n * @returns {Function} Returns the new round function.\n */\n function createRound(methodName) {\n var func = Math[methodName];\n return function(number, precision) {\n number = toNumber(number);\n precision = precision == null ? 0 : nativeMin(toInteger(precision), 292);\n if (precision && nativeIsFinite(number)) {\n // Shift with exponential notation to avoid floating-point issues.\n // See [MDN](https://mdn.io/round#Examples) for more details.\n var pair = (toString(number) + 'e').split('e'),\n value = func(pair[0] + 'e' + (+pair[1] + precision));\n\n pair = (toString(value) + 'e').split('e');\n return +(pair[0] + 'e' + (+pair[1] - precision));\n }\n return func(number);\n };\n }\n\n /**\n * Creates a set object of `values`.\n *\n * @private\n * @param {Array} values The values to add to the set.\n * @returns {Object} Returns the new set.\n */\n var createSet = !(Set && (1 / setToArray(new Set([,-0]))[1]) == INFINITY) ? noop : function(values) {\n return new Set(values);\n };\n\n /**\n * Creates a `_.toPairs` or `_.toPairsIn` function.\n *\n * @private\n * @param {Function} keysFunc The function to get the keys of a given object.\n * @returns {Function} Returns the new pairs function.\n */\n function createToPairs(keysFunc) {\n return function(object) {\n var tag = getTag(object);\n if (tag == mapTag) {\n return mapToArray(object);\n }\n if (tag == setTag) {\n return setToPairs(object);\n }\n return baseToPairs(object, keysFunc(object));\n };\n }\n\n /**\n * Creates a function that either curries or invokes `func` with optional\n * `this` binding and partially applied arguments.\n *\n * @private\n * @param {Function|string} func The function or method name to wrap.\n * @param {number} bitmask The bitmask flags.\n * 1 - `_.bind`\n * 2 - `_.bindKey`\n * 4 - `_.curry` or `_.curryRight` of a bound function\n * 8 - `_.curry`\n * 16 - `_.curryRight`\n * 32 - `_.partial`\n * 64 - `_.partialRight`\n * 128 - `_.rearg`\n * 256 - `_.ary`\n * 512 - `_.flip`\n * @param {*} [thisArg] The `this` binding of `func`.\n * @param {Array} [partials] The arguments to be partially applied.\n * @param {Array} [holders] The `partials` placeholder indexes.\n * @param {Array} [argPos] The argument positions of the new function.\n * @param {number} [ary] The arity cap of `func`.\n * @param {number} [arity] The arity of `func`.\n * @returns {Function} Returns the new wrapped function.\n */\n function createWrap(func, bitmask, thisArg, partials, holders, argPos, ary, arity) {\n var isBindKey = bitmask & WRAP_BIND_KEY_FLAG;\n if (!isBindKey && typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n var length = partials ? partials.length : 0;\n if (!length) {\n bitmask &= ~(WRAP_PARTIAL_FLAG | WRAP_PARTIAL_RIGHT_FLAG);\n partials = holders = undefined;\n }\n ary = ary === undefined ? ary : nativeMax(toInteger(ary), 0);\n arity = arity === undefined ? arity : toInteger(arity);\n length -= holders ? holders.length : 0;\n\n if (bitmask & WRAP_PARTIAL_RIGHT_FLAG) {\n var partialsRight = partials,\n holdersRight = holders;\n\n partials = holders = undefined;\n }\n var data = isBindKey ? undefined : getData(func);\n\n var newData = [\n func, bitmask, thisArg, partials, holders, partialsRight, holdersRight,\n argPos, ary, arity\n ];\n\n if (data) {\n mergeData(newData, data);\n }\n func = newData[0];\n bitmask = newData[1];\n thisArg = newData[2];\n partials = newData[3];\n holders = newData[4];\n arity = newData[9] = newData[9] === undefined\n ? (isBindKey ? 0 : func.length)\n : nativeMax(newData[9] - length, 0);\n\n if (!arity && bitmask & (WRAP_CURRY_FLAG | WRAP_CURRY_RIGHT_FLAG)) {\n bitmask &= ~(WRAP_CURRY_FLAG | WRAP_CURRY_RIGHT_FLAG);\n }\n if (!bitmask || bitmask == WRAP_BIND_FLAG) {\n var result = createBind(func, bitmask, thisArg);\n } else if (bitmask == WRAP_CURRY_FLAG || bitmask == WRAP_CURRY_RIGHT_FLAG) {\n result = createCurry(func, bitmask, arity);\n } else if ((bitmask == WRAP_PARTIAL_FLAG || bitmask == (WRAP_BIND_FLAG | WRAP_PARTIAL_FLAG)) && !holders.length) {\n result = createPartial(func, bitmask, thisArg, partials);\n } else {\n result = createHybrid.apply(undefined, newData);\n }\n var setter = data ? baseSetData : setData;\n return setWrapToString(setter(result, newData), func, bitmask);\n }\n\n /**\n * Used by `_.defaults` to customize its `_.assignIn` use to assign properties\n * of source objects to the destination object for all destination properties\n * that resolve to `undefined`.\n *\n * @private\n * @param {*} objValue The destination value.\n * @param {*} srcValue The source value.\n * @param {string} key The key of the property to assign.\n * @param {Object} object The parent object of `objValue`.\n * @returns {*} Returns the value to assign.\n */\n function customDefaultsAssignIn(objValue, srcValue, key, object) {\n if (objValue === undefined ||\n (eq(objValue, objectProto[key]) && !hasOwnProperty.call(object, key))) {\n return srcValue;\n }\n return objValue;\n }\n\n /**\n * Used by `_.defaultsDeep` to customize its `_.merge` use to merge source\n * objects into destination objects that are passed thru.\n *\n * @private\n * @param {*} objValue The destination value.\n * @param {*} srcValue The source value.\n * @param {string} key The key of the property to merge.\n * @param {Object} object The parent object of `objValue`.\n * @param {Object} source The parent object of `srcValue`.\n * @param {Object} [stack] Tracks traversed source values and their merged\n * counterparts.\n * @returns {*} Returns the value to assign.\n */\n function customDefaultsMerge(objValue, srcValue, key, object, source, stack) {\n if (isObject(objValue) && isObject(srcValue)) {\n // Recursively merge objects and arrays (susceptible to call stack limits).\n stack.set(srcValue, objValue);\n baseMerge(objValue, srcValue, undefined, customDefaultsMerge, stack);\n stack['delete'](srcValue);\n }\n return objValue;\n }\n\n /**\n * Used by `_.omit` to customize its `_.cloneDeep` use to only clone plain\n * objects.\n *\n * @private\n * @param {*} value The value to inspect.\n * @param {string} key The key of the property to inspect.\n * @returns {*} Returns the uncloned value or `undefined` to defer cloning to `_.cloneDeep`.\n */\n function customOmitClone(value) {\n return isPlainObject(value) ? undefined : value;\n }\n\n /**\n * A specialized version of `baseIsEqualDeep` for arrays with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Array} array The array to compare.\n * @param {Array} other The other array to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `array` and `other` objects.\n * @returns {boolean} Returns `true` if the arrays are equivalent, else `false`.\n */\n function equalArrays(array, other, bitmask, customizer, equalFunc, stack) {\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n arrLength = array.length,\n othLength = other.length;\n\n if (arrLength != othLength && !(isPartial && othLength > arrLength)) {\n return false;\n }\n // Check that cyclic values are equal.\n var arrStacked = stack.get(array);\n var othStacked = stack.get(other);\n if (arrStacked && othStacked) {\n return arrStacked == other && othStacked == array;\n }\n var index = -1,\n result = true,\n seen = (bitmask & COMPARE_UNORDERED_FLAG) ? new SetCache : undefined;\n\n stack.set(array, other);\n stack.set(other, array);\n\n // Ignore non-index properties.\n while (++index < arrLength) {\n var arrValue = array[index],\n othValue = other[index];\n\n if (customizer) {\n var compared = isPartial\n ? customizer(othValue, arrValue, index, other, array, stack)\n : customizer(arrValue, othValue, index, array, other, stack);\n }\n if (compared !== undefined) {\n if (compared) {\n continue;\n }\n result = false;\n break;\n }\n // Recursively compare arrays (susceptible to call stack limits).\n if (seen) {\n if (!arraySome(other, function(othValue, othIndex) {\n if (!cacheHas(seen, othIndex) &&\n (arrValue === othValue || equalFunc(arrValue, othValue, bitmask, customizer, stack))) {\n return seen.push(othIndex);\n }\n })) {\n result = false;\n break;\n }\n } else if (!(\n arrValue === othValue ||\n equalFunc(arrValue, othValue, bitmask, customizer, stack)\n )) {\n result = false;\n break;\n }\n }\n stack['delete'](array);\n stack['delete'](other);\n return result;\n }\n\n /**\n * A specialized version of `baseIsEqualDeep` for comparing objects of\n * the same `toStringTag`.\n *\n * **Note:** This function only supports comparing values with tags of\n * `Boolean`, `Date`, `Error`, `Number`, `RegExp`, or `String`.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {string} tag The `toStringTag` of the objects to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\n function equalByTag(object, other, tag, bitmask, customizer, equalFunc, stack) {\n switch (tag) {\n case dataViewTag:\n if ((object.byteLength != other.byteLength) ||\n (object.byteOffset != other.byteOffset)) {\n return false;\n }\n object = object.buffer;\n other = other.buffer;\n\n case arrayBufferTag:\n if ((object.byteLength != other.byteLength) ||\n !equalFunc(new Uint8Array(object), new Uint8Array(other))) {\n return false;\n }\n return true;\n\n case boolTag:\n case dateTag:\n case numberTag:\n // Coerce booleans to `1` or `0` and dates to milliseconds.\n // Invalid dates are coerced to `NaN`.\n return eq(+object, +other);\n\n case errorTag:\n return object.name == other.name && object.message == other.message;\n\n case regexpTag:\n case stringTag:\n // Coerce regexes to strings and treat strings, primitives and objects,\n // as equal. See http://www.ecma-international.org/ecma-262/7.0/#sec-regexp.prototype.tostring\n // for more details.\n return object == (other + '');\n\n case mapTag:\n var convert = mapToArray;\n\n case setTag:\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG;\n convert || (convert = setToArray);\n\n if (object.size != other.size && !isPartial) {\n return false;\n }\n // Assume cyclic values are equal.\n var stacked = stack.get(object);\n if (stacked) {\n return stacked == other;\n }\n bitmask |= COMPARE_UNORDERED_FLAG;\n\n // Recursively compare objects (susceptible to call stack limits).\n stack.set(object, other);\n var result = equalArrays(convert(object), convert(other), bitmask, customizer, equalFunc, stack);\n stack['delete'](object);\n return result;\n\n case symbolTag:\n if (symbolValueOf) {\n return symbolValueOf.call(object) == symbolValueOf.call(other);\n }\n }\n return false;\n }\n\n /**\n * A specialized version of `baseIsEqualDeep` for objects with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\n function equalObjects(object, other, bitmask, customizer, equalFunc, stack) {\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n objProps = getAllKeys(object),\n objLength = objProps.length,\n othProps = getAllKeys(other),\n othLength = othProps.length;\n\n if (objLength != othLength && !isPartial) {\n return false;\n }\n var index = objLength;\n while (index--) {\n var key = objProps[index];\n if (!(isPartial ? key in other : hasOwnProperty.call(other, key))) {\n return false;\n }\n }\n // Check that cyclic values are equal.\n var objStacked = stack.get(object);\n var othStacked = stack.get(other);\n if (objStacked && othStacked) {\n return objStacked == other && othStacked == object;\n }\n var result = true;\n stack.set(object, other);\n stack.set(other, object);\n\n var skipCtor = isPartial;\n while (++index < objLength) {\n key = objProps[index];\n var objValue = object[key],\n othValue = other[key];\n\n if (customizer) {\n var compared = isPartial\n ? customizer(othValue, objValue, key, other, object, stack)\n : customizer(objValue, othValue, key, object, other, stack);\n }\n // Recursively compare objects (susceptible to call stack limits).\n if (!(compared === undefined\n ? (objValue === othValue || equalFunc(objValue, othValue, bitmask, customizer, stack))\n : compared\n )) {\n result = false;\n break;\n }\n skipCtor || (skipCtor = key == 'constructor');\n }\n if (result && !skipCtor) {\n var objCtor = object.constructor,\n othCtor = other.constructor;\n\n // Non `Object` object instances with different constructors are not equal.\n if (objCtor != othCtor &&\n ('constructor' in object && 'constructor' in other) &&\n !(typeof objCtor == 'function' && objCtor instanceof objCtor &&\n typeof othCtor == 'function' && othCtor instanceof othCtor)) {\n result = false;\n }\n }\n stack['delete'](object);\n stack['delete'](other);\n return result;\n }\n\n /**\n * A specialized version of `baseRest` which flattens the rest array.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @returns {Function} Returns the new function.\n */\n function flatRest(func) {\n return setToString(overRest(func, undefined, flatten), func + '');\n }\n\n /**\n * Creates an array of own enumerable property names and symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names and symbols.\n */\n function getAllKeys(object) {\n return baseGetAllKeys(object, keys, getSymbols);\n }\n\n /**\n * Creates an array of own and inherited enumerable property names and\n * symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names and symbols.\n */\n function getAllKeysIn(object) {\n return baseGetAllKeys(object, keysIn, getSymbolsIn);\n }\n\n /**\n * Gets metadata for `func`.\n *\n * @private\n * @param {Function} func The function to query.\n * @returns {*} Returns the metadata for `func`.\n */\n var getData = !metaMap ? noop : function(func) {\n return metaMap.get(func);\n };\n\n /**\n * Gets the name of `func`.\n *\n * @private\n * @param {Function} func The function to query.\n * @returns {string} Returns the function name.\n */\n function getFuncName(func) {\n var result = (func.name + ''),\n array = realNames[result],\n length = hasOwnProperty.call(realNames, result) ? array.length : 0;\n\n while (length--) {\n var data = array[length],\n otherFunc = data.func;\n if (otherFunc == null || otherFunc == func) {\n return data.name;\n }\n }\n return result;\n }\n\n /**\n * Gets the argument placeholder value for `func`.\n *\n * @private\n * @param {Function} func The function to inspect.\n * @returns {*} Returns the placeholder value.\n */\n function getHolder(func) {\n var object = hasOwnProperty.call(lodash, 'placeholder') ? lodash : func;\n return object.placeholder;\n }\n\n /**\n * Gets the appropriate \"iteratee\" function. If `_.iteratee` is customized,\n * this function returns the custom method, otherwise it returns `baseIteratee`.\n * If arguments are provided, the chosen function is invoked with them and\n * its result is returned.\n *\n * @private\n * @param {*} [value] The value to convert to an iteratee.\n * @param {number} [arity] The arity of the created iteratee.\n * @returns {Function} Returns the chosen function or its result.\n */\n function getIteratee() {\n var result = lodash.iteratee || iteratee;\n result = result === iteratee ? baseIteratee : result;\n return arguments.length ? result(arguments[0], arguments[1]) : result;\n }\n\n /**\n * Gets the data for `map`.\n *\n * @private\n * @param {Object} map The map to query.\n * @param {string} key The reference key.\n * @returns {*} Returns the map data.\n */\n function getMapData(map, key) {\n var data = map.__data__;\n return isKeyable(key)\n ? data[typeof key == 'string' ? 'string' : 'hash']\n : data.map;\n }\n\n /**\n * Gets the property names, values, and compare flags of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the match data of `object`.\n */\n function getMatchData(object) {\n var result = keys(object),\n length = result.length;\n\n while (length--) {\n var key = result[length],\n value = object[key];\n\n result[length] = [key, value, isStrictComparable(value)];\n }\n return result;\n }\n\n /**\n * Gets the native function at `key` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the method to get.\n * @returns {*} Returns the function if it's native, else `undefined`.\n */\n function getNative(object, key) {\n var value = getValue(object, key);\n return baseIsNative(value) ? value : undefined;\n }\n\n /**\n * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the raw `toStringTag`.\n */\n function getRawTag(value) {\n var isOwn = hasOwnProperty.call(value, symToStringTag),\n tag = value[symToStringTag];\n\n try {\n value[symToStringTag] = undefined;\n var unmasked = true;\n } catch (e) {}\n\n var result = nativeObjectToString.call(value);\n if (unmasked) {\n if (isOwn) {\n value[symToStringTag] = tag;\n } else {\n delete value[symToStringTag];\n }\n }\n return result;\n }\n\n /**\n * Creates an array of the own enumerable symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of symbols.\n */\n var getSymbols = !nativeGetSymbols ? stubArray : function(object) {\n if (object == null) {\n return [];\n }\n object = Object(object);\n return arrayFilter(nativeGetSymbols(object), function(symbol) {\n return propertyIsEnumerable.call(object, symbol);\n });\n };\n\n /**\n * Creates an array of the own and inherited enumerable symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of symbols.\n */\n var getSymbolsIn = !nativeGetSymbols ? stubArray : function(object) {\n var result = [];\n while (object) {\n arrayPush(result, getSymbols(object));\n object = getPrototype(object);\n }\n return result;\n };\n\n /**\n * Gets the `toStringTag` of `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\n var getTag = baseGetTag;\n\n // Fallback for data views, maps, sets, and weak maps in IE 11 and promises in Node.js < 6.\n if ((DataView && getTag(new DataView(new ArrayBuffer(1))) != dataViewTag) ||\n (Map && getTag(new Map) != mapTag) ||\n (Promise && getTag(Promise.resolve()) != promiseTag) ||\n (Set && getTag(new Set) != setTag) ||\n (WeakMap && getTag(new WeakMap) != weakMapTag)) {\n getTag = function(value) {\n var result = baseGetTag(value),\n Ctor = result == objectTag ? value.constructor : undefined,\n ctorString = Ctor ? toSource(Ctor) : '';\n\n if (ctorString) {\n switch (ctorString) {\n case dataViewCtorString: return dataViewTag;\n case mapCtorString: return mapTag;\n case promiseCtorString: return promiseTag;\n case setCtorString: return setTag;\n case weakMapCtorString: return weakMapTag;\n }\n }\n return result;\n };\n }\n\n /**\n * Gets the view, applying any `transforms` to the `start` and `end` positions.\n *\n * @private\n * @param {number} start The start of the view.\n * @param {number} end The end of the view.\n * @param {Array} transforms The transformations to apply to the view.\n * @returns {Object} Returns an object containing the `start` and `end`\n * positions of the view.\n */\n function getView(start, end, transforms) {\n var index = -1,\n length = transforms.length;\n\n while (++index < length) {\n var data = transforms[index],\n size = data.size;\n\n switch (data.type) {\n case 'drop': start += size; break;\n case 'dropRight': end -= size; break;\n case 'take': end = nativeMin(end, start + size); break;\n case 'takeRight': start = nativeMax(start, end - size); break;\n }\n }\n return { 'start': start, 'end': end };\n }\n\n /**\n * Extracts wrapper details from the `source` body comment.\n *\n * @private\n * @param {string} source The source to inspect.\n * @returns {Array} Returns the wrapper details.\n */\n function getWrapDetails(source) {\n var match = source.match(reWrapDetails);\n return match ? match[1].split(reSplitDetails) : [];\n }\n\n /**\n * Checks if `path` exists on `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} path The path to check.\n * @param {Function} hasFunc The function to check properties.\n * @returns {boolean} Returns `true` if `path` exists, else `false`.\n */\n function hasPath(object, path, hasFunc) {\n path = castPath(path, object);\n\n var index = -1,\n length = path.length,\n result = false;\n\n while (++index < length) {\n var key = toKey(path[index]);\n if (!(result = object != null && hasFunc(object, key))) {\n break;\n }\n object = object[key];\n }\n if (result || ++index != length) {\n return result;\n }\n length = object == null ? 0 : object.length;\n return !!length && isLength(length) && isIndex(key, length) &&\n (isArray(object) || isArguments(object));\n }\n\n /**\n * Initializes an array clone.\n *\n * @private\n * @param {Array} array The array to clone.\n * @returns {Array} Returns the initialized clone.\n */\n function initCloneArray(array) {\n var length = array.length,\n result = new array.constructor(length);\n\n // Add properties assigned by `RegExp#exec`.\n if (length && typeof array[0] == 'string' && hasOwnProperty.call(array, 'index')) {\n result.index = array.index;\n result.input = array.input;\n }\n return result;\n }\n\n /**\n * Initializes an object clone.\n *\n * @private\n * @param {Object} object The object to clone.\n * @returns {Object} Returns the initialized clone.\n */\n function initCloneObject(object) {\n return (typeof object.constructor == 'function' && !isPrototype(object))\n ? baseCreate(getPrototype(object))\n : {};\n }\n\n /**\n * Initializes an object clone based on its `toStringTag`.\n *\n * **Note:** This function only supports cloning values with tags of\n * `Boolean`, `Date`, `Error`, `Map`, `Number`, `RegExp`, `Set`, or `String`.\n *\n * @private\n * @param {Object} object The object to clone.\n * @param {string} tag The `toStringTag` of the object to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the initialized clone.\n */\n function initCloneByTag(object, tag, isDeep) {\n var Ctor = object.constructor;\n switch (tag) {\n case arrayBufferTag:\n return cloneArrayBuffer(object);\n\n case boolTag:\n case dateTag:\n return new Ctor(+object);\n\n case dataViewTag:\n return cloneDataView(object, isDeep);\n\n case float32Tag: case float64Tag:\n case int8Tag: case int16Tag: case int32Tag:\n case uint8Tag: case uint8ClampedTag: case uint16Tag: case uint32Tag:\n return cloneTypedArray(object, isDeep);\n\n case mapTag:\n return new Ctor;\n\n case numberTag:\n case stringTag:\n return new Ctor(object);\n\n case regexpTag:\n return cloneRegExp(object);\n\n case setTag:\n return new Ctor;\n\n case symbolTag:\n return cloneSymbol(object);\n }\n }\n\n /**\n * Inserts wrapper `details` in a comment at the top of the `source` body.\n *\n * @private\n * @param {string} source The source to modify.\n * @returns {Array} details The details to insert.\n * @returns {string} Returns the modified source.\n */\n function insertWrapDetails(source, details) {\n var length = details.length;\n if (!length) {\n return source;\n }\n var lastIndex = length - 1;\n details[lastIndex] = (length > 1 ? '& ' : '') + details[lastIndex];\n details = details.join(length > 2 ? ', ' : ' ');\n return source.replace(reWrapComment, '{\\n/* [wrapped with ' + details + '] */\\n');\n }\n\n /**\n * Checks if `value` is a flattenable `arguments` object or array.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is flattenable, else `false`.\n */\n function isFlattenable(value) {\n return isArray(value) || isArguments(value) ||\n !!(spreadableSymbol && value && value[spreadableSymbol]);\n }\n\n /**\n * Checks if `value` is a valid array-like index.\n *\n * @private\n * @param {*} value The value to check.\n * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n */\n function isIndex(value, length) {\n var type = typeof value;\n length = length == null ? MAX_SAFE_INTEGER : length;\n\n return !!length &&\n (type == 'number' ||\n (type != 'symbol' && reIsUint.test(value))) &&\n (value > -1 && value % 1 == 0 && value < length);\n }\n\n /**\n * Checks if the given arguments are from an iteratee call.\n *\n * @private\n * @param {*} value The potential iteratee value argument.\n * @param {*} index The potential iteratee index or key argument.\n * @param {*} object The potential iteratee object argument.\n * @returns {boolean} Returns `true` if the arguments are from an iteratee call,\n * else `false`.\n */\n function isIterateeCall(value, index, object) {\n if (!isObject(object)) {\n return false;\n }\n var type = typeof index;\n if (type == 'number'\n ? (isArrayLike(object) && isIndex(index, object.length))\n : (type == 'string' && index in object)\n ) {\n return eq(object[index], value);\n }\n return false;\n }\n\n /**\n * Checks if `value` is a property name and not a property path.\n *\n * @private\n * @param {*} value The value to check.\n * @param {Object} [object] The object to query keys on.\n * @returns {boolean} Returns `true` if `value` is a property name, else `false`.\n */\n function isKey(value, object) {\n if (isArray(value)) {\n return false;\n }\n var type = typeof value;\n if (type == 'number' || type == 'symbol' || type == 'boolean' ||\n value == null || isSymbol(value)) {\n return true;\n }\n return reIsPlainProp.test(value) || !reIsDeepProp.test(value) ||\n (object != null && value in Object(object));\n }\n\n /**\n * Checks if `value` is suitable for use as unique object key.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is suitable, else `false`.\n */\n function isKeyable(value) {\n var type = typeof value;\n return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean')\n ? (value !== '__proto__')\n : (value === null);\n }\n\n /**\n * Checks if `func` has a lazy counterpart.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` has a lazy counterpart,\n * else `false`.\n */\n function isLaziable(func) {\n var funcName = getFuncName(func),\n other = lodash[funcName];\n\n if (typeof other != 'function' || !(funcName in LazyWrapper.prototype)) {\n return false;\n }\n if (func === other) {\n return true;\n }\n var data = getData(other);\n return !!data && func === data[0];\n }\n\n /**\n * Checks if `func` has its source masked.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` is masked, else `false`.\n */\n function isMasked(func) {\n return !!maskSrcKey && (maskSrcKey in func);\n }\n\n /**\n * Checks if `func` is capable of being masked.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `func` is maskable, else `false`.\n */\n var isMaskable = coreJsData ? isFunction : stubFalse;\n\n /**\n * Checks if `value` is likely a prototype object.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.\n */\n function isPrototype(value) {\n var Ctor = value && value.constructor,\n proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto;\n\n return value === proto;\n }\n\n /**\n * Checks if `value` is suitable for strict equality comparisons, i.e. `===`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` if suitable for strict\n * equality comparisons, else `false`.\n */\n function isStrictComparable(value) {\n return value === value && !isObject(value);\n }\n\n /**\n * A specialized version of `matchesProperty` for source values suitable\n * for strict equality comparisons, i.e. `===`.\n *\n * @private\n * @param {string} key The key of the property to get.\n * @param {*} srcValue The value to match.\n * @returns {Function} Returns the new spec function.\n */\n function matchesStrictComparable(key, srcValue) {\n return function(object) {\n if (object == null) {\n return false;\n }\n return object[key] === srcValue &&\n (srcValue !== undefined || (key in Object(object)));\n };\n }\n\n /**\n * A specialized version of `_.memoize` which clears the memoized function's\n * cache when it exceeds `MAX_MEMOIZE_SIZE`.\n *\n * @private\n * @param {Function} func The function to have its output memoized.\n * @returns {Function} Returns the new memoized function.\n */\n function memoizeCapped(func) {\n var result = memoize(func, function(key) {\n if (cache.size === MAX_MEMOIZE_SIZE) {\n cache.clear();\n }\n return key;\n });\n\n var cache = result.cache;\n return result;\n }\n\n /**\n * Merges the function metadata of `source` into `data`.\n *\n * Merging metadata reduces the number of wrappers used to invoke a function.\n * This is possible because methods like `_.bind`, `_.curry`, and `_.partial`\n * may be applied regardless of execution order. Methods like `_.ary` and\n * `_.rearg` modify function arguments, making the order in which they are\n * executed important, preventing the merging of metadata. However, we make\n * an exception for a safe combined case where curried functions have `_.ary`\n * and or `_.rearg` applied.\n *\n * @private\n * @param {Array} data The destination metadata.\n * @param {Array} source The source metadata.\n * @returns {Array} Returns `data`.\n */\n function mergeData(data, source) {\n var bitmask = data[1],\n srcBitmask = source[1],\n newBitmask = bitmask | srcBitmask,\n isCommon = newBitmask < (WRAP_BIND_FLAG | WRAP_BIND_KEY_FLAG | WRAP_ARY_FLAG);\n\n var isCombo =\n ((srcBitmask == WRAP_ARY_FLAG) && (bitmask == WRAP_CURRY_FLAG)) ||\n ((srcBitmask == WRAP_ARY_FLAG) && (bitmask == WRAP_REARG_FLAG) && (data[7].length <= source[8])) ||\n ((srcBitmask == (WRAP_ARY_FLAG | WRAP_REARG_FLAG)) && (source[7].length <= source[8]) && (bitmask == WRAP_CURRY_FLAG));\n\n // Exit early if metadata can't be merged.\n if (!(isCommon || isCombo)) {\n return data;\n }\n // Use source `thisArg` if available.\n if (srcBitmask & WRAP_BIND_FLAG) {\n data[2] = source[2];\n // Set when currying a bound function.\n newBitmask |= bitmask & WRAP_BIND_FLAG ? 0 : WRAP_CURRY_BOUND_FLAG;\n }\n // Compose partial arguments.\n var value = source[3];\n if (value) {\n var partials = data[3];\n data[3] = partials ? composeArgs(partials, value, source[4]) : value;\n data[4] = partials ? replaceHolders(data[3], PLACEHOLDER) : source[4];\n }\n // Compose partial right arguments.\n value = source[5];\n if (value) {\n partials = data[5];\n data[5] = partials ? composeArgsRight(partials, value, source[6]) : value;\n data[6] = partials ? replaceHolders(data[5], PLACEHOLDER) : source[6];\n }\n // Use source `argPos` if available.\n value = source[7];\n if (value) {\n data[7] = value;\n }\n // Use source `ary` if it's smaller.\n if (srcBitmask & WRAP_ARY_FLAG) {\n data[8] = data[8] == null ? source[8] : nativeMin(data[8], source[8]);\n }\n // Use source `arity` if one is not provided.\n if (data[9] == null) {\n data[9] = source[9];\n }\n // Use source `func` and merge bitmasks.\n data[0] = source[0];\n data[1] = newBitmask;\n\n return data;\n }\n\n /**\n * This function is like\n * [`Object.keys`](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * except that it includes inherited enumerable properties.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\n function nativeKeysIn(object) {\n var result = [];\n if (object != null) {\n for (var key in Object(object)) {\n result.push(key);\n }\n }\n return result;\n }\n\n /**\n * Converts `value` to a string using `Object.prototype.toString`.\n *\n * @private\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n */\n function objectToString(value) {\n return nativeObjectToString.call(value);\n }\n\n /**\n * A specialized version of `baseRest` which transforms the rest array.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @param {Function} transform The rest array transform.\n * @returns {Function} Returns the new function.\n */\n function overRest(func, start, transform) {\n start = nativeMax(start === undefined ? (func.length - 1) : start, 0);\n return function() {\n var args = arguments,\n index = -1,\n length = nativeMax(args.length - start, 0),\n array = Array(length);\n\n while (++index < length) {\n array[index] = args[start + index];\n }\n index = -1;\n var otherArgs = Array(start + 1);\n while (++index < start) {\n otherArgs[index] = args[index];\n }\n otherArgs[start] = transform(array);\n return apply(func, this, otherArgs);\n };\n }\n\n /**\n * Gets the parent value at `path` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array} path The path to get the parent value of.\n * @returns {*} Returns the parent value.\n */\n function parent(object, path) {\n return path.length < 2 ? object : baseGet(object, baseSlice(path, 0, -1));\n }\n\n /**\n * Reorder `array` according to the specified indexes where the element at\n * the first index is assigned as the first element, the element at\n * the second index is assigned as the second element, and so on.\n *\n * @private\n * @param {Array} array The array to reorder.\n * @param {Array} indexes The arranged array indexes.\n * @returns {Array} Returns `array`.\n */\n function reorder(array, indexes) {\n var arrLength = array.length,\n length = nativeMin(indexes.length, arrLength),\n oldArray = copyArray(array);\n\n while (length--) {\n var index = indexes[length];\n array[length] = isIndex(index, arrLength) ? oldArray[index] : undefined;\n }\n return array;\n }\n\n /**\n * Gets the value at `key`, unless `key` is \"__proto__\" or \"constructor\".\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\n function safeGet(object, key) {\n if (key === 'constructor' && typeof object[key] === 'function') {\n return;\n }\n\n if (key == '__proto__') {\n return;\n }\n\n return object[key];\n }\n\n /**\n * Sets metadata for `func`.\n *\n * **Note:** If this function becomes hot, i.e. is invoked a lot in a short\n * period of time, it will trip its breaker and transition to an identity\n * function to avoid garbage collection pauses in V8. See\n * [V8 issue 2070](https://bugs.chromium.org/p/v8/issues/detail?id=2070)\n * for more details.\n *\n * @private\n * @param {Function} func The function to associate metadata with.\n * @param {*} data The metadata.\n * @returns {Function} Returns `func`.\n */\n var setData = shortOut(baseSetData);\n\n /**\n * A simple wrapper around the global [`setTimeout`](https://mdn.io/setTimeout).\n *\n * @private\n * @param {Function} func The function to delay.\n * @param {number} wait The number of milliseconds to delay invocation.\n * @returns {number|Object} Returns the timer id or timeout object.\n */\n var setTimeout = ctxSetTimeout || function(func, wait) {\n return root.setTimeout(func, wait);\n };\n\n /**\n * Sets the `toString` method of `func` to return `string`.\n *\n * @private\n * @param {Function} func The function to modify.\n * @param {Function} string The `toString` result.\n * @returns {Function} Returns `func`.\n */\n var setToString = shortOut(baseSetToString);\n\n /**\n * Sets the `toString` method of `wrapper` to mimic the source of `reference`\n * with wrapper details in a comment at the top of the source body.\n *\n * @private\n * @param {Function} wrapper The function to modify.\n * @param {Function} reference The reference function.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @returns {Function} Returns `wrapper`.\n */\n function setWrapToString(wrapper, reference, bitmask) {\n var source = (reference + '');\n return setToString(wrapper, insertWrapDetails(source, updateWrapDetails(getWrapDetails(source), bitmask)));\n }\n\n /**\n * Creates a function that'll short out and invoke `identity` instead\n * of `func` when it's called `HOT_COUNT` or more times in `HOT_SPAN`\n * milliseconds.\n *\n * @private\n * @param {Function} func The function to restrict.\n * @returns {Function} Returns the new shortable function.\n */\n function shortOut(func) {\n var count = 0,\n lastCalled = 0;\n\n return function() {\n var stamp = nativeNow(),\n remaining = HOT_SPAN - (stamp - lastCalled);\n\n lastCalled = stamp;\n if (remaining > 0) {\n if (++count >= HOT_COUNT) {\n return arguments[0];\n }\n } else {\n count = 0;\n }\n return func.apply(undefined, arguments);\n };\n }\n\n /**\n * A specialized version of `_.shuffle` which mutates and sets the size of `array`.\n *\n * @private\n * @param {Array} array The array to shuffle.\n * @param {number} [size=array.length] The size of `array`.\n * @returns {Array} Returns `array`.\n */\n function shuffleSelf(array, size) {\n var index = -1,\n length = array.length,\n lastIndex = length - 1;\n\n size = size === undefined ? length : size;\n while (++index < size) {\n var rand = baseRandom(index, lastIndex),\n value = array[rand];\n\n array[rand] = array[index];\n array[index] = value;\n }\n array.length = size;\n return array;\n }\n\n /**\n * Converts `string` to a property path array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the property path array.\n */\n var stringToPath = memoizeCapped(function(string) {\n var result = [];\n if (string.charCodeAt(0) === 46 /* . */) {\n result.push('');\n }\n string.replace(rePropName, function(match, number, quote, subString) {\n result.push(quote ? subString.replace(reEscapeChar, '$1') : (number || match));\n });\n return result;\n });\n\n /**\n * Converts `value` to a string key if it's not a string or symbol.\n *\n * @private\n * @param {*} value The value to inspect.\n * @returns {string|symbol} Returns the key.\n */\n function toKey(value) {\n if (typeof value == 'string' || isSymbol(value)) {\n return value;\n }\n var result = (value + '');\n return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n }\n\n /**\n * Converts `func` to its source code.\n *\n * @private\n * @param {Function} func The function to convert.\n * @returns {string} Returns the source code.\n */\n function toSource(func) {\n if (func != null) {\n try {\n return funcToString.call(func);\n } catch (e) {}\n try {\n return (func + '');\n } catch (e) {}\n }\n return '';\n }\n\n /**\n * Updates wrapper `details` based on `bitmask` flags.\n *\n * @private\n * @returns {Array} details The details to modify.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @returns {Array} Returns `details`.\n */\n function updateWrapDetails(details, bitmask) {\n arrayEach(wrapFlags, function(pair) {\n var value = '_.' + pair[0];\n if ((bitmask & pair[1]) && !arrayIncludes(details, value)) {\n details.push(value);\n }\n });\n return details.sort();\n }\n\n /**\n * Creates a clone of `wrapper`.\n *\n * @private\n * @param {Object} wrapper The wrapper to clone.\n * @returns {Object} Returns the cloned wrapper.\n */\n function wrapperClone(wrapper) {\n if (wrapper instanceof LazyWrapper) {\n return wrapper.clone();\n }\n var result = new LodashWrapper(wrapper.__wrapped__, wrapper.__chain__);\n result.__actions__ = copyArray(wrapper.__actions__);\n result.__index__ = wrapper.__index__;\n result.__values__ = wrapper.__values__;\n return result;\n }\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates an array of elements split into groups the length of `size`.\n * If `array` can't be split evenly, the final chunk will be the remaining\n * elements.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to process.\n * @param {number} [size=1] The length of each chunk\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Array} Returns the new array of chunks.\n * @example\n *\n * _.chunk(['a', 'b', 'c', 'd'], 2);\n * // => [['a', 'b'], ['c', 'd']]\n *\n * _.chunk(['a', 'b', 'c', 'd'], 3);\n * // => [['a', 'b', 'c'], ['d']]\n */\n function chunk(array, size, guard) {\n if ((guard ? isIterateeCall(array, size, guard) : size === undefined)) {\n size = 1;\n } else {\n size = nativeMax(toInteger(size), 0);\n }\n var length = array == null ? 0 : array.length;\n if (!length || size < 1) {\n return [];\n }\n var index = 0,\n resIndex = 0,\n result = Array(nativeCeil(length / size));\n\n while (index < length) {\n result[resIndex++] = baseSlice(array, index, (index += size));\n }\n return result;\n }\n\n /**\n * Creates an array with all falsey values removed. The values `false`, `null`,\n * `0`, `\"\"`, `undefined`, and `NaN` are falsey.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to compact.\n * @returns {Array} Returns the new array of filtered values.\n * @example\n *\n * _.compact([0, 1, false, 2, '', 3]);\n * // => [1, 2, 3]\n */\n function compact(array) {\n var index = -1,\n length = array == null ? 0 : array.length,\n resIndex = 0,\n result = [];\n\n while (++index < length) {\n var value = array[index];\n if (value) {\n result[resIndex++] = value;\n }\n }\n return result;\n }\n\n /**\n * Creates a new array concatenating `array` with any additional arrays\n * and/or values.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to concatenate.\n * @param {...*} [values] The values to concatenate.\n * @returns {Array} Returns the new concatenated array.\n * @example\n *\n * var array = [1];\n * var other = _.concat(array, 2, [3], [[4]]);\n *\n * console.log(other);\n * // => [1, 2, 3, [4]]\n *\n * console.log(array);\n * // => [1]\n */\n function concat() {\n var length = arguments.length;\n if (!length) {\n return [];\n }\n var args = Array(length - 1),\n array = arguments[0],\n index = length;\n\n while (index--) {\n args[index - 1] = arguments[index];\n }\n return arrayPush(isArray(array) ? copyArray(array) : [array], baseFlatten(args, 1));\n }\n\n /**\n * Creates an array of `array` values not included in the other given arrays\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons. The order and references of result values are\n * determined by the first array.\n *\n * **Note:** Unlike `_.pullAll`, this method returns a new array.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {...Array} [values] The values to exclude.\n * @returns {Array} Returns the new array of filtered values.\n * @see _.without, _.xor\n * @example\n *\n * _.difference([2, 1], [2, 3]);\n * // => [1]\n */\n var difference = baseRest(function(array, values) {\n return isArrayLikeObject(array)\n ? baseDifference(array, baseFlatten(values, 1, isArrayLikeObject, true))\n : [];\n });\n\n /**\n * This method is like `_.difference` except that it accepts `iteratee` which\n * is invoked for each element of `array` and `values` to generate the criterion\n * by which they're compared. The order and references of result values are\n * determined by the first array. The iteratee is invoked with one argument:\n * (value).\n *\n * **Note:** Unlike `_.pullAllBy`, this method returns a new array.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {...Array} [values] The values to exclude.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {Array} Returns the new array of filtered values.\n * @example\n *\n * _.differenceBy([2.1, 1.2], [2.3, 3.4], Math.floor);\n * // => [1.2]\n *\n * // The `_.property` iteratee shorthand.\n * _.differenceBy([{ 'x': 2 }, { 'x': 1 }], [{ 'x': 1 }], 'x');\n * // => [{ 'x': 2 }]\n */\n var differenceBy = baseRest(function(array, values) {\n var iteratee = last(values);\n if (isArrayLikeObject(iteratee)) {\n iteratee = undefined;\n }\n return isArrayLikeObject(array)\n ? baseDifference(array, baseFlatten(values, 1, isArrayLikeObject, true), getIteratee(iteratee, 2))\n : [];\n });\n\n /**\n * This method is like `_.difference` except that it accepts `comparator`\n * which is invoked to compare elements of `array` to `values`. The order and\n * references of result values are determined by the first array. The comparator\n * is invoked with two arguments: (arrVal, othVal).\n *\n * **Note:** Unlike `_.pullAllWith`, this method returns a new array.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {...Array} [values] The values to exclude.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of filtered values.\n * @example\n *\n * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }];\n *\n * _.differenceWith(objects, [{ 'x': 1, 'y': 2 }], _.isEqual);\n * // => [{ 'x': 2, 'y': 1 }]\n */\n var differenceWith = baseRest(function(array, values) {\n var comparator = last(values);\n if (isArrayLikeObject(comparator)) {\n comparator = undefined;\n }\n return isArrayLikeObject(array)\n ? baseDifference(array, baseFlatten(values, 1, isArrayLikeObject, true), undefined, comparator)\n : [];\n });\n\n /**\n * Creates a slice of `array` with `n` elements dropped from the beginning.\n *\n * @static\n * @memberOf _\n * @since 0.5.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {number} [n=1] The number of elements to drop.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * _.drop([1, 2, 3]);\n * // => [2, 3]\n *\n * _.drop([1, 2, 3], 2);\n * // => [3]\n *\n * _.drop([1, 2, 3], 5);\n * // => []\n *\n * _.drop([1, 2, 3], 0);\n * // => [1, 2, 3]\n */\n function drop(array, n, guard) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return [];\n }\n n = (guard || n === undefined) ? 1 : toInteger(n);\n return baseSlice(array, n < 0 ? 0 : n, length);\n }\n\n /**\n * Creates a slice of `array` with `n` elements dropped from the end.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {number} [n=1] The number of elements to drop.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * _.dropRight([1, 2, 3]);\n * // => [1, 2]\n *\n * _.dropRight([1, 2, 3], 2);\n * // => [1]\n *\n * _.dropRight([1, 2, 3], 5);\n * // => []\n *\n * _.dropRight([1, 2, 3], 0);\n * // => [1, 2, 3]\n */\n function dropRight(array, n, guard) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return [];\n }\n n = (guard || n === undefined) ? 1 : toInteger(n);\n n = length - n;\n return baseSlice(array, 0, n < 0 ? 0 : n);\n }\n\n /**\n * Creates a slice of `array` excluding elements dropped from the end.\n * Elements are dropped until `predicate` returns falsey. The predicate is\n * invoked with three arguments: (value, index, array).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'active': true },\n * { 'user': 'fred', 'active': false },\n * { 'user': 'pebbles', 'active': false }\n * ];\n *\n * _.dropRightWhile(users, function(o) { return !o.active; });\n * // => objects for ['barney']\n *\n * // The `_.matches` iteratee shorthand.\n * _.dropRightWhile(users, { 'user': 'pebbles', 'active': false });\n * // => objects for ['barney', 'fred']\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.dropRightWhile(users, ['active', false]);\n * // => objects for ['barney']\n *\n * // The `_.property` iteratee shorthand.\n * _.dropRightWhile(users, 'active');\n * // => objects for ['barney', 'fred', 'pebbles']\n */\n function dropRightWhile(array, predicate) {\n return (array && array.length)\n ? baseWhile(array, getIteratee(predicate, 3), true, true)\n : [];\n }\n\n /**\n * Creates a slice of `array` excluding elements dropped from the beginning.\n * Elements are dropped until `predicate` returns falsey. The predicate is\n * invoked with three arguments: (value, index, array).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'active': false },\n * { 'user': 'fred', 'active': false },\n * { 'user': 'pebbles', 'active': true }\n * ];\n *\n * _.dropWhile(users, function(o) { return !o.active; });\n * // => objects for ['pebbles']\n *\n * // The `_.matches` iteratee shorthand.\n * _.dropWhile(users, { 'user': 'barney', 'active': false });\n * // => objects for ['fred', 'pebbles']\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.dropWhile(users, ['active', false]);\n * // => objects for ['pebbles']\n *\n * // The `_.property` iteratee shorthand.\n * _.dropWhile(users, 'active');\n * // => objects for ['barney', 'fred', 'pebbles']\n */\n function dropWhile(array, predicate) {\n return (array && array.length)\n ? baseWhile(array, getIteratee(predicate, 3), true)\n : [];\n }\n\n /**\n * Fills elements of `array` with `value` from `start` up to, but not\n * including, `end`.\n *\n * **Note:** This method mutates `array`.\n *\n * @static\n * @memberOf _\n * @since 3.2.0\n * @category Array\n * @param {Array} array The array to fill.\n * @param {*} value The value to fill `array` with.\n * @param {number} [start=0] The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns `array`.\n * @example\n *\n * var array = [1, 2, 3];\n *\n * _.fill(array, 'a');\n * console.log(array);\n * // => ['a', 'a', 'a']\n *\n * _.fill(Array(3), 2);\n * // => [2, 2, 2]\n *\n * _.fill([4, 6, 8, 10], '*', 1, 3);\n * // => [4, '*', '*', 10]\n */\n function fill(array, value, start, end) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return [];\n }\n if (start && typeof start != 'number' && isIterateeCall(array, value, start)) {\n start = 0;\n end = length;\n }\n return baseFill(array, value, start, end);\n }\n\n /**\n * This method is like `_.find` except that it returns the index of the first\n * element `predicate` returns truthy for instead of the element itself.\n *\n * @static\n * @memberOf _\n * @since 1.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param {number} [fromIndex=0] The index to search from.\n * @returns {number} Returns the index of the found element, else `-1`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'active': false },\n * { 'user': 'fred', 'active': false },\n * { 'user': 'pebbles', 'active': true }\n * ];\n *\n * _.findIndex(users, function(o) { return o.user == 'barney'; });\n * // => 0\n *\n * // The `_.matches` iteratee shorthand.\n * _.findIndex(users, { 'user': 'fred', 'active': false });\n * // => 1\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.findIndex(users, ['active', false]);\n * // => 0\n *\n * // The `_.property` iteratee shorthand.\n * _.findIndex(users, 'active');\n * // => 2\n */\n function findIndex(array, predicate, fromIndex) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return -1;\n }\n var index = fromIndex == null ? 0 : toInteger(fromIndex);\n if (index < 0) {\n index = nativeMax(length + index, 0);\n }\n return baseFindIndex(array, getIteratee(predicate, 3), index);\n }\n\n /**\n * This method is like `_.findIndex` except that it iterates over elements\n * of `collection` from right to left.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param {number} [fromIndex=array.length-1] The index to search from.\n * @returns {number} Returns the index of the found element, else `-1`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'active': true },\n * { 'user': 'fred', 'active': false },\n * { 'user': 'pebbles', 'active': false }\n * ];\n *\n * _.findLastIndex(users, function(o) { return o.user == 'pebbles'; });\n * // => 2\n *\n * // The `_.matches` iteratee shorthand.\n * _.findLastIndex(users, { 'user': 'barney', 'active': true });\n * // => 0\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.findLastIndex(users, ['active', false]);\n * // => 2\n *\n * // The `_.property` iteratee shorthand.\n * _.findLastIndex(users, 'active');\n * // => 0\n */\n function findLastIndex(array, predicate, fromIndex) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return -1;\n }\n var index = length - 1;\n if (fromIndex !== undefined) {\n index = toInteger(fromIndex);\n index = fromIndex < 0\n ? nativeMax(length + index, 0)\n : nativeMin(index, length - 1);\n }\n return baseFindIndex(array, getIteratee(predicate, 3), index, true);\n }\n\n /**\n * Flattens `array` a single level deep.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to flatten.\n * @returns {Array} Returns the new flattened array.\n * @example\n *\n * _.flatten([1, [2, [3, [4]], 5]]);\n * // => [1, 2, [3, [4]], 5]\n */\n function flatten(array) {\n var length = array == null ? 0 : array.length;\n return length ? baseFlatten(array, 1) : [];\n }\n\n /**\n * Recursively flattens `array`.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to flatten.\n * @returns {Array} Returns the new flattened array.\n * @example\n *\n * _.flattenDeep([1, [2, [3, [4]], 5]]);\n * // => [1, 2, 3, 4, 5]\n */\n function flattenDeep(array) {\n var length = array == null ? 0 : array.length;\n return length ? baseFlatten(array, INFINITY) : [];\n }\n\n /**\n * Recursively flatten `array` up to `depth` times.\n *\n * @static\n * @memberOf _\n * @since 4.4.0\n * @category Array\n * @param {Array} array The array to flatten.\n * @param {number} [depth=1] The maximum recursion depth.\n * @returns {Array} Returns the new flattened array.\n * @example\n *\n * var array = [1, [2, [3, [4]], 5]];\n *\n * _.flattenDepth(array, 1);\n * // => [1, 2, [3, [4]], 5]\n *\n * _.flattenDepth(array, 2);\n * // => [1, 2, 3, [4], 5]\n */\n function flattenDepth(array, depth) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return [];\n }\n depth = depth === undefined ? 1 : toInteger(depth);\n return baseFlatten(array, depth);\n }\n\n /**\n * The inverse of `_.toPairs`; this method returns an object composed\n * from key-value `pairs`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} pairs The key-value pairs.\n * @returns {Object} Returns the new object.\n * @example\n *\n * _.fromPairs([['a', 1], ['b', 2]]);\n * // => { 'a': 1, 'b': 2 }\n */\n function fromPairs(pairs) {\n var index = -1,\n length = pairs == null ? 0 : pairs.length,\n result = {};\n\n while (++index < length) {\n var pair = pairs[index];\n result[pair[0]] = pair[1];\n }\n return result;\n }\n\n /**\n * Gets the first element of `array`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @alias first\n * @category Array\n * @param {Array} array The array to query.\n * @returns {*} Returns the first element of `array`.\n * @example\n *\n * _.head([1, 2, 3]);\n * // => 1\n *\n * _.head([]);\n * // => undefined\n */\n function head(array) {\n return (array && array.length) ? array[0] : undefined;\n }\n\n /**\n * Gets the index at which the first occurrence of `value` is found in `array`\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons. If `fromIndex` is negative, it's used as the\n * offset from the end of `array`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} [fromIndex=0] The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n * @example\n *\n * _.indexOf([1, 2, 1, 2], 2);\n * // => 1\n *\n * // Search from the `fromIndex`.\n * _.indexOf([1, 2, 1, 2], 2, 2);\n * // => 3\n */\n function indexOf(array, value, fromIndex) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return -1;\n }\n var index = fromIndex == null ? 0 : toInteger(fromIndex);\n if (index < 0) {\n index = nativeMax(length + index, 0);\n }\n return baseIndexOf(array, value, index);\n }\n\n /**\n * Gets all but the last element of `array`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to query.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * _.initial([1, 2, 3]);\n * // => [1, 2]\n */\n function initial(array) {\n var length = array == null ? 0 : array.length;\n return length ? baseSlice(array, 0, -1) : [];\n }\n\n /**\n * Creates an array of unique values that are included in all given arrays\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons. The order and references of result values are\n * determined by the first array.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @returns {Array} Returns the new array of intersecting values.\n * @example\n *\n * _.intersection([2, 1], [2, 3]);\n * // => [2]\n */\n var intersection = baseRest(function(arrays) {\n var mapped = arrayMap(arrays, castArrayLikeObject);\n return (mapped.length && mapped[0] === arrays[0])\n ? baseIntersection(mapped)\n : [];\n });\n\n /**\n * This method is like `_.intersection` except that it accepts `iteratee`\n * which is invoked for each element of each `arrays` to generate the criterion\n * by which they're compared. The order and references of result values are\n * determined by the first array. The iteratee is invoked with one argument:\n * (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {Array} Returns the new array of intersecting values.\n * @example\n *\n * _.intersectionBy([2.1, 1.2], [2.3, 3.4], Math.floor);\n * // => [2.1]\n *\n * // The `_.property` iteratee shorthand.\n * _.intersectionBy([{ 'x': 1 }], [{ 'x': 2 }, { 'x': 1 }], 'x');\n * // => [{ 'x': 1 }]\n */\n var intersectionBy = baseRest(function(arrays) {\n var iteratee = last(arrays),\n mapped = arrayMap(arrays, castArrayLikeObject);\n\n if (iteratee === last(mapped)) {\n iteratee = undefined;\n } else {\n mapped.pop();\n }\n return (mapped.length && mapped[0] === arrays[0])\n ? baseIntersection(mapped, getIteratee(iteratee, 2))\n : [];\n });\n\n /**\n * This method is like `_.intersection` except that it accepts `comparator`\n * which is invoked to compare elements of `arrays`. The order and references\n * of result values are determined by the first array. The comparator is\n * invoked with two arguments: (arrVal, othVal).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of intersecting values.\n * @example\n *\n * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }];\n * var others = [{ 'x': 1, 'y': 1 }, { 'x': 1, 'y': 2 }];\n *\n * _.intersectionWith(objects, others, _.isEqual);\n * // => [{ 'x': 1, 'y': 2 }]\n */\n var intersectionWith = baseRest(function(arrays) {\n var comparator = last(arrays),\n mapped = arrayMap(arrays, castArrayLikeObject);\n\n comparator = typeof comparator == 'function' ? comparator : undefined;\n if (comparator) {\n mapped.pop();\n }\n return (mapped.length && mapped[0] === arrays[0])\n ? baseIntersection(mapped, undefined, comparator)\n : [];\n });\n\n /**\n * Converts all elements in `array` into a string separated by `separator`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to convert.\n * @param {string} [separator=','] The element separator.\n * @returns {string} Returns the joined string.\n * @example\n *\n * _.join(['a', 'b', 'c'], '~');\n * // => 'a~b~c'\n */\n function join(array, separator) {\n return array == null ? '' : nativeJoin.call(array, separator);\n }\n\n /**\n * Gets the last element of `array`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to query.\n * @returns {*} Returns the last element of `array`.\n * @example\n *\n * _.last([1, 2, 3]);\n * // => 3\n */\n function last(array) {\n var length = array == null ? 0 : array.length;\n return length ? array[length - 1] : undefined;\n }\n\n /**\n * This method is like `_.indexOf` except that it iterates over elements of\n * `array` from right to left.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} [fromIndex=array.length-1] The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n * @example\n *\n * _.lastIndexOf([1, 2, 1, 2], 2);\n * // => 3\n *\n * // Search from the `fromIndex`.\n * _.lastIndexOf([1, 2, 1, 2], 2, 2);\n * // => 1\n */\n function lastIndexOf(array, value, fromIndex) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return -1;\n }\n var index = length;\n if (fromIndex !== undefined) {\n index = toInteger(fromIndex);\n index = index < 0 ? nativeMax(length + index, 0) : nativeMin(index, length - 1);\n }\n return value === value\n ? strictLastIndexOf(array, value, index)\n : baseFindIndex(array, baseIsNaN, index, true);\n }\n\n /**\n * Gets the element at index `n` of `array`. If `n` is negative, the nth\n * element from the end is returned.\n *\n * @static\n * @memberOf _\n * @since 4.11.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {number} [n=0] The index of the element to return.\n * @returns {*} Returns the nth element of `array`.\n * @example\n *\n * var array = ['a', 'b', 'c', 'd'];\n *\n * _.nth(array, 1);\n * // => 'b'\n *\n * _.nth(array, -2);\n * // => 'c';\n */\n function nth(array, n) {\n return (array && array.length) ? baseNth(array, toInteger(n)) : undefined;\n }\n\n /**\n * Removes all given values from `array` using\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * **Note:** Unlike `_.without`, this method mutates `array`. Use `_.remove`\n * to remove elements from an array by predicate.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Array\n * @param {Array} array The array to modify.\n * @param {...*} [values] The values to remove.\n * @returns {Array} Returns `array`.\n * @example\n *\n * var array = ['a', 'b', 'c', 'a', 'b', 'c'];\n *\n * _.pull(array, 'a', 'c');\n * console.log(array);\n * // => ['b', 'b']\n */\n var pull = baseRest(pullAll);\n\n /**\n * This method is like `_.pull` except that it accepts an array of values to remove.\n *\n * **Note:** Unlike `_.difference`, this method mutates `array`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to modify.\n * @param {Array} values The values to remove.\n * @returns {Array} Returns `array`.\n * @example\n *\n * var array = ['a', 'b', 'c', 'a', 'b', 'c'];\n *\n * _.pullAll(array, ['a', 'c']);\n * console.log(array);\n * // => ['b', 'b']\n */\n function pullAll(array, values) {\n return (array && array.length && values && values.length)\n ? basePullAll(array, values)\n : array;\n }\n\n /**\n * This method is like `_.pullAll` except that it accepts `iteratee` which is\n * invoked for each element of `array` and `values` to generate the criterion\n * by which they're compared. The iteratee is invoked with one argument: (value).\n *\n * **Note:** Unlike `_.differenceBy`, this method mutates `array`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to modify.\n * @param {Array} values The values to remove.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {Array} Returns `array`.\n * @example\n *\n * var array = [{ 'x': 1 }, { 'x': 2 }, { 'x': 3 }, { 'x': 1 }];\n *\n * _.pullAllBy(array, [{ 'x': 1 }, { 'x': 3 }], 'x');\n * console.log(array);\n * // => [{ 'x': 2 }]\n */\n function pullAllBy(array, values, iteratee) {\n return (array && array.length && values && values.length)\n ? basePullAll(array, values, getIteratee(iteratee, 2))\n : array;\n }\n\n /**\n * This method is like `_.pullAll` except that it accepts `comparator` which\n * is invoked to compare elements of `array` to `values`. The comparator is\n * invoked with two arguments: (arrVal, othVal).\n *\n * **Note:** Unlike `_.differenceWith`, this method mutates `array`.\n *\n * @static\n * @memberOf _\n * @since 4.6.0\n * @category Array\n * @param {Array} array The array to modify.\n * @param {Array} values The values to remove.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns `array`.\n * @example\n *\n * var array = [{ 'x': 1, 'y': 2 }, { 'x': 3, 'y': 4 }, { 'x': 5, 'y': 6 }];\n *\n * _.pullAllWith(array, [{ 'x': 3, 'y': 4 }], _.isEqual);\n * console.log(array);\n * // => [{ 'x': 1, 'y': 2 }, { 'x': 5, 'y': 6 }]\n */\n function pullAllWith(array, values, comparator) {\n return (array && array.length && values && values.length)\n ? basePullAll(array, values, undefined, comparator)\n : array;\n }\n\n /**\n * Removes elements from `array` corresponding to `indexes` and returns an\n * array of removed elements.\n *\n * **Note:** Unlike `_.at`, this method mutates `array`.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to modify.\n * @param {...(number|number[])} [indexes] The indexes of elements to remove.\n * @returns {Array} Returns the new array of removed elements.\n * @example\n *\n * var array = ['a', 'b', 'c', 'd'];\n * var pulled = _.pullAt(array, [1, 3]);\n *\n * console.log(array);\n * // => ['a', 'c']\n *\n * console.log(pulled);\n * // => ['b', 'd']\n */\n var pullAt = flatRest(function(array, indexes) {\n var length = array == null ? 0 : array.length,\n result = baseAt(array, indexes);\n\n basePullAt(array, arrayMap(indexes, function(index) {\n return isIndex(index, length) ? +index : index;\n }).sort(compareAscending));\n\n return result;\n });\n\n /**\n * Removes all elements from `array` that `predicate` returns truthy for\n * and returns an array of the removed elements. The predicate is invoked\n * with three arguments: (value, index, array).\n *\n * **Note:** Unlike `_.filter`, this method mutates `array`. Use `_.pull`\n * to pull elements from an array by value.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Array\n * @param {Array} array The array to modify.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new array of removed elements.\n * @example\n *\n * var array = [1, 2, 3, 4];\n * var evens = _.remove(array, function(n) {\n * return n % 2 == 0;\n * });\n *\n * console.log(array);\n * // => [1, 3]\n *\n * console.log(evens);\n * // => [2, 4]\n */\n function remove(array, predicate) {\n var result = [];\n if (!(array && array.length)) {\n return result;\n }\n var index = -1,\n indexes = [],\n length = array.length;\n\n predicate = getIteratee(predicate, 3);\n while (++index < length) {\n var value = array[index];\n if (predicate(value, index, array)) {\n result.push(value);\n indexes.push(index);\n }\n }\n basePullAt(array, indexes);\n return result;\n }\n\n /**\n * Reverses `array` so that the first element becomes the last, the second\n * element becomes the second to last, and so on.\n *\n * **Note:** This method mutates `array` and is based on\n * [`Array#reverse`](https://mdn.io/Array/reverse).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to modify.\n * @returns {Array} Returns `array`.\n * @example\n *\n * var array = [1, 2, 3];\n *\n * _.reverse(array);\n * // => [3, 2, 1]\n *\n * console.log(array);\n * // => [3, 2, 1]\n */\n function reverse(array) {\n return array == null ? array : nativeReverse.call(array);\n }\n\n /**\n * Creates a slice of `array` from `start` up to, but not including, `end`.\n *\n * **Note:** This method is used instead of\n * [`Array#slice`](https://mdn.io/Array/slice) to ensure dense arrays are\n * returned.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to slice.\n * @param {number} [start=0] The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns the slice of `array`.\n */\n function slice(array, start, end) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return [];\n }\n if (end && typeof end != 'number' && isIterateeCall(array, start, end)) {\n start = 0;\n end = length;\n }\n else {\n start = start == null ? 0 : toInteger(start);\n end = end === undefined ? length : toInteger(end);\n }\n return baseSlice(array, start, end);\n }\n\n /**\n * Uses a binary search to determine the lowest index at which `value`\n * should be inserted into `array` in order to maintain its sort order.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The sorted array to inspect.\n * @param {*} value The value to evaluate.\n * @returns {number} Returns the index at which `value` should be inserted\n * into `array`.\n * @example\n *\n * _.sortedIndex([30, 50], 40);\n * // => 1\n */\n function sortedIndex(array, value) {\n return baseSortedIndex(array, value);\n }\n\n /**\n * This method is like `_.sortedIndex` except that it accepts `iteratee`\n * which is invoked for `value` and each element of `array` to compute their\n * sort ranking. The iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The sorted array to inspect.\n * @param {*} value The value to evaluate.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {number} Returns the index at which `value` should be inserted\n * into `array`.\n * @example\n *\n * var objects = [{ 'x': 4 }, { 'x': 5 }];\n *\n * _.sortedIndexBy(objects, { 'x': 4 }, function(o) { return o.x; });\n * // => 0\n *\n * // The `_.property` iteratee shorthand.\n * _.sortedIndexBy(objects, { 'x': 4 }, 'x');\n * // => 0\n */\n function sortedIndexBy(array, value, iteratee) {\n return baseSortedIndexBy(array, value, getIteratee(iteratee, 2));\n }\n\n /**\n * This method is like `_.indexOf` except that it performs a binary\n * search on a sorted `array`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n * @example\n *\n * _.sortedIndexOf([4, 5, 5, 5, 6], 5);\n * // => 1\n */\n function sortedIndexOf(array, value) {\n var length = array == null ? 0 : array.length;\n if (length) {\n var index = baseSortedIndex(array, value);\n if (index < length && eq(array[index], value)) {\n return index;\n }\n }\n return -1;\n }\n\n /**\n * This method is like `_.sortedIndex` except that it returns the highest\n * index at which `value` should be inserted into `array` in order to\n * maintain its sort order.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The sorted array to inspect.\n * @param {*} value The value to evaluate.\n * @returns {number} Returns the index at which `value` should be inserted\n * into `array`.\n * @example\n *\n * _.sortedLastIndex([4, 5, 5, 5, 6], 5);\n * // => 4\n */\n function sortedLastIndex(array, value) {\n return baseSortedIndex(array, value, true);\n }\n\n /**\n * This method is like `_.sortedLastIndex` except that it accepts `iteratee`\n * which is invoked for `value` and each element of `array` to compute their\n * sort ranking. The iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The sorted array to inspect.\n * @param {*} value The value to evaluate.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {number} Returns the index at which `value` should be inserted\n * into `array`.\n * @example\n *\n * var objects = [{ 'x': 4 }, { 'x': 5 }];\n *\n * _.sortedLastIndexBy(objects, { 'x': 4 }, function(o) { return o.x; });\n * // => 1\n *\n * // The `_.property` iteratee shorthand.\n * _.sortedLastIndexBy(objects, { 'x': 4 }, 'x');\n * // => 1\n */\n function sortedLastIndexBy(array, value, iteratee) {\n return baseSortedIndexBy(array, value, getIteratee(iteratee, 2), true);\n }\n\n /**\n * This method is like `_.lastIndexOf` except that it performs a binary\n * search on a sorted `array`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n * @example\n *\n * _.sortedLastIndexOf([4, 5, 5, 5, 6], 5);\n * // => 3\n */\n function sortedLastIndexOf(array, value) {\n var length = array == null ? 0 : array.length;\n if (length) {\n var index = baseSortedIndex(array, value, true) - 1;\n if (eq(array[index], value)) {\n return index;\n }\n }\n return -1;\n }\n\n /**\n * This method is like `_.uniq` except that it's designed and optimized\n * for sorted arrays.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @returns {Array} Returns the new duplicate free array.\n * @example\n *\n * _.sortedUniq([1, 1, 2]);\n * // => [1, 2]\n */\n function sortedUniq(array) {\n return (array && array.length)\n ? baseSortedUniq(array)\n : [];\n }\n\n /**\n * This method is like `_.uniqBy` except that it's designed and optimized\n * for sorted arrays.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @returns {Array} Returns the new duplicate free array.\n * @example\n *\n * _.sortedUniqBy([1.1, 1.2, 2.3, 2.4], Math.floor);\n * // => [1.1, 2.3]\n */\n function sortedUniqBy(array, iteratee) {\n return (array && array.length)\n ? baseSortedUniq(array, getIteratee(iteratee, 2))\n : [];\n }\n\n /**\n * Gets all but the first element of `array`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to query.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * _.tail([1, 2, 3]);\n * // => [2, 3]\n */\n function tail(array) {\n var length = array == null ? 0 : array.length;\n return length ? baseSlice(array, 1, length) : [];\n }\n\n /**\n * Creates a slice of `array` with `n` elements taken from the beginning.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {number} [n=1] The number of elements to take.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * _.take([1, 2, 3]);\n * // => [1]\n *\n * _.take([1, 2, 3], 2);\n * // => [1, 2]\n *\n * _.take([1, 2, 3], 5);\n * // => [1, 2, 3]\n *\n * _.take([1, 2, 3], 0);\n * // => []\n */\n function take(array, n, guard) {\n if (!(array && array.length)) {\n return [];\n }\n n = (guard || n === undefined) ? 1 : toInteger(n);\n return baseSlice(array, 0, n < 0 ? 0 : n);\n }\n\n /**\n * Creates a slice of `array` with `n` elements taken from the end.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {number} [n=1] The number of elements to take.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * _.takeRight([1, 2, 3]);\n * // => [3]\n *\n * _.takeRight([1, 2, 3], 2);\n * // => [2, 3]\n *\n * _.takeRight([1, 2, 3], 5);\n * // => [1, 2, 3]\n *\n * _.takeRight([1, 2, 3], 0);\n * // => []\n */\n function takeRight(array, n, guard) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return [];\n }\n n = (guard || n === undefined) ? 1 : toInteger(n);\n n = length - n;\n return baseSlice(array, n < 0 ? 0 : n, length);\n }\n\n /**\n * Creates a slice of `array` with elements taken from the end. Elements are\n * taken until `predicate` returns falsey. The predicate is invoked with\n * three arguments: (value, index, array).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'active': true },\n * { 'user': 'fred', 'active': false },\n * { 'user': 'pebbles', 'active': false }\n * ];\n *\n * _.takeRightWhile(users, function(o) { return !o.active; });\n * // => objects for ['fred', 'pebbles']\n *\n * // The `_.matches` iteratee shorthand.\n * _.takeRightWhile(users, { 'user': 'pebbles', 'active': false });\n * // => objects for ['pebbles']\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.takeRightWhile(users, ['active', false]);\n * // => objects for ['fred', 'pebbles']\n *\n * // The `_.property` iteratee shorthand.\n * _.takeRightWhile(users, 'active');\n * // => []\n */\n function takeRightWhile(array, predicate) {\n return (array && array.length)\n ? baseWhile(array, getIteratee(predicate, 3), false, true)\n : [];\n }\n\n /**\n * Creates a slice of `array` with elements taken from the beginning. Elements\n * are taken until `predicate` returns falsey. The predicate is invoked with\n * three arguments: (value, index, array).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'active': false },\n * { 'user': 'fred', 'active': false },\n * { 'user': 'pebbles', 'active': true }\n * ];\n *\n * _.takeWhile(users, function(o) { return !o.active; });\n * // => objects for ['barney', 'fred']\n *\n * // The `_.matches` iteratee shorthand.\n * _.takeWhile(users, { 'user': 'barney', 'active': false });\n * // => objects for ['barney']\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.takeWhile(users, ['active', false]);\n * // => objects for ['barney', 'fred']\n *\n * // The `_.property` iteratee shorthand.\n * _.takeWhile(users, 'active');\n * // => []\n */\n function takeWhile(array, predicate) {\n return (array && array.length)\n ? baseWhile(array, getIteratee(predicate, 3))\n : [];\n }\n\n /**\n * Creates an array of unique values, in order, from all given arrays using\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @returns {Array} Returns the new array of combined values.\n * @example\n *\n * _.union([2], [1, 2]);\n * // => [2, 1]\n */\n var union = baseRest(function(arrays) {\n return baseUniq(baseFlatten(arrays, 1, isArrayLikeObject, true));\n });\n\n /**\n * This method is like `_.union` except that it accepts `iteratee` which is\n * invoked for each element of each `arrays` to generate the criterion by\n * which uniqueness is computed. Result values are chosen from the first\n * array in which the value occurs. The iteratee is invoked with one argument:\n * (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {Array} Returns the new array of combined values.\n * @example\n *\n * _.unionBy([2.1], [1.2, 2.3], Math.floor);\n * // => [2.1, 1.2]\n *\n * // The `_.property` iteratee shorthand.\n * _.unionBy([{ 'x': 1 }], [{ 'x': 2 }, { 'x': 1 }], 'x');\n * // => [{ 'x': 1 }, { 'x': 2 }]\n */\n var unionBy = baseRest(function(arrays) {\n var iteratee = last(arrays);\n if (isArrayLikeObject(iteratee)) {\n iteratee = undefined;\n }\n return baseUniq(baseFlatten(arrays, 1, isArrayLikeObject, true), getIteratee(iteratee, 2));\n });\n\n /**\n * This method is like `_.union` except that it accepts `comparator` which\n * is invoked to compare elements of `arrays`. Result values are chosen from\n * the first array in which the value occurs. The comparator is invoked\n * with two arguments: (arrVal, othVal).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of combined values.\n * @example\n *\n * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }];\n * var others = [{ 'x': 1, 'y': 1 }, { 'x': 1, 'y': 2 }];\n *\n * _.unionWith(objects, others, _.isEqual);\n * // => [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }, { 'x': 1, 'y': 1 }]\n */\n var unionWith = baseRest(function(arrays) {\n var comparator = last(arrays);\n comparator = typeof comparator == 'function' ? comparator : undefined;\n return baseUniq(baseFlatten(arrays, 1, isArrayLikeObject, true), undefined, comparator);\n });\n\n /**\n * Creates a duplicate-free version of an array, using\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons, in which only the first occurrence of each element\n * is kept. The order of result values is determined by the order they occur\n * in the array.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @returns {Array} Returns the new duplicate free array.\n * @example\n *\n * _.uniq([2, 1, 2]);\n * // => [2, 1]\n */\n function uniq(array) {\n return (array && array.length) ? baseUniq(array) : [];\n }\n\n /**\n * This method is like `_.uniq` except that it accepts `iteratee` which is\n * invoked for each element in `array` to generate the criterion by which\n * uniqueness is computed. The order of result values is determined by the\n * order they occur in the array. The iteratee is invoked with one argument:\n * (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {Array} Returns the new duplicate free array.\n * @example\n *\n * _.uniqBy([2.1, 1.2, 2.3], Math.floor);\n * // => [2.1, 1.2]\n *\n * // The `_.property` iteratee shorthand.\n * _.uniqBy([{ 'x': 1 }, { 'x': 2 }, { 'x': 1 }], 'x');\n * // => [{ 'x': 1 }, { 'x': 2 }]\n */\n function uniqBy(array, iteratee) {\n return (array && array.length) ? baseUniq(array, getIteratee(iteratee, 2)) : [];\n }\n\n /**\n * This method is like `_.uniq` except that it accepts `comparator` which\n * is invoked to compare elements of `array`. The order of result values is\n * determined by the order they occur in the array.The comparator is invoked\n * with two arguments: (arrVal, othVal).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new duplicate free array.\n * @example\n *\n * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }, { 'x': 1, 'y': 2 }];\n *\n * _.uniqWith(objects, _.isEqual);\n * // => [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }]\n */\n function uniqWith(array, comparator) {\n comparator = typeof comparator == 'function' ? comparator : undefined;\n return (array && array.length) ? baseUniq(array, undefined, comparator) : [];\n }\n\n /**\n * This method is like `_.zip` except that it accepts an array of grouped\n * elements and creates an array regrouping the elements to their pre-zip\n * configuration.\n *\n * @static\n * @memberOf _\n * @since 1.2.0\n * @category Array\n * @param {Array} array The array of grouped elements to process.\n * @returns {Array} Returns the new array of regrouped elements.\n * @example\n *\n * var zipped = _.zip(['a', 'b'], [1, 2], [true, false]);\n * // => [['a', 1, true], ['b', 2, false]]\n *\n * _.unzip(zipped);\n * // => [['a', 'b'], [1, 2], [true, false]]\n */\n function unzip(array) {\n if (!(array && array.length)) {\n return [];\n }\n var length = 0;\n array = arrayFilter(array, function(group) {\n if (isArrayLikeObject(group)) {\n length = nativeMax(group.length, length);\n return true;\n }\n });\n return baseTimes(length, function(index) {\n return arrayMap(array, baseProperty(index));\n });\n }\n\n /**\n * This method is like `_.unzip` except that it accepts `iteratee` to specify\n * how regrouped values should be combined. The iteratee is invoked with the\n * elements of each group: (...group).\n *\n * @static\n * @memberOf _\n * @since 3.8.0\n * @category Array\n * @param {Array} array The array of grouped elements to process.\n * @param {Function} [iteratee=_.identity] The function to combine\n * regrouped values.\n * @returns {Array} Returns the new array of regrouped elements.\n * @example\n *\n * var zipped = _.zip([1, 2], [10, 20], [100, 200]);\n * // => [[1, 10, 100], [2, 20, 200]]\n *\n * _.unzipWith(zipped, _.add);\n * // => [3, 30, 300]\n */\n function unzipWith(array, iteratee) {\n if (!(array && array.length)) {\n return [];\n }\n var result = unzip(array);\n if (iteratee == null) {\n return result;\n }\n return arrayMap(result, function(group) {\n return apply(iteratee, undefined, group);\n });\n }\n\n /**\n * Creates an array excluding all given values using\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * **Note:** Unlike `_.pull`, this method returns a new array.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {...*} [values] The values to exclude.\n * @returns {Array} Returns the new array of filtered values.\n * @see _.difference, _.xor\n * @example\n *\n * _.without([2, 1, 2, 3], 1, 2);\n * // => [3]\n */\n var without = baseRest(function(array, values) {\n return isArrayLikeObject(array)\n ? baseDifference(array, values)\n : [];\n });\n\n /**\n * Creates an array of unique values that is the\n * [symmetric difference](https://en.wikipedia.org/wiki/Symmetric_difference)\n * of the given arrays. The order of result values is determined by the order\n * they occur in the arrays.\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @returns {Array} Returns the new array of filtered values.\n * @see _.difference, _.without\n * @example\n *\n * _.xor([2, 1], [2, 3]);\n * // => [1, 3]\n */\n var xor = baseRest(function(arrays) {\n return baseXor(arrayFilter(arrays, isArrayLikeObject));\n });\n\n /**\n * This method is like `_.xor` except that it accepts `iteratee` which is\n * invoked for each element of each `arrays` to generate the criterion by\n * which by which they're compared. The order of result values is determined\n * by the order they occur in the arrays. The iteratee is invoked with one\n * argument: (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {Array} Returns the new array of filtered values.\n * @example\n *\n * _.xorBy([2.1, 1.2], [2.3, 3.4], Math.floor);\n * // => [1.2, 3.4]\n *\n * // The `_.property` iteratee shorthand.\n * _.xorBy([{ 'x': 1 }], [{ 'x': 2 }, { 'x': 1 }], 'x');\n * // => [{ 'x': 2 }]\n */\n var xorBy = baseRest(function(arrays) {\n var iteratee = last(arrays);\n if (isArrayLikeObject(iteratee)) {\n iteratee = undefined;\n }\n return baseXor(arrayFilter(arrays, isArrayLikeObject), getIteratee(iteratee, 2));\n });\n\n /**\n * This method is like `_.xor` except that it accepts `comparator` which is\n * invoked to compare elements of `arrays`. The order of result values is\n * determined by the order they occur in the arrays. The comparator is invoked\n * with two arguments: (arrVal, othVal).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of filtered values.\n * @example\n *\n * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }];\n * var others = [{ 'x': 1, 'y': 1 }, { 'x': 1, 'y': 2 }];\n *\n * _.xorWith(objects, others, _.isEqual);\n * // => [{ 'x': 2, 'y': 1 }, { 'x': 1, 'y': 1 }]\n */\n var xorWith = baseRest(function(arrays) {\n var comparator = last(arrays);\n comparator = typeof comparator == 'function' ? comparator : undefined;\n return baseXor(arrayFilter(arrays, isArrayLikeObject), undefined, comparator);\n });\n\n /**\n * Creates an array of grouped elements, the first of which contains the\n * first elements of the given arrays, the second of which contains the\n * second elements of the given arrays, and so on.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {...Array} [arrays] The arrays to process.\n * @returns {Array} Returns the new array of grouped elements.\n * @example\n *\n * _.zip(['a', 'b'], [1, 2], [true, false]);\n * // => [['a', 1, true], ['b', 2, false]]\n */\n var zip = baseRest(unzip);\n\n /**\n * This method is like `_.fromPairs` except that it accepts two arrays,\n * one of property identifiers and one of corresponding values.\n *\n * @static\n * @memberOf _\n * @since 0.4.0\n * @category Array\n * @param {Array} [props=[]] The property identifiers.\n * @param {Array} [values=[]] The property values.\n * @returns {Object} Returns the new object.\n * @example\n *\n * _.zipObject(['a', 'b'], [1, 2]);\n * // => { 'a': 1, 'b': 2 }\n */\n function zipObject(props, values) {\n return baseZipObject(props || [], values || [], assignValue);\n }\n\n /**\n * This method is like `_.zipObject` except that it supports property paths.\n *\n * @static\n * @memberOf _\n * @since 4.1.0\n * @category Array\n * @param {Array} [props=[]] The property identifiers.\n * @param {Array} [values=[]] The property values.\n * @returns {Object} Returns the new object.\n * @example\n *\n * _.zipObjectDeep(['a.b[0].c', 'a.b[1].d'], [1, 2]);\n * // => { 'a': { 'b': [{ 'c': 1 }, { 'd': 2 }] } }\n */\n function zipObjectDeep(props, values) {\n return baseZipObject(props || [], values || [], baseSet);\n }\n\n /**\n * This method is like `_.zip` except that it accepts `iteratee` to specify\n * how grouped values should be combined. The iteratee is invoked with the\n * elements of each group: (...group).\n *\n * @static\n * @memberOf _\n * @since 3.8.0\n * @category Array\n * @param {...Array} [arrays] The arrays to process.\n * @param {Function} [iteratee=_.identity] The function to combine\n * grouped values.\n * @returns {Array} Returns the new array of grouped elements.\n * @example\n *\n * _.zipWith([1, 2], [10, 20], [100, 200], function(a, b, c) {\n * return a + b + c;\n * });\n * // => [111, 222]\n */\n var zipWith = baseRest(function(arrays) {\n var length = arrays.length,\n iteratee = length > 1 ? arrays[length - 1] : undefined;\n\n iteratee = typeof iteratee == 'function' ? (arrays.pop(), iteratee) : undefined;\n return unzipWith(arrays, iteratee);\n });\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates a `lodash` wrapper instance that wraps `value` with explicit method\n * chain sequences enabled. The result of such sequences must be unwrapped\n * with `_#value`.\n *\n * @static\n * @memberOf _\n * @since 1.3.0\n * @category Seq\n * @param {*} value The value to wrap.\n * @returns {Object} Returns the new `lodash` wrapper instance.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36 },\n * { 'user': 'fred', 'age': 40 },\n * { 'user': 'pebbles', 'age': 1 }\n * ];\n *\n * var youngest = _\n * .chain(users)\n * .sortBy('age')\n * .map(function(o) {\n * return o.user + ' is ' + o.age;\n * })\n * .head()\n * .value();\n * // => 'pebbles is 1'\n */\n function chain(value) {\n var result = lodash(value);\n result.__chain__ = true;\n return result;\n }\n\n /**\n * This method invokes `interceptor` and returns `value`. The interceptor\n * is invoked with one argument; (value). The purpose of this method is to\n * \"tap into\" a method chain sequence in order to modify intermediate results.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Seq\n * @param {*} value The value to provide to `interceptor`.\n * @param {Function} interceptor The function to invoke.\n * @returns {*} Returns `value`.\n * @example\n *\n * _([1, 2, 3])\n * .tap(function(array) {\n * // Mutate input array.\n * array.pop();\n * })\n * .reverse()\n * .value();\n * // => [2, 1]\n */\n function tap(value, interceptor) {\n interceptor(value);\n return value;\n }\n\n /**\n * This method is like `_.tap` except that it returns the result of `interceptor`.\n * The purpose of this method is to \"pass thru\" values replacing intermediate\n * results in a method chain sequence.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Seq\n * @param {*} value The value to provide to `interceptor`.\n * @param {Function} interceptor The function to invoke.\n * @returns {*} Returns the result of `interceptor`.\n * @example\n *\n * _(' abc ')\n * .chain()\n * .trim()\n * .thru(function(value) {\n * return [value];\n * })\n * .value();\n * // => ['abc']\n */\n function thru(value, interceptor) {\n return interceptor(value);\n }\n\n /**\n * This method is the wrapper version of `_.at`.\n *\n * @name at\n * @memberOf _\n * @since 1.0.0\n * @category Seq\n * @param {...(string|string[])} [paths] The property paths to pick.\n * @returns {Object} Returns the new `lodash` wrapper instance.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }, 4] };\n *\n * _(object).at(['a[0].b.c', 'a[1]']).value();\n * // => [3, 4]\n */\n var wrapperAt = flatRest(function(paths) {\n var length = paths.length,\n start = length ? paths[0] : 0,\n value = this.__wrapped__,\n interceptor = function(object) { return baseAt(object, paths); };\n\n if (length > 1 || this.__actions__.length ||\n !(value instanceof LazyWrapper) || !isIndex(start)) {\n return this.thru(interceptor);\n }\n value = value.slice(start, +start + (length ? 1 : 0));\n value.__actions__.push({\n 'func': thru,\n 'args': [interceptor],\n 'thisArg': undefined\n });\n return new LodashWrapper(value, this.__chain__).thru(function(array) {\n if (length && !array.length) {\n array.push(undefined);\n }\n return array;\n });\n });\n\n /**\n * Creates a `lodash` wrapper instance with explicit method chain sequences enabled.\n *\n * @name chain\n * @memberOf _\n * @since 0.1.0\n * @category Seq\n * @returns {Object} Returns the new `lodash` wrapper instance.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36 },\n * { 'user': 'fred', 'age': 40 }\n * ];\n *\n * // A sequence without explicit chaining.\n * _(users).head();\n * // => { 'user': 'barney', 'age': 36 }\n *\n * // A sequence with explicit chaining.\n * _(users)\n * .chain()\n * .head()\n * .pick('user')\n * .value();\n * // => { 'user': 'barney' }\n */\n function wrapperChain() {\n return chain(this);\n }\n\n /**\n * Executes the chain sequence and returns the wrapped result.\n *\n * @name commit\n * @memberOf _\n * @since 3.2.0\n * @category Seq\n * @returns {Object} Returns the new `lodash` wrapper instance.\n * @example\n *\n * var array = [1, 2];\n * var wrapped = _(array).push(3);\n *\n * console.log(array);\n * // => [1, 2]\n *\n * wrapped = wrapped.commit();\n * console.log(array);\n * // => [1, 2, 3]\n *\n * wrapped.last();\n * // => 3\n *\n * console.log(array);\n * // => [1, 2, 3]\n */\n function wrapperCommit() {\n return new LodashWrapper(this.value(), this.__chain__);\n }\n\n /**\n * Gets the next value on a wrapped object following the\n * [iterator protocol](https://mdn.io/iteration_protocols#iterator).\n *\n * @name next\n * @memberOf _\n * @since 4.0.0\n * @category Seq\n * @returns {Object} Returns the next iterator value.\n * @example\n *\n * var wrapped = _([1, 2]);\n *\n * wrapped.next();\n * // => { 'done': false, 'value': 1 }\n *\n * wrapped.next();\n * // => { 'done': false, 'value': 2 }\n *\n * wrapped.next();\n * // => { 'done': true, 'value': undefined }\n */\n function wrapperNext() {\n if (this.__values__ === undefined) {\n this.__values__ = toArray(this.value());\n }\n var done = this.__index__ >= this.__values__.length,\n value = done ? undefined : this.__values__[this.__index__++];\n\n return { 'done': done, 'value': value };\n }\n\n /**\n * Enables the wrapper to be iterable.\n *\n * @name Symbol.iterator\n * @memberOf _\n * @since 4.0.0\n * @category Seq\n * @returns {Object} Returns the wrapper object.\n * @example\n *\n * var wrapped = _([1, 2]);\n *\n * wrapped[Symbol.iterator]() === wrapped;\n * // => true\n *\n * Array.from(wrapped);\n * // => [1, 2]\n */\n function wrapperToIterator() {\n return this;\n }\n\n /**\n * Creates a clone of the chain sequence planting `value` as the wrapped value.\n *\n * @name plant\n * @memberOf _\n * @since 3.2.0\n * @category Seq\n * @param {*} value The value to plant.\n * @returns {Object} Returns the new `lodash` wrapper instance.\n * @example\n *\n * function square(n) {\n * return n * n;\n * }\n *\n * var wrapped = _([1, 2]).map(square);\n * var other = wrapped.plant([3, 4]);\n *\n * other.value();\n * // => [9, 16]\n *\n * wrapped.value();\n * // => [1, 4]\n */\n function wrapperPlant(value) {\n var result,\n parent = this;\n\n while (parent instanceof baseLodash) {\n var clone = wrapperClone(parent);\n clone.__index__ = 0;\n clone.__values__ = undefined;\n if (result) {\n previous.__wrapped__ = clone;\n } else {\n result = clone;\n }\n var previous = clone;\n parent = parent.__wrapped__;\n }\n previous.__wrapped__ = value;\n return result;\n }\n\n /**\n * This method is the wrapper version of `_.reverse`.\n *\n * **Note:** This method mutates the wrapped array.\n *\n * @name reverse\n * @memberOf _\n * @since 0.1.0\n * @category Seq\n * @returns {Object} Returns the new `lodash` wrapper instance.\n * @example\n *\n * var array = [1, 2, 3];\n *\n * _(array).reverse().value()\n * // => [3, 2, 1]\n *\n * console.log(array);\n * // => [3, 2, 1]\n */\n function wrapperReverse() {\n var value = this.__wrapped__;\n if (value instanceof LazyWrapper) {\n var wrapped = value;\n if (this.__actions__.length) {\n wrapped = new LazyWrapper(this);\n }\n wrapped = wrapped.reverse();\n wrapped.__actions__.push({\n 'func': thru,\n 'args': [reverse],\n 'thisArg': undefined\n });\n return new LodashWrapper(wrapped, this.__chain__);\n }\n return this.thru(reverse);\n }\n\n /**\n * Executes the chain sequence to resolve the unwrapped value.\n *\n * @name value\n * @memberOf _\n * @since 0.1.0\n * @alias toJSON, valueOf\n * @category Seq\n * @returns {*} Returns the resolved unwrapped value.\n * @example\n *\n * _([1, 2, 3]).value();\n * // => [1, 2, 3]\n */\n function wrapperValue() {\n return baseWrapperValue(this.__wrapped__, this.__actions__);\n }\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates an object composed of keys generated from the results of running\n * each element of `collection` thru `iteratee`. The corresponding value of\n * each key is the number of times the key was returned by `iteratee`. The\n * iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 0.5.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The iteratee to transform keys.\n * @returns {Object} Returns the composed aggregate object.\n * @example\n *\n * _.countBy([6.1, 4.2, 6.3], Math.floor);\n * // => { '4': 1, '6': 2 }\n *\n * // The `_.property` iteratee shorthand.\n * _.countBy(['one', 'two', 'three'], 'length');\n * // => { '3': 2, '5': 1 }\n */\n var countBy = createAggregator(function(result, value, key) {\n if (hasOwnProperty.call(result, key)) {\n ++result[key];\n } else {\n baseAssignValue(result, key, 1);\n }\n });\n\n /**\n * Checks if `predicate` returns truthy for **all** elements of `collection`.\n * Iteration is stopped once `predicate` returns falsey. The predicate is\n * invoked with three arguments: (value, index|key, collection).\n *\n * **Note:** This method returns `true` for\n * [empty collections](https://en.wikipedia.org/wiki/Empty_set) because\n * [everything is true](https://en.wikipedia.org/wiki/Vacuous_truth) of\n * elements of empty collections.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {boolean} Returns `true` if all elements pass the predicate check,\n * else `false`.\n * @example\n *\n * _.every([true, 1, null, 'yes'], Boolean);\n * // => false\n *\n * var users = [\n * { 'user': 'barney', 'age': 36, 'active': false },\n * { 'user': 'fred', 'age': 40, 'active': false }\n * ];\n *\n * // The `_.matches` iteratee shorthand.\n * _.every(users, { 'user': 'barney', 'active': false });\n * // => false\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.every(users, ['active', false]);\n * // => true\n *\n * // The `_.property` iteratee shorthand.\n * _.every(users, 'active');\n * // => false\n */\n function every(collection, predicate, guard) {\n var func = isArray(collection) ? arrayEvery : baseEvery;\n if (guard && isIterateeCall(collection, predicate, guard)) {\n predicate = undefined;\n }\n return func(collection, getIteratee(predicate, 3));\n }\n\n /**\n * Iterates over elements of `collection`, returning an array of all elements\n * `predicate` returns truthy for. The predicate is invoked with three\n * arguments: (value, index|key, collection).\n *\n * **Note:** Unlike `_.remove`, this method returns a new array.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n * @see _.reject\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36, 'active': true },\n * { 'user': 'fred', 'age': 40, 'active': false }\n * ];\n *\n * _.filter(users, function(o) { return !o.active; });\n * // => objects for ['fred']\n *\n * // The `_.matches` iteratee shorthand.\n * _.filter(users, { 'age': 36, 'active': true });\n * // => objects for ['barney']\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.filter(users, ['active', false]);\n * // => objects for ['fred']\n *\n * // The `_.property` iteratee shorthand.\n * _.filter(users, 'active');\n * // => objects for ['barney']\n *\n * // Combining several predicates using `_.overEvery` or `_.overSome`.\n * _.filter(users, _.overSome([{ 'age': 36 }, ['age', 40]]));\n * // => objects for ['fred', 'barney']\n */\n function filter(collection, predicate) {\n var func = isArray(collection) ? arrayFilter : baseFilter;\n return func(collection, getIteratee(predicate, 3));\n }\n\n /**\n * Iterates over elements of `collection`, returning the first element\n * `predicate` returns truthy for. The predicate is invoked with three\n * arguments: (value, index|key, collection).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to inspect.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param {number} [fromIndex=0] The index to search from.\n * @returns {*} Returns the matched element, else `undefined`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36, 'active': true },\n * { 'user': 'fred', 'age': 40, 'active': false },\n * { 'user': 'pebbles', 'age': 1, 'active': true }\n * ];\n *\n * _.find(users, function(o) { return o.age < 40; });\n * // => object for 'barney'\n *\n * // The `_.matches` iteratee shorthand.\n * _.find(users, { 'age': 1, 'active': true });\n * // => object for 'pebbles'\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.find(users, ['active', false]);\n * // => object for 'fred'\n *\n * // The `_.property` iteratee shorthand.\n * _.find(users, 'active');\n * // => object for 'barney'\n */\n var find = createFind(findIndex);\n\n /**\n * This method is like `_.find` except that it iterates over elements of\n * `collection` from right to left.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to inspect.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param {number} [fromIndex=collection.length-1] The index to search from.\n * @returns {*} Returns the matched element, else `undefined`.\n * @example\n *\n * _.findLast([1, 2, 3, 4], function(n) {\n * return n % 2 == 1;\n * });\n * // => 3\n */\n var findLast = createFind(findLastIndex);\n\n /**\n * Creates a flattened array of values by running each element in `collection`\n * thru `iteratee` and flattening the mapped results. The iteratee is invoked\n * with three arguments: (value, index|key, collection).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new flattened array.\n * @example\n *\n * function duplicate(n) {\n * return [n, n];\n * }\n *\n * _.flatMap([1, 2], duplicate);\n * // => [1, 1, 2, 2]\n */\n function flatMap(collection, iteratee) {\n return baseFlatten(map(collection, iteratee), 1);\n }\n\n /**\n * This method is like `_.flatMap` except that it recursively flattens the\n * mapped results.\n *\n * @static\n * @memberOf _\n * @since 4.7.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new flattened array.\n * @example\n *\n * function duplicate(n) {\n * return [[[n, n]]];\n * }\n *\n * _.flatMapDeep([1, 2], duplicate);\n * // => [1, 1, 2, 2]\n */\n function flatMapDeep(collection, iteratee) {\n return baseFlatten(map(collection, iteratee), INFINITY);\n }\n\n /**\n * This method is like `_.flatMap` except that it recursively flattens the\n * mapped results up to `depth` times.\n *\n * @static\n * @memberOf _\n * @since 4.7.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @param {number} [depth=1] The maximum recursion depth.\n * @returns {Array} Returns the new flattened array.\n * @example\n *\n * function duplicate(n) {\n * return [[[n, n]]];\n * }\n *\n * _.flatMapDepth([1, 2], duplicate, 2);\n * // => [[1, 1], [2, 2]]\n */\n function flatMapDepth(collection, iteratee, depth) {\n depth = depth === undefined ? 1 : toInteger(depth);\n return baseFlatten(map(collection, iteratee), depth);\n }\n\n /**\n * Iterates over elements of `collection` and invokes `iteratee` for each element.\n * The iteratee is invoked with three arguments: (value, index|key, collection).\n * Iteratee functions may exit iteration early by explicitly returning `false`.\n *\n * **Note:** As with other \"Collections\" methods, objects with a \"length\"\n * property are iterated like arrays. To avoid this behavior use `_.forIn`\n * or `_.forOwn` for object iteration.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @alias each\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Array|Object} Returns `collection`.\n * @see _.forEachRight\n * @example\n *\n * _.forEach([1, 2], function(value) {\n * console.log(value);\n * });\n * // => Logs `1` then `2`.\n *\n * _.forEach({ 'a': 1, 'b': 2 }, function(value, key) {\n * console.log(key);\n * });\n * // => Logs 'a' then 'b' (iteration order is not guaranteed).\n */\n function forEach(collection, iteratee) {\n var func = isArray(collection) ? arrayEach : baseEach;\n return func(collection, getIteratee(iteratee, 3));\n }\n\n /**\n * This method is like `_.forEach` except that it iterates over elements of\n * `collection` from right to left.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @alias eachRight\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Array|Object} Returns `collection`.\n * @see _.forEach\n * @example\n *\n * _.forEachRight([1, 2], function(value) {\n * console.log(value);\n * });\n * // => Logs `2` then `1`.\n */\n function forEachRight(collection, iteratee) {\n var func = isArray(collection) ? arrayEachRight : baseEachRight;\n return func(collection, getIteratee(iteratee, 3));\n }\n\n /**\n * Creates an object composed of keys generated from the results of running\n * each element of `collection` thru `iteratee`. The order of grouped values\n * is determined by the order they occur in `collection`. The corresponding\n * value of each key is an array of elements responsible for generating the\n * key. The iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The iteratee to transform keys.\n * @returns {Object} Returns the composed aggregate object.\n * @example\n *\n * _.groupBy([6.1, 4.2, 6.3], Math.floor);\n * // => { '4': [4.2], '6': [6.1, 6.3] }\n *\n * // The `_.property` iteratee shorthand.\n * _.groupBy(['one', 'two', 'three'], 'length');\n * // => { '3': ['one', 'two'], '5': ['three'] }\n */\n var groupBy = createAggregator(function(result, value, key) {\n if (hasOwnProperty.call(result, key)) {\n result[key].push(value);\n } else {\n baseAssignValue(result, key, [value]);\n }\n });\n\n /**\n * Checks if `value` is in `collection`. If `collection` is a string, it's\n * checked for a substring of `value`, otherwise\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * is used for equality comparisons. If `fromIndex` is negative, it's used as\n * the offset from the end of `collection`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object|string} collection The collection to inspect.\n * @param {*} value The value to search for.\n * @param {number} [fromIndex=0] The index to search from.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.reduce`.\n * @returns {boolean} Returns `true` if `value` is found, else `false`.\n * @example\n *\n * _.includes([1, 2, 3], 1);\n * // => true\n *\n * _.includes([1, 2, 3], 1, 2);\n * // => false\n *\n * _.includes({ 'a': 1, 'b': 2 }, 1);\n * // => true\n *\n * _.includes('abcd', 'bc');\n * // => true\n */\n function includes(collection, value, fromIndex, guard) {\n collection = isArrayLike(collection) ? collection : values(collection);\n fromIndex = (fromIndex && !guard) ? toInteger(fromIndex) : 0;\n\n var length = collection.length;\n if (fromIndex < 0) {\n fromIndex = nativeMax(length + fromIndex, 0);\n }\n return isString(collection)\n ? (fromIndex <= length && collection.indexOf(value, fromIndex) > -1)\n : (!!length && baseIndexOf(collection, value, fromIndex) > -1);\n }\n\n /**\n * Invokes the method at `path` of each element in `collection`, returning\n * an array of the results of each invoked method. Any additional arguments\n * are provided to each invoked method. If `path` is a function, it's invoked\n * for, and `this` bound to, each element in `collection`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Array|Function|string} path The path of the method to invoke or\n * the function invoked per iteration.\n * @param {...*} [args] The arguments to invoke each method with.\n * @returns {Array} Returns the array of results.\n * @example\n *\n * _.invokeMap([[5, 1, 7], [3, 2, 1]], 'sort');\n * // => [[1, 5, 7], [1, 2, 3]]\n *\n * _.invokeMap([123, 456], String.prototype.split, '');\n * // => [['1', '2', '3'], ['4', '5', '6']]\n */\n var invokeMap = baseRest(function(collection, path, args) {\n var index = -1,\n isFunc = typeof path == 'function',\n result = isArrayLike(collection) ? Array(collection.length) : [];\n\n baseEach(collection, function(value) {\n result[++index] = isFunc ? apply(path, value, args) : baseInvoke(value, path, args);\n });\n return result;\n });\n\n /**\n * Creates an object composed of keys generated from the results of running\n * each element of `collection` thru `iteratee`. The corresponding value of\n * each key is the last element responsible for generating the key. The\n * iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The iteratee to transform keys.\n * @returns {Object} Returns the composed aggregate object.\n * @example\n *\n * var array = [\n * { 'dir': 'left', 'code': 97 },\n * { 'dir': 'right', 'code': 100 }\n * ];\n *\n * _.keyBy(array, function(o) {\n * return String.fromCharCode(o.code);\n * });\n * // => { 'a': { 'dir': 'left', 'code': 97 }, 'd': { 'dir': 'right', 'code': 100 } }\n *\n * _.keyBy(array, 'dir');\n * // => { 'left': { 'dir': 'left', 'code': 97 }, 'right': { 'dir': 'right', 'code': 100 } }\n */\n var keyBy = createAggregator(function(result, value, key) {\n baseAssignValue(result, key, value);\n });\n\n /**\n * Creates an array of values by running each element in `collection` thru\n * `iteratee`. The iteratee is invoked with three arguments:\n * (value, index|key, collection).\n *\n * Many lodash methods are guarded to work as iteratees for methods like\n * `_.every`, `_.filter`, `_.map`, `_.mapValues`, `_.reject`, and `_.some`.\n *\n * The guarded methods are:\n * `ary`, `chunk`, `curry`, `curryRight`, `drop`, `dropRight`, `every`,\n * `fill`, `invert`, `parseInt`, `random`, `range`, `rangeRight`, `repeat`,\n * `sampleSize`, `slice`, `some`, `sortBy`, `split`, `take`, `takeRight`,\n * `template`, `trim`, `trimEnd`, `trimStart`, and `words`\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n * @example\n *\n * function square(n) {\n * return n * n;\n * }\n *\n * _.map([4, 8], square);\n * // => [16, 64]\n *\n * _.map({ 'a': 4, 'b': 8 }, square);\n * // => [16, 64] (iteration order is not guaranteed)\n *\n * var users = [\n * { 'user': 'barney' },\n * { 'user': 'fred' }\n * ];\n *\n * // The `_.property` iteratee shorthand.\n * _.map(users, 'user');\n * // => ['barney', 'fred']\n */\n function map(collection, iteratee) {\n var func = isArray(collection) ? arrayMap : baseMap;\n return func(collection, getIteratee(iteratee, 3));\n }\n\n /**\n * This method is like `_.sortBy` except that it allows specifying the sort\n * orders of the iteratees to sort by. If `orders` is unspecified, all values\n * are sorted in ascending order. Otherwise, specify an order of \"desc\" for\n * descending or \"asc\" for ascending sort order of corresponding values.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Array[]|Function[]|Object[]|string[]} [iteratees=[_.identity]]\n * The iteratees to sort by.\n * @param {string[]} [orders] The sort orders of `iteratees`.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.reduce`.\n * @returns {Array} Returns the new sorted array.\n * @example\n *\n * var users = [\n * { 'user': 'fred', 'age': 48 },\n * { 'user': 'barney', 'age': 34 },\n * { 'user': 'fred', 'age': 40 },\n * { 'user': 'barney', 'age': 36 }\n * ];\n *\n * // Sort by `user` in ascending order and by `age` in descending order.\n * _.orderBy(users, ['user', 'age'], ['asc', 'desc']);\n * // => objects for [['barney', 36], ['barney', 34], ['fred', 48], ['fred', 40]]\n */\n function orderBy(collection, iteratees, orders, guard) {\n if (collection == null) {\n return [];\n }\n if (!isArray(iteratees)) {\n iteratees = iteratees == null ? [] : [iteratees];\n }\n orders = guard ? undefined : orders;\n if (!isArray(orders)) {\n orders = orders == null ? [] : [orders];\n }\n return baseOrderBy(collection, iteratees, orders);\n }\n\n /**\n * Creates an array of elements split into two groups, the first of which\n * contains elements `predicate` returns truthy for, the second of which\n * contains elements `predicate` returns falsey for. The predicate is\n * invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the array of grouped elements.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36, 'active': false },\n * { 'user': 'fred', 'age': 40, 'active': true },\n * { 'user': 'pebbles', 'age': 1, 'active': false }\n * ];\n *\n * _.partition(users, function(o) { return o.active; });\n * // => objects for [['fred'], ['barney', 'pebbles']]\n *\n * // The `_.matches` iteratee shorthand.\n * _.partition(users, { 'age': 1, 'active': false });\n * // => objects for [['pebbles'], ['barney', 'fred']]\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.partition(users, ['active', false]);\n * // => objects for [['barney', 'pebbles'], ['fred']]\n *\n * // The `_.property` iteratee shorthand.\n * _.partition(users, 'active');\n * // => objects for [['fred'], ['barney', 'pebbles']]\n */\n var partition = createAggregator(function(result, value, key) {\n result[key ? 0 : 1].push(value);\n }, function() { return [[], []]; });\n\n /**\n * Reduces `collection` to a value which is the accumulated result of running\n * each element in `collection` thru `iteratee`, where each successive\n * invocation is supplied the return value of the previous. If `accumulator`\n * is not given, the first element of `collection` is used as the initial\n * value. The iteratee is invoked with four arguments:\n * (accumulator, value, index|key, collection).\n *\n * Many lodash methods are guarded to work as iteratees for methods like\n * `_.reduce`, `_.reduceRight`, and `_.transform`.\n *\n * The guarded methods are:\n * `assign`, `defaults`, `defaultsDeep`, `includes`, `merge`, `orderBy`,\n * and `sortBy`\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @param {*} [accumulator] The initial value.\n * @returns {*} Returns the accumulated value.\n * @see _.reduceRight\n * @example\n *\n * _.reduce([1, 2], function(sum, n) {\n * return sum + n;\n * }, 0);\n * // => 3\n *\n * _.reduce({ 'a': 1, 'b': 2, 'c': 1 }, function(result, value, key) {\n * (result[value] || (result[value] = [])).push(key);\n * return result;\n * }, {});\n * // => { '1': ['a', 'c'], '2': ['b'] } (iteration order is not guaranteed)\n */\n function reduce(collection, iteratee, accumulator) {\n var func = isArray(collection) ? arrayReduce : baseReduce,\n initAccum = arguments.length < 3;\n\n return func(collection, getIteratee(iteratee, 4), accumulator, initAccum, baseEach);\n }\n\n /**\n * This method is like `_.reduce` except that it iterates over elements of\n * `collection` from right to left.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @param {*} [accumulator] The initial value.\n * @returns {*} Returns the accumulated value.\n * @see _.reduce\n * @example\n *\n * var array = [[0, 1], [2, 3], [4, 5]];\n *\n * _.reduceRight(array, function(flattened, other) {\n * return flattened.concat(other);\n * }, []);\n * // => [4, 5, 2, 3, 0, 1]\n */\n function reduceRight(collection, iteratee, accumulator) {\n var func = isArray(collection) ? arrayReduceRight : baseReduce,\n initAccum = arguments.length < 3;\n\n return func(collection, getIteratee(iteratee, 4), accumulator, initAccum, baseEachRight);\n }\n\n /**\n * The opposite of `_.filter`; this method returns the elements of `collection`\n * that `predicate` does **not** return truthy for.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n * @see _.filter\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36, 'active': false },\n * { 'user': 'fred', 'age': 40, 'active': true }\n * ];\n *\n * _.reject(users, function(o) { return !o.active; });\n * // => objects for ['fred']\n *\n * // The `_.matches` iteratee shorthand.\n * _.reject(users, { 'age': 40, 'active': true });\n * // => objects for ['barney']\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.reject(users, ['active', false]);\n * // => objects for ['fred']\n *\n * // The `_.property` iteratee shorthand.\n * _.reject(users, 'active');\n * // => objects for ['barney']\n */\n function reject(collection, predicate) {\n var func = isArray(collection) ? arrayFilter : baseFilter;\n return func(collection, negate(getIteratee(predicate, 3)));\n }\n\n /**\n * Gets a random element from `collection`.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to sample.\n * @returns {*} Returns the random element.\n * @example\n *\n * _.sample([1, 2, 3, 4]);\n * // => 2\n */\n function sample(collection) {\n var func = isArray(collection) ? arraySample : baseSample;\n return func(collection);\n }\n\n /**\n * Gets `n` random elements at unique keys from `collection` up to the\n * size of `collection`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to sample.\n * @param {number} [n=1] The number of elements to sample.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Array} Returns the random elements.\n * @example\n *\n * _.sampleSize([1, 2, 3], 2);\n * // => [3, 1]\n *\n * _.sampleSize([1, 2, 3], 4);\n * // => [2, 3, 1]\n */\n function sampleSize(collection, n, guard) {\n if ((guard ? isIterateeCall(collection, n, guard) : n === undefined)) {\n n = 1;\n } else {\n n = toInteger(n);\n }\n var func = isArray(collection) ? arraySampleSize : baseSampleSize;\n return func(collection, n);\n }\n\n /**\n * Creates an array of shuffled values, using a version of the\n * [Fisher-Yates shuffle](https://en.wikipedia.org/wiki/Fisher-Yates_shuffle).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to shuffle.\n * @returns {Array} Returns the new shuffled array.\n * @example\n *\n * _.shuffle([1, 2, 3, 4]);\n * // => [4, 1, 3, 2]\n */\n function shuffle(collection) {\n var func = isArray(collection) ? arrayShuffle : baseShuffle;\n return func(collection);\n }\n\n /**\n * Gets the size of `collection` by returning its length for array-like\n * values or the number of own enumerable string keyed properties for objects.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object|string} collection The collection to inspect.\n * @returns {number} Returns the collection size.\n * @example\n *\n * _.size([1, 2, 3]);\n * // => 3\n *\n * _.size({ 'a': 1, 'b': 2 });\n * // => 2\n *\n * _.size('pebbles');\n * // => 7\n */\n function size(collection) {\n if (collection == null) {\n return 0;\n }\n if (isArrayLike(collection)) {\n return isString(collection) ? stringSize(collection) : collection.length;\n }\n var tag = getTag(collection);\n if (tag == mapTag || tag == setTag) {\n return collection.size;\n }\n return baseKeys(collection).length;\n }\n\n /**\n * Checks if `predicate` returns truthy for **any** element of `collection`.\n * Iteration is stopped once `predicate` returns truthy. The predicate is\n * invoked with three arguments: (value, index|key, collection).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {boolean} Returns `true` if any element passes the predicate check,\n * else `false`.\n * @example\n *\n * _.some([null, 0, 'yes', false], Boolean);\n * // => true\n *\n * var users = [\n * { 'user': 'barney', 'active': true },\n * { 'user': 'fred', 'active': false }\n * ];\n *\n * // The `_.matches` iteratee shorthand.\n * _.some(users, { 'user': 'barney', 'active': false });\n * // => false\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.some(users, ['active', false]);\n * // => true\n *\n * // The `_.property` iteratee shorthand.\n * _.some(users, 'active');\n * // => true\n */\n function some(collection, predicate, guard) {\n var func = isArray(collection) ? arraySome : baseSome;\n if (guard && isIterateeCall(collection, predicate, guard)) {\n predicate = undefined;\n }\n return func(collection, getIteratee(predicate, 3));\n }\n\n /**\n * Creates an array of elements, sorted in ascending order by the results of\n * running each element in a collection thru each iteratee. This method\n * performs a stable sort, that is, it preserves the original sort order of\n * equal elements. The iteratees are invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {...(Function|Function[])} [iteratees=[_.identity]]\n * The iteratees to sort by.\n * @returns {Array} Returns the new sorted array.\n * @example\n *\n * var users = [\n * { 'user': 'fred', 'age': 48 },\n * { 'user': 'barney', 'age': 36 },\n * { 'user': 'fred', 'age': 30 },\n * { 'user': 'barney', 'age': 34 }\n * ];\n *\n * _.sortBy(users, [function(o) { return o.user; }]);\n * // => objects for [['barney', 36], ['barney', 34], ['fred', 48], ['fred', 30]]\n *\n * _.sortBy(users, ['user', 'age']);\n * // => objects for [['barney', 34], ['barney', 36], ['fred', 30], ['fred', 48]]\n */\n var sortBy = baseRest(function(collection, iteratees) {\n if (collection == null) {\n return [];\n }\n var length = iteratees.length;\n if (length > 1 && isIterateeCall(collection, iteratees[0], iteratees[1])) {\n iteratees = [];\n } else if (length > 2 && isIterateeCall(iteratees[0], iteratees[1], iteratees[2])) {\n iteratees = [iteratees[0]];\n }\n return baseOrderBy(collection, baseFlatten(iteratees, 1), []);\n });\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Gets the timestamp of the number of milliseconds that have elapsed since\n * the Unix epoch (1 January 1970 00:00:00 UTC).\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Date\n * @returns {number} Returns the timestamp.\n * @example\n *\n * _.defer(function(stamp) {\n * console.log(_.now() - stamp);\n * }, _.now());\n * // => Logs the number of milliseconds it took for the deferred invocation.\n */\n var now = ctxNow || function() {\n return root.Date.now();\n };\n\n /*------------------------------------------------------------------------*/\n\n /**\n * The opposite of `_.before`; this method creates a function that invokes\n * `func` once it's called `n` or more times.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {number} n The number of calls before `func` is invoked.\n * @param {Function} func The function to restrict.\n * @returns {Function} Returns the new restricted function.\n * @example\n *\n * var saves = ['profile', 'settings'];\n *\n * var done = _.after(saves.length, function() {\n * console.log('done saving!');\n * });\n *\n * _.forEach(saves, function(type) {\n * asyncSave({ 'type': type, 'complete': done });\n * });\n * // => Logs 'done saving!' after the two async saves have completed.\n */\n function after(n, func) {\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n n = toInteger(n);\n return function() {\n if (--n < 1) {\n return func.apply(this, arguments);\n }\n };\n }\n\n /**\n * Creates a function that invokes `func`, with up to `n` arguments,\n * ignoring any additional arguments.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Function\n * @param {Function} func The function to cap arguments for.\n * @param {number} [n=func.length] The arity cap.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Function} Returns the new capped function.\n * @example\n *\n * _.map(['6', '8', '10'], _.ary(parseInt, 1));\n * // => [6, 8, 10]\n */\n function ary(func, n, guard) {\n n = guard ? undefined : n;\n n = (func && n == null) ? func.length : n;\n return createWrap(func, WRAP_ARY_FLAG, undefined, undefined, undefined, undefined, n);\n }\n\n /**\n * Creates a function that invokes `func`, with the `this` binding and arguments\n * of the created function, while it's called less than `n` times. Subsequent\n * calls to the created function return the result of the last `func` invocation.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Function\n * @param {number} n The number of calls at which `func` is no longer invoked.\n * @param {Function} func The function to restrict.\n * @returns {Function} Returns the new restricted function.\n * @example\n *\n * jQuery(element).on('click', _.before(5, addContactToList));\n * // => Allows adding up to 4 contacts to the list.\n */\n function before(n, func) {\n var result;\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n n = toInteger(n);\n return function() {\n if (--n > 0) {\n result = func.apply(this, arguments);\n }\n if (n <= 1) {\n func = undefined;\n }\n return result;\n };\n }\n\n /**\n * Creates a function that invokes `func` with the `this` binding of `thisArg`\n * and `partials` prepended to the arguments it receives.\n *\n * The `_.bind.placeholder` value, which defaults to `_` in monolithic builds,\n * may be used as a placeholder for partially applied arguments.\n *\n * **Note:** Unlike native `Function#bind`, this method doesn't set the \"length\"\n * property of bound functions.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to bind.\n * @param {*} thisArg The `this` binding of `func`.\n * @param {...*} [partials] The arguments to be partially applied.\n * @returns {Function} Returns the new bound function.\n * @example\n *\n * function greet(greeting, punctuation) {\n * return greeting + ' ' + this.user + punctuation;\n * }\n *\n * var object = { 'user': 'fred' };\n *\n * var bound = _.bind(greet, object, 'hi');\n * bound('!');\n * // => 'hi fred!'\n *\n * // Bound with placeholders.\n * var bound = _.bind(greet, object, _, '!');\n * bound('hi');\n * // => 'hi fred!'\n */\n var bind = baseRest(function(func, thisArg, partials) {\n var bitmask = WRAP_BIND_FLAG;\n if (partials.length) {\n var holders = replaceHolders(partials, getHolder(bind));\n bitmask |= WRAP_PARTIAL_FLAG;\n }\n return createWrap(func, bitmask, thisArg, partials, holders);\n });\n\n /**\n * Creates a function that invokes the method at `object[key]` with `partials`\n * prepended to the arguments it receives.\n *\n * This method differs from `_.bind` by allowing bound functions to reference\n * methods that may be redefined or don't yet exist. See\n * [Peter Michaux's article](http://peter.michaux.ca/articles/lazy-function-definition-pattern)\n * for more details.\n *\n * The `_.bindKey.placeholder` value, which defaults to `_` in monolithic\n * builds, may be used as a placeholder for partially applied arguments.\n *\n * @static\n * @memberOf _\n * @since 0.10.0\n * @category Function\n * @param {Object} object The object to invoke the method on.\n * @param {string} key The key of the method.\n * @param {...*} [partials] The arguments to be partially applied.\n * @returns {Function} Returns the new bound function.\n * @example\n *\n * var object = {\n * 'user': 'fred',\n * 'greet': function(greeting, punctuation) {\n * return greeting + ' ' + this.user + punctuation;\n * }\n * };\n *\n * var bound = _.bindKey(object, 'greet', 'hi');\n * bound('!');\n * // => 'hi fred!'\n *\n * object.greet = function(greeting, punctuation) {\n * return greeting + 'ya ' + this.user + punctuation;\n * };\n *\n * bound('!');\n * // => 'hiya fred!'\n *\n * // Bound with placeholders.\n * var bound = _.bindKey(object, 'greet', _, '!');\n * bound('hi');\n * // => 'hiya fred!'\n */\n var bindKey = baseRest(function(object, key, partials) {\n var bitmask = WRAP_BIND_FLAG | WRAP_BIND_KEY_FLAG;\n if (partials.length) {\n var holders = replaceHolders(partials, getHolder(bindKey));\n bitmask |= WRAP_PARTIAL_FLAG;\n }\n return createWrap(key, bitmask, object, partials, holders);\n });\n\n /**\n * Creates a function that accepts arguments of `func` and either invokes\n * `func` returning its result, if at least `arity` number of arguments have\n * been provided, or returns a function that accepts the remaining `func`\n * arguments, and so on. The arity of `func` may be specified if `func.length`\n * is not sufficient.\n *\n * The `_.curry.placeholder` value, which defaults to `_` in monolithic builds,\n * may be used as a placeholder for provided arguments.\n *\n * **Note:** This method doesn't set the \"length\" property of curried functions.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Function\n * @param {Function} func The function to curry.\n * @param {number} [arity=func.length] The arity of `func`.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Function} Returns the new curried function.\n * @example\n *\n * var abc = function(a, b, c) {\n * return [a, b, c];\n * };\n *\n * var curried = _.curry(abc);\n *\n * curried(1)(2)(3);\n * // => [1, 2, 3]\n *\n * curried(1, 2)(3);\n * // => [1, 2, 3]\n *\n * curried(1, 2, 3);\n * // => [1, 2, 3]\n *\n * // Curried with placeholders.\n * curried(1)(_, 3)(2);\n * // => [1, 2, 3]\n */\n function curry(func, arity, guard) {\n arity = guard ? undefined : arity;\n var result = createWrap(func, WRAP_CURRY_FLAG, undefined, undefined, undefined, undefined, undefined, arity);\n result.placeholder = curry.placeholder;\n return result;\n }\n\n /**\n * This method is like `_.curry` except that arguments are applied to `func`\n * in the manner of `_.partialRight` instead of `_.partial`.\n *\n * The `_.curryRight.placeholder` value, which defaults to `_` in monolithic\n * builds, may be used as a placeholder for provided arguments.\n *\n * **Note:** This method doesn't set the \"length\" property of curried functions.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Function\n * @param {Function} func The function to curry.\n * @param {number} [arity=func.length] The arity of `func`.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Function} Returns the new curried function.\n * @example\n *\n * var abc = function(a, b, c) {\n * return [a, b, c];\n * };\n *\n * var curried = _.curryRight(abc);\n *\n * curried(3)(2)(1);\n * // => [1, 2, 3]\n *\n * curried(2, 3)(1);\n * // => [1, 2, 3]\n *\n * curried(1, 2, 3);\n * // => [1, 2, 3]\n *\n * // Curried with placeholders.\n * curried(3)(1, _)(2);\n * // => [1, 2, 3]\n */\n function curryRight(func, arity, guard) {\n arity = guard ? undefined : arity;\n var result = createWrap(func, WRAP_CURRY_RIGHT_FLAG, undefined, undefined, undefined, undefined, undefined, arity);\n result.placeholder = curryRight.placeholder;\n return result;\n }\n\n /**\n * Creates a debounced function that delays invoking `func` until after `wait`\n * milliseconds have elapsed since the last time the debounced function was\n * invoked. The debounced function comes with a `cancel` method to cancel\n * delayed `func` invocations and a `flush` method to immediately invoke them.\n * Provide `options` to indicate whether `func` should be invoked on the\n * leading and/or trailing edge of the `wait` timeout. The `func` is invoked\n * with the last arguments provided to the debounced function. Subsequent\n * calls to the debounced function return the result of the last `func`\n * invocation.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is\n * invoked on the trailing edge of the timeout only if the debounced function\n * is invoked more than once during the `wait` timeout.\n *\n * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n * until to the next tick, similar to `setTimeout` with a timeout of `0`.\n *\n * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n * for details over the differences between `_.debounce` and `_.throttle`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to debounce.\n * @param {number} [wait=0] The number of milliseconds to delay.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.leading=false]\n * Specify invoking on the leading edge of the timeout.\n * @param {number} [options.maxWait]\n * The maximum time `func` is allowed to be delayed before it's invoked.\n * @param {boolean} [options.trailing=true]\n * Specify invoking on the trailing edge of the timeout.\n * @returns {Function} Returns the new debounced function.\n * @example\n *\n * // Avoid costly calculations while the window size is in flux.\n * jQuery(window).on('resize', _.debounce(calculateLayout, 150));\n *\n * // Invoke `sendMail` when clicked, debouncing subsequent calls.\n * jQuery(element).on('click', _.debounce(sendMail, 300, {\n * 'leading': true,\n * 'trailing': false\n * }));\n *\n * // Ensure `batchLog` is invoked once after 1 second of debounced calls.\n * var debounced = _.debounce(batchLog, 250, { 'maxWait': 1000 });\n * var source = new EventSource('/stream');\n * jQuery(source).on('message', debounced);\n *\n * // Cancel the trailing debounced invocation.\n * jQuery(window).on('popstate', debounced.cancel);\n */\n function debounce(func, wait, options) {\n var lastArgs,\n lastThis,\n maxWait,\n result,\n timerId,\n lastCallTime,\n lastInvokeTime = 0,\n leading = false,\n maxing = false,\n trailing = true;\n\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n wait = toNumber(wait) || 0;\n if (isObject(options)) {\n leading = !!options.leading;\n maxing = 'maxWait' in options;\n maxWait = maxing ? nativeMax(toNumber(options.maxWait) || 0, wait) : maxWait;\n trailing = 'trailing' in options ? !!options.trailing : trailing;\n }\n\n function invokeFunc(time) {\n var args = lastArgs,\n thisArg = lastThis;\n\n lastArgs = lastThis = undefined;\n lastInvokeTime = time;\n result = func.apply(thisArg, args);\n return result;\n }\n\n function leadingEdge(time) {\n // Reset any `maxWait` timer.\n lastInvokeTime = time;\n // Start the timer for the trailing edge.\n timerId = setTimeout(timerExpired, wait);\n // Invoke the leading edge.\n return leading ? invokeFunc(time) : result;\n }\n\n function remainingWait(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime,\n timeWaiting = wait - timeSinceLastCall;\n\n return maxing\n ? nativeMin(timeWaiting, maxWait - timeSinceLastInvoke)\n : timeWaiting;\n }\n\n function shouldInvoke(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime;\n\n // Either this is the first call, activity has stopped and we're at the\n // trailing edge, the system time has gone backwards and we're treating\n // it as the trailing edge, or we've hit the `maxWait` limit.\n return (lastCallTime === undefined || (timeSinceLastCall >= wait) ||\n (timeSinceLastCall < 0) || (maxing && timeSinceLastInvoke >= maxWait));\n }\n\n function timerExpired() {\n var time = now();\n if (shouldInvoke(time)) {\n return trailingEdge(time);\n }\n // Restart the timer.\n timerId = setTimeout(timerExpired, remainingWait(time));\n }\n\n function trailingEdge(time) {\n timerId = undefined;\n\n // Only invoke if we have `lastArgs` which means `func` has been\n // debounced at least once.\n if (trailing && lastArgs) {\n return invokeFunc(time);\n }\n lastArgs = lastThis = undefined;\n return result;\n }\n\n function cancel() {\n if (timerId !== undefined) {\n clearTimeout(timerId);\n }\n lastInvokeTime = 0;\n lastArgs = lastCallTime = lastThis = timerId = undefined;\n }\n\n function flush() {\n return timerId === undefined ? result : trailingEdge(now());\n }\n\n function debounced() {\n var time = now(),\n isInvoking = shouldInvoke(time);\n\n lastArgs = arguments;\n lastThis = this;\n lastCallTime = time;\n\n if (isInvoking) {\n if (timerId === undefined) {\n return leadingEdge(lastCallTime);\n }\n if (maxing) {\n // Handle invocations in a tight loop.\n clearTimeout(timerId);\n timerId = setTimeout(timerExpired, wait);\n return invokeFunc(lastCallTime);\n }\n }\n if (timerId === undefined) {\n timerId = setTimeout(timerExpired, wait);\n }\n return result;\n }\n debounced.cancel = cancel;\n debounced.flush = flush;\n return debounced;\n }\n\n /**\n * Defers invoking the `func` until the current call stack has cleared. Any\n * additional arguments are provided to `func` when it's invoked.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to defer.\n * @param {...*} [args] The arguments to invoke `func` with.\n * @returns {number} Returns the timer id.\n * @example\n *\n * _.defer(function(text) {\n * console.log(text);\n * }, 'deferred');\n * // => Logs 'deferred' after one millisecond.\n */\n var defer = baseRest(function(func, args) {\n return baseDelay(func, 1, args);\n });\n\n /**\n * Invokes `func` after `wait` milliseconds. Any additional arguments are\n * provided to `func` when it's invoked.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to delay.\n * @param {number} wait The number of milliseconds to delay invocation.\n * @param {...*} [args] The arguments to invoke `func` with.\n * @returns {number} Returns the timer id.\n * @example\n *\n * _.delay(function(text) {\n * console.log(text);\n * }, 1000, 'later');\n * // => Logs 'later' after one second.\n */\n var delay = baseRest(function(func, wait, args) {\n return baseDelay(func, toNumber(wait) || 0, args);\n });\n\n /**\n * Creates a function that invokes `func` with arguments reversed.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Function\n * @param {Function} func The function to flip arguments for.\n * @returns {Function} Returns the new flipped function.\n * @example\n *\n * var flipped = _.flip(function() {\n * return _.toArray(arguments);\n * });\n *\n * flipped('a', 'b', 'c', 'd');\n * // => ['d', 'c', 'b', 'a']\n */\n function flip(func) {\n return createWrap(func, WRAP_FLIP_FLAG);\n }\n\n /**\n * Creates a function that memoizes the result of `func`. If `resolver` is\n * provided, it determines the cache key for storing the result based on the\n * arguments provided to the memoized function. By default, the first argument\n * provided to the memoized function is used as the map cache key. The `func`\n * is invoked with the `this` binding of the memoized function.\n *\n * **Note:** The cache is exposed as the `cache` property on the memoized\n * function. Its creation may be customized by replacing the `_.memoize.Cache`\n * constructor with one whose instances implement the\n * [`Map`](http://ecma-international.org/ecma-262/7.0/#sec-properties-of-the-map-prototype-object)\n * method interface of `clear`, `delete`, `get`, `has`, and `set`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to have its output memoized.\n * @param {Function} [resolver] The function to resolve the cache key.\n * @returns {Function} Returns the new memoized function.\n * @example\n *\n * var object = { 'a': 1, 'b': 2 };\n * var other = { 'c': 3, 'd': 4 };\n *\n * var values = _.memoize(_.values);\n * values(object);\n * // => [1, 2]\n *\n * values(other);\n * // => [3, 4]\n *\n * object.a = 2;\n * values(object);\n * // => [1, 2]\n *\n * // Modify the result cache.\n * values.cache.set(object, ['a', 'b']);\n * values(object);\n * // => ['a', 'b']\n *\n * // Replace `_.memoize.Cache`.\n * _.memoize.Cache = WeakMap;\n */\n function memoize(func, resolver) {\n if (typeof func != 'function' || (resolver != null && typeof resolver != 'function')) {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n var memoized = function() {\n var args = arguments,\n key = resolver ? resolver.apply(this, args) : args[0],\n cache = memoized.cache;\n\n if (cache.has(key)) {\n return cache.get(key);\n }\n var result = func.apply(this, args);\n memoized.cache = cache.set(key, result) || cache;\n return result;\n };\n memoized.cache = new (memoize.Cache || MapCache);\n return memoized;\n }\n\n // Expose `MapCache`.\n memoize.Cache = MapCache;\n\n /**\n * Creates a function that negates the result of the predicate `func`. The\n * `func` predicate is invoked with the `this` binding and arguments of the\n * created function.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Function\n * @param {Function} predicate The predicate to negate.\n * @returns {Function} Returns the new negated function.\n * @example\n *\n * function isEven(n) {\n * return n % 2 == 0;\n * }\n *\n * _.filter([1, 2, 3, 4, 5, 6], _.negate(isEven));\n * // => [1, 3, 5]\n */\n function negate(predicate) {\n if (typeof predicate != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n return function() {\n var args = arguments;\n switch (args.length) {\n case 0: return !predicate.call(this);\n case 1: return !predicate.call(this, args[0]);\n case 2: return !predicate.call(this, args[0], args[1]);\n case 3: return !predicate.call(this, args[0], args[1], args[2]);\n }\n return !predicate.apply(this, args);\n };\n }\n\n /**\n * Creates a function that is restricted to invoking `func` once. Repeat calls\n * to the function return the value of the first invocation. The `func` is\n * invoked with the `this` binding and arguments of the created function.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to restrict.\n * @returns {Function} Returns the new restricted function.\n * @example\n *\n * var initialize = _.once(createApplication);\n * initialize();\n * initialize();\n * // => `createApplication` is invoked once\n */\n function once(func) {\n return before(2, func);\n }\n\n /**\n * Creates a function that invokes `func` with its arguments transformed.\n *\n * @static\n * @since 4.0.0\n * @memberOf _\n * @category Function\n * @param {Function} func The function to wrap.\n * @param {...(Function|Function[])} [transforms=[_.identity]]\n * The argument transforms.\n * @returns {Function} Returns the new function.\n * @example\n *\n * function doubled(n) {\n * return n * 2;\n * }\n *\n * function square(n) {\n * return n * n;\n * }\n *\n * var func = _.overArgs(function(x, y) {\n * return [x, y];\n * }, [square, doubled]);\n *\n * func(9, 3);\n * // => [81, 6]\n *\n * func(10, 5);\n * // => [100, 10]\n */\n var overArgs = castRest(function(func, transforms) {\n transforms = (transforms.length == 1 && isArray(transforms[0]))\n ? arrayMap(transforms[0], baseUnary(getIteratee()))\n : arrayMap(baseFlatten(transforms, 1), baseUnary(getIteratee()));\n\n var funcsLength = transforms.length;\n return baseRest(function(args) {\n var index = -1,\n length = nativeMin(args.length, funcsLength);\n\n while (++index < length) {\n args[index] = transforms[index].call(this, args[index]);\n }\n return apply(func, this, args);\n });\n });\n\n /**\n * Creates a function that invokes `func` with `partials` prepended to the\n * arguments it receives. This method is like `_.bind` except it does **not**\n * alter the `this` binding.\n *\n * The `_.partial.placeholder` value, which defaults to `_` in monolithic\n * builds, may be used as a placeholder for partially applied arguments.\n *\n * **Note:** This method doesn't set the \"length\" property of partially\n * applied functions.\n *\n * @static\n * @memberOf _\n * @since 0.2.0\n * @category Function\n * @param {Function} func The function to partially apply arguments to.\n * @param {...*} [partials] The arguments to be partially applied.\n * @returns {Function} Returns the new partially applied function.\n * @example\n *\n * function greet(greeting, name) {\n * return greeting + ' ' + name;\n * }\n *\n * var sayHelloTo = _.partial(greet, 'hello');\n * sayHelloTo('fred');\n * // => 'hello fred'\n *\n * // Partially applied with placeholders.\n * var greetFred = _.partial(greet, _, 'fred');\n * greetFred('hi');\n * // => 'hi fred'\n */\n var partial = baseRest(function(func, partials) {\n var holders = replaceHolders(partials, getHolder(partial));\n return createWrap(func, WRAP_PARTIAL_FLAG, undefined, partials, holders);\n });\n\n /**\n * This method is like `_.partial` except that partially applied arguments\n * are appended to the arguments it receives.\n *\n * The `_.partialRight.placeholder` value, which defaults to `_` in monolithic\n * builds, may be used as a placeholder for partially applied arguments.\n *\n * **Note:** This method doesn't set the \"length\" property of partially\n * applied functions.\n *\n * @static\n * @memberOf _\n * @since 1.0.0\n * @category Function\n * @param {Function} func The function to partially apply arguments to.\n * @param {...*} [partials] The arguments to be partially applied.\n * @returns {Function} Returns the new partially applied function.\n * @example\n *\n * function greet(greeting, name) {\n * return greeting + ' ' + name;\n * }\n *\n * var greetFred = _.partialRight(greet, 'fred');\n * greetFred('hi');\n * // => 'hi fred'\n *\n * // Partially applied with placeholders.\n * var sayHelloTo = _.partialRight(greet, 'hello', _);\n * sayHelloTo('fred');\n * // => 'hello fred'\n */\n var partialRight = baseRest(function(func, partials) {\n var holders = replaceHolders(partials, getHolder(partialRight));\n return createWrap(func, WRAP_PARTIAL_RIGHT_FLAG, undefined, partials, holders);\n });\n\n /**\n * Creates a function that invokes `func` with arguments arranged according\n * to the specified `indexes` where the argument value at the first index is\n * provided as the first argument, the argument value at the second index is\n * provided as the second argument, and so on.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Function\n * @param {Function} func The function to rearrange arguments for.\n * @param {...(number|number[])} indexes The arranged argument indexes.\n * @returns {Function} Returns the new function.\n * @example\n *\n * var rearged = _.rearg(function(a, b, c) {\n * return [a, b, c];\n * }, [2, 0, 1]);\n *\n * rearged('b', 'c', 'a')\n * // => ['a', 'b', 'c']\n */\n var rearg = flatRest(function(func, indexes) {\n return createWrap(func, WRAP_REARG_FLAG, undefined, undefined, undefined, indexes);\n });\n\n /**\n * Creates a function that invokes `func` with the `this` binding of the\n * created function and arguments from `start` and beyond provided as\n * an array.\n *\n * **Note:** This method is based on the\n * [rest parameter](https://mdn.io/rest_parameters).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Function\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @returns {Function} Returns the new function.\n * @example\n *\n * var say = _.rest(function(what, names) {\n * return what + ' ' + _.initial(names).join(', ') +\n * (_.size(names) > 1 ? ', & ' : '') + _.last(names);\n * });\n *\n * say('hello', 'fred', 'barney', 'pebbles');\n * // => 'hello fred, barney, & pebbles'\n */\n function rest(func, start) {\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n start = start === undefined ? start : toInteger(start);\n return baseRest(func, start);\n }\n\n /**\n * Creates a function that invokes `func` with the `this` binding of the\n * create function and an array of arguments much like\n * [`Function#apply`](http://www.ecma-international.org/ecma-262/7.0/#sec-function.prototype.apply).\n *\n * **Note:** This method is based on the\n * [spread operator](https://mdn.io/spread_operator).\n *\n * @static\n * @memberOf _\n * @since 3.2.0\n * @category Function\n * @param {Function} func The function to spread arguments over.\n * @param {number} [start=0] The start position of the spread.\n * @returns {Function} Returns the new function.\n * @example\n *\n * var say = _.spread(function(who, what) {\n * return who + ' says ' + what;\n * });\n *\n * say(['fred', 'hello']);\n * // => 'fred says hello'\n *\n * var numbers = Promise.all([\n * Promise.resolve(40),\n * Promise.resolve(36)\n * ]);\n *\n * numbers.then(_.spread(function(x, y) {\n * return x + y;\n * }));\n * // => a Promise of 76\n */\n function spread(func, start) {\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n start = start == null ? 0 : nativeMax(toInteger(start), 0);\n return baseRest(function(args) {\n var array = args[start],\n otherArgs = castSlice(args, 0, start);\n\n if (array) {\n arrayPush(otherArgs, array);\n }\n return apply(func, this, otherArgs);\n });\n }\n\n /**\n * Creates a throttled function that only invokes `func` at most once per\n * every `wait` milliseconds. The throttled function comes with a `cancel`\n * method to cancel delayed `func` invocations and a `flush` method to\n * immediately invoke them. Provide `options` to indicate whether `func`\n * should be invoked on the leading and/or trailing edge of the `wait`\n * timeout. The `func` is invoked with the last arguments provided to the\n * throttled function. Subsequent calls to the throttled function return the\n * result of the last `func` invocation.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is\n * invoked on the trailing edge of the timeout only if the throttled function\n * is invoked more than once during the `wait` timeout.\n *\n * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n * until to the next tick, similar to `setTimeout` with a timeout of `0`.\n *\n * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n * for details over the differences between `_.throttle` and `_.debounce`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to throttle.\n * @param {number} [wait=0] The number of milliseconds to throttle invocations to.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.leading=true]\n * Specify invoking on the leading edge of the timeout.\n * @param {boolean} [options.trailing=true]\n * Specify invoking on the trailing edge of the timeout.\n * @returns {Function} Returns the new throttled function.\n * @example\n *\n * // Avoid excessively updating the position while scrolling.\n * jQuery(window).on('scroll', _.throttle(updatePosition, 100));\n *\n * // Invoke `renewToken` when the click event is fired, but not more than once every 5 minutes.\n * var throttled = _.throttle(renewToken, 300000, { 'trailing': false });\n * jQuery(element).on('click', throttled);\n *\n * // Cancel the trailing throttled invocation.\n * jQuery(window).on('popstate', throttled.cancel);\n */\n function throttle(func, wait, options) {\n var leading = true,\n trailing = true;\n\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n if (isObject(options)) {\n leading = 'leading' in options ? !!options.leading : leading;\n trailing = 'trailing' in options ? !!options.trailing : trailing;\n }\n return debounce(func, wait, {\n 'leading': leading,\n 'maxWait': wait,\n 'trailing': trailing\n });\n }\n\n /**\n * Creates a function that accepts up to one argument, ignoring any\n * additional arguments.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Function\n * @param {Function} func The function to cap arguments for.\n * @returns {Function} Returns the new capped function.\n * @example\n *\n * _.map(['6', '8', '10'], _.unary(parseInt));\n * // => [6, 8, 10]\n */\n function unary(func) {\n return ary(func, 1);\n }\n\n /**\n * Creates a function that provides `value` to `wrapper` as its first\n * argument. Any additional arguments provided to the function are appended\n * to those provided to the `wrapper`. The wrapper is invoked with the `this`\n * binding of the created function.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {*} value The value to wrap.\n * @param {Function} [wrapper=identity] The wrapper function.\n * @returns {Function} Returns the new function.\n * @example\n *\n * var p = _.wrap(_.escape, function(func, text) {\n * return '<p>' + func(text) + '</p>';\n * });\n *\n * p('fred, barney, & pebbles');\n * // => '<p>fred, barney, & pebbles</p>'\n */\n function wrap(value, wrapper) {\n return partial(castFunction(wrapper), value);\n }\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Casts `value` as an array if it's not one.\n *\n * @static\n * @memberOf _\n * @since 4.4.0\n * @category Lang\n * @param {*} value The value to inspect.\n * @returns {Array} Returns the cast array.\n * @example\n *\n * _.castArray(1);\n * // => [1]\n *\n * _.castArray({ 'a': 1 });\n * // => [{ 'a': 1 }]\n *\n * _.castArray('abc');\n * // => ['abc']\n *\n * _.castArray(null);\n * // => [null]\n *\n * _.castArray(undefined);\n * // => [undefined]\n *\n * _.castArray();\n * // => []\n *\n * var array = [1, 2, 3];\n * console.log(_.castArray(array) === array);\n * // => true\n */\n function castArray() {\n if (!arguments.length) {\n return [];\n }\n var value = arguments[0];\n return isArray(value) ? value : [value];\n }\n\n /**\n * Creates a shallow clone of `value`.\n *\n * **Note:** This method is loosely based on the\n * [structured clone algorithm](https://mdn.io/Structured_clone_algorithm)\n * and supports cloning arrays, array buffers, booleans, date objects, maps,\n * numbers, `Object` objects, regexes, sets, strings, symbols, and typed\n * arrays. The own enumerable properties of `arguments` objects are cloned\n * as plain objects. An empty object is returned for uncloneable values such\n * as error objects, functions, DOM nodes, and WeakMaps.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to clone.\n * @returns {*} Returns the cloned value.\n * @see _.cloneDeep\n * @example\n *\n * var objects = [{ 'a': 1 }, { 'b': 2 }];\n *\n * var shallow = _.clone(objects);\n * console.log(shallow[0] === objects[0]);\n * // => true\n */\n function clone(value) {\n return baseClone(value, CLONE_SYMBOLS_FLAG);\n }\n\n /**\n * This method is like `_.clone` except that it accepts `customizer` which\n * is invoked to produce the cloned value. If `customizer` returns `undefined`,\n * cloning is handled by the method instead. The `customizer` is invoked with\n * up to four arguments; (value [, index|key, object, stack]).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to clone.\n * @param {Function} [customizer] The function to customize cloning.\n * @returns {*} Returns the cloned value.\n * @see _.cloneDeepWith\n * @example\n *\n * function customizer(value) {\n * if (_.isElement(value)) {\n * return value.cloneNode(false);\n * }\n * }\n *\n * var el = _.cloneWith(document.body, customizer);\n *\n * console.log(el === document.body);\n * // => false\n * console.log(el.nodeName);\n * // => 'BODY'\n * console.log(el.childNodes.length);\n * // => 0\n */\n function cloneWith(value, customizer) {\n customizer = typeof customizer == 'function' ? customizer : undefined;\n return baseClone(value, CLONE_SYMBOLS_FLAG, customizer);\n }\n\n /**\n * This method is like `_.clone` except that it recursively clones `value`.\n *\n * @static\n * @memberOf _\n * @since 1.0.0\n * @category Lang\n * @param {*} value The value to recursively clone.\n * @returns {*} Returns the deep cloned value.\n * @see _.clone\n * @example\n *\n * var objects = [{ 'a': 1 }, { 'b': 2 }];\n *\n * var deep = _.cloneDeep(objects);\n * console.log(deep[0] === objects[0]);\n * // => false\n */\n function cloneDeep(value) {\n return baseClone(value, CLONE_DEEP_FLAG | CLONE_SYMBOLS_FLAG);\n }\n\n /**\n * This method is like `_.cloneWith` except that it recursively clones `value`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to recursively clone.\n * @param {Function} [customizer] The function to customize cloning.\n * @returns {*} Returns the deep cloned value.\n * @see _.cloneWith\n * @example\n *\n * function customizer(value) {\n * if (_.isElement(value)) {\n * return value.cloneNode(true);\n * }\n * }\n *\n * var el = _.cloneDeepWith(document.body, customizer);\n *\n * console.log(el === document.body);\n * // => false\n * console.log(el.nodeName);\n * // => 'BODY'\n * console.log(el.childNodes.length);\n * // => 20\n */\n function cloneDeepWith(value, customizer) {\n customizer = typeof customizer == 'function' ? customizer : undefined;\n return baseClone(value, CLONE_DEEP_FLAG | CLONE_SYMBOLS_FLAG, customizer);\n }\n\n /**\n * Checks if `object` conforms to `source` by invoking the predicate\n * properties of `source` with the corresponding property values of `object`.\n *\n * **Note:** This method is equivalent to `_.conforms` when `source` is\n * partially applied.\n *\n * @static\n * @memberOf _\n * @since 4.14.0\n * @category Lang\n * @param {Object} object The object to inspect.\n * @param {Object} source The object of property predicates to conform to.\n * @returns {boolean} Returns `true` if `object` conforms, else `false`.\n * @example\n *\n * var object = { 'a': 1, 'b': 2 };\n *\n * _.conformsTo(object, { 'b': function(n) { return n > 1; } });\n * // => true\n *\n * _.conformsTo(object, { 'b': function(n) { return n > 2; } });\n * // => false\n */\n function conformsTo(object, source) {\n return source == null || baseConformsTo(object, source, keys(source));\n }\n\n /**\n * Performs a\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * comparison between two values to determine if they are equivalent.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.eq(object, object);\n * // => true\n *\n * _.eq(object, other);\n * // => false\n *\n * _.eq('a', 'a');\n * // => true\n *\n * _.eq('a', Object('a'));\n * // => false\n *\n * _.eq(NaN, NaN);\n * // => true\n */\n function eq(value, other) {\n return value === other || (value !== value && other !== other);\n }\n\n /**\n * Checks if `value` is greater than `other`.\n *\n * @static\n * @memberOf _\n * @since 3.9.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if `value` is greater than `other`,\n * else `false`.\n * @see _.lt\n * @example\n *\n * _.gt(3, 1);\n * // => true\n *\n * _.gt(3, 3);\n * // => false\n *\n * _.gt(1, 3);\n * // => false\n */\n var gt = createRelationalOperation(baseGt);\n\n /**\n * Checks if `value` is greater than or equal to `other`.\n *\n * @static\n * @memberOf _\n * @since 3.9.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if `value` is greater than or equal to\n * `other`, else `false`.\n * @see _.lte\n * @example\n *\n * _.gte(3, 1);\n * // => true\n *\n * _.gte(3, 3);\n * // => true\n *\n * _.gte(1, 3);\n * // => false\n */\n var gte = createRelationalOperation(function(value, other) {\n return value >= other;\n });\n\n /**\n * Checks if `value` is likely an `arguments` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n * else `false`.\n * @example\n *\n * _.isArguments(function() { return arguments; }());\n * // => true\n *\n * _.isArguments([1, 2, 3]);\n * // => false\n */\n var isArguments = baseIsArguments(function() { return arguments; }()) ? baseIsArguments : function(value) {\n return isObjectLike(value) && hasOwnProperty.call(value, 'callee') &&\n !propertyIsEnumerable.call(value, 'callee');\n };\n\n /**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\n var isArray = Array.isArray;\n\n /**\n * Checks if `value` is classified as an `ArrayBuffer` object.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array buffer, else `false`.\n * @example\n *\n * _.isArrayBuffer(new ArrayBuffer(2));\n * // => true\n *\n * _.isArrayBuffer(new Array(2));\n * // => false\n */\n var isArrayBuffer = nodeIsArrayBuffer ? baseUnary(nodeIsArrayBuffer) : baseIsArrayBuffer;\n\n /**\n * Checks if `value` is array-like. A value is considered array-like if it's\n * not a function and has a `value.length` that's an integer greater than or\n * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n * @example\n *\n * _.isArrayLike([1, 2, 3]);\n * // => true\n *\n * _.isArrayLike(document.body.children);\n * // => true\n *\n * _.isArrayLike('abc');\n * // => true\n *\n * _.isArrayLike(_.noop);\n * // => false\n */\n function isArrayLike(value) {\n return value != null && isLength(value.length) && !isFunction(value);\n }\n\n /**\n * This method is like `_.isArrayLike` except that it also checks if `value`\n * is an object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array-like object,\n * else `false`.\n * @example\n *\n * _.isArrayLikeObject([1, 2, 3]);\n * // => true\n *\n * _.isArrayLikeObject(document.body.children);\n * // => true\n *\n * _.isArrayLikeObject('abc');\n * // => false\n *\n * _.isArrayLikeObject(_.noop);\n * // => false\n */\n function isArrayLikeObject(value) {\n return isObjectLike(value) && isArrayLike(value);\n }\n\n /**\n * Checks if `value` is classified as a boolean primitive or object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a boolean, else `false`.\n * @example\n *\n * _.isBoolean(false);\n * // => true\n *\n * _.isBoolean(null);\n * // => false\n */\n function isBoolean(value) {\n return value === true || value === false ||\n (isObjectLike(value) && baseGetTag(value) == boolTag);\n }\n\n /**\n * Checks if `value` is a buffer.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a buffer, else `false`.\n * @example\n *\n * _.isBuffer(new Buffer(2));\n * // => true\n *\n * _.isBuffer(new Uint8Array(2));\n * // => false\n */\n var isBuffer = nativeIsBuffer || stubFalse;\n\n /**\n * Checks if `value` is classified as a `Date` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a date object, else `false`.\n * @example\n *\n * _.isDate(new Date);\n * // => true\n *\n * _.isDate('Mon April 23 2012');\n * // => false\n */\n var isDate = nodeIsDate ? baseUnary(nodeIsDate) : baseIsDate;\n\n /**\n * Checks if `value` is likely a DOM element.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a DOM element, else `false`.\n * @example\n *\n * _.isElement(document.body);\n * // => true\n *\n * _.isElement('<body>');\n * // => false\n */\n function isElement(value) {\n return isObjectLike(value) && value.nodeType === 1 && !isPlainObject(value);\n }\n\n /**\n * Checks if `value` is an empty object, collection, map, or set.\n *\n * Objects are considered empty if they have no own enumerable string keyed\n * properties.\n *\n * Array-like values such as `arguments` objects, arrays, buffers, strings, or\n * jQuery-like collections are considered empty if they have a `length` of `0`.\n * Similarly, maps and sets are considered empty if they have a `size` of `0`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is empty, else `false`.\n * @example\n *\n * _.isEmpty(null);\n * // => true\n *\n * _.isEmpty(true);\n * // => true\n *\n * _.isEmpty(1);\n * // => true\n *\n * _.isEmpty([1, 2, 3]);\n * // => false\n *\n * _.isEmpty({ 'a': 1 });\n * // => false\n */\n function isEmpty(value) {\n if (value == null) {\n return true;\n }\n if (isArrayLike(value) &&\n (isArray(value) || typeof value == 'string' || typeof value.splice == 'function' ||\n isBuffer(value) || isTypedArray(value) || isArguments(value))) {\n return !value.length;\n }\n var tag = getTag(value);\n if (tag == mapTag || tag == setTag) {\n return !value.size;\n }\n if (isPrototype(value)) {\n return !baseKeys(value).length;\n }\n for (var key in value) {\n if (hasOwnProperty.call(value, key)) {\n return false;\n }\n }\n return true;\n }\n\n /**\n * Performs a deep comparison between two values to determine if they are\n * equivalent.\n *\n * **Note:** This method supports comparing arrays, array buffers, booleans,\n * date objects, error objects, maps, numbers, `Object` objects, regexes,\n * sets, strings, symbols, and typed arrays. `Object` objects are compared\n * by their own, not inherited, enumerable properties. Functions and DOM\n * nodes are compared by strict equality, i.e. `===`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.isEqual(object, other);\n * // => true\n *\n * object === other;\n * // => false\n */\n function isEqual(value, other) {\n return baseIsEqual(value, other);\n }\n\n /**\n * This method is like `_.isEqual` except that it accepts `customizer` which\n * is invoked to compare values. If `customizer` returns `undefined`, comparisons\n * are handled by the method instead. The `customizer` is invoked with up to\n * six arguments: (objValue, othValue [, index|key, object, other, stack]).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @param {Function} [customizer] The function to customize comparisons.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * function isGreeting(value) {\n * return /^h(?:i|ello)$/.test(value);\n * }\n *\n * function customizer(objValue, othValue) {\n * if (isGreeting(objValue) && isGreeting(othValue)) {\n * return true;\n * }\n * }\n *\n * var array = ['hello', 'goodbye'];\n * var other = ['hi', 'goodbye'];\n *\n * _.isEqualWith(array, other, customizer);\n * // => true\n */\n function isEqualWith(value, other, customizer) {\n customizer = typeof customizer == 'function' ? customizer : undefined;\n var result = customizer ? customizer(value, other) : undefined;\n return result === undefined ? baseIsEqual(value, other, undefined, customizer) : !!result;\n }\n\n /**\n * Checks if `value` is an `Error`, `EvalError`, `RangeError`, `ReferenceError`,\n * `SyntaxError`, `TypeError`, or `URIError` object.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an error object, else `false`.\n * @example\n *\n * _.isError(new Error);\n * // => true\n *\n * _.isError(Error);\n * // => false\n */\n function isError(value) {\n if (!isObjectLike(value)) {\n return false;\n }\n var tag = baseGetTag(value);\n return tag == errorTag || tag == domExcTag ||\n (typeof value.message == 'string' && typeof value.name == 'string' && !isPlainObject(value));\n }\n\n /**\n * Checks if `value` is a finite primitive number.\n *\n * **Note:** This method is based on\n * [`Number.isFinite`](https://mdn.io/Number/isFinite).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a finite number, else `false`.\n * @example\n *\n * _.isFinite(3);\n * // => true\n *\n * _.isFinite(Number.MIN_VALUE);\n * // => true\n *\n * _.isFinite(Infinity);\n * // => false\n *\n * _.isFinite('3');\n * // => false\n */\n function isFinite(value) {\n return typeof value == 'number' && nativeIsFinite(value);\n }\n\n /**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\n function isFunction(value) {\n if (!isObject(value)) {\n return false;\n }\n // The use of `Object#toString` avoids issues with the `typeof` operator\n // in Safari 9 which returns 'object' for typed arrays and other constructors.\n var tag = baseGetTag(value);\n return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag;\n }\n\n /**\n * Checks if `value` is an integer.\n *\n * **Note:** This method is based on\n * [`Number.isInteger`](https://mdn.io/Number/isInteger).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an integer, else `false`.\n * @example\n *\n * _.isInteger(3);\n * // => true\n *\n * _.isInteger(Number.MIN_VALUE);\n * // => false\n *\n * _.isInteger(Infinity);\n * // => false\n *\n * _.isInteger('3');\n * // => false\n */\n function isInteger(value) {\n return typeof value == 'number' && value == toInteger(value);\n }\n\n /**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This method is loosely based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n * @example\n *\n * _.isLength(3);\n * // => true\n *\n * _.isLength(Number.MIN_VALUE);\n * // => false\n *\n * _.isLength(Infinity);\n * // => false\n *\n * _.isLength('3');\n * // => false\n */\n function isLength(value) {\n return typeof value == 'number' &&\n value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n }\n\n /**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\n function isObject(value) {\n var type = typeof value;\n return value != null && (type == 'object' || type == 'function');\n }\n\n /**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\n function isObjectLike(value) {\n return value != null && typeof value == 'object';\n }\n\n /**\n * Checks if `value` is classified as a `Map` object.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a map, else `false`.\n * @example\n *\n * _.isMap(new Map);\n * // => true\n *\n * _.isMap(new WeakMap);\n * // => false\n */\n var isMap = nodeIsMap ? baseUnary(nodeIsMap) : baseIsMap;\n\n /**\n * Performs a partial deep comparison between `object` and `source` to\n * determine if `object` contains equivalent property values.\n *\n * **Note:** This method is equivalent to `_.matches` when `source` is\n * partially applied.\n *\n * Partial comparisons will match empty array and empty object `source`\n * values against any array or object value, respectively. See `_.isEqual`\n * for a list of supported value comparisons.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {Object} object The object to inspect.\n * @param {Object} source The object of property values to match.\n * @returns {boolean} Returns `true` if `object` is a match, else `false`.\n * @example\n *\n * var object = { 'a': 1, 'b': 2 };\n *\n * _.isMatch(object, { 'b': 2 });\n * // => true\n *\n * _.isMatch(object, { 'b': 1 });\n * // => false\n */\n function isMatch(object, source) {\n return object === source || baseIsMatch(object, source, getMatchData(source));\n }\n\n /**\n * This method is like `_.isMatch` except that it accepts `customizer` which\n * is invoked to compare values. If `customizer` returns `undefined`, comparisons\n * are handled by the method instead. The `customizer` is invoked with five\n * arguments: (objValue, srcValue, index|key, object, source).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {Object} object The object to inspect.\n * @param {Object} source The object of property values to match.\n * @param {Function} [customizer] The function to customize comparisons.\n * @returns {boolean} Returns `true` if `object` is a match, else `false`.\n * @example\n *\n * function isGreeting(value) {\n * return /^h(?:i|ello)$/.test(value);\n * }\n *\n * function customizer(objValue, srcValue) {\n * if (isGreeting(objValue) && isGreeting(srcValue)) {\n * return true;\n * }\n * }\n *\n * var object = { 'greeting': 'hello' };\n * var source = { 'greeting': 'hi' };\n *\n * _.isMatchWith(object, source, customizer);\n * // => true\n */\n function isMatchWith(object, source, customizer) {\n customizer = typeof customizer == 'function' ? customizer : undefined;\n return baseIsMatch(object, source, getMatchData(source), customizer);\n }\n\n /**\n * Checks if `value` is `NaN`.\n *\n * **Note:** This method is based on\n * [`Number.isNaN`](https://mdn.io/Number/isNaN) and is not the same as\n * global [`isNaN`](https://mdn.io/isNaN) which returns `true` for\n * `undefined` and other non-number values.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is `NaN`, else `false`.\n * @example\n *\n * _.isNaN(NaN);\n * // => true\n *\n * _.isNaN(new Number(NaN));\n * // => true\n *\n * isNaN(undefined);\n * // => true\n *\n * _.isNaN(undefined);\n * // => false\n */\n function isNaN(value) {\n // An `NaN` primitive is the only value that is not equal to itself.\n // Perform the `toStringTag` check first to avoid errors with some\n // ActiveX objects in IE.\n return isNumber(value) && value != +value;\n }\n\n /**\n * Checks if `value` is a pristine native function.\n *\n * **Note:** This method can't reliably detect native functions in the presence\n * of the core-js package because core-js circumvents this kind of detection.\n * Despite multiple requests, the core-js maintainer has made it clear: any\n * attempt to fix the detection will be obstructed. As a result, we're left\n * with little choice but to throw an error. Unfortunately, this also affects\n * packages, like [babel-polyfill](https://www.npmjs.com/package/babel-polyfill),\n * which rely on core-js.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function,\n * else `false`.\n * @example\n *\n * _.isNative(Array.prototype.push);\n * // => true\n *\n * _.isNative(_);\n * // => false\n */\n function isNative(value) {\n if (isMaskable(value)) {\n throw new Error(CORE_ERROR_TEXT);\n }\n return baseIsNative(value);\n }\n\n /**\n * Checks if `value` is `null`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is `null`, else `false`.\n * @example\n *\n * _.isNull(null);\n * // => true\n *\n * _.isNull(void 0);\n * // => false\n */\n function isNull(value) {\n return value === null;\n }\n\n /**\n * Checks if `value` is `null` or `undefined`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is nullish, else `false`.\n * @example\n *\n * _.isNil(null);\n * // => true\n *\n * _.isNil(void 0);\n * // => true\n *\n * _.isNil(NaN);\n * // => false\n */\n function isNil(value) {\n return value == null;\n }\n\n /**\n * Checks if `value` is classified as a `Number` primitive or object.\n *\n * **Note:** To exclude `Infinity`, `-Infinity`, and `NaN`, which are\n * classified as numbers, use the `_.isFinite` method.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a number, else `false`.\n * @example\n *\n * _.isNumber(3);\n * // => true\n *\n * _.isNumber(Number.MIN_VALUE);\n * // => true\n *\n * _.isNumber(Infinity);\n * // => true\n *\n * _.isNumber('3');\n * // => false\n */\n function isNumber(value) {\n return typeof value == 'number' ||\n (isObjectLike(value) && baseGetTag(value) == numberTag);\n }\n\n /**\n * Checks if `value` is a plain object, that is, an object created by the\n * `Object` constructor or one with a `[[Prototype]]` of `null`.\n *\n * @static\n * @memberOf _\n * @since 0.8.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a plain object, else `false`.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * }\n *\n * _.isPlainObject(new Foo);\n * // => false\n *\n * _.isPlainObject([1, 2, 3]);\n * // => false\n *\n * _.isPlainObject({ 'x': 0, 'y': 0 });\n * // => true\n *\n * _.isPlainObject(Object.create(null));\n * // => true\n */\n function isPlainObject(value) {\n if (!isObjectLike(value) || baseGetTag(value) != objectTag) {\n return false;\n }\n var proto = getPrototype(value);\n if (proto === null) {\n return true;\n }\n var Ctor = hasOwnProperty.call(proto, 'constructor') && proto.constructor;\n return typeof Ctor == 'function' && Ctor instanceof Ctor &&\n funcToString.call(Ctor) == objectCtorString;\n }\n\n /**\n * Checks if `value` is classified as a `RegExp` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a regexp, else `false`.\n * @example\n *\n * _.isRegExp(/abc/);\n * // => true\n *\n * _.isRegExp('/abc/');\n * // => false\n */\n var isRegExp = nodeIsRegExp ? baseUnary(nodeIsRegExp) : baseIsRegExp;\n\n /**\n * Checks if `value` is a safe integer. An integer is safe if it's an IEEE-754\n * double precision number which isn't the result of a rounded unsafe integer.\n *\n * **Note:** This method is based on\n * [`Number.isSafeInteger`](https://mdn.io/Number/isSafeInteger).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a safe integer, else `false`.\n * @example\n *\n * _.isSafeInteger(3);\n * // => true\n *\n * _.isSafeInteger(Number.MIN_VALUE);\n * // => false\n *\n * _.isSafeInteger(Infinity);\n * // => false\n *\n * _.isSafeInteger('3');\n * // => false\n */\n function isSafeInteger(value) {\n return isInteger(value) && value >= -MAX_SAFE_INTEGER && value <= MAX_SAFE_INTEGER;\n }\n\n /**\n * Checks if `value` is classified as a `Set` object.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a set, else `false`.\n * @example\n *\n * _.isSet(new Set);\n * // => true\n *\n * _.isSet(new WeakSet);\n * // => false\n */\n var isSet = nodeIsSet ? baseUnary(nodeIsSet) : baseIsSet;\n\n /**\n * Checks if `value` is classified as a `String` primitive or object.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a string, else `false`.\n * @example\n *\n * _.isString('abc');\n * // => true\n *\n * _.isString(1);\n * // => false\n */\n function isString(value) {\n return typeof value == 'string' ||\n (!isArray(value) && isObjectLike(value) && baseGetTag(value) == stringTag);\n }\n\n /**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\n function isSymbol(value) {\n return typeof value == 'symbol' ||\n (isObjectLike(value) && baseGetTag(value) == symbolTag);\n }\n\n /**\n * Checks if `value` is classified as a typed array.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n * @example\n *\n * _.isTypedArray(new Uint8Array);\n * // => true\n *\n * _.isTypedArray([]);\n * // => false\n */\n var isTypedArray = nodeIsTypedArray ? baseUnary(nodeIsTypedArray) : baseIsTypedArray;\n\n /**\n * Checks if `value` is `undefined`.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is `undefined`, else `false`.\n * @example\n *\n * _.isUndefined(void 0);\n * // => true\n *\n * _.isUndefined(null);\n * // => false\n */\n function isUndefined(value) {\n return value === undefined;\n }\n\n /**\n * Checks if `value` is classified as a `WeakMap` object.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a weak map, else `false`.\n * @example\n *\n * _.isWeakMap(new WeakMap);\n * // => true\n *\n * _.isWeakMap(new Map);\n * // => false\n */\n function isWeakMap(value) {\n return isObjectLike(value) && getTag(value) == weakMapTag;\n }\n\n /**\n * Checks if `value` is classified as a `WeakSet` object.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a weak set, else `false`.\n * @example\n *\n * _.isWeakSet(new WeakSet);\n * // => true\n *\n * _.isWeakSet(new Set);\n * // => false\n */\n function isWeakSet(value) {\n return isObjectLike(value) && baseGetTag(value) == weakSetTag;\n }\n\n /**\n * Checks if `value` is less than `other`.\n *\n * @static\n * @memberOf _\n * @since 3.9.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if `value` is less than `other`,\n * else `false`.\n * @see _.gt\n * @example\n *\n * _.lt(1, 3);\n * // => true\n *\n * _.lt(3, 3);\n * // => false\n *\n * _.lt(3, 1);\n * // => false\n */\n var lt = createRelationalOperation(baseLt);\n\n /**\n * Checks if `value` is less than or equal to `other`.\n *\n * @static\n * @memberOf _\n * @since 3.9.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if `value` is less than or equal to\n * `other`, else `false`.\n * @see _.gte\n * @example\n *\n * _.lte(1, 3);\n * // => true\n *\n * _.lte(3, 3);\n * // => true\n *\n * _.lte(3, 1);\n * // => false\n */\n var lte = createRelationalOperation(function(value, other) {\n return value <= other;\n });\n\n /**\n * Converts `value` to an array.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {Array} Returns the converted array.\n * @example\n *\n * _.toArray({ 'a': 1, 'b': 2 });\n * // => [1, 2]\n *\n * _.toArray('abc');\n * // => ['a', 'b', 'c']\n *\n * _.toArray(1);\n * // => []\n *\n * _.toArray(null);\n * // => []\n */\n function toArray(value) {\n if (!value) {\n return [];\n }\n if (isArrayLike(value)) {\n return isString(value) ? stringToArray(value) : copyArray(value);\n }\n if (symIterator && value[symIterator]) {\n return iteratorToArray(value[symIterator]());\n }\n var tag = getTag(value),\n func = tag == mapTag ? mapToArray : (tag == setTag ? setToArray : values);\n\n return func(value);\n }\n\n /**\n * Converts `value` to a finite number.\n *\n * @static\n * @memberOf _\n * @since 4.12.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {number} Returns the converted number.\n * @example\n *\n * _.toFinite(3.2);\n * // => 3.2\n *\n * _.toFinite(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toFinite(Infinity);\n * // => 1.7976931348623157e+308\n *\n * _.toFinite('3.2');\n * // => 3.2\n */\n function toFinite(value) {\n if (!value) {\n return value === 0 ? value : 0;\n }\n value = toNumber(value);\n if (value === INFINITY || value === -INFINITY) {\n var sign = (value < 0 ? -1 : 1);\n return sign * MAX_INTEGER;\n }\n return value === value ? value : 0;\n }\n\n /**\n * Converts `value` to an integer.\n *\n * **Note:** This method is loosely based on\n * [`ToInteger`](http://www.ecma-international.org/ecma-262/7.0/#sec-tointeger).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {number} Returns the converted integer.\n * @example\n *\n * _.toInteger(3.2);\n * // => 3\n *\n * _.toInteger(Number.MIN_VALUE);\n * // => 0\n *\n * _.toInteger(Infinity);\n * // => 1.7976931348623157e+308\n *\n * _.toInteger('3.2');\n * // => 3\n */\n function toInteger(value) {\n var result = toFinite(value),\n remainder = result % 1;\n\n return result === result ? (remainder ? result - remainder : result) : 0;\n }\n\n /**\n * Converts `value` to an integer suitable for use as the length of an\n * array-like object.\n *\n * **Note:** This method is based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {number} Returns the converted integer.\n * @example\n *\n * _.toLength(3.2);\n * // => 3\n *\n * _.toLength(Number.MIN_VALUE);\n * // => 0\n *\n * _.toLength(Infinity);\n * // => 4294967295\n *\n * _.toLength('3.2');\n * // => 3\n */\n function toLength(value) {\n return value ? baseClamp(toInteger(value), 0, MAX_ARRAY_LENGTH) : 0;\n }\n\n /**\n * Converts `value` to a number.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to process.\n * @returns {number} Returns the number.\n * @example\n *\n * _.toNumber(3.2);\n * // => 3.2\n *\n * _.toNumber(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toNumber(Infinity);\n * // => Infinity\n *\n * _.toNumber('3.2');\n * // => 3.2\n */\n function toNumber(value) {\n if (typeof value == 'number') {\n return value;\n }\n if (isSymbol(value)) {\n return NAN;\n }\n if (isObject(value)) {\n var other = typeof value.valueOf == 'function' ? value.valueOf() : value;\n value = isObject(other) ? (other + '') : other;\n }\n if (typeof value != 'string') {\n return value === 0 ? value : +value;\n }\n value = baseTrim(value);\n var isBinary = reIsBinary.test(value);\n return (isBinary || reIsOctal.test(value))\n ? freeParseInt(value.slice(2), isBinary ? 2 : 8)\n : (reIsBadHex.test(value) ? NAN : +value);\n }\n\n /**\n * Converts `value` to a plain object flattening inherited enumerable string\n * keyed properties of `value` to own properties of the plain object.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {Object} Returns the converted plain object.\n * @example\n *\n * function Foo() {\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.assign({ 'a': 1 }, new Foo);\n * // => { 'a': 1, 'b': 2 }\n *\n * _.assign({ 'a': 1 }, _.toPlainObject(new Foo));\n * // => { 'a': 1, 'b': 2, 'c': 3 }\n */\n function toPlainObject(value) {\n return copyObject(value, keysIn(value));\n }\n\n /**\n * Converts `value` to a safe integer. A safe integer can be compared and\n * represented correctly.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {number} Returns the converted integer.\n * @example\n *\n * _.toSafeInteger(3.2);\n * // => 3\n *\n * _.toSafeInteger(Number.MIN_VALUE);\n * // => 0\n *\n * _.toSafeInteger(Infinity);\n * // => 9007199254740991\n *\n * _.toSafeInteger('3.2');\n * // => 3\n */\n function toSafeInteger(value) {\n return value\n ? baseClamp(toInteger(value), -MAX_SAFE_INTEGER, MAX_SAFE_INTEGER)\n : (value === 0 ? value : 0);\n }\n\n /**\n * Converts `value` to a string. An empty string is returned for `null`\n * and `undefined` values. The sign of `-0` is preserved.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n * @example\n *\n * _.toString(null);\n * // => ''\n *\n * _.toString(-0);\n * // => '-0'\n *\n * _.toString([1, 2, 3]);\n * // => '1,2,3'\n */\n function toString(value) {\n return value == null ? '' : baseToString(value);\n }\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Assigns own enumerable string keyed properties of source objects to the\n * destination object. Source objects are applied from left to right.\n * Subsequent sources overwrite property assignments of previous sources.\n *\n * **Note:** This method mutates `object` and is loosely based on\n * [`Object.assign`](https://mdn.io/Object/assign).\n *\n * @static\n * @memberOf _\n * @since 0.10.0\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @see _.assignIn\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * }\n *\n * function Bar() {\n * this.c = 3;\n * }\n *\n * Foo.prototype.b = 2;\n * Bar.prototype.d = 4;\n *\n * _.assign({ 'a': 0 }, new Foo, new Bar);\n * // => { 'a': 1, 'c': 3 }\n */\n var assign = createAssigner(function(object, source) {\n if (isPrototype(source) || isArrayLike(source)) {\n copyObject(source, keys(source), object);\n return;\n }\n for (var key in source) {\n if (hasOwnProperty.call(source, key)) {\n assignValue(object, key, source[key]);\n }\n }\n });\n\n /**\n * This method is like `_.assign` except that it iterates over own and\n * inherited source properties.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @alias extend\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @see _.assign\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * }\n *\n * function Bar() {\n * this.c = 3;\n * }\n *\n * Foo.prototype.b = 2;\n * Bar.prototype.d = 4;\n *\n * _.assignIn({ 'a': 0 }, new Foo, new Bar);\n * // => { 'a': 1, 'b': 2, 'c': 3, 'd': 4 }\n */\n var assignIn = createAssigner(function(object, source) {\n copyObject(source, keysIn(source), object);\n });\n\n /**\n * This method is like `_.assignIn` except that it accepts `customizer`\n * which is invoked to produce the assigned values. If `customizer` returns\n * `undefined`, assignment is handled by the method instead. The `customizer`\n * is invoked with five arguments: (objValue, srcValue, key, object, source).\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @alias extendWith\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} sources The source objects.\n * @param {Function} [customizer] The function to customize assigned values.\n * @returns {Object} Returns `object`.\n * @see _.assignWith\n * @example\n *\n * function customizer(objValue, srcValue) {\n * return _.isUndefined(objValue) ? srcValue : objValue;\n * }\n *\n * var defaults = _.partialRight(_.assignInWith, customizer);\n *\n * defaults({ 'a': 1 }, { 'b': 2 }, { 'a': 3 });\n * // => { 'a': 1, 'b': 2 }\n */\n var assignInWith = createAssigner(function(object, source, srcIndex, customizer) {\n copyObject(source, keysIn(source), object, customizer);\n });\n\n /**\n * This method is like `_.assign` except that it accepts `customizer`\n * which is invoked to produce the assigned values. If `customizer` returns\n * `undefined`, assignment is handled by the method instead. The `customizer`\n * is invoked with five arguments: (objValue, srcValue, key, object, source).\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} sources The source objects.\n * @param {Function} [customizer] The function to customize assigned values.\n * @returns {Object} Returns `object`.\n * @see _.assignInWith\n * @example\n *\n * function customizer(objValue, srcValue) {\n * return _.isUndefined(objValue) ? srcValue : objValue;\n * }\n *\n * var defaults = _.partialRight(_.assignWith, customizer);\n *\n * defaults({ 'a': 1 }, { 'b': 2 }, { 'a': 3 });\n * // => { 'a': 1, 'b': 2 }\n */\n var assignWith = createAssigner(function(object, source, srcIndex, customizer) {\n copyObject(source, keys(source), object, customizer);\n });\n\n /**\n * Creates an array of values corresponding to `paths` of `object`.\n *\n * @static\n * @memberOf _\n * @since 1.0.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {...(string|string[])} [paths] The property paths to pick.\n * @returns {Array} Returns the picked values.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }, 4] };\n *\n * _.at(object, ['a[0].b.c', 'a[1]']);\n * // => [3, 4]\n */\n var at = flatRest(baseAt);\n\n /**\n * Creates an object that inherits from the `prototype` object. If a\n * `properties` object is given, its own enumerable string keyed properties\n * are assigned to the created object.\n *\n * @static\n * @memberOf _\n * @since 2.3.0\n * @category Object\n * @param {Object} prototype The object to inherit from.\n * @param {Object} [properties] The properties to assign to the object.\n * @returns {Object} Returns the new object.\n * @example\n *\n * function Shape() {\n * this.x = 0;\n * this.y = 0;\n * }\n *\n * function Circle() {\n * Shape.call(this);\n * }\n *\n * Circle.prototype = _.create(Shape.prototype, {\n * 'constructor': Circle\n * });\n *\n * var circle = new Circle;\n * circle instanceof Circle;\n * // => true\n *\n * circle instanceof Shape;\n * // => true\n */\n function create(prototype, properties) {\n var result = baseCreate(prototype);\n return properties == null ? result : baseAssign(result, properties);\n }\n\n /**\n * Assigns own and inherited enumerable string keyed properties of source\n * objects to the destination object for all destination properties that\n * resolve to `undefined`. Source objects are applied from left to right.\n * Once a property is set, additional values of the same property are ignored.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @see _.defaultsDeep\n * @example\n *\n * _.defaults({ 'a': 1 }, { 'b': 2 }, { 'a': 3 });\n * // => { 'a': 1, 'b': 2 }\n */\n var defaults = baseRest(function(object, sources) {\n object = Object(object);\n\n var index = -1;\n var length = sources.length;\n var guard = length > 2 ? sources[2] : undefined;\n\n if (guard && isIterateeCall(sources[0], sources[1], guard)) {\n length = 1;\n }\n\n while (++index < length) {\n var source = sources[index];\n var props = keysIn(source);\n var propsIndex = -1;\n var propsLength = props.length;\n\n while (++propsIndex < propsLength) {\n var key = props[propsIndex];\n var value = object[key];\n\n if (value === undefined ||\n (eq(value, objectProto[key]) && !hasOwnProperty.call(object, key))) {\n object[key] = source[key];\n }\n }\n }\n\n return object;\n });\n\n /**\n * This method is like `_.defaults` except that it recursively assigns\n * default properties.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 3.10.0\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @see _.defaults\n * @example\n *\n * _.defaultsDeep({ 'a': { 'b': 2 } }, { 'a': { 'b': 1, 'c': 3 } });\n * // => { 'a': { 'b': 2, 'c': 3 } }\n */\n var defaultsDeep = baseRest(function(args) {\n args.push(undefined, customDefaultsMerge);\n return apply(mergeWith, undefined, args);\n });\n\n /**\n * This method is like `_.find` except that it returns the key of the first\n * element `predicate` returns truthy for instead of the element itself.\n *\n * @static\n * @memberOf _\n * @since 1.1.0\n * @category Object\n * @param {Object} object The object to inspect.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {string|undefined} Returns the key of the matched element,\n * else `undefined`.\n * @example\n *\n * var users = {\n * 'barney': { 'age': 36, 'active': true },\n * 'fred': { 'age': 40, 'active': false },\n * 'pebbles': { 'age': 1, 'active': true }\n * };\n *\n * _.findKey(users, function(o) { return o.age < 40; });\n * // => 'barney' (iteration order is not guaranteed)\n *\n * // The `_.matches` iteratee shorthand.\n * _.findKey(users, { 'age': 1, 'active': true });\n * // => 'pebbles'\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.findKey(users, ['active', false]);\n * // => 'fred'\n *\n * // The `_.property` iteratee shorthand.\n * _.findKey(users, 'active');\n * // => 'barney'\n */\n function findKey(object, predicate) {\n return baseFindKey(object, getIteratee(predicate, 3), baseForOwn);\n }\n\n /**\n * This method is like `_.findKey` except that it iterates over elements of\n * a collection in the opposite order.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Object\n * @param {Object} object The object to inspect.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {string|undefined} Returns the key of the matched element,\n * else `undefined`.\n * @example\n *\n * var users = {\n * 'barney': { 'age': 36, 'active': true },\n * 'fred': { 'age': 40, 'active': false },\n * 'pebbles': { 'age': 1, 'active': true }\n * };\n *\n * _.findLastKey(users, function(o) { return o.age < 40; });\n * // => returns 'pebbles' assuming `_.findKey` returns 'barney'\n *\n * // The `_.matches` iteratee shorthand.\n * _.findLastKey(users, { 'age': 36, 'active': true });\n * // => 'barney'\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.findLastKey(users, ['active', false]);\n * // => 'fred'\n *\n * // The `_.property` iteratee shorthand.\n * _.findLastKey(users, 'active');\n * // => 'pebbles'\n */\n function findLastKey(object, predicate) {\n return baseFindKey(object, getIteratee(predicate, 3), baseForOwnRight);\n }\n\n /**\n * Iterates over own and inherited enumerable string keyed properties of an\n * object and invokes `iteratee` for each property. The iteratee is invoked\n * with three arguments: (value, key, object). Iteratee functions may exit\n * iteration early by explicitly returning `false`.\n *\n * @static\n * @memberOf _\n * @since 0.3.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Object} Returns `object`.\n * @see _.forInRight\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.forIn(new Foo, function(value, key) {\n * console.log(key);\n * });\n * // => Logs 'a', 'b', then 'c' (iteration order is not guaranteed).\n */\n function forIn(object, iteratee) {\n return object == null\n ? object\n : baseFor(object, getIteratee(iteratee, 3), keysIn);\n }\n\n /**\n * This method is like `_.forIn` except that it iterates over properties of\n * `object` in the opposite order.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Object} Returns `object`.\n * @see _.forIn\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.forInRight(new Foo, function(value, key) {\n * console.log(key);\n * });\n * // => Logs 'c', 'b', then 'a' assuming `_.forIn` logs 'a', 'b', then 'c'.\n */\n function forInRight(object, iteratee) {\n return object == null\n ? object\n : baseForRight(object, getIteratee(iteratee, 3), keysIn);\n }\n\n /**\n * Iterates over own enumerable string keyed properties of an object and\n * invokes `iteratee` for each property. The iteratee is invoked with three\n * arguments: (value, key, object). Iteratee functions may exit iteration\n * early by explicitly returning `false`.\n *\n * @static\n * @memberOf _\n * @since 0.3.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Object} Returns `object`.\n * @see _.forOwnRight\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.forOwn(new Foo, function(value, key) {\n * console.log(key);\n * });\n * // => Logs 'a' then 'b' (iteration order is not guaranteed).\n */\n function forOwn(object, iteratee) {\n return object && baseForOwn(object, getIteratee(iteratee, 3));\n }\n\n /**\n * This method is like `_.forOwn` except that it iterates over properties of\n * `object` in the opposite order.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Object} Returns `object`.\n * @see _.forOwn\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.forOwnRight(new Foo, function(value, key) {\n * console.log(key);\n * });\n * // => Logs 'b' then 'a' assuming `_.forOwn` logs 'a' then 'b'.\n */\n function forOwnRight(object, iteratee) {\n return object && baseForOwnRight(object, getIteratee(iteratee, 3));\n }\n\n /**\n * Creates an array of function property names from own enumerable properties\n * of `object`.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to inspect.\n * @returns {Array} Returns the function names.\n * @see _.functionsIn\n * @example\n *\n * function Foo() {\n * this.a = _.constant('a');\n * this.b = _.constant('b');\n * }\n *\n * Foo.prototype.c = _.constant('c');\n *\n * _.functions(new Foo);\n * // => ['a', 'b']\n */\n function functions(object) {\n return object == null ? [] : baseFunctions(object, keys(object));\n }\n\n /**\n * Creates an array of function property names from own and inherited\n * enumerable properties of `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The object to inspect.\n * @returns {Array} Returns the function names.\n * @see _.functions\n * @example\n *\n * function Foo() {\n * this.a = _.constant('a');\n * this.b = _.constant('b');\n * }\n *\n * Foo.prototype.c = _.constant('c');\n *\n * _.functionsIn(new Foo);\n * // => ['a', 'b', 'c']\n */\n function functionsIn(object) {\n return object == null ? [] : baseFunctions(object, keysIn(object));\n }\n\n /**\n * Gets the value at `path` of `object`. If the resolved value is\n * `undefined`, the `defaultValue` is returned in its place.\n *\n * @static\n * @memberOf _\n * @since 3.7.0\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to get.\n * @param {*} [defaultValue] The value returned for `undefined` resolved values.\n * @returns {*} Returns the resolved value.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }] };\n *\n * _.get(object, 'a[0].b.c');\n * // => 3\n *\n * _.get(object, ['a', '0', 'b', 'c']);\n * // => 3\n *\n * _.get(object, 'a.b.c', 'default');\n * // => 'default'\n */\n function get(object, path, defaultValue) {\n var result = object == null ? undefined : baseGet(object, path);\n return result === undefined ? defaultValue : result;\n }\n\n /**\n * Checks if `path` is a direct property of `object`.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path to check.\n * @returns {boolean} Returns `true` if `path` exists, else `false`.\n * @example\n *\n * var object = { 'a': { 'b': 2 } };\n * var other = _.create({ 'a': _.create({ 'b': 2 }) });\n *\n * _.has(object, 'a');\n * // => true\n *\n * _.has(object, 'a.b');\n * // => true\n *\n * _.has(object, ['a', 'b']);\n * // => true\n *\n * _.has(other, 'a');\n * // => false\n */\n function has(object, path) {\n return object != null && hasPath(object, path, baseHas);\n }\n\n /**\n * Checks if `path` is a direct or inherited property of `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path to check.\n * @returns {boolean} Returns `true` if `path` exists, else `false`.\n * @example\n *\n * var object = _.create({ 'a': _.create({ 'b': 2 }) });\n *\n * _.hasIn(object, 'a');\n * // => true\n *\n * _.hasIn(object, 'a.b');\n * // => true\n *\n * _.hasIn(object, ['a', 'b']);\n * // => true\n *\n * _.hasIn(object, 'b');\n * // => false\n */\n function hasIn(object, path) {\n return object != null && hasPath(object, path, baseHasIn);\n }\n\n /**\n * Creates an object composed of the inverted keys and values of `object`.\n * If `object` contains duplicate values, subsequent values overwrite\n * property assignments of previous values.\n *\n * @static\n * @memberOf _\n * @since 0.7.0\n * @category Object\n * @param {Object} object The object to invert.\n * @returns {Object} Returns the new inverted object.\n * @example\n *\n * var object = { 'a': 1, 'b': 2, 'c': 1 };\n *\n * _.invert(object);\n * // => { '1': 'c', '2': 'b' }\n */\n var invert = createInverter(function(result, value, key) {\n if (value != null &&\n typeof value.toString != 'function') {\n value = nativeObjectToString.call(value);\n }\n\n result[value] = key;\n }, constant(identity));\n\n /**\n * This method is like `_.invert` except that the inverted object is generated\n * from the results of running each element of `object` thru `iteratee`. The\n * corresponding inverted value of each inverted key is an array of keys\n * responsible for generating the inverted value. The iteratee is invoked\n * with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 4.1.0\n * @category Object\n * @param {Object} object The object to invert.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {Object} Returns the new inverted object.\n * @example\n *\n * var object = { 'a': 1, 'b': 2, 'c': 1 };\n *\n * _.invertBy(object);\n * // => { '1': ['a', 'c'], '2': ['b'] }\n *\n * _.invertBy(object, function(value) {\n * return 'group' + value;\n * });\n * // => { 'group1': ['a', 'c'], 'group2': ['b'] }\n */\n var invertBy = createInverter(function(result, value, key) {\n if (value != null &&\n typeof value.toString != 'function') {\n value = nativeObjectToString.call(value);\n }\n\n if (hasOwnProperty.call(result, value)) {\n result[value].push(key);\n } else {\n result[value] = [key];\n }\n }, getIteratee);\n\n /**\n * Invokes the method at `path` of `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the method to invoke.\n * @param {...*} [args] The arguments to invoke the method with.\n * @returns {*} Returns the result of the invoked method.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': [1, 2, 3, 4] } }] };\n *\n * _.invoke(object, 'a[0].b.c.slice', 1, 3);\n * // => [2, 3]\n */\n var invoke = baseRest(baseInvoke);\n\n /**\n * Creates an array of the own enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects. See the\n * [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * for more details.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keys(new Foo);\n * // => ['a', 'b'] (iteration order is not guaranteed)\n *\n * _.keys('hi');\n * // => ['0', '1']\n */\n function keys(object) {\n return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object);\n }\n\n /**\n * Creates an array of the own and inherited enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keysIn(new Foo);\n * // => ['a', 'b', 'c'] (iteration order is not guaranteed)\n */\n function keysIn(object) {\n return isArrayLike(object) ? arrayLikeKeys(object, true) : baseKeysIn(object);\n }\n\n /**\n * The opposite of `_.mapValues`; this method creates an object with the\n * same values as `object` and keys generated by running each own enumerable\n * string keyed property of `object` thru `iteratee`. The iteratee is invoked\n * with three arguments: (value, key, object).\n *\n * @static\n * @memberOf _\n * @since 3.8.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Object} Returns the new mapped object.\n * @see _.mapValues\n * @example\n *\n * _.mapKeys({ 'a': 1, 'b': 2 }, function(value, key) {\n * return key + value;\n * });\n * // => { 'a1': 1, 'b2': 2 }\n */\n function mapKeys(object, iteratee) {\n var result = {};\n iteratee = getIteratee(iteratee, 3);\n\n baseForOwn(object, function(value, key, object) {\n baseAssignValue(result, iteratee(value, key, object), value);\n });\n return result;\n }\n\n /**\n * Creates an object with the same keys as `object` and values generated\n * by running each own enumerable string keyed property of `object` thru\n * `iteratee`. The iteratee is invoked with three arguments:\n * (value, key, object).\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Object} Returns the new mapped object.\n * @see _.mapKeys\n * @example\n *\n * var users = {\n * 'fred': { 'user': 'fred', 'age': 40 },\n * 'pebbles': { 'user': 'pebbles', 'age': 1 }\n * };\n *\n * _.mapValues(users, function(o) { return o.age; });\n * // => { 'fred': 40, 'pebbles': 1 } (iteration order is not guaranteed)\n *\n * // The `_.property` iteratee shorthand.\n * _.mapValues(users, 'age');\n * // => { 'fred': 40, 'pebbles': 1 } (iteration order is not guaranteed)\n */\n function mapValues(object, iteratee) {\n var result = {};\n iteratee = getIteratee(iteratee, 3);\n\n baseForOwn(object, function(value, key, object) {\n baseAssignValue(result, key, iteratee(value, key, object));\n });\n return result;\n }\n\n /**\n * This method is like `_.assign` except that it recursively merges own and\n * inherited enumerable string keyed properties of source objects into the\n * destination object. Source properties that resolve to `undefined` are\n * skipped if a destination value exists. Array and plain object properties\n * are merged recursively. Other objects and value types are overridden by\n * assignment. Source objects are applied from left to right. Subsequent\n * sources overwrite property assignments of previous sources.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 0.5.0\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @example\n *\n * var object = {\n * 'a': [{ 'b': 2 }, { 'd': 4 }]\n * };\n *\n * var other = {\n * 'a': [{ 'c': 3 }, { 'e': 5 }]\n * };\n *\n * _.merge(object, other);\n * // => { 'a': [{ 'b': 2, 'c': 3 }, { 'd': 4, 'e': 5 }] }\n */\n var merge = createAssigner(function(object, source, srcIndex) {\n baseMerge(object, source, srcIndex);\n });\n\n /**\n * This method is like `_.merge` except that it accepts `customizer` which\n * is invoked to produce the merged values of the destination and source\n * properties. If `customizer` returns `undefined`, merging is handled by the\n * method instead. The `customizer` is invoked with six arguments:\n * (objValue, srcValue, key, object, source, stack).\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} sources The source objects.\n * @param {Function} customizer The function to customize assigned values.\n * @returns {Object} Returns `object`.\n * @example\n *\n * function customizer(objValue, srcValue) {\n * if (_.isArray(objValue)) {\n * return objValue.concat(srcValue);\n * }\n * }\n *\n * var object = { 'a': [1], 'b': [2] };\n * var other = { 'a': [3], 'b': [4] };\n *\n * _.mergeWith(object, other, customizer);\n * // => { 'a': [1, 3], 'b': [2, 4] }\n */\n var mergeWith = createAssigner(function(object, source, srcIndex, customizer) {\n baseMerge(object, source, srcIndex, customizer);\n });\n\n /**\n * The opposite of `_.pick`; this method creates an object composed of the\n * own and inherited enumerable property paths of `object` that are not omitted.\n *\n * **Note:** This method is considerably slower than `_.pick`.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The source object.\n * @param {...(string|string[])} [paths] The property paths to omit.\n * @returns {Object} Returns the new object.\n * @example\n *\n * var object = { 'a': 1, 'b': '2', 'c': 3 };\n *\n * _.omit(object, ['a', 'c']);\n * // => { 'b': '2' }\n */\n var omit = flatRest(function(object, paths) {\n var result = {};\n if (object == null) {\n return result;\n }\n var isDeep = false;\n paths = arrayMap(paths, function(path) {\n path = castPath(path, object);\n isDeep || (isDeep = path.length > 1);\n return path;\n });\n copyObject(object, getAllKeysIn(object), result);\n if (isDeep) {\n result = baseClone(result, CLONE_DEEP_FLAG | CLONE_FLAT_FLAG | CLONE_SYMBOLS_FLAG, customOmitClone);\n }\n var length = paths.length;\n while (length--) {\n baseUnset(result, paths[length]);\n }\n return result;\n });\n\n /**\n * The opposite of `_.pickBy`; this method creates an object composed of\n * the own and inherited enumerable string keyed properties of `object` that\n * `predicate` doesn't return truthy for. The predicate is invoked with two\n * arguments: (value, key).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The source object.\n * @param {Function} [predicate=_.identity] The function invoked per property.\n * @returns {Object} Returns the new object.\n * @example\n *\n * var object = { 'a': 1, 'b': '2', 'c': 3 };\n *\n * _.omitBy(object, _.isNumber);\n * // => { 'b': '2' }\n */\n function omitBy(object, predicate) {\n return pickBy(object, negate(getIteratee(predicate)));\n }\n\n /**\n * Creates an object composed of the picked `object` properties.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The source object.\n * @param {...(string|string[])} [paths] The property paths to pick.\n * @returns {Object} Returns the new object.\n * @example\n *\n * var object = { 'a': 1, 'b': '2', 'c': 3 };\n *\n * _.pick(object, ['a', 'c']);\n * // => { 'a': 1, 'c': 3 }\n */\n var pick = flatRest(function(object, paths) {\n return object == null ? {} : basePick(object, paths);\n });\n\n /**\n * Creates an object composed of the `object` properties `predicate` returns\n * truthy for. The predicate is invoked with two arguments: (value, key).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The source object.\n * @param {Function} [predicate=_.identity] The function invoked per property.\n * @returns {Object} Returns the new object.\n * @example\n *\n * var object = { 'a': 1, 'b': '2', 'c': 3 };\n *\n * _.pickBy(object, _.isNumber);\n * // => { 'a': 1, 'c': 3 }\n */\n function pickBy(object, predicate) {\n if (object == null) {\n return {};\n }\n var props = arrayMap(getAllKeysIn(object), function(prop) {\n return [prop];\n });\n predicate = getIteratee(predicate);\n return basePickBy(object, props, function(value, path) {\n return predicate(value, path[0]);\n });\n }\n\n /**\n * This method is like `_.get` except that if the resolved value is a\n * function it's invoked with the `this` binding of its parent object and\n * its result is returned.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to resolve.\n * @param {*} [defaultValue] The value returned for `undefined` resolved values.\n * @returns {*} Returns the resolved value.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c1': 3, 'c2': _.constant(4) } }] };\n *\n * _.result(object, 'a[0].b.c1');\n * // => 3\n *\n * _.result(object, 'a[0].b.c2');\n * // => 4\n *\n * _.result(object, 'a[0].b.c3', 'default');\n * // => 'default'\n *\n * _.result(object, 'a[0].b.c3', _.constant('default'));\n * // => 'default'\n */\n function result(object, path, defaultValue) {\n path = castPath(path, object);\n\n var index = -1,\n length = path.length;\n\n // Ensure the loop is entered when path is empty.\n if (!length) {\n length = 1;\n object = undefined;\n }\n while (++index < length) {\n var value = object == null ? undefined : object[toKey(path[index])];\n if (value === undefined) {\n index = length;\n value = defaultValue;\n }\n object = isFunction(value) ? value.call(object) : value;\n }\n return object;\n }\n\n /**\n * Sets the value at `path` of `object`. If a portion of `path` doesn't exist,\n * it's created. Arrays are created for missing index properties while objects\n * are created for all other missing properties. Use `_.setWith` to customize\n * `path` creation.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 3.7.0\n * @category Object\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns `object`.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }] };\n *\n * _.set(object, 'a[0].b.c', 4);\n * console.log(object.a[0].b.c);\n * // => 4\n *\n * _.set(object, ['x', '0', 'y', 'z'], 5);\n * console.log(object.x[0].y.z);\n * // => 5\n */\n function set(object, path, value) {\n return object == null ? object : baseSet(object, path, value);\n }\n\n /**\n * This method is like `_.set` except that it accepts `customizer` which is\n * invoked to produce the objects of `path`. If `customizer` returns `undefined`\n * path creation is handled by the method instead. The `customizer` is invoked\n * with three arguments: (nsValue, key, nsObject).\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to set.\n * @param {*} value The value to set.\n * @param {Function} [customizer] The function to customize assigned values.\n * @returns {Object} Returns `object`.\n * @example\n *\n * var object = {};\n *\n * _.setWith(object, '[0][1]', 'a', Object);\n * // => { '0': { '1': 'a' } }\n */\n function setWith(object, path, value, customizer) {\n customizer = typeof customizer == 'function' ? customizer : undefined;\n return object == null ? object : baseSet(object, path, value, customizer);\n }\n\n /**\n * Creates an array of own enumerable string keyed-value pairs for `object`\n * which can be consumed by `_.fromPairs`. If `object` is a map or set, its\n * entries are returned.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @alias entries\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the key-value pairs.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.toPairs(new Foo);\n * // => [['a', 1], ['b', 2]] (iteration order is not guaranteed)\n */\n var toPairs = createToPairs(keys);\n\n /**\n * Creates an array of own and inherited enumerable string keyed-value pairs\n * for `object` which can be consumed by `_.fromPairs`. If `object` is a map\n * or set, its entries are returned.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @alias entriesIn\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the key-value pairs.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.toPairsIn(new Foo);\n * // => [['a', 1], ['b', 2], ['c', 3]] (iteration order is not guaranteed)\n */\n var toPairsIn = createToPairs(keysIn);\n\n /**\n * An alternative to `_.reduce`; this method transforms `object` to a new\n * `accumulator` object which is the result of running each of its own\n * enumerable string keyed properties thru `iteratee`, with each invocation\n * potentially mutating the `accumulator` object. If `accumulator` is not\n * provided, a new object with the same `[[Prototype]]` will be used. The\n * iteratee is invoked with four arguments: (accumulator, value, key, object).\n * Iteratee functions may exit iteration early by explicitly returning `false`.\n *\n * @static\n * @memberOf _\n * @since 1.3.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @param {*} [accumulator] The custom accumulator value.\n * @returns {*} Returns the accumulated value.\n * @example\n *\n * _.transform([2, 3, 4], function(result, n) {\n * result.push(n *= n);\n * return n % 2 == 0;\n * }, []);\n * // => [4, 9]\n *\n * _.transform({ 'a': 1, 'b': 2, 'c': 1 }, function(result, value, key) {\n * (result[value] || (result[value] = [])).push(key);\n * }, {});\n * // => { '1': ['a', 'c'], '2': ['b'] }\n */\n function transform(object, iteratee, accumulator) {\n var isArr = isArray(object),\n isArrLike = isArr || isBuffer(object) || isTypedArray(object);\n\n iteratee = getIteratee(iteratee, 4);\n if (accumulator == null) {\n var Ctor = object && object.constructor;\n if (isArrLike) {\n accumulator = isArr ? new Ctor : [];\n }\n else if (isObject(object)) {\n accumulator = isFunction(Ctor) ? baseCreate(getPrototype(object)) : {};\n }\n else {\n accumulator = {};\n }\n }\n (isArrLike ? arrayEach : baseForOwn)(object, function(value, index, object) {\n return iteratee(accumulator, value, index, object);\n });\n return accumulator;\n }\n\n /**\n * Removes the property at `path` of `object`.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to unset.\n * @returns {boolean} Returns `true` if the property is deleted, else `false`.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 7 } }] };\n * _.unset(object, 'a[0].b.c');\n * // => true\n *\n * console.log(object);\n * // => { 'a': [{ 'b': {} }] };\n *\n * _.unset(object, ['a', '0', 'b', 'c']);\n * // => true\n *\n * console.log(object);\n * // => { 'a': [{ 'b': {} }] };\n */\n function unset(object, path) {\n return object == null ? true : baseUnset(object, path);\n }\n\n /**\n * This method is like `_.set` except that accepts `updater` to produce the\n * value to set. Use `_.updateWith` to customize `path` creation. The `updater`\n * is invoked with one argument: (value).\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.6.0\n * @category Object\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to set.\n * @param {Function} updater The function to produce the updated value.\n * @returns {Object} Returns `object`.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }] };\n *\n * _.update(object, 'a[0].b.c', function(n) { return n * n; });\n * console.log(object.a[0].b.c);\n * // => 9\n *\n * _.update(object, 'x[0].y.z', function(n) { return n ? n + 1 : 0; });\n * console.log(object.x[0].y.z);\n * // => 0\n */\n function update(object, path, updater) {\n return object == null ? object : baseUpdate(object, path, castFunction(updater));\n }\n\n /**\n * This method is like `_.update` except that it accepts `customizer` which is\n * invoked to produce the objects of `path`. If `customizer` returns `undefined`\n * path creation is handled by the method instead. The `customizer` is invoked\n * with three arguments: (nsValue, key, nsObject).\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.6.0\n * @category Object\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to set.\n * @param {Function} updater The function to produce the updated value.\n * @param {Function} [customizer] The function to customize assigned values.\n * @returns {Object} Returns `object`.\n * @example\n *\n * var object = {};\n *\n * _.updateWith(object, '[0][1]', _.constant('a'), Object);\n * // => { '0': { '1': 'a' } }\n */\n function updateWith(object, path, updater, customizer) {\n customizer = typeof customizer == 'function' ? customizer : undefined;\n return object == null ? object : baseUpdate(object, path, castFunction(updater), customizer);\n }\n\n /**\n * Creates an array of the own enumerable string keyed property values of `object`.\n *\n * **Note:** Non-object values are coerced to objects.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property values.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.values(new Foo);\n * // => [1, 2] (iteration order is not guaranteed)\n *\n * _.values('hi');\n * // => ['h', 'i']\n */\n function values(object) {\n return object == null ? [] : baseValues(object, keys(object));\n }\n\n /**\n * Creates an array of the own and inherited enumerable string keyed property\n * values of `object`.\n *\n * **Note:** Non-object values are coerced to objects.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property values.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.valuesIn(new Foo);\n * // => [1, 2, 3] (iteration order is not guaranteed)\n */\n function valuesIn(object) {\n return object == null ? [] : baseValues(object, keysIn(object));\n }\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Clamps `number` within the inclusive `lower` and `upper` bounds.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Number\n * @param {number} number The number to clamp.\n * @param {number} [lower] The lower bound.\n * @param {number} upper The upper bound.\n * @returns {number} Returns the clamped number.\n * @example\n *\n * _.clamp(-10, -5, 5);\n * // => -5\n *\n * _.clamp(10, -5, 5);\n * // => 5\n */\n function clamp(number, lower, upper) {\n if (upper === undefined) {\n upper = lower;\n lower = undefined;\n }\n if (upper !== undefined) {\n upper = toNumber(upper);\n upper = upper === upper ? upper : 0;\n }\n if (lower !== undefined) {\n lower = toNumber(lower);\n lower = lower === lower ? lower : 0;\n }\n return baseClamp(toNumber(number), lower, upper);\n }\n\n /**\n * Checks if `n` is between `start` and up to, but not including, `end`. If\n * `end` is not specified, it's set to `start` with `start` then set to `0`.\n * If `start` is greater than `end` the params are swapped to support\n * negative ranges.\n *\n * @static\n * @memberOf _\n * @since 3.3.0\n * @category Number\n * @param {number} number The number to check.\n * @param {number} [start=0] The start of the range.\n * @param {number} end The end of the range.\n * @returns {boolean} Returns `true` if `number` is in the range, else `false`.\n * @see _.range, _.rangeRight\n * @example\n *\n * _.inRange(3, 2, 4);\n * // => true\n *\n * _.inRange(4, 8);\n * // => true\n *\n * _.inRange(4, 2);\n * // => false\n *\n * _.inRange(2, 2);\n * // => false\n *\n * _.inRange(1.2, 2);\n * // => true\n *\n * _.inRange(5.2, 4);\n * // => false\n *\n * _.inRange(-3, -2, -6);\n * // => true\n */\n function inRange(number, start, end) {\n start = toFinite(start);\n if (end === undefined) {\n end = start;\n start = 0;\n } else {\n end = toFinite(end);\n }\n number = toNumber(number);\n return baseInRange(number, start, end);\n }\n\n /**\n * Produces a random number between the inclusive `lower` and `upper` bounds.\n * If only one argument is provided a number between `0` and the given number\n * is returned. If `floating` is `true`, or either `lower` or `upper` are\n * floats, a floating-point number is returned instead of an integer.\n *\n * **Note:** JavaScript follows the IEEE-754 standard for resolving\n * floating-point values which can produce unexpected results.\n *\n * @static\n * @memberOf _\n * @since 0.7.0\n * @category Number\n * @param {number} [lower=0] The lower bound.\n * @param {number} [upper=1] The upper bound.\n * @param {boolean} [floating] Specify returning a floating-point number.\n * @returns {number} Returns the random number.\n * @example\n *\n * _.random(0, 5);\n * // => an integer between 0 and 5\n *\n * _.random(5);\n * // => also an integer between 0 and 5\n *\n * _.random(5, true);\n * // => a floating-point number between 0 and 5\n *\n * _.random(1.2, 5.2);\n * // => a floating-point number between 1.2 and 5.2\n */\n function random(lower, upper, floating) {\n if (floating && typeof floating != 'boolean' && isIterateeCall(lower, upper, floating)) {\n upper = floating = undefined;\n }\n if (floating === undefined) {\n if (typeof upper == 'boolean') {\n floating = upper;\n upper = undefined;\n }\n else if (typeof lower == 'boolean') {\n floating = lower;\n lower = undefined;\n }\n }\n if (lower === undefined && upper === undefined) {\n lower = 0;\n upper = 1;\n }\n else {\n lower = toFinite(lower);\n if (upper === undefined) {\n upper = lower;\n lower = 0;\n } else {\n upper = toFinite(upper);\n }\n }\n if (lower > upper) {\n var temp = lower;\n lower = upper;\n upper = temp;\n }\n if (floating || lower % 1 || upper % 1) {\n var rand = nativeRandom();\n return nativeMin(lower + (rand * (upper - lower + freeParseFloat('1e-' + ((rand + '').length - 1)))), upper);\n }\n return baseRandom(lower, upper);\n }\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Converts `string` to [camel case](https://en.wikipedia.org/wiki/CamelCase).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the camel cased string.\n * @example\n *\n * _.camelCase('Foo Bar');\n * // => 'fooBar'\n *\n * _.camelCase('--foo-bar--');\n * // => 'fooBar'\n *\n * _.camelCase('__FOO_BAR__');\n * // => 'fooBar'\n */\n var camelCase = createCompounder(function(result, word, index) {\n word = word.toLowerCase();\n return result + (index ? capitalize(word) : word);\n });\n\n /**\n * Converts the first character of `string` to upper case and the remaining\n * to lower case.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to capitalize.\n * @returns {string} Returns the capitalized string.\n * @example\n *\n * _.capitalize('FRED');\n * // => 'Fred'\n */\n function capitalize(string) {\n return upperFirst(toString(string).toLowerCase());\n }\n\n /**\n * Deburrs `string` by converting\n * [Latin-1 Supplement](https://en.wikipedia.org/wiki/Latin-1_Supplement_(Unicode_block)#Character_table)\n * and [Latin Extended-A](https://en.wikipedia.org/wiki/Latin_Extended-A)\n * letters to basic Latin letters and removing\n * [combining diacritical marks](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to deburr.\n * @returns {string} Returns the deburred string.\n * @example\n *\n * _.deburr('déjà vu');\n * // => 'deja vu'\n */\n function deburr(string) {\n string = toString(string);\n return string && string.replace(reLatin, deburrLetter).replace(reComboMark, '');\n }\n\n /**\n * Checks if `string` ends with the given target string.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to inspect.\n * @param {string} [target] The string to search for.\n * @param {number} [position=string.length] The position to search up to.\n * @returns {boolean} Returns `true` if `string` ends with `target`,\n * else `false`.\n * @example\n *\n * _.endsWith('abc', 'c');\n * // => true\n *\n * _.endsWith('abc', 'b');\n * // => false\n *\n * _.endsWith('abc', 'b', 2);\n * // => true\n */\n function endsWith(string, target, position) {\n string = toString(string);\n target = baseToString(target);\n\n var length = string.length;\n position = position === undefined\n ? length\n : baseClamp(toInteger(position), 0, length);\n\n var end = position;\n position -= target.length;\n return position >= 0 && string.slice(position, end) == target;\n }\n\n /**\n * Converts the characters \"&\", \"<\", \">\", '\"', and \"'\" in `string` to their\n * corresponding HTML entities.\n *\n * **Note:** No other characters are escaped. To escape additional\n * characters use a third-party library like [_he_](https://mths.be/he).\n *\n * Though the \">\" character is escaped for symmetry, characters like\n * \">\" and \"/\" don't need escaping in HTML and have no special meaning\n * unless they're part of a tag or unquoted attribute value. See\n * [Mathias Bynens's article](https://mathiasbynens.be/notes/ambiguous-ampersands)\n * (under \"semi-related fun fact\") for more details.\n *\n * When working with HTML you should always\n * [quote attribute values](http://wonko.com/post/html-escaping) to reduce\n * XSS vectors.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category String\n * @param {string} [string=''] The string to escape.\n * @returns {string} Returns the escaped string.\n * @example\n *\n * _.escape('fred, barney, & pebbles');\n * // => 'fred, barney, & pebbles'\n */\n function escape(string) {\n string = toString(string);\n return (string && reHasUnescapedHtml.test(string))\n ? string.replace(reUnescapedHtml, escapeHtmlChar)\n : string;\n }\n\n /**\n * Escapes the `RegExp` special characters \"^\", \"$\", \"\\\", \".\", \"*\", \"+\",\n * \"?\", \"(\", \")\", \"[\", \"]\", \"{\", \"}\", and \"|\" in `string`.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to escape.\n * @returns {string} Returns the escaped string.\n * @example\n *\n * _.escapeRegExp('[lodash](https://lodash.com/)');\n * // => '\\[lodash\\]\\(https://lodash\\.com/\\)'\n */\n function escapeRegExp(string) {\n string = toString(string);\n return (string && reHasRegExpChar.test(string))\n ? string.replace(reRegExpChar, '\\\\$&')\n : string;\n }\n\n /**\n * Converts `string` to\n * [kebab case](https://en.wikipedia.org/wiki/Letter_case#Special_case_styles).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the kebab cased string.\n * @example\n *\n * _.kebabCase('Foo Bar');\n * // => 'foo-bar'\n *\n * _.kebabCase('fooBar');\n * // => 'foo-bar'\n *\n * _.kebabCase('__FOO_BAR__');\n * // => 'foo-bar'\n */\n var kebabCase = createCompounder(function(result, word, index) {\n return result + (index ? '-' : '') + word.toLowerCase();\n });\n\n /**\n * Converts `string`, as space separated words, to lower case.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the lower cased string.\n * @example\n *\n * _.lowerCase('--Foo-Bar--');\n * // => 'foo bar'\n *\n * _.lowerCase('fooBar');\n * // => 'foo bar'\n *\n * _.lowerCase('__FOO_BAR__');\n * // => 'foo bar'\n */\n var lowerCase = createCompounder(function(result, word, index) {\n return result + (index ? ' ' : '') + word.toLowerCase();\n });\n\n /**\n * Converts the first character of `string` to lower case.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the converted string.\n * @example\n *\n * _.lowerFirst('Fred');\n * // => 'fred'\n *\n * _.lowerFirst('FRED');\n * // => 'fRED'\n */\n var lowerFirst = createCaseFirst('toLowerCase');\n\n /**\n * Pads `string` on the left and right sides if it's shorter than `length`.\n * Padding characters are truncated if they can't be evenly divided by `length`.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to pad.\n * @param {number} [length=0] The padding length.\n * @param {string} [chars=' '] The string used as padding.\n * @returns {string} Returns the padded string.\n * @example\n *\n * _.pad('abc', 8);\n * // => ' abc '\n *\n * _.pad('abc', 8, '_-');\n * // => '_-abc_-_'\n *\n * _.pad('abc', 3);\n * // => 'abc'\n */\n function pad(string, length, chars) {\n string = toString(string);\n length = toInteger(length);\n\n var strLength = length ? stringSize(string) : 0;\n if (!length || strLength >= length) {\n return string;\n }\n var mid = (length - strLength) / 2;\n return (\n createPadding(nativeFloor(mid), chars) +\n string +\n createPadding(nativeCeil(mid), chars)\n );\n }\n\n /**\n * Pads `string` on the right side if it's shorter than `length`. Padding\n * characters are truncated if they exceed `length`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to pad.\n * @param {number} [length=0] The padding length.\n * @param {string} [chars=' '] The string used as padding.\n * @returns {string} Returns the padded string.\n * @example\n *\n * _.padEnd('abc', 6);\n * // => 'abc '\n *\n * _.padEnd('abc', 6, '_-');\n * // => 'abc_-_'\n *\n * _.padEnd('abc', 3);\n * // => 'abc'\n */\n function padEnd(string, length, chars) {\n string = toString(string);\n length = toInteger(length);\n\n var strLength = length ? stringSize(string) : 0;\n return (length && strLength < length)\n ? (string + createPadding(length - strLength, chars))\n : string;\n }\n\n /**\n * Pads `string` on the left side if it's shorter than `length`. Padding\n * characters are truncated if they exceed `length`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to pad.\n * @param {number} [length=0] The padding length.\n * @param {string} [chars=' '] The string used as padding.\n * @returns {string} Returns the padded string.\n * @example\n *\n * _.padStart('abc', 6);\n * // => ' abc'\n *\n * _.padStart('abc', 6, '_-');\n * // => '_-_abc'\n *\n * _.padStart('abc', 3);\n * // => 'abc'\n */\n function padStart(string, length, chars) {\n string = toString(string);\n length = toInteger(length);\n\n var strLength = length ? stringSize(string) : 0;\n return (length && strLength < length)\n ? (createPadding(length - strLength, chars) + string)\n : string;\n }\n\n /**\n * Converts `string` to an integer of the specified radix. If `radix` is\n * `undefined` or `0`, a `radix` of `10` is used unless `value` is a\n * hexadecimal, in which case a `radix` of `16` is used.\n *\n * **Note:** This method aligns with the\n * [ES5 implementation](https://es5.github.io/#x15.1.2.2) of `parseInt`.\n *\n * @static\n * @memberOf _\n * @since 1.1.0\n * @category String\n * @param {string} string The string to convert.\n * @param {number} [radix=10] The radix to interpret `value` by.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {number} Returns the converted integer.\n * @example\n *\n * _.parseInt('08');\n * // => 8\n *\n * _.map(['6', '08', '10'], _.parseInt);\n * // => [6, 8, 10]\n */\n function parseInt(string, radix, guard) {\n if (guard || radix == null) {\n radix = 0;\n } else if (radix) {\n radix = +radix;\n }\n return nativeParseInt(toString(string).replace(reTrimStart, ''), radix || 0);\n }\n\n /**\n * Repeats the given string `n` times.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to repeat.\n * @param {number} [n=1] The number of times to repeat the string.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {string} Returns the repeated string.\n * @example\n *\n * _.repeat('*', 3);\n * // => '***'\n *\n * _.repeat('abc', 2);\n * // => 'abcabc'\n *\n * _.repeat('abc', 0);\n * // => ''\n */\n function repeat(string, n, guard) {\n if ((guard ? isIterateeCall(string, n, guard) : n === undefined)) {\n n = 1;\n } else {\n n = toInteger(n);\n }\n return baseRepeat(toString(string), n);\n }\n\n /**\n * Replaces matches for `pattern` in `string` with `replacement`.\n *\n * **Note:** This method is based on\n * [`String#replace`](https://mdn.io/String/replace).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to modify.\n * @param {RegExp|string} pattern The pattern to replace.\n * @param {Function|string} replacement The match replacement.\n * @returns {string} Returns the modified string.\n * @example\n *\n * _.replace('Hi Fred', 'Fred', 'Barney');\n * // => 'Hi Barney'\n */\n function replace() {\n var args = arguments,\n string = toString(args[0]);\n\n return args.length < 3 ? string : string.replace(args[1], args[2]);\n }\n\n /**\n * Converts `string` to\n * [snake case](https://en.wikipedia.org/wiki/Snake_case).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the snake cased string.\n * @example\n *\n * _.snakeCase('Foo Bar');\n * // => 'foo_bar'\n *\n * _.snakeCase('fooBar');\n * // => 'foo_bar'\n *\n * _.snakeCase('--FOO-BAR--');\n * // => 'foo_bar'\n */\n var snakeCase = createCompounder(function(result, word, index) {\n return result + (index ? '_' : '') + word.toLowerCase();\n });\n\n /**\n * Splits `string` by `separator`.\n *\n * **Note:** This method is based on\n * [`String#split`](https://mdn.io/String/split).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to split.\n * @param {RegExp|string} separator The separator pattern to split by.\n * @param {number} [limit] The length to truncate results to.\n * @returns {Array} Returns the string segments.\n * @example\n *\n * _.split('a-b-c', '-', 2);\n * // => ['a', 'b']\n */\n function split(string, separator, limit) {\n if (limit && typeof limit != 'number' && isIterateeCall(string, separator, limit)) {\n separator = limit = undefined;\n }\n limit = limit === undefined ? MAX_ARRAY_LENGTH : limit >>> 0;\n if (!limit) {\n return [];\n }\n string = toString(string);\n if (string && (\n typeof separator == 'string' ||\n (separator != null && !isRegExp(separator))\n )) {\n separator = baseToString(separator);\n if (!separator && hasUnicode(string)) {\n return castSlice(stringToArray(string), 0, limit);\n }\n }\n return string.split(separator, limit);\n }\n\n /**\n * Converts `string` to\n * [start case](https://en.wikipedia.org/wiki/Letter_case#Stylistic_or_specialised_usage).\n *\n * @static\n * @memberOf _\n * @since 3.1.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the start cased string.\n * @example\n *\n * _.startCase('--foo-bar--');\n * // => 'Foo Bar'\n *\n * _.startCase('fooBar');\n * // => 'Foo Bar'\n *\n * _.startCase('__FOO_BAR__');\n * // => 'FOO BAR'\n */\n var startCase = createCompounder(function(result, word, index) {\n return result + (index ? ' ' : '') + upperFirst(word);\n });\n\n /**\n * Checks if `string` starts with the given target string.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to inspect.\n * @param {string} [target] The string to search for.\n * @param {number} [position=0] The position to search from.\n * @returns {boolean} Returns `true` if `string` starts with `target`,\n * else `false`.\n * @example\n *\n * _.startsWith('abc', 'a');\n * // => true\n *\n * _.startsWith('abc', 'b');\n * // => false\n *\n * _.startsWith('abc', 'b', 1);\n * // => true\n */\n function startsWith(string, target, position) {\n string = toString(string);\n position = position == null\n ? 0\n : baseClamp(toInteger(position), 0, string.length);\n\n target = baseToString(target);\n return string.slice(position, position + target.length) == target;\n }\n\n /**\n * Creates a compiled template function that can interpolate data properties\n * in \"interpolate\" delimiters, HTML-escape interpolated data properties in\n * \"escape\" delimiters, and execute JavaScript in \"evaluate\" delimiters. Data\n * properties may be accessed as free variables in the template. If a setting\n * object is given, it takes precedence over `_.templateSettings` values.\n *\n * **Note:** In the development build `_.template` utilizes\n * [sourceURLs](http://www.html5rocks.com/en/tutorials/developertools/sourcemaps/#toc-sourceurl)\n * for easier debugging.\n *\n * For more information on precompiling templates see\n * [lodash's custom builds documentation](https://lodash.com/custom-builds).\n *\n * For more information on Chrome extension sandboxes see\n * [Chrome's extensions documentation](https://developer.chrome.com/extensions/sandboxingEval).\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category String\n * @param {string} [string=''] The template string.\n * @param {Object} [options={}] The options object.\n * @param {RegExp} [options.escape=_.templateSettings.escape]\n * The HTML \"escape\" delimiter.\n * @param {RegExp} [options.evaluate=_.templateSettings.evaluate]\n * The \"evaluate\" delimiter.\n * @param {Object} [options.imports=_.templateSettings.imports]\n * An object to import into the template as free variables.\n * @param {RegExp} [options.interpolate=_.templateSettings.interpolate]\n * The \"interpolate\" delimiter.\n * @param {string} [options.sourceURL='lodash.templateSources[n]']\n * The sourceURL of the compiled template.\n * @param {string} [options.variable='obj']\n * The data object variable name.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Function} Returns the compiled template function.\n * @example\n *\n * // Use the \"interpolate\" delimiter to create a compiled template.\n * var compiled = _.template('hello <%= user %>!');\n * compiled({ 'user': 'fred' });\n * // => 'hello fred!'\n *\n * // Use the HTML \"escape\" delimiter to escape data property values.\n * var compiled = _.template('<b><%- value %></b>');\n * compiled({ 'value': '<script>' });\n * // => '<b><script></b>'\n *\n * // Use the \"evaluate\" delimiter to execute JavaScript and generate HTML.\n * var compiled = _.template('<% _.forEach(users, function(user) { %><li><%- user %></li><% }); %>');\n * compiled({ 'users': ['fred', 'barney'] });\n * // => '<li>fred</li><li>barney</li>'\n *\n * // Use the internal `print` function in \"evaluate\" delimiters.\n * var compiled = _.template('<% print(\"hello \" + user); %>!');\n * compiled({ 'user': 'barney' });\n * // => 'hello barney!'\n *\n * // Use the ES template literal delimiter as an \"interpolate\" delimiter.\n * // Disable support by replacing the \"interpolate\" delimiter.\n * var compiled = _.template('hello ${ user }!');\n * compiled({ 'user': 'pebbles' });\n * // => 'hello pebbles!'\n *\n * // Use backslashes to treat delimiters as plain text.\n * var compiled = _.template('<%= \"\\\\<%- value %\\\\>\" %>');\n * compiled({ 'value': 'ignored' });\n * // => '<%- value %>'\n *\n * // Use the `imports` option to import `jQuery` as `jq`.\n * var text = '<% jq.each(users, function(user) { %><li><%- user %></li><% }); %>';\n * var compiled = _.template(text, { 'imports': { 'jq': jQuery } });\n * compiled({ 'users': ['fred', 'barney'] });\n * // => '<li>fred</li><li>barney</li>'\n *\n * // Use the `sourceURL` option to specify a custom sourceURL for the template.\n * var compiled = _.template('hello <%= user %>!', { 'sourceURL': '/basic/greeting.jst' });\n * compiled(data);\n * // => Find the source of \"greeting.jst\" under the Sources tab or Resources panel of the web inspector.\n *\n * // Use the `variable` option to ensure a with-statement isn't used in the compiled template.\n * var compiled = _.template('hi <%= data.user %>!', { 'variable': 'data' });\n * compiled.source;\n * // => function(data) {\n * // var __t, __p = '';\n * // __p += 'hi ' + ((__t = ( data.user )) == null ? '' : __t) + '!';\n * // return __p;\n * // }\n *\n * // Use custom template delimiters.\n * _.templateSettings.interpolate = /{{([\\s\\S]+?)}}/g;\n * var compiled = _.template('hello {{ user }}!');\n * compiled({ 'user': 'mustache' });\n * // => 'hello mustache!'\n *\n * // Use the `source` property to inline compiled templates for meaningful\n * // line numbers in error messages and stack traces.\n * fs.writeFileSync(path.join(process.cwd(), 'jst.js'), '\\\n * var JST = {\\\n * \"main\": ' + _.template(mainText).source + '\\\n * };\\\n * ');\n */\n function template(string, options, guard) {\n // Based on John Resig's `tmpl` implementation\n // (http://ejohn.org/blog/javascript-micro-templating/)\n // and Laura Doktorova's doT.js (https://github.com/olado/doT).\n var settings = lodash.templateSettings;\n\n if (guard && isIterateeCall(string, options, guard)) {\n options = undefined;\n }\n string = toString(string);\n options = assignInWith({}, options, settings, customDefaultsAssignIn);\n\n var imports = assignInWith({}, options.imports, settings.imports, customDefaultsAssignIn),\n importsKeys = keys(imports),\n importsValues = baseValues(imports, importsKeys);\n\n var isEscaping,\n isEvaluating,\n index = 0,\n interpolate = options.interpolate || reNoMatch,\n source = \"__p += '\";\n\n // Compile the regexp to match each delimiter.\n var reDelimiters = RegExp(\n (options.escape || reNoMatch).source + '|' +\n interpolate.source + '|' +\n (interpolate === reInterpolate ? reEsTemplate : reNoMatch).source + '|' +\n (options.evaluate || reNoMatch).source + '|$'\n , 'g');\n\n // Use a sourceURL for easier debugging.\n // The sourceURL gets injected into the source that's eval-ed, so be careful\n // to normalize all kinds of whitespace, so e.g. newlines (and unicode versions of it) can't sneak in\n // and escape the comment, thus injecting code that gets evaled.\n var sourceURL = '//# sourceURL=' +\n (hasOwnProperty.call(options, 'sourceURL')\n ? (options.sourceURL + '').replace(/\\s/g, ' ')\n : ('lodash.templateSources[' + (++templateCounter) + ']')\n ) + '\\n';\n\n string.replace(reDelimiters, function(match, escapeValue, interpolateValue, esTemplateValue, evaluateValue, offset) {\n interpolateValue || (interpolateValue = esTemplateValue);\n\n // Escape characters that can't be included in string literals.\n source += string.slice(index, offset).replace(reUnescapedString, escapeStringChar);\n\n // Replace delimiters with snippets.\n if (escapeValue) {\n isEscaping = true;\n source += \"' +\\n__e(\" + escapeValue + \") +\\n'\";\n }\n if (evaluateValue) {\n isEvaluating = true;\n source += \"';\\n\" + evaluateValue + \";\\n__p += '\";\n }\n if (interpolateValue) {\n source += \"' +\\n((__t = (\" + interpolateValue + \")) == null ? '' : __t) +\\n'\";\n }\n index = offset + match.length;\n\n // The JS engine embedded in Adobe products needs `match` returned in\n // order to produce the correct `offset` value.\n return match;\n });\n\n source += \"';\\n\";\n\n // If `variable` is not specified wrap a with-statement around the generated\n // code to add the data object to the top of the scope chain.\n var variable = hasOwnProperty.call(options, 'variable') && options.variable;\n if (!variable) {\n source = 'with (obj) {\\n' + source + '\\n}\\n';\n }\n // Throw an error if a forbidden character was found in `variable`, to prevent\n // potential command injection attacks.\n else if (reForbiddenIdentifierChars.test(variable)) {\n throw new Error(INVALID_TEMPL_VAR_ERROR_TEXT);\n }\n\n // Cleanup code by stripping empty strings.\n source = (isEvaluating ? source.replace(reEmptyStringLeading, '') : source)\n .replace(reEmptyStringMiddle, '$1')\n .replace(reEmptyStringTrailing, '$1;');\n\n // Frame code as the function body.\n source = 'function(' + (variable || 'obj') + ') {\\n' +\n (variable\n ? ''\n : 'obj || (obj = {});\\n'\n ) +\n \"var __t, __p = ''\" +\n (isEscaping\n ? ', __e = _.escape'\n : ''\n ) +\n (isEvaluating\n ? ', __j = Array.prototype.join;\\n' +\n \"function print() { __p += __j.call(arguments, '') }\\n\"\n : ';\\n'\n ) +\n source +\n 'return __p\\n}';\n\n var result = attempt(function() {\n return Function(importsKeys, sourceURL + 'return ' + source)\n .apply(undefined, importsValues);\n });\n\n // Provide the compiled function's source by its `toString` method or\n // the `source` property as a convenience for inlining compiled templates.\n result.source = source;\n if (isError(result)) {\n throw result;\n }\n return result;\n }\n\n /**\n * Converts `string`, as a whole, to lower case just like\n * [String#toLowerCase](https://mdn.io/toLowerCase).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the lower cased string.\n * @example\n *\n * _.toLower('--Foo-Bar--');\n * // => '--foo-bar--'\n *\n * _.toLower('fooBar');\n * // => 'foobar'\n *\n * _.toLower('__FOO_BAR__');\n * // => '__foo_bar__'\n */\n function toLower(value) {\n return toString(value).toLowerCase();\n }\n\n /**\n * Converts `string`, as a whole, to upper case just like\n * [String#toUpperCase](https://mdn.io/toUpperCase).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the upper cased string.\n * @example\n *\n * _.toUpper('--foo-bar--');\n * // => '--FOO-BAR--'\n *\n * _.toUpper('fooBar');\n * // => 'FOOBAR'\n *\n * _.toUpper('__foo_bar__');\n * // => '__FOO_BAR__'\n */\n function toUpper(value) {\n return toString(value).toUpperCase();\n }\n\n /**\n * Removes leading and trailing whitespace or specified characters from `string`.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to trim.\n * @param {string} [chars=whitespace] The characters to trim.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {string} Returns the trimmed string.\n * @example\n *\n * _.trim(' abc ');\n * // => 'abc'\n *\n * _.trim('-_-abc-_-', '_-');\n * // => 'abc'\n *\n * _.map([' foo ', ' bar '], _.trim);\n * // => ['foo', 'bar']\n */\n function trim(string, chars, guard) {\n string = toString(string);\n if (string && (guard || chars === undefined)) {\n return baseTrim(string);\n }\n if (!string || !(chars = baseToString(chars))) {\n return string;\n }\n var strSymbols = stringToArray(string),\n chrSymbols = stringToArray(chars),\n start = charsStartIndex(strSymbols, chrSymbols),\n end = charsEndIndex(strSymbols, chrSymbols) + 1;\n\n return castSlice(strSymbols, start, end).join('');\n }\n\n /**\n * Removes trailing whitespace or specified characters from `string`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to trim.\n * @param {string} [chars=whitespace] The characters to trim.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {string} Returns the trimmed string.\n * @example\n *\n * _.trimEnd(' abc ');\n * // => ' abc'\n *\n * _.trimEnd('-_-abc-_-', '_-');\n * // => '-_-abc'\n */\n function trimEnd(string, chars, guard) {\n string = toString(string);\n if (string && (guard || chars === undefined)) {\n return string.slice(0, trimmedEndIndex(string) + 1);\n }\n if (!string || !(chars = baseToString(chars))) {\n return string;\n }\n var strSymbols = stringToArray(string),\n end = charsEndIndex(strSymbols, stringToArray(chars)) + 1;\n\n return castSlice(strSymbols, 0, end).join('');\n }\n\n /**\n * Removes leading whitespace or specified characters from `string`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to trim.\n * @param {string} [chars=whitespace] The characters to trim.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {string} Returns the trimmed string.\n * @example\n *\n * _.trimStart(' abc ');\n * // => 'abc '\n *\n * _.trimStart('-_-abc-_-', '_-');\n * // => 'abc-_-'\n */\n function trimStart(string, chars, guard) {\n string = toString(string);\n if (string && (guard || chars === undefined)) {\n return string.replace(reTrimStart, '');\n }\n if (!string || !(chars = baseToString(chars))) {\n return string;\n }\n var strSymbols = stringToArray(string),\n start = charsStartIndex(strSymbols, stringToArray(chars));\n\n return castSlice(strSymbols, start).join('');\n }\n\n /**\n * Truncates `string` if it's longer than the given maximum string length.\n * The last characters of the truncated string are replaced with the omission\n * string which defaults to \"...\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to truncate.\n * @param {Object} [options={}] The options object.\n * @param {number} [options.length=30] The maximum string length.\n * @param {string} [options.omission='...'] The string to indicate text is omitted.\n * @param {RegExp|string} [options.separator] The separator pattern to truncate to.\n * @returns {string} Returns the truncated string.\n * @example\n *\n * _.truncate('hi-diddly-ho there, neighborino');\n * // => 'hi-diddly-ho there, neighbo...'\n *\n * _.truncate('hi-diddly-ho there, neighborino', {\n * 'length': 24,\n * 'separator': ' '\n * });\n * // => 'hi-diddly-ho there,...'\n *\n * _.truncate('hi-diddly-ho there, neighborino', {\n * 'length': 24,\n * 'separator': /,? +/\n * });\n * // => 'hi-diddly-ho there...'\n *\n * _.truncate('hi-diddly-ho there, neighborino', {\n * 'omission': ' [...]'\n * });\n * // => 'hi-diddly-ho there, neig [...]'\n */\n function truncate(string, options) {\n var length = DEFAULT_TRUNC_LENGTH,\n omission = DEFAULT_TRUNC_OMISSION;\n\n if (isObject(options)) {\n var separator = 'separator' in options ? options.separator : separator;\n length = 'length' in options ? toInteger(options.length) : length;\n omission = 'omission' in options ? baseToString(options.omission) : omission;\n }\n string = toString(string);\n\n var strLength = string.length;\n if (hasUnicode(string)) {\n var strSymbols = stringToArray(string);\n strLength = strSymbols.length;\n }\n if (length >= strLength) {\n return string;\n }\n var end = length - stringSize(omission);\n if (end < 1) {\n return omission;\n }\n var result = strSymbols\n ? castSlice(strSymbols, 0, end).join('')\n : string.slice(0, end);\n\n if (separator === undefined) {\n return result + omission;\n }\n if (strSymbols) {\n end += (result.length - end);\n }\n if (isRegExp(separator)) {\n if (string.slice(end).search(separator)) {\n var match,\n substring = result;\n\n if (!separator.global) {\n separator = RegExp(separator.source, toString(reFlags.exec(separator)) + 'g');\n }\n separator.lastIndex = 0;\n while ((match = separator.exec(substring))) {\n var newEnd = match.index;\n }\n result = result.slice(0, newEnd === undefined ? end : newEnd);\n }\n } else if (string.indexOf(baseToString(separator), end) != end) {\n var index = result.lastIndexOf(separator);\n if (index > -1) {\n result = result.slice(0, index);\n }\n }\n return result + omission;\n }\n\n /**\n * The inverse of `_.escape`; this method converts the HTML entities\n * `&`, `<`, `>`, `"`, and `'` in `string` to\n * their corresponding characters.\n *\n * **Note:** No other HTML entities are unescaped. To unescape additional\n * HTML entities use a third-party library like [_he_](https://mths.be/he).\n *\n * @static\n * @memberOf _\n * @since 0.6.0\n * @category String\n * @param {string} [string=''] The string to unescape.\n * @returns {string} Returns the unescaped string.\n * @example\n *\n * _.unescape('fred, barney, & pebbles');\n * // => 'fred, barney, & pebbles'\n */\n function unescape(string) {\n string = toString(string);\n return (string && reHasEscapedHtml.test(string))\n ? string.replace(reEscapedHtml, unescapeHtmlChar)\n : string;\n }\n\n /**\n * Converts `string`, as space separated words, to upper case.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the upper cased string.\n * @example\n *\n * _.upperCase('--foo-bar');\n * // => 'FOO BAR'\n *\n * _.upperCase('fooBar');\n * // => 'FOO BAR'\n *\n * _.upperCase('__foo_bar__');\n * // => 'FOO BAR'\n */\n var upperCase = createCompounder(function(result, word, index) {\n return result + (index ? ' ' : '') + word.toUpperCase();\n });\n\n /**\n * Converts the first character of `string` to upper case.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the converted string.\n * @example\n *\n * _.upperFirst('fred');\n * // => 'Fred'\n *\n * _.upperFirst('FRED');\n * // => 'FRED'\n */\n var upperFirst = createCaseFirst('toUpperCase');\n\n /**\n * Splits `string` into an array of its words.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to inspect.\n * @param {RegExp|string} [pattern] The pattern to match words.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Array} Returns the words of `string`.\n * @example\n *\n * _.words('fred, barney, & pebbles');\n * // => ['fred', 'barney', 'pebbles']\n *\n * _.words('fred, barney, & pebbles', /[^, ]+/g);\n * // => ['fred', 'barney', '&', 'pebbles']\n */\n function words(string, pattern, guard) {\n string = toString(string);\n pattern = guard ? undefined : pattern;\n\n if (pattern === undefined) {\n return hasUnicodeWord(string) ? unicodeWords(string) : asciiWords(string);\n }\n return string.match(pattern) || [];\n }\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Attempts to invoke `func`, returning either the result or the caught error\n * object. Any additional arguments are provided to `func` when it's invoked.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Util\n * @param {Function} func The function to attempt.\n * @param {...*} [args] The arguments to invoke `func` with.\n * @returns {*} Returns the `func` result or error object.\n * @example\n *\n * // Avoid throwing errors for invalid selectors.\n * var elements = _.attempt(function(selector) {\n * return document.querySelectorAll(selector);\n * }, '>_>');\n *\n * if (_.isError(elements)) {\n * elements = [];\n * }\n */\n var attempt = baseRest(function(func, args) {\n try {\n return apply(func, undefined, args);\n } catch (e) {\n return isError(e) ? e : new Error(e);\n }\n });\n\n /**\n * Binds methods of an object to the object itself, overwriting the existing\n * method.\n *\n * **Note:** This method doesn't set the \"length\" property of bound functions.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @param {Object} object The object to bind and assign the bound methods to.\n * @param {...(string|string[])} methodNames The object method names to bind.\n * @returns {Object} Returns `object`.\n * @example\n *\n * var view = {\n * 'label': 'docs',\n * 'click': function() {\n * console.log('clicked ' + this.label);\n * }\n * };\n *\n * _.bindAll(view, ['click']);\n * jQuery(element).on('click', view.click);\n * // => Logs 'clicked docs' when clicked.\n */\n var bindAll = flatRest(function(object, methodNames) {\n arrayEach(methodNames, function(key) {\n key = toKey(key);\n baseAssignValue(object, key, bind(object[key], object));\n });\n return object;\n });\n\n /**\n * Creates a function that iterates over `pairs` and invokes the corresponding\n * function of the first predicate to return truthy. The predicate-function\n * pairs are invoked with the `this` binding and arguments of the created\n * function.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Util\n * @param {Array} pairs The predicate-function pairs.\n * @returns {Function} Returns the new composite function.\n * @example\n *\n * var func = _.cond([\n * [_.matches({ 'a': 1 }), _.constant('matches A')],\n * [_.conforms({ 'b': _.isNumber }), _.constant('matches B')],\n * [_.stubTrue, _.constant('no match')]\n * ]);\n *\n * func({ 'a': 1, 'b': 2 });\n * // => 'matches A'\n *\n * func({ 'a': 0, 'b': 1 });\n * // => 'matches B'\n *\n * func({ 'a': '1', 'b': '2' });\n * // => 'no match'\n */\n function cond(pairs) {\n var length = pairs == null ? 0 : pairs.length,\n toIteratee = getIteratee();\n\n pairs = !length ? [] : arrayMap(pairs, function(pair) {\n if (typeof pair[1] != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n return [toIteratee(pair[0]), pair[1]];\n });\n\n return baseRest(function(args) {\n var index = -1;\n while (++index < length) {\n var pair = pairs[index];\n if (apply(pair[0], this, args)) {\n return apply(pair[1], this, args);\n }\n }\n });\n }\n\n /**\n * Creates a function that invokes the predicate properties of `source` with\n * the corresponding property values of a given object, returning `true` if\n * all predicates return truthy, else `false`.\n *\n * **Note:** The created function is equivalent to `_.conformsTo` with\n * `source` partially applied.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Util\n * @param {Object} source The object of property predicates to conform to.\n * @returns {Function} Returns the new spec function.\n * @example\n *\n * var objects = [\n * { 'a': 2, 'b': 1 },\n * { 'a': 1, 'b': 2 }\n * ];\n *\n * _.filter(objects, _.conforms({ 'b': function(n) { return n > 1; } }));\n * // => [{ 'a': 1, 'b': 2 }]\n */\n function conforms(source) {\n return baseConforms(baseClone(source, CLONE_DEEP_FLAG));\n }\n\n /**\n * Creates a function that returns `value`.\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Util\n * @param {*} value The value to return from the new function.\n * @returns {Function} Returns the new constant function.\n * @example\n *\n * var objects = _.times(2, _.constant({ 'a': 1 }));\n *\n * console.log(objects);\n * // => [{ 'a': 1 }, { 'a': 1 }]\n *\n * console.log(objects[0] === objects[1]);\n * // => true\n */\n function constant(value) {\n return function() {\n return value;\n };\n }\n\n /**\n * Checks `value` to determine whether a default value should be returned in\n * its place. The `defaultValue` is returned if `value` is `NaN`, `null`,\n * or `undefined`.\n *\n * @static\n * @memberOf _\n * @since 4.14.0\n * @category Util\n * @param {*} value The value to check.\n * @param {*} defaultValue The default value.\n * @returns {*} Returns the resolved value.\n * @example\n *\n * _.defaultTo(1, 10);\n * // => 1\n *\n * _.defaultTo(undefined, 10);\n * // => 10\n */\n function defaultTo(value, defaultValue) {\n return (value == null || value !== value) ? defaultValue : value;\n }\n\n /**\n * Creates a function that returns the result of invoking the given functions\n * with the `this` binding of the created function, where each successive\n * invocation is supplied the return value of the previous.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Util\n * @param {...(Function|Function[])} [funcs] The functions to invoke.\n * @returns {Function} Returns the new composite function.\n * @see _.flowRight\n * @example\n *\n * function square(n) {\n * return n * n;\n * }\n *\n * var addSquare = _.flow([_.add, square]);\n * addSquare(1, 2);\n * // => 9\n */\n var flow = createFlow();\n\n /**\n * This method is like `_.flow` except that it creates a function that\n * invokes the given functions from right to left.\n *\n * @static\n * @since 3.0.0\n * @memberOf _\n * @category Util\n * @param {...(Function|Function[])} [funcs] The functions to invoke.\n * @returns {Function} Returns the new composite function.\n * @see _.flow\n * @example\n *\n * function square(n) {\n * return n * n;\n * }\n *\n * var addSquare = _.flowRight([square, _.add]);\n * addSquare(1, 2);\n * // => 9\n */\n var flowRight = createFlow(true);\n\n /**\n * This method returns the first argument it receives.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @param {*} value Any value.\n * @returns {*} Returns `value`.\n * @example\n *\n * var object = { 'a': 1 };\n *\n * console.log(_.identity(object) === object);\n * // => true\n */\n function identity(value) {\n return value;\n }\n\n /**\n * Creates a function that invokes `func` with the arguments of the created\n * function. If `func` is a property name, the created function returns the\n * property value for a given element. If `func` is an array or object, the\n * created function returns `true` for elements that contain the equivalent\n * source properties, otherwise it returns `false`.\n *\n * @static\n * @since 4.0.0\n * @memberOf _\n * @category Util\n * @param {*} [func=_.identity] The value to convert to a callback.\n * @returns {Function} Returns the callback.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36, 'active': true },\n * { 'user': 'fred', 'age': 40, 'active': false }\n * ];\n *\n * // The `_.matches` iteratee shorthand.\n * _.filter(users, _.iteratee({ 'user': 'barney', 'active': true }));\n * // => [{ 'user': 'barney', 'age': 36, 'active': true }]\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.filter(users, _.iteratee(['user', 'fred']));\n * // => [{ 'user': 'fred', 'age': 40 }]\n *\n * // The `_.property` iteratee shorthand.\n * _.map(users, _.iteratee('user'));\n * // => ['barney', 'fred']\n *\n * // Create custom iteratee shorthands.\n * _.iteratee = _.wrap(_.iteratee, function(iteratee, func) {\n * return !_.isRegExp(func) ? iteratee(func) : function(string) {\n * return func.test(string);\n * };\n * });\n *\n * _.filter(['abc', 'def'], /ef/);\n * // => ['def']\n */\n function iteratee(func) {\n return baseIteratee(typeof func == 'function' ? func : baseClone(func, CLONE_DEEP_FLAG));\n }\n\n /**\n * Creates a function that performs a partial deep comparison between a given\n * object and `source`, returning `true` if the given object has equivalent\n * property values, else `false`.\n *\n * **Note:** The created function is equivalent to `_.isMatch` with `source`\n * partially applied.\n *\n * Partial comparisons will match empty array and empty object `source`\n * values against any array or object value, respectively. See `_.isEqual`\n * for a list of supported value comparisons.\n *\n * **Note:** Multiple values can be checked by combining several matchers\n * using `_.overSome`\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Util\n * @param {Object} source The object of property values to match.\n * @returns {Function} Returns the new spec function.\n * @example\n *\n * var objects = [\n * { 'a': 1, 'b': 2, 'c': 3 },\n * { 'a': 4, 'b': 5, 'c': 6 }\n * ];\n *\n * _.filter(objects, _.matches({ 'a': 4, 'c': 6 }));\n * // => [{ 'a': 4, 'b': 5, 'c': 6 }]\n *\n * // Checking for several possible values\n * _.filter(objects, _.overSome([_.matches({ 'a': 1 }), _.matches({ 'a': 4 })]));\n * // => [{ 'a': 1, 'b': 2, 'c': 3 }, { 'a': 4, 'b': 5, 'c': 6 }]\n */\n function matches(source) {\n return baseMatches(baseClone(source, CLONE_DEEP_FLAG));\n }\n\n /**\n * Creates a function that performs a partial deep comparison between the\n * value at `path` of a given object to `srcValue`, returning `true` if the\n * object value is equivalent, else `false`.\n *\n * **Note:** Partial comparisons will match empty array and empty object\n * `srcValue` values against any array or object value, respectively. See\n * `_.isEqual` for a list of supported value comparisons.\n *\n * **Note:** Multiple values can be checked by combining several matchers\n * using `_.overSome`\n *\n * @static\n * @memberOf _\n * @since 3.2.0\n * @category Util\n * @param {Array|string} path The path of the property to get.\n * @param {*} srcValue The value to match.\n * @returns {Function} Returns the new spec function.\n * @example\n *\n * var objects = [\n * { 'a': 1, 'b': 2, 'c': 3 },\n * { 'a': 4, 'b': 5, 'c': 6 }\n * ];\n *\n * _.find(objects, _.matchesProperty('a', 4));\n * // => { 'a': 4, 'b': 5, 'c': 6 }\n *\n * // Checking for several possible values\n * _.filter(objects, _.overSome([_.matchesProperty('a', 1), _.matchesProperty('a', 4)]));\n * // => [{ 'a': 1, 'b': 2, 'c': 3 }, { 'a': 4, 'b': 5, 'c': 6 }]\n */\n function matchesProperty(path, srcValue) {\n return baseMatchesProperty(path, baseClone(srcValue, CLONE_DEEP_FLAG));\n }\n\n /**\n * Creates a function that invokes the method at `path` of a given object.\n * Any additional arguments are provided to the invoked method.\n *\n * @static\n * @memberOf _\n * @since 3.7.0\n * @category Util\n * @param {Array|string} path The path of the method to invoke.\n * @param {...*} [args] The arguments to invoke the method with.\n * @returns {Function} Returns the new invoker function.\n * @example\n *\n * var objects = [\n * { 'a': { 'b': _.constant(2) } },\n * { 'a': { 'b': _.constant(1) } }\n * ];\n *\n * _.map(objects, _.method('a.b'));\n * // => [2, 1]\n *\n * _.map(objects, _.method(['a', 'b']));\n * // => [2, 1]\n */\n var method = baseRest(function(path, args) {\n return function(object) {\n return baseInvoke(object, path, args);\n };\n });\n\n /**\n * The opposite of `_.method`; this method creates a function that invokes\n * the method at a given path of `object`. Any additional arguments are\n * provided to the invoked method.\n *\n * @static\n * @memberOf _\n * @since 3.7.0\n * @category Util\n * @param {Object} object The object to query.\n * @param {...*} [args] The arguments to invoke the method with.\n * @returns {Function} Returns the new invoker function.\n * @example\n *\n * var array = _.times(3, _.constant),\n * object = { 'a': array, 'b': array, 'c': array };\n *\n * _.map(['a[2]', 'c[0]'], _.methodOf(object));\n * // => [2, 0]\n *\n * _.map([['a', '2'], ['c', '0']], _.methodOf(object));\n * // => [2, 0]\n */\n var methodOf = baseRest(function(object, args) {\n return function(path) {\n return baseInvoke(object, path, args);\n };\n });\n\n /**\n * Adds all own enumerable string keyed function properties of a source\n * object to the destination object. If `object` is a function, then methods\n * are added to its prototype as well.\n *\n * **Note:** Use `_.runInContext` to create a pristine `lodash` function to\n * avoid conflicts caused by modifying the original.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @param {Function|Object} [object=lodash] The destination object.\n * @param {Object} source The object of functions to add.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.chain=true] Specify whether mixins are chainable.\n * @returns {Function|Object} Returns `object`.\n * @example\n *\n * function vowels(string) {\n * return _.filter(string, function(v) {\n * return /[aeiou]/i.test(v);\n * });\n * }\n *\n * _.mixin({ 'vowels': vowels });\n * _.vowels('fred');\n * // => ['e']\n *\n * _('fred').vowels().value();\n * // => ['e']\n *\n * _.mixin({ 'vowels': vowels }, { 'chain': false });\n * _('fred').vowels();\n * // => ['e']\n */\n function mixin(object, source, options) {\n var props = keys(source),\n methodNames = baseFunctions(source, props);\n\n if (options == null &&\n !(isObject(source) && (methodNames.length || !props.length))) {\n options = source;\n source = object;\n object = this;\n methodNames = baseFunctions(source, keys(source));\n }\n var chain = !(isObject(options) && 'chain' in options) || !!options.chain,\n isFunc = isFunction(object);\n\n arrayEach(methodNames, function(methodName) {\n var func = source[methodName];\n object[methodName] = func;\n if (isFunc) {\n object.prototype[methodName] = function() {\n var chainAll = this.__chain__;\n if (chain || chainAll) {\n var result = object(this.__wrapped__),\n actions = result.__actions__ = copyArray(this.__actions__);\n\n actions.push({ 'func': func, 'args': arguments, 'thisArg': object });\n result.__chain__ = chainAll;\n return result;\n }\n return func.apply(object, arrayPush([this.value()], arguments));\n };\n }\n });\n\n return object;\n }\n\n /**\n * Reverts the `_` variable to its previous value and returns a reference to\n * the `lodash` function.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @returns {Function} Returns the `lodash` function.\n * @example\n *\n * var lodash = _.noConflict();\n */\n function noConflict() {\n if (root._ === this) {\n root._ = oldDash;\n }\n return this;\n }\n\n /**\n * This method returns `undefined`.\n *\n * @static\n * @memberOf _\n * @since 2.3.0\n * @category Util\n * @example\n *\n * _.times(2, _.noop);\n * // => [undefined, undefined]\n */\n function noop() {\n // No operation performed.\n }\n\n /**\n * Creates a function that gets the argument at index `n`. If `n` is negative,\n * the nth argument from the end is returned.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Util\n * @param {number} [n=0] The index of the argument to return.\n * @returns {Function} Returns the new pass-thru function.\n * @example\n *\n * var func = _.nthArg(1);\n * func('a', 'b', 'c', 'd');\n * // => 'b'\n *\n * var func = _.nthArg(-2);\n * func('a', 'b', 'c', 'd');\n * // => 'c'\n */\n function nthArg(n) {\n n = toInteger(n);\n return baseRest(function(args) {\n return baseNth(args, n);\n });\n }\n\n /**\n * Creates a function that invokes `iteratees` with the arguments it receives\n * and returns their results.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Util\n * @param {...(Function|Function[])} [iteratees=[_.identity]]\n * The iteratees to invoke.\n * @returns {Function} Returns the new function.\n * @example\n *\n * var func = _.over([Math.max, Math.min]);\n *\n * func(1, 2, 3, 4);\n * // => [4, 1]\n */\n var over = createOver(arrayMap);\n\n /**\n * Creates a function that checks if **all** of the `predicates` return\n * truthy when invoked with the arguments it receives.\n *\n * Following shorthands are possible for providing predicates.\n * Pass an `Object` and it will be used as an parameter for `_.matches` to create the predicate.\n * Pass an `Array` of parameters for `_.matchesProperty` and the predicate will be created using them.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Util\n * @param {...(Function|Function[])} [predicates=[_.identity]]\n * The predicates to check.\n * @returns {Function} Returns the new function.\n * @example\n *\n * var func = _.overEvery([Boolean, isFinite]);\n *\n * func('1');\n * // => true\n *\n * func(null);\n * // => false\n *\n * func(NaN);\n * // => false\n */\n var overEvery = createOver(arrayEvery);\n\n /**\n * Creates a function that checks if **any** of the `predicates` return\n * truthy when invoked with the arguments it receives.\n *\n * Following shorthands are possible for providing predicates.\n * Pass an `Object` and it will be used as an parameter for `_.matches` to create the predicate.\n * Pass an `Array` of parameters for `_.matchesProperty` and the predicate will be created using them.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Util\n * @param {...(Function|Function[])} [predicates=[_.identity]]\n * The predicates to check.\n * @returns {Function} Returns the new function.\n * @example\n *\n * var func = _.overSome([Boolean, isFinite]);\n *\n * func('1');\n * // => true\n *\n * func(null);\n * // => true\n *\n * func(NaN);\n * // => false\n *\n * var matchesFunc = _.overSome([{ 'a': 1 }, { 'a': 2 }])\n * var matchesPropertyFunc = _.overSome([['a', 1], ['a', 2]])\n */\n var overSome = createOver(arraySome);\n\n /**\n * Creates a function that returns the value at `path` of a given object.\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Util\n * @param {Array|string} path The path of the property to get.\n * @returns {Function} Returns the new accessor function.\n * @example\n *\n * var objects = [\n * { 'a': { 'b': 2 } },\n * { 'a': { 'b': 1 } }\n * ];\n *\n * _.map(objects, _.property('a.b'));\n * // => [2, 1]\n *\n * _.map(_.sortBy(objects, _.property(['a', 'b'])), 'a.b');\n * // => [1, 2]\n */\n function property(path) {\n return isKey(path) ? baseProperty(toKey(path)) : basePropertyDeep(path);\n }\n\n /**\n * The opposite of `_.property`; this method creates a function that returns\n * the value at a given path of `object`.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Util\n * @param {Object} object The object to query.\n * @returns {Function} Returns the new accessor function.\n * @example\n *\n * var array = [0, 1, 2],\n * object = { 'a': array, 'b': array, 'c': array };\n *\n * _.map(['a[2]', 'c[0]'], _.propertyOf(object));\n * // => [2, 0]\n *\n * _.map([['a', '2'], ['c', '0']], _.propertyOf(object));\n * // => [2, 0]\n */\n function propertyOf(object) {\n return function(path) {\n return object == null ? undefined : baseGet(object, path);\n };\n }\n\n /**\n * Creates an array of numbers (positive and/or negative) progressing from\n * `start` up to, but not including, `end`. A step of `-1` is used if a negative\n * `start` is specified without an `end` or `step`. If `end` is not specified,\n * it's set to `start` with `start` then set to `0`.\n *\n * **Note:** JavaScript follows the IEEE-754 standard for resolving\n * floating-point values which can produce unexpected results.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @param {number} [start=0] The start of the range.\n * @param {number} end The end of the range.\n * @param {number} [step=1] The value to increment or decrement by.\n * @returns {Array} Returns the range of numbers.\n * @see _.inRange, _.rangeRight\n * @example\n *\n * _.range(4);\n * // => [0, 1, 2, 3]\n *\n * _.range(-4);\n * // => [0, -1, -2, -3]\n *\n * _.range(1, 5);\n * // => [1, 2, 3, 4]\n *\n * _.range(0, 20, 5);\n * // => [0, 5, 10, 15]\n *\n * _.range(0, -4, -1);\n * // => [0, -1, -2, -3]\n *\n * _.range(1, 4, 0);\n * // => [1, 1, 1]\n *\n * _.range(0);\n * // => []\n */\n var range = createRange();\n\n /**\n * This method is like `_.range` except that it populates values in\n * descending order.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Util\n * @param {number} [start=0] The start of the range.\n * @param {number} end The end of the range.\n * @param {number} [step=1] The value to increment or decrement by.\n * @returns {Array} Returns the range of numbers.\n * @see _.inRange, _.range\n * @example\n *\n * _.rangeRight(4);\n * // => [3, 2, 1, 0]\n *\n * _.rangeRight(-4);\n * // => [-3, -2, -1, 0]\n *\n * _.rangeRight(1, 5);\n * // => [4, 3, 2, 1]\n *\n * _.rangeRight(0, 20, 5);\n * // => [15, 10, 5, 0]\n *\n * _.rangeRight(0, -4, -1);\n * // => [-3, -2, -1, 0]\n *\n * _.rangeRight(1, 4, 0);\n * // => [1, 1, 1]\n *\n * _.rangeRight(0);\n * // => []\n */\n var rangeRight = createRange(true);\n\n /**\n * This method returns a new empty array.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {Array} Returns the new empty array.\n * @example\n *\n * var arrays = _.times(2, _.stubArray);\n *\n * console.log(arrays);\n * // => [[], []]\n *\n * console.log(arrays[0] === arrays[1]);\n * // => false\n */\n function stubArray() {\n return [];\n }\n\n /**\n * This method returns `false`.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {boolean} Returns `false`.\n * @example\n *\n * _.times(2, _.stubFalse);\n * // => [false, false]\n */\n function stubFalse() {\n return false;\n }\n\n /**\n * This method returns a new empty object.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {Object} Returns the new empty object.\n * @example\n *\n * var objects = _.times(2, _.stubObject);\n *\n * console.log(objects);\n * // => [{}, {}]\n *\n * console.log(objects[0] === objects[1]);\n * // => false\n */\n function stubObject() {\n return {};\n }\n\n /**\n * This method returns an empty string.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {string} Returns the empty string.\n * @example\n *\n * _.times(2, _.stubString);\n * // => ['', '']\n */\n function stubString() {\n return '';\n }\n\n /**\n * This method returns `true`.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {boolean} Returns `true`.\n * @example\n *\n * _.times(2, _.stubTrue);\n * // => [true, true]\n */\n function stubTrue() {\n return true;\n }\n\n /**\n * Invokes the iteratee `n` times, returning an array of the results of\n * each invocation. The iteratee is invoked with one argument; (index).\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @param {number} n The number of times to invoke `iteratee`.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the array of results.\n * @example\n *\n * _.times(3, String);\n * // => ['0', '1', '2']\n *\n * _.times(4, _.constant(0));\n * // => [0, 0, 0, 0]\n */\n function times(n, iteratee) {\n n = toInteger(n);\n if (n < 1 || n > MAX_SAFE_INTEGER) {\n return [];\n }\n var index = MAX_ARRAY_LENGTH,\n length = nativeMin(n, MAX_ARRAY_LENGTH);\n\n iteratee = getIteratee(iteratee);\n n -= MAX_ARRAY_LENGTH;\n\n var result = baseTimes(length, iteratee);\n while (++index < n) {\n iteratee(index);\n }\n return result;\n }\n\n /**\n * Converts `value` to a property path array.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Util\n * @param {*} value The value to convert.\n * @returns {Array} Returns the new property path array.\n * @example\n *\n * _.toPath('a.b.c');\n * // => ['a', 'b', 'c']\n *\n * _.toPath('a[0].b.c');\n * // => ['a', '0', 'b', 'c']\n */\n function toPath(value) {\n if (isArray(value)) {\n return arrayMap(value, toKey);\n }\n return isSymbol(value) ? [value] : copyArray(stringToPath(toString(value)));\n }\n\n /**\n * Generates a unique ID. If `prefix` is given, the ID is appended to it.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @param {string} [prefix=''] The value to prefix the ID with.\n * @returns {string} Returns the unique ID.\n * @example\n *\n * _.uniqueId('contact_');\n * // => 'contact_104'\n *\n * _.uniqueId();\n * // => '105'\n */\n function uniqueId(prefix) {\n var id = ++idCounter;\n return toString(prefix) + id;\n }\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Adds two numbers.\n *\n * @static\n * @memberOf _\n * @since 3.4.0\n * @category Math\n * @param {number} augend The first number in an addition.\n * @param {number} addend The second number in an addition.\n * @returns {number} Returns the total.\n * @example\n *\n * _.add(6, 4);\n * // => 10\n */\n var add = createMathOperation(function(augend, addend) {\n return augend + addend;\n }, 0);\n\n /**\n * Computes `number` rounded up to `precision`.\n *\n * @static\n * @memberOf _\n * @since 3.10.0\n * @category Math\n * @param {number} number The number to round up.\n * @param {number} [precision=0] The precision to round up to.\n * @returns {number} Returns the rounded up number.\n * @example\n *\n * _.ceil(4.006);\n * // => 5\n *\n * _.ceil(6.004, 2);\n * // => 6.01\n *\n * _.ceil(6040, -2);\n * // => 6100\n */\n var ceil = createRound('ceil');\n\n /**\n * Divide two numbers.\n *\n * @static\n * @memberOf _\n * @since 4.7.0\n * @category Math\n * @param {number} dividend The first number in a division.\n * @param {number} divisor The second number in a division.\n * @returns {number} Returns the quotient.\n * @example\n *\n * _.divide(6, 4);\n * // => 1.5\n */\n var divide = createMathOperation(function(dividend, divisor) {\n return dividend / divisor;\n }, 1);\n\n /**\n * Computes `number` rounded down to `precision`.\n *\n * @static\n * @memberOf _\n * @since 3.10.0\n * @category Math\n * @param {number} number The number to round down.\n * @param {number} [precision=0] The precision to round down to.\n * @returns {number} Returns the rounded down number.\n * @example\n *\n * _.floor(4.006);\n * // => 4\n *\n * _.floor(0.046, 2);\n * // => 0.04\n *\n * _.floor(4060, -2);\n * // => 4000\n */\n var floor = createRound('floor');\n\n /**\n * Computes the maximum value of `array`. If `array` is empty or falsey,\n * `undefined` is returned.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Math\n * @param {Array} array The array to iterate over.\n * @returns {*} Returns the maximum value.\n * @example\n *\n * _.max([4, 2, 8, 6]);\n * // => 8\n *\n * _.max([]);\n * // => undefined\n */\n function max(array) {\n return (array && array.length)\n ? baseExtremum(array, identity, baseGt)\n : undefined;\n }\n\n /**\n * This method is like `_.max` except that it accepts `iteratee` which is\n * invoked for each element in `array` to generate the criterion by which\n * the value is ranked. The iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Math\n * @param {Array} array The array to iterate over.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {*} Returns the maximum value.\n * @example\n *\n * var objects = [{ 'n': 1 }, { 'n': 2 }];\n *\n * _.maxBy(objects, function(o) { return o.n; });\n * // => { 'n': 2 }\n *\n * // The `_.property` iteratee shorthand.\n * _.maxBy(objects, 'n');\n * // => { 'n': 2 }\n */\n function maxBy(array, iteratee) {\n return (array && array.length)\n ? baseExtremum(array, getIteratee(iteratee, 2), baseGt)\n : undefined;\n }\n\n /**\n * Computes the mean of the values in `array`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Math\n * @param {Array} array The array to iterate over.\n * @returns {number} Returns the mean.\n * @example\n *\n * _.mean([4, 2, 8, 6]);\n * // => 5\n */\n function mean(array) {\n return baseMean(array, identity);\n }\n\n /**\n * This method is like `_.mean` except that it accepts `iteratee` which is\n * invoked for each element in `array` to generate the value to be averaged.\n * The iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 4.7.0\n * @category Math\n * @param {Array} array The array to iterate over.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {number} Returns the mean.\n * @example\n *\n * var objects = [{ 'n': 4 }, { 'n': 2 }, { 'n': 8 }, { 'n': 6 }];\n *\n * _.meanBy(objects, function(o) { return o.n; });\n * // => 5\n *\n * // The `_.property` iteratee shorthand.\n * _.meanBy(objects, 'n');\n * // => 5\n */\n function meanBy(array, iteratee) {\n return baseMean(array, getIteratee(iteratee, 2));\n }\n\n /**\n * Computes the minimum value of `array`. If `array` is empty or falsey,\n * `undefined` is returned.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Math\n * @param {Array} array The array to iterate over.\n * @returns {*} Returns the minimum value.\n * @example\n *\n * _.min([4, 2, 8, 6]);\n * // => 2\n *\n * _.min([]);\n * // => undefined\n */\n function min(array) {\n return (array && array.length)\n ? baseExtremum(array, identity, baseLt)\n : undefined;\n }\n\n /**\n * This method is like `_.min` except that it accepts `iteratee` which is\n * invoked for each element in `array` to generate the criterion by which\n * the value is ranked. The iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Math\n * @param {Array} array The array to iterate over.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {*} Returns the minimum value.\n * @example\n *\n * var objects = [{ 'n': 1 }, { 'n': 2 }];\n *\n * _.minBy(objects, function(o) { return o.n; });\n * // => { 'n': 1 }\n *\n * // The `_.property` iteratee shorthand.\n * _.minBy(objects, 'n');\n * // => { 'n': 1 }\n */\n function minBy(array, iteratee) {\n return (array && array.length)\n ? baseExtremum(array, getIteratee(iteratee, 2), baseLt)\n : undefined;\n }\n\n /**\n * Multiply two numbers.\n *\n * @static\n * @memberOf _\n * @since 4.7.0\n * @category Math\n * @param {number} multiplier The first number in a multiplication.\n * @param {number} multiplicand The second number in a multiplication.\n * @returns {number} Returns the product.\n * @example\n *\n * _.multiply(6, 4);\n * // => 24\n */\n var multiply = createMathOperation(function(multiplier, multiplicand) {\n return multiplier * multiplicand;\n }, 1);\n\n /**\n * Computes `number` rounded to `precision`.\n *\n * @static\n * @memberOf _\n * @since 3.10.0\n * @category Math\n * @param {number} number The number to round.\n * @param {number} [precision=0] The precision to round to.\n * @returns {number} Returns the rounded number.\n * @example\n *\n * _.round(4.006);\n * // => 4\n *\n * _.round(4.006, 2);\n * // => 4.01\n *\n * _.round(4060, -2);\n * // => 4100\n */\n var round = createRound('round');\n\n /**\n * Subtract two numbers.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Math\n * @param {number} minuend The first number in a subtraction.\n * @param {number} subtrahend The second number in a subtraction.\n * @returns {number} Returns the difference.\n * @example\n *\n * _.subtract(6, 4);\n * // => 2\n */\n var subtract = createMathOperation(function(minuend, subtrahend) {\n return minuend - subtrahend;\n }, 0);\n\n /**\n * Computes the sum of the values in `array`.\n *\n * @static\n * @memberOf _\n * @since 3.4.0\n * @category Math\n * @param {Array} array The array to iterate over.\n * @returns {number} Returns the sum.\n * @example\n *\n * _.sum([4, 2, 8, 6]);\n * // => 20\n */\n function sum(array) {\n return (array && array.length)\n ? baseSum(array, identity)\n : 0;\n }\n\n /**\n * This method is like `_.sum` except that it accepts `iteratee` which is\n * invoked for each element in `array` to generate the value to be summed.\n * The iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Math\n * @param {Array} array The array to iterate over.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {number} Returns the sum.\n * @example\n *\n * var objects = [{ 'n': 4 }, { 'n': 2 }, { 'n': 8 }, { 'n': 6 }];\n *\n * _.sumBy(objects, function(o) { return o.n; });\n * // => 20\n *\n * // The `_.property` iteratee shorthand.\n * _.sumBy(objects, 'n');\n * // => 20\n */\n function sumBy(array, iteratee) {\n return (array && array.length)\n ? baseSum(array, getIteratee(iteratee, 2))\n : 0;\n }\n\n /*------------------------------------------------------------------------*/\n\n // Add methods that return wrapped values in chain sequences.\n lodash.after = after;\n lodash.ary = ary;\n lodash.assign = assign;\n lodash.assignIn = assignIn;\n lodash.assignInWith = assignInWith;\n lodash.assignWith = assignWith;\n lodash.at = at;\n lodash.before = before;\n lodash.bind = bind;\n lodash.bindAll = bindAll;\n lodash.bindKey = bindKey;\n lodash.castArray = castArray;\n lodash.chain = chain;\n lodash.chunk = chunk;\n lodash.compact = compact;\n lodash.concat = concat;\n lodash.cond = cond;\n lodash.conforms = conforms;\n lodash.constant = constant;\n lodash.countBy = countBy;\n lodash.create = create;\n lodash.curry = curry;\n lodash.curryRight = curryRight;\n lodash.debounce = debounce;\n lodash.defaults = defaults;\n lodash.defaultsDeep = defaultsDeep;\n lodash.defer = defer;\n lodash.delay = delay;\n lodash.difference = difference;\n lodash.differenceBy = differenceBy;\n lodash.differenceWith = differenceWith;\n lodash.drop = drop;\n lodash.dropRight = dropRight;\n lodash.dropRightWhile = dropRightWhile;\n lodash.dropWhile = dropWhile;\n lodash.fill = fill;\n lodash.filter = filter;\n lodash.flatMap = flatMap;\n lodash.flatMapDeep = flatMapDeep;\n lodash.flatMapDepth = flatMapDepth;\n lodash.flatten = flatten;\n lodash.flattenDeep = flattenDeep;\n lodash.flattenDepth = flattenDepth;\n lodash.flip = flip;\n lodash.flow = flow;\n lodash.flowRight = flowRight;\n lodash.fromPairs = fromPairs;\n lodash.functions = functions;\n lodash.functionsIn = functionsIn;\n lodash.groupBy = groupBy;\n lodash.initial = initial;\n lodash.intersection = intersection;\n lodash.intersectionBy = intersectionBy;\n lodash.intersectionWith = intersectionWith;\n lodash.invert = invert;\n lodash.invertBy = invertBy;\n lodash.invokeMap = invokeMap;\n lodash.iteratee = iteratee;\n lodash.keyBy = keyBy;\n lodash.keys = keys;\n lodash.keysIn = keysIn;\n lodash.map = map;\n lodash.mapKeys = mapKeys;\n lodash.mapValues = mapValues;\n lodash.matches = matches;\n lodash.matchesProperty = matchesProperty;\n lodash.memoize = memoize;\n lodash.merge = merge;\n lodash.mergeWith = mergeWith;\n lodash.method = method;\n lodash.methodOf = methodOf;\n lodash.mixin = mixin;\n lodash.negate = negate;\n lodash.nthArg = nthArg;\n lodash.omit = omit;\n lodash.omitBy = omitBy;\n lodash.once = once;\n lodash.orderBy = orderBy;\n lodash.over = over;\n lodash.overArgs = overArgs;\n lodash.overEvery = overEvery;\n lodash.overSome = overSome;\n lodash.partial = partial;\n lodash.partialRight = partialRight;\n lodash.partition = partition;\n lodash.pick = pick;\n lodash.pickBy = pickBy;\n lodash.property = property;\n lodash.propertyOf = propertyOf;\n lodash.pull = pull;\n lodash.pullAll = pullAll;\n lodash.pullAllBy = pullAllBy;\n lodash.pullAllWith = pullAllWith;\n lodash.pullAt = pullAt;\n lodash.range = range;\n lodash.rangeRight = rangeRight;\n lodash.rearg = rearg;\n lodash.reject = reject;\n lodash.remove = remove;\n lodash.rest = rest;\n lodash.reverse = reverse;\n lodash.sampleSize = sampleSize;\n lodash.set = set;\n lodash.setWith = setWith;\n lodash.shuffle = shuffle;\n lodash.slice = slice;\n lodash.sortBy = sortBy;\n lodash.sortedUniq = sortedUniq;\n lodash.sortedUniqBy = sortedUniqBy;\n lodash.split = split;\n lodash.spread = spread;\n lodash.tail = tail;\n lodash.take = take;\n lodash.takeRight = takeRight;\n lodash.takeRightWhile = takeRightWhile;\n lodash.takeWhile = takeWhile;\n lodash.tap = tap;\n lodash.throttle = throttle;\n lodash.thru = thru;\n lodash.toArray = toArray;\n lodash.toPairs = toPairs;\n lodash.toPairsIn = toPairsIn;\n lodash.toPath = toPath;\n lodash.toPlainObject = toPlainObject;\n lodash.transform = transform;\n lodash.unary = unary;\n lodash.union = union;\n lodash.unionBy = unionBy;\n lodash.unionWith = unionWith;\n lodash.uniq = uniq;\n lodash.uniqBy = uniqBy;\n lodash.uniqWith = uniqWith;\n lodash.unset = unset;\n lodash.unzip = unzip;\n lodash.unzipWith = unzipWith;\n lodash.update = update;\n lodash.updateWith = updateWith;\n lodash.values = values;\n lodash.valuesIn = valuesIn;\n lodash.without = without;\n lodash.words = words;\n lodash.wrap = wrap;\n lodash.xor = xor;\n lodash.xorBy = xorBy;\n lodash.xorWith = xorWith;\n lodash.zip = zip;\n lodash.zipObject = zipObject;\n lodash.zipObjectDeep = zipObjectDeep;\n lodash.zipWith = zipWith;\n\n // Add aliases.\n lodash.entries = toPairs;\n lodash.entriesIn = toPairsIn;\n lodash.extend = assignIn;\n lodash.extendWith = assignInWith;\n\n // Add methods to `lodash.prototype`.\n mixin(lodash, lodash);\n\n /*------------------------------------------------------------------------*/\n\n // Add methods that return unwrapped values in chain sequences.\n lodash.add = add;\n lodash.attempt = attempt;\n lodash.camelCase = camelCase;\n lodash.capitalize = capitalize;\n lodash.ceil = ceil;\n lodash.clamp = clamp;\n lodash.clone = clone;\n lodash.cloneDeep = cloneDeep;\n lodash.cloneDeepWith = cloneDeepWith;\n lodash.cloneWith = cloneWith;\n lodash.conformsTo = conformsTo;\n lodash.deburr = deburr;\n lodash.defaultTo = defaultTo;\n lodash.divide = divide;\n lodash.endsWith = endsWith;\n lodash.eq = eq;\n lodash.escape = escape;\n lodash.escapeRegExp = escapeRegExp;\n lodash.every = every;\n lodash.find = find;\n lodash.findIndex = findIndex;\n lodash.findKey = findKey;\n lodash.findLast = findLast;\n lodash.findLastIndex = findLastIndex;\n lodash.findLastKey = findLastKey;\n lodash.floor = floor;\n lodash.forEach = forEach;\n lodash.forEachRight = forEachRight;\n lodash.forIn = forIn;\n lodash.forInRight = forInRight;\n lodash.forOwn = forOwn;\n lodash.forOwnRight = forOwnRight;\n lodash.get = get;\n lodash.gt = gt;\n lodash.gte = gte;\n lodash.has = has;\n lodash.hasIn = hasIn;\n lodash.head = head;\n lodash.identity = identity;\n lodash.includes = includes;\n lodash.indexOf = indexOf;\n lodash.inRange = inRange;\n lodash.invoke = invoke;\n lodash.isArguments = isArguments;\n lodash.isArray = isArray;\n lodash.isArrayBuffer = isArrayBuffer;\n lodash.isArrayLike = isArrayLike;\n lodash.isArrayLikeObject = isArrayLikeObject;\n lodash.isBoolean = isBoolean;\n lodash.isBuffer = isBuffer;\n lodash.isDate = isDate;\n lodash.isElement = isElement;\n lodash.isEmpty = isEmpty;\n lodash.isEqual = isEqual;\n lodash.isEqualWith = isEqualWith;\n lodash.isError = isError;\n lodash.isFinite = isFinite;\n lodash.isFunction = isFunction;\n lodash.isInteger = isInteger;\n lodash.isLength = isLength;\n lodash.isMap = isMap;\n lodash.isMatch = isMatch;\n lodash.isMatchWith = isMatchWith;\n lodash.isNaN = isNaN;\n lodash.isNative = isNative;\n lodash.isNil = isNil;\n lodash.isNull = isNull;\n lodash.isNumber = isNumber;\n lodash.isObject = isObject;\n lodash.isObjectLike = isObjectLike;\n lodash.isPlainObject = isPlainObject;\n lodash.isRegExp = isRegExp;\n lodash.isSafeInteger = isSafeInteger;\n lodash.isSet = isSet;\n lodash.isString = isString;\n lodash.isSymbol = isSymbol;\n lodash.isTypedArray = isTypedArray;\n lodash.isUndefined = isUndefined;\n lodash.isWeakMap = isWeakMap;\n lodash.isWeakSet = isWeakSet;\n lodash.join = join;\n lodash.kebabCase = kebabCase;\n lodash.last = last;\n lodash.lastIndexOf = lastIndexOf;\n lodash.lowerCase = lowerCase;\n lodash.lowerFirst = lowerFirst;\n lodash.lt = lt;\n lodash.lte = lte;\n lodash.max = max;\n lodash.maxBy = maxBy;\n lodash.mean = mean;\n lodash.meanBy = meanBy;\n lodash.min = min;\n lodash.minBy = minBy;\n lodash.stubArray = stubArray;\n lodash.stubFalse = stubFalse;\n lodash.stubObject = stubObject;\n lodash.stubString = stubString;\n lodash.stubTrue = stubTrue;\n lodash.multiply = multiply;\n lodash.nth = nth;\n lodash.noConflict = noConflict;\n lodash.noop = noop;\n lodash.now = now;\n lodash.pad = pad;\n lodash.padEnd = padEnd;\n lodash.padStart = padStart;\n lodash.parseInt = parseInt;\n lodash.random = random;\n lodash.reduce = reduce;\n lodash.reduceRight = reduceRight;\n lodash.repeat = repeat;\n lodash.replace = replace;\n lodash.result = result;\n lodash.round = round;\n lodash.runInContext = runInContext;\n lodash.sample = sample;\n lodash.size = size;\n lodash.snakeCase = snakeCase;\n lodash.some = some;\n lodash.sortedIndex = sortedIndex;\n lodash.sortedIndexBy = sortedIndexBy;\n lodash.sortedIndexOf = sortedIndexOf;\n lodash.sortedLastIndex = sortedLastIndex;\n lodash.sortedLastIndexBy = sortedLastIndexBy;\n lodash.sortedLastIndexOf = sortedLastIndexOf;\n lodash.startCase = startCase;\n lodash.startsWith = startsWith;\n lodash.subtract = subtract;\n lodash.sum = sum;\n lodash.sumBy = sumBy;\n lodash.template = template;\n lodash.times = times;\n lodash.toFinite = toFinite;\n lodash.toInteger = toInteger;\n lodash.toLength = toLength;\n lodash.toLower = toLower;\n lodash.toNumber = toNumber;\n lodash.toSafeInteger = toSafeInteger;\n lodash.toString = toString;\n lodash.toUpper = toUpper;\n lodash.trim = trim;\n lodash.trimEnd = trimEnd;\n lodash.trimStart = trimStart;\n lodash.truncate = truncate;\n lodash.unescape = unescape;\n lodash.uniqueId = uniqueId;\n lodash.upperCase = upperCase;\n lodash.upperFirst = upperFirst;\n\n // Add aliases.\n lodash.each = forEach;\n lodash.eachRight = forEachRight;\n lodash.first = head;\n\n mixin(lodash, (function() {\n var source = {};\n baseForOwn(lodash, function(func, methodName) {\n if (!hasOwnProperty.call(lodash.prototype, methodName)) {\n source[methodName] = func;\n }\n });\n return source;\n }()), { 'chain': false });\n\n /*------------------------------------------------------------------------*/\n\n /**\n * The semantic version number.\n *\n * @static\n * @memberOf _\n * @type {string}\n */\n lodash.VERSION = VERSION;\n\n // Assign default placeholders.\n arrayEach(['bind', 'bindKey', 'curry', 'curryRight', 'partial', 'partialRight'], function(methodName) {\n lodash[methodName].placeholder = lodash;\n });\n\n // Add `LazyWrapper` methods for `_.drop` and `_.take` variants.\n arrayEach(['drop', 'take'], function(methodName, index) {\n LazyWrapper.prototype[methodName] = function(n) {\n n = n === undefined ? 1 : nativeMax(toInteger(n), 0);\n\n var result = (this.__filtered__ && !index)\n ? new LazyWrapper(this)\n : this.clone();\n\n if (result.__filtered__) {\n result.__takeCount__ = nativeMin(n, result.__takeCount__);\n } else {\n result.__views__.push({\n 'size': nativeMin(n, MAX_ARRAY_LENGTH),\n 'type': methodName + (result.__dir__ < 0 ? 'Right' : '')\n });\n }\n return result;\n };\n\n LazyWrapper.prototype[methodName + 'Right'] = function(n) {\n return this.reverse()[methodName](n).reverse();\n };\n });\n\n // Add `LazyWrapper` methods that accept an `iteratee` value.\n arrayEach(['filter', 'map', 'takeWhile'], function(methodName, index) {\n var type = index + 1,\n isFilter = type == LAZY_FILTER_FLAG || type == LAZY_WHILE_FLAG;\n\n LazyWrapper.prototype[methodName] = function(iteratee) {\n var result = this.clone();\n result.__iteratees__.push({\n 'iteratee': getIteratee(iteratee, 3),\n 'type': type\n });\n result.__filtered__ = result.__filtered__ || isFilter;\n return result;\n };\n });\n\n // Add `LazyWrapper` methods for `_.head` and `_.last`.\n arrayEach(['head', 'last'], function(methodName, index) {\n var takeName = 'take' + (index ? 'Right' : '');\n\n LazyWrapper.prototype[methodName] = function() {\n return this[takeName](1).value()[0];\n };\n });\n\n // Add `LazyWrapper` methods for `_.initial` and `_.tail`.\n arrayEach(['initial', 'tail'], function(methodName, index) {\n var dropName = 'drop' + (index ? '' : 'Right');\n\n LazyWrapper.prototype[methodName] = function() {\n return this.__filtered__ ? new LazyWrapper(this) : this[dropName](1);\n };\n });\n\n LazyWrapper.prototype.compact = function() {\n return this.filter(identity);\n };\n\n LazyWrapper.prototype.find = function(predicate) {\n return this.filter(predicate).head();\n };\n\n LazyWrapper.prototype.findLast = function(predicate) {\n return this.reverse().find(predicate);\n };\n\n LazyWrapper.prototype.invokeMap = baseRest(function(path, args) {\n if (typeof path == 'function') {\n return new LazyWrapper(this);\n }\n return this.map(function(value) {\n return baseInvoke(value, path, args);\n });\n });\n\n LazyWrapper.prototype.reject = function(predicate) {\n return this.filter(negate(getIteratee(predicate)));\n };\n\n LazyWrapper.prototype.slice = function(start, end) {\n start = toInteger(start);\n\n var result = this;\n if (result.__filtered__ && (start > 0 || end < 0)) {\n return new LazyWrapper(result);\n }\n if (start < 0) {\n result = result.takeRight(-start);\n } else if (start) {\n result = result.drop(start);\n }\n if (end !== undefined) {\n end = toInteger(end);\n result = end < 0 ? result.dropRight(-end) : result.take(end - start);\n }\n return result;\n };\n\n LazyWrapper.prototype.takeRightWhile = function(predicate) {\n return this.reverse().takeWhile(predicate).reverse();\n };\n\n LazyWrapper.prototype.toArray = function() {\n return this.take(MAX_ARRAY_LENGTH);\n };\n\n // Add `LazyWrapper` methods to `lodash.prototype`.\n baseForOwn(LazyWrapper.prototype, function(func, methodName) {\n var checkIteratee = /^(?:filter|find|map|reject)|While$/.test(methodName),\n isTaker = /^(?:head|last)$/.test(methodName),\n lodashFunc = lodash[isTaker ? ('take' + (methodName == 'last' ? 'Right' : '')) : methodName],\n retUnwrapped = isTaker || /^find/.test(methodName);\n\n if (!lodashFunc) {\n return;\n }\n lodash.prototype[methodName] = function() {\n var value = this.__wrapped__,\n args = isTaker ? [1] : arguments,\n isLazy = value instanceof LazyWrapper,\n iteratee = args[0],\n useLazy = isLazy || isArray(value);\n\n var interceptor = function(value) {\n var result = lodashFunc.apply(lodash, arrayPush([value], args));\n return (isTaker && chainAll) ? result[0] : result;\n };\n\n if (useLazy && checkIteratee && typeof iteratee == 'function' && iteratee.length != 1) {\n // Avoid lazy use if the iteratee has a \"length\" value other than `1`.\n isLazy = useLazy = false;\n }\n var chainAll = this.__chain__,\n isHybrid = !!this.__actions__.length,\n isUnwrapped = retUnwrapped && !chainAll,\n onlyLazy = isLazy && !isHybrid;\n\n if (!retUnwrapped && useLazy) {\n value = onlyLazy ? value : new LazyWrapper(this);\n var result = func.apply(value, args);\n result.__actions__.push({ 'func': thru, 'args': [interceptor], 'thisArg': undefined });\n return new LodashWrapper(result, chainAll);\n }\n if (isUnwrapped && onlyLazy) {\n return func.apply(this, args);\n }\n result = this.thru(interceptor);\n return isUnwrapped ? (isTaker ? result.value()[0] : result.value()) : result;\n };\n });\n\n // Add `Array` methods to `lodash.prototype`.\n arrayEach(['pop', 'push', 'shift', 'sort', 'splice', 'unshift'], function(methodName) {\n var func = arrayProto[methodName],\n chainName = /^(?:push|sort|unshift)$/.test(methodName) ? 'tap' : 'thru',\n retUnwrapped = /^(?:pop|shift)$/.test(methodName);\n\n lodash.prototype[methodName] = function() {\n var args = arguments;\n if (retUnwrapped && !this.__chain__) {\n var value = this.value();\n return func.apply(isArray(value) ? value : [], args);\n }\n return this[chainName](function(value) {\n return func.apply(isArray(value) ? value : [], args);\n });\n };\n });\n\n // Map minified method names to their real names.\n baseForOwn(LazyWrapper.prototype, function(func, methodName) {\n var lodashFunc = lodash[methodName];\n if (lodashFunc) {\n var key = lodashFunc.name + '';\n if (!hasOwnProperty.call(realNames, key)) {\n realNames[key] = [];\n }\n realNames[key].push({ 'name': methodName, 'func': lodashFunc });\n }\n });\n\n realNames[createHybrid(undefined, WRAP_BIND_KEY_FLAG).name] = [{\n 'name': 'wrapper',\n 'func': undefined\n }];\n\n // Add methods to `LazyWrapper`.\n LazyWrapper.prototype.clone = lazyClone;\n LazyWrapper.prototype.reverse = lazyReverse;\n LazyWrapper.prototype.value = lazyValue;\n\n // Add chain sequence methods to the `lodash` wrapper.\n lodash.prototype.at = wrapperAt;\n lodash.prototype.chain = wrapperChain;\n lodash.prototype.commit = wrapperCommit;\n lodash.prototype.next = wrapperNext;\n lodash.prototype.plant = wrapperPlant;\n lodash.prototype.reverse = wrapperReverse;\n lodash.prototype.toJSON = lodash.prototype.valueOf = lodash.prototype.value = wrapperValue;\n\n // Add lazy aliases.\n lodash.prototype.first = lodash.prototype.head;\n\n if (symIterator) {\n lodash.prototype[symIterator] = wrapperToIterator;\n }\n return lodash;\n });\n\n /*--------------------------------------------------------------------------*/\n\n // Export lodash.\n var _ = runInContext();\n\n // Some AMD build optimizers, like r.js, check for condition patterns like:\n if (typeof define == 'function' && typeof define.amd == 'object' && define.amd) {\n // Expose Lodash on the global object to prevent errors when Lodash is\n // loaded by a script tag in the presence of an AMD loader.\n // See http://requirejs.org/docs/errors.html#mismatch for more details.\n // Use `_.noConflict` to remove Lodash from the global object.\n root._ = _;\n\n // Define as an anonymous module so, through path mapping, it can be\n // referenced as the \"underscore\" module.\n define(function() {\n return _;\n });\n }\n // Check for `exports` after `define` in case a build optimizer adds it.\n else if (freeModule) {\n // Export for Node.js.\n (freeModule.exports = _)._ = _;\n // Export for CommonJS support.\n freeExports._ = _;\n }\n else {\n // Export to the global object.\n root._ = _;\n }\n}.call(this));\n","import './assets/NcRichText-DNXuHl34.css';\nimport i from \"./Components/NcActionButton.mjs\";\nimport { N as e } from \"./chunks/NcActionButtonGroup-DU1taycQ.mjs\";\nimport m from \"./Components/NcActionCaption.mjs\";\nimport a from \"./Components/NcActionCheckbox.mjs\";\nimport { N as p } from \"./chunks/NcActionInput-53RB9uQe.mjs\";\nimport c from \"./Components/NcActionLink.mjs\";\nimport s from \"./Components/NcActionRadio.mjs\";\nimport N from \"./Components/NcActionRouter.mjs\";\nimport { N as n } from \"./chunks/NcActions-DiFslXqv.mjs\";\nimport f from \"./Components/NcActionSeparator.mjs\";\nimport l from \"./Components/NcActionText.mjs\";\nimport u from \"./Components/NcActionTextEditable.mjs\";\nimport { N as d } from \"./chunks/NcAppContent-BDhK1rUf.mjs\";\nimport g from \"./Components/NcAppContentDetails.mjs\";\nimport A from \"./Components/NcAppContentList.mjs\";\nimport { N as S } from \"./chunks/NcAppNavigation-CElLRpH-.mjs\";\nimport { N as b } from \"./chunks/NcAppNavigationCaption-DI7SIPdI.mjs\";\nimport v from \"./Components/NcAppNavigationIconBullet.mjs\";\nimport { N as T } from \"./chunks/NcAppNavigationItem-Djfc0DPY.mjs\";\nimport k from \"./Components/NcAppNavigationList.mjs\";\nimport P from \"./Components/NcAppNavigationNew.mjs\";\nimport { N as x } from \"./chunks/NcAppNavigationNewItem-CN3vYnc_.mjs\";\nimport { N as C } from \"./chunks/NcAppNavigationSettings-LmpAoM-x.mjs\";\nimport I from \"./Components/NcAppNavigationSpacer.mjs\";\nimport { N as h } from \"./chunks/NcAppSettingsDialog-BLOgrVCz.mjs\";\nimport E from \"./Components/NcAppSettingsSection.mjs\";\nimport { N as B } from \"./chunks/NcAppSidebar-CqER6-dl.mjs\";\nimport R from \"./Components/NcAppSidebarTab.mjs\";\nimport { N as L } from \"./chunks/NcAvatar-BBhoG-za.mjs\";\nimport { u as ct } from \"./chunks/NcAvatar-BBhoG-za.mjs\";\nimport { N as y } from \"./chunks/NcBreadcrumb-BxCf2hEA.mjs\";\nimport { N as M } from \"./chunks/NcBreadcrumbs-BmK-6Q-n.mjs\";\nimport O from \"./Components/NcButton.mjs\";\nimport { N as D } from \"./chunks/NcCheckboxRadioSwitch-BOl1O2zi.mjs\";\nimport { N as _ } from \"./chunks/NcColorPicker-CeoImUTC.mjs\";\nimport { N as j } from \"./chunks/NcContent-BPA0KfuT.mjs\";\nimport F from \"./Components/NcCounterBubble.mjs\";\nimport { N as W } from \"./chunks/NcDashboardWidget-2-nW7dII.mjs\";\nimport { N as w } from \"./chunks/NcDashboardWidgetItem-D2yoF9Oo.mjs\";\nimport { N as z } from \"./chunks/NcDateTime-CeOdKcvC.mjs\";\nimport { u as Nt } from \"./chunks/NcDateTime-CeOdKcvC.mjs\";\nimport G from \"./Components/NcDateTimePicker.mjs\";\nimport V from \"./Components/NcDateTimePickerNative.mjs\";\nimport { N as H } from \"./chunks/NcDialog-C_1rhUHk.mjs\";\nimport { N as K } from \"./chunks/NcDialogButton-DQFoaN7q.mjs\";\nimport { N as U } from \"./chunks/NcEmojiPicker-Cie30NYK.mjs\";\nimport $ from \"./Components/NcEmptyContent.mjs\";\nimport q from \"./Components/NcGuestContent.mjs\";\nimport { N as J } from \"./chunks/NcHeaderMenu-DOGXti7v.mjs\";\nimport { N as Q } from \"./chunks/index-CnpswYi6.mjs\";\nimport { N as X } from \"./chunks/NcIconSvgWrapper-BTdzvQGV.mjs\";\nimport { N as Y } from \"./chunks/NcListItem-BopkGRDs.mjs\";\nimport { N as Z } from \"./chunks/NcListItemIcon-CI23iFQz.mjs\";\nimport oo from \"./Components/NcLoadingIcon.mjs\";\nimport ro from \"./Components/NcModal.mjs\";\nimport to from \"./Components/NcNoteCard.mjs\";\nimport { N as io } from \"./chunks/NcPasswordField-BgSp7dK4.mjs\";\nimport { N as eo } from \"./chunks/NcPopover--V3R3EKV.mjs\";\nimport { N as mo } from \"./chunks/NcProgressBar-DDAeXyp8.mjs\";\nimport { N as ao } from \"./chunks/NcRelatedResourcesPanel-Ch1b_Gl3.mjs\";\nimport { N as po } from \"./chunks/index-uiNhPYvS.mjs\";\nimport { r as ft } from \"./chunks/index-uiNhPYvS.mjs\";\nimport { N as co, a as so } from \"./chunks/NcRichContenteditable-CEqdmoem.mjs\";\nimport { N as No } from \"./chunks/NcRichText-CUKFkHQg.mjs\";\nimport { N as ut, h as dt, d as gt, i as At, b as St, r as bt, c as vt, a as Tt } from \"./chunks/index-CU14QsCg.mjs\";\nimport \"@vueuse/core\";\nimport \"vue\";\nimport { a as Pt, g as xt, b as Ct, c as It, d as ht, s as Et } from \"./chunks/referencePickerModal-AvSHyw1b.mjs\";\nimport \"unist-util-visit\";\nimport \"unist-builder\";\nimport \"@nextcloud/router\";\nimport \"@nextcloud/axios\";\n/* empty css */\nimport { N as no } from \"./chunks/NcSelect-Bo71Yd6L.mjs\";\nimport { N as fo } from \"./chunks/NcTextField-D_eUEl2B.mjs\";\nimport \"@nextcloud/event-bus\";\nimport { N as lo } from \"./chunks/NcSavingIndicatorIcon-Bf0SEmgS.mjs\";\nimport { N as uo } from \"./chunks/NcSelectTags-9aCrLRT0.mjs\";\nimport { N as go } from \"./chunks/NcSettingsInputText-JboV8u2l.mjs\";\nimport { N as Ao } from \"./chunks/NcSettingsSection-Lgwm3w2e.mjs\";\nimport { N as So } from \"./chunks/NcSettingsSelectGroup-DUzmbtZx.mjs\";\nimport { N as bo } from \"./chunks/NcTimezonePicker-CH1lkCMF.mjs\";\nimport { N as vo } from \"./chunks/NcUserBubble-C0HbPO9p.mjs\";\nimport { N as To } from \"./chunks/NcUserStatusIcon-HOUdT_MR.mjs\";\nimport ko from \"./Components/NcTextArea.mjs\";\nimport { isFullscreenState as Rt, useIsFullscreen as Lt } from \"./Composables/useIsFullscreen.mjs\";\nimport { MOBILE_BREAKPOINT as Mt, MOBILE_SMALL_BREAKPOINT as Ot, isMobileState as Dt, useIsMobile as _t, useIsSmallMobile as jt } from \"./Composables/useIsMobile.mjs\";\nimport { E as Wt, a as wt, e as zt, g as Gt, s as Vt } from \"./chunks/emoji-k4gWHxrE.mjs\";\nimport { u as Kt } from \"./chunks/usernameToColor-BHkzj1tb.mjs\";\nimport { directive as Po } from \"./Directives/Focus.mjs\";\nimport { directive as xo } from \"./Directives/Linkify.mjs\";\nimport \"./Directives/Tooltip.mjs\";\nimport { default as $t } from \"./Mixins/clickOutsideOptions.mjs\";\nimport { default as Jt } from \"./Mixins/isFullscreen.mjs\";\nimport { default as Xt } from \"./Mixins/isMobile.mjs\";\nimport { VTooltip as Co } from \"floating-vue\";\nimport { VTooltip as Zt } from \"floating-vue\";\n/**\n * @copyright Copyright (c) 2018 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\nconst Io = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({\n __proto__: null,\n NcActionButton: i,\n NcActionButtonGroup: e,\n NcActionCaption: m,\n NcActionCheckbox: a,\n NcActionInput: p,\n NcActionLink: c,\n NcActionRadio: s,\n NcActionRouter: N,\n NcActionSeparator: f,\n NcActionText: l,\n NcActionTextEditable: u,\n NcActions: n,\n NcAppContent: d,\n NcAppContentDetails: g,\n NcAppContentList: A,\n NcAppNavigation: S,\n NcAppNavigationCaption: b,\n NcAppNavigationIconBullet: v,\n NcAppNavigationItem: T,\n NcAppNavigationList: k,\n NcAppNavigationNew: P,\n NcAppNavigationNewItem: x,\n NcAppNavigationSettings: C,\n NcAppNavigationSpacer: I,\n NcAppSettingsDialog: h,\n NcAppSettingsSection: E,\n NcAppSidebar: B,\n NcAppSidebarTab: R,\n NcAutoCompleteResult: co,\n NcAvatar: L,\n NcBreadcrumb: y,\n NcBreadcrumbs: M,\n NcButton: O,\n NcCheckboxRadioSwitch: D,\n NcColorPicker: _,\n NcContent: j,\n NcCounterBubble: F,\n NcDashboardWidget: W,\n NcDashboardWidgetItem: w,\n NcDateTime: z,\n NcDateTimePicker: G,\n NcDateTimePickerNative: V,\n NcDialog: H,\n NcDialogButton: K,\n NcEmojiPicker: U,\n NcEmptyContent: $,\n NcGuestContent: q,\n NcHeaderMenu: J,\n NcHighlight: Q,\n NcIconSvgWrapper: X,\n NcListItem: Y,\n NcListItemIcon: Z,\n NcLoadingIcon: oo,\n NcMentionBubble: po,\n NcModal: ro,\n NcNoteCard: to,\n NcPasswordField: io,\n NcPopover: eo,\n NcProgressBar: mo,\n NcRelatedResourcesPanel: ao,\n NcRichContenteditable: so,\n NcRichText: No,\n NcSavingIndicatorIcon: lo,\n NcSelect: no,\n NcSelectTags: uo,\n NcSettingsInputText: go,\n NcSettingsSection: Ao,\n NcSettingsSelectGroup: So,\n NcTextArea: ko,\n NcTextField: fo,\n NcTimezonePicker: bo,\n NcUserBubble: vo,\n NcUserStatusIcon: To\n}, Symbol.toStringTag, { value: \"Module\" }));\n/**\n * @copyright 2022 Christopher Ng <chrng8@gmail.com>\n *\n * @author Christopher Ng <chrng8@gmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\nconst et = (o) => o.type === \"click\" || o.type === \"keydown\" && o.key === \"Enter\";\n/**\n * @copyright Copyright (c) 2018 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\nconst ho = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({\n __proto__: null,\n Focus: Po,\n Linkify: xo,\n Tooltip: Co\n}, Symbol.toStringTag, { value: \"Module\" })), mt = {\n install(o) {\n Object.entries(Io).forEach(([t, r]) => {\n o.component(r.name || t, r);\n }), Object.entries(ho).forEach(([t, r]) => {\n o.directive(t, r);\n });\n }\n};\nexport {\n Wt as EmojiSkinTone,\n Po as Focus,\n xo as Linkify,\n Mt as MOBILE_BREAKPOINT,\n Ot as MOBILE_SMALL_BREAKPOINT,\n i as NcActionButton,\n e as NcActionButtonGroup,\n m as NcActionCaption,\n a as NcActionCheckbox,\n p as NcActionInput,\n c as NcActionLink,\n s as NcActionRadio,\n N as NcActionRouter,\n f as NcActionSeparator,\n l as NcActionText,\n u as NcActionTextEditable,\n n as NcActions,\n d as NcAppContent,\n g as NcAppContentDetails,\n A as NcAppContentList,\n S as NcAppNavigation,\n b as NcAppNavigationCaption,\n v as NcAppNavigationIconBullet,\n T as NcAppNavigationItem,\n k as NcAppNavigationList,\n P as NcAppNavigationNew,\n x as NcAppNavigationNewItem,\n C as NcAppNavigationSettings,\n I as NcAppNavigationSpacer,\n h as NcAppSettingsDialog,\n E as NcAppSettingsSection,\n B as NcAppSidebar,\n R as NcAppSidebarTab,\n co as NcAutoCompleteResult,\n L as NcAvatar,\n y as NcBreadcrumb,\n M as NcBreadcrumbs,\n O as NcButton,\n D as NcCheckboxRadioSwitch,\n _ as NcColorPicker,\n j as NcContent,\n F as NcCounterBubble,\n ut as NcCustomPickerRenderResult,\n W as NcDashboardWidget,\n w as NcDashboardWidgetItem,\n z as NcDateTime,\n G as NcDateTimePicker,\n V as NcDateTimePickerNative,\n H as NcDialog,\n K as NcDialogButton,\n U as NcEmojiPicker,\n $ as NcEmptyContent,\n q as NcGuestContent,\n J as NcHeaderMenu,\n Q as NcHighlight,\n X as NcIconSvgWrapper,\n Y as NcListItem,\n Z as NcListItemIcon,\n oo as NcLoadingIcon,\n po as NcMentionBubble,\n ro as NcModal,\n to as NcNoteCard,\n io as NcPasswordField,\n eo as NcPopover,\n mo as NcProgressBar,\n ao as NcRelatedResourcesPanel,\n so as NcRichContenteditable,\n No as NcRichText,\n lo as NcSavingIndicatorIcon,\n no as NcSelect,\n uo as NcSelectTags,\n go as NcSettingsInputText,\n Ao as NcSettingsSection,\n So as NcSettingsSelectGroup,\n ko as NcTextArea,\n fo as NcTextField,\n bo as NcTimezonePicker,\n vo as NcUserBubble,\n To as NcUserStatusIcon,\n mt as NextcloudVuePlugin,\n Zt as Tooltip,\n Pt as anyLinkProviderId,\n $t as clickOutsideOptions,\n wt as emojiAddRecent,\n zt as emojiSearch,\n Gt as getCurrentSkinTone,\n xt as getLinkWithPicker,\n Ct as getProvider,\n It as getProviders,\n dt as hasInteractiveView,\n et as isA11yActivation,\n gt as isCustomPickerElementRegistered,\n Jt as isFullscreen,\n Rt as isFullscreenState,\n Xt as isMobile,\n Dt as isMobileState,\n At as isWidgetRegistered,\n St as registerCustomPickerElement,\n bt as registerWidget,\n vt as renderCustomPickerElement,\n Tt as renderWidget,\n ft as richEditor,\n ht as searchProvider,\n Vt as setCurrentSkinTone,\n Et as sortProviders,\n Nt as useFormatDateTime,\n Lt as useIsFullscreen,\n _t as useIsMobile,\n jt as useIsSmallMobile,\n ct as userStatus,\n Kt as usernameToColor\n};\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\tid: moduleId,\n\t\tloaded: false,\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Flag the module as loaded\n\tmodule.loaded = true;\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n// expose the modules object (__webpack_modules__)\n__webpack_require__.m = __webpack_modules__;\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.f = {};\n// This file contains only the entry chunk.\n// The chunk loading function for additional chunks\n__webpack_require__.e = (chunkId) => {\n\treturn Promise.all(Object.keys(__webpack_require__.f).reduce((promises, key) => {\n\t\t__webpack_require__.f[key](chunkId, promises);\n\t\treturn promises;\n\t}, []));\n};","// This function allow to reference async chunks\n__webpack_require__.u = (chunkId) => {\n\t// return url for filenames based on template\n\treturn \"\" + chunkId + \"-\" + chunkId + \".js?v=\" + {\"1110\":\"a5d6e6f59aa058840a1e\",\"5455\":\"8915a218db5b7bc90f34\"}[chunkId] + \"\";\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","__webpack_require__.nmd = (module) => {\n\tmodule.paths = [];\n\tif (!module.children) module.children = [];\n\treturn module;\n};","__webpack_require__.j = 3674;","var scriptUrl;\nif (__webpack_require__.g.importScripts) scriptUrl = __webpack_require__.g.location + \"\";\nvar document = __webpack_require__.g.document;\nif (!scriptUrl && document) {\n\tif (document.currentScript)\n\t\tscriptUrl = document.currentScript.src;\n\tif (!scriptUrl) {\n\t\tvar scripts = document.getElementsByTagName(\"script\");\n\t\tif(scripts.length) {\n\t\t\tvar i = scripts.length - 1;\n\t\t\twhile (i > -1 && (!scriptUrl || !/^http(s?):/.test(scriptUrl))) scriptUrl = scripts[i--].src;\n\t\t}\n\t}\n}\n// When supporting browsers where an automatic publicPath is not supported you must specify an output.publicPath manually via configuration\n// or pass an empty string (\"\") and set the __webpack_public_path__ variable from your code to use your own logic.\nif (!scriptUrl) throw new Error(\"Automatic publicPath is not supported in this browser\");\nscriptUrl = scriptUrl.replace(/#.*$/, \"\").replace(/\\?.*$/, \"\").replace(/\\/[^\\/]+$/, \"/\");\n__webpack_require__.p = scriptUrl;","__webpack_require__.b = document.baseURI || self.location.href;\n\n// object to store loaded and loading chunks\n// undefined = chunk not loaded, null = chunk preloaded/prefetched\n// [resolve, reject, Promise] = chunk loading, 0 = chunk loaded\nvar installedChunks = {\n\t3674: 0\n};\n\n__webpack_require__.f.j = (chunkId, promises) => {\n\t\t// JSONP chunk loading for javascript\n\t\tvar installedChunkData = __webpack_require__.o(installedChunks, chunkId) ? installedChunks[chunkId] : undefined;\n\t\tif(installedChunkData !== 0) { // 0 means \"already installed\".\n\n\t\t\t// a Promise means \"currently loading\".\n\t\t\tif(installedChunkData) {\n\t\t\t\tpromises.push(installedChunkData[2]);\n\t\t\t} else {\n\t\t\t\tif(true) { // all chunks have JS\n\t\t\t\t\t// setup Promise in chunk cache\n\t\t\t\t\tvar promise = new Promise((resolve, reject) => (installedChunkData = installedChunks[chunkId] = [resolve, reject]));\n\t\t\t\t\tpromises.push(installedChunkData[2] = promise);\n\n\t\t\t\t\t// start chunk loading\n\t\t\t\t\tvar url = __webpack_require__.p + __webpack_require__.u(chunkId);\n\t\t\t\t\t// create error before stack unwound to get useful stacktrace later\n\t\t\t\t\tvar error = new Error();\n\t\t\t\t\tvar loadingEnded = (event) => {\n\t\t\t\t\t\tif(__webpack_require__.o(installedChunks, chunkId)) {\n\t\t\t\t\t\t\tinstalledChunkData = installedChunks[chunkId];\n\t\t\t\t\t\t\tif(installedChunkData !== 0) installedChunks[chunkId] = undefined;\n\t\t\t\t\t\t\tif(installedChunkData) {\n\t\t\t\t\t\t\t\tvar errorType = event && (event.type === 'load' ? 'missing' : event.type);\n\t\t\t\t\t\t\t\tvar realSrc = event && event.target && event.target.src;\n\t\t\t\t\t\t\t\terror.message = 'Loading chunk ' + chunkId + ' failed.\\n(' + errorType + ': ' + realSrc + ')';\n\t\t\t\t\t\t\t\terror.name = 'ChunkLoadError';\n\t\t\t\t\t\t\t\terror.type = errorType;\n\t\t\t\t\t\t\t\terror.request = realSrc;\n\t\t\t\t\t\t\t\tinstalledChunkData[1](error);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t\t__webpack_require__.l(url, loadingEnded, \"chunk-\" + chunkId, chunkId);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n};\n\n// no prefetching\n\n// no preloaded\n\n// no HMR\n\n// no HMR manifest\n\n__webpack_require__.O.j = (chunkId) => (installedChunks[chunkId] === 0);\n\n// install a JSONP callback for chunk loading\nvar webpackJsonpCallback = (parentChunkLoadingFunction, data) => {\n\tvar chunkIds = data[0];\n\tvar moreModules = data[1];\n\tvar runtime = data[2];\n\t// add \"moreModules\" to the modules object,\n\t// then flag all \"chunkIds\" as loaded and fire callback\n\tvar moduleId, chunkId, i = 0;\n\tif(chunkIds.some((id) => (installedChunks[id] !== 0))) {\n\t\tfor(moduleId in moreModules) {\n\t\t\tif(__webpack_require__.o(moreModules, moduleId)) {\n\t\t\t\t__webpack_require__.m[moduleId] = moreModules[moduleId];\n\t\t\t}\n\t\t}\n\t\tif(runtime) var result = runtime(__webpack_require__);\n\t}\n\tif(parentChunkLoadingFunction) parentChunkLoadingFunction(data);\n\tfor(;i < chunkIds.length; i++) {\n\t\tchunkId = chunkIds[i];\n\t\tif(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) {\n\t\t\tinstalledChunks[chunkId][0]();\n\t\t}\n\t\tinstalledChunks[chunkId] = 0;\n\t}\n\treturn __webpack_require__.O(result);\n}\n\nvar chunkLoadingGlobal = self[\"webpackChunknextcloud\"] = self[\"webpackChunknextcloud\"] || [];\nchunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0));\nchunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal));","__webpack_require__.nc = undefined;","// startup\n// Load entry module and return exports\n// This entry module depends on other loaded chunks and execution need to be delayed\nvar __webpack_exports__ = __webpack_require__.O(undefined, [4208], () => (__webpack_require__(1614)))\n__webpack_exports__ = __webpack_require__.O(__webpack_exports__);\n"],"names":["deferred","inProgress","dataWebpackPrefix","defineComponent","name","components","NcCheckboxRadioSwitch","props","value","type","Number","required","emits","data","PERMISSION_UPDATE","PERMISSION_CREATE","PERMISSION_DELETE","PERMISSION_SHARE","computed","canCreate","canUpdate","canDelete","canShare","methods","t","translate","toggle","permission","$emit","options","styleTagTransform","setAttributes","insert","domAPI","insertStyleElement","locals","_vm","this","_c","_self","_setupProxy","staticClass","attrs","on","$event","_v","_s","NcSettingsSelectGroup","NcTextArea","NcTextField","SelectSharingPermissions","settingsData","loadState","settings","console","warn","Proxy","get","target","property","set","newValue","configName","concat","snakeCase","JSON","stringify","window","OCP","AppConfig","setValue","publicShareDisclaimerEnabled","publicShareDisclaimerText","onUpdateDisclaimer","debounce","success","showSuccess","error","showError","deleteKey","onUpdateExcludeGroups","excludeGroups","enabled","$set","directives","rawName","expression","allowResharing","allowGroupSharing","onlyShareWithGroupMembers","staticStyle","model","onlyShareWithGroupMembersExcludeGroupList","callback","$$v","allowLinks","allowPublicUpload","enableLinkPasswordByDefault","enforceLinksPassword","passwordExcludedGroupsFeatureEnabled","passwordExcludedGroups","_e","allowLinksExcludeGroups","excludeGroupsList","defaultInternalExpireDate","enforceInternalExpireDate","internalExpireAfterNDays","defaultRemoteExpireDate","enforceRemoteExpireDate","remoteExpireAfterNDays","defaultExpireDate","enforceExpireDate","expireAfterNDays","allowShareDialogUserEnumeration","restrictUserEnumerationToGroup","restrictUserEnumerationToPhone","restrictUserEnumerationFullMatch","defaultPermissions","AdminSettingsSharingForm","NcNoteCard","NcSettingsSection","documentationLink","sharingAppEnabled","Vue","el","render","h","AdminSettingsSharing","___CSS_LOADER_EXPORT___","push","module","id","undefined","FUNC_ERROR_TEXT","HASH_UNDEFINED","PLACEHOLDER","WRAP_PARTIAL_FLAG","WRAP_ARY_FLAG","INFINITY","MAX_SAFE_INTEGER","NAN","MAX_ARRAY_LENGTH","wrapFlags","argsTag","arrayTag","boolTag","dateTag","errorTag","funcTag","genTag","mapTag","numberTag","objectTag","promiseTag","regexpTag","setTag","stringTag","symbolTag","weakMapTag","arrayBufferTag","dataViewTag","float32Tag","float64Tag","int8Tag","int16Tag","int32Tag","uint8Tag","uint8ClampedTag","uint16Tag","uint32Tag","reEmptyStringLeading","reEmptyStringMiddle","reEmptyStringTrailing","reEscapedHtml","reUnescapedHtml","reHasEscapedHtml","RegExp","source","reHasUnescapedHtml","reEscape","reEvaluate","reInterpolate","reIsDeepProp","reIsPlainProp","rePropName","reRegExpChar","reHasRegExpChar","reTrimStart","reWhitespace","reWrapComment","reWrapDetails","reSplitDetails","reAsciiWord","reForbiddenIdentifierChars","reEscapeChar","reEsTemplate","reFlags","reIsBadHex","reIsBinary","reIsHostCtor","reIsOctal","reIsUint","reLatin","reNoMatch","reUnescapedString","rsAstralRange","rsComboRange","rsComboMarksRange","rsDingbatRange","rsLowerRange","rsUpperRange","rsVarRange","rsBreakRange","rsMathOpRange","rsAstral","rsBreak","rsCombo","rsDigits","rsDingbat","rsLower","rsMisc","rsFitz","rsNonAstral","rsRegional","rsSurrPair","rsUpper","rsZWJ","rsMiscLower","rsMiscUpper","rsOptContrLower","rsOptContrUpper","reOptMod","rsModifier","rsOptVar","rsSeq","join","rsEmoji","rsSymbol","reApos","reComboMark","reUnicode","reUnicodeWord","reHasUnicode","reHasUnicodeWord","contextProps","templateCounter","typedArrayTags","cloneableTags","stringEscapes","freeParseFloat","parseFloat","freeParseInt","parseInt","freeGlobal","g","Object","freeSelf","self","root","Function","freeExports","exports","nodeType","freeModule","moduleExports","freeProcess","process","nodeUtil","require","types","binding","e","nodeIsArrayBuffer","isArrayBuffer","nodeIsDate","isDate","nodeIsMap","isMap","nodeIsRegExp","isRegExp","nodeIsSet","isSet","nodeIsTypedArray","isTypedArray","apply","func","thisArg","args","length","call","arrayAggregator","array","setter","iteratee","accumulator","index","arrayEach","arrayEachRight","arrayEvery","predicate","arrayFilter","resIndex","result","arrayIncludes","baseIndexOf","arrayIncludesWith","comparator","arrayMap","Array","arrayPush","values","offset","arrayReduce","initAccum","arrayReduceRight","arraySome","asciiSize","baseProperty","baseFindKey","collection","eachFunc","key","baseFindIndex","fromIndex","fromRight","strictIndexOf","baseIsNaN","baseIndexOfWith","baseMean","baseSum","object","basePropertyOf","baseReduce","current","baseTimes","n","baseTrim","string","slice","trimmedEndIndex","replace","baseUnary","baseValues","cacheHas","cache","has","charsStartIndex","strSymbols","chrSymbols","charsEndIndex","deburrLetter","escapeHtmlChar","escapeStringChar","chr","hasUnicode","test","mapToArray","map","size","forEach","overArg","transform","arg","replaceHolders","placeholder","setToArray","setToPairs","stringSize","lastIndex","unicodeSize","stringToArray","match","unicodeToArray","split","asciiToArray","charAt","unescapeHtmlChar","_","runInContext","context","uid","defaults","pick","Date","Error","Math","String","TypeError","arrayProto","prototype","funcProto","objectProto","coreJsData","funcToString","toString","hasOwnProperty","idCounter","maskSrcKey","exec","keys","IE_PROTO","nativeObjectToString","objectCtorString","oldDash","reIsNative","Buffer","Symbol","Uint8Array","allocUnsafe","getPrototype","getPrototypeOf","objectCreate","create","propertyIsEnumerable","splice","spreadableSymbol","isConcatSpreadable","symIterator","iterator","symToStringTag","toStringTag","defineProperty","getNative","ctxClearTimeout","clearTimeout","ctxNow","now","ctxSetTimeout","setTimeout","nativeCeil","ceil","nativeFloor","floor","nativeGetSymbols","getOwnPropertySymbols","nativeIsBuffer","isBuffer","nativeIsFinite","isFinite","nativeJoin","nativeKeys","nativeMax","max","nativeMin","min","nativeNow","nativeParseInt","nativeRandom","random","nativeReverse","reverse","DataView","Map","Promise","Set","WeakMap","nativeCreate","metaMap","realNames","dataViewCtorString","toSource","mapCtorString","promiseCtorString","setCtorString","weakMapCtorString","symbolProto","symbolValueOf","valueOf","symbolToString","lodash","isObjectLike","isArray","LazyWrapper","LodashWrapper","wrapperClone","baseCreate","proto","isObject","baseLodash","chainAll","__wrapped__","__actions__","__chain__","__index__","__values__","__dir__","__filtered__","__iteratees__","__takeCount__","__views__","Hash","entries","clear","entry","ListCache","MapCache","SetCache","__data__","add","Stack","arrayLikeKeys","inherited","isArr","isArg","isArguments","isBuff","isType","skipIndexes","isIndex","arraySample","baseRandom","arraySampleSize","shuffleSelf","copyArray","baseClamp","arrayShuffle","assignMergeValue","eq","baseAssignValue","assignValue","objValue","assocIndexOf","baseAggregator","baseEach","baseAssign","copyObject","baseAt","paths","skip","number","lower","upper","baseClone","bitmask","customizer","stack","isDeep","isFlat","isFull","constructor","input","initCloneArray","tag","getTag","isFunc","cloneBuffer","initCloneObject","getSymbolsIn","copySymbolsIn","keysIn","baseAssignIn","getSymbols","copySymbols","symbol","Ctor","cloneArrayBuffer","dataView","buffer","byteOffset","byteLength","cloneDataView","cloneTypedArray","regexp","cloneRegExp","initCloneByTag","stacked","subValue","getAllKeysIn","getAllKeys","baseConformsTo","baseDelay","wait","baseDifference","includes","isCommon","valuesLength","outer","valuesIndex","templateSettings","pop","getMapData","pairs","LARGE_ARRAY_SIZE","createBaseEach","baseForOwn","baseEachRight","baseForOwnRight","baseEvery","baseExtremum","isSymbol","baseFilter","baseFlatten","depth","isStrict","isFlattenable","baseFor","createBaseFor","baseForRight","baseFunctions","isFunction","baseGet","path","castPath","toKey","baseGetAllKeys","keysFunc","symbolsFunc","baseGetTag","isOwn","unmasked","getRawTag","objectToString","baseGt","other","baseHas","baseHasIn","baseIntersection","arrays","othLength","othIndex","caches","maxLength","Infinity","seen","baseInvoke","parent","last","baseIsArguments","baseIsEqual","equalFunc","objIsArr","othIsArr","objTag","othTag","objIsObj","othIsObj","isSameTag","equalArrays","message","convert","isPartial","equalByTag","objIsWrapped","othIsWrapped","objUnwrapped","othUnwrapped","objProps","objLength","objStacked","othStacked","skipCtor","othValue","compared","objCtor","othCtor","equalObjects","baseIsEqualDeep","baseIsMatch","matchData","noCustomizer","srcValue","COMPARE_PARTIAL_FLAG","baseIsNative","baseIteratee","identity","baseMatchesProperty","baseMatches","baseKeys","isPrototype","baseLt","baseMap","isArrayLike","getMatchData","matchesStrictComparable","isKey","isStrictComparable","hasIn","baseMerge","srcIndex","mergeFunc","safeGet","isTyped","isArrayLikeObject","isPlainObject","toPlainObject","baseMergeDeep","baseNth","baseOrderBy","iteratees","orders","getIteratee","criteria","comparer","sort","objCriteria","othCriteria","ordersLength","compareAscending","compareMultiple","baseSortBy","basePickBy","baseSet","basePullAll","indexOf","basePullAt","indexes","previous","baseUnset","baseRepeat","baseRest","start","setToString","overRest","baseSample","baseSampleSize","nested","baseSetData","baseSetToString","constant","baseShuffle","baseSlice","end","baseSome","baseSortedIndex","retHighest","low","high","mid","baseSortedIndexBy","valIsNaN","valIsNull","valIsSymbol","valIsUndefined","othIsDefined","othIsNull","othIsReflexive","othIsSymbol","setLow","baseSortedUniq","baseToNumber","baseToString","baseUniq","createSet","seenIndex","baseUpdate","updater","baseWhile","isDrop","baseWrapperValue","actions","action","baseXor","baseZipObject","assignFunc","valsLength","castArrayLikeObject","castFunction","stringToPath","castRest","castSlice","copy","arrayBuffer","typedArray","valIsDefined","valIsReflexive","composeArgs","partials","holders","isCurried","argsIndex","argsLength","holdersLength","leftIndex","leftLength","rangeLength","isUncurried","composeArgsRight","holdersIndex","rightIndex","rightLength","isNew","createAggregator","initializer","createAssigner","assigner","sources","guard","isIterateeCall","iterable","createCaseFirst","methodName","trailing","createCompounder","words","deburr","createCtor","arguments","thisBinding","createFind","findIndexFunc","createFlow","flatRest","funcs","prereq","thru","wrapper","getFuncName","funcName","getData","isLaziable","plant","createHybrid","partialsRight","holdersRight","argPos","ary","arity","isAry","isBind","isBindKey","isFlip","getHolder","holdersCount","countHolders","newHolders","createRecurry","fn","arrLength","oldArray","reorder","createInverter","toIteratee","baseInverter","createMathOperation","operator","defaultValue","createOver","arrayFunc","createPadding","chars","charsLength","createRange","step","toFinite","baseRange","createRelationalOperation","toNumber","wrapFunc","isCurry","newData","setData","setWrapToString","createRound","precision","toInteger","pair","noop","createToPairs","baseToPairs","createWrap","srcBitmask","newBitmask","isCombo","mergeData","createCurry","createPartial","createBind","customDefaultsAssignIn","customDefaultsMerge","customOmitClone","arrStacked","arrValue","flatten","otherFunc","getValue","stubArray","hasPath","hasFunc","isLength","ArrayBuffer","resolve","ctorString","isMaskable","stubFalse","otherArgs","shortOut","reference","details","insertWrapDetails","updateWrapDetails","getWrapDetails","count","lastCalled","stamp","remaining","rand","memoize","charCodeAt","quote","subString","clone","difference","differenceBy","differenceWith","findIndex","findLastIndex","head","intersection","mapped","intersectionBy","intersectionWith","pull","pullAll","pullAt","union","unionBy","unionWith","unzip","group","unzipWith","without","xor","xorBy","xorWith","zip","zipWith","chain","interceptor","wrapperAt","countBy","find","findLast","forEachRight","groupBy","invokeMap","keyBy","partition","sortBy","before","bind","bindKey","WRAP_BIND_FLAG","lastArgs","lastThis","maxWait","timerId","lastCallTime","lastInvokeTime","leading","maxing","invokeFunc","time","shouldInvoke","timeSinceLastCall","timerExpired","trailingEdge","timeWaiting","remainingWait","debounced","isInvoking","leadingEdge","cancel","flush","defer","delay","resolver","memoized","Cache","negate","overArgs","transforms","funcsLength","partial","partialRight","rearg","gt","gte","isError","isInteger","isNumber","isString","lt","lte","toArray","next","done","iteratorToArray","remainder","toLength","isBinary","assign","assignIn","assignInWith","assignWith","at","propsIndex","propsLength","defaultsDeep","mergeWith","invert","invertBy","invoke","nativeKeysIn","isProto","baseKeysIn","merge","omit","CLONE_DEEP_FLAG","basePick","pickBy","prop","toPairs","toPairsIn","camelCase","word","toLowerCase","capitalize","upperFirst","kebabCase","lowerCase","lowerFirst","startCase","upperCase","toUpperCase","pattern","hasUnicodeWord","unicodeWords","asciiWords","attempt","bindAll","methodNames","flow","flowRight","method","methodOf","mixin","over","overEvery","overSome","basePropertyDeep","range","rangeRight","augend","addend","divide","dividend","divisor","multiply","multiplier","multiplicand","round","subtract","minuend","subtrahend","after","castArray","chunk","compact","cond","conforms","baseConforms","properties","curry","curryRight","drop","dropRight","dropRightWhile","dropWhile","fill","baseFill","filter","flatMap","flatMapDeep","flatMapDepth","flattenDeep","flattenDepth","flip","fromPairs","functions","functionsIn","initial","mapKeys","mapValues","matches","matchesProperty","nthArg","omitBy","once","orderBy","propertyOf","pullAllBy","pullAllWith","reject","remove","rest","sampleSize","setWith","shuffle","sortedUniq","sortedUniqBy","separator","limit","spread","tail","take","takeRight","takeRightWhile","takeWhile","tap","throttle","toPath","isArrLike","unary","uniq","uniqBy","uniqWith","unset","update","updateWith","valuesIn","wrap","zipObject","zipObjectDeep","entriesIn","extend","extendWith","clamp","cloneDeep","cloneDeepWith","cloneWith","conformsTo","defaultTo","endsWith","position","escape","escapeRegExp","every","findKey","findLastKey","forIn","forInRight","forOwn","forOwnRight","inRange","baseInRange","isBoolean","isElement","isEmpty","isEqual","isEqualWith","isMatch","isMatchWith","isNaN","isNative","isNil","isNull","isSafeInteger","isUndefined","isWeakMap","isWeakSet","lastIndexOf","strictLastIndexOf","maxBy","mean","meanBy","minBy","stubObject","stubString","stubTrue","nth","noConflict","pad","strLength","padEnd","padStart","radix","floating","temp","reduce","reduceRight","repeat","sample","some","sortedIndex","sortedIndexBy","sortedIndexOf","sortedLastIndex","sortedLastIndexBy","sortedLastIndexOf","startsWith","sum","sumBy","template","isEscaping","isEvaluating","imports","importsKeys","importsValues","interpolate","reDelimiters","evaluate","sourceURL","escapeValue","interpolateValue","esTemplateValue","evaluateValue","variable","times","toLower","toSafeInteger","toUpper","trim","trimEnd","trimStart","truncate","omission","search","substring","global","newEnd","unescape","uniqueId","prefix","each","eachRight","first","VERSION","isFilter","takeName","dropName","checkIteratee","isTaker","lodashFunc","retUnwrapped","isLazy","useLazy","isHybrid","isUnwrapped","onlyLazy","chainName","dir","isRight","view","getView","iterLength","takeCount","iterIndex","commit","wrapped","toJSON","A","N","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","loaded","__webpack_modules__","m","O","chunkIds","priority","notFulfilled","i","fulfilled","j","r","getter","__esModule","d","a","definition","o","enumerable","f","chunkId","all","promises","u","globalThis","obj","l","url","script","needAttach","scripts","document","getElementsByTagName","s","getAttribute","createElement","charset","timeout","nc","setAttribute","src","onScriptComplete","prev","event","onerror","onload","doneFns","parentNode","removeChild","appendChild","nmd","children","scriptUrl","importScripts","location","currentScript","p","b","baseURI","href","installedChunks","installedChunkData","promise","errorType","realSrc","request","webpackJsonpCallback","parentChunkLoadingFunction","moreModules","runtime","chunkLoadingGlobal","__webpack_exports__"],"sourceRoot":""}
\ No newline at end of file diff --git a/dist/settings-vue-settings-apps-users-management.js b/dist/settings-vue-settings-apps-users-management.js index 06eda8a03ec..e0d520690e6 100644 --- a/dist/settings-vue-settings-apps-users-management.js +++ b/dist/settings-vue-settings-apps-users-management.js @@ -1,3 +1,3 @@ -/*! For license information please see settings-vue-settings-apps-users-management.js.license?v=369ea4a2626ed72a9f94 */ -(()=>{var e,r,n,o={31755:(e,r,n)=>{"use strict";n.d(r,{P:()=>q});var o=n(85471),i=n(95353),s=n(59097),a=n(87485),u=n(35810),c=n(85168),p=n(63814),d=n(26287),l=n(15916),h=n(56760);n(51257);const f=function(t){return t.replace(/\/$/,"")},m=()=>(0,h.C)(),g=(t,e)=>d.A.get(f(t),e),v=(t,e)=>d.A.post(f(t),e),y=(t,e)=>d.A.put(f(t),e),b=(t,e)=>d.A.delete(f(t),{params:e});var w=n(36620),A=n(96763);const E=(0,s.c0)("settings").persist(!0).build(),x={id:"",name:"",usercount:0,disabled:0,canAdd:!0,canRemove:!0},_={users:[],groups:[],orderBy:l.q.UserCount,minPasswordLength:0,usersOffset:0,usersLimit:25,disabledUsersOffset:0,disabledUsersLimit:25,userCount:0,showConfig:{showStoragePath:"true"===E.getItem("account_settings__showStoragePath"),showUserBackend:"true"===E.getItem("account_settings__showUserBackend"),showLastLogin:"true"===E.getItem("account_settings__showLastLogin"),showNewUserForm:"true"===E.getItem("account_settings__showNewUserForm"),showLanguages:"true"===E.getItem("account_settings__showLanguages")}},P={appendUsers(t,e){const r=t.users.map((t=>{let{id:e}=t;return e})),n=Object.values(e).filter((t=>{let{id:e}=t;return!r.includes(e)})),o=t.users.concat(n);t.usersOffset+=t.usersLimit,t.users=o},updateDisabledUsers(t,e){t.disabledUsersOffset+=t.disabledUsersLimit},setPasswordPolicyMinLength(t,e){t.minPasswordLength=""!==e?e:0},initGroups(t,e){let{groups:r,orderBy:n,userCount:o}=e;t.groups=r.map((t=>Object.assign({},x,t))),t.orderBy=n,t.userCount=o},addGroup(t,e){let{gid:r,displayName:n}=e;try{if(void 0!==t.groups.find((t=>t.id===r)))return;const e=Object.assign({},x,{id:r,name:n});t.groups.unshift(e)}catch(t){A.error("Can't create group",t)}},renameGroup(t,e){let{gid:r,displayName:n}=e;const o=t.groups.findIndex((t=>t.id===r));if(o>=0){const e=t.groups[o];e.name=n,t.groups.splice(o,1,e)}},removeGroup(t,e){const r=t.groups.findIndex((t=>t.id===e));r>=0&&t.groups.splice(r,1)},addUserGroup(t,e){let{userid:r,gid:n}=e;const o=t.groups.find((t=>t.id===n)),i=t.users.find((t=>t.id===r));o&&i.enabled&&t.userCount>0&&o.usercount++,i.groups.push(n)},removeUserGroup(t,e){let{userid:r,gid:n}=e;const o=t.groups.find((t=>t.id===n)),i=t.users.find((t=>t.id===r));o&&i.enabled&&t.userCount>0&&o.usercount--;const s=i.groups;s.splice(s.indexOf(n),1)},addUserSubAdmin(t,e){let{userid:r,gid:n}=e;t.users.find((t=>t.id===r)).subadmin.push(n)},removeUserSubAdmin(t,e){let{userid:r,gid:n}=e;const o=t.users.find((t=>t.id===r)).subadmin;o.splice(o.indexOf(n),1)},deleteUser(t,e){const r=t.users.findIndex((t=>t.id===e));this.commit("updateUserCounts",{user:t.users[r],actionType:"remove"}),t.users.splice(r,1)},addUserData(t,e){const r=e.data.ocs.data;t.users.unshift(r),this.commit("updateUserCounts",{user:r,actionType:"create"})},enableDisableUser(t,e){let{userid:r,enabled:n}=e;const o=t.users.find((t=>t.id===r));o.enabled=n,this.commit("updateUserCounts",{user:o,actionType:n?"enable":"disable"})},updateUserCounts(t,e){let{user:r,actionType:n}=e;if(0===t.userCount)return;const o=t.groups.find((t=>"disabled"===t.id));switch(n){case"enable":case"disable":o.usercount+=r.enabled?-1:1,t.userCount+=r.enabled?1:-1,r.groups.forEach((e=>{t.groups.find((t=>t.id===e)).disabled+=r.enabled?-1:1}));break;case"create":t.userCount++,r.groups.forEach((e=>{t.groups.find((t=>t.id===e)).usercount++}));break;case"remove":r.enabled?(t.userCount--,r.groups.forEach((e=>{const r=t.groups.find((t=>t.id===e));r?r.usercount--:A.warn("User group "+e+" does not exist during user removal")}))):(o.usercount--,r.groups.forEach((e=>{t.groups.find((t=>t.id===e)).disabled--})));break;default:w.A.error("Unknown action type in updateUserCounts: '".concat(n,"'"))}},setUserData(t,e){let{userid:r,key:n,value:o}=e;if("quota"===n){const e=(0,u.lT)(o,!0);t.users.find((t=>t.id===r))[n][n]=null!==e?e:o}else t.users.find((t=>t.id===r))[n]=o},resetUsers(t){t.users=[],t.usersOffset=0,t.disabledUsersOffset=0},setShowConfig(t,e){let{key:r,value:n}=e;E.setItem("account_settings__".concat(r),JSON.stringify(n)),t.showConfig[r]=n},setGroupSorting(e,r){const n=e.orderBy;e.orderBy=r,d.A.post((0,p.Jv)("/settings/users/preferences/group.sortBy"),{value:String(r)}).catch((r=>{e.orderBy=n,(0,c.Qg)(t("settings","Could not set group sorting")),w.A.error(r)}))}},I={getUsers:t=>t.users,getGroups:t=>t.groups,getSubadminGroups:t=>t.groups.filter((t=>"admin"!==t.id&&"disabled"!==t.id)),getSortedGroups(t){const e=[...t.groups];return t.orderBy===l.q.UserCount?e.sort(((t,e)=>{const r=t.usercount-t.disabled,n=e.usercount-e.disabled;return r<n?1:n<r?-1:t.name.localeCompare(e.name)})):e.sort(((t,e)=>t.name.localeCompare(e.name)))},getGroupSorting:t=>t.orderBy,getPasswordPolicyMinLength:t=>t.minPasswordLength,getUsersOffset:t=>t.usersOffset,getUsersLimit:t=>t.usersLimit,getDisabledUsersOffset:t=>t.disabledUsersOffset,getDisabledUsersLimit:t=>t.disabledUsersLimit,getUserCount:t=>t.userCount,getShowConfig:t=>t.showConfig},L=d.A.CancelToken;let C=null;const U={state:_,mutations:P,getters:I,actions:{searchUsers(t,e){let{offset:r,limit:n,search:o}=e;return o="string"==typeof o?o:"",g((0,p.KT)("cloud/users/details?offset={offset}&limit={limit}&search={search}",{offset:r,limit:n,search:o})).catch((e=>{d.A.isCancel(e)||t.commit("API_FAILURE",e)}))},getUser:(t,e)=>g((0,p.KT)("cloud/users/".concat(e))).catch((e=>{d.A.isCancel(e)||t.commit("API_FAILURE",e)})),getUsers(t,e){let{offset:r,limit:n,search:o,group:i}=e;return C&&C.cancel("Operation canceled by another search request."),C=L.source(),o="string"==typeof o?o:"",o=o.replace(/in:[^\s]+/g,"").trim(),i="string"==typeof i?i:"",""!==i?g((0,p.KT)("cloud/groups/{group}/users/details?offset={offset}&limit={limit}&search={search}",{group:encodeURIComponent(i),offset:r,limit:n,search:o}),{cancelToken:C.token}).then((e=>{const r=Object.keys(e.data.ocs.data.users).length;return r>0&&t.commit("appendUsers",e.data.ocs.data.users),r})).catch((e=>{d.A.isCancel(e)||t.commit("API_FAILURE",e)})):g((0,p.KT)("cloud/users/details?offset={offset}&limit={limit}&search={search}",{offset:r,limit:n,search:o}),{cancelToken:C.token}).then((e=>{const r=Object.keys(e.data.ocs.data.users).length;return r>0&&t.commit("appendUsers",e.data.ocs.data.users),r})).catch((e=>{d.A.isCancel(e)||t.commit("API_FAILURE",e)}))},async getDisabledUsers(t,e){let{offset:r,limit:n}=e;const o=(0,p.KT)("cloud/users/disabled?offset={offset}&limit={limit}",{offset:r,limit:n});try{const e=await g(o),r=Object.keys(e.data.ocs.data.users).length;return r>0&&(t.commit("appendUsers",e.data.ocs.data.users),t.commit("updateDisabledUsers",e.data.ocs.data.users)),r}catch(e){t.commit("API_FAILURE",e)}},getGroups(t,e){let{offset:r,limit:n,search:o}=e;o="string"==typeof o?o:"";const i=-1===n?"":"&limit=".concat(n);return g((0,p.KT)("cloud/groups?offset={offset}&search={search}",{offset:r,search:o})+i).then((e=>Object.keys(e.data.ocs.data.groups).length>0&&(e.data.ocs.data.groups.forEach((function(e){t.commit("addGroup",{gid:e,displayName:e})})),!0))).catch((e=>t.commit("API_FAILURE",e)))},getUsersFromList(t,e){let{offset:r,limit:n,search:o}=e;return o="string"==typeof o?o:"",g((0,p.KT)("cloud/users/details?offset={offset}&limit={limit}&search={search}",{offset:r,limit:n,search:o})).then((e=>Object.keys(e.data.ocs.data.users).length>0&&(t.commit("appendUsers",e.data.ocs.data.users),!0))).catch((e=>t.commit("API_FAILURE",e)))},getUsersFromGroup(t,e){let{groupid:r,offset:n,limit:o}=e;return g((0,p.KT)("cloud/users/{groupId}/details?offset={offset}&limit={limit}",{groupId:encodeURIComponent(r),offset:n,limit:o})).then((e=>t.commit("getUsersFromList",e.data.ocs.data.users))).catch((e=>t.commit("API_FAILURE",e)))},getPasswordPolicyMinLength:t=>!(!(0,a.F)().password_policy||!(0,a.F)().password_policy.minLength)&&(t.commit("setPasswordPolicyMinLength",(0,a.F)().password_policy.minLength),(0,a.F)().password_policy.minLength),addGroup:(t,e)=>m().then((r=>v((0,p.KT)("cloud/groups"),{groupid:e}).then((r=>(t.commit("addGroup",{gid:e,displayName:e}),{gid:e,displayName:e}))).catch((t=>{throw t})))).catch((r=>{throw t.commit("API_FAILURE",{gid:e,error:r}),r})),renameGroup(t,e){let{groupid:r,displayName:n}=e;return m().then((e=>y((0,p.KT)("cloud/groups/{groupId}",{groupId:encodeURIComponent(r)}),{key:"displayname",value:n}).then((e=>(t.commit("renameGroup",{gid:r,displayName:n}),{groupid:r,displayName:n}))).catch((t=>{throw t})))).catch((e=>{throw t.commit("API_FAILURE",{groupid:r,error:e}),e}))},removeGroup:(t,e)=>m().then((r=>b((0,p.KT)("cloud/groups/{groupId}",{groupId:encodeURIComponent(e)})).then((r=>t.commit("removeGroup",e))).catch((t=>{throw t})))).catch((r=>t.commit("API_FAILURE",{gid:e,error:r}))),addUserGroup(t,e){let{userid:r,gid:n}=e;return m().then((e=>v((0,p.KT)("cloud/users/{userid}/groups",{userid:r}),{groupid:n}).then((e=>t.commit("addUserGroup",{userid:r,gid:n}))).catch((t=>{throw t})))).catch((e=>t.commit("API_FAILURE",{userid:r,error:e})))},removeUserGroup(t,e){let{userid:r,gid:n}=e;return m().then((e=>b((0,p.KT)("cloud/users/{userid}/groups",{userid:r}),{groupid:n}).then((e=>t.commit("removeUserGroup",{userid:r,gid:n}))).catch((t=>{throw t})))).catch((e=>{throw t.commit("API_FAILURE",{userid:r,error:e}),e}))},addUserSubAdmin(t,e){let{userid:r,gid:n}=e;return m().then((e=>v((0,p.KT)("cloud/users/{userid}/subadmins",{userid:r}),{groupid:n}).then((e=>t.commit("addUserSubAdmin",{userid:r,gid:n}))).catch((t=>{throw t})))).catch((e=>t.commit("API_FAILURE",{userid:r,error:e})))},removeUserSubAdmin(t,e){let{userid:r,gid:n}=e;return m().then((e=>b((0,p.KT)("cloud/users/{userid}/subadmins",{userid:r}),{groupid:n}).then((e=>t.commit("removeUserSubAdmin",{userid:r,gid:n}))).catch((t=>{throw t})))).catch((e=>t.commit("API_FAILURE",{userid:r,error:e})))},wipeUserDevices:(t,e)=>m().then((t=>v((0,p.KT)("cloud/users/{userid}/wipe",{userid:e})).catch((t=>{throw t})))).catch((r=>t.commit("API_FAILURE",{userid:e,error:r}))),deleteUser:(t,e)=>m().then((r=>b((0,p.KT)("cloud/users/{userid}",{userid:e})).then((r=>t.commit("deleteUser",e))).catch((t=>{throw t})))).catch((r=>t.commit("API_FAILURE",{userid:e,error:r}))),addUser(t,e){let{commit:r,dispatch:n}=t,{userid:o,password:i,displayName:s,email:a,groups:u,subadmin:c,quota:d,language:l,manager:h}=e;return m().then((t=>v((0,p.KT)("cloud/users"),{userid:o,password:i,displayName:s,email:a,groups:u,subadmin:c,quota:d,language:l,manager:h}).then((t=>n("addUserData",o||t.data.ocs.data.id))).catch((t=>{throw t})))).catch((t=>{throw r("API_FAILURE",{userid:o,error:t}),t}))},addUserData:(t,e)=>m().then((r=>g((0,p.KT)("cloud/users/{userid}",{userid:e})).then((e=>t.commit("addUserData",e))).catch((t=>{throw t})))).catch((r=>t.commit("API_FAILURE",{userid:e,error:r}))),enableDisableUser(t,e){let{userid:r,enabled:n=!0}=e;const o=n?"enable":"disable";return m().then((e=>y((0,p.KT)("cloud/users/{userid}/{userStatus}",{userid:r,userStatus:o})).then((e=>t.commit("enableDisableUser",{userid:r,enabled:n}))).catch((t=>{throw t})))).catch((e=>t.commit("API_FAILURE",{userid:r,error:e})))},setUserData(t,e){let{userid:r,key:n,value:o}=e;const i=["email","displayname","manager"];return-1!==["email","language","quota","displayname","password","manager"].indexOf(n)&&"string"==typeof o&&(-1===i.indexOf(n)&&o.length>0||-1!==i.indexOf(n))?m().then((e=>y((0,p.KT)("cloud/users/{userid}",{userid:r}),{key:n,value:o}).then((e=>t.commit("setUserData",{userid:r,key:n,value:o}))).catch((t=>{throw t})))).catch((e=>t.commit("API_FAILURE",{userid:r,error:e}))):Promise.reject(new Error("Invalid request data"))},sendWelcomeMail:(t,e)=>m().then((t=>v((0,p.KT)("cloud/users/{userid}/welcome",{userid:e})).then((t=>!0)).catch((t=>{throw t})))).catch((r=>t.commit("API_FAILURE",{userid:e,error:r})))}};var R=n(38613),N=n(96763);const O={APPS_API_FAILURE(e,r){(0,c.Qg)(t("settings","An error occurred during the request. Unable to proceed.")+"<br>"+r.error.response.data.data.message,{isHTML:!0}),N.error(e,r)},initCategories(t,e){let{categories:r,updateCount:n}=e;t.categories=r,t.updateCount=n},updateCategories(t,e){t.gettingCategoriesPromise=e},setUpdateCount(t,e){t.updateCount=e},addCategory(t,e){t.categories.push(e)},appendCategories(t,e){t.categories=e},setAllApps(t,e){t.apps=e},setError(t,e){let{appId:r,error:n}=e;Array.isArray(r)||(r=[r]),r.forEach((e=>{t.apps.find((t=>t.id===e)).error=n}))},clearError(t,e){let{appId:r,error:n}=e;t.apps.find((t=>t.id===r)).error=null},enableApp(t,e){let{appId:r,groups:n}=e;const o=t.apps.find((t=>t.id===r));o.active=!0,o.groups=n},setInstallState(t,e){let{appId:r,canInstall:n}=e;const o=t.apps.find((t=>t.id===r));o&&(o.canInstall=!0===n)},disableApp(t,e){const r=t.apps.find((t=>t.id===e));r.active=!1,r.groups=[],r.removable&&(r.canUnInstall=!0)},uninstallApp(t,e){t.apps.find((t=>t.id===e)).active=!1,t.apps.find((t=>t.id===e)).groups=[],t.apps.find((t=>t.id===e)).needsDownload=!0,t.apps.find((t=>t.id===e)).installed=!1,t.apps.find((t=>t.id===e)).canUnInstall=!1,t.apps.find((t=>t.id===e)).canInstall=!0},updateApp(t,e){const r=t.apps.find((t=>t.id===e)),n=r.update;r.update=null,r.version=n,t.updateCount--},resetApps(t){t.apps=[]},reset(t){t.apps=[],t.categories=[],t.updateCount=0},startLoading(t,e){Array.isArray(e)?e.forEach((e=>{o.Ay.set(t.loading,e,!0)})):o.Ay.set(t.loading,e,!0)},stopLoading(t,e){Array.isArray(e)?e.forEach((e=>{o.Ay.set(t.loading,e,!1)})):o.Ay.set(t.loading,e,!1)}},k={enableApp(e,r){let n,{appId:o,groups:i}=r;return n=Array.isArray(o)?o:[o],m().then((r=>(e.commit("startLoading",n),e.commit("startLoading","install"),v((0,p.Jv)("settings/apps/enable"),{appIds:n,groups:i}).then((r=>(e.commit("stopLoading",n),e.commit("stopLoading","install"),n.forEach((t=>{e.commit("enableApp",{appId:t,groups:i})})),g((0,p.Jv)("apps/files/")).then((()=>{r.data.update_required&&((0,c.cf)(t("settings","The app has been enabled but needs to be updated. You will be redirected to the update page in 5 seconds."),{onClick:()=>window.location.reload(),close:!1}),setTimeout((function(){location.reload()}),5e3))})).catch((()=>{Array.isArray(o)||((0,c.Qg)(t("settings","Error: This app cannot be enabled because it makes the server unstable")),e.commit("setError",{appId:n,error:t("settings","Error: This app cannot be enabled because it makes the server unstable")}),e.dispatch("disableApp",{appId:o}))}))))).catch((t=>{e.commit("stopLoading",n),e.commit("stopLoading","install"),e.commit("setError",{appId:n,error:t.response.data.data.message}),e.commit("APPS_API_FAILURE",{appId:o,error:t})}))))).catch((t=>e.commit("API_FAILURE",{appId:o,error:t})))},forceEnableApp(t,e){let r,{appId:n,groups:o}=e;return r=Array.isArray(n)?n:[n],m().then((()=>(t.commit("startLoading",r),t.commit("startLoading","install"),v((0,p.Jv)("settings/apps/force"),{appId:n}).then((e=>{t.commit("setInstallState",{appId:n,canInstall:!0})})).catch((e=>{t.commit("stopLoading",r),t.commit("stopLoading","install"),t.commit("setError",{appId:r,error:e.response.data.data.message}),t.commit("APPS_API_FAILURE",{appId:n,error:e})})).finally((()=>{t.commit("stopLoading",r),t.commit("stopLoading","install")}))))).catch((e=>t.commit("API_FAILURE",{appId:n,error:e})))},disableApp(t,e){let r,{appId:n}=e;return r=Array.isArray(n)?n:[n],m().then((e=>(t.commit("startLoading",r),v((0,p.Jv)("settings/apps/disable"),{appIds:r}).then((e=>(t.commit("stopLoading",r),r.forEach((e=>{t.commit("disableApp",e)})),!0))).catch((e=>{t.commit("stopLoading",r),t.commit("APPS_API_FAILURE",{appId:n,error:e})}))))).catch((e=>t.commit("API_FAILURE",{appId:n,error:e})))},uninstallApp(t,e){let{appId:r}=e;return m().then((e=>(t.commit("startLoading",r),g((0,p.Jv)("settings/apps/uninstall/".concat(r))).then((e=>(t.commit("stopLoading",r),t.commit("uninstallApp",r),!0))).catch((e=>{t.commit("stopLoading",r),t.commit("APPS_API_FAILURE",{appId:r,error:e})}))))).catch((e=>t.commit("API_FAILURE",{appId:r,error:e})))},updateApp(t,e){let{appId:r}=e;return m().then((e=>(t.commit("startLoading",r),t.commit("startLoading","install"),g((0,p.Jv)("settings/apps/update/".concat(r))).then((e=>(t.commit("stopLoading","install"),t.commit("stopLoading",r),t.commit("updateApp",r),!0))).catch((e=>{t.commit("stopLoading",r),t.commit("stopLoading","install"),t.commit("APPS_API_FAILURE",{appId:r,error:e})}))))).catch((e=>t.commit("API_FAILURE",{appId:r,error:e})))},getAllApps:t=>(t.commit("startLoading","list"),g((0,p.Jv)("settings/apps/list")).then((e=>(t.commit("setAllApps",e.data.apps),t.commit("stopLoading","list"),!0))).catch((e=>t.commit("API_FAILURE",e)))),async getCategories(t){let{shouldRefetchCategories:e=!1}=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(e||!t.state.gettingCategoriesPromise){t.commit("startLoading","categories");try{const e=g((0,p.Jv)("settings/apps/categories"));t.commit("updateCategories",e);const r=await e;return r.data.length>0?(t.commit("appendCategories",r.data),t.commit("stopLoading","categories"),!0):(t.commit("stopLoading","categories"),!1)}catch(e){t.commit("API_FAILURE",e)}}return t.state.gettingCategoriesPromise}},T={state:{apps:[],bundles:(0,R.C)("settings","appstoreBundles",[]),categories:[],updateCount:(0,R.C)("settings","appstoreUpdateCount",0),loading:{},gettingCategoriesPromise:null},mutations:O,getters:{loading:t=>function(e){return t.loading[e]},getCategories:t=>t.categories,getAllApps:t=>t.apps,getAppBundles:t=>t.bundles,getUpdateCount:t=>t.updateCount,getCategoryById:t=>e=>t.categories.find((t=>t.id===e))},actions:k},S={setServerData(t,e){t.serverData=e}},j={state:{serverData:(0,R.C)("settings","usersSettings",{})},mutations:S,getters:{getServerData:t=>t.serverData},actions:{}},F={state:{},mutations:{},getters:{},actions:{setAppConfig(t,e){let{app:r,key:n,value:o}=e;return m().then((t=>v((0,p.KT)("apps/provisioning_api/api/v1/config/apps/{app}/{key}",{app:r,key:n}),{value:o}).catch((t=>{throw t})))).catch((e=>t.commit("API_FAILURE",{app:r,key:n,value:o,error:e})))}}};var $=n(96763);o.Ay.use(i.Ay);const D={API_FAILURE(e,r){try{const e=r.error.response.data.ocs.meta.message;(0,c.Qg)(t("settings","An error occurred during the request. Unable to proceed.")+"<br>"+e,{isHTML:!0})}catch(e){(0,c.Qg)(t("settings","An error occurred during the request. Unable to proceed."))}$.error(e,r)}};let B=null;const q=()=>(null===B&&(B=new i.il({modules:{users:U,apps:T,settings:j,oc:F},strict:!1,mutations:D})),B)},15916:(t,e,r)=>{"use strict";var n;r.d(e,{q:()=>n}),function(t){t[t.UserCount=1]="UserCount",t[t.GroupName=2]="GroupName"}(n||(n={}))},36620:(t,e,r)=>{"use strict";r.d(e,{A:()=>n});const n=(0,r(53529).YK)().setApp("settings").detectUser().build()},74329:(t,e,r)=>{"use strict";var n=r(85471),o=r(80284),i=r(58723),s=r(53334),a=r(22378);const u=(0,n.pM)({__name:"SettingsApp",setup:t=>({__sfc:!0,NcContent:a.A})}),c=(0,r(14486).A)(u,(function(){var t=this,e=t._self._c;return e(t._self._setupProxy.NcContent,{attrs:{"app-name":"settings"}},[e("router-view",{attrs:{name:"navigation"}}),t._v(" "),e("router-view"),t._v(" "),e("router-view",{attrs:{name:"sidebar"}})],1)}),[],!1,null,null,null).exports;var p=r(40173),d=r(63814);const l=[{name:"users",path:"/:index(index.php/)?settings/users",components:{default:()=>Promise.all([r.e(4208),r.e(1439),r.e(3239)]).then(r.bind(r,91827)),navigation:()=>Promise.all([r.e(4208),r.e(1439),r.e(3239)]).then(r.bind(r,38250))},props:!0,children:[{path:":selectedGroup",name:"group"}]},{path:"/:index(index.php/)?settings/apps",name:"apps",redirect:{name:"apps-category",params:{category:"discover"}},components:{default:()=>Promise.all([r.e(4208),r.e(1439),r.e(4529)]).then(r.bind(r,4790)),navigation:()=>Promise.all([r.e(4208),r.e(1439),r.e(4529)]).then(r.bind(r,12336)),sidebar:()=>Promise.all([r.e(4208),r.e(1439),r.e(4529)]).then(r.bind(r,83625))},children:[{path:":category",name:"apps-category",children:[{path:":id",name:"apps-details"}]}]}];n.Ay.use(p.Ay);const h=new p.Ay({mode:"history",base:(0,d.Jv)(""),linkActiveClass:"active",routes:l});var f,m=r(31755),g=r(92457),v=r(65899);n.Ay.use(o.Ay,{defaultHtml:!1});const y=(0,m.P)();(0,i.O)(y,h),r.nc=btoa(null!==(f=(0,g.do)())&&void 0!==f?f:""),n.Ay.prototype.t=s.Tl,n.Ay.prototype.n=s.zw,n.Ay.use(v.R2);const b=(0,v.Ey)();new n.Ay({router:h,store:y,pinia:b,render:t=>t(c),el:"#content"})},40173:(t,e,r)=>{"use strict";r.d(e,{Ay:()=>Vt,Wk:()=>K});var n=r(96763);function o(t,e){for(var r in e)t[r]=e[r];return t}var i=/[!'()*]/g,s=function(t){return"%"+t.charCodeAt(0).toString(16)},a=/%2C/g,u=function(t){return encodeURIComponent(t).replace(i,s).replace(a,",")};function c(t){try{return decodeURIComponent(t)}catch(t){}return t}var p=function(t){return null==t||"object"==typeof t?t:String(t)};function d(t){var e={};return(t=t.trim().replace(/^(\?|#|&)/,""))?(t.split("&").forEach((function(t){var r=t.replace(/\+/g," ").split("="),n=c(r.shift()),o=r.length>0?c(r.join("=")):null;void 0===e[n]?e[n]=o:Array.isArray(e[n])?e[n].push(o):e[n]=[e[n],o]})),e):e}function l(t){var e=t?Object.keys(t).map((function(e){var r=t[e];if(void 0===r)return"";if(null===r)return u(e);if(Array.isArray(r)){var n=[];return r.forEach((function(t){void 0!==t&&(null===t?n.push(u(e)):n.push(u(e)+"="+u(t)))})),n.join("&")}return u(e)+"="+u(r)})).filter((function(t){return t.length>0})).join("&"):null;return e?"?"+e:""}var h=/\/?$/;function f(t,e,r,n){var o=n&&n.options.stringifyQuery,i=e.query||{};try{i=m(i)}catch(t){}var s={name:e.name||t&&t.name,meta:t&&t.meta||{},path:e.path||"/",hash:e.hash||"",query:i,params:e.params||{},fullPath:y(e,o),matched:t?v(t):[]};return r&&(s.redirectedFrom=y(r,o)),Object.freeze(s)}function m(t){if(Array.isArray(t))return t.map(m);if(t&&"object"==typeof t){var e={};for(var r in t)e[r]=m(t[r]);return e}return t}var g=f(null,{path:"/"});function v(t){for(var e=[];t;)e.unshift(t),t=t.parent;return e}function y(t,e){var r=t.path,n=t.query;void 0===n&&(n={});var o=t.hash;return void 0===o&&(o=""),(r||"/")+(e||l)(n)+o}function b(t,e,r){return e===g?t===e:!!e&&(t.path&&e.path?t.path.replace(h,"")===e.path.replace(h,"")&&(r||t.hash===e.hash&&w(t.query,e.query)):!(!t.name||!e.name)&&t.name===e.name&&(r||t.hash===e.hash&&w(t.query,e.query)&&w(t.params,e.params)))}function w(t,e){if(void 0===t&&(t={}),void 0===e&&(e={}),!t||!e)return t===e;var r=Object.keys(t).sort(),n=Object.keys(e).sort();return r.length===n.length&&r.every((function(r,o){var i=t[r];if(n[o]!==r)return!1;var s=e[r];return null==i||null==s?i===s:"object"==typeof i&&"object"==typeof s?w(i,s):String(i)===String(s)}))}function A(t){for(var e=0;e<t.matched.length;e++){var r=t.matched[e];for(var n in r.instances){var o=r.instances[n],i=r.enteredCbs[n];if(o&&i){delete r.enteredCbs[n];for(var s=0;s<i.length;s++)o._isBeingDestroyed||i[s](o)}}}}var E={name:"RouterView",functional:!0,props:{name:{type:String,default:"default"}},render:function(t,e){var r=e.props,n=e.children,i=e.parent,s=e.data;s.routerView=!0;for(var a=i.$createElement,u=r.name,c=i.$route,p=i._routerViewCache||(i._routerViewCache={}),d=0,l=!1;i&&i._routerRoot!==i;){var h=i.$vnode?i.$vnode.data:{};h.routerView&&d++,h.keepAlive&&i._directInactive&&i._inactive&&(l=!0),i=i.$parent}if(s.routerViewDepth=d,l){var f=p[u],m=f&&f.component;return m?(f.configProps&&x(m,s,f.route,f.configProps),a(m,s,n)):a()}var g=c.matched[d],v=g&&g.components[u];if(!g||!v)return p[u]=null,a();p[u]={component:v},s.registerRouteInstance=function(t,e){var r=g.instances[u];(e&&r!==t||!e&&r===t)&&(g.instances[u]=e)},(s.hook||(s.hook={})).prepatch=function(t,e){g.instances[u]=e.componentInstance},s.hook.init=function(t){t.data.keepAlive&&t.componentInstance&&t.componentInstance!==g.instances[u]&&(g.instances[u]=t.componentInstance),A(c)};var y=g.props&&g.props[u];return y&&(o(p[u],{route:c,configProps:y}),x(v,s,c,y)),a(v,s,n)}};function x(t,e,r,n){var i=e.props=function(t,e){switch(typeof e){case"undefined":return;case"object":return e;case"function":return e(t);case"boolean":return e?t.params:void 0}}(r,n);if(i){i=e.props=o({},i);var s=e.attrs=e.attrs||{};for(var a in i)t.props&&a in t.props||(s[a]=i[a],delete i[a])}}function _(t,e,r){var n=t.charAt(0);if("/"===n)return t;if("?"===n||"#"===n)return e+t;var o=e.split("/");r&&o[o.length-1]||o.pop();for(var i=t.replace(/^\//,"").split("/"),s=0;s<i.length;s++){var a=i[s];".."===a?o.pop():"."!==a&&o.push(a)}return""!==o[0]&&o.unshift(""),o.join("/")}function P(t){return t.replace(/\/(?:\s*\/)+/g,"/")}var I=Array.isArray||function(t){return"[object Array]"==Object.prototype.toString.call(t)},L=function t(e,r,n){return I(r)||(n=r||n,r=[]),n=n||{},e instanceof RegExp?function(t,e){var r=t.source.match(/\((?!\?)/g);if(r)for(var n=0;n<r.length;n++)e.push({name:n,prefix:null,delimiter:null,optional:!1,repeat:!1,partial:!1,asterisk:!1,pattern:null});return F(t,e)}(e,r):I(e)?function(e,r,n){for(var o=[],i=0;i<e.length;i++)o.push(t(e[i],r,n).source);return F(new RegExp("(?:"+o.join("|")+")",$(n)),r)}(e,r,n):function(t,e,r){return D(O(t,r),e,r)}(e,r,n)},C=O,U=T,R=D,N=new RegExp(["(\\\\.)","([\\/.])?(?:(?:\\:(\\w+)(?:\\(((?:\\\\.|[^\\\\()])+)\\))?|\\(((?:\\\\.|[^\\\\()])+)\\))([+*?])?|(\\*))"].join("|"),"g");function O(t,e){for(var r,n=[],o=0,i=0,s="",a=e&&e.delimiter||"/";null!=(r=N.exec(t));){var u=r[0],c=r[1],p=r.index;if(s+=t.slice(i,p),i=p+u.length,c)s+=c[1];else{var d=t[i],l=r[2],h=r[3],f=r[4],m=r[5],g=r[6],v=r[7];s&&(n.push(s),s="");var y=null!=l&&null!=d&&d!==l,b="+"===g||"*"===g,w="?"===g||"*"===g,A=r[2]||a,E=f||m;n.push({name:h||o++,prefix:l||"",delimiter:A,optional:w,repeat:b,partial:y,asterisk:!!v,pattern:E?j(E):v?".*":"[^"+S(A)+"]+?"})}}return i<t.length&&(s+=t.substr(i)),s&&n.push(s),n}function k(t){return encodeURI(t).replace(/[\/?#]/g,(function(t){return"%"+t.charCodeAt(0).toString(16).toUpperCase()}))}function T(t,e){for(var r=new Array(t.length),n=0;n<t.length;n++)"object"==typeof t[n]&&(r[n]=new RegExp("^(?:"+t[n].pattern+")$",$(e)));return function(e,n){for(var o="",i=e||{},s=(n||{}).pretty?k:encodeURIComponent,a=0;a<t.length;a++){var u=t[a];if("string"!=typeof u){var c,p=i[u.name];if(null==p){if(u.optional){u.partial&&(o+=u.prefix);continue}throw new TypeError('Expected "'+u.name+'" to be defined')}if(I(p)){if(!u.repeat)throw new TypeError('Expected "'+u.name+'" to not repeat, but received `'+JSON.stringify(p)+"`");if(0===p.length){if(u.optional)continue;throw new TypeError('Expected "'+u.name+'" to not be empty')}for(var d=0;d<p.length;d++){if(c=s(p[d]),!r[a].test(c))throw new TypeError('Expected all "'+u.name+'" to match "'+u.pattern+'", but received `'+JSON.stringify(c)+"`");o+=(0===d?u.prefix:u.delimiter)+c}}else{if(c=u.asterisk?encodeURI(p).replace(/[?#]/g,(function(t){return"%"+t.charCodeAt(0).toString(16).toUpperCase()})):s(p),!r[a].test(c))throw new TypeError('Expected "'+u.name+'" to match "'+u.pattern+'", but received "'+c+'"');o+=u.prefix+c}}else o+=u}return o}}function S(t){return t.replace(/([.+*?=^!:${}()[\]|\/\\])/g,"\\$1")}function j(t){return t.replace(/([=!:$\/()])/g,"\\$1")}function F(t,e){return t.keys=e,t}function $(t){return t&&t.sensitive?"":"i"}function D(t,e,r){I(e)||(r=e||r,e=[]);for(var n=(r=r||{}).strict,o=!1!==r.end,i="",s=0;s<t.length;s++){var a=t[s];if("string"==typeof a)i+=S(a);else{var u=S(a.prefix),c="(?:"+a.pattern+")";e.push(a),a.repeat&&(c+="(?:"+u+c+")*"),i+=c=a.optional?a.partial?u+"("+c+")?":"(?:"+u+"("+c+"))?":u+"("+c+")"}}var p=S(r.delimiter||"/"),d=i.slice(-p.length)===p;return n||(i=(d?i.slice(0,-p.length):i)+"(?:"+p+"(?=$))?"),i+=o?"$":n&&d?"":"(?="+p+"|$)",F(new RegExp("^"+i,$(r)),e)}L.parse=C,L.compile=function(t,e){return T(O(t,e),e)},L.tokensToFunction=U,L.tokensToRegExp=R;var B=Object.create(null);function q(t,e,r){e=e||{};try{var n=B[t]||(B[t]=L.compile(t));return"string"==typeof e.pathMatch&&(e[0]=e.pathMatch),n(e,{pretty:!0})}catch(t){return""}finally{delete e[0]}}function G(t,e,r,n){var i="string"==typeof t?{path:t}:t;if(i._normalized)return i;if(i.name){var s=(i=o({},t)).params;return s&&"object"==typeof s&&(i.params=o({},s)),i}if(!i.path&&i.params&&e){(i=o({},i))._normalized=!0;var a=o(o({},e.params),i.params);if(e.name)i.name=e.name,i.params=a;else if(e.matched.length){var u=e.matched[e.matched.length-1].path;i.path=q(u,a,e.path)}return i}var c=function(t){var e="",r="",n=t.indexOf("#");n>=0&&(e=t.slice(n),t=t.slice(0,n));var o=t.indexOf("?");return o>=0&&(r=t.slice(o+1),t=t.slice(0,o)),{path:t,query:r,hash:e}}(i.path||""),l=e&&e.path||"/",h=c.path?_(c.path,l,r||i.append):l,f=function(t,e,r){void 0===e&&(e={});var n,o=r||d;try{n=o(t||"")}catch(t){n={}}for(var i in e){var s=e[i];n[i]=Array.isArray(s)?s.map(p):p(s)}return n}(c.query,i.query,n&&n.options.parseQuery),m=i.hash||c.hash;return m&&"#"!==m.charAt(0)&&(m="#"+m),{_normalized:!0,path:h,query:f,hash:m}}var M,V=function(){},K={name:"RouterLink",props:{to:{type:[String,Object],required:!0},tag:{type:String,default:"a"},custom:Boolean,exact:Boolean,exactPath:Boolean,append:Boolean,replace:Boolean,activeClass:String,exactActiveClass:String,ariaCurrentValue:{type:String,default:"page"},event:{type:[String,Array],default:"click"}},render:function(t){var e=this,r=this.$router,n=this.$route,i=r.resolve(this.to,n,this.append),s=i.location,a=i.route,u=i.href,c={},p=r.options.linkActiveClass,d=r.options.linkExactActiveClass,l=null==p?"router-link-active":p,m=null==d?"router-link-exact-active":d,g=null==this.activeClass?l:this.activeClass,v=null==this.exactActiveClass?m:this.exactActiveClass,y=a.redirectedFrom?f(null,G(a.redirectedFrom),null,r):a;c[v]=b(n,y,this.exactPath),c[g]=this.exact||this.exactPath?c[v]:function(t,e){return 0===t.path.replace(h,"/").indexOf(e.path.replace(h,"/"))&&(!e.hash||t.hash===e.hash)&&function(t,e){for(var r in e)if(!(r in t))return!1;return!0}(t.query,e.query)}(n,y);var w=c[v]?this.ariaCurrentValue:null,A=function(t){H(t)&&(e.replace?r.replace(s,V):r.push(s,V))},E={click:H};Array.isArray(this.event)?this.event.forEach((function(t){E[t]=A})):E[this.event]=A;var x={class:c},_=!this.$scopedSlots.$hasNormal&&this.$scopedSlots.default&&this.$scopedSlots.default({href:u,route:a,navigate:A,isActive:c[g],isExactActive:c[v]});if(_){if(1===_.length)return _[0];if(_.length>1||!_.length)return 0===_.length?t():t("span",{},_)}if("a"===this.tag)x.on=E,x.attrs={href:u,"aria-current":w};else{var P=z(this.$slots.default);if(P){P.isStatic=!1;var I=P.data=o({},P.data);for(var L in I.on=I.on||{},I.on){var C=I.on[L];L in E&&(I.on[L]=Array.isArray(C)?C:[C])}for(var U in E)U in I.on?I.on[U].push(E[U]):I.on[U]=A;var R=P.data.attrs=o({},P.data.attrs);R.href=u,R["aria-current"]=w}else x.on=E}return t(this.tag,x,this.$slots.default)}};function H(t){if(!(t.metaKey||t.altKey||t.ctrlKey||t.shiftKey||t.defaultPrevented||void 0!==t.button&&0!==t.button)){if(t.currentTarget&&t.currentTarget.getAttribute){var e=t.currentTarget.getAttribute("target");if(/\b_blank\b/i.test(e))return}return t.preventDefault&&t.preventDefault(),!0}}function z(t){if(t)for(var e,r=0;r<t.length;r++){if("a"===(e=t[r]).tag)return e;if(e.children&&(e=z(e.children)))return e}}var J="undefined"!=typeof window;function W(t,e,r,n,o){var i=e||[],s=r||Object.create(null),a=n||Object.create(null);t.forEach((function(t){Q(i,s,a,t,o)}));for(var u=0,c=i.length;u<c;u++)"*"===i[u]&&(i.push(i.splice(u,1)[0]),c--,u--);return{pathList:i,pathMap:s,nameMap:a}}function Q(t,e,r,n,o,i){var s=n.path,a=n.name,u=n.pathToRegexpOptions||{},c=function(t,e,r){return r||(t=t.replace(/\/$/,"")),"/"===t[0]||null==e?t:P(e.path+"/"+t)}(s,o,u.strict);"boolean"==typeof n.caseSensitive&&(u.sensitive=n.caseSensitive);var p={path:c,regex:Y(c,u),components:n.components||{default:n.component},alias:n.alias?"string"==typeof n.alias?[n.alias]:n.alias:[],instances:{},enteredCbs:{},name:a,parent:o,matchAs:i,redirect:n.redirect,beforeEnter:n.beforeEnter,meta:n.meta||{},props:null==n.props?{}:n.components?n.props:{default:n.props}};if(n.children&&n.children.forEach((function(n){var o=i?P(i+"/"+n.path):void 0;Q(t,e,r,n,p,o)})),e[p.path]||(t.push(p.path),e[p.path]=p),void 0!==n.alias)for(var d=Array.isArray(n.alias)?n.alias:[n.alias],l=0;l<d.length;++l){var h={path:d[l],children:n.children};Q(t,e,r,h,o,p.path||"/")}a&&(r[a]||(r[a]=p))}function Y(t,e){return L(t,[],e)}function X(t,e){var r=W(t),n=r.pathList,o=r.pathMap,i=r.nameMap;function s(t,r,s){var u=G(t,r,!1,e),c=u.name;if(c){var p=i[c];if(!p)return a(null,u);var d=p.regex.keys.filter((function(t){return!t.optional})).map((function(t){return t.name}));if("object"!=typeof u.params&&(u.params={}),r&&"object"==typeof r.params)for(var l in r.params)!(l in u.params)&&d.indexOf(l)>-1&&(u.params[l]=r.params[l]);return u.path=q(p.path,u.params),a(p,u,s)}if(u.path){u.params={};for(var h=0;h<n.length;h++){var f=n[h],m=o[f];if(Z(m.regex,u.path,u.params))return a(m,u,s)}}return a(null,u)}function a(t,r,n){return t&&t.redirect?function(t,r){var n=t.redirect,o="function"==typeof n?n(f(t,r,null,e)):n;if("string"==typeof o&&(o={path:o}),!o||"object"!=typeof o)return a(null,r);var u=o,c=u.name,p=u.path,d=r.query,l=r.hash,h=r.params;if(d=u.hasOwnProperty("query")?u.query:d,l=u.hasOwnProperty("hash")?u.hash:l,h=u.hasOwnProperty("params")?u.params:h,c)return i[c],s({_normalized:!0,name:c,query:d,hash:l,params:h},void 0,r);if(p){var m=function(t,e){return _(t,e.parent?e.parent.path:"/",!0)}(p,t);return s({_normalized:!0,path:q(m,h),query:d,hash:l},void 0,r)}return a(null,r)}(t,n||r):t&&t.matchAs?function(t,e,r){var n=s({_normalized:!0,path:q(r,e.params)});if(n){var o=n.matched,i=o[o.length-1];return e.params=n.params,a(i,e)}return a(null,e)}(0,r,t.matchAs):f(t,r,n,e)}return{match:s,addRoute:function(t,e){var r="object"!=typeof t?i[t]:void 0;W([e||t],n,o,i,r),r&&r.alias.length&&W(r.alias.map((function(t){return{path:t,children:[e]}})),n,o,i,r)},getRoutes:function(){return n.map((function(t){return o[t]}))},addRoutes:function(t){W(t,n,o,i)}}}function Z(t,e,r){var n=e.match(t);if(!n)return!1;if(!r)return!0;for(var o=1,i=n.length;o<i;++o){var s=t.keys[o-1];s&&(r[s.name||"pathMatch"]="string"==typeof n[o]?c(n[o]):n[o])}return!0}var tt=J&&window.performance&&window.performance.now?window.performance:Date;function et(){return tt.now().toFixed(3)}var rt=et();function nt(){return rt}function ot(t){return rt=t}var it=Object.create(null);function st(){"scrollRestoration"in window.history&&(window.history.scrollRestoration="manual");var t=window.location.protocol+"//"+window.location.host,e=window.location.href.replace(t,""),r=o({},window.history.state);return r.key=nt(),window.history.replaceState(r,"",e),window.addEventListener("popstate",ct),function(){window.removeEventListener("popstate",ct)}}function at(t,e,r,n){if(t.app){var o=t.options.scrollBehavior;o&&t.app.$nextTick((function(){var i=function(){var t=nt();if(t)return it[t]}(),s=o.call(t,e,r,n?i:null);s&&("function"==typeof s.then?s.then((function(t){ft(t,i)})).catch((function(t){})):ft(s,i))}))}}function ut(){var t=nt();t&&(it[t]={x:window.pageXOffset,y:window.pageYOffset})}function ct(t){ut(),t.state&&t.state.key&&ot(t.state.key)}function pt(t){return lt(t.x)||lt(t.y)}function dt(t){return{x:lt(t.x)?t.x:window.pageXOffset,y:lt(t.y)?t.y:window.pageYOffset}}function lt(t){return"number"==typeof t}var ht=/^#\d/;function ft(t,e){var r,n="object"==typeof t;if(n&&"string"==typeof t.selector){var o=ht.test(t.selector)?document.getElementById(t.selector.slice(1)):document.querySelector(t.selector);if(o){var i=t.offset&&"object"==typeof t.offset?t.offset:{};e=function(t,e){var r=document.documentElement.getBoundingClientRect(),n=t.getBoundingClientRect();return{x:n.left-r.left-e.x,y:n.top-r.top-e.y}}(o,i={x:lt((r=i).x)?r.x:0,y:lt(r.y)?r.y:0})}else pt(t)&&(e=dt(t))}else n&&pt(t)&&(e=dt(t));e&&("scrollBehavior"in document.documentElement.style?window.scrollTo({left:e.x,top:e.y,behavior:t.behavior}):window.scrollTo(e.x,e.y))}var mt,gt=J&&(-1===(mt=window.navigator.userAgent).indexOf("Android 2.")&&-1===mt.indexOf("Android 4.0")||-1===mt.indexOf("Mobile Safari")||-1!==mt.indexOf("Chrome")||-1!==mt.indexOf("Windows Phone"))&&window.history&&"function"==typeof window.history.pushState;function vt(t,e){ut();var r=window.history;try{if(e){var n=o({},r.state);n.key=nt(),r.replaceState(n,"",t)}else r.pushState({key:ot(et())},"",t)}catch(r){window.location[e?"replace":"assign"](t)}}function yt(t){vt(t,!0)}var bt={redirected:2,aborted:4,cancelled:8,duplicated:16};function wt(t,e){return At(t,e,bt.cancelled,'Navigation cancelled from "'+t.fullPath+'" to "'+e.fullPath+'" with a new navigation.')}function At(t,e,r,n){var o=new Error(n);return o._isRouter=!0,o.from=t,o.to=e,o.type=r,o}var Et=["params","query","hash"];function xt(t){return Object.prototype.toString.call(t).indexOf("Error")>-1}function _t(t,e){return xt(t)&&t._isRouter&&(null==e||t.type===e)}function Pt(t,e,r){var n=function(o){o>=t.length?r():t[o]?e(t[o],(function(){n(o+1)})):n(o+1)};n(0)}function It(t,e){return Lt(t.map((function(t){return Object.keys(t.components).map((function(r){return e(t.components[r],t.instances[r],t,r)}))})))}function Lt(t){return Array.prototype.concat.apply([],t)}var Ct="function"==typeof Symbol&&"symbol"==typeof Symbol.toStringTag;function Ut(t){var e=!1;return function(){for(var r=[],n=arguments.length;n--;)r[n]=arguments[n];if(!e)return e=!0,t.apply(this,r)}}var Rt=function(t,e){this.router=t,this.base=function(t){if(!t)if(J){var e=document.querySelector("base");t=(t=e&&e.getAttribute("href")||"/").replace(/^https?:\/\/[^\/]+/,"")}else t="/";return"/"!==t.charAt(0)&&(t="/"+t),t.replace(/\/$/,"")}(e),this.current=g,this.pending=null,this.ready=!1,this.readyCbs=[],this.readyErrorCbs=[],this.errorCbs=[],this.listeners=[]};function Nt(t,e,r,n){var o=It(t,(function(t,n,o,i){var s=function(t,e){return"function"!=typeof t&&(t=M.extend(t)),t.options[e]}(t,e);if(s)return Array.isArray(s)?s.map((function(t){return r(t,n,o,i)})):r(s,n,o,i)}));return Lt(n?o.reverse():o)}function Ot(t,e){if(e)return function(){return t.apply(e,arguments)}}Rt.prototype.listen=function(t){this.cb=t},Rt.prototype.onReady=function(t,e){this.ready?t():(this.readyCbs.push(t),e&&this.readyErrorCbs.push(e))},Rt.prototype.onError=function(t){this.errorCbs.push(t)},Rt.prototype.transitionTo=function(t,e,r){var n,o=this;try{n=this.router.match(t,this.current)}catch(t){throw this.errorCbs.forEach((function(e){e(t)})),t}var i=this.current;this.confirmTransition(n,(function(){o.updateRoute(n),e&&e(n),o.ensureURL(),o.router.afterHooks.forEach((function(t){t&&t(n,i)})),o.ready||(o.ready=!0,o.readyCbs.forEach((function(t){t(n)})))}),(function(t){r&&r(t),t&&!o.ready&&(_t(t,bt.redirected)&&i===g||(o.ready=!0,o.readyErrorCbs.forEach((function(e){e(t)}))))}))},Rt.prototype.confirmTransition=function(t,e,r){var o=this,i=this.current;this.pending=t;var s,a,u=function(t){!_t(t)&&xt(t)&&(o.errorCbs.length?o.errorCbs.forEach((function(e){e(t)})):n.error(t)),r&&r(t)},c=t.matched.length-1,p=i.matched.length-1;if(b(t,i)&&c===p&&t.matched[c]===i.matched[p])return this.ensureURL(),t.hash&&at(this.router,i,t,!1),u(((a=At(s=i,t,bt.duplicated,'Avoided redundant navigation to current location: "'+s.fullPath+'".')).name="NavigationDuplicated",a));var d,l=function(t,e){var r,n=Math.max(t.length,e.length);for(r=0;r<n&&t[r]===e[r];r++);return{updated:e.slice(0,r),activated:e.slice(r),deactivated:t.slice(r)}}(this.current.matched,t.matched),h=l.updated,f=l.deactivated,m=l.activated,g=[].concat(function(t){return Nt(t,"beforeRouteLeave",Ot,!0)}(f),this.router.beforeHooks,function(t){return Nt(t,"beforeRouteUpdate",Ot)}(h),m.map((function(t){return t.beforeEnter})),(d=m,function(t,e,r){var n=!1,o=0,i=null;It(d,(function(t,e,s,a){if("function"==typeof t&&void 0===t.cid){n=!0,o++;var u,c=Ut((function(e){var n;((n=e).__esModule||Ct&&"Module"===n[Symbol.toStringTag])&&(e=e.default),t.resolved="function"==typeof e?e:M.extend(e),s.components[a]=e,--o<=0&&r()})),p=Ut((function(t){var e="Failed to resolve async component "+a+": "+t;i||(i=xt(t)?t:new Error(e),r(i))}));try{u=t(c,p)}catch(t){p(t)}if(u)if("function"==typeof u.then)u.then(c,p);else{var d=u.component;d&&"function"==typeof d.then&&d.then(c,p)}}})),n||r()})),v=function(e,r){if(o.pending!==t)return u(wt(i,t));try{e(t,i,(function(e){!1===e?(o.ensureURL(!0),u(function(t,e){return At(t,e,bt.aborted,'Navigation aborted from "'+t.fullPath+'" to "'+e.fullPath+'" via a navigation guard.')}(i,t))):xt(e)?(o.ensureURL(!0),u(e)):"string"==typeof e||"object"==typeof e&&("string"==typeof e.path||"string"==typeof e.name)?(u(function(t,e){return At(t,e,bt.redirected,'Redirected when going from "'+t.fullPath+'" to "'+function(t){if("string"==typeof t)return t;if("path"in t)return t.path;var e={};return Et.forEach((function(r){r in t&&(e[r]=t[r])})),JSON.stringify(e,null,2)}(e)+'" via a navigation guard.')}(i,t)),"object"==typeof e&&e.replace?o.replace(e):o.push(e)):r(e)}))}catch(t){u(t)}};Pt(g,v,(function(){var r=function(t){return Nt(t,"beforeRouteEnter",(function(t,e,r,n){return function(t,e,r){return function(n,o,i){return t(n,o,(function(t){"function"==typeof t&&(e.enteredCbs[r]||(e.enteredCbs[r]=[]),e.enteredCbs[r].push(t)),i(t)}))}}(t,r,n)}))}(m);Pt(r.concat(o.router.resolveHooks),v,(function(){if(o.pending!==t)return u(wt(i,t));o.pending=null,e(t),o.router.app&&o.router.app.$nextTick((function(){A(t)}))}))}))},Rt.prototype.updateRoute=function(t){this.current=t,this.cb&&this.cb(t)},Rt.prototype.setupListeners=function(){},Rt.prototype.teardown=function(){this.listeners.forEach((function(t){t()})),this.listeners=[],this.current=g,this.pending=null};var kt=function(t){function e(e,r){t.call(this,e,r),this._startLocation=Tt(this.base)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.setupListeners=function(){var t=this;if(!(this.listeners.length>0)){var e=this.router,r=e.options.scrollBehavior,n=gt&&r;n&&this.listeners.push(st());var o=function(){var r=t.current,o=Tt(t.base);t.current===g&&o===t._startLocation||t.transitionTo(o,(function(t){n&&at(e,t,r,!0)}))};window.addEventListener("popstate",o),this.listeners.push((function(){window.removeEventListener("popstate",o)}))}},e.prototype.go=function(t){window.history.go(t)},e.prototype.push=function(t,e,r){var n=this,o=this.current;this.transitionTo(t,(function(t){vt(P(n.base+t.fullPath)),at(n.router,t,o,!1),e&&e(t)}),r)},e.prototype.replace=function(t,e,r){var n=this,o=this.current;this.transitionTo(t,(function(t){yt(P(n.base+t.fullPath)),at(n.router,t,o,!1),e&&e(t)}),r)},e.prototype.ensureURL=function(t){if(Tt(this.base)!==this.current.fullPath){var e=P(this.base+this.current.fullPath);t?vt(e):yt(e)}},e.prototype.getCurrentLocation=function(){return Tt(this.base)},e}(Rt);function Tt(t){var e=window.location.pathname,r=e.toLowerCase(),n=t.toLowerCase();return!t||r!==n&&0!==r.indexOf(P(n+"/"))||(e=e.slice(t.length)),(e||"/")+window.location.search+window.location.hash}var St=function(t){function e(e,r,n){t.call(this,e,r),n&&function(t){var e=Tt(t);if(!/^\/#/.test(e))return window.location.replace(P(t+"/#"+e)),!0}(this.base)||jt()}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.setupListeners=function(){var t=this;if(!(this.listeners.length>0)){var e=this.router.options.scrollBehavior,r=gt&&e;r&&this.listeners.push(st());var n=function(){var e=t.current;jt()&&t.transitionTo(Ft(),(function(n){r&&at(t.router,n,e,!0),gt||Bt(n.fullPath)}))},o=gt?"popstate":"hashchange";window.addEventListener(o,n),this.listeners.push((function(){window.removeEventListener(o,n)}))}},e.prototype.push=function(t,e,r){var n=this,o=this.current;this.transitionTo(t,(function(t){Dt(t.fullPath),at(n.router,t,o,!1),e&&e(t)}),r)},e.prototype.replace=function(t,e,r){var n=this,o=this.current;this.transitionTo(t,(function(t){Bt(t.fullPath),at(n.router,t,o,!1),e&&e(t)}),r)},e.prototype.go=function(t){window.history.go(t)},e.prototype.ensureURL=function(t){var e=this.current.fullPath;Ft()!==e&&(t?Dt(e):Bt(e))},e.prototype.getCurrentLocation=function(){return Ft()},e}(Rt);function jt(){var t=Ft();return"/"===t.charAt(0)||(Bt("/"+t),!1)}function Ft(){var t=window.location.href,e=t.indexOf("#");return e<0?"":t=t.slice(e+1)}function $t(t){var e=window.location.href,r=e.indexOf("#");return(r>=0?e.slice(0,r):e)+"#"+t}function Dt(t){gt?vt($t(t)):window.location.hash=t}function Bt(t){gt?yt($t(t)):window.location.replace($t(t))}var qt=function(t){function e(e,r){t.call(this,e,r),this.stack=[],this.index=-1}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.push=function(t,e,r){var n=this;this.transitionTo(t,(function(t){n.stack=n.stack.slice(0,n.index+1).concat(t),n.index++,e&&e(t)}),r)},e.prototype.replace=function(t,e,r){var n=this;this.transitionTo(t,(function(t){n.stack=n.stack.slice(0,n.index).concat(t),e&&e(t)}),r)},e.prototype.go=function(t){var e=this,r=this.index+t;if(!(r<0||r>=this.stack.length)){var n=this.stack[r];this.confirmTransition(n,(function(){var t=e.current;e.index=r,e.updateRoute(n),e.router.afterHooks.forEach((function(e){e&&e(n,t)}))}),(function(t){_t(t,bt.duplicated)&&(e.index=r)}))}},e.prototype.getCurrentLocation=function(){var t=this.stack[this.stack.length-1];return t?t.fullPath:"/"},e.prototype.ensureURL=function(){},e}(Rt),Gt=function(t){void 0===t&&(t={}),this.app=null,this.apps=[],this.options=t,this.beforeHooks=[],this.resolveHooks=[],this.afterHooks=[],this.matcher=X(t.routes||[],this);var e=t.mode||"hash";switch(this.fallback="history"===e&&!gt&&!1!==t.fallback,this.fallback&&(e="hash"),J||(e="abstract"),this.mode=e,e){case"history":this.history=new kt(this,t.base);break;case"hash":this.history=new St(this,t.base,this.fallback);break;case"abstract":this.history=new qt(this,t.base)}},Mt={currentRoute:{configurable:!0}};Gt.prototype.match=function(t,e,r){return this.matcher.match(t,e,r)},Mt.currentRoute.get=function(){return this.history&&this.history.current},Gt.prototype.init=function(t){var e=this;if(this.apps.push(t),t.$once("hook:destroyed",(function(){var r=e.apps.indexOf(t);r>-1&&e.apps.splice(r,1),e.app===t&&(e.app=e.apps[0]||null),e.app||e.history.teardown()})),!this.app){this.app=t;var r=this.history;if(r instanceof kt||r instanceof St){var n=function(t){r.setupListeners(),function(t){var n=r.current,o=e.options.scrollBehavior;gt&&o&&"fullPath"in t&&at(e,t,n,!1)}(t)};r.transitionTo(r.getCurrentLocation(),n,n)}r.listen((function(t){e.apps.forEach((function(e){e._route=t}))}))}},Gt.prototype.beforeEach=function(t){return Kt(this.beforeHooks,t)},Gt.prototype.beforeResolve=function(t){return Kt(this.resolveHooks,t)},Gt.prototype.afterEach=function(t){return Kt(this.afterHooks,t)},Gt.prototype.onReady=function(t,e){this.history.onReady(t,e)},Gt.prototype.onError=function(t){this.history.onError(t)},Gt.prototype.push=function(t,e,r){var n=this;if(!e&&!r&&"undefined"!=typeof Promise)return new Promise((function(e,r){n.history.push(t,e,r)}));this.history.push(t,e,r)},Gt.prototype.replace=function(t,e,r){var n=this;if(!e&&!r&&"undefined"!=typeof Promise)return new Promise((function(e,r){n.history.replace(t,e,r)}));this.history.replace(t,e,r)},Gt.prototype.go=function(t){this.history.go(t)},Gt.prototype.back=function(){this.go(-1)},Gt.prototype.forward=function(){this.go(1)},Gt.prototype.getMatchedComponents=function(t){var e=t?t.matched?t:this.resolve(t).route:this.currentRoute;return e?[].concat.apply([],e.matched.map((function(t){return Object.keys(t.components).map((function(e){return t.components[e]}))}))):[]},Gt.prototype.resolve=function(t,e,r){var n=G(t,e=e||this.history.current,r,this),o=this.match(n,e),i=o.redirectedFrom||o.fullPath,s=function(t,e,r){var n="hash"===r?"#"+e:e;return t?P(t+"/"+n):n}(this.history.base,i,this.mode);return{location:n,route:o,href:s,normalizedTo:n,resolved:o}},Gt.prototype.getRoutes=function(){return this.matcher.getRoutes()},Gt.prototype.addRoute=function(t,e){this.matcher.addRoute(t,e),this.history.current!==g&&this.history.transitionTo(this.history.getCurrentLocation())},Gt.prototype.addRoutes=function(t){this.matcher.addRoutes(t),this.history.current!==g&&this.history.transitionTo(this.history.getCurrentLocation())},Object.defineProperties(Gt.prototype,Mt);var Vt=Gt;function Kt(t,e){return t.push(e),function(){var r=t.indexOf(e);r>-1&&t.splice(r,1)}}Gt.install=function t(e){if(!t.installed||M!==e){t.installed=!0,M=e;var r=function(t){return void 0!==t},n=function(t,e){var n=t.$options._parentVnode;r(n)&&r(n=n.data)&&r(n=n.registerRouteInstance)&&n(t,e)};e.mixin({beforeCreate:function(){r(this.$options.router)?(this._routerRoot=this,this._router=this.$options.router,this._router.init(this),e.util.defineReactive(this,"_route",this._router.history.current)):this._routerRoot=this.$parent&&this.$parent._routerRoot||this,n(this,this)},destroyed:function(){n(this)}}),Object.defineProperty(e.prototype,"$router",{get:function(){return this._routerRoot._router}}),Object.defineProperty(e.prototype,"$route",{get:function(){return this._routerRoot._route}}),e.component("RouterView",E),e.component("RouterLink",K);var o=e.config.optionMergeStrategies;o.beforeRouteEnter=o.beforeRouteLeave=o.beforeRouteUpdate=o.created}},Gt.version="3.6.5",Gt.isNavigationFailure=_t,Gt.NavigationFailureType=bt,Gt.START_LOCATION=g,J&&window.Vue&&window.Vue.use(Gt)},58723:(t,e)=>{function r(t,e){var n={name:t.name,path:t.path,hash:t.hash,query:t.query,params:t.params,fullPath:t.fullPath,meta:t.meta};return e&&(n.from=r(e)),Object.freeze(n)}e.O=function(t,e,n){var o=(n||{}).moduleName||"route";t.registerModule(o,{namespaced:!0,state:r(e.currentRoute),mutations:{ROUTE_CHANGED:function(e,n){t.state[o]=r(n.to,n.from)}}});var i,s=!1,a=t.watch((function(t){return t[o]}),(function(t){var r=t.fullPath;r!==i&&(null!=i&&(s=!0,e.push(t)),i=r)}),{sync:!0}),u=e.afterEach((function(e,r){s?s=!1:(i=e.fullPath,t.commit(o+"/ROUTE_CHANGED",{to:e,from:r}))}));return function(){null!=u&&u(),null!=a&&a(),t.unregisterModule(o)}}},35810:(t,e,r)=>{"use strict";r.d(e,{Al:()=>T,H4:()=>O,PY:()=>N,Q$:()=>k,R3:()=>E,VL:()=>A,lJ:()=>R,lT:()=>m,pt:()=>x,v7:()=>f});var n,o=r(92457),i=r(53529),s=r(53334),a=r(43627),u=r(71089),c=r(63814),p=r(44719),d=r(36117);null===(n=(0,o.HW)())?(0,i.YK)().setApp("files").build():(0,i.YK)().setApp("files").setUid(n.uid).build();const l=["B","KB","MB","GB","TB","PB"],h=["B","KiB","MiB","GiB","TiB","PiB"];function f(t,e=!1,r=!1,n=!1){r=r&&!n,"string"==typeof t&&(t=Number(t));let o=t>0?Math.floor(Math.log(t)/Math.log(n?1e3:1024)):0;o=Math.min((r?h.length:l.length)-1,o);const i=r?h[o]:l[o];let a=(t/Math.pow(n?1e3:1024,o)).toFixed(1);return!0===e&&0===o?("0.0"!==a?"< 1 ":"0 ")+(r?h[1]:l[1]):(a=o<2?parseFloat(a).toFixed(0):parseFloat(a).toLocaleString((0,s.lO)()),a+" "+i)}function m(t,e=!1){try{t=`${t}`.toLocaleLowerCase().replaceAll(/\s+/g,"").replaceAll(",",".")}catch{return null}const r=t.match(/^([0-9]*(\.[0-9]*)?)([kmgtp]?)(i?)b?$/);if(null===r||"."===r[1]||""===r[1])return null;const n=`${r[1]}`,o="i"===r[4]||e?1024:1e3;return Math.round(Number.parseFloat(n)*o**{"":0,k:1,m:2,g:3,t:4,p:5,e:6}[r[3]])}var g=(t=>(t[t.NONE=0]="NONE",t[t.CREATE=4]="CREATE",t[t.READ=1]="READ",t[t.UPDATE=2]="UPDATE",t[t.DELETE=8]="DELETE",t[t.SHARE=16]="SHARE",t[t.ALL=31]="ALL",t))(g||{});const v=["d:getcontentlength","d:getcontenttype","d:getetag","d:getlastmodified","d:quota-available-bytes","d:resourcetype","nc:has-preview","nc:is-encrypted","nc:mount-type","oc:comments-unread","oc:favorite","oc:fileid","oc:owner-display-name","oc:owner-id","oc:permissions","oc:size"],y={d:"DAV:",nc:"http://nextcloud.org/ns",oc:"http://owncloud.org/ns",ocs:"http://open-collaboration-services.org/ns"},b=function(){return typeof window._nc_dav_properties>"u"&&(window._nc_dav_properties=[...v]),window._nc_dav_properties.map((t=>`<${t} />`)).join(" ")},w=function(){return typeof window._nc_dav_namespaces>"u"&&(window._nc_dav_namespaces={...y}),Object.keys(window._nc_dav_namespaces).map((t=>`xmlns:${t}="${window._nc_dav_namespaces?.[t]}"`)).join(" ")},A=function(){return`<?xml version="1.0"?>\n\t\t<d:propfind ${w()}>\n\t\t\t<d:prop>\n\t\t\t\t${b()}\n\t\t\t</d:prop>\n\t\t</d:propfind>`},E=function(t){return`<?xml version="1.0" encoding="UTF-8"?>\n<d:searchrequest ${w()}\n\txmlns:ns="https://github.com/icewind1991/SearchDAV/ns">\n\t<d:basicsearch>\n\t\t<d:select>\n\t\t\t<d:prop>\n\t\t\t\t${b()}\n\t\t\t</d:prop>\n\t\t</d:select>\n\t\t<d:from>\n\t\t\t<d:scope>\n\t\t\t\t<d:href>/files/${(0,o.HW)()?.uid}/</d:href>\n\t\t\t\t<d:depth>infinity</d:depth>\n\t\t\t</d:scope>\n\t\t</d:from>\n\t\t<d:where>\n\t\t\t<d:and>\n\t\t\t\t<d:or>\n\t\t\t\t\t<d:not>\n\t\t\t\t\t\t<d:eq>\n\t\t\t\t\t\t\t<d:prop>\n\t\t\t\t\t\t\t\t<d:getcontenttype/>\n\t\t\t\t\t\t\t</d:prop>\n\t\t\t\t\t\t\t<d:literal>httpd/unix-directory</d:literal>\n\t\t\t\t\t\t</d:eq>\n\t\t\t\t\t</d:not>\n\t\t\t\t\t<d:eq>\n\t\t\t\t\t\t<d:prop>\n\t\t\t\t\t\t\t<oc:size/>\n\t\t\t\t\t\t</d:prop>\n\t\t\t\t\t\t<d:literal>0</d:literal>\n\t\t\t\t\t</d:eq>\n\t\t\t\t</d:or>\n\t\t\t\t<d:gt>\n\t\t\t\t\t<d:prop>\n\t\t\t\t\t\t<d:getlastmodified/>\n\t\t\t\t\t</d:prop>\n\t\t\t\t\t<d:literal>${t}</d:literal>\n\t\t\t\t</d:gt>\n\t\t\t</d:and>\n\t\t</d:where>\n\t\t<d:orderby>\n\t\t\t<d:order>\n\t\t\t\t<d:prop>\n\t\t\t\t\t<d:getlastmodified/>\n\t\t\t\t</d:prop>\n\t\t\t\t<d:descending/>\n\t\t\t</d:order>\n\t\t</d:orderby>\n\t\t<d:limit>\n\t\t\t<d:nresults>100</d:nresults>\n\t\t\t<ns:firstresult>0</ns:firstresult>\n\t\t</d:limit>\n\t</d:basicsearch>\n</d:searchrequest>`};var x=(t=>(t.Folder="folder",t.File="file",t))(x||{});const _=function(t,e){return null!==t.match(e)},P=(t,e)=>{if(t.id&&"number"!=typeof t.id)throw new Error("Invalid id type of value");if(!t.source)throw new Error("Missing mandatory source");try{new URL(t.source)}catch{throw new Error("Invalid source format, source must be a valid URL")}if(!t.source.startsWith("http"))throw new Error("Invalid source format, only http(s) is supported");if(t.mtime&&!(t.mtime instanceof Date))throw new Error("Invalid mtime type");if(t.crtime&&!(t.crtime instanceof Date))throw new Error("Invalid crtime type");if(!t.mime||"string"!=typeof t.mime||!t.mime.match(/^[-\w.]+\/[-+\w.]+$/gi))throw new Error("Missing or invalid mandatory mime");if("size"in t&&"number"!=typeof t.size&&void 0!==t.size)throw new Error("Invalid size type");if("permissions"in t&&void 0!==t.permissions&&!("number"==typeof t.permissions&&t.permissions>=g.NONE&&t.permissions<=g.ALL))throw new Error("Invalid permissions");if(t.owner&&null!==t.owner&&"string"!=typeof t.owner)throw new Error("Invalid owner type");if(t.attributes&&"object"!=typeof t.attributes)throw new Error("Invalid attributes type");if(t.root&&"string"!=typeof t.root)throw new Error("Invalid root type");if(t.root&&!t.root.startsWith("/"))throw new Error("Root must start with a leading slash");if(t.root&&!t.source.includes(t.root))throw new Error("Root must be part of the source");if(t.root&&_(t.source,e)){const r=t.source.match(e)[0];if(!t.source.includes((0,a.join)(r,t.root)))throw new Error("The root must be relative to the service. e.g /files/emma")}if(t.status&&!Object.values(I).includes(t.status))throw new Error("Status must be a valid NodeStatus")};var I=(t=>(t.NEW="new",t.FAILED="failed",t.LOADING="loading",t.LOCKED="locked",t))(I||{});class L{_data;_attributes;_knownDavService=/(remote|public)\.php\/(web)?dav/i;constructor(t,e){P(t,e||this._knownDavService),this._data=t;const r={set:(t,e,r)=>(this.updateMtime(),Reflect.set(t,e,r)),deleteProperty:(t,e)=>(this.updateMtime(),Reflect.deleteProperty(t,e))};this._attributes=new Proxy(t.attributes||{},r),delete this._data.attributes,e&&(this._knownDavService=e)}get source(){return this._data.source.replace(/\/$/i,"")}get encodedSource(){const{origin:t}=new URL(this.source);return t+(0,u.O0)(this.source.slice(t.length))}get basename(){return(0,a.basename)(this.source)}get extension(){return(0,a.extname)(this.source)}get dirname(){if(this.root){let t=this.source;this.isDavRessource&&(t=t.split(this._knownDavService).pop());const e=t.indexOf(this.root),r=this.root.replace(/\/$/,"");return(0,a.dirname)(t.slice(e+r.length)||"/")}const t=new URL(this.source);return(0,a.dirname)(t.pathname)}get mime(){return this._data.mime}get mtime(){return this._data.mtime}get crtime(){return this._data.crtime}get size(){return this._data.size}get attributes(){return this._attributes}get permissions(){return null!==this.owner||this.isDavRessource?void 0!==this._data.permissions?this._data.permissions:g.NONE:g.READ}get owner(){return this.isDavRessource?this._data.owner:null}get isDavRessource(){return _(this.source,this._knownDavService)}get root(){return this._data.root?this._data.root.replace(/^(.+)\/$/,"$1"):this.isDavRessource&&(0,a.dirname)(this.source).split(this._knownDavService).pop()||null}get path(){if(this.root){let t=this.source;this.isDavRessource&&(t=t.split(this._knownDavService).pop());const e=t.indexOf(this.root),r=this.root.replace(/\/$/,"");return t.slice(e+r.length)||"/"}return(this.dirname+"/"+this.basename).replace(/\/\//g,"/")}get fileid(){return this._data?.id||this.attributes?.fileid}get status(){return this._data?.status}set status(t){this._data.status=t}move(t){P({...this._data,source:t},this._knownDavService),this._data.source=t,this.updateMtime()}rename(t){if(t.includes("/"))throw new Error("Invalid basename");this.move((0,a.dirname)(this.source)+"/"+t)}updateMtime(){this._data.mtime&&(this._data.mtime=new Date)}}class C extends L{get type(){return x.File}}class U extends L{constructor(t){super({...t,mime:"httpd/unix-directory"})}get type(){return x.Folder}get extension(){return null}get mime(){return"httpd/unix-directory"}}const R=`/files/${(0,o.HW)()?.uid}`,N=(0,c.dC)("dav"),O=function(t=N,e={}){const r=(0,p.UU)(t,{headers:e});function n(t){r.setHeaders({...e,"X-Requested-With":"XMLHttpRequest",requesttoken:t??""})}return(0,o.zo)(n),n((0,o.do)()),(0,p.Gu)().patch("fetch",((t,e)=>{const r=e.headers;return r?.method&&(e.method=r.method,delete r.method),fetch(t,e)})),r},k=(t,e="/",r=R)=>{const n=new AbortController;return new d.CancelablePromise((async(o,i,s)=>{s((()=>n.abort()));try{o((await t.getDirectoryContents(`${r}${e}`,{signal:n.signal,details:!0,data:`<?xml version="1.0"?>\n\t\t<oc:filter-files ${w()}>\n\t\t\t<d:prop>\n\t\t\t\t${b()}\n\t\t\t</d:prop>\n\t\t\t<oc:filter-rules>\n\t\t\t\t<oc:favorite>1</oc:favorite>\n\t\t\t</oc:filter-rules>\n\t\t</oc:filter-files>`,headers:{method:"REPORT"},includeSelf:!0})).data.filter((t=>t.filename!==e)).map((t=>T(t,r))))}catch(t){i(t)}}))},T=function(t,e=R,r=N){const n=(0,o.HW)()?.uid;if(!n)throw new Error("No user id found");const i=t.props,s=function(t=""){let e=g.NONE;return t&&((t.includes("C")||t.includes("K"))&&(e|=g.CREATE),t.includes("G")&&(e|=g.READ),(t.includes("W")||t.includes("N")||t.includes("V"))&&(e|=g.UPDATE),t.includes("D")&&(e|=g.DELETE),t.includes("R")&&(e|=g.SHARE)),e}(i?.permissions),a=(i?.["owner-id"]||n).toString(),u={id:i?.fileid||0,source:`${r}${t.filename}`,mtime:new Date(Date.parse(t.lastmod)),mime:t.mime||"application/octet-stream",size:i?.size||Number.parseInt(i.getcontentlength||"0"),permissions:s,owner:a,root:e,attributes:{...t,...i,hasPreview:i?.["has-preview"]}};return delete u.attributes?.props,"file"===t.type?new C(u):new U(u)};var S={};!function(t){const e=":A-Za-z_\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD",r="["+e+"]["+e+"\\-.\\d\\u00B7\\u0300-\\u036F\\u203F-\\u2040]*",n=new RegExp("^"+r+"$");t.isExist=function(t){return typeof t<"u"},t.isEmptyObject=function(t){return 0===Object.keys(t).length},t.merge=function(t,e,r){if(e){const n=Object.keys(e),o=n.length;for(let i=0;i<o;i++)t[n[i]]="strict"===r?[e[n[i]]]:e[n[i]]}},t.getValue=function(e){return t.isExist(e)?e:""},t.isName=function(t){const e=n.exec(t);return!(null===e||typeof e>"u")},t.getAllMatches=function(t,e){const r=[];let n=e.exec(t);for(;n;){const o=[];o.startIndex=e.lastIndex-n[0].length;const i=n.length;for(let t=0;t<i;t++)o.push(n[t]);r.push(o),n=e.exec(t)}return r},t.nameRegexp=r}(S);new RegExp("(\\s*)([^\\s=]+)(\\s*=)?(\\s*(['\"])(([\\s\\S])*?)\\5)?","g");var j={};const F={preserveOrder:!1,attributeNamePrefix:"@_",attributesGroupName:!1,textNodeName:"#text",ignoreAttributes:!0,removeNSPrefix:!1,allowBooleanAttributes:!1,parseTagValue:!0,parseAttributeValue:!1,trimValues:!0,cdataPropName:!1,numberParseOptions:{hex:!0,leadingZeros:!0,eNotation:!0},tagValueProcessor:function(t,e){return e},attributeValueProcessor:function(t,e){return e},stopNodes:[],alwaysCreateTextNode:!1,isArray:()=>!1,commentPropName:!1,unpairedTags:[],processEntities:!0,htmlEntities:!1,ignoreDeclaration:!1,ignorePiTags:!1,transformTagName:!1,transformAttributeName:!1,updateTag:function(t,e,r){return t}};j.buildOptions=function(t){return Object.assign({},F,t)},j.defaultOptions=F,!Number.parseInt&&window.parseInt&&(Number.parseInt=window.parseInt),!Number.parseFloat&&window.parseFloat&&(Number.parseFloat=window.parseFloat),new RegExp("([^\\s=]+)\\s*(=\\s*(['\"])([\\s\\S]*?)\\3)?","gm");var $={};function D(t,e,r){let n;const o={};for(let i=0;i<t.length;i++){const s=t[i],a=B(s);let u="";if(u=void 0===r?a:r+"."+a,a===e.textNodeName)void 0===n?n=s[a]:n+=""+s[a];else{if(void 0===a)continue;if(s[a]){let t=D(s[a],e,u);const r=G(t,e);s[":@"]?q(t,s[":@"],u,e):1!==Object.keys(t).length||void 0===t[e.textNodeName]||e.alwaysCreateTextNode?0===Object.keys(t).length&&(e.alwaysCreateTextNode?t[e.textNodeName]="":t=""):t=t[e.textNodeName],void 0!==o[a]&&o.hasOwnProperty(a)?(Array.isArray(o[a])||(o[a]=[o[a]]),o[a].push(t)):e.isArray(a,u,r)?o[a]=[t]:o[a]=t}}}return"string"==typeof n?n.length>0&&(o[e.textNodeName]=n):void 0!==n&&(o[e.textNodeName]=n),o}function B(t){const e=Object.keys(t);for(let t=0;t<e.length;t++){const r=e[t];if(":@"!==r)return r}}function q(t,e,r,n){if(e){const o=Object.keys(e),i=o.length;for(let s=0;s<i;s++){const i=o[s];n.isArray(i,r+"."+i,!0,!0)?t[i]=[e[i]]:t[i]=e[i]}}}function G(t,e){const{textNodeName:r}=e,n=Object.keys(t).length;return!(0!==n&&(1!==n||!t[r]&&"boolean"!=typeof t[r]&&0!==t[r]))}$.prettify=function(t,e){return D(t,e)};const{buildOptions:M}=j,{prettify:V}=$;function K(t,e,r,n){let o="",i=!1;for(let s=0;s<t.length;s++){const a=t[s],u=H(a);if(void 0===u)continue;let c="";if(c=0===r.length?u:`${r}.${u}`,u===e.textNodeName){let t=a[u];J(c,e)||(t=e.tagValueProcessor(u,t),t=W(t,e)),i&&(o+=n),o+=t,i=!1;continue}if(u===e.cdataPropName){i&&(o+=n),o+=`<![CDATA[${a[u][0][e.textNodeName]}]]>`,i=!1;continue}if(u===e.commentPropName){o+=n+`\x3c!--${a[u][0][e.textNodeName]}--\x3e`,i=!0;continue}if("?"===u[0]){const t=z(a[":@"],e),r="?xml"===u?"":n;let s=a[u][0][e.textNodeName];s=0!==s.length?" "+s:"",o+=r+`<${u}${s}${t}?>`,i=!0;continue}let p=n;""!==p&&(p+=e.indentBy);const d=n+`<${u}${z(a[":@"],e)}`,l=K(a[u],e,c,p);-1!==e.unpairedTags.indexOf(u)?e.suppressUnpairedNode?o+=d+">":o+=d+"/>":l&&0!==l.length||!e.suppressEmptyNode?l&&l.endsWith(">")?o+=d+`>${l}${n}</${u}>`:(o+=d+">",l&&""!==n&&(l.includes("/>")||l.includes("</"))?o+=n+e.indentBy+l+n:o+=l,o+=`</${u}>`):o+=d+"/>",i=!0}return o}function H(t){const e=Object.keys(t);for(let r=0;r<e.length;r++){const n=e[r];if(t.hasOwnProperty(n)&&":@"!==n)return n}}function z(t,e){let r="";if(t&&!e.ignoreAttributes)for(let n in t){if(!t.hasOwnProperty(n))continue;let o=e.attributeValueProcessor(n,t[n]);o=W(o,e),!0===o&&e.suppressBooleanAttributes?r+=` ${n.substr(e.attributeNamePrefix.length)}`:r+=` ${n.substr(e.attributeNamePrefix.length)}="${o}"`}return r}function J(t,e){let r=(t=t.substr(0,t.length-e.textNodeName.length-1)).substr(t.lastIndexOf(".")+1);for(let n in e.stopNodes)if(e.stopNodes[n]===t||e.stopNodes[n]==="*."+r)return!0;return!1}function W(t,e){if(t&&t.length>0&&e.processEntities)for(let r=0;r<e.entities.length;r++){const n=e.entities[r];t=t.replace(n.regex,n.val)}return t}const Q=function(t,e){let r="";return e.format&&e.indentBy.length>0&&(r="\n"),K(t,e,"",r)},Y={attributeNamePrefix:"@_",attributesGroupName:!1,textNodeName:"#text",ignoreAttributes:!0,cdataPropName:!1,format:!1,indentBy:" ",suppressEmptyNode:!1,suppressUnpairedNode:!0,suppressBooleanAttributes:!0,tagValueProcessor:function(t,e){return e},attributeValueProcessor:function(t,e){return e},preserveOrder:!1,commentPropName:!1,unpairedTags:[],entities:[{regex:new RegExp("&","g"),val:"&"},{regex:new RegExp(">","g"),val:">"},{regex:new RegExp("<","g"),val:"<"},{regex:new RegExp("'","g"),val:"'"},{regex:new RegExp('"',"g"),val:"""}],processEntities:!0,stopNodes:[],oneListGroup:!1};function X(t){this.options=Object.assign({},Y,t),this.options.ignoreAttributes||this.options.attributesGroupName?this.isAttribute=function(){return!1}:(this.attrPrefixLen=this.options.attributeNamePrefix.length,this.isAttribute=et),this.processTextOrObjNode=Z,this.options.format?(this.indentate=tt,this.tagEndChar=">\n",this.newLine="\n"):(this.indentate=function(){return""},this.tagEndChar=">",this.newLine="")}function Z(t,e,r){const n=this.j2x(t,r+1);return void 0!==t[this.options.textNodeName]&&1===Object.keys(t).length?this.buildTextValNode(t[this.options.textNodeName],e,n.attrStr,r):this.buildObjectNode(n.val,e,n.attrStr,r)}function tt(t){return this.options.indentBy.repeat(t)}function et(t){return!(!t.startsWith(this.options.attributeNamePrefix)||t===this.options.textNodeName)&&t.substr(this.attrPrefixLen)}X.prototype.build=function(t){return this.options.preserveOrder?Q(t,this.options):(Array.isArray(t)&&this.options.arrayNodeName&&this.options.arrayNodeName.length>1&&(t={[this.options.arrayNodeName]:t}),this.j2x(t,0).val)},X.prototype.j2x=function(t,e){let r="",n="";for(let o in t)if(Object.prototype.hasOwnProperty.call(t,o))if(typeof t[o]>"u")this.isAttribute(o)&&(n+="");else if(null===t[o])this.isAttribute(o)?n+="":"?"===o[0]?n+=this.indentate(e)+"<"+o+"?"+this.tagEndChar:n+=this.indentate(e)+"<"+o+"/"+this.tagEndChar;else if(t[o]instanceof Date)n+=this.buildTextValNode(t[o],o,"",e);else if("object"!=typeof t[o]){const i=this.isAttribute(o);if(i)r+=this.buildAttrPairStr(i,""+t[o]);else if(o===this.options.textNodeName){let e=this.options.tagValueProcessor(o,""+t[o]);n+=this.replaceEntitiesValue(e)}else n+=this.buildTextValNode(t[o],o,"",e)}else if(Array.isArray(t[o])){const r=t[o].length;let i="";for(let s=0;s<r;s++){const r=t[o][s];typeof r>"u"||(null===r?"?"===o[0]?n+=this.indentate(e)+"<"+o+"?"+this.tagEndChar:n+=this.indentate(e)+"<"+o+"/"+this.tagEndChar:"object"==typeof r?this.options.oneListGroup?i+=this.j2x(r,e+1).val:i+=this.processTextOrObjNode(r,o,e):i+=this.buildTextValNode(r,o,"",e))}this.options.oneListGroup&&(i=this.buildObjectNode(i,o,"",e)),n+=i}else if(this.options.attributesGroupName&&o===this.options.attributesGroupName){const e=Object.keys(t[o]),n=e.length;for(let i=0;i<n;i++)r+=this.buildAttrPairStr(e[i],""+t[o][e[i]])}else n+=this.processTextOrObjNode(t[o],o,e);return{attrStr:r,val:n}},X.prototype.buildAttrPairStr=function(t,e){return e=this.options.attributeValueProcessor(t,""+e),e=this.replaceEntitiesValue(e),this.options.suppressBooleanAttributes&&"true"===e?" "+t:" "+t+'="'+e+'"'},X.prototype.buildObjectNode=function(t,e,r,n){if(""===t)return"?"===e[0]?this.indentate(n)+"<"+e+r+"?"+this.tagEndChar:this.indentate(n)+"<"+e+r+this.closeTag(e)+this.tagEndChar;{let o="</"+e+this.tagEndChar,i="";return"?"===e[0]&&(i="?",o=""),!r&&""!==r||-1!==t.indexOf("<")?!1!==this.options.commentPropName&&e===this.options.commentPropName&&0===i.length?this.indentate(n)+`\x3c!--${t}--\x3e`+this.newLine:this.indentate(n)+"<"+e+r+i+this.tagEndChar+t+this.indentate(n)+o:this.indentate(n)+"<"+e+r+i+">"+t+o}},X.prototype.closeTag=function(t){let e="";return-1!==this.options.unpairedTags.indexOf(t)?this.options.suppressUnpairedNode||(e="/"):e=this.options.suppressEmptyNode?"/":`></${t}`,e},X.prototype.buildTextValNode=function(t,e,r,n){if(!1!==this.options.cdataPropName&&e===this.options.cdataPropName)return this.indentate(n)+`<![CDATA[${t}]]>`+this.newLine;if(!1!==this.options.commentPropName&&e===this.options.commentPropName)return this.indentate(n)+`\x3c!--${t}--\x3e`+this.newLine;if("?"===e[0])return this.indentate(n)+"<"+e+r+"?"+this.tagEndChar;{let o=this.options.tagValueProcessor(e,t);return o=this.replaceEntitiesValue(o),""===o?this.indentate(n)+"<"+e+r+this.closeTag(e)+this.tagEndChar:this.indentate(n)+"<"+e+r+">"+o+"</"+e+this.tagEndChar}},X.prototype.replaceEntitiesValue=function(t){if(t&&t.length>0&&this.options.processEntities)for(let e=0;e<this.options.entities.length;e++){const r=this.options.entities[e];t=t.replace(r.regex,r.val)}return t}}},i={};function s(t){var e=i[t];if(void 0!==e)return e.exports;var r=i[t]={id:t,loaded:!1,exports:{}};return o[t].call(r.exports,r,r.exports,s),r.loaded=!0,r.exports}s.m=o,e=[],s.O=(t,r,n,o)=>{if(!r){var i=1/0;for(p=0;p<e.length;p++){r=e[p][0],n=e[p][1],o=e[p][2];for(var a=!0,u=0;u<r.length;u++)(!1&o||i>=o)&&Object.keys(s.O).every((t=>s.O[t](r[u])))?r.splice(u--,1):(a=!1,o<i&&(i=o));if(a){e.splice(p--,1);var c=n();void 0!==c&&(t=c)}}return t}o=o||0;for(var p=e.length;p>0&&e[p-1][2]>o;p--)e[p]=e[p-1];e[p]=[r,n,o]},s.n=t=>{var e=t&&t.__esModule?()=>t.default:()=>t;return s.d(e,{a:e}),e},s.d=(t,e)=>{for(var r in e)s.o(e,r)&&!s.o(t,r)&&Object.defineProperty(t,r,{enumerable:!0,get:e[r]})},s.f={},s.e=t=>Promise.all(Object.keys(s.f).reduce(((e,r)=>(s.f[r](t,e),e)),[])),s.u=t=>(({3239:"settings-users",4529:"settings-apps-view"}[t]||t)+"-"+t+".js?v="+{1110:"a5d6e6f59aa058840a1e",1439:"8111a630d23ed528e83e",1544:"339855cf6016c557e17a",3239:"7e3101aa20fe47be15fe",3865:"1b3dd2786e4df4dcbf8d",4529:"2724acfa2ab8a8267428",5455:"8915a218db5b7bc90f34",8630:"eb1ab06c4928352754c5"}[t]),s.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(t){if("object"==typeof window)return window}}(),s.o=(t,e)=>Object.prototype.hasOwnProperty.call(t,e),r={},n="nextcloud:",s.l=(t,e,o,i)=>{if(r[t])r[t].push(e);else{var a,u;if(void 0!==o)for(var c=document.getElementsByTagName("script"),p=0;p<c.length;p++){var d=c[p];if(d.getAttribute("src")==t||d.getAttribute("data-webpack")==n+o){a=d;break}}a||(u=!0,(a=document.createElement("script")).charset="utf-8",a.timeout=120,s.nc&&a.setAttribute("nonce",s.nc),a.setAttribute("data-webpack",n+o),a.src=t),r[t]=[e];var l=(e,n)=>{a.onerror=a.onload=null,clearTimeout(h);var o=r[t];if(delete r[t],a.parentNode&&a.parentNode.removeChild(a),o&&o.forEach((t=>t(n))),e)return e(n)},h=setTimeout(l.bind(null,void 0,{type:"timeout",target:a}),12e4);a.onerror=l.bind(null,a.onerror),a.onload=l.bind(null,a.onload),u&&document.head.appendChild(a)}},s.r=t=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},s.nmd=t=>(t.paths=[],t.children||(t.children=[]),t),s.j=2689,(()=>{var t;s.g.importScripts&&(t=s.g.location+"");var e=s.g.document;if(!t&&e&&(e.currentScript&&(t=e.currentScript.src),!t)){var r=e.getElementsByTagName("script");if(r.length)for(var n=r.length-1;n>-1&&(!t||!/^http(s?):/.test(t));)t=r[n--].src}if(!t)throw new Error("Automatic publicPath is not supported in this browser");t=t.replace(/#.*$/,"").replace(/\?.*$/,"").replace(/\/[^\/]+$/,"/"),s.p=t})(),(()=>{s.b=document.baseURI||self.location.href;var t={2689:0};s.f.j=(e,r)=>{var n=s.o(t,e)?t[e]:void 0;if(0!==n)if(n)r.push(n[2]);else{var o=new Promise(((r,o)=>n=t[e]=[r,o]));r.push(n[2]=o);var i=s.p+s.u(e),a=new Error;s.l(i,(r=>{if(s.o(t,e)&&(0!==(n=t[e])&&(t[e]=void 0),n)){var o=r&&("load"===r.type?"missing":r.type),i=r&&r.target&&r.target.src;a.message="Loading chunk "+e+" failed.\n("+o+": "+i+")",a.name="ChunkLoadError",a.type=o,a.request=i,n[1](a)}}),"chunk-"+e,e)}},s.O.j=e=>0===t[e];var e=(e,r)=>{var n,o,i=r[0],a=r[1],u=r[2],c=0;if(i.some((e=>0!==t[e]))){for(n in a)s.o(a,n)&&(s.m[n]=a[n]);if(u)var p=u(s)}for(e&&e(r);c<i.length;c++)o=i[c],s.o(t,o)&&t[o]&&t[o][0](),t[o]=0;return s.O(p)},r=self.webpackChunknextcloud=self.webpackChunknextcloud||[];r.forEach(e.bind(null,0)),r.push=e.bind(null,r.push.bind(r))})(),s.nc=void 0;var a=s.O(void 0,[4208],(()=>s(74329)));a=s.O(a)})(); -//# sourceMappingURL=settings-vue-settings-apps-users-management.js.map?v=369ea4a2626ed72a9f94
\ No newline at end of file +/*! For license information please see settings-vue-settings-apps-users-management.js.license?v=ffb4d7435d3d155f134e */ +(()=>{var e,r,n,o={31755:(e,r,n)=>{"use strict";n.d(r,{P:()=>q});var o=n(85471),i=n(95353),s=n(59097),a=n(87485),u=n(35810),c=n(85168),p=n(63814),d=n(26287),l=n(15916),h=n(56760);n(51257);const f=function(t){return t.replace(/\/$/,"")},m=()=>(0,h.C)(),g=(t,e)=>d.A.get(f(t),e),v=(t,e)=>d.A.post(f(t),e),y=(t,e)=>d.A.put(f(t),e),b=(t,e)=>d.A.delete(f(t),{params:e});var w=n(36620),A=n(96763);const E=(0,s.c0)("settings").persist(!0).build(),x={id:"",name:"",usercount:0,disabled:0,canAdd:!0,canRemove:!0},_={users:[],groups:[],orderBy:l.q.UserCount,minPasswordLength:0,usersOffset:0,usersLimit:25,disabledUsersOffset:0,disabledUsersLimit:25,userCount:0,showConfig:{showStoragePath:"true"===E.getItem("account_settings__showStoragePath"),showUserBackend:"true"===E.getItem("account_settings__showUserBackend"),showLastLogin:"true"===E.getItem("account_settings__showLastLogin"),showNewUserForm:"true"===E.getItem("account_settings__showNewUserForm"),showLanguages:"true"===E.getItem("account_settings__showLanguages")}},P={appendUsers(t,e){const r=t.users.map((t=>{let{id:e}=t;return e})),n=Object.values(e).filter((t=>{let{id:e}=t;return!r.includes(e)})),o=t.users.concat(n);t.usersOffset+=t.usersLimit,t.users=o},updateDisabledUsers(t,e){t.disabledUsersOffset+=t.disabledUsersLimit},setPasswordPolicyMinLength(t,e){t.minPasswordLength=""!==e?e:0},initGroups(t,e){let{groups:r,orderBy:n,userCount:o}=e;t.groups=r.map((t=>Object.assign({},x,t))),t.orderBy=n,t.userCount=o},addGroup(t,e){let{gid:r,displayName:n}=e;try{if(void 0!==t.groups.find((t=>t.id===r)))return;const e=Object.assign({},x,{id:r,name:n});t.groups.unshift(e)}catch(t){A.error("Can't create group",t)}},renameGroup(t,e){let{gid:r,displayName:n}=e;const o=t.groups.findIndex((t=>t.id===r));if(o>=0){const e=t.groups[o];e.name=n,t.groups.splice(o,1,e)}},removeGroup(t,e){const r=t.groups.findIndex((t=>t.id===e));r>=0&&t.groups.splice(r,1)},addUserGroup(t,e){let{userid:r,gid:n}=e;const o=t.groups.find((t=>t.id===n)),i=t.users.find((t=>t.id===r));o&&i.enabled&&t.userCount>0&&o.usercount++,i.groups.push(n)},removeUserGroup(t,e){let{userid:r,gid:n}=e;const o=t.groups.find((t=>t.id===n)),i=t.users.find((t=>t.id===r));o&&i.enabled&&t.userCount>0&&o.usercount--;const s=i.groups;s.splice(s.indexOf(n),1)},addUserSubAdmin(t,e){let{userid:r,gid:n}=e;t.users.find((t=>t.id===r)).subadmin.push(n)},removeUserSubAdmin(t,e){let{userid:r,gid:n}=e;const o=t.users.find((t=>t.id===r)).subadmin;o.splice(o.indexOf(n),1)},deleteUser(t,e){const r=t.users.findIndex((t=>t.id===e));this.commit("updateUserCounts",{user:t.users[r],actionType:"remove"}),t.users.splice(r,1)},addUserData(t,e){const r=e.data.ocs.data;t.users.unshift(r),this.commit("updateUserCounts",{user:r,actionType:"create"})},enableDisableUser(t,e){let{userid:r,enabled:n}=e;const o=t.users.find((t=>t.id===r));o.enabled=n,this.commit("updateUserCounts",{user:o,actionType:n?"enable":"disable"})},updateUserCounts(t,e){let{user:r,actionType:n}=e;if(0===t.userCount)return;const o=t.groups.find((t=>"disabled"===t.id));switch(n){case"enable":case"disable":o.usercount+=r.enabled?-1:1,t.userCount+=r.enabled?1:-1,r.groups.forEach((e=>{t.groups.find((t=>t.id===e)).disabled+=r.enabled?-1:1}));break;case"create":t.userCount++,r.groups.forEach((e=>{t.groups.find((t=>t.id===e)).usercount++}));break;case"remove":r.enabled?(t.userCount--,r.groups.forEach((e=>{const r=t.groups.find((t=>t.id===e));r?r.usercount--:A.warn("User group "+e+" does not exist during user removal")}))):(o.usercount--,r.groups.forEach((e=>{t.groups.find((t=>t.id===e)).disabled--})));break;default:w.A.error("Unknown action type in updateUserCounts: '".concat(n,"'"))}},setUserData(t,e){let{userid:r,key:n,value:o}=e;if("quota"===n){const e=(0,u.lT)(o,!0);t.users.find((t=>t.id===r))[n][n]=null!==e?e:o}else t.users.find((t=>t.id===r))[n]=o},resetUsers(t){t.users=[],t.usersOffset=0,t.disabledUsersOffset=0},setShowConfig(t,e){let{key:r,value:n}=e;E.setItem("account_settings__".concat(r),JSON.stringify(n)),t.showConfig[r]=n},setGroupSorting(e,r){const n=e.orderBy;e.orderBy=r,d.A.post((0,p.Jv)("/settings/users/preferences/group.sortBy"),{value:String(r)}).catch((r=>{e.orderBy=n,(0,c.Qg)(t("settings","Could not set group sorting")),w.A.error(r)}))}},I={getUsers:t=>t.users,getGroups:t=>t.groups,getSubadminGroups:t=>t.groups.filter((t=>"admin"!==t.id&&"disabled"!==t.id)),getSortedGroups(t){const e=[...t.groups];return t.orderBy===l.q.UserCount?e.sort(((t,e)=>{const r=t.usercount-t.disabled,n=e.usercount-e.disabled;return r<n?1:n<r?-1:t.name.localeCompare(e.name)})):e.sort(((t,e)=>t.name.localeCompare(e.name)))},getGroupSorting:t=>t.orderBy,getPasswordPolicyMinLength:t=>t.minPasswordLength,getUsersOffset:t=>t.usersOffset,getUsersLimit:t=>t.usersLimit,getDisabledUsersOffset:t=>t.disabledUsersOffset,getDisabledUsersLimit:t=>t.disabledUsersLimit,getUserCount:t=>t.userCount,getShowConfig:t=>t.showConfig},L=d.A.CancelToken;let C=null;const U={state:_,mutations:P,getters:I,actions:{searchUsers(t,e){let{offset:r,limit:n,search:o}=e;return o="string"==typeof o?o:"",g((0,p.KT)("cloud/users/details?offset={offset}&limit={limit}&search={search}",{offset:r,limit:n,search:o})).catch((e=>{d.A.isCancel(e)||t.commit("API_FAILURE",e)}))},getUser:(t,e)=>g((0,p.KT)("cloud/users/".concat(e))).catch((e=>{d.A.isCancel(e)||t.commit("API_FAILURE",e)})),getUsers(t,e){let{offset:r,limit:n,search:o,group:i}=e;return C&&C.cancel("Operation canceled by another search request."),C=L.source(),o="string"==typeof o?o:"",o=o.replace(/in:[^\s]+/g,"").trim(),i="string"==typeof i?i:"",""!==i?g((0,p.KT)("cloud/groups/{group}/users/details?offset={offset}&limit={limit}&search={search}",{group:encodeURIComponent(i),offset:r,limit:n,search:o}),{cancelToken:C.token}).then((e=>{const r=Object.keys(e.data.ocs.data.users).length;return r>0&&t.commit("appendUsers",e.data.ocs.data.users),r})).catch((e=>{d.A.isCancel(e)||t.commit("API_FAILURE",e)})):g((0,p.KT)("cloud/users/details?offset={offset}&limit={limit}&search={search}",{offset:r,limit:n,search:o}),{cancelToken:C.token}).then((e=>{const r=Object.keys(e.data.ocs.data.users).length;return r>0&&t.commit("appendUsers",e.data.ocs.data.users),r})).catch((e=>{d.A.isCancel(e)||t.commit("API_FAILURE",e)}))},async getDisabledUsers(t,e){let{offset:r,limit:n}=e;const o=(0,p.KT)("cloud/users/disabled?offset={offset}&limit={limit}",{offset:r,limit:n});try{const e=await g(o),r=Object.keys(e.data.ocs.data.users).length;return r>0&&(t.commit("appendUsers",e.data.ocs.data.users),t.commit("updateDisabledUsers",e.data.ocs.data.users)),r}catch(e){t.commit("API_FAILURE",e)}},getGroups(t,e){let{offset:r,limit:n,search:o}=e;o="string"==typeof o?o:"";const i=-1===n?"":"&limit=".concat(n);return g((0,p.KT)("cloud/groups?offset={offset}&search={search}",{offset:r,search:o})+i).then((e=>Object.keys(e.data.ocs.data.groups).length>0&&(e.data.ocs.data.groups.forEach((function(e){t.commit("addGroup",{gid:e,displayName:e})})),!0))).catch((e=>t.commit("API_FAILURE",e)))},getUsersFromList(t,e){let{offset:r,limit:n,search:o}=e;return o="string"==typeof o?o:"",g((0,p.KT)("cloud/users/details?offset={offset}&limit={limit}&search={search}",{offset:r,limit:n,search:o})).then((e=>Object.keys(e.data.ocs.data.users).length>0&&(t.commit("appendUsers",e.data.ocs.data.users),!0))).catch((e=>t.commit("API_FAILURE",e)))},getUsersFromGroup(t,e){let{groupid:r,offset:n,limit:o}=e;return g((0,p.KT)("cloud/users/{groupId}/details?offset={offset}&limit={limit}",{groupId:encodeURIComponent(r),offset:n,limit:o})).then((e=>t.commit("getUsersFromList",e.data.ocs.data.users))).catch((e=>t.commit("API_FAILURE",e)))},getPasswordPolicyMinLength:t=>!(!(0,a.F)().password_policy||!(0,a.F)().password_policy.minLength)&&(t.commit("setPasswordPolicyMinLength",(0,a.F)().password_policy.minLength),(0,a.F)().password_policy.minLength),addGroup:(t,e)=>m().then((r=>v((0,p.KT)("cloud/groups"),{groupid:e}).then((r=>(t.commit("addGroup",{gid:e,displayName:e}),{gid:e,displayName:e}))).catch((t=>{throw t})))).catch((r=>{throw t.commit("API_FAILURE",{gid:e,error:r}),r})),renameGroup(t,e){let{groupid:r,displayName:n}=e;return m().then((e=>y((0,p.KT)("cloud/groups/{groupId}",{groupId:encodeURIComponent(r)}),{key:"displayname",value:n}).then((e=>(t.commit("renameGroup",{gid:r,displayName:n}),{groupid:r,displayName:n}))).catch((t=>{throw t})))).catch((e=>{throw t.commit("API_FAILURE",{groupid:r,error:e}),e}))},removeGroup:(t,e)=>m().then((r=>b((0,p.KT)("cloud/groups/{groupId}",{groupId:encodeURIComponent(e)})).then((r=>t.commit("removeGroup",e))).catch((t=>{throw t})))).catch((r=>t.commit("API_FAILURE",{gid:e,error:r}))),addUserGroup(t,e){let{userid:r,gid:n}=e;return m().then((e=>v((0,p.KT)("cloud/users/{userid}/groups",{userid:r}),{groupid:n}).then((e=>t.commit("addUserGroup",{userid:r,gid:n}))).catch((t=>{throw t})))).catch((e=>t.commit("API_FAILURE",{userid:r,error:e})))},removeUserGroup(t,e){let{userid:r,gid:n}=e;return m().then((e=>b((0,p.KT)("cloud/users/{userid}/groups",{userid:r}),{groupid:n}).then((e=>t.commit("removeUserGroup",{userid:r,gid:n}))).catch((t=>{throw t})))).catch((e=>{throw t.commit("API_FAILURE",{userid:r,error:e}),e}))},addUserSubAdmin(t,e){let{userid:r,gid:n}=e;return m().then((e=>v((0,p.KT)("cloud/users/{userid}/subadmins",{userid:r}),{groupid:n}).then((e=>t.commit("addUserSubAdmin",{userid:r,gid:n}))).catch((t=>{throw t})))).catch((e=>t.commit("API_FAILURE",{userid:r,error:e})))},removeUserSubAdmin(t,e){let{userid:r,gid:n}=e;return m().then((e=>b((0,p.KT)("cloud/users/{userid}/subadmins",{userid:r}),{groupid:n}).then((e=>t.commit("removeUserSubAdmin",{userid:r,gid:n}))).catch((t=>{throw t})))).catch((e=>t.commit("API_FAILURE",{userid:r,error:e})))},wipeUserDevices:(t,e)=>m().then((t=>v((0,p.KT)("cloud/users/{userid}/wipe",{userid:e})).catch((t=>{throw t})))).catch((r=>t.commit("API_FAILURE",{userid:e,error:r}))),deleteUser:(t,e)=>m().then((r=>b((0,p.KT)("cloud/users/{userid}",{userid:e})).then((r=>t.commit("deleteUser",e))).catch((t=>{throw t})))).catch((r=>t.commit("API_FAILURE",{userid:e,error:r}))),addUser(t,e){let{commit:r,dispatch:n}=t,{userid:o,password:i,displayName:s,email:a,groups:u,subadmin:c,quota:d,language:l,manager:h}=e;return m().then((t=>v((0,p.KT)("cloud/users"),{userid:o,password:i,displayName:s,email:a,groups:u,subadmin:c,quota:d,language:l,manager:h}).then((t=>n("addUserData",o||t.data.ocs.data.id))).catch((t=>{throw t})))).catch((t=>{throw r("API_FAILURE",{userid:o,error:t}),t}))},addUserData:(t,e)=>m().then((r=>g((0,p.KT)("cloud/users/{userid}",{userid:e})).then((e=>t.commit("addUserData",e))).catch((t=>{throw t})))).catch((r=>t.commit("API_FAILURE",{userid:e,error:r}))),enableDisableUser(t,e){let{userid:r,enabled:n=!0}=e;const o=n?"enable":"disable";return m().then((e=>y((0,p.KT)("cloud/users/{userid}/{userStatus}",{userid:r,userStatus:o})).then((e=>t.commit("enableDisableUser",{userid:r,enabled:n}))).catch((t=>{throw t})))).catch((e=>t.commit("API_FAILURE",{userid:r,error:e})))},setUserData(t,e){let{userid:r,key:n,value:o}=e;const i=["email","displayname","manager"];return-1!==["email","language","quota","displayname","password","manager"].indexOf(n)&&"string"==typeof o&&(-1===i.indexOf(n)&&o.length>0||-1!==i.indexOf(n))?m().then((e=>y((0,p.KT)("cloud/users/{userid}",{userid:r}),{key:n,value:o}).then((e=>t.commit("setUserData",{userid:r,key:n,value:o}))).catch((t=>{throw t})))).catch((e=>t.commit("API_FAILURE",{userid:r,error:e}))):Promise.reject(new Error("Invalid request data"))},sendWelcomeMail:(t,e)=>m().then((t=>v((0,p.KT)("cloud/users/{userid}/welcome",{userid:e})).then((t=>!0)).catch((t=>{throw t})))).catch((r=>t.commit("API_FAILURE",{userid:e,error:r})))}};var R=n(38613),N=n(96763);const O={APPS_API_FAILURE(e,r){(0,c.Qg)(t("settings","An error occurred during the request. Unable to proceed.")+"<br>"+r.error.response.data.data.message,{isHTML:!0}),N.error(e,r)},initCategories(t,e){let{categories:r,updateCount:n}=e;t.categories=r,t.updateCount=n},updateCategories(t,e){t.gettingCategoriesPromise=e},setUpdateCount(t,e){t.updateCount=e},addCategory(t,e){t.categories.push(e)},appendCategories(t,e){t.categories=e},setAllApps(t,e){t.apps=e},setError(t,e){let{appId:r,error:n}=e;Array.isArray(r)||(r=[r]),r.forEach((e=>{t.apps.find((t=>t.id===e)).error=n}))},clearError(t,e){let{appId:r,error:n}=e;t.apps.find((t=>t.id===r)).error=null},enableApp(t,e){let{appId:r,groups:n}=e;const o=t.apps.find((t=>t.id===r));o.active=!0,o.groups=n},setInstallState(t,e){let{appId:r,canInstall:n}=e;const o=t.apps.find((t=>t.id===r));o&&(o.canInstall=!0===n)},disableApp(t,e){const r=t.apps.find((t=>t.id===e));r.active=!1,r.groups=[],r.removable&&(r.canUnInstall=!0)},uninstallApp(t,e){t.apps.find((t=>t.id===e)).active=!1,t.apps.find((t=>t.id===e)).groups=[],t.apps.find((t=>t.id===e)).needsDownload=!0,t.apps.find((t=>t.id===e)).installed=!1,t.apps.find((t=>t.id===e)).canUnInstall=!1,t.apps.find((t=>t.id===e)).canInstall=!0},updateApp(t,e){const r=t.apps.find((t=>t.id===e)),n=r.update;r.update=null,r.version=n,t.updateCount--},resetApps(t){t.apps=[]},reset(t){t.apps=[],t.categories=[],t.updateCount=0},startLoading(t,e){Array.isArray(e)?e.forEach((e=>{o.Ay.set(t.loading,e,!0)})):o.Ay.set(t.loading,e,!0)},stopLoading(t,e){Array.isArray(e)?e.forEach((e=>{o.Ay.set(t.loading,e,!1)})):o.Ay.set(t.loading,e,!1)}},k={enableApp(e,r){let n,{appId:o,groups:i}=r;return n=Array.isArray(o)?o:[o],m().then((r=>(e.commit("startLoading",n),e.commit("startLoading","install"),v((0,p.Jv)("settings/apps/enable"),{appIds:n,groups:i}).then((r=>(e.commit("stopLoading",n),e.commit("stopLoading","install"),n.forEach((t=>{e.commit("enableApp",{appId:t,groups:i})})),g((0,p.Jv)("apps/files/")).then((()=>{r.data.update_required&&((0,c.cf)(t("settings","The app has been enabled but needs to be updated. You will be redirected to the update page in 5 seconds."),{onClick:()=>window.location.reload(),close:!1}),setTimeout((function(){location.reload()}),5e3))})).catch((()=>{Array.isArray(o)||((0,c.Qg)(t("settings","Error: This app cannot be enabled because it makes the server unstable")),e.commit("setError",{appId:n,error:t("settings","Error: This app cannot be enabled because it makes the server unstable")}),e.dispatch("disableApp",{appId:o}))}))))).catch((t=>{e.commit("stopLoading",n),e.commit("stopLoading","install"),e.commit("setError",{appId:n,error:t.response.data.data.message}),e.commit("APPS_API_FAILURE",{appId:o,error:t})}))))).catch((t=>e.commit("API_FAILURE",{appId:o,error:t})))},forceEnableApp(t,e){let r,{appId:n,groups:o}=e;return r=Array.isArray(n)?n:[n],m().then((()=>(t.commit("startLoading",r),t.commit("startLoading","install"),v((0,p.Jv)("settings/apps/force"),{appId:n}).then((e=>{t.commit("setInstallState",{appId:n,canInstall:!0})})).catch((e=>{t.commit("stopLoading",r),t.commit("stopLoading","install"),t.commit("setError",{appId:r,error:e.response.data.data.message}),t.commit("APPS_API_FAILURE",{appId:n,error:e})})).finally((()=>{t.commit("stopLoading",r),t.commit("stopLoading","install")}))))).catch((e=>t.commit("API_FAILURE",{appId:n,error:e})))},disableApp(t,e){let r,{appId:n}=e;return r=Array.isArray(n)?n:[n],m().then((e=>(t.commit("startLoading",r),v((0,p.Jv)("settings/apps/disable"),{appIds:r}).then((e=>(t.commit("stopLoading",r),r.forEach((e=>{t.commit("disableApp",e)})),!0))).catch((e=>{t.commit("stopLoading",r),t.commit("APPS_API_FAILURE",{appId:n,error:e})}))))).catch((e=>t.commit("API_FAILURE",{appId:n,error:e})))},uninstallApp(t,e){let{appId:r}=e;return m().then((e=>(t.commit("startLoading",r),g((0,p.Jv)("settings/apps/uninstall/".concat(r))).then((e=>(t.commit("stopLoading",r),t.commit("uninstallApp",r),!0))).catch((e=>{t.commit("stopLoading",r),t.commit("APPS_API_FAILURE",{appId:r,error:e})}))))).catch((e=>t.commit("API_FAILURE",{appId:r,error:e})))},updateApp(t,e){let{appId:r}=e;return m().then((e=>(t.commit("startLoading",r),t.commit("startLoading","install"),g((0,p.Jv)("settings/apps/update/".concat(r))).then((e=>(t.commit("stopLoading","install"),t.commit("stopLoading",r),t.commit("updateApp",r),!0))).catch((e=>{t.commit("stopLoading",r),t.commit("stopLoading","install"),t.commit("APPS_API_FAILURE",{appId:r,error:e})}))))).catch((e=>t.commit("API_FAILURE",{appId:r,error:e})))},getAllApps:t=>(t.commit("startLoading","list"),g((0,p.Jv)("settings/apps/list")).then((e=>(t.commit("setAllApps",e.data.apps),t.commit("stopLoading","list"),!0))).catch((e=>t.commit("API_FAILURE",e)))),async getCategories(t){let{shouldRefetchCategories:e=!1}=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(e||!t.state.gettingCategoriesPromise){t.commit("startLoading","categories");try{const e=g((0,p.Jv)("settings/apps/categories"));t.commit("updateCategories",e);const r=await e;return r.data.length>0?(t.commit("appendCategories",r.data),t.commit("stopLoading","categories"),!0):(t.commit("stopLoading","categories"),!1)}catch(e){t.commit("API_FAILURE",e)}}return t.state.gettingCategoriesPromise}},T={state:{apps:[],bundles:(0,R.C)("settings","appstoreBundles",[]),categories:[],updateCount:(0,R.C)("settings","appstoreUpdateCount",0),loading:{},gettingCategoriesPromise:null},mutations:O,getters:{loading:t=>function(e){return t.loading[e]},getCategories:t=>t.categories,getAllApps:t=>t.apps,getAppBundles:t=>t.bundles,getUpdateCount:t=>t.updateCount,getCategoryById:t=>e=>t.categories.find((t=>t.id===e))},actions:k},S={setServerData(t,e){t.serverData=e}},j={state:{serverData:(0,R.C)("settings","usersSettings",{})},mutations:S,getters:{getServerData:t=>t.serverData},actions:{}},F={state:{},mutations:{},getters:{},actions:{setAppConfig(t,e){let{app:r,key:n,value:o}=e;return m().then((t=>v((0,p.KT)("apps/provisioning_api/api/v1/config/apps/{app}/{key}",{app:r,key:n}),{value:o}).catch((t=>{throw t})))).catch((e=>t.commit("API_FAILURE",{app:r,key:n,value:o,error:e})))}}};var $=n(96763);o.Ay.use(i.Ay);const D={API_FAILURE(e,r){try{const e=r.error.response.data.ocs.meta.message;(0,c.Qg)(t("settings","An error occurred during the request. Unable to proceed.")+"<br>"+e,{isHTML:!0})}catch(e){(0,c.Qg)(t("settings","An error occurred during the request. Unable to proceed."))}$.error(e,r)}};let B=null;const q=()=>(null===B&&(B=new i.il({modules:{users:U,apps:T,settings:j,oc:F},strict:!1,mutations:D})),B)},15916:(t,e,r)=>{"use strict";var n;r.d(e,{q:()=>n}),function(t){t[t.UserCount=1]="UserCount",t[t.GroupName=2]="GroupName"}(n||(n={}))},36620:(t,e,r)=>{"use strict";r.d(e,{A:()=>n});const n=(0,r(53529).YK)().setApp("settings").detectUser().build()},74329:(t,e,r)=>{"use strict";var n=r(85471),o=r(80284),i=r(58723),s=r(53334),a=r(22378);const u=(0,n.pM)({__name:"SettingsApp",setup:t=>({__sfc:!0,NcContent:a.A})}),c=(0,r(14486).A)(u,(function(){var t=this,e=t._self._c;return e(t._self._setupProxy.NcContent,{attrs:{"app-name":"settings"}},[e("router-view",{attrs:{name:"navigation"}}),t._v(" "),e("router-view"),t._v(" "),e("router-view",{attrs:{name:"sidebar"}})],1)}),[],!1,null,null,null).exports;var p=r(40173),d=r(63814);const l=[{name:"users",path:"/:index(index.php/)?settings/users",components:{default:()=>Promise.all([r.e(4208),r.e(1439),r.e(3239)]).then(r.bind(r,47693)),navigation:()=>Promise.all([r.e(4208),r.e(1439),r.e(3239)]).then(r.bind(r,38250))},props:!0,children:[{path:":selectedGroup",name:"group"}]},{path:"/:index(index.php/)?settings/apps",name:"apps",redirect:{name:"apps-category",params:{category:"discover"}},components:{default:()=>Promise.all([r.e(4208),r.e(1439),r.e(4529)]).then(r.bind(r,4790)),navigation:()=>Promise.all([r.e(4208),r.e(1439),r.e(4529)]).then(r.bind(r,12336)),sidebar:()=>Promise.all([r.e(4208),r.e(1439),r.e(4529)]).then(r.bind(r,83625))},children:[{path:":category",name:"apps-category",children:[{path:":id",name:"apps-details"}]}]}];n.Ay.use(p.Ay);const h=new p.Ay({mode:"history",base:(0,d.Jv)(""),linkActiveClass:"active",routes:l});var f,m=r(31755),g=r(92457),v=r(65899);n.Ay.use(o.Ay,{defaultHtml:!1});const y=(0,m.P)();(0,i.O)(y,h),r.nc=btoa(null!==(f=(0,g.do)())&&void 0!==f?f:""),n.Ay.prototype.t=s.Tl,n.Ay.prototype.n=s.zw,n.Ay.use(v.R2);const b=(0,v.Ey)();new n.Ay({router:h,store:y,pinia:b,render:t=>t(c),el:"#content"})},40173:(t,e,r)=>{"use strict";r.d(e,{Ay:()=>Vt,Wk:()=>K});var n=r(96763);function o(t,e){for(var r in e)t[r]=e[r];return t}var i=/[!'()*]/g,s=function(t){return"%"+t.charCodeAt(0).toString(16)},a=/%2C/g,u=function(t){return encodeURIComponent(t).replace(i,s).replace(a,",")};function c(t){try{return decodeURIComponent(t)}catch(t){}return t}var p=function(t){return null==t||"object"==typeof t?t:String(t)};function d(t){var e={};return(t=t.trim().replace(/^(\?|#|&)/,""))?(t.split("&").forEach((function(t){var r=t.replace(/\+/g," ").split("="),n=c(r.shift()),o=r.length>0?c(r.join("=")):null;void 0===e[n]?e[n]=o:Array.isArray(e[n])?e[n].push(o):e[n]=[e[n],o]})),e):e}function l(t){var e=t?Object.keys(t).map((function(e){var r=t[e];if(void 0===r)return"";if(null===r)return u(e);if(Array.isArray(r)){var n=[];return r.forEach((function(t){void 0!==t&&(null===t?n.push(u(e)):n.push(u(e)+"="+u(t)))})),n.join("&")}return u(e)+"="+u(r)})).filter((function(t){return t.length>0})).join("&"):null;return e?"?"+e:""}var h=/\/?$/;function f(t,e,r,n){var o=n&&n.options.stringifyQuery,i=e.query||{};try{i=m(i)}catch(t){}var s={name:e.name||t&&t.name,meta:t&&t.meta||{},path:e.path||"/",hash:e.hash||"",query:i,params:e.params||{},fullPath:y(e,o),matched:t?v(t):[]};return r&&(s.redirectedFrom=y(r,o)),Object.freeze(s)}function m(t){if(Array.isArray(t))return t.map(m);if(t&&"object"==typeof t){var e={};for(var r in t)e[r]=m(t[r]);return e}return t}var g=f(null,{path:"/"});function v(t){for(var e=[];t;)e.unshift(t),t=t.parent;return e}function y(t,e){var r=t.path,n=t.query;void 0===n&&(n={});var o=t.hash;return void 0===o&&(o=""),(r||"/")+(e||l)(n)+o}function b(t,e,r){return e===g?t===e:!!e&&(t.path&&e.path?t.path.replace(h,"")===e.path.replace(h,"")&&(r||t.hash===e.hash&&w(t.query,e.query)):!(!t.name||!e.name)&&t.name===e.name&&(r||t.hash===e.hash&&w(t.query,e.query)&&w(t.params,e.params)))}function w(t,e){if(void 0===t&&(t={}),void 0===e&&(e={}),!t||!e)return t===e;var r=Object.keys(t).sort(),n=Object.keys(e).sort();return r.length===n.length&&r.every((function(r,o){var i=t[r];if(n[o]!==r)return!1;var s=e[r];return null==i||null==s?i===s:"object"==typeof i&&"object"==typeof s?w(i,s):String(i)===String(s)}))}function A(t){for(var e=0;e<t.matched.length;e++){var r=t.matched[e];for(var n in r.instances){var o=r.instances[n],i=r.enteredCbs[n];if(o&&i){delete r.enteredCbs[n];for(var s=0;s<i.length;s++)o._isBeingDestroyed||i[s](o)}}}}var E={name:"RouterView",functional:!0,props:{name:{type:String,default:"default"}},render:function(t,e){var r=e.props,n=e.children,i=e.parent,s=e.data;s.routerView=!0;for(var a=i.$createElement,u=r.name,c=i.$route,p=i._routerViewCache||(i._routerViewCache={}),d=0,l=!1;i&&i._routerRoot!==i;){var h=i.$vnode?i.$vnode.data:{};h.routerView&&d++,h.keepAlive&&i._directInactive&&i._inactive&&(l=!0),i=i.$parent}if(s.routerViewDepth=d,l){var f=p[u],m=f&&f.component;return m?(f.configProps&&x(m,s,f.route,f.configProps),a(m,s,n)):a()}var g=c.matched[d],v=g&&g.components[u];if(!g||!v)return p[u]=null,a();p[u]={component:v},s.registerRouteInstance=function(t,e){var r=g.instances[u];(e&&r!==t||!e&&r===t)&&(g.instances[u]=e)},(s.hook||(s.hook={})).prepatch=function(t,e){g.instances[u]=e.componentInstance},s.hook.init=function(t){t.data.keepAlive&&t.componentInstance&&t.componentInstance!==g.instances[u]&&(g.instances[u]=t.componentInstance),A(c)};var y=g.props&&g.props[u];return y&&(o(p[u],{route:c,configProps:y}),x(v,s,c,y)),a(v,s,n)}};function x(t,e,r,n){var i=e.props=function(t,e){switch(typeof e){case"undefined":return;case"object":return e;case"function":return e(t);case"boolean":return e?t.params:void 0}}(r,n);if(i){i=e.props=o({},i);var s=e.attrs=e.attrs||{};for(var a in i)t.props&&a in t.props||(s[a]=i[a],delete i[a])}}function _(t,e,r){var n=t.charAt(0);if("/"===n)return t;if("?"===n||"#"===n)return e+t;var o=e.split("/");r&&o[o.length-1]||o.pop();for(var i=t.replace(/^\//,"").split("/"),s=0;s<i.length;s++){var a=i[s];".."===a?o.pop():"."!==a&&o.push(a)}return""!==o[0]&&o.unshift(""),o.join("/")}function P(t){return t.replace(/\/(?:\s*\/)+/g,"/")}var I=Array.isArray||function(t){return"[object Array]"==Object.prototype.toString.call(t)},L=function t(e,r,n){return I(r)||(n=r||n,r=[]),n=n||{},e instanceof RegExp?function(t,e){var r=t.source.match(/\((?!\?)/g);if(r)for(var n=0;n<r.length;n++)e.push({name:n,prefix:null,delimiter:null,optional:!1,repeat:!1,partial:!1,asterisk:!1,pattern:null});return F(t,e)}(e,r):I(e)?function(e,r,n){for(var o=[],i=0;i<e.length;i++)o.push(t(e[i],r,n).source);return F(new RegExp("(?:"+o.join("|")+")",$(n)),r)}(e,r,n):function(t,e,r){return D(O(t,r),e,r)}(e,r,n)},C=O,U=T,R=D,N=new RegExp(["(\\\\.)","([\\/.])?(?:(?:\\:(\\w+)(?:\\(((?:\\\\.|[^\\\\()])+)\\))?|\\(((?:\\\\.|[^\\\\()])+)\\))([+*?])?|(\\*))"].join("|"),"g");function O(t,e){for(var r,n=[],o=0,i=0,s="",a=e&&e.delimiter||"/";null!=(r=N.exec(t));){var u=r[0],c=r[1],p=r.index;if(s+=t.slice(i,p),i=p+u.length,c)s+=c[1];else{var d=t[i],l=r[2],h=r[3],f=r[4],m=r[5],g=r[6],v=r[7];s&&(n.push(s),s="");var y=null!=l&&null!=d&&d!==l,b="+"===g||"*"===g,w="?"===g||"*"===g,A=r[2]||a,E=f||m;n.push({name:h||o++,prefix:l||"",delimiter:A,optional:w,repeat:b,partial:y,asterisk:!!v,pattern:E?j(E):v?".*":"[^"+S(A)+"]+?"})}}return i<t.length&&(s+=t.substr(i)),s&&n.push(s),n}function k(t){return encodeURI(t).replace(/[\/?#]/g,(function(t){return"%"+t.charCodeAt(0).toString(16).toUpperCase()}))}function T(t,e){for(var r=new Array(t.length),n=0;n<t.length;n++)"object"==typeof t[n]&&(r[n]=new RegExp("^(?:"+t[n].pattern+")$",$(e)));return function(e,n){for(var o="",i=e||{},s=(n||{}).pretty?k:encodeURIComponent,a=0;a<t.length;a++){var u=t[a];if("string"!=typeof u){var c,p=i[u.name];if(null==p){if(u.optional){u.partial&&(o+=u.prefix);continue}throw new TypeError('Expected "'+u.name+'" to be defined')}if(I(p)){if(!u.repeat)throw new TypeError('Expected "'+u.name+'" to not repeat, but received `'+JSON.stringify(p)+"`");if(0===p.length){if(u.optional)continue;throw new TypeError('Expected "'+u.name+'" to not be empty')}for(var d=0;d<p.length;d++){if(c=s(p[d]),!r[a].test(c))throw new TypeError('Expected all "'+u.name+'" to match "'+u.pattern+'", but received `'+JSON.stringify(c)+"`");o+=(0===d?u.prefix:u.delimiter)+c}}else{if(c=u.asterisk?encodeURI(p).replace(/[?#]/g,(function(t){return"%"+t.charCodeAt(0).toString(16).toUpperCase()})):s(p),!r[a].test(c))throw new TypeError('Expected "'+u.name+'" to match "'+u.pattern+'", but received "'+c+'"');o+=u.prefix+c}}else o+=u}return o}}function S(t){return t.replace(/([.+*?=^!:${}()[\]|\/\\])/g,"\\$1")}function j(t){return t.replace(/([=!:$\/()])/g,"\\$1")}function F(t,e){return t.keys=e,t}function $(t){return t&&t.sensitive?"":"i"}function D(t,e,r){I(e)||(r=e||r,e=[]);for(var n=(r=r||{}).strict,o=!1!==r.end,i="",s=0;s<t.length;s++){var a=t[s];if("string"==typeof a)i+=S(a);else{var u=S(a.prefix),c="(?:"+a.pattern+")";e.push(a),a.repeat&&(c+="(?:"+u+c+")*"),i+=c=a.optional?a.partial?u+"("+c+")?":"(?:"+u+"("+c+"))?":u+"("+c+")"}}var p=S(r.delimiter||"/"),d=i.slice(-p.length)===p;return n||(i=(d?i.slice(0,-p.length):i)+"(?:"+p+"(?=$))?"),i+=o?"$":n&&d?"":"(?="+p+"|$)",F(new RegExp("^"+i,$(r)),e)}L.parse=C,L.compile=function(t,e){return T(O(t,e),e)},L.tokensToFunction=U,L.tokensToRegExp=R;var B=Object.create(null);function q(t,e,r){e=e||{};try{var n=B[t]||(B[t]=L.compile(t));return"string"==typeof e.pathMatch&&(e[0]=e.pathMatch),n(e,{pretty:!0})}catch(t){return""}finally{delete e[0]}}function G(t,e,r,n){var i="string"==typeof t?{path:t}:t;if(i._normalized)return i;if(i.name){var s=(i=o({},t)).params;return s&&"object"==typeof s&&(i.params=o({},s)),i}if(!i.path&&i.params&&e){(i=o({},i))._normalized=!0;var a=o(o({},e.params),i.params);if(e.name)i.name=e.name,i.params=a;else if(e.matched.length){var u=e.matched[e.matched.length-1].path;i.path=q(u,a,e.path)}return i}var c=function(t){var e="",r="",n=t.indexOf("#");n>=0&&(e=t.slice(n),t=t.slice(0,n));var o=t.indexOf("?");return o>=0&&(r=t.slice(o+1),t=t.slice(0,o)),{path:t,query:r,hash:e}}(i.path||""),l=e&&e.path||"/",h=c.path?_(c.path,l,r||i.append):l,f=function(t,e,r){void 0===e&&(e={});var n,o=r||d;try{n=o(t||"")}catch(t){n={}}for(var i in e){var s=e[i];n[i]=Array.isArray(s)?s.map(p):p(s)}return n}(c.query,i.query,n&&n.options.parseQuery),m=i.hash||c.hash;return m&&"#"!==m.charAt(0)&&(m="#"+m),{_normalized:!0,path:h,query:f,hash:m}}var M,V=function(){},K={name:"RouterLink",props:{to:{type:[String,Object],required:!0},tag:{type:String,default:"a"},custom:Boolean,exact:Boolean,exactPath:Boolean,append:Boolean,replace:Boolean,activeClass:String,exactActiveClass:String,ariaCurrentValue:{type:String,default:"page"},event:{type:[String,Array],default:"click"}},render:function(t){var e=this,r=this.$router,n=this.$route,i=r.resolve(this.to,n,this.append),s=i.location,a=i.route,u=i.href,c={},p=r.options.linkActiveClass,d=r.options.linkExactActiveClass,l=null==p?"router-link-active":p,m=null==d?"router-link-exact-active":d,g=null==this.activeClass?l:this.activeClass,v=null==this.exactActiveClass?m:this.exactActiveClass,y=a.redirectedFrom?f(null,G(a.redirectedFrom),null,r):a;c[v]=b(n,y,this.exactPath),c[g]=this.exact||this.exactPath?c[v]:function(t,e){return 0===t.path.replace(h,"/").indexOf(e.path.replace(h,"/"))&&(!e.hash||t.hash===e.hash)&&function(t,e){for(var r in e)if(!(r in t))return!1;return!0}(t.query,e.query)}(n,y);var w=c[v]?this.ariaCurrentValue:null,A=function(t){H(t)&&(e.replace?r.replace(s,V):r.push(s,V))},E={click:H};Array.isArray(this.event)?this.event.forEach((function(t){E[t]=A})):E[this.event]=A;var x={class:c},_=!this.$scopedSlots.$hasNormal&&this.$scopedSlots.default&&this.$scopedSlots.default({href:u,route:a,navigate:A,isActive:c[g],isExactActive:c[v]});if(_){if(1===_.length)return _[0];if(_.length>1||!_.length)return 0===_.length?t():t("span",{},_)}if("a"===this.tag)x.on=E,x.attrs={href:u,"aria-current":w};else{var P=z(this.$slots.default);if(P){P.isStatic=!1;var I=P.data=o({},P.data);for(var L in I.on=I.on||{},I.on){var C=I.on[L];L in E&&(I.on[L]=Array.isArray(C)?C:[C])}for(var U in E)U in I.on?I.on[U].push(E[U]):I.on[U]=A;var R=P.data.attrs=o({},P.data.attrs);R.href=u,R["aria-current"]=w}else x.on=E}return t(this.tag,x,this.$slots.default)}};function H(t){if(!(t.metaKey||t.altKey||t.ctrlKey||t.shiftKey||t.defaultPrevented||void 0!==t.button&&0!==t.button)){if(t.currentTarget&&t.currentTarget.getAttribute){var e=t.currentTarget.getAttribute("target");if(/\b_blank\b/i.test(e))return}return t.preventDefault&&t.preventDefault(),!0}}function z(t){if(t)for(var e,r=0;r<t.length;r++){if("a"===(e=t[r]).tag)return e;if(e.children&&(e=z(e.children)))return e}}var J="undefined"!=typeof window;function W(t,e,r,n,o){var i=e||[],s=r||Object.create(null),a=n||Object.create(null);t.forEach((function(t){Q(i,s,a,t,o)}));for(var u=0,c=i.length;u<c;u++)"*"===i[u]&&(i.push(i.splice(u,1)[0]),c--,u--);return{pathList:i,pathMap:s,nameMap:a}}function Q(t,e,r,n,o,i){var s=n.path,a=n.name,u=n.pathToRegexpOptions||{},c=function(t,e,r){return r||(t=t.replace(/\/$/,"")),"/"===t[0]||null==e?t:P(e.path+"/"+t)}(s,o,u.strict);"boolean"==typeof n.caseSensitive&&(u.sensitive=n.caseSensitive);var p={path:c,regex:Y(c,u),components:n.components||{default:n.component},alias:n.alias?"string"==typeof n.alias?[n.alias]:n.alias:[],instances:{},enteredCbs:{},name:a,parent:o,matchAs:i,redirect:n.redirect,beforeEnter:n.beforeEnter,meta:n.meta||{},props:null==n.props?{}:n.components?n.props:{default:n.props}};if(n.children&&n.children.forEach((function(n){var o=i?P(i+"/"+n.path):void 0;Q(t,e,r,n,p,o)})),e[p.path]||(t.push(p.path),e[p.path]=p),void 0!==n.alias)for(var d=Array.isArray(n.alias)?n.alias:[n.alias],l=0;l<d.length;++l){var h={path:d[l],children:n.children};Q(t,e,r,h,o,p.path||"/")}a&&(r[a]||(r[a]=p))}function Y(t,e){return L(t,[],e)}function X(t,e){var r=W(t),n=r.pathList,o=r.pathMap,i=r.nameMap;function s(t,r,s){var u=G(t,r,!1,e),c=u.name;if(c){var p=i[c];if(!p)return a(null,u);var d=p.regex.keys.filter((function(t){return!t.optional})).map((function(t){return t.name}));if("object"!=typeof u.params&&(u.params={}),r&&"object"==typeof r.params)for(var l in r.params)!(l in u.params)&&d.indexOf(l)>-1&&(u.params[l]=r.params[l]);return u.path=q(p.path,u.params),a(p,u,s)}if(u.path){u.params={};for(var h=0;h<n.length;h++){var f=n[h],m=o[f];if(Z(m.regex,u.path,u.params))return a(m,u,s)}}return a(null,u)}function a(t,r,n){return t&&t.redirect?function(t,r){var n=t.redirect,o="function"==typeof n?n(f(t,r,null,e)):n;if("string"==typeof o&&(o={path:o}),!o||"object"!=typeof o)return a(null,r);var u=o,c=u.name,p=u.path,d=r.query,l=r.hash,h=r.params;if(d=u.hasOwnProperty("query")?u.query:d,l=u.hasOwnProperty("hash")?u.hash:l,h=u.hasOwnProperty("params")?u.params:h,c)return i[c],s({_normalized:!0,name:c,query:d,hash:l,params:h},void 0,r);if(p){var m=function(t,e){return _(t,e.parent?e.parent.path:"/",!0)}(p,t);return s({_normalized:!0,path:q(m,h),query:d,hash:l},void 0,r)}return a(null,r)}(t,n||r):t&&t.matchAs?function(t,e,r){var n=s({_normalized:!0,path:q(r,e.params)});if(n){var o=n.matched,i=o[o.length-1];return e.params=n.params,a(i,e)}return a(null,e)}(0,r,t.matchAs):f(t,r,n,e)}return{match:s,addRoute:function(t,e){var r="object"!=typeof t?i[t]:void 0;W([e||t],n,o,i,r),r&&r.alias.length&&W(r.alias.map((function(t){return{path:t,children:[e]}})),n,o,i,r)},getRoutes:function(){return n.map((function(t){return o[t]}))},addRoutes:function(t){W(t,n,o,i)}}}function Z(t,e,r){var n=e.match(t);if(!n)return!1;if(!r)return!0;for(var o=1,i=n.length;o<i;++o){var s=t.keys[o-1];s&&(r[s.name||"pathMatch"]="string"==typeof n[o]?c(n[o]):n[o])}return!0}var tt=J&&window.performance&&window.performance.now?window.performance:Date;function et(){return tt.now().toFixed(3)}var rt=et();function nt(){return rt}function ot(t){return rt=t}var it=Object.create(null);function st(){"scrollRestoration"in window.history&&(window.history.scrollRestoration="manual");var t=window.location.protocol+"//"+window.location.host,e=window.location.href.replace(t,""),r=o({},window.history.state);return r.key=nt(),window.history.replaceState(r,"",e),window.addEventListener("popstate",ct),function(){window.removeEventListener("popstate",ct)}}function at(t,e,r,n){if(t.app){var o=t.options.scrollBehavior;o&&t.app.$nextTick((function(){var i=function(){var t=nt();if(t)return it[t]}(),s=o.call(t,e,r,n?i:null);s&&("function"==typeof s.then?s.then((function(t){ft(t,i)})).catch((function(t){})):ft(s,i))}))}}function ut(){var t=nt();t&&(it[t]={x:window.pageXOffset,y:window.pageYOffset})}function ct(t){ut(),t.state&&t.state.key&&ot(t.state.key)}function pt(t){return lt(t.x)||lt(t.y)}function dt(t){return{x:lt(t.x)?t.x:window.pageXOffset,y:lt(t.y)?t.y:window.pageYOffset}}function lt(t){return"number"==typeof t}var ht=/^#\d/;function ft(t,e){var r,n="object"==typeof t;if(n&&"string"==typeof t.selector){var o=ht.test(t.selector)?document.getElementById(t.selector.slice(1)):document.querySelector(t.selector);if(o){var i=t.offset&&"object"==typeof t.offset?t.offset:{};e=function(t,e){var r=document.documentElement.getBoundingClientRect(),n=t.getBoundingClientRect();return{x:n.left-r.left-e.x,y:n.top-r.top-e.y}}(o,i={x:lt((r=i).x)?r.x:0,y:lt(r.y)?r.y:0})}else pt(t)&&(e=dt(t))}else n&&pt(t)&&(e=dt(t));e&&("scrollBehavior"in document.documentElement.style?window.scrollTo({left:e.x,top:e.y,behavior:t.behavior}):window.scrollTo(e.x,e.y))}var mt,gt=J&&(-1===(mt=window.navigator.userAgent).indexOf("Android 2.")&&-1===mt.indexOf("Android 4.0")||-1===mt.indexOf("Mobile Safari")||-1!==mt.indexOf("Chrome")||-1!==mt.indexOf("Windows Phone"))&&window.history&&"function"==typeof window.history.pushState;function vt(t,e){ut();var r=window.history;try{if(e){var n=o({},r.state);n.key=nt(),r.replaceState(n,"",t)}else r.pushState({key:ot(et())},"",t)}catch(r){window.location[e?"replace":"assign"](t)}}function yt(t){vt(t,!0)}var bt={redirected:2,aborted:4,cancelled:8,duplicated:16};function wt(t,e){return At(t,e,bt.cancelled,'Navigation cancelled from "'+t.fullPath+'" to "'+e.fullPath+'" with a new navigation.')}function At(t,e,r,n){var o=new Error(n);return o._isRouter=!0,o.from=t,o.to=e,o.type=r,o}var Et=["params","query","hash"];function xt(t){return Object.prototype.toString.call(t).indexOf("Error")>-1}function _t(t,e){return xt(t)&&t._isRouter&&(null==e||t.type===e)}function Pt(t,e,r){var n=function(o){o>=t.length?r():t[o]?e(t[o],(function(){n(o+1)})):n(o+1)};n(0)}function It(t,e){return Lt(t.map((function(t){return Object.keys(t.components).map((function(r){return e(t.components[r],t.instances[r],t,r)}))})))}function Lt(t){return Array.prototype.concat.apply([],t)}var Ct="function"==typeof Symbol&&"symbol"==typeof Symbol.toStringTag;function Ut(t){var e=!1;return function(){for(var r=[],n=arguments.length;n--;)r[n]=arguments[n];if(!e)return e=!0,t.apply(this,r)}}var Rt=function(t,e){this.router=t,this.base=function(t){if(!t)if(J){var e=document.querySelector("base");t=(t=e&&e.getAttribute("href")||"/").replace(/^https?:\/\/[^\/]+/,"")}else t="/";return"/"!==t.charAt(0)&&(t="/"+t),t.replace(/\/$/,"")}(e),this.current=g,this.pending=null,this.ready=!1,this.readyCbs=[],this.readyErrorCbs=[],this.errorCbs=[],this.listeners=[]};function Nt(t,e,r,n){var o=It(t,(function(t,n,o,i){var s=function(t,e){return"function"!=typeof t&&(t=M.extend(t)),t.options[e]}(t,e);if(s)return Array.isArray(s)?s.map((function(t){return r(t,n,o,i)})):r(s,n,o,i)}));return Lt(n?o.reverse():o)}function Ot(t,e){if(e)return function(){return t.apply(e,arguments)}}Rt.prototype.listen=function(t){this.cb=t},Rt.prototype.onReady=function(t,e){this.ready?t():(this.readyCbs.push(t),e&&this.readyErrorCbs.push(e))},Rt.prototype.onError=function(t){this.errorCbs.push(t)},Rt.prototype.transitionTo=function(t,e,r){var n,o=this;try{n=this.router.match(t,this.current)}catch(t){throw this.errorCbs.forEach((function(e){e(t)})),t}var i=this.current;this.confirmTransition(n,(function(){o.updateRoute(n),e&&e(n),o.ensureURL(),o.router.afterHooks.forEach((function(t){t&&t(n,i)})),o.ready||(o.ready=!0,o.readyCbs.forEach((function(t){t(n)})))}),(function(t){r&&r(t),t&&!o.ready&&(_t(t,bt.redirected)&&i===g||(o.ready=!0,o.readyErrorCbs.forEach((function(e){e(t)}))))}))},Rt.prototype.confirmTransition=function(t,e,r){var o=this,i=this.current;this.pending=t;var s,a,u=function(t){!_t(t)&&xt(t)&&(o.errorCbs.length?o.errorCbs.forEach((function(e){e(t)})):n.error(t)),r&&r(t)},c=t.matched.length-1,p=i.matched.length-1;if(b(t,i)&&c===p&&t.matched[c]===i.matched[p])return this.ensureURL(),t.hash&&at(this.router,i,t,!1),u(((a=At(s=i,t,bt.duplicated,'Avoided redundant navigation to current location: "'+s.fullPath+'".')).name="NavigationDuplicated",a));var d,l=function(t,e){var r,n=Math.max(t.length,e.length);for(r=0;r<n&&t[r]===e[r];r++);return{updated:e.slice(0,r),activated:e.slice(r),deactivated:t.slice(r)}}(this.current.matched,t.matched),h=l.updated,f=l.deactivated,m=l.activated,g=[].concat(function(t){return Nt(t,"beforeRouteLeave",Ot,!0)}(f),this.router.beforeHooks,function(t){return Nt(t,"beforeRouteUpdate",Ot)}(h),m.map((function(t){return t.beforeEnter})),(d=m,function(t,e,r){var n=!1,o=0,i=null;It(d,(function(t,e,s,a){if("function"==typeof t&&void 0===t.cid){n=!0,o++;var u,c=Ut((function(e){var n;((n=e).__esModule||Ct&&"Module"===n[Symbol.toStringTag])&&(e=e.default),t.resolved="function"==typeof e?e:M.extend(e),s.components[a]=e,--o<=0&&r()})),p=Ut((function(t){var e="Failed to resolve async component "+a+": "+t;i||(i=xt(t)?t:new Error(e),r(i))}));try{u=t(c,p)}catch(t){p(t)}if(u)if("function"==typeof u.then)u.then(c,p);else{var d=u.component;d&&"function"==typeof d.then&&d.then(c,p)}}})),n||r()})),v=function(e,r){if(o.pending!==t)return u(wt(i,t));try{e(t,i,(function(e){!1===e?(o.ensureURL(!0),u(function(t,e){return At(t,e,bt.aborted,'Navigation aborted from "'+t.fullPath+'" to "'+e.fullPath+'" via a navigation guard.')}(i,t))):xt(e)?(o.ensureURL(!0),u(e)):"string"==typeof e||"object"==typeof e&&("string"==typeof e.path||"string"==typeof e.name)?(u(function(t,e){return At(t,e,bt.redirected,'Redirected when going from "'+t.fullPath+'" to "'+function(t){if("string"==typeof t)return t;if("path"in t)return t.path;var e={};return Et.forEach((function(r){r in t&&(e[r]=t[r])})),JSON.stringify(e,null,2)}(e)+'" via a navigation guard.')}(i,t)),"object"==typeof e&&e.replace?o.replace(e):o.push(e)):r(e)}))}catch(t){u(t)}};Pt(g,v,(function(){var r=function(t){return Nt(t,"beforeRouteEnter",(function(t,e,r,n){return function(t,e,r){return function(n,o,i){return t(n,o,(function(t){"function"==typeof t&&(e.enteredCbs[r]||(e.enteredCbs[r]=[]),e.enteredCbs[r].push(t)),i(t)}))}}(t,r,n)}))}(m);Pt(r.concat(o.router.resolveHooks),v,(function(){if(o.pending!==t)return u(wt(i,t));o.pending=null,e(t),o.router.app&&o.router.app.$nextTick((function(){A(t)}))}))}))},Rt.prototype.updateRoute=function(t){this.current=t,this.cb&&this.cb(t)},Rt.prototype.setupListeners=function(){},Rt.prototype.teardown=function(){this.listeners.forEach((function(t){t()})),this.listeners=[],this.current=g,this.pending=null};var kt=function(t){function e(e,r){t.call(this,e,r),this._startLocation=Tt(this.base)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.setupListeners=function(){var t=this;if(!(this.listeners.length>0)){var e=this.router,r=e.options.scrollBehavior,n=gt&&r;n&&this.listeners.push(st());var o=function(){var r=t.current,o=Tt(t.base);t.current===g&&o===t._startLocation||t.transitionTo(o,(function(t){n&&at(e,t,r,!0)}))};window.addEventListener("popstate",o),this.listeners.push((function(){window.removeEventListener("popstate",o)}))}},e.prototype.go=function(t){window.history.go(t)},e.prototype.push=function(t,e,r){var n=this,o=this.current;this.transitionTo(t,(function(t){vt(P(n.base+t.fullPath)),at(n.router,t,o,!1),e&&e(t)}),r)},e.prototype.replace=function(t,e,r){var n=this,o=this.current;this.transitionTo(t,(function(t){yt(P(n.base+t.fullPath)),at(n.router,t,o,!1),e&&e(t)}),r)},e.prototype.ensureURL=function(t){if(Tt(this.base)!==this.current.fullPath){var e=P(this.base+this.current.fullPath);t?vt(e):yt(e)}},e.prototype.getCurrentLocation=function(){return Tt(this.base)},e}(Rt);function Tt(t){var e=window.location.pathname,r=e.toLowerCase(),n=t.toLowerCase();return!t||r!==n&&0!==r.indexOf(P(n+"/"))||(e=e.slice(t.length)),(e||"/")+window.location.search+window.location.hash}var St=function(t){function e(e,r,n){t.call(this,e,r),n&&function(t){var e=Tt(t);if(!/^\/#/.test(e))return window.location.replace(P(t+"/#"+e)),!0}(this.base)||jt()}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.setupListeners=function(){var t=this;if(!(this.listeners.length>0)){var e=this.router.options.scrollBehavior,r=gt&&e;r&&this.listeners.push(st());var n=function(){var e=t.current;jt()&&t.transitionTo(Ft(),(function(n){r&&at(t.router,n,e,!0),gt||Bt(n.fullPath)}))},o=gt?"popstate":"hashchange";window.addEventListener(o,n),this.listeners.push((function(){window.removeEventListener(o,n)}))}},e.prototype.push=function(t,e,r){var n=this,o=this.current;this.transitionTo(t,(function(t){Dt(t.fullPath),at(n.router,t,o,!1),e&&e(t)}),r)},e.prototype.replace=function(t,e,r){var n=this,o=this.current;this.transitionTo(t,(function(t){Bt(t.fullPath),at(n.router,t,o,!1),e&&e(t)}),r)},e.prototype.go=function(t){window.history.go(t)},e.prototype.ensureURL=function(t){var e=this.current.fullPath;Ft()!==e&&(t?Dt(e):Bt(e))},e.prototype.getCurrentLocation=function(){return Ft()},e}(Rt);function jt(){var t=Ft();return"/"===t.charAt(0)||(Bt("/"+t),!1)}function Ft(){var t=window.location.href,e=t.indexOf("#");return e<0?"":t=t.slice(e+1)}function $t(t){var e=window.location.href,r=e.indexOf("#");return(r>=0?e.slice(0,r):e)+"#"+t}function Dt(t){gt?vt($t(t)):window.location.hash=t}function Bt(t){gt?yt($t(t)):window.location.replace($t(t))}var qt=function(t){function e(e,r){t.call(this,e,r),this.stack=[],this.index=-1}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.push=function(t,e,r){var n=this;this.transitionTo(t,(function(t){n.stack=n.stack.slice(0,n.index+1).concat(t),n.index++,e&&e(t)}),r)},e.prototype.replace=function(t,e,r){var n=this;this.transitionTo(t,(function(t){n.stack=n.stack.slice(0,n.index).concat(t),e&&e(t)}),r)},e.prototype.go=function(t){var e=this,r=this.index+t;if(!(r<0||r>=this.stack.length)){var n=this.stack[r];this.confirmTransition(n,(function(){var t=e.current;e.index=r,e.updateRoute(n),e.router.afterHooks.forEach((function(e){e&&e(n,t)}))}),(function(t){_t(t,bt.duplicated)&&(e.index=r)}))}},e.prototype.getCurrentLocation=function(){var t=this.stack[this.stack.length-1];return t?t.fullPath:"/"},e.prototype.ensureURL=function(){},e}(Rt),Gt=function(t){void 0===t&&(t={}),this.app=null,this.apps=[],this.options=t,this.beforeHooks=[],this.resolveHooks=[],this.afterHooks=[],this.matcher=X(t.routes||[],this);var e=t.mode||"hash";switch(this.fallback="history"===e&&!gt&&!1!==t.fallback,this.fallback&&(e="hash"),J||(e="abstract"),this.mode=e,e){case"history":this.history=new kt(this,t.base);break;case"hash":this.history=new St(this,t.base,this.fallback);break;case"abstract":this.history=new qt(this,t.base)}},Mt={currentRoute:{configurable:!0}};Gt.prototype.match=function(t,e,r){return this.matcher.match(t,e,r)},Mt.currentRoute.get=function(){return this.history&&this.history.current},Gt.prototype.init=function(t){var e=this;if(this.apps.push(t),t.$once("hook:destroyed",(function(){var r=e.apps.indexOf(t);r>-1&&e.apps.splice(r,1),e.app===t&&(e.app=e.apps[0]||null),e.app||e.history.teardown()})),!this.app){this.app=t;var r=this.history;if(r instanceof kt||r instanceof St){var n=function(t){r.setupListeners(),function(t){var n=r.current,o=e.options.scrollBehavior;gt&&o&&"fullPath"in t&&at(e,t,n,!1)}(t)};r.transitionTo(r.getCurrentLocation(),n,n)}r.listen((function(t){e.apps.forEach((function(e){e._route=t}))}))}},Gt.prototype.beforeEach=function(t){return Kt(this.beforeHooks,t)},Gt.prototype.beforeResolve=function(t){return Kt(this.resolveHooks,t)},Gt.prototype.afterEach=function(t){return Kt(this.afterHooks,t)},Gt.prototype.onReady=function(t,e){this.history.onReady(t,e)},Gt.prototype.onError=function(t){this.history.onError(t)},Gt.prototype.push=function(t,e,r){var n=this;if(!e&&!r&&"undefined"!=typeof Promise)return new Promise((function(e,r){n.history.push(t,e,r)}));this.history.push(t,e,r)},Gt.prototype.replace=function(t,e,r){var n=this;if(!e&&!r&&"undefined"!=typeof Promise)return new Promise((function(e,r){n.history.replace(t,e,r)}));this.history.replace(t,e,r)},Gt.prototype.go=function(t){this.history.go(t)},Gt.prototype.back=function(){this.go(-1)},Gt.prototype.forward=function(){this.go(1)},Gt.prototype.getMatchedComponents=function(t){var e=t?t.matched?t:this.resolve(t).route:this.currentRoute;return e?[].concat.apply([],e.matched.map((function(t){return Object.keys(t.components).map((function(e){return t.components[e]}))}))):[]},Gt.prototype.resolve=function(t,e,r){var n=G(t,e=e||this.history.current,r,this),o=this.match(n,e),i=o.redirectedFrom||o.fullPath,s=function(t,e,r){var n="hash"===r?"#"+e:e;return t?P(t+"/"+n):n}(this.history.base,i,this.mode);return{location:n,route:o,href:s,normalizedTo:n,resolved:o}},Gt.prototype.getRoutes=function(){return this.matcher.getRoutes()},Gt.prototype.addRoute=function(t,e){this.matcher.addRoute(t,e),this.history.current!==g&&this.history.transitionTo(this.history.getCurrentLocation())},Gt.prototype.addRoutes=function(t){this.matcher.addRoutes(t),this.history.current!==g&&this.history.transitionTo(this.history.getCurrentLocation())},Object.defineProperties(Gt.prototype,Mt);var Vt=Gt;function Kt(t,e){return t.push(e),function(){var r=t.indexOf(e);r>-1&&t.splice(r,1)}}Gt.install=function t(e){if(!t.installed||M!==e){t.installed=!0,M=e;var r=function(t){return void 0!==t},n=function(t,e){var n=t.$options._parentVnode;r(n)&&r(n=n.data)&&r(n=n.registerRouteInstance)&&n(t,e)};e.mixin({beforeCreate:function(){r(this.$options.router)?(this._routerRoot=this,this._router=this.$options.router,this._router.init(this),e.util.defineReactive(this,"_route",this._router.history.current)):this._routerRoot=this.$parent&&this.$parent._routerRoot||this,n(this,this)},destroyed:function(){n(this)}}),Object.defineProperty(e.prototype,"$router",{get:function(){return this._routerRoot._router}}),Object.defineProperty(e.prototype,"$route",{get:function(){return this._routerRoot._route}}),e.component("RouterView",E),e.component("RouterLink",K);var o=e.config.optionMergeStrategies;o.beforeRouteEnter=o.beforeRouteLeave=o.beforeRouteUpdate=o.created}},Gt.version="3.6.5",Gt.isNavigationFailure=_t,Gt.NavigationFailureType=bt,Gt.START_LOCATION=g,J&&window.Vue&&window.Vue.use(Gt)},58723:(t,e)=>{function r(t,e){var n={name:t.name,path:t.path,hash:t.hash,query:t.query,params:t.params,fullPath:t.fullPath,meta:t.meta};return e&&(n.from=r(e)),Object.freeze(n)}e.O=function(t,e,n){var o=(n||{}).moduleName||"route";t.registerModule(o,{namespaced:!0,state:r(e.currentRoute),mutations:{ROUTE_CHANGED:function(e,n){t.state[o]=r(n.to,n.from)}}});var i,s=!1,a=t.watch((function(t){return t[o]}),(function(t){var r=t.fullPath;r!==i&&(null!=i&&(s=!0,e.push(t)),i=r)}),{sync:!0}),u=e.afterEach((function(e,r){s?s=!1:(i=e.fullPath,t.commit(o+"/ROUTE_CHANGED",{to:e,from:r}))}));return function(){null!=u&&u(),null!=a&&a(),t.unregisterModule(o)}}},35810:(t,e,r)=>{"use strict";r.d(e,{Al:()=>T,H4:()=>O,PY:()=>N,Q$:()=>k,R3:()=>E,VL:()=>A,lJ:()=>R,lT:()=>m,pt:()=>x,v7:()=>f});var n,o=r(92457),i=r(53529),s=r(53334),a=r(43627),u=r(71089),c=r(63814),p=r(44719),d=r(36117);null===(n=(0,o.HW)())?(0,i.YK)().setApp("files").build():(0,i.YK)().setApp("files").setUid(n.uid).build();const l=["B","KB","MB","GB","TB","PB"],h=["B","KiB","MiB","GiB","TiB","PiB"];function f(t,e=!1,r=!1,n=!1){r=r&&!n,"string"==typeof t&&(t=Number(t));let o=t>0?Math.floor(Math.log(t)/Math.log(n?1e3:1024)):0;o=Math.min((r?h.length:l.length)-1,o);const i=r?h[o]:l[o];let a=(t/Math.pow(n?1e3:1024,o)).toFixed(1);return!0===e&&0===o?("0.0"!==a?"< 1 ":"0 ")+(r?h[1]:l[1]):(a=o<2?parseFloat(a).toFixed(0):parseFloat(a).toLocaleString((0,s.lO)()),a+" "+i)}function m(t,e=!1){try{t=`${t}`.toLocaleLowerCase().replaceAll(/\s+/g,"").replaceAll(",",".")}catch{return null}const r=t.match(/^([0-9]*(\.[0-9]*)?)([kmgtp]?)(i?)b?$/);if(null===r||"."===r[1]||""===r[1])return null;const n=`${r[1]}`,o="i"===r[4]||e?1024:1e3;return Math.round(Number.parseFloat(n)*o**{"":0,k:1,m:2,g:3,t:4,p:5,e:6}[r[3]])}var g=(t=>(t[t.NONE=0]="NONE",t[t.CREATE=4]="CREATE",t[t.READ=1]="READ",t[t.UPDATE=2]="UPDATE",t[t.DELETE=8]="DELETE",t[t.SHARE=16]="SHARE",t[t.ALL=31]="ALL",t))(g||{});const v=["d:getcontentlength","d:getcontenttype","d:getetag","d:getlastmodified","d:quota-available-bytes","d:resourcetype","nc:has-preview","nc:is-encrypted","nc:mount-type","oc:comments-unread","oc:favorite","oc:fileid","oc:owner-display-name","oc:owner-id","oc:permissions","oc:size"],y={d:"DAV:",nc:"http://nextcloud.org/ns",oc:"http://owncloud.org/ns",ocs:"http://open-collaboration-services.org/ns"},b=function(){return typeof window._nc_dav_properties>"u"&&(window._nc_dav_properties=[...v]),window._nc_dav_properties.map((t=>`<${t} />`)).join(" ")},w=function(){return typeof window._nc_dav_namespaces>"u"&&(window._nc_dav_namespaces={...y}),Object.keys(window._nc_dav_namespaces).map((t=>`xmlns:${t}="${window._nc_dav_namespaces?.[t]}"`)).join(" ")},A=function(){return`<?xml version="1.0"?>\n\t\t<d:propfind ${w()}>\n\t\t\t<d:prop>\n\t\t\t\t${b()}\n\t\t\t</d:prop>\n\t\t</d:propfind>`},E=function(t){return`<?xml version="1.0" encoding="UTF-8"?>\n<d:searchrequest ${w()}\n\txmlns:ns="https://github.com/icewind1991/SearchDAV/ns">\n\t<d:basicsearch>\n\t\t<d:select>\n\t\t\t<d:prop>\n\t\t\t\t${b()}\n\t\t\t</d:prop>\n\t\t</d:select>\n\t\t<d:from>\n\t\t\t<d:scope>\n\t\t\t\t<d:href>/files/${(0,o.HW)()?.uid}/</d:href>\n\t\t\t\t<d:depth>infinity</d:depth>\n\t\t\t</d:scope>\n\t\t</d:from>\n\t\t<d:where>\n\t\t\t<d:and>\n\t\t\t\t<d:or>\n\t\t\t\t\t<d:not>\n\t\t\t\t\t\t<d:eq>\n\t\t\t\t\t\t\t<d:prop>\n\t\t\t\t\t\t\t\t<d:getcontenttype/>\n\t\t\t\t\t\t\t</d:prop>\n\t\t\t\t\t\t\t<d:literal>httpd/unix-directory</d:literal>\n\t\t\t\t\t\t</d:eq>\n\t\t\t\t\t</d:not>\n\t\t\t\t\t<d:eq>\n\t\t\t\t\t\t<d:prop>\n\t\t\t\t\t\t\t<oc:size/>\n\t\t\t\t\t\t</d:prop>\n\t\t\t\t\t\t<d:literal>0</d:literal>\n\t\t\t\t\t</d:eq>\n\t\t\t\t</d:or>\n\t\t\t\t<d:gt>\n\t\t\t\t\t<d:prop>\n\t\t\t\t\t\t<d:getlastmodified/>\n\t\t\t\t\t</d:prop>\n\t\t\t\t\t<d:literal>${t}</d:literal>\n\t\t\t\t</d:gt>\n\t\t\t</d:and>\n\t\t</d:where>\n\t\t<d:orderby>\n\t\t\t<d:order>\n\t\t\t\t<d:prop>\n\t\t\t\t\t<d:getlastmodified/>\n\t\t\t\t</d:prop>\n\t\t\t\t<d:descending/>\n\t\t\t</d:order>\n\t\t</d:orderby>\n\t\t<d:limit>\n\t\t\t<d:nresults>100</d:nresults>\n\t\t\t<ns:firstresult>0</ns:firstresult>\n\t\t</d:limit>\n\t</d:basicsearch>\n</d:searchrequest>`};var x=(t=>(t.Folder="folder",t.File="file",t))(x||{});const _=function(t,e){return null!==t.match(e)},P=(t,e)=>{if(t.id&&"number"!=typeof t.id)throw new Error("Invalid id type of value");if(!t.source)throw new Error("Missing mandatory source");try{new URL(t.source)}catch{throw new Error("Invalid source format, source must be a valid URL")}if(!t.source.startsWith("http"))throw new Error("Invalid source format, only http(s) is supported");if(t.mtime&&!(t.mtime instanceof Date))throw new Error("Invalid mtime type");if(t.crtime&&!(t.crtime instanceof Date))throw new Error("Invalid crtime type");if(!t.mime||"string"!=typeof t.mime||!t.mime.match(/^[-\w.]+\/[-+\w.]+$/gi))throw new Error("Missing or invalid mandatory mime");if("size"in t&&"number"!=typeof t.size&&void 0!==t.size)throw new Error("Invalid size type");if("permissions"in t&&void 0!==t.permissions&&!("number"==typeof t.permissions&&t.permissions>=g.NONE&&t.permissions<=g.ALL))throw new Error("Invalid permissions");if(t.owner&&null!==t.owner&&"string"!=typeof t.owner)throw new Error("Invalid owner type");if(t.attributes&&"object"!=typeof t.attributes)throw new Error("Invalid attributes type");if(t.root&&"string"!=typeof t.root)throw new Error("Invalid root type");if(t.root&&!t.root.startsWith("/"))throw new Error("Root must start with a leading slash");if(t.root&&!t.source.includes(t.root))throw new Error("Root must be part of the source");if(t.root&&_(t.source,e)){const r=t.source.match(e)[0];if(!t.source.includes((0,a.join)(r,t.root)))throw new Error("The root must be relative to the service. e.g /files/emma")}if(t.status&&!Object.values(I).includes(t.status))throw new Error("Status must be a valid NodeStatus")};var I=(t=>(t.NEW="new",t.FAILED="failed",t.LOADING="loading",t.LOCKED="locked",t))(I||{});class L{_data;_attributes;_knownDavService=/(remote|public)\.php\/(web)?dav/i;constructor(t,e){P(t,e||this._knownDavService),this._data=t;const r={set:(t,e,r)=>(this.updateMtime(),Reflect.set(t,e,r)),deleteProperty:(t,e)=>(this.updateMtime(),Reflect.deleteProperty(t,e))};this._attributes=new Proxy(t.attributes||{},r),delete this._data.attributes,e&&(this._knownDavService=e)}get source(){return this._data.source.replace(/\/$/i,"")}get encodedSource(){const{origin:t}=new URL(this.source);return t+(0,u.O0)(this.source.slice(t.length))}get basename(){return(0,a.basename)(this.source)}get extension(){return(0,a.extname)(this.source)}get dirname(){if(this.root){let t=this.source;this.isDavRessource&&(t=t.split(this._knownDavService).pop());const e=t.indexOf(this.root),r=this.root.replace(/\/$/,"");return(0,a.dirname)(t.slice(e+r.length)||"/")}const t=new URL(this.source);return(0,a.dirname)(t.pathname)}get mime(){return this._data.mime}get mtime(){return this._data.mtime}get crtime(){return this._data.crtime}get size(){return this._data.size}get attributes(){return this._attributes}get permissions(){return null!==this.owner||this.isDavRessource?void 0!==this._data.permissions?this._data.permissions:g.NONE:g.READ}get owner(){return this.isDavRessource?this._data.owner:null}get isDavRessource(){return _(this.source,this._knownDavService)}get root(){return this._data.root?this._data.root.replace(/^(.+)\/$/,"$1"):this.isDavRessource&&(0,a.dirname)(this.source).split(this._knownDavService).pop()||null}get path(){if(this.root){let t=this.source;this.isDavRessource&&(t=t.split(this._knownDavService).pop());const e=t.indexOf(this.root),r=this.root.replace(/\/$/,"");return t.slice(e+r.length)||"/"}return(this.dirname+"/"+this.basename).replace(/\/\//g,"/")}get fileid(){return this._data?.id||this.attributes?.fileid}get status(){return this._data?.status}set status(t){this._data.status=t}move(t){P({...this._data,source:t},this._knownDavService),this._data.source=t,this.updateMtime()}rename(t){if(t.includes("/"))throw new Error("Invalid basename");this.move((0,a.dirname)(this.source)+"/"+t)}updateMtime(){this._data.mtime&&(this._data.mtime=new Date)}}class C extends L{get type(){return x.File}}class U extends L{constructor(t){super({...t,mime:"httpd/unix-directory"})}get type(){return x.Folder}get extension(){return null}get mime(){return"httpd/unix-directory"}}const R=`/files/${(0,o.HW)()?.uid}`,N=(0,c.dC)("dav"),O=function(t=N,e={}){const r=(0,p.UU)(t,{headers:e});function n(t){r.setHeaders({...e,"X-Requested-With":"XMLHttpRequest",requesttoken:t??""})}return(0,o.zo)(n),n((0,o.do)()),(0,p.Gu)().patch("fetch",((t,e)=>{const r=e.headers;return r?.method&&(e.method=r.method,delete r.method),fetch(t,e)})),r},k=(t,e="/",r=R)=>{const n=new AbortController;return new d.CancelablePromise((async(o,i,s)=>{s((()=>n.abort()));try{o((await t.getDirectoryContents(`${r}${e}`,{signal:n.signal,details:!0,data:`<?xml version="1.0"?>\n\t\t<oc:filter-files ${w()}>\n\t\t\t<d:prop>\n\t\t\t\t${b()}\n\t\t\t</d:prop>\n\t\t\t<oc:filter-rules>\n\t\t\t\t<oc:favorite>1</oc:favorite>\n\t\t\t</oc:filter-rules>\n\t\t</oc:filter-files>`,headers:{method:"REPORT"},includeSelf:!0})).data.filter((t=>t.filename!==e)).map((t=>T(t,r))))}catch(t){i(t)}}))},T=function(t,e=R,r=N){const n=(0,o.HW)()?.uid;if(!n)throw new Error("No user id found");const i=t.props,s=function(t=""){let e=g.NONE;return t&&((t.includes("C")||t.includes("K"))&&(e|=g.CREATE),t.includes("G")&&(e|=g.READ),(t.includes("W")||t.includes("N")||t.includes("V"))&&(e|=g.UPDATE),t.includes("D")&&(e|=g.DELETE),t.includes("R")&&(e|=g.SHARE)),e}(i?.permissions),a=(i?.["owner-id"]||n).toString(),u={id:i?.fileid||0,source:`${r}${t.filename}`,mtime:new Date(Date.parse(t.lastmod)),mime:t.mime||"application/octet-stream",size:i?.size||Number.parseInt(i.getcontentlength||"0"),permissions:s,owner:a,root:e,attributes:{...t,...i,hasPreview:i?.["has-preview"]}};return delete u.attributes?.props,"file"===t.type?new C(u):new U(u)};var S={};!function(t){const e=":A-Za-z_\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD",r="["+e+"]["+e+"\\-.\\d\\u00B7\\u0300-\\u036F\\u203F-\\u2040]*",n=new RegExp("^"+r+"$");t.isExist=function(t){return typeof t<"u"},t.isEmptyObject=function(t){return 0===Object.keys(t).length},t.merge=function(t,e,r){if(e){const n=Object.keys(e),o=n.length;for(let i=0;i<o;i++)t[n[i]]="strict"===r?[e[n[i]]]:e[n[i]]}},t.getValue=function(e){return t.isExist(e)?e:""},t.isName=function(t){const e=n.exec(t);return!(null===e||typeof e>"u")},t.getAllMatches=function(t,e){const r=[];let n=e.exec(t);for(;n;){const o=[];o.startIndex=e.lastIndex-n[0].length;const i=n.length;for(let t=0;t<i;t++)o.push(n[t]);r.push(o),n=e.exec(t)}return r},t.nameRegexp=r}(S);new RegExp("(\\s*)([^\\s=]+)(\\s*=)?(\\s*(['\"])(([\\s\\S])*?)\\5)?","g");var j={};const F={preserveOrder:!1,attributeNamePrefix:"@_",attributesGroupName:!1,textNodeName:"#text",ignoreAttributes:!0,removeNSPrefix:!1,allowBooleanAttributes:!1,parseTagValue:!0,parseAttributeValue:!1,trimValues:!0,cdataPropName:!1,numberParseOptions:{hex:!0,leadingZeros:!0,eNotation:!0},tagValueProcessor:function(t,e){return e},attributeValueProcessor:function(t,e){return e},stopNodes:[],alwaysCreateTextNode:!1,isArray:()=>!1,commentPropName:!1,unpairedTags:[],processEntities:!0,htmlEntities:!1,ignoreDeclaration:!1,ignorePiTags:!1,transformTagName:!1,transformAttributeName:!1,updateTag:function(t,e,r){return t}};j.buildOptions=function(t){return Object.assign({},F,t)},j.defaultOptions=F,!Number.parseInt&&window.parseInt&&(Number.parseInt=window.parseInt),!Number.parseFloat&&window.parseFloat&&(Number.parseFloat=window.parseFloat),new RegExp("([^\\s=]+)\\s*(=\\s*(['\"])([\\s\\S]*?)\\3)?","gm");var $={};function D(t,e,r){let n;const o={};for(let i=0;i<t.length;i++){const s=t[i],a=B(s);let u="";if(u=void 0===r?a:r+"."+a,a===e.textNodeName)void 0===n?n=s[a]:n+=""+s[a];else{if(void 0===a)continue;if(s[a]){let t=D(s[a],e,u);const r=G(t,e);s[":@"]?q(t,s[":@"],u,e):1!==Object.keys(t).length||void 0===t[e.textNodeName]||e.alwaysCreateTextNode?0===Object.keys(t).length&&(e.alwaysCreateTextNode?t[e.textNodeName]="":t=""):t=t[e.textNodeName],void 0!==o[a]&&o.hasOwnProperty(a)?(Array.isArray(o[a])||(o[a]=[o[a]]),o[a].push(t)):e.isArray(a,u,r)?o[a]=[t]:o[a]=t}}}return"string"==typeof n?n.length>0&&(o[e.textNodeName]=n):void 0!==n&&(o[e.textNodeName]=n),o}function B(t){const e=Object.keys(t);for(let t=0;t<e.length;t++){const r=e[t];if(":@"!==r)return r}}function q(t,e,r,n){if(e){const o=Object.keys(e),i=o.length;for(let s=0;s<i;s++){const i=o[s];n.isArray(i,r+"."+i,!0,!0)?t[i]=[e[i]]:t[i]=e[i]}}}function G(t,e){const{textNodeName:r}=e,n=Object.keys(t).length;return!(0!==n&&(1!==n||!t[r]&&"boolean"!=typeof t[r]&&0!==t[r]))}$.prettify=function(t,e){return D(t,e)};const{buildOptions:M}=j,{prettify:V}=$;function K(t,e,r,n){let o="",i=!1;for(let s=0;s<t.length;s++){const a=t[s],u=H(a);if(void 0===u)continue;let c="";if(c=0===r.length?u:`${r}.${u}`,u===e.textNodeName){let t=a[u];J(c,e)||(t=e.tagValueProcessor(u,t),t=W(t,e)),i&&(o+=n),o+=t,i=!1;continue}if(u===e.cdataPropName){i&&(o+=n),o+=`<![CDATA[${a[u][0][e.textNodeName]}]]>`,i=!1;continue}if(u===e.commentPropName){o+=n+`\x3c!--${a[u][0][e.textNodeName]}--\x3e`,i=!0;continue}if("?"===u[0]){const t=z(a[":@"],e),r="?xml"===u?"":n;let s=a[u][0][e.textNodeName];s=0!==s.length?" "+s:"",o+=r+`<${u}${s}${t}?>`,i=!0;continue}let p=n;""!==p&&(p+=e.indentBy);const d=n+`<${u}${z(a[":@"],e)}`,l=K(a[u],e,c,p);-1!==e.unpairedTags.indexOf(u)?e.suppressUnpairedNode?o+=d+">":o+=d+"/>":l&&0!==l.length||!e.suppressEmptyNode?l&&l.endsWith(">")?o+=d+`>${l}${n}</${u}>`:(o+=d+">",l&&""!==n&&(l.includes("/>")||l.includes("</"))?o+=n+e.indentBy+l+n:o+=l,o+=`</${u}>`):o+=d+"/>",i=!0}return o}function H(t){const e=Object.keys(t);for(let r=0;r<e.length;r++){const n=e[r];if(t.hasOwnProperty(n)&&":@"!==n)return n}}function z(t,e){let r="";if(t&&!e.ignoreAttributes)for(let n in t){if(!t.hasOwnProperty(n))continue;let o=e.attributeValueProcessor(n,t[n]);o=W(o,e),!0===o&&e.suppressBooleanAttributes?r+=` ${n.substr(e.attributeNamePrefix.length)}`:r+=` ${n.substr(e.attributeNamePrefix.length)}="${o}"`}return r}function J(t,e){let r=(t=t.substr(0,t.length-e.textNodeName.length-1)).substr(t.lastIndexOf(".")+1);for(let n in e.stopNodes)if(e.stopNodes[n]===t||e.stopNodes[n]==="*."+r)return!0;return!1}function W(t,e){if(t&&t.length>0&&e.processEntities)for(let r=0;r<e.entities.length;r++){const n=e.entities[r];t=t.replace(n.regex,n.val)}return t}const Q=function(t,e){let r="";return e.format&&e.indentBy.length>0&&(r="\n"),K(t,e,"",r)},Y={attributeNamePrefix:"@_",attributesGroupName:!1,textNodeName:"#text",ignoreAttributes:!0,cdataPropName:!1,format:!1,indentBy:" ",suppressEmptyNode:!1,suppressUnpairedNode:!0,suppressBooleanAttributes:!0,tagValueProcessor:function(t,e){return e},attributeValueProcessor:function(t,e){return e},preserveOrder:!1,commentPropName:!1,unpairedTags:[],entities:[{regex:new RegExp("&","g"),val:"&"},{regex:new RegExp(">","g"),val:">"},{regex:new RegExp("<","g"),val:"<"},{regex:new RegExp("'","g"),val:"'"},{regex:new RegExp('"',"g"),val:"""}],processEntities:!0,stopNodes:[],oneListGroup:!1};function X(t){this.options=Object.assign({},Y,t),this.options.ignoreAttributes||this.options.attributesGroupName?this.isAttribute=function(){return!1}:(this.attrPrefixLen=this.options.attributeNamePrefix.length,this.isAttribute=et),this.processTextOrObjNode=Z,this.options.format?(this.indentate=tt,this.tagEndChar=">\n",this.newLine="\n"):(this.indentate=function(){return""},this.tagEndChar=">",this.newLine="")}function Z(t,e,r){const n=this.j2x(t,r+1);return void 0!==t[this.options.textNodeName]&&1===Object.keys(t).length?this.buildTextValNode(t[this.options.textNodeName],e,n.attrStr,r):this.buildObjectNode(n.val,e,n.attrStr,r)}function tt(t){return this.options.indentBy.repeat(t)}function et(t){return!(!t.startsWith(this.options.attributeNamePrefix)||t===this.options.textNodeName)&&t.substr(this.attrPrefixLen)}X.prototype.build=function(t){return this.options.preserveOrder?Q(t,this.options):(Array.isArray(t)&&this.options.arrayNodeName&&this.options.arrayNodeName.length>1&&(t={[this.options.arrayNodeName]:t}),this.j2x(t,0).val)},X.prototype.j2x=function(t,e){let r="",n="";for(let o in t)if(Object.prototype.hasOwnProperty.call(t,o))if(typeof t[o]>"u")this.isAttribute(o)&&(n+="");else if(null===t[o])this.isAttribute(o)?n+="":"?"===o[0]?n+=this.indentate(e)+"<"+o+"?"+this.tagEndChar:n+=this.indentate(e)+"<"+o+"/"+this.tagEndChar;else if(t[o]instanceof Date)n+=this.buildTextValNode(t[o],o,"",e);else if("object"!=typeof t[o]){const i=this.isAttribute(o);if(i)r+=this.buildAttrPairStr(i,""+t[o]);else if(o===this.options.textNodeName){let e=this.options.tagValueProcessor(o,""+t[o]);n+=this.replaceEntitiesValue(e)}else n+=this.buildTextValNode(t[o],o,"",e)}else if(Array.isArray(t[o])){const r=t[o].length;let i="";for(let s=0;s<r;s++){const r=t[o][s];typeof r>"u"||(null===r?"?"===o[0]?n+=this.indentate(e)+"<"+o+"?"+this.tagEndChar:n+=this.indentate(e)+"<"+o+"/"+this.tagEndChar:"object"==typeof r?this.options.oneListGroup?i+=this.j2x(r,e+1).val:i+=this.processTextOrObjNode(r,o,e):i+=this.buildTextValNode(r,o,"",e))}this.options.oneListGroup&&(i=this.buildObjectNode(i,o,"",e)),n+=i}else if(this.options.attributesGroupName&&o===this.options.attributesGroupName){const e=Object.keys(t[o]),n=e.length;for(let i=0;i<n;i++)r+=this.buildAttrPairStr(e[i],""+t[o][e[i]])}else n+=this.processTextOrObjNode(t[o],o,e);return{attrStr:r,val:n}},X.prototype.buildAttrPairStr=function(t,e){return e=this.options.attributeValueProcessor(t,""+e),e=this.replaceEntitiesValue(e),this.options.suppressBooleanAttributes&&"true"===e?" "+t:" "+t+'="'+e+'"'},X.prototype.buildObjectNode=function(t,e,r,n){if(""===t)return"?"===e[0]?this.indentate(n)+"<"+e+r+"?"+this.tagEndChar:this.indentate(n)+"<"+e+r+this.closeTag(e)+this.tagEndChar;{let o="</"+e+this.tagEndChar,i="";return"?"===e[0]&&(i="?",o=""),!r&&""!==r||-1!==t.indexOf("<")?!1!==this.options.commentPropName&&e===this.options.commentPropName&&0===i.length?this.indentate(n)+`\x3c!--${t}--\x3e`+this.newLine:this.indentate(n)+"<"+e+r+i+this.tagEndChar+t+this.indentate(n)+o:this.indentate(n)+"<"+e+r+i+">"+t+o}},X.prototype.closeTag=function(t){let e="";return-1!==this.options.unpairedTags.indexOf(t)?this.options.suppressUnpairedNode||(e="/"):e=this.options.suppressEmptyNode?"/":`></${t}`,e},X.prototype.buildTextValNode=function(t,e,r,n){if(!1!==this.options.cdataPropName&&e===this.options.cdataPropName)return this.indentate(n)+`<![CDATA[${t}]]>`+this.newLine;if(!1!==this.options.commentPropName&&e===this.options.commentPropName)return this.indentate(n)+`\x3c!--${t}--\x3e`+this.newLine;if("?"===e[0])return this.indentate(n)+"<"+e+r+"?"+this.tagEndChar;{let o=this.options.tagValueProcessor(e,t);return o=this.replaceEntitiesValue(o),""===o?this.indentate(n)+"<"+e+r+this.closeTag(e)+this.tagEndChar:this.indentate(n)+"<"+e+r+">"+o+"</"+e+this.tagEndChar}},X.prototype.replaceEntitiesValue=function(t){if(t&&t.length>0&&this.options.processEntities)for(let e=0;e<this.options.entities.length;e++){const r=this.options.entities[e];t=t.replace(r.regex,r.val)}return t}}},i={};function s(t){var e=i[t];if(void 0!==e)return e.exports;var r=i[t]={id:t,loaded:!1,exports:{}};return o[t].call(r.exports,r,r.exports,s),r.loaded=!0,r.exports}s.m=o,e=[],s.O=(t,r,n,o)=>{if(!r){var i=1/0;for(p=0;p<e.length;p++){r=e[p][0],n=e[p][1],o=e[p][2];for(var a=!0,u=0;u<r.length;u++)(!1&o||i>=o)&&Object.keys(s.O).every((t=>s.O[t](r[u])))?r.splice(u--,1):(a=!1,o<i&&(i=o));if(a){e.splice(p--,1);var c=n();void 0!==c&&(t=c)}}return t}o=o||0;for(var p=e.length;p>0&&e[p-1][2]>o;p--)e[p]=e[p-1];e[p]=[r,n,o]},s.n=t=>{var e=t&&t.__esModule?()=>t.default:()=>t;return s.d(e,{a:e}),e},s.d=(t,e)=>{for(var r in e)s.o(e,r)&&!s.o(t,r)&&Object.defineProperty(t,r,{enumerable:!0,get:e[r]})},s.f={},s.e=t=>Promise.all(Object.keys(s.f).reduce(((e,r)=>(s.f[r](t,e),e)),[])),s.u=t=>(({3239:"settings-users",4529:"settings-apps-view"}[t]||t)+"-"+t+".js?v="+{1110:"a5d6e6f59aa058840a1e",1439:"8111a630d23ed528e83e",1544:"339855cf6016c557e17a",3239:"a0d2948d88455156ef59",3865:"1b3dd2786e4df4dcbf8d",4529:"2724acfa2ab8a8267428",5455:"8915a218db5b7bc90f34",8630:"eb1ab06c4928352754c5"}[t]),s.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(t){if("object"==typeof window)return window}}(),s.o=(t,e)=>Object.prototype.hasOwnProperty.call(t,e),r={},n="nextcloud:",s.l=(t,e,o,i)=>{if(r[t])r[t].push(e);else{var a,u;if(void 0!==o)for(var c=document.getElementsByTagName("script"),p=0;p<c.length;p++){var d=c[p];if(d.getAttribute("src")==t||d.getAttribute("data-webpack")==n+o){a=d;break}}a||(u=!0,(a=document.createElement("script")).charset="utf-8",a.timeout=120,s.nc&&a.setAttribute("nonce",s.nc),a.setAttribute("data-webpack",n+o),a.src=t),r[t]=[e];var l=(e,n)=>{a.onerror=a.onload=null,clearTimeout(h);var o=r[t];if(delete r[t],a.parentNode&&a.parentNode.removeChild(a),o&&o.forEach((t=>t(n))),e)return e(n)},h=setTimeout(l.bind(null,void 0,{type:"timeout",target:a}),12e4);a.onerror=l.bind(null,a.onerror),a.onload=l.bind(null,a.onload),u&&document.head.appendChild(a)}},s.r=t=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},s.nmd=t=>(t.paths=[],t.children||(t.children=[]),t),s.j=2689,(()=>{var t;s.g.importScripts&&(t=s.g.location+"");var e=s.g.document;if(!t&&e&&(e.currentScript&&(t=e.currentScript.src),!t)){var r=e.getElementsByTagName("script");if(r.length)for(var n=r.length-1;n>-1&&(!t||!/^http(s?):/.test(t));)t=r[n--].src}if(!t)throw new Error("Automatic publicPath is not supported in this browser");t=t.replace(/#.*$/,"").replace(/\?.*$/,"").replace(/\/[^\/]+$/,"/"),s.p=t})(),(()=>{s.b=document.baseURI||self.location.href;var t={2689:0};s.f.j=(e,r)=>{var n=s.o(t,e)?t[e]:void 0;if(0!==n)if(n)r.push(n[2]);else{var o=new Promise(((r,o)=>n=t[e]=[r,o]));r.push(n[2]=o);var i=s.p+s.u(e),a=new Error;s.l(i,(r=>{if(s.o(t,e)&&(0!==(n=t[e])&&(t[e]=void 0),n)){var o=r&&("load"===r.type?"missing":r.type),i=r&&r.target&&r.target.src;a.message="Loading chunk "+e+" failed.\n("+o+": "+i+")",a.name="ChunkLoadError",a.type=o,a.request=i,n[1](a)}}),"chunk-"+e,e)}},s.O.j=e=>0===t[e];var e=(e,r)=>{var n,o,i=r[0],a=r[1],u=r[2],c=0;if(i.some((e=>0!==t[e]))){for(n in a)s.o(a,n)&&(s.m[n]=a[n]);if(u)var p=u(s)}for(e&&e(r);c<i.length;c++)o=i[c],s.o(t,o)&&t[o]&&t[o][0](),t[o]=0;return s.O(p)},r=self.webpackChunknextcloud=self.webpackChunknextcloud||[];r.forEach(e.bind(null,0)),r.push=e.bind(null,r.push.bind(r))})(),s.nc=void 0;var a=s.O(void 0,[4208],(()=>s(74329)));a=s.O(a)})(); +//# sourceMappingURL=settings-vue-settings-apps-users-management.js.map?v=ffb4d7435d3d155f134e
\ No newline at end of file diff --git a/dist/settings-vue-settings-apps-users-management.js.map b/dist/settings-vue-settings-apps-users-management.js.map index 1eb1985cc42..0bcff97a055 100644 --- a/dist/settings-vue-settings-apps-users-management.js.map +++ b/dist/settings-vue-settings-apps-users-management.js.map @@ -1 +1 @@ -{"version":3,"file":"settings-vue-settings-apps-users-management.js?v=369ea4a2626ed72a9f94","mappings":"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","sources":["webpack:///nextcloud/webpack/runtime/chunk loaded","webpack:///nextcloud/webpack/runtime/load script","webpack:///nextcloud/apps/settings/src/store/api.js","webpack:///nextcloud/apps/settings/src/store/users.js","webpack:///nextcloud/apps/settings/src/store/apps.js","webpack:///nextcloud/apps/settings/src/store/users-settings.js","webpack:///nextcloud/apps/settings/src/store/oc.js","webpack:///nextcloud/apps/settings/src/store/index.js","webpack:///nextcloud/apps/settings/src/constants/GroupManagement.ts","webpack:///nextcloud/apps/settings/src/logger.ts","webpack:///nextcloud/apps/settings/src/views/SettingsApp.vue","webpack:///nextcloud/apps/settings/src/views/SettingsApp.vue?vue&type=script&setup=true&lang=ts","webpack://nextcloud/./apps/settings/src/views/SettingsApp.vue?3a67","webpack:///nextcloud/apps/settings/src/router/routes.ts","webpack:///nextcloud/apps/settings/src/router/index.ts","webpack:///nextcloud/apps/settings/src/main-apps-users-management.ts","webpack:///nextcloud/node_modules/vue-router/dist/vue-router.esm.js","webpack:///nextcloud/node_modules/vuex-router-sync/index.js","webpack:///nextcloud/node_modules/@nextcloud/files/dist/index.mjs","webpack:///nextcloud/webpack/bootstrap","webpack:///nextcloud/webpack/runtime/compat get default export","webpack:///nextcloud/webpack/runtime/define property getters","webpack:///nextcloud/webpack/runtime/ensure chunk","webpack:///nextcloud/webpack/runtime/get javascript chunk filename","webpack:///nextcloud/webpack/runtime/global","webpack:///nextcloud/webpack/runtime/hasOwnProperty shorthand","webpack:///nextcloud/webpack/runtime/make namespace object","webpack:///nextcloud/webpack/runtime/node module decorator","webpack:///nextcloud/webpack/runtime/runtimeId","webpack:///nextcloud/webpack/runtime/publicPath","webpack:///nextcloud/webpack/runtime/jsonp chunk loading","webpack:///nextcloud/webpack/runtime/nonce","webpack:///nextcloud/webpack/startup"],"sourcesContent":["var deferred = [];\n__webpack_require__.O = (result, chunkIds, fn, priority) => {\n\tif(chunkIds) {\n\t\tpriority = priority || 0;\n\t\tfor(var i = deferred.length; i > 0 && deferred[i - 1][2] > priority; i--) deferred[i] = deferred[i - 1];\n\t\tdeferred[i] = [chunkIds, fn, priority];\n\t\treturn;\n\t}\n\tvar notFulfilled = Infinity;\n\tfor (var i = 0; i < deferred.length; i++) {\n\t\tvar chunkIds = deferred[i][0];\n\t\tvar fn = deferred[i][1];\n\t\tvar priority = deferred[i][2];\n\t\tvar fulfilled = true;\n\t\tfor (var j = 0; j < chunkIds.length; j++) {\n\t\t\tif ((priority & 1 === 0 || notFulfilled >= priority) && Object.keys(__webpack_require__.O).every((key) => (__webpack_require__.O[key](chunkIds[j])))) {\n\t\t\t\tchunkIds.splice(j--, 1);\n\t\t\t} else {\n\t\t\t\tfulfilled = false;\n\t\t\t\tif(priority < notFulfilled) notFulfilled = priority;\n\t\t\t}\n\t\t}\n\t\tif(fulfilled) {\n\t\t\tdeferred.splice(i--, 1)\n\t\t\tvar r = fn();\n\t\t\tif (r !== undefined) result = r;\n\t\t}\n\t}\n\treturn result;\n};","var inProgress = {};\nvar dataWebpackPrefix = \"nextcloud:\";\n// loadScript function to load a script via script tag\n__webpack_require__.l = (url, done, key, chunkId) => {\n\tif(inProgress[url]) { inProgress[url].push(done); return; }\n\tvar script, needAttach;\n\tif(key !== undefined) {\n\t\tvar scripts = document.getElementsByTagName(\"script\");\n\t\tfor(var i = 0; i < scripts.length; i++) {\n\t\t\tvar s = scripts[i];\n\t\t\tif(s.getAttribute(\"src\") == url || s.getAttribute(\"data-webpack\") == dataWebpackPrefix + key) { script = s; break; }\n\t\t}\n\t}\n\tif(!script) {\n\t\tneedAttach = true;\n\t\tscript = document.createElement('script');\n\n\t\tscript.charset = 'utf-8';\n\t\tscript.timeout = 120;\n\t\tif (__webpack_require__.nc) {\n\t\t\tscript.setAttribute(\"nonce\", __webpack_require__.nc);\n\t\t}\n\t\tscript.setAttribute(\"data-webpack\", dataWebpackPrefix + key);\n\n\t\tscript.src = url;\n\t}\n\tinProgress[url] = [done];\n\tvar onScriptComplete = (prev, event) => {\n\t\t// avoid mem leaks in IE.\n\t\tscript.onerror = script.onload = null;\n\t\tclearTimeout(timeout);\n\t\tvar doneFns = inProgress[url];\n\t\tdelete inProgress[url];\n\t\tscript.parentNode && script.parentNode.removeChild(script);\n\t\tdoneFns && doneFns.forEach((fn) => (fn(event)));\n\t\tif(prev) return prev(event);\n\t}\n\tvar timeout = setTimeout(onScriptComplete.bind(null, undefined, { type: 'timeout', target: script }), 120000);\n\tscript.onerror = onScriptComplete.bind(null, script.onerror);\n\tscript.onload = onScriptComplete.bind(null, script.onload);\n\tneedAttach && document.head.appendChild(script);\n};","/**\n * @copyright Copyright (c) 2018 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Julius Härtl <jus@bitgrid.net>\n * @author Roeland Jago Douma <roeland@famdouma.nl>\n * @author Sujith Haridasan <sujith.h@gmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport axios from '@nextcloud/axios'\nimport { confirmPassword } from '@nextcloud/password-confirmation'\nimport '@nextcloud/password-confirmation/dist/style.css'\n\nconst sanitize = function(url) {\n\treturn url.replace(/\\/$/, '') // Remove last url slash\n}\n\nexport default {\n\n\t/**\n\t * This Promise is used to chain a request that require an admin password confirmation\n\t * Since chaining Promise have a very precise behavior concerning catch and then,\n\t * you'll need to be careful when using it.\n\t * e.g\n\t * // store\n\t * action(context) {\n\t * return api.requireAdmin().then((response) => {\n\t * return api.get('url')\n\t * .then((response) => {API success})\n\t * .catch((error) => {API failure});\n\t * }).catch((error) => {requireAdmin failure});\n\t * }\n\t * // vue\n\t * this.$store.dispatch('action').then(() => {always executed})\n\t *\n\t * Since Promise.then().catch().then() will always execute the last then\n\t * this.$store.dispatch('action').then will always be executed\n\t *\n\t * If you want requireAdmin failure to also catch the API request failure\n\t * you will need to throw a new error in the api.get.catch()\n\t *\n\t * e.g\n\t * api.requireAdmin().then((response) => {\n\t * api.get('url')\n\t * .then((response) => {API success})\n\t * .catch((error) => {throw error;});\n\t * }).catch((error) => {requireAdmin OR API failure});\n\t *\n\t * @return {Promise}\n\t */\n\trequireAdmin() {\n\t\treturn confirmPassword()\n\t},\n\tget(url, options) {\n\t\treturn axios.get(sanitize(url), options)\n\t},\n\tpost(url, data) {\n\t\treturn axios.post(sanitize(url), data)\n\t},\n\tpatch(url, data) {\n\t\treturn axios.patch(sanitize(url), data)\n\t},\n\tput(url, data) {\n\t\treturn axios.put(sanitize(url), data)\n\t},\n\tdelete(url, data) {\n\t\treturn axios.delete(sanitize(url), { params: data })\n\t},\n}\n","/**\n * @copyright Copyright (c) 2018 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author Arthur Schiwon <blizzz@arthur-schiwon.de>\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author Daniel Calviño Sánchez <danxuliu@gmail.com>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Julius Härtl <jus@bitgrid.net>\n * @author Roeland Jago Douma <roeland@famdouma.nl>\n * @author Vincent Petry <vincent@nextcloud.com>\n * @author Stephan Orbaugh <stephan.orbaugh@nextcloud.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport { getBuilder } from '@nextcloud/browser-storage'\nimport { getCapabilities } from '@nextcloud/capabilities'\nimport { parseFileSize } from '@nextcloud/files'\nimport { showError } from '@nextcloud/dialogs'\nimport { generateOcsUrl, generateUrl } from '@nextcloud/router'\nimport axios from '@nextcloud/axios'\n\nimport { GroupSorting } from '../constants/GroupManagement.ts'\nimport api from './api.js'\nimport logger from '../logger.ts'\n\nconst localStorage = getBuilder('settings').persist(true).build()\n\nconst defaults = {\n\tgroup: {\n\t\tid: '',\n\t\tname: '',\n\t\tusercount: 0,\n\t\tdisabled: 0,\n\t\tcanAdd: true,\n\t\tcanRemove: true,\n\t},\n}\n\nconst state = {\n\tusers: [],\n\tgroups: [],\n\torderBy: GroupSorting.UserCount,\n\tminPasswordLength: 0,\n\tusersOffset: 0,\n\tusersLimit: 25,\n\tdisabledUsersOffset: 0,\n\tdisabledUsersLimit: 25,\n\tuserCount: 0,\n\tshowConfig: {\n\t\tshowStoragePath: localStorage.getItem('account_settings__showStoragePath') === 'true',\n\t\tshowUserBackend: localStorage.getItem('account_settings__showUserBackend') === 'true',\n\t\tshowLastLogin: localStorage.getItem('account_settings__showLastLogin') === 'true',\n\t\tshowNewUserForm: localStorage.getItem('account_settings__showNewUserForm') === 'true',\n\t\tshowLanguages: localStorage.getItem('account_settings__showLanguages') === 'true',\n\t},\n}\n\nconst mutations = {\n\tappendUsers(state, usersObj) {\n\t\tconst existingUsers = state.users.map(({ id }) => id)\n\t\tconst newUsers = Object.values(usersObj)\n\t\t\t.filter(({ id }) => !existingUsers.includes(id))\n\n\t\tconst users = state.users.concat(newUsers)\n\t\tstate.usersOffset += state.usersLimit\n\t\tstate.users = users\n\t},\n\tupdateDisabledUsers(state, _usersObj) {\n\t\tstate.disabledUsersOffset += state.disabledUsersLimit\n\t},\n\tsetPasswordPolicyMinLength(state, length) {\n\t\tstate.minPasswordLength = length !== '' ? length : 0\n\t},\n\tinitGroups(state, { groups, orderBy, userCount }) {\n\t\tstate.groups = groups.map(group => Object.assign({}, defaults.group, group))\n\t\tstate.orderBy = orderBy\n\t\tstate.userCount = userCount\n\t},\n\taddGroup(state, { gid, displayName }) {\n\t\ttry {\n\t\t\tif (typeof state.groups.find((group) => group.id === gid) !== 'undefined') {\n\t\t\t\treturn\n\t\t\t}\n\t\t\t// extend group to default values\n\t\t\tconst group = Object.assign({}, defaults.group, {\n\t\t\t\tid: gid,\n\t\t\t\tname: displayName,\n\t\t\t})\n\t\t\tstate.groups.unshift(group)\n\t\t} catch (e) {\n\t\t\tconsole.error('Can\\'t create group', e)\n\t\t}\n\t},\n\trenameGroup(state, { gid, displayName }) {\n\t\tconst groupIndex = state.groups.findIndex(groupSearch => groupSearch.id === gid)\n\t\tif (groupIndex >= 0) {\n\t\t\tconst updatedGroup = state.groups[groupIndex]\n\t\t\tupdatedGroup.name = displayName\n\t\t\tstate.groups.splice(groupIndex, 1, updatedGroup)\n\t\t}\n\t},\n\tremoveGroup(state, gid) {\n\t\tconst groupIndex = state.groups.findIndex(groupSearch => groupSearch.id === gid)\n\t\tif (groupIndex >= 0) {\n\t\t\tstate.groups.splice(groupIndex, 1)\n\t\t}\n\t},\n\taddUserGroup(state, { userid, gid }) {\n\t\tconst group = state.groups.find(groupSearch => groupSearch.id === gid)\n\t\tconst user = state.users.find(user => user.id === userid)\n\t\t// increase count if user is enabled\n\t\tif (group && user.enabled && state.userCount > 0) {\n\t\t\tgroup.usercount++\n\t\t}\n\t\tconst groups = user.groups\n\t\tgroups.push(gid)\n\t},\n\tremoveUserGroup(state, { userid, gid }) {\n\t\tconst group = state.groups.find(groupSearch => groupSearch.id === gid)\n\t\tconst user = state.users.find(user => user.id === userid)\n\t\t// lower count if user is enabled\n\t\tif (group && user.enabled && state.userCount > 0) {\n\t\t\tgroup.usercount--\n\t\t}\n\t\tconst groups = user.groups\n\t\tgroups.splice(groups.indexOf(gid), 1)\n\t},\n\taddUserSubAdmin(state, { userid, gid }) {\n\t\tconst groups = state.users.find(user => user.id === userid).subadmin\n\t\tgroups.push(gid)\n\t},\n\tremoveUserSubAdmin(state, { userid, gid }) {\n\t\tconst groups = state.users.find(user => user.id === userid).subadmin\n\t\tgroups.splice(groups.indexOf(gid), 1)\n\t},\n\tdeleteUser(state, userid) {\n\t\tconst userIndex = state.users.findIndex(user => user.id === userid)\n\t\tthis.commit('updateUserCounts', { user: state.users[userIndex], actionType: 'remove' })\n\t\tstate.users.splice(userIndex, 1)\n\t},\n\taddUserData(state, response) {\n\t\tconst user = response.data.ocs.data\n\t\tstate.users.unshift(user)\n\t\tthis.commit('updateUserCounts', { user, actionType: 'create' })\n\t},\n\tenableDisableUser(state, { userid, enabled }) {\n\t\tconst user = state.users.find(user => user.id === userid)\n\t\tuser.enabled = enabled\n\t\tthis.commit('updateUserCounts', { user, actionType: enabled ? 'enable' : 'disable' })\n\t},\n\t// update active/disabled counts, groups counts\n\tupdateUserCounts(state, { user, actionType }) {\n\t\t// 0 is a special value\n\t\tif (state.userCount === 0) {\n\t\t\treturn\n\t\t}\n\n\t\tconst disabledGroup = state.groups.find(group => group.id === 'disabled')\n\t\tswitch (actionType) {\n\t\tcase 'enable':\n\t\tcase 'disable':\n\t\t\tdisabledGroup.usercount += user.enabled ? -1 : 1 // update Disabled Users count\n\t\t\tstate.userCount += user.enabled ? 1 : -1 // update Active Users count\n\t\t\tuser.groups.forEach(userGroup => {\n\t\t\t\tconst group = state.groups.find(groupSearch => groupSearch.id === userGroup)\n\t\t\t\tgroup.disabled += user.enabled ? -1 : 1 // update group disabled count\n\t\t\t})\n\t\t\tbreak\n\t\tcase 'create':\n\t\t\tstate.userCount++ // increment Active Users count\n\n\t\t\tuser.groups.forEach(userGroup => {\n\t\t\t\tstate.groups\n\t\t\t\t\t.find(groupSearch => groupSearch.id === userGroup)\n\t\t\t\t .usercount++ // increment group total count\n\t\t\t})\n\t\t\tbreak\n\t\tcase 'remove':\n\t\t\tif (user.enabled) {\n\t\t\t\tstate.userCount-- // decrement Active Users count\n\t\t\t\tuser.groups.forEach(userGroup => {\n\t\t\t\t\tconst group = state.groups.find(groupSearch => groupSearch.id === userGroup)\n\t\t\t\t\tif (!group) {\n\t\t\t\t\t\tconsole.warn('User group ' + userGroup + ' does not exist during user removal')\n\t\t\t\t\t\treturn\n\t\t\t\t\t}\n\t\t\t\t\tgroup.usercount-- // decrement group total count\n\t\t\t\t})\n\t\t\t} else {\n\t\t\t\tdisabledGroup.usercount-- // decrement Disabled Users count\n\t\t\t\tuser.groups.forEach(userGroup => {\n\t\t\t\t\tconst group = state.groups.find(groupSearch => groupSearch.id === userGroup)\n\t\t\t\t\tgroup.disabled-- // decrement group disabled count\n\t\t\t\t})\n\t\t\t}\n\t\t\tbreak\n\t\tdefault:\n\t\t\tlogger.error(`Unknown action type in updateUserCounts: '${actionType}'`)\n\t\t\t// not throwing error to interrupt execution as this is not fatal\n\t\t}\n\t},\n\tsetUserData(state, { userid, key, value }) {\n\t\tif (key === 'quota') {\n\t\t\tconst humanValue = parseFileSize(value, true)\n\t\t\tstate.users.find(user => user.id === userid)[key][key] = humanValue !== null ? humanValue : value\n\t\t} else {\n\t\t\tstate.users.find(user => user.id === userid)[key] = value\n\t\t}\n\t},\n\n\t/**\n\t * Reset users list\n\t *\n\t * @param {object} state the store state\n\t */\n\tresetUsers(state) {\n\t\tstate.users = []\n\t\tstate.usersOffset = 0\n\t\tstate.disabledUsersOffset = 0\n\t},\n\n\tsetShowConfig(state, { key, value }) {\n\t\tlocalStorage.setItem(`account_settings__${key}`, JSON.stringify(value))\n\t\tstate.showConfig[key] = value\n\t},\n\n\tsetGroupSorting(state, sorting) {\n\t\tconst oldValue = state.orderBy\n\t\tstate.orderBy = sorting\n\n\t\t// Persist the value on the server\n\t\taxios.post(\n\t\t\tgenerateUrl('/settings/users/preferences/group.sortBy'),\n\t\t\t{\n\t\t\t\tvalue: String(sorting),\n\t\t\t},\n\t\t).catch((error) => {\n\t\t\tstate.orderBy = oldValue\n\t\t\tshowError(t('settings', 'Could not set group sorting'))\n\t\t\tlogger.error(error)\n\t\t})\n\t},\n}\n\nconst getters = {\n\tgetUsers(state) {\n\t\treturn state.users\n\t},\n\tgetGroups(state) {\n\t\treturn state.groups\n\t},\n\tgetSubadminGroups(state) {\n\t\t// Can't be subadmin of admin or disabled\n\t\treturn state.groups.filter(group => group.id !== 'admin' && group.id !== 'disabled')\n\t},\n\tgetSortedGroups(state) {\n\t\tconst groups = [...state.groups]\n\t\tif (state.orderBy === GroupSorting.UserCount) {\n\t\t\treturn groups.sort((a, b) => {\n\t\t\t\tconst numA = a.usercount - a.disabled\n\t\t\t\tconst numB = b.usercount - b.disabled\n\t\t\t\treturn (numA < numB) ? 1 : (numB < numA ? -1 : a.name.localeCompare(b.name))\n\t\t\t})\n\t\t} else {\n\t\t\treturn groups.sort((a, b) => a.name.localeCompare(b.name))\n\t\t}\n\t},\n\tgetGroupSorting(state) {\n\t\treturn state.orderBy\n\t},\n\tgetPasswordPolicyMinLength(state) {\n\t\treturn state.minPasswordLength\n\t},\n\tgetUsersOffset(state) {\n\t\treturn state.usersOffset\n\t},\n\tgetUsersLimit(state) {\n\t\treturn state.usersLimit\n\t},\n\tgetDisabledUsersOffset(state) {\n\t\treturn state.disabledUsersOffset\n\t},\n\tgetDisabledUsersLimit(state) {\n\t\treturn state.disabledUsersLimit\n\t},\n\tgetUserCount(state) {\n\t\treturn state.userCount\n\t},\n\tgetShowConfig(state) {\n\t\treturn state.showConfig\n\t},\n}\n\nconst CancelToken = axios.CancelToken\nlet searchRequestCancelSource = null\n\nconst actions = {\n\n\t/**\n\t * search users\n\t *\n\t * @param {object} context store context\n\t * @param {object} options destructuring object\n\t * @param {number} options.offset List offset to request\n\t * @param {number} options.limit List number to return from offset\n\t * @param {string} options.search Search amongst users\n\t * @return {Promise}\n\t */\n\tsearchUsers(context, { offset, limit, search }) {\n\t\tsearch = typeof search === 'string' ? search : ''\n\n\t\treturn api.get(generateOcsUrl('cloud/users/details?offset={offset}&limit={limit}&search={search}', { offset, limit, search })).catch((error) => {\n\t\t\tif (!axios.isCancel(error)) {\n\t\t\t\tcontext.commit('API_FAILURE', error)\n\t\t\t}\n\t\t})\n\t},\n\n\t/**\n\t * Get user details\n\t *\n\t * @param {object} context store context\n\t * @param {string} userId user id\n\t * @return {Promise}\n\t */\n\tgetUser(context, userId) {\n\t\treturn api.get(generateOcsUrl(`cloud/users/${userId}`)).catch((error) => {\n\t\t\tif (!axios.isCancel(error)) {\n\t\t\t\tcontext.commit('API_FAILURE', error)\n\t\t\t}\n\t\t})\n\t},\n\n\t/**\n\t * Get all users with full details\n\t *\n\t * @param {object} context store context\n\t * @param {object} options destructuring object\n\t * @param {number} options.offset List offset to request\n\t * @param {number} options.limit List number to return from offset\n\t * @param {string} options.search Search amongst users\n\t * @param {string} options.group Get users from group\n\t * @return {Promise}\n\t */\n\tgetUsers(context, { offset, limit, search, group }) {\n\t\tif (searchRequestCancelSource) {\n\t\t\tsearchRequestCancelSource.cancel('Operation canceled by another search request.')\n\t\t}\n\t\tsearchRequestCancelSource = CancelToken.source()\n\t\tsearch = typeof search === 'string' ? search : ''\n\n\t\t/**\n\t\t * Adding filters in the search bar such as in:files, in:users, etc.\n\t\t * collides with this particular search, so we need to remove them\n\t\t * here and leave only the original search query\n\t\t */\n\t\tsearch = search.replace(/in:[^\\s]+/g, '').trim()\n\n\t\tgroup = typeof group === 'string' ? group : ''\n\t\tif (group !== '') {\n\t\t\treturn api.get(generateOcsUrl('cloud/groups/{group}/users/details?offset={offset}&limit={limit}&search={search}', { group: encodeURIComponent(group), offset, limit, search }), {\n\t\t\t\tcancelToken: searchRequestCancelSource.token,\n\t\t\t})\n\t\t\t\t.then((response) => {\n\t\t\t\t\tconst usersCount = Object.keys(response.data.ocs.data.users).length\n\t\t\t\t\tif (usersCount > 0) {\n\t\t\t\t\t\tcontext.commit('appendUsers', response.data.ocs.data.users)\n\t\t\t\t\t}\n\t\t\t\t\treturn usersCount\n\t\t\t\t})\n\t\t\t\t.catch((error) => {\n\t\t\t\t\tif (!axios.isCancel(error)) {\n\t\t\t\t\t\tcontext.commit('API_FAILURE', error)\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t}\n\n\t\treturn api.get(generateOcsUrl('cloud/users/details?offset={offset}&limit={limit}&search={search}', { offset, limit, search }), {\n\t\t\tcancelToken: searchRequestCancelSource.token,\n\t\t})\n\t\t\t.then((response) => {\n\t\t\t\tconst usersCount = Object.keys(response.data.ocs.data.users).length\n\t\t\t\tif (usersCount > 0) {\n\t\t\t\t\tcontext.commit('appendUsers', response.data.ocs.data.users)\n\t\t\t\t}\n\t\t\t\treturn usersCount\n\t\t\t})\n\t\t\t.catch((error) => {\n\t\t\t\tif (!axios.isCancel(error)) {\n\t\t\t\t\tcontext.commit('API_FAILURE', error)\n\t\t\t\t}\n\t\t\t})\n\t},\n\n\t/**\n\t * Get disabled users with full details\n\t *\n\t * @param {object} context store context\n\t * @param {object} options destructuring object\n\t * @param {number} options.offset List offset to request\n\t * @param {number} options.limit List number to return from offset\n\t * @return {Promise<number>}\n\t */\n\tasync getDisabledUsers(context, { offset, limit }) {\n\t\tconst url = generateOcsUrl('cloud/users/disabled?offset={offset}&limit={limit}', { offset, limit })\n\t\ttry {\n\t\t\tconst response = await api.get(url)\n\t\t\tconst usersCount = Object.keys(response.data.ocs.data.users).length\n\t\t\tif (usersCount > 0) {\n\t\t\t\tcontext.commit('appendUsers', response.data.ocs.data.users)\n\t\t\t\tcontext.commit('updateDisabledUsers', response.data.ocs.data.users)\n\t\t\t}\n\t\t\treturn usersCount\n\t\t} catch (error) {\n\t\t\tcontext.commit('API_FAILURE', error)\n\t\t}\n\t},\n\n\tgetGroups(context, { offset, limit, search }) {\n\t\tsearch = typeof search === 'string' ? search : ''\n\t\tconst limitParam = limit === -1 ? '' : `&limit=${limit}`\n\t\treturn api.get(generateOcsUrl('cloud/groups?offset={offset}&search={search}', { offset, search }) + limitParam)\n\t\t\t.then((response) => {\n\t\t\t\tif (Object.keys(response.data.ocs.data.groups).length > 0) {\n\t\t\t\t\tresponse.data.ocs.data.groups.forEach(function(group) {\n\t\t\t\t\t\tcontext.commit('addGroup', { gid: group, displayName: group })\n\t\t\t\t\t})\n\t\t\t\t\treturn true\n\t\t\t\t}\n\t\t\t\treturn false\n\t\t\t})\n\t\t\t.catch((error) => context.commit('API_FAILURE', error))\n\t},\n\n\t/**\n\t * Get all users with full details\n\t *\n\t * @param {object} context store context\n\t * @param {object} options destructuring object\n\t * @param {number} options.offset List offset to request\n\t * @param {number} options.limit List number to return from offset\n\t * @param {string} options.search -\n\t * @return {Promise}\n\t */\n\tgetUsersFromList(context, { offset, limit, search }) {\n\t\tsearch = typeof search === 'string' ? search : ''\n\t\treturn api.get(generateOcsUrl('cloud/users/details?offset={offset}&limit={limit}&search={search}', { offset, limit, search }))\n\t\t\t.then((response) => {\n\t\t\t\tif (Object.keys(response.data.ocs.data.users).length > 0) {\n\t\t\t\t\tcontext.commit('appendUsers', response.data.ocs.data.users)\n\t\t\t\t\treturn true\n\t\t\t\t}\n\t\t\t\treturn false\n\t\t\t})\n\t\t\t.catch((error) => context.commit('API_FAILURE', error))\n\t},\n\n\t/**\n\t * Get all users with full details from a groupid\n\t *\n\t * @param {object} context store context\n\t * @param {object} options destructuring object\n\t * @param {number} options.offset List offset to request\n\t * @param {number} options.limit List number to return from offset\n\t * @param {string} options.groupid -\n\t * @return {Promise}\n\t */\n\tgetUsersFromGroup(context, { groupid, offset, limit }) {\n\t\treturn api.get(generateOcsUrl('cloud/users/{groupId}/details?offset={offset}&limit={limit}', { groupId: encodeURIComponent(groupid), offset, limit }))\n\t\t\t.then((response) => context.commit('getUsersFromList', response.data.ocs.data.users))\n\t\t\t.catch((error) => context.commit('API_FAILURE', error))\n\t},\n\n\tgetPasswordPolicyMinLength(context) {\n\t\tif (getCapabilities().password_policy && getCapabilities().password_policy.minLength) {\n\t\t\tcontext.commit('setPasswordPolicyMinLength', getCapabilities().password_policy.minLength)\n\t\t\treturn getCapabilities().password_policy.minLength\n\t\t}\n\t\treturn false\n\t},\n\n\t/**\n\t * Add group\n\t *\n\t * @param {object} context store context\n\t * @param {string} gid Group id\n\t * @return {Promise}\n\t */\n\taddGroup(context, gid) {\n\t\treturn api.requireAdmin().then((response) => {\n\t\t\treturn api.post(generateOcsUrl('cloud/groups'), { groupid: gid })\n\t\t\t\t.then((response) => {\n\t\t\t\t\tcontext.commit('addGroup', { gid, displayName: gid })\n\t\t\t\t\treturn { gid, displayName: gid }\n\t\t\t\t})\n\t\t\t\t.catch((error) => { throw error })\n\t\t}).catch((error) => {\n\t\t\tcontext.commit('API_FAILURE', { gid, error })\n\t\t\t// let's throw one more time to prevent the view\n\t\t\t// from adding the user to a group that doesn't exists\n\t\t\tthrow error\n\t\t})\n\t},\n\n\t/**\n\t * Rename group\n\t *\n\t * @param {object} context store context\n\t * @param {string} groupid Group id\n\t * @param {string} displayName Group display name\n\t * @return {Promise}\n\t */\n\trenameGroup(context, { groupid, displayName }) {\n\t\treturn api.requireAdmin().then((response) => {\n\t\t\treturn api.put(generateOcsUrl('cloud/groups/{groupId}', { groupId: encodeURIComponent(groupid) }), { key: 'displayname', value: displayName })\n\t\t\t\t.then((response) => {\n\t\t\t\t\tcontext.commit('renameGroup', { gid: groupid, displayName })\n\t\t\t\t\treturn { groupid, displayName }\n\t\t\t\t})\n\t\t\t\t.catch((error) => { throw error })\n\t\t}).catch((error) => {\n\t\t\tcontext.commit('API_FAILURE', { groupid, error })\n\t\t\t// let's throw one more time to prevent the view\n\t\t\t// from renaming the group\n\t\t\tthrow error\n\t\t})\n\t},\n\n\t/**\n\t * Remove group\n\t *\n\t * @param {object} context store context\n\t * @param {string} gid Group id\n\t * @return {Promise}\n\t */\n\tremoveGroup(context, gid) {\n\t\treturn api.requireAdmin().then((response) => {\n\t\t\treturn api.delete(generateOcsUrl('cloud/groups/{groupId}', { groupId: encodeURIComponent(gid) }))\n\t\t\t\t.then((response) => context.commit('removeGroup', gid))\n\t\t\t\t.catch((error) => { throw error })\n\t\t}).catch((error) => context.commit('API_FAILURE', { gid, error }))\n\t},\n\n\t/**\n\t * Add user to group\n\t *\n\t * @param {object} context store context\n\t * @param {object} options destructuring object\n\t * @param {string} options.userid User id\n\t * @param {string} options.gid Group id\n\t * @return {Promise}\n\t */\n\taddUserGroup(context, { userid, gid }) {\n\t\treturn api.requireAdmin().then((response) => {\n\t\t\treturn api.post(generateOcsUrl('cloud/users/{userid}/groups', { userid }), { groupid: gid })\n\t\t\t\t.then((response) => context.commit('addUserGroup', { userid, gid }))\n\t\t\t\t.catch((error) => { throw error })\n\t\t}).catch((error) => context.commit('API_FAILURE', { userid, error }))\n\t},\n\n\t/**\n\t * Remove user from group\n\t *\n\t * @param {object} context store context\n\t * @param {object} options destructuring object\n\t * @param {string} options.userid User id\n\t * @param {string} options.gid Group id\n\t * @return {Promise}\n\t */\n\tremoveUserGroup(context, { userid, gid }) {\n\t\treturn api.requireAdmin().then((response) => {\n\t\t\treturn api.delete(generateOcsUrl('cloud/users/{userid}/groups', { userid }), { groupid: gid })\n\t\t\t\t.then((response) => context.commit('removeUserGroup', { userid, gid }))\n\t\t\t\t.catch((error) => { throw error })\n\t\t}).catch((error) => {\n\t\t\tcontext.commit('API_FAILURE', { userid, error })\n\t\t\t// let's throw one more time to prevent\n\t\t\t// the view from removing the user row on failure\n\t\t\tthrow error\n\t\t})\n\t},\n\n\t/**\n\t * Add user to group admin\n\t *\n\t * @param {object} context store context\n\t * @param {object} options destructuring object\n\t * @param {string} options.userid User id\n\t * @param {string} options.gid Group id\n\t * @return {Promise}\n\t */\n\taddUserSubAdmin(context, { userid, gid }) {\n\t\treturn api.requireAdmin().then((response) => {\n\t\t\treturn api.post(generateOcsUrl('cloud/users/{userid}/subadmins', { userid }), { groupid: gid })\n\t\t\t\t.then((response) => context.commit('addUserSubAdmin', { userid, gid }))\n\t\t\t\t.catch((error) => { throw error })\n\t\t}).catch((error) => context.commit('API_FAILURE', { userid, error }))\n\t},\n\n\t/**\n\t * Remove user from group admin\n\t *\n\t * @param {object} context store context\n\t * @param {object} options destructuring object\n\t * @param {string} options.userid User id\n\t * @param {string} options.gid Group id\n\t * @return {Promise}\n\t */\n\tremoveUserSubAdmin(context, { userid, gid }) {\n\t\treturn api.requireAdmin().then((response) => {\n\t\t\treturn api.delete(generateOcsUrl('cloud/users/{userid}/subadmins', { userid }), { groupid: gid })\n\t\t\t\t.then((response) => context.commit('removeUserSubAdmin', { userid, gid }))\n\t\t\t\t.catch((error) => { throw error })\n\t\t}).catch((error) => context.commit('API_FAILURE', { userid, error }))\n\t},\n\n\t/**\n\t * Mark all user devices for remote wipe\n\t *\n\t * @param {object} context store context\n\t * @param {string} userid User id\n\t * @return {Promise}\n\t */\n\twipeUserDevices(context, userid) {\n\t\treturn api.requireAdmin().then((response) => {\n\t\t\treturn api.post(generateOcsUrl('cloud/users/{userid}/wipe', { userid }))\n\t\t\t\t.catch((error) => { throw error })\n\t\t}).catch((error) => context.commit('API_FAILURE', { userid, error }))\n\t},\n\n\t/**\n\t * Delete a user\n\t *\n\t * @param {object} context store context\n\t * @param {string} userid User id\n\t * @return {Promise}\n\t */\n\tdeleteUser(context, userid) {\n\t\treturn api.requireAdmin().then((response) => {\n\t\t\treturn api.delete(generateOcsUrl('cloud/users/{userid}', { userid }))\n\t\t\t\t.then((response) => context.commit('deleteUser', userid))\n\t\t\t\t.catch((error) => { throw error })\n\t\t}).catch((error) => context.commit('API_FAILURE', { userid, error }))\n\t},\n\n\t/**\n\t * Add a user\n\t *\n\t * @param {object} context store context\n\t * @param {Function} context.commit -\n\t * @param {Function} context.dispatch -\n\t * @param {object} options destructuring object\n\t * @param {string} options.userid User id\n\t * @param {string} options.password User password\n\t * @param {string} options.displayName User display name\n\t * @param {string} options.email User email\n\t * @param {string} options.groups User groups\n\t * @param {string} options.subadmin User subadmin groups\n\t * @param {string} options.quota User email\n\t * @param {string} options.language User language\n\t * @param {string} options.manager User manager\n\t * @return {Promise}\n\t */\n\taddUser({ commit, dispatch }, { userid, password, displayName, email, groups, subadmin, quota, language, manager }) {\n\t\treturn api.requireAdmin().then((response) => {\n\t\t\treturn api.post(generateOcsUrl('cloud/users'), { userid, password, displayName, email, groups, subadmin, quota, language, manager })\n\t\t\t\t.then((response) => dispatch('addUserData', userid || response.data.ocs.data.id))\n\t\t\t\t.catch((error) => { throw error })\n\t\t}).catch((error) => {\n\t\t\tcommit('API_FAILURE', { userid, error })\n\t\t\tthrow error\n\t\t})\n\t},\n\n\t/**\n\t * Get user data and commit addition\n\t *\n\t * @param {object} context store context\n\t * @param {string} userid User id\n\t * @return {Promise}\n\t */\n\taddUserData(context, userid) {\n\t\treturn api.requireAdmin().then((response) => {\n\t\t\treturn api.get(generateOcsUrl('cloud/users/{userid}', { userid }))\n\t\t\t\t.then((response) => context.commit('addUserData', response))\n\t\t\t\t.catch((error) => { throw error })\n\t\t}).catch((error) => context.commit('API_FAILURE', { userid, error }))\n\t},\n\n\t/**\n\t * Enable or disable user\n\t *\n\t * @param {object} context store context\n\t * @param {object} options destructuring object\n\t * @param {string} options.userid User id\n\t * @param {boolean} options.enabled User enablement status\n\t * @return {Promise}\n\t */\n\tenableDisableUser(context, { userid, enabled = true }) {\n\t\tconst userStatus = enabled ? 'enable' : 'disable'\n\t\treturn api.requireAdmin().then((response) => {\n\t\t\treturn api.put(generateOcsUrl('cloud/users/{userid}/{userStatus}', { userid, userStatus }))\n\t\t\t\t.then((response) => context.commit('enableDisableUser', { userid, enabled }))\n\t\t\t\t.catch((error) => { throw error })\n\t\t}).catch((error) => context.commit('API_FAILURE', { userid, error }))\n\t},\n\n\t/**\n\t * Edit user data\n\t *\n\t * @param {object} context store context\n\t * @param {object} options destructuring object\n\t * @param {string} options.userid User id\n\t * @param {string} options.key User field to edit\n\t * @param {string} options.value Value of the change\n\t * @return {Promise}\n\t */\n\tsetUserData(context, { userid, key, value }) {\n\t\tconst allowedEmpty = ['email', 'displayname', 'manager']\n\t\tif (['email', 'language', 'quota', 'displayname', 'password', 'manager'].indexOf(key) !== -1) {\n\t\t\t// We allow empty email or displayname\n\t\t\tif (typeof value === 'string'\n\t\t\t\t&& (\n\t\t\t\t\t(allowedEmpty.indexOf(key) === -1 && value.length > 0)\n\t\t\t\t\t|| allowedEmpty.indexOf(key) !== -1\n\t\t\t\t)\n\t\t\t) {\n\t\t\t\treturn api.requireAdmin().then((response) => {\n\t\t\t\t\treturn api.put(generateOcsUrl('cloud/users/{userid}', { userid }), { key, value })\n\t\t\t\t\t\t.then((response) => context.commit('setUserData', { userid, key, value }))\n\t\t\t\t\t\t.catch((error) => { throw error })\n\t\t\t\t}).catch((error) => context.commit('API_FAILURE', { userid, error }))\n\t\t\t}\n\t\t}\n\t\treturn Promise.reject(new Error('Invalid request data'))\n\t},\n\n\t/**\n\t * Send welcome mail\n\t *\n\t * @param {object} context store context\n\t * @param {string} userid User id\n\t * @return {Promise}\n\t */\n\tsendWelcomeMail(context, userid) {\n\t\treturn api.requireAdmin().then((response) => {\n\t\t\treturn api.post(generateOcsUrl('cloud/users/{userid}/welcome', { userid }))\n\t\t\t\t.then(response => true)\n\t\t\t\t.catch((error) => { throw error })\n\t\t}).catch((error) => context.commit('API_FAILURE', { userid, error }))\n\t},\n}\n\nexport default { state, mutations, getters, actions }\n","/**\n * @copyright Copyright (c) 2018 Julius Härtl <jus@bitgrid.net>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Julius Härtl <jus@bitgrid.net>\n * @author Roeland Jago Douma <roeland@famdouma.nl>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport api from './api.js'\nimport Vue from 'vue'\nimport { generateUrl } from '@nextcloud/router'\nimport { showError, showInfo } from '@nextcloud/dialogs'\nimport { loadState } from '@nextcloud/initial-state'\n\nconst state = {\n\tapps: [],\n\tbundles: loadState('settings', 'appstoreBundles', []),\n\tcategories: [],\n\tupdateCount: loadState('settings', 'appstoreUpdateCount', 0),\n\tloading: {},\n\tgettingCategoriesPromise: null,\n}\n\nconst mutations = {\n\n\tAPPS_API_FAILURE(state, error) {\n\t\tshowError(t('settings', 'An error occurred during the request. Unable to proceed.') + '<br>' + error.error.response.data.data.message, { isHTML: true })\n\t\tconsole.error(state, error)\n\t},\n\n\tinitCategories(state, { categories, updateCount }) {\n\t\tstate.categories = categories\n\t\tstate.updateCount = updateCount\n\t},\n\n\tupdateCategories(state, categoriesPromise) {\n\t\tstate.gettingCategoriesPromise = categoriesPromise\n\t},\n\n\tsetUpdateCount(state, updateCount) {\n\t\tstate.updateCount = updateCount\n\t},\n\n\taddCategory(state, category) {\n\t\tstate.categories.push(category)\n\t},\n\n\tappendCategories(state, categoriesArray) {\n\t\t// convert obj to array\n\t\tstate.categories = categoriesArray\n\t},\n\n\tsetAllApps(state, apps) {\n\t\tstate.apps = apps\n\t},\n\n\tsetError(state, { appId, error }) {\n\t\tif (!Array.isArray(appId)) {\n\t\t\tappId = [appId]\n\t\t}\n\t\tappId.forEach((_id) => {\n\t\t\tconst app = state.apps.find(app => app.id === _id)\n\t\t\tapp.error = error\n\t\t})\n\t},\n\n\tclearError(state, { appId, error }) {\n\t\tconst app = state.apps.find(app => app.id === appId)\n\t\tapp.error = null\n\t},\n\n\tenableApp(state, { appId, groups }) {\n\t\tconst app = state.apps.find(app => app.id === appId)\n\t\tapp.active = true\n\t\tapp.groups = groups\n\t},\n\n\tsetInstallState(state, { appId, canInstall }) {\n\t\tconst app = state.apps.find(app => app.id === appId)\n\t\tif (app) {\n\t\t\tapp.canInstall = canInstall === true\n\t\t}\n\t},\n\n\tdisableApp(state, appId) {\n\t\tconst app = state.apps.find(app => app.id === appId)\n\t\tapp.active = false\n\t\tapp.groups = []\n\t\tif (app.removable) {\n\t\t\tapp.canUnInstall = true\n\t\t}\n\t},\n\n\tuninstallApp(state, appId) {\n\t\tstate.apps.find(app => app.id === appId).active = false\n\t\tstate.apps.find(app => app.id === appId).groups = []\n\t\tstate.apps.find(app => app.id === appId).needsDownload = true\n\t\tstate.apps.find(app => app.id === appId).installed = false\n\t\tstate.apps.find(app => app.id === appId).canUnInstall = false\n\t\tstate.apps.find(app => app.id === appId).canInstall = true\n\t},\n\n\tupdateApp(state, appId) {\n\t\tconst app = state.apps.find(app => app.id === appId)\n\t\tconst version = app.update\n\t\tapp.update = null\n\t\tapp.version = version\n\t\tstate.updateCount--\n\n\t},\n\n\tresetApps(state) {\n\t\tstate.apps = []\n\t},\n\treset(state) {\n\t\tstate.apps = []\n\t\tstate.categories = []\n\t\tstate.updateCount = 0\n\t},\n\tstartLoading(state, id) {\n\t\tif (Array.isArray(id)) {\n\t\t\tid.forEach((_id) => {\n\t\t\t\tVue.set(state.loading, _id, true)\n\t\t\t})\n\t\t} else {\n\t\t\tVue.set(state.loading, id, true)\n\t\t}\n\t},\n\tstopLoading(state, id) {\n\t\tif (Array.isArray(id)) {\n\t\t\tid.forEach((_id) => {\n\t\t\t\tVue.set(state.loading, _id, false)\n\t\t\t})\n\t\t} else {\n\t\t\tVue.set(state.loading, id, false)\n\t\t}\n\t},\n}\n\nconst getters = {\n\tloading(state) {\n\t\treturn function(id) {\n\t\t\treturn state.loading[id]\n\t\t}\n\t},\n\tgetCategories(state) {\n\t\treturn state.categories\n\t},\n\tgetAllApps(state) {\n\t\treturn state.apps\n\t},\n\tgetAppBundles(state) {\n\t\treturn state.bundles\n\t},\n\tgetUpdateCount(state) {\n\t\treturn state.updateCount\n\t},\n\tgetCategoryById: (state) => (selectedCategoryId) => {\n\t\treturn state.categories.find((category) => category.id === selectedCategoryId)\n\t},\n}\n\nconst actions = {\n\n\tenableApp(context, { appId, groups }) {\n\t\tlet apps\n\t\tif (Array.isArray(appId)) {\n\t\t\tapps = appId\n\t\t} else {\n\t\t\tapps = [appId]\n\t\t}\n\t\treturn api.requireAdmin().then((response) => {\n\t\t\tcontext.commit('startLoading', apps)\n\t\t\tcontext.commit('startLoading', 'install')\n\t\t\treturn api.post(generateUrl('settings/apps/enable'), { appIds: apps, groups })\n\t\t\t\t.then((response) => {\n\t\t\t\t\tcontext.commit('stopLoading', apps)\n\t\t\t\t\tcontext.commit('stopLoading', 'install')\n\t\t\t\t\tapps.forEach(_appId => {\n\t\t\t\t\t\tcontext.commit('enableApp', { appId: _appId, groups })\n\t\t\t\t\t})\n\n\t\t\t\t\t// check for server health\n\t\t\t\t\treturn api.get(generateUrl('apps/files/'))\n\t\t\t\t\t\t.then(() => {\n\t\t\t\t\t\t\tif (response.data.update_required) {\n\t\t\t\t\t\t\t\tshowInfo(\n\t\t\t\t\t\t\t\t\tt(\n\t\t\t\t\t\t\t\t\t\t'settings',\n\t\t\t\t\t\t\t\t\t\t'The app has been enabled but needs to be updated. You will be redirected to the update page in 5 seconds.'\n\t\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\tonClick: () => window.location.reload(),\n\t\t\t\t\t\t\t\t\t\tclose: false,\n\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\tsetTimeout(function() {\n\t\t\t\t\t\t\t\t\tlocation.reload()\n\t\t\t\t\t\t\t\t}, 5000)\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t})\n\t\t\t\t\t\t.catch(() => {\n\t\t\t\t\t\t\tif (!Array.isArray(appId)) {\n\t\t\t\t\t\t\t\tshowError(t('settings', 'Error: This app cannot be enabled because it makes the server unstable'))\n\t\t\t\t\t\t\t\tcontext.commit('setError', {\n\t\t\t\t\t\t\t\t\tappId: apps,\n\t\t\t\t\t\t\t\t\terror: t('settings', 'Error: This app cannot be enabled because it makes the server unstable'),\n\t\t\t\t\t\t\t\t})\n\t\t\t\t\t\t\t\tcontext.dispatch('disableApp', { appId })\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t})\n\t\t\t\t})\n\t\t\t\t.catch((error) => {\n\t\t\t\t\tcontext.commit('stopLoading', apps)\n\t\t\t\t\tcontext.commit('stopLoading', 'install')\n\t\t\t\t\tcontext.commit('setError', {\n\t\t\t\t\t\tappId: apps,\n\t\t\t\t\t\terror: error.response.data.data.message,\n\t\t\t\t\t})\n\t\t\t\t\tcontext.commit('APPS_API_FAILURE', { appId, error })\n\t\t\t\t})\n\t\t}).catch((error) => context.commit('API_FAILURE', { appId, error }))\n\t},\n\tforceEnableApp(context, { appId, groups }) {\n\t\tlet apps\n\t\tif (Array.isArray(appId)) {\n\t\t\tapps = appId\n\t\t} else {\n\t\t\tapps = [appId]\n\t\t}\n\t\treturn api.requireAdmin().then(() => {\n\t\t\tcontext.commit('startLoading', apps)\n\t\t\tcontext.commit('startLoading', 'install')\n\t\t\treturn api.post(generateUrl('settings/apps/force'), { appId })\n\t\t\t\t.then((response) => {\n\t\t\t\t\tcontext.commit('setInstallState', { appId, canInstall: true })\n\t\t\t\t})\n\t\t\t\t.catch((error) => {\n\t\t\t\t\tcontext.commit('stopLoading', apps)\n\t\t\t\t\tcontext.commit('stopLoading', 'install')\n\t\t\t\t\tcontext.commit('setError', {\n\t\t\t\t\t\tappId: apps,\n\t\t\t\t\t\terror: error.response.data.data.message,\n\t\t\t\t\t})\n\t\t\t\t\tcontext.commit('APPS_API_FAILURE', { appId, error })\n\t\t\t\t})\n\t\t\t\t.finally(() => {\n\t\t\t\t\tcontext.commit('stopLoading', apps)\n\t\t\t\t\tcontext.commit('stopLoading', 'install')\n\t\t\t\t})\n\t\t}).catch((error) => context.commit('API_FAILURE', { appId, error }))\n\t},\n\tdisableApp(context, { appId }) {\n\t\tlet apps\n\t\tif (Array.isArray(appId)) {\n\t\t\tapps = appId\n\t\t} else {\n\t\t\tapps = [appId]\n\t\t}\n\t\treturn api.requireAdmin().then((response) => {\n\t\t\tcontext.commit('startLoading', apps)\n\t\t\treturn api.post(generateUrl('settings/apps/disable'), { appIds: apps })\n\t\t\t\t.then((response) => {\n\t\t\t\t\tcontext.commit('stopLoading', apps)\n\t\t\t\t\tapps.forEach(_appId => {\n\t\t\t\t\t\tcontext.commit('disableApp', _appId)\n\t\t\t\t\t})\n\t\t\t\t\treturn true\n\t\t\t\t})\n\t\t\t\t.catch((error) => {\n\t\t\t\t\tcontext.commit('stopLoading', apps)\n\t\t\t\t\tcontext.commit('APPS_API_FAILURE', { appId, error })\n\t\t\t\t})\n\t\t}).catch((error) => context.commit('API_FAILURE', { appId, error }))\n\t},\n\tuninstallApp(context, { appId }) {\n\t\treturn api.requireAdmin().then((response) => {\n\t\t\tcontext.commit('startLoading', appId)\n\t\t\treturn api.get(generateUrl(`settings/apps/uninstall/${appId}`))\n\t\t\t\t.then((response) => {\n\t\t\t\t\tcontext.commit('stopLoading', appId)\n\t\t\t\t\tcontext.commit('uninstallApp', appId)\n\t\t\t\t\treturn true\n\t\t\t\t})\n\t\t\t\t.catch((error) => {\n\t\t\t\t\tcontext.commit('stopLoading', appId)\n\t\t\t\t\tcontext.commit('APPS_API_FAILURE', { appId, error })\n\t\t\t\t})\n\t\t}).catch((error) => context.commit('API_FAILURE', { appId, error }))\n\t},\n\n\tupdateApp(context, { appId }) {\n\t\treturn api.requireAdmin().then((response) => {\n\t\t\tcontext.commit('startLoading', appId)\n\t\t\tcontext.commit('startLoading', 'install')\n\t\t\treturn api.get(generateUrl(`settings/apps/update/${appId}`))\n\t\t\t\t.then((response) => {\n\t\t\t\t\tcontext.commit('stopLoading', 'install')\n\t\t\t\t\tcontext.commit('stopLoading', appId)\n\t\t\t\t\tcontext.commit('updateApp', appId)\n\t\t\t\t\treturn true\n\t\t\t\t})\n\t\t\t\t.catch((error) => {\n\t\t\t\t\tcontext.commit('stopLoading', appId)\n\t\t\t\t\tcontext.commit('stopLoading', 'install')\n\t\t\t\t\tcontext.commit('APPS_API_FAILURE', { appId, error })\n\t\t\t\t})\n\t\t}).catch((error) => context.commit('API_FAILURE', { appId, error }))\n\t},\n\n\tgetAllApps(context) {\n\t\tcontext.commit('startLoading', 'list')\n\t\treturn api.get(generateUrl('settings/apps/list'))\n\t\t\t.then((response) => {\n\t\t\t\tcontext.commit('setAllApps', response.data.apps)\n\t\t\t\tcontext.commit('stopLoading', 'list')\n\t\t\t\treturn true\n\t\t\t})\n\t\t\t.catch((error) => context.commit('API_FAILURE', error))\n\t},\n\n\tasync getCategories(context, { shouldRefetchCategories = false } = {}) {\n\t\tif (shouldRefetchCategories || !context.state.gettingCategoriesPromise) {\n\t\t\tcontext.commit('startLoading', 'categories')\n\t\t\ttry {\n\t\t\t\tconst categoriesPromise = api.get(generateUrl('settings/apps/categories'))\n\t\t\t\tcontext.commit('updateCategories', categoriesPromise)\n\t\t\t\tconst categoriesPromiseResponse = await categoriesPromise\n\t\t\t\tif (categoriesPromiseResponse.data.length > 0) {\n\t\t\t\t\tcontext.commit('appendCategories', categoriesPromiseResponse.data)\n\t\t\t\t\tcontext.commit('stopLoading', 'categories')\n\t\t\t\t\treturn true\n\t\t\t\t}\n\t\t\t\tcontext.commit('stopLoading', 'categories')\n\t\t\t\treturn false\n\t\t\t} catch (error) {\n\t\t\t\tcontext.commit('API_FAILURE', error)\n\t\t\t}\n\t\t}\n\t\treturn context.state.gettingCategoriesPromise\n\t},\n\n}\n\nexport default { state, mutations, getters, actions }\n","/**\n * @copyright Copyright (c) 2018 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport { loadState } from '@nextcloud/initial-state'\n\nconst state = {\n\tserverData: loadState('settings', 'usersSettings', {}),\n}\nconst mutations = {\n\tsetServerData(state, data) {\n\t\tstate.serverData = data\n\t},\n}\nconst getters = {\n\tgetServerData(state) {\n\t\treturn state.serverData\n\t},\n}\nconst actions = {}\n\nexport default { state, mutations, getters, actions }\n","/**\n * @copyright Copyright (c) 2018 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Roeland Jago Douma <roeland@famdouma.nl>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport api from './api.js'\nimport { generateOcsUrl } from '@nextcloud/router'\n\nconst state = {}\nconst mutations = {}\nconst getters = {}\nconst actions = {\n\t/**\n\t * Set application config in database\n\t *\n\t * @param {object} context store context\n\t * @param {object} options destructuring object\n\t * @param {string} options.app Application name\n\t * @param {boolean} options.key Config key\n\t * @param {boolean} options.value Value to set\n\t * @return {Promise}\n\t */\n\tsetAppConfig(context, { app, key, value }) {\n\t\treturn api.requireAdmin().then((response) => {\n\t\t\treturn api.post(generateOcsUrl('apps/provisioning_api/api/v1/config/apps/{app}/{key}', { app, key }), { value })\n\t\t\t\t.catch((error) => { throw error })\n\t\t}).catch((error) => context.commit('API_FAILURE', { app, key, value, error }))\n\t},\n}\n\nexport default { state, mutations, getters, actions }\n","/**\n * @copyright Copyright (c) 2018 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Julius Härtl <jus@bitgrid.net>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport Vue from 'vue'\nimport Vuex, { Store } from 'vuex'\nimport users from './users.js'\nimport apps from './apps.js'\nimport settings from './users-settings.js'\nimport oc from './oc.js'\nimport { showError } from '@nextcloud/dialogs'\n\nVue.use(Vuex)\n\nconst debug = process.env.NODE_ENV !== 'production'\n\nconst mutations = {\n\tAPI_FAILURE(state, error) {\n\t\ttry {\n\t\t\tconst message = error.error.response.data.ocs.meta.message\n\t\t\tshowError(t('settings', 'An error occurred during the request. Unable to proceed.') + '<br>' + message, { isHTML: true })\n\t\t} catch (e) {\n\t\t\tshowError(t('settings', 'An error occurred during the request. Unable to proceed.'))\n\t\t}\n\t\tconsole.error(state, error)\n\t},\n}\n\nlet store = null\n\nexport const useStore = () => {\n\tif (store === null) {\n\t\tstore = new Store({\n\t\t\tmodules: {\n\t\t\t\tusers,\n\t\t\t\tapps,\n\t\t\t\tsettings,\n\t\t\t\toc,\n\t\t\t},\n\t\t\tstrict: debug,\n\t\t\tmutations,\n\t\t})\n\t}\n\treturn store\n}\n","/**\n * @copyright Copyright (c) 2024 Ferdinand Thiessen <opensource@fthiessen.de>\n *\n * @author Ferdinand Thiessen <opensource@fthiessen.de>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n/**\n * https://github.com/nextcloud/server/blob/208e38e84e1a07a49699aa90dc5b7272d24489f0/lib/private/Group/MetaData.php#L34\n */\nexport var GroupSorting;\n(function (GroupSorting) {\n GroupSorting[GroupSorting[\"UserCount\"] = 1] = \"UserCount\";\n GroupSorting[GroupSorting[\"GroupName\"] = 2] = \"GroupName\";\n})(GroupSorting || (GroupSorting = {}));\n","/**\n * @copyright 2020 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\nimport { getLoggerBuilder } from '@nextcloud/logger';\nexport default getLoggerBuilder()\n .setApp('settings')\n .detectUser()\n .build();\n","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c(_setup.NcContent,{attrs:{\"app-name\":\"settings\"}},[_c('router-view',{attrs:{\"name\":\"navigation\"}}),_vm._v(\" \"),_c('router-view'),_vm._v(\" \"),_c('router-view',{attrs:{\"name\":\"sidebar\"}})],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-4.use[1]!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SettingsApp.vue?vue&type=script&setup=true&lang=ts\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-4.use[1]!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SettingsApp.vue?vue&type=script&setup=true&lang=ts\"","import { render, staticRenderFns } from \"./SettingsApp.vue?vue&type=template&id=b0b62a76\"\nimport script from \"./SettingsApp.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./SettingsApp.vue?vue&type=script&setup=true&lang=ts\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","// Dynamic loading\nconst AppStore = () => import(/* webpackChunkName: 'settings-apps-view' */ '../views/AppStore.vue');\nconst AppStoreNavigation = () => import(/* webpackChunkName: 'settings-apps-view' */ '../views/AppStoreNavigation.vue');\nconst AppStoreSidebar = () => import(/* webpackChunkName: 'settings-apps-view' */ '../views/AppStoreSidebar.vue');\nconst UserManagement = () => import(/* webpackChunkName: 'settings-users' */ '../views/UserManagement.vue');\nconst UserManagementNavigation = () => import(/* webpackChunkName: 'settings-users' */ '../views/UserManagementNavigation.vue');\nconst routes = [\n {\n name: 'users',\n path: '/:index(index.php/)?settings/users',\n components: {\n default: UserManagement,\n navigation: UserManagementNavigation,\n },\n props: true,\n children: [\n {\n path: ':selectedGroup',\n name: 'group',\n },\n ],\n },\n {\n path: '/:index(index.php/)?settings/apps',\n name: 'apps',\n // redirect to our default route - the app discover section\n redirect: {\n name: 'apps-category',\n params: {\n category: 'discover',\n },\n },\n components: {\n default: AppStore,\n navigation: AppStoreNavigation,\n sidebar: AppStoreSidebar,\n },\n children: [\n {\n path: ':category',\n name: 'apps-category',\n children: [\n {\n path: ':id',\n name: 'apps-details',\n },\n ],\n },\n ],\n },\n];\nexport default routes;\n","/**\n * @copyright Copyright (c) 2018 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Julius Härtl <jus@bitgrid.net>\n * @author Roeland Jago Douma <roeland@famdouma.nl>\n * @author Ferdinand Thiessen <opensource@fthiessen.de>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\nimport Vue from 'vue';\nimport Router from 'vue-router';\nimport { generateUrl } from '@nextcloud/router';\nimport routes from './routes.ts';\nVue.use(Router);\nconst router = new Router({\n mode: 'history',\n // if index.php is in the url AND we got this far, then it's working:\n // let's keep using index.php in the url\n base: generateUrl(''),\n linkActiveClass: 'active',\n routes,\n});\nexport default router;\n","/**\n * @copyright Copyright (c) 2018 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author rakekniven <mark.ziegler@rakekniven.de>\n * @author Roeland Jago Douma <roeland@famdouma.nl>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\nimport Vue from 'vue';\nimport VTooltip from 'v-tooltip';\nimport { sync } from 'vuex-router-sync';\nimport { translate as t, translatePlural as n } from '@nextcloud/l10n';\nimport SettingsApp from './views/SettingsApp.vue';\nimport router from './router/index.ts';\nimport { useStore } from './store/index.js';\nimport { getRequestToken } from '@nextcloud/auth';\nimport { PiniaVuePlugin, createPinia } from 'pinia';\nVue.use(VTooltip, { defaultHtml: false });\nconst store = useStore();\nsync(store, router);\n// CSP config for webpack dynamic chunk loading\n// eslint-disable-next-line camelcase\n__webpack_nonce__ = btoa(getRequestToken() ?? '');\n// bind to window\nVue.prototype.t = t;\nVue.prototype.n = n;\nVue.use(PiniaVuePlugin);\nconst pinia = createPinia();\nexport default new Vue({\n router,\n store,\n pinia,\n render: h => h(SettingsApp),\n el: '#content',\n});\n","/*!\n * vue-router v3.6.5\n * (c) 2022 Evan You\n * @license MIT\n */\n/* */\n\nfunction assert (condition, message) {\n if (!condition) {\n throw new Error((\"[vue-router] \" + message))\n }\n}\n\nfunction warn (condition, message) {\n if (!condition) {\n typeof console !== 'undefined' && console.warn((\"[vue-router] \" + message));\n }\n}\n\nfunction extend (a, b) {\n for (var key in b) {\n a[key] = b[key];\n }\n return a\n}\n\n/* */\n\nvar encodeReserveRE = /[!'()*]/g;\nvar encodeReserveReplacer = function (c) { return '%' + c.charCodeAt(0).toString(16); };\nvar commaRE = /%2C/g;\n\n// fixed encodeURIComponent which is more conformant to RFC3986:\n// - escapes [!'()*]\n// - preserve commas\nvar encode = function (str) { return encodeURIComponent(str)\n .replace(encodeReserveRE, encodeReserveReplacer)\n .replace(commaRE, ','); };\n\nfunction decode (str) {\n try {\n return decodeURIComponent(str)\n } catch (err) {\n if (process.env.NODE_ENV !== 'production') {\n warn(false, (\"Error decoding \\\"\" + str + \"\\\". Leaving it intact.\"));\n }\n }\n return str\n}\n\nfunction resolveQuery (\n query,\n extraQuery,\n _parseQuery\n) {\n if ( extraQuery === void 0 ) extraQuery = {};\n\n var parse = _parseQuery || parseQuery;\n var parsedQuery;\n try {\n parsedQuery = parse(query || '');\n } catch (e) {\n process.env.NODE_ENV !== 'production' && warn(false, e.message);\n parsedQuery = {};\n }\n for (var key in extraQuery) {\n var value = extraQuery[key];\n parsedQuery[key] = Array.isArray(value)\n ? value.map(castQueryParamValue)\n : castQueryParamValue(value);\n }\n return parsedQuery\n}\n\nvar castQueryParamValue = function (value) { return (value == null || typeof value === 'object' ? value : String(value)); };\n\nfunction parseQuery (query) {\n var res = {};\n\n query = query.trim().replace(/^(\\?|#|&)/, '');\n\n if (!query) {\n return res\n }\n\n query.split('&').forEach(function (param) {\n var parts = param.replace(/\\+/g, ' ').split('=');\n var key = decode(parts.shift());\n var val = parts.length > 0 ? decode(parts.join('=')) : null;\n\n if (res[key] === undefined) {\n res[key] = val;\n } else if (Array.isArray(res[key])) {\n res[key].push(val);\n } else {\n res[key] = [res[key], val];\n }\n });\n\n return res\n}\n\nfunction stringifyQuery (obj) {\n var res = obj\n ? Object.keys(obj)\n .map(function (key) {\n var val = obj[key];\n\n if (val === undefined) {\n return ''\n }\n\n if (val === null) {\n return encode(key)\n }\n\n if (Array.isArray(val)) {\n var result = [];\n val.forEach(function (val2) {\n if (val2 === undefined) {\n return\n }\n if (val2 === null) {\n result.push(encode(key));\n } else {\n result.push(encode(key) + '=' + encode(val2));\n }\n });\n return result.join('&')\n }\n\n return encode(key) + '=' + encode(val)\n })\n .filter(function (x) { return x.length > 0; })\n .join('&')\n : null;\n return res ? (\"?\" + res) : ''\n}\n\n/* */\n\nvar trailingSlashRE = /\\/?$/;\n\nfunction createRoute (\n record,\n location,\n redirectedFrom,\n router\n) {\n var stringifyQuery = router && router.options.stringifyQuery;\n\n var query = location.query || {};\n try {\n query = clone(query);\n } catch (e) {}\n\n var route = {\n name: location.name || (record && record.name),\n meta: (record && record.meta) || {},\n path: location.path || '/',\n hash: location.hash || '',\n query: query,\n params: location.params || {},\n fullPath: getFullPath(location, stringifyQuery),\n matched: record ? formatMatch(record) : []\n };\n if (redirectedFrom) {\n route.redirectedFrom = getFullPath(redirectedFrom, stringifyQuery);\n }\n return Object.freeze(route)\n}\n\nfunction clone (value) {\n if (Array.isArray(value)) {\n return value.map(clone)\n } else if (value && typeof value === 'object') {\n var res = {};\n for (var key in value) {\n res[key] = clone(value[key]);\n }\n return res\n } else {\n return value\n }\n}\n\n// the starting route that represents the initial state\nvar START = createRoute(null, {\n path: '/'\n});\n\nfunction formatMatch (record) {\n var res = [];\n while (record) {\n res.unshift(record);\n record = record.parent;\n }\n return res\n}\n\nfunction getFullPath (\n ref,\n _stringifyQuery\n) {\n var path = ref.path;\n var query = ref.query; if ( query === void 0 ) query = {};\n var hash = ref.hash; if ( hash === void 0 ) hash = '';\n\n var stringify = _stringifyQuery || stringifyQuery;\n return (path || '/') + stringify(query) + hash\n}\n\nfunction isSameRoute (a, b, onlyPath) {\n if (b === START) {\n return a === b\n } else if (!b) {\n return false\n } else if (a.path && b.path) {\n return a.path.replace(trailingSlashRE, '') === b.path.replace(trailingSlashRE, '') && (onlyPath ||\n a.hash === b.hash &&\n isObjectEqual(a.query, b.query))\n } else if (a.name && b.name) {\n return (\n a.name === b.name &&\n (onlyPath || (\n a.hash === b.hash &&\n isObjectEqual(a.query, b.query) &&\n isObjectEqual(a.params, b.params))\n )\n )\n } else {\n return false\n }\n}\n\nfunction isObjectEqual (a, b) {\n if ( a === void 0 ) a = {};\n if ( b === void 0 ) b = {};\n\n // handle null value #1566\n if (!a || !b) { return a === b }\n var aKeys = Object.keys(a).sort();\n var bKeys = Object.keys(b).sort();\n if (aKeys.length !== bKeys.length) {\n return false\n }\n return aKeys.every(function (key, i) {\n var aVal = a[key];\n var bKey = bKeys[i];\n if (bKey !== key) { return false }\n var bVal = b[key];\n // query values can be null and undefined\n if (aVal == null || bVal == null) { return aVal === bVal }\n // check nested equality\n if (typeof aVal === 'object' && typeof bVal === 'object') {\n return isObjectEqual(aVal, bVal)\n }\n return String(aVal) === String(bVal)\n })\n}\n\nfunction isIncludedRoute (current, target) {\n return (\n current.path.replace(trailingSlashRE, '/').indexOf(\n target.path.replace(trailingSlashRE, '/')\n ) === 0 &&\n (!target.hash || current.hash === target.hash) &&\n queryIncludes(current.query, target.query)\n )\n}\n\nfunction queryIncludes (current, target) {\n for (var key in target) {\n if (!(key in current)) {\n return false\n }\n }\n return true\n}\n\nfunction handleRouteEntered (route) {\n for (var i = 0; i < route.matched.length; i++) {\n var record = route.matched[i];\n for (var name in record.instances) {\n var instance = record.instances[name];\n var cbs = record.enteredCbs[name];\n if (!instance || !cbs) { continue }\n delete record.enteredCbs[name];\n for (var i$1 = 0; i$1 < cbs.length; i$1++) {\n if (!instance._isBeingDestroyed) { cbs[i$1](instance); }\n }\n }\n }\n}\n\nvar View = {\n name: 'RouterView',\n functional: true,\n props: {\n name: {\n type: String,\n default: 'default'\n }\n },\n render: function render (_, ref) {\n var props = ref.props;\n var children = ref.children;\n var parent = ref.parent;\n var data = ref.data;\n\n // used by devtools to display a router-view badge\n data.routerView = true;\n\n // directly use parent context's createElement() function\n // so that components rendered by router-view can resolve named slots\n var h = parent.$createElement;\n var name = props.name;\n var route = parent.$route;\n var cache = parent._routerViewCache || (parent._routerViewCache = {});\n\n // determine current view depth, also check to see if the tree\n // has been toggled inactive but kept-alive.\n var depth = 0;\n var inactive = false;\n while (parent && parent._routerRoot !== parent) {\n var vnodeData = parent.$vnode ? parent.$vnode.data : {};\n if (vnodeData.routerView) {\n depth++;\n }\n if (vnodeData.keepAlive && parent._directInactive && parent._inactive) {\n inactive = true;\n }\n parent = parent.$parent;\n }\n data.routerViewDepth = depth;\n\n // render previous view if the tree is inactive and kept-alive\n if (inactive) {\n var cachedData = cache[name];\n var cachedComponent = cachedData && cachedData.component;\n if (cachedComponent) {\n // #2301\n // pass props\n if (cachedData.configProps) {\n fillPropsinData(cachedComponent, data, cachedData.route, cachedData.configProps);\n }\n return h(cachedComponent, data, children)\n } else {\n // render previous empty view\n return h()\n }\n }\n\n var matched = route.matched[depth];\n var component = matched && matched.components[name];\n\n // render empty node if no matched route or no config component\n if (!matched || !component) {\n cache[name] = null;\n return h()\n }\n\n // cache component\n cache[name] = { component: component };\n\n // attach instance registration hook\n // this will be called in the instance's injected lifecycle hooks\n data.registerRouteInstance = function (vm, val) {\n // val could be undefined for unregistration\n var current = matched.instances[name];\n if (\n (val && current !== vm) ||\n (!val && current === vm)\n ) {\n matched.instances[name] = val;\n }\n }\n\n // also register instance in prepatch hook\n // in case the same component instance is reused across different routes\n ;(data.hook || (data.hook = {})).prepatch = function (_, vnode) {\n matched.instances[name] = vnode.componentInstance;\n };\n\n // register instance in init hook\n // in case kept-alive component be actived when routes changed\n data.hook.init = function (vnode) {\n if (vnode.data.keepAlive &&\n vnode.componentInstance &&\n vnode.componentInstance !== matched.instances[name]\n ) {\n matched.instances[name] = vnode.componentInstance;\n }\n\n // if the route transition has already been confirmed then we weren't\n // able to call the cbs during confirmation as the component was not\n // registered yet, so we call it here.\n handleRouteEntered(route);\n };\n\n var configProps = matched.props && matched.props[name];\n // save route and configProps in cache\n if (configProps) {\n extend(cache[name], {\n route: route,\n configProps: configProps\n });\n fillPropsinData(component, data, route, configProps);\n }\n\n return h(component, data, children)\n }\n};\n\nfunction fillPropsinData (component, data, route, configProps) {\n // resolve props\n var propsToPass = data.props = resolveProps(route, configProps);\n if (propsToPass) {\n // clone to prevent mutation\n propsToPass = data.props = extend({}, propsToPass);\n // pass non-declared props as attrs\n var attrs = data.attrs = data.attrs || {};\n for (var key in propsToPass) {\n if (!component.props || !(key in component.props)) {\n attrs[key] = propsToPass[key];\n delete propsToPass[key];\n }\n }\n }\n}\n\nfunction resolveProps (route, config) {\n switch (typeof config) {\n case 'undefined':\n return\n case 'object':\n return config\n case 'function':\n return config(route)\n case 'boolean':\n return config ? route.params : undefined\n default:\n if (process.env.NODE_ENV !== 'production') {\n warn(\n false,\n \"props in \\\"\" + (route.path) + \"\\\" is a \" + (typeof config) + \", \" +\n \"expecting an object, function or boolean.\"\n );\n }\n }\n}\n\n/* */\n\nfunction resolvePath (\n relative,\n base,\n append\n) {\n var firstChar = relative.charAt(0);\n if (firstChar === '/') {\n return relative\n }\n\n if (firstChar === '?' || firstChar === '#') {\n return base + relative\n }\n\n var stack = base.split('/');\n\n // remove trailing segment if:\n // - not appending\n // - appending to trailing slash (last segment is empty)\n if (!append || !stack[stack.length - 1]) {\n stack.pop();\n }\n\n // resolve relative path\n var segments = relative.replace(/^\\//, '').split('/');\n for (var i = 0; i < segments.length; i++) {\n var segment = segments[i];\n if (segment === '..') {\n stack.pop();\n } else if (segment !== '.') {\n stack.push(segment);\n }\n }\n\n // ensure leading slash\n if (stack[0] !== '') {\n stack.unshift('');\n }\n\n return stack.join('/')\n}\n\nfunction parsePath (path) {\n var hash = '';\n var query = '';\n\n var hashIndex = path.indexOf('#');\n if (hashIndex >= 0) {\n hash = path.slice(hashIndex);\n path = path.slice(0, hashIndex);\n }\n\n var queryIndex = path.indexOf('?');\n if (queryIndex >= 0) {\n query = path.slice(queryIndex + 1);\n path = path.slice(0, queryIndex);\n }\n\n return {\n path: path,\n query: query,\n hash: hash\n }\n}\n\nfunction cleanPath (path) {\n return path.replace(/\\/(?:\\s*\\/)+/g, '/')\n}\n\nvar isarray = Array.isArray || function (arr) {\n return Object.prototype.toString.call(arr) == '[object Array]';\n};\n\n/**\n * Expose `pathToRegexp`.\n */\nvar pathToRegexp_1 = pathToRegexp;\nvar parse_1 = parse;\nvar compile_1 = compile;\nvar tokensToFunction_1 = tokensToFunction;\nvar tokensToRegExp_1 = tokensToRegExp;\n\n/**\n * The main path matching regexp utility.\n *\n * @type {RegExp}\n */\nvar PATH_REGEXP = new RegExp([\n // Match escaped characters that would otherwise appear in future matches.\n // This allows the user to escape special characters that won't transform.\n '(\\\\\\\\.)',\n // Match Express-style parameters and un-named parameters with a prefix\n // and optional suffixes. Matches appear as:\n //\n // \"/:test(\\\\d+)?\" => [\"/\", \"test\", \"\\d+\", undefined, \"?\", undefined]\n // \"/route(\\\\d+)\" => [undefined, undefined, undefined, \"\\d+\", undefined, undefined]\n // \"/*\" => [\"/\", undefined, undefined, undefined, undefined, \"*\"]\n '([\\\\/.])?(?:(?:\\\\:(\\\\w+)(?:\\\\(((?:\\\\\\\\.|[^\\\\\\\\()])+)\\\\))?|\\\\(((?:\\\\\\\\.|[^\\\\\\\\()])+)\\\\))([+*?])?|(\\\\*))'\n].join('|'), 'g');\n\n/**\n * Parse a string for the raw tokens.\n *\n * @param {string} str\n * @param {Object=} options\n * @return {!Array}\n */\nfunction parse (str, options) {\n var tokens = [];\n var key = 0;\n var index = 0;\n var path = '';\n var defaultDelimiter = options && options.delimiter || '/';\n var res;\n\n while ((res = PATH_REGEXP.exec(str)) != null) {\n var m = res[0];\n var escaped = res[1];\n var offset = res.index;\n path += str.slice(index, offset);\n index = offset + m.length;\n\n // Ignore already escaped sequences.\n if (escaped) {\n path += escaped[1];\n continue\n }\n\n var next = str[index];\n var prefix = res[2];\n var name = res[3];\n var capture = res[4];\n var group = res[5];\n var modifier = res[6];\n var asterisk = res[7];\n\n // Push the current path onto the tokens.\n if (path) {\n tokens.push(path);\n path = '';\n }\n\n var partial = prefix != null && next != null && next !== prefix;\n var repeat = modifier === '+' || modifier === '*';\n var optional = modifier === '?' || modifier === '*';\n var delimiter = res[2] || defaultDelimiter;\n var pattern = capture || group;\n\n tokens.push({\n name: name || key++,\n prefix: prefix || '',\n delimiter: delimiter,\n optional: optional,\n repeat: repeat,\n partial: partial,\n asterisk: !!asterisk,\n pattern: pattern ? escapeGroup(pattern) : (asterisk ? '.*' : '[^' + escapeString(delimiter) + ']+?')\n });\n }\n\n // Match any characters still remaining.\n if (index < str.length) {\n path += str.substr(index);\n }\n\n // If the path exists, push it onto the end.\n if (path) {\n tokens.push(path);\n }\n\n return tokens\n}\n\n/**\n * Compile a string to a template function for the path.\n *\n * @param {string} str\n * @param {Object=} options\n * @return {!function(Object=, Object=)}\n */\nfunction compile (str, options) {\n return tokensToFunction(parse(str, options), options)\n}\n\n/**\n * Prettier encoding of URI path segments.\n *\n * @param {string}\n * @return {string}\n */\nfunction encodeURIComponentPretty (str) {\n return encodeURI(str).replace(/[\\/?#]/g, function (c) {\n return '%' + c.charCodeAt(0).toString(16).toUpperCase()\n })\n}\n\n/**\n * Encode the asterisk parameter. Similar to `pretty`, but allows slashes.\n *\n * @param {string}\n * @return {string}\n */\nfunction encodeAsterisk (str) {\n return encodeURI(str).replace(/[?#]/g, function (c) {\n return '%' + c.charCodeAt(0).toString(16).toUpperCase()\n })\n}\n\n/**\n * Expose a method for transforming tokens into the path function.\n */\nfunction tokensToFunction (tokens, options) {\n // Compile all the tokens into regexps.\n var matches = new Array(tokens.length);\n\n // Compile all the patterns before compilation.\n for (var i = 0; i < tokens.length; i++) {\n if (typeof tokens[i] === 'object') {\n matches[i] = new RegExp('^(?:' + tokens[i].pattern + ')$', flags(options));\n }\n }\n\n return function (obj, opts) {\n var path = '';\n var data = obj || {};\n var options = opts || {};\n var encode = options.pretty ? encodeURIComponentPretty : encodeURIComponent;\n\n for (var i = 0; i < tokens.length; i++) {\n var token = tokens[i];\n\n if (typeof token === 'string') {\n path += token;\n\n continue\n }\n\n var value = data[token.name];\n var segment;\n\n if (value == null) {\n if (token.optional) {\n // Prepend partial segment prefixes.\n if (token.partial) {\n path += token.prefix;\n }\n\n continue\n } else {\n throw new TypeError('Expected \"' + token.name + '\" to be defined')\n }\n }\n\n if (isarray(value)) {\n if (!token.repeat) {\n throw new TypeError('Expected \"' + token.name + '\" to not repeat, but received `' + JSON.stringify(value) + '`')\n }\n\n if (value.length === 0) {\n if (token.optional) {\n continue\n } else {\n throw new TypeError('Expected \"' + token.name + '\" to not be empty')\n }\n }\n\n for (var j = 0; j < value.length; j++) {\n segment = encode(value[j]);\n\n if (!matches[i].test(segment)) {\n throw new TypeError('Expected all \"' + token.name + '\" to match \"' + token.pattern + '\", but received `' + JSON.stringify(segment) + '`')\n }\n\n path += (j === 0 ? token.prefix : token.delimiter) + segment;\n }\n\n continue\n }\n\n segment = token.asterisk ? encodeAsterisk(value) : encode(value);\n\n if (!matches[i].test(segment)) {\n throw new TypeError('Expected \"' + token.name + '\" to match \"' + token.pattern + '\", but received \"' + segment + '\"')\n }\n\n path += token.prefix + segment;\n }\n\n return path\n }\n}\n\n/**\n * Escape a regular expression string.\n *\n * @param {string} str\n * @return {string}\n */\nfunction escapeString (str) {\n return str.replace(/([.+*?=^!:${}()[\\]|\\/\\\\])/g, '\\\\$1')\n}\n\n/**\n * Escape the capturing group by escaping special characters and meaning.\n *\n * @param {string} group\n * @return {string}\n */\nfunction escapeGroup (group) {\n return group.replace(/([=!:$\\/()])/g, '\\\\$1')\n}\n\n/**\n * Attach the keys as a property of the regexp.\n *\n * @param {!RegExp} re\n * @param {Array} keys\n * @return {!RegExp}\n */\nfunction attachKeys (re, keys) {\n re.keys = keys;\n return re\n}\n\n/**\n * Get the flags for a regexp from the options.\n *\n * @param {Object} options\n * @return {string}\n */\nfunction flags (options) {\n return options && options.sensitive ? '' : 'i'\n}\n\n/**\n * Pull out keys from a regexp.\n *\n * @param {!RegExp} path\n * @param {!Array} keys\n * @return {!RegExp}\n */\nfunction regexpToRegexp (path, keys) {\n // Use a negative lookahead to match only capturing groups.\n var groups = path.source.match(/\\((?!\\?)/g);\n\n if (groups) {\n for (var i = 0; i < groups.length; i++) {\n keys.push({\n name: i,\n prefix: null,\n delimiter: null,\n optional: false,\n repeat: false,\n partial: false,\n asterisk: false,\n pattern: null\n });\n }\n }\n\n return attachKeys(path, keys)\n}\n\n/**\n * Transform an array into a regexp.\n *\n * @param {!Array} path\n * @param {Array} keys\n * @param {!Object} options\n * @return {!RegExp}\n */\nfunction arrayToRegexp (path, keys, options) {\n var parts = [];\n\n for (var i = 0; i < path.length; i++) {\n parts.push(pathToRegexp(path[i], keys, options).source);\n }\n\n var regexp = new RegExp('(?:' + parts.join('|') + ')', flags(options));\n\n return attachKeys(regexp, keys)\n}\n\n/**\n * Create a path regexp from string input.\n *\n * @param {string} path\n * @param {!Array} keys\n * @param {!Object} options\n * @return {!RegExp}\n */\nfunction stringToRegexp (path, keys, options) {\n return tokensToRegExp(parse(path, options), keys, options)\n}\n\n/**\n * Expose a function for taking tokens and returning a RegExp.\n *\n * @param {!Array} tokens\n * @param {(Array|Object)=} keys\n * @param {Object=} options\n * @return {!RegExp}\n */\nfunction tokensToRegExp (tokens, keys, options) {\n if (!isarray(keys)) {\n options = /** @type {!Object} */ (keys || options);\n keys = [];\n }\n\n options = options || {};\n\n var strict = options.strict;\n var end = options.end !== false;\n var route = '';\n\n // Iterate over the tokens and create our regexp string.\n for (var i = 0; i < tokens.length; i++) {\n var token = tokens[i];\n\n if (typeof token === 'string') {\n route += escapeString(token);\n } else {\n var prefix = escapeString(token.prefix);\n var capture = '(?:' + token.pattern + ')';\n\n keys.push(token);\n\n if (token.repeat) {\n capture += '(?:' + prefix + capture + ')*';\n }\n\n if (token.optional) {\n if (!token.partial) {\n capture = '(?:' + prefix + '(' + capture + '))?';\n } else {\n capture = prefix + '(' + capture + ')?';\n }\n } else {\n capture = prefix + '(' + capture + ')';\n }\n\n route += capture;\n }\n }\n\n var delimiter = escapeString(options.delimiter || '/');\n var endsWithDelimiter = route.slice(-delimiter.length) === delimiter;\n\n // In non-strict mode we allow a slash at the end of match. If the path to\n // match already ends with a slash, we remove it for consistency. The slash\n // is valid at the end of a path match, not in the middle. This is important\n // in non-ending mode, where \"/test/\" shouldn't match \"/test//route\".\n if (!strict) {\n route = (endsWithDelimiter ? route.slice(0, -delimiter.length) : route) + '(?:' + delimiter + '(?=$))?';\n }\n\n if (end) {\n route += '$';\n } else {\n // In non-ending mode, we need the capturing groups to match as much as\n // possible by using a positive lookahead to the end or next path segment.\n route += strict && endsWithDelimiter ? '' : '(?=' + delimiter + '|$)';\n }\n\n return attachKeys(new RegExp('^' + route, flags(options)), keys)\n}\n\n/**\n * Normalize the given path string, returning a regular expression.\n *\n * An empty array can be passed in for the keys, which will hold the\n * placeholder key descriptions. For example, using `/user/:id`, `keys` will\n * contain `[{ name: 'id', delimiter: '/', optional: false, repeat: false }]`.\n *\n * @param {(string|RegExp|Array)} path\n * @param {(Array|Object)=} keys\n * @param {Object=} options\n * @return {!RegExp}\n */\nfunction pathToRegexp (path, keys, options) {\n if (!isarray(keys)) {\n options = /** @type {!Object} */ (keys || options);\n keys = [];\n }\n\n options = options || {};\n\n if (path instanceof RegExp) {\n return regexpToRegexp(path, /** @type {!Array} */ (keys))\n }\n\n if (isarray(path)) {\n return arrayToRegexp(/** @type {!Array} */ (path), /** @type {!Array} */ (keys), options)\n }\n\n return stringToRegexp(/** @type {string} */ (path), /** @type {!Array} */ (keys), options)\n}\npathToRegexp_1.parse = parse_1;\npathToRegexp_1.compile = compile_1;\npathToRegexp_1.tokensToFunction = tokensToFunction_1;\npathToRegexp_1.tokensToRegExp = tokensToRegExp_1;\n\n/* */\n\n// $flow-disable-line\nvar regexpCompileCache = Object.create(null);\n\nfunction fillParams (\n path,\n params,\n routeMsg\n) {\n params = params || {};\n try {\n var filler =\n regexpCompileCache[path] ||\n (regexpCompileCache[path] = pathToRegexp_1.compile(path));\n\n // Fix #2505 resolving asterisk routes { name: 'not-found', params: { pathMatch: '/not-found' }}\n // and fix #3106 so that you can work with location descriptor object having params.pathMatch equal to empty string\n if (typeof params.pathMatch === 'string') { params[0] = params.pathMatch; }\n\n return filler(params, { pretty: true })\n } catch (e) {\n if (process.env.NODE_ENV !== 'production') {\n // Fix #3072 no warn if `pathMatch` is string\n warn(typeof params.pathMatch === 'string', (\"missing param for \" + routeMsg + \": \" + (e.message)));\n }\n return ''\n } finally {\n // delete the 0 if it was added\n delete params[0];\n }\n}\n\n/* */\n\nfunction normalizeLocation (\n raw,\n current,\n append,\n router\n) {\n var next = typeof raw === 'string' ? { path: raw } : raw;\n // named target\n if (next._normalized) {\n return next\n } else if (next.name) {\n next = extend({}, raw);\n var params = next.params;\n if (params && typeof params === 'object') {\n next.params = extend({}, params);\n }\n return next\n }\n\n // relative params\n if (!next.path && next.params && current) {\n next = extend({}, next);\n next._normalized = true;\n var params$1 = extend(extend({}, current.params), next.params);\n if (current.name) {\n next.name = current.name;\n next.params = params$1;\n } else if (current.matched.length) {\n var rawPath = current.matched[current.matched.length - 1].path;\n next.path = fillParams(rawPath, params$1, (\"path \" + (current.path)));\n } else if (process.env.NODE_ENV !== 'production') {\n warn(false, \"relative params navigation requires a current route.\");\n }\n return next\n }\n\n var parsedPath = parsePath(next.path || '');\n var basePath = (current && current.path) || '/';\n var path = parsedPath.path\n ? resolvePath(parsedPath.path, basePath, append || next.append)\n : basePath;\n\n var query = resolveQuery(\n parsedPath.query,\n next.query,\n router && router.options.parseQuery\n );\n\n var hash = next.hash || parsedPath.hash;\n if (hash && hash.charAt(0) !== '#') {\n hash = \"#\" + hash;\n }\n\n return {\n _normalized: true,\n path: path,\n query: query,\n hash: hash\n }\n}\n\n/* */\n\n// work around weird flow bug\nvar toTypes = [String, Object];\nvar eventTypes = [String, Array];\n\nvar noop = function () {};\n\nvar warnedCustomSlot;\nvar warnedTagProp;\nvar warnedEventProp;\n\nvar Link = {\n name: 'RouterLink',\n props: {\n to: {\n type: toTypes,\n required: true\n },\n tag: {\n type: String,\n default: 'a'\n },\n custom: Boolean,\n exact: Boolean,\n exactPath: Boolean,\n append: Boolean,\n replace: Boolean,\n activeClass: String,\n exactActiveClass: String,\n ariaCurrentValue: {\n type: String,\n default: 'page'\n },\n event: {\n type: eventTypes,\n default: 'click'\n }\n },\n render: function render (h) {\n var this$1$1 = this;\n\n var router = this.$router;\n var current = this.$route;\n var ref = router.resolve(\n this.to,\n current,\n this.append\n );\n var location = ref.location;\n var route = ref.route;\n var href = ref.href;\n\n var classes = {};\n var globalActiveClass = router.options.linkActiveClass;\n var globalExactActiveClass = router.options.linkExactActiveClass;\n // Support global empty active class\n var activeClassFallback =\n globalActiveClass == null ? 'router-link-active' : globalActiveClass;\n var exactActiveClassFallback =\n globalExactActiveClass == null\n ? 'router-link-exact-active'\n : globalExactActiveClass;\n var activeClass =\n this.activeClass == null ? activeClassFallback : this.activeClass;\n var exactActiveClass =\n this.exactActiveClass == null\n ? exactActiveClassFallback\n : this.exactActiveClass;\n\n var compareTarget = route.redirectedFrom\n ? createRoute(null, normalizeLocation(route.redirectedFrom), null, router)\n : route;\n\n classes[exactActiveClass] = isSameRoute(current, compareTarget, this.exactPath);\n classes[activeClass] = this.exact || this.exactPath\n ? classes[exactActiveClass]\n : isIncludedRoute(current, compareTarget);\n\n var ariaCurrentValue = classes[exactActiveClass] ? this.ariaCurrentValue : null;\n\n var handler = function (e) {\n if (guardEvent(e)) {\n if (this$1$1.replace) {\n router.replace(location, noop);\n } else {\n router.push(location, noop);\n }\n }\n };\n\n var on = { click: guardEvent };\n if (Array.isArray(this.event)) {\n this.event.forEach(function (e) {\n on[e] = handler;\n });\n } else {\n on[this.event] = handler;\n }\n\n var data = { class: classes };\n\n var scopedSlot =\n !this.$scopedSlots.$hasNormal &&\n this.$scopedSlots.default &&\n this.$scopedSlots.default({\n href: href,\n route: route,\n navigate: handler,\n isActive: classes[activeClass],\n isExactActive: classes[exactActiveClass]\n });\n\n if (scopedSlot) {\n if (process.env.NODE_ENV !== 'production' && !this.custom) {\n !warnedCustomSlot && warn(false, 'In Vue Router 4, the v-slot API will by default wrap its content with an <a> element. Use the custom prop to remove this warning:\\n<router-link v-slot=\"{ navigate, href }\" custom></router-link>\\n');\n warnedCustomSlot = true;\n }\n if (scopedSlot.length === 1) {\n return scopedSlot[0]\n } else if (scopedSlot.length > 1 || !scopedSlot.length) {\n if (process.env.NODE_ENV !== 'production') {\n warn(\n false,\n (\"<router-link> with to=\\\"\" + (this.to) + \"\\\" is trying to use a scoped slot but it didn't provide exactly one child. Wrapping the content with a span element.\")\n );\n }\n return scopedSlot.length === 0 ? h() : h('span', {}, scopedSlot)\n }\n }\n\n if (process.env.NODE_ENV !== 'production') {\n if ('tag' in this.$options.propsData && !warnedTagProp) {\n warn(\n false,\n \"<router-link>'s tag prop is deprecated and has been removed in Vue Router 4. Use the v-slot API to remove this warning: https://next.router.vuejs.org/guide/migration/#removal-of-event-and-tag-props-in-router-link.\"\n );\n warnedTagProp = true;\n }\n if ('event' in this.$options.propsData && !warnedEventProp) {\n warn(\n false,\n \"<router-link>'s event prop is deprecated and has been removed in Vue Router 4. Use the v-slot API to remove this warning: https://next.router.vuejs.org/guide/migration/#removal-of-event-and-tag-props-in-router-link.\"\n );\n warnedEventProp = true;\n }\n }\n\n if (this.tag === 'a') {\n data.on = on;\n data.attrs = { href: href, 'aria-current': ariaCurrentValue };\n } else {\n // find the first <a> child and apply listener and href\n var a = findAnchor(this.$slots.default);\n if (a) {\n // in case the <a> is a static node\n a.isStatic = false;\n var aData = (a.data = extend({}, a.data));\n aData.on = aData.on || {};\n // transform existing events in both objects into arrays so we can push later\n for (var event in aData.on) {\n var handler$1 = aData.on[event];\n if (event in on) {\n aData.on[event] = Array.isArray(handler$1) ? handler$1 : [handler$1];\n }\n }\n // append new listeners for router-link\n for (var event$1 in on) {\n if (event$1 in aData.on) {\n // on[event] is always a function\n aData.on[event$1].push(on[event$1]);\n } else {\n aData.on[event$1] = handler;\n }\n }\n\n var aAttrs = (a.data.attrs = extend({}, a.data.attrs));\n aAttrs.href = href;\n aAttrs['aria-current'] = ariaCurrentValue;\n } else {\n // doesn't have <a> child, apply listener to self\n data.on = on;\n }\n }\n\n return h(this.tag, data, this.$slots.default)\n }\n};\n\nfunction guardEvent (e) {\n // don't redirect with control keys\n if (e.metaKey || e.altKey || e.ctrlKey || e.shiftKey) { return }\n // don't redirect when preventDefault called\n if (e.defaultPrevented) { return }\n // don't redirect on right click\n if (e.button !== undefined && e.button !== 0) { return }\n // don't redirect if `target=\"_blank\"`\n if (e.currentTarget && e.currentTarget.getAttribute) {\n var target = e.currentTarget.getAttribute('target');\n if (/\\b_blank\\b/i.test(target)) { return }\n }\n // this may be a Weex event which doesn't have this method\n if (e.preventDefault) {\n e.preventDefault();\n }\n return true\n}\n\nfunction findAnchor (children) {\n if (children) {\n var child;\n for (var i = 0; i < children.length; i++) {\n child = children[i];\n if (child.tag === 'a') {\n return child\n }\n if (child.children && (child = findAnchor(child.children))) {\n return child\n }\n }\n }\n}\n\nvar _Vue;\n\nfunction install (Vue) {\n if (install.installed && _Vue === Vue) { return }\n install.installed = true;\n\n _Vue = Vue;\n\n var isDef = function (v) { return v !== undefined; };\n\n var registerInstance = function (vm, callVal) {\n var i = vm.$options._parentVnode;\n if (isDef(i) && isDef(i = i.data) && isDef(i = i.registerRouteInstance)) {\n i(vm, callVal);\n }\n };\n\n Vue.mixin({\n beforeCreate: function beforeCreate () {\n if (isDef(this.$options.router)) {\n this._routerRoot = this;\n this._router = this.$options.router;\n this._router.init(this);\n Vue.util.defineReactive(this, '_route', this._router.history.current);\n } else {\n this._routerRoot = (this.$parent && this.$parent._routerRoot) || this;\n }\n registerInstance(this, this);\n },\n destroyed: function destroyed () {\n registerInstance(this);\n }\n });\n\n Object.defineProperty(Vue.prototype, '$router', {\n get: function get () { return this._routerRoot._router }\n });\n\n Object.defineProperty(Vue.prototype, '$route', {\n get: function get () { return this._routerRoot._route }\n });\n\n Vue.component('RouterView', View);\n Vue.component('RouterLink', Link);\n\n var strats = Vue.config.optionMergeStrategies;\n // use the same hook merging strategy for route hooks\n strats.beforeRouteEnter = strats.beforeRouteLeave = strats.beforeRouteUpdate = strats.created;\n}\n\n/* */\n\nvar inBrowser = typeof window !== 'undefined';\n\n/* */\n\nfunction createRouteMap (\n routes,\n oldPathList,\n oldPathMap,\n oldNameMap,\n parentRoute\n) {\n // the path list is used to control path matching priority\n var pathList = oldPathList || [];\n // $flow-disable-line\n var pathMap = oldPathMap || Object.create(null);\n // $flow-disable-line\n var nameMap = oldNameMap || Object.create(null);\n\n routes.forEach(function (route) {\n addRouteRecord(pathList, pathMap, nameMap, route, parentRoute);\n });\n\n // ensure wildcard routes are always at the end\n for (var i = 0, l = pathList.length; i < l; i++) {\n if (pathList[i] === '*') {\n pathList.push(pathList.splice(i, 1)[0]);\n l--;\n i--;\n }\n }\n\n if (process.env.NODE_ENV === 'development') {\n // warn if routes do not include leading slashes\n var found = pathList\n // check for missing leading slash\n .filter(function (path) { return path && path.charAt(0) !== '*' && path.charAt(0) !== '/'; });\n\n if (found.length > 0) {\n var pathNames = found.map(function (path) { return (\"- \" + path); }).join('\\n');\n warn(false, (\"Non-nested routes must include a leading slash character. Fix the following routes: \\n\" + pathNames));\n }\n }\n\n return {\n pathList: pathList,\n pathMap: pathMap,\n nameMap: nameMap\n }\n}\n\nfunction addRouteRecord (\n pathList,\n pathMap,\n nameMap,\n route,\n parent,\n matchAs\n) {\n var path = route.path;\n var name = route.name;\n if (process.env.NODE_ENV !== 'production') {\n assert(path != null, \"\\\"path\\\" is required in a route configuration.\");\n assert(\n typeof route.component !== 'string',\n \"route config \\\"component\\\" for path: \" + (String(\n path || name\n )) + \" cannot be a \" + \"string id. Use an actual component instead.\"\n );\n\n warn(\n // eslint-disable-next-line no-control-regex\n !/[^\\u0000-\\u007F]+/.test(path),\n \"Route with path \\\"\" + path + \"\\\" contains unencoded characters, make sure \" +\n \"your path is correctly encoded before passing it to the router. Use \" +\n \"encodeURI to encode static segments of your path.\"\n );\n }\n\n var pathToRegexpOptions =\n route.pathToRegexpOptions || {};\n var normalizedPath = normalizePath(path, parent, pathToRegexpOptions.strict);\n\n if (typeof route.caseSensitive === 'boolean') {\n pathToRegexpOptions.sensitive = route.caseSensitive;\n }\n\n var record = {\n path: normalizedPath,\n regex: compileRouteRegex(normalizedPath, pathToRegexpOptions),\n components: route.components || { default: route.component },\n alias: route.alias\n ? typeof route.alias === 'string'\n ? [route.alias]\n : route.alias\n : [],\n instances: {},\n enteredCbs: {},\n name: name,\n parent: parent,\n matchAs: matchAs,\n redirect: route.redirect,\n beforeEnter: route.beforeEnter,\n meta: route.meta || {},\n props:\n route.props == null\n ? {}\n : route.components\n ? route.props\n : { default: route.props }\n };\n\n if (route.children) {\n // Warn if route is named, does not redirect and has a default child route.\n // If users navigate to this route by name, the default child will\n // not be rendered (GH Issue #629)\n if (process.env.NODE_ENV !== 'production') {\n if (\n route.name &&\n !route.redirect &&\n route.children.some(function (child) { return /^\\/?$/.test(child.path); })\n ) {\n warn(\n false,\n \"Named Route '\" + (route.name) + \"' has a default child route. \" +\n \"When navigating to this named route (:to=\\\"{name: '\" + (route.name) + \"'}\\\"), \" +\n \"the default child route will not be rendered. Remove the name from \" +\n \"this route and use the name of the default child route for named \" +\n \"links instead.\"\n );\n }\n }\n route.children.forEach(function (child) {\n var childMatchAs = matchAs\n ? cleanPath((matchAs + \"/\" + (child.path)))\n : undefined;\n addRouteRecord(pathList, pathMap, nameMap, child, record, childMatchAs);\n });\n }\n\n if (!pathMap[record.path]) {\n pathList.push(record.path);\n pathMap[record.path] = record;\n }\n\n if (route.alias !== undefined) {\n var aliases = Array.isArray(route.alias) ? route.alias : [route.alias];\n for (var i = 0; i < aliases.length; ++i) {\n var alias = aliases[i];\n if (process.env.NODE_ENV !== 'production' && alias === path) {\n warn(\n false,\n (\"Found an alias with the same value as the path: \\\"\" + path + \"\\\". You have to remove that alias. It will be ignored in development.\")\n );\n // skip in dev to make it work\n continue\n }\n\n var aliasRoute = {\n path: alias,\n children: route.children\n };\n addRouteRecord(\n pathList,\n pathMap,\n nameMap,\n aliasRoute,\n parent,\n record.path || '/' // matchAs\n );\n }\n }\n\n if (name) {\n if (!nameMap[name]) {\n nameMap[name] = record;\n } else if (process.env.NODE_ENV !== 'production' && !matchAs) {\n warn(\n false,\n \"Duplicate named routes definition: \" +\n \"{ name: \\\"\" + name + \"\\\", path: \\\"\" + (record.path) + \"\\\" }\"\n );\n }\n }\n}\n\nfunction compileRouteRegex (\n path,\n pathToRegexpOptions\n) {\n var regex = pathToRegexp_1(path, [], pathToRegexpOptions);\n if (process.env.NODE_ENV !== 'production') {\n var keys = Object.create(null);\n regex.keys.forEach(function (key) {\n warn(\n !keys[key.name],\n (\"Duplicate param keys in route with path: \\\"\" + path + \"\\\"\")\n );\n keys[key.name] = true;\n });\n }\n return regex\n}\n\nfunction normalizePath (\n path,\n parent,\n strict\n) {\n if (!strict) { path = path.replace(/\\/$/, ''); }\n if (path[0] === '/') { return path }\n if (parent == null) { return path }\n return cleanPath(((parent.path) + \"/\" + path))\n}\n\n/* */\n\n\n\nfunction createMatcher (\n routes,\n router\n) {\n var ref = createRouteMap(routes);\n var pathList = ref.pathList;\n var pathMap = ref.pathMap;\n var nameMap = ref.nameMap;\n\n function addRoutes (routes) {\n createRouteMap(routes, pathList, pathMap, nameMap);\n }\n\n function addRoute (parentOrRoute, route) {\n var parent = (typeof parentOrRoute !== 'object') ? nameMap[parentOrRoute] : undefined;\n // $flow-disable-line\n createRouteMap([route || parentOrRoute], pathList, pathMap, nameMap, parent);\n\n // add aliases of parent\n if (parent && parent.alias.length) {\n createRouteMap(\n // $flow-disable-line route is defined if parent is\n parent.alias.map(function (alias) { return ({ path: alias, children: [route] }); }),\n pathList,\n pathMap,\n nameMap,\n parent\n );\n }\n }\n\n function getRoutes () {\n return pathList.map(function (path) { return pathMap[path]; })\n }\n\n function match (\n raw,\n currentRoute,\n redirectedFrom\n ) {\n var location = normalizeLocation(raw, currentRoute, false, router);\n var name = location.name;\n\n if (name) {\n var record = nameMap[name];\n if (process.env.NODE_ENV !== 'production') {\n warn(record, (\"Route with name '\" + name + \"' does not exist\"));\n }\n if (!record) { return _createRoute(null, location) }\n var paramNames = record.regex.keys\n .filter(function (key) { return !key.optional; })\n .map(function (key) { return key.name; });\n\n if (typeof location.params !== 'object') {\n location.params = {};\n }\n\n if (currentRoute && typeof currentRoute.params === 'object') {\n for (var key in currentRoute.params) {\n if (!(key in location.params) && paramNames.indexOf(key) > -1) {\n location.params[key] = currentRoute.params[key];\n }\n }\n }\n\n location.path = fillParams(record.path, location.params, (\"named route \\\"\" + name + \"\\\"\"));\n return _createRoute(record, location, redirectedFrom)\n } else if (location.path) {\n location.params = {};\n for (var i = 0; i < pathList.length; i++) {\n var path = pathList[i];\n var record$1 = pathMap[path];\n if (matchRoute(record$1.regex, location.path, location.params)) {\n return _createRoute(record$1, location, redirectedFrom)\n }\n }\n }\n // no match\n return _createRoute(null, location)\n }\n\n function redirect (\n record,\n location\n ) {\n var originalRedirect = record.redirect;\n var redirect = typeof originalRedirect === 'function'\n ? originalRedirect(createRoute(record, location, null, router))\n : originalRedirect;\n\n if (typeof redirect === 'string') {\n redirect = { path: redirect };\n }\n\n if (!redirect || typeof redirect !== 'object') {\n if (process.env.NODE_ENV !== 'production') {\n warn(\n false, (\"invalid redirect option: \" + (JSON.stringify(redirect)))\n );\n }\n return _createRoute(null, location)\n }\n\n var re = redirect;\n var name = re.name;\n var path = re.path;\n var query = location.query;\n var hash = location.hash;\n var params = location.params;\n query = re.hasOwnProperty('query') ? re.query : query;\n hash = re.hasOwnProperty('hash') ? re.hash : hash;\n params = re.hasOwnProperty('params') ? re.params : params;\n\n if (name) {\n // resolved named direct\n var targetRecord = nameMap[name];\n if (process.env.NODE_ENV !== 'production') {\n assert(targetRecord, (\"redirect failed: named route \\\"\" + name + \"\\\" not found.\"));\n }\n return match({\n _normalized: true,\n name: name,\n query: query,\n hash: hash,\n params: params\n }, undefined, location)\n } else if (path) {\n // 1. resolve relative redirect\n var rawPath = resolveRecordPath(path, record);\n // 2. resolve params\n var resolvedPath = fillParams(rawPath, params, (\"redirect route with path \\\"\" + rawPath + \"\\\"\"));\n // 3. rematch with existing query and hash\n return match({\n _normalized: true,\n path: resolvedPath,\n query: query,\n hash: hash\n }, undefined, location)\n } else {\n if (process.env.NODE_ENV !== 'production') {\n warn(false, (\"invalid redirect option: \" + (JSON.stringify(redirect))));\n }\n return _createRoute(null, location)\n }\n }\n\n function alias (\n record,\n location,\n matchAs\n ) {\n var aliasedPath = fillParams(matchAs, location.params, (\"aliased route with path \\\"\" + matchAs + \"\\\"\"));\n var aliasedMatch = match({\n _normalized: true,\n path: aliasedPath\n });\n if (aliasedMatch) {\n var matched = aliasedMatch.matched;\n var aliasedRecord = matched[matched.length - 1];\n location.params = aliasedMatch.params;\n return _createRoute(aliasedRecord, location)\n }\n return _createRoute(null, location)\n }\n\n function _createRoute (\n record,\n location,\n redirectedFrom\n ) {\n if (record && record.redirect) {\n return redirect(record, redirectedFrom || location)\n }\n if (record && record.matchAs) {\n return alias(record, location, record.matchAs)\n }\n return createRoute(record, location, redirectedFrom, router)\n }\n\n return {\n match: match,\n addRoute: addRoute,\n getRoutes: getRoutes,\n addRoutes: addRoutes\n }\n}\n\nfunction matchRoute (\n regex,\n path,\n params\n) {\n var m = path.match(regex);\n\n if (!m) {\n return false\n } else if (!params) {\n return true\n }\n\n for (var i = 1, len = m.length; i < len; ++i) {\n var key = regex.keys[i - 1];\n if (key) {\n // Fix #1994: using * with props: true generates a param named 0\n params[key.name || 'pathMatch'] = typeof m[i] === 'string' ? decode(m[i]) : m[i];\n }\n }\n\n return true\n}\n\nfunction resolveRecordPath (path, record) {\n return resolvePath(path, record.parent ? record.parent.path : '/', true)\n}\n\n/* */\n\n// use User Timing api (if present) for more accurate key precision\nvar Time =\n inBrowser && window.performance && window.performance.now\n ? window.performance\n : Date;\n\nfunction genStateKey () {\n return Time.now().toFixed(3)\n}\n\nvar _key = genStateKey();\n\nfunction getStateKey () {\n return _key\n}\n\nfunction setStateKey (key) {\n return (_key = key)\n}\n\n/* */\n\nvar positionStore = Object.create(null);\n\nfunction setupScroll () {\n // Prevent browser scroll behavior on History popstate\n if ('scrollRestoration' in window.history) {\n window.history.scrollRestoration = 'manual';\n }\n // Fix for #1585 for Firefox\n // Fix for #2195 Add optional third attribute to workaround a bug in safari https://bugs.webkit.org/show_bug.cgi?id=182678\n // Fix for #2774 Support for apps loaded from Windows file shares not mapped to network drives: replaced location.origin with\n // window.location.protocol + '//' + window.location.host\n // location.host contains the port and location.hostname doesn't\n var protocolAndPath = window.location.protocol + '//' + window.location.host;\n var absolutePath = window.location.href.replace(protocolAndPath, '');\n // preserve existing history state as it could be overriden by the user\n var stateCopy = extend({}, window.history.state);\n stateCopy.key = getStateKey();\n window.history.replaceState(stateCopy, '', absolutePath);\n window.addEventListener('popstate', handlePopState);\n return function () {\n window.removeEventListener('popstate', handlePopState);\n }\n}\n\nfunction handleScroll (\n router,\n to,\n from,\n isPop\n) {\n if (!router.app) {\n return\n }\n\n var behavior = router.options.scrollBehavior;\n if (!behavior) {\n return\n }\n\n if (process.env.NODE_ENV !== 'production') {\n assert(typeof behavior === 'function', \"scrollBehavior must be a function\");\n }\n\n // wait until re-render finishes before scrolling\n router.app.$nextTick(function () {\n var position = getScrollPosition();\n var shouldScroll = behavior.call(\n router,\n to,\n from,\n isPop ? position : null\n );\n\n if (!shouldScroll) {\n return\n }\n\n if (typeof shouldScroll.then === 'function') {\n shouldScroll\n .then(function (shouldScroll) {\n scrollToPosition((shouldScroll), position);\n })\n .catch(function (err) {\n if (process.env.NODE_ENV !== 'production') {\n assert(false, err.toString());\n }\n });\n } else {\n scrollToPosition(shouldScroll, position);\n }\n });\n}\n\nfunction saveScrollPosition () {\n var key = getStateKey();\n if (key) {\n positionStore[key] = {\n x: window.pageXOffset,\n y: window.pageYOffset\n };\n }\n}\n\nfunction handlePopState (e) {\n saveScrollPosition();\n if (e.state && e.state.key) {\n setStateKey(e.state.key);\n }\n}\n\nfunction getScrollPosition () {\n var key = getStateKey();\n if (key) {\n return positionStore[key]\n }\n}\n\nfunction getElementPosition (el, offset) {\n var docEl = document.documentElement;\n var docRect = docEl.getBoundingClientRect();\n var elRect = el.getBoundingClientRect();\n return {\n x: elRect.left - docRect.left - offset.x,\n y: elRect.top - docRect.top - offset.y\n }\n}\n\nfunction isValidPosition (obj) {\n return isNumber(obj.x) || isNumber(obj.y)\n}\n\nfunction normalizePosition (obj) {\n return {\n x: isNumber(obj.x) ? obj.x : window.pageXOffset,\n y: isNumber(obj.y) ? obj.y : window.pageYOffset\n }\n}\n\nfunction normalizeOffset (obj) {\n return {\n x: isNumber(obj.x) ? obj.x : 0,\n y: isNumber(obj.y) ? obj.y : 0\n }\n}\n\nfunction isNumber (v) {\n return typeof v === 'number'\n}\n\nvar hashStartsWithNumberRE = /^#\\d/;\n\nfunction scrollToPosition (shouldScroll, position) {\n var isObject = typeof shouldScroll === 'object';\n if (isObject && typeof shouldScroll.selector === 'string') {\n // getElementById would still fail if the selector contains a more complicated query like #main[data-attr]\n // but at the same time, it doesn't make much sense to select an element with an id and an extra selector\n var el = hashStartsWithNumberRE.test(shouldScroll.selector) // $flow-disable-line\n ? document.getElementById(shouldScroll.selector.slice(1)) // $flow-disable-line\n : document.querySelector(shouldScroll.selector);\n\n if (el) {\n var offset =\n shouldScroll.offset && typeof shouldScroll.offset === 'object'\n ? shouldScroll.offset\n : {};\n offset = normalizeOffset(offset);\n position = getElementPosition(el, offset);\n } else if (isValidPosition(shouldScroll)) {\n position = normalizePosition(shouldScroll);\n }\n } else if (isObject && isValidPosition(shouldScroll)) {\n position = normalizePosition(shouldScroll);\n }\n\n if (position) {\n // $flow-disable-line\n if ('scrollBehavior' in document.documentElement.style) {\n window.scrollTo({\n left: position.x,\n top: position.y,\n // $flow-disable-line\n behavior: shouldScroll.behavior\n });\n } else {\n window.scrollTo(position.x, position.y);\n }\n }\n}\n\n/* */\n\nvar supportsPushState =\n inBrowser &&\n (function () {\n var ua = window.navigator.userAgent;\n\n if (\n (ua.indexOf('Android 2.') !== -1 || ua.indexOf('Android 4.0') !== -1) &&\n ua.indexOf('Mobile Safari') !== -1 &&\n ua.indexOf('Chrome') === -1 &&\n ua.indexOf('Windows Phone') === -1\n ) {\n return false\n }\n\n return window.history && typeof window.history.pushState === 'function'\n })();\n\nfunction pushState (url, replace) {\n saveScrollPosition();\n // try...catch the pushState call to get around Safari\n // DOM Exception 18 where it limits to 100 pushState calls\n var history = window.history;\n try {\n if (replace) {\n // preserve existing history state as it could be overriden by the user\n var stateCopy = extend({}, history.state);\n stateCopy.key = getStateKey();\n history.replaceState(stateCopy, '', url);\n } else {\n history.pushState({ key: setStateKey(genStateKey()) }, '', url);\n }\n } catch (e) {\n window.location[replace ? 'replace' : 'assign'](url);\n }\n}\n\nfunction replaceState (url) {\n pushState(url, true);\n}\n\n// When changing thing, also edit router.d.ts\nvar NavigationFailureType = {\n redirected: 2,\n aborted: 4,\n cancelled: 8,\n duplicated: 16\n};\n\nfunction createNavigationRedirectedError (from, to) {\n return createRouterError(\n from,\n to,\n NavigationFailureType.redirected,\n (\"Redirected when going from \\\"\" + (from.fullPath) + \"\\\" to \\\"\" + (stringifyRoute(\n to\n )) + \"\\\" via a navigation guard.\")\n )\n}\n\nfunction createNavigationDuplicatedError (from, to) {\n var error = createRouterError(\n from,\n to,\n NavigationFailureType.duplicated,\n (\"Avoided redundant navigation to current location: \\\"\" + (from.fullPath) + \"\\\".\")\n );\n // backwards compatible with the first introduction of Errors\n error.name = 'NavigationDuplicated';\n return error\n}\n\nfunction createNavigationCancelledError (from, to) {\n return createRouterError(\n from,\n to,\n NavigationFailureType.cancelled,\n (\"Navigation cancelled from \\\"\" + (from.fullPath) + \"\\\" to \\\"\" + (to.fullPath) + \"\\\" with a new navigation.\")\n )\n}\n\nfunction createNavigationAbortedError (from, to) {\n return createRouterError(\n from,\n to,\n NavigationFailureType.aborted,\n (\"Navigation aborted from \\\"\" + (from.fullPath) + \"\\\" to \\\"\" + (to.fullPath) + \"\\\" via a navigation guard.\")\n )\n}\n\nfunction createRouterError (from, to, type, message) {\n var error = new Error(message);\n error._isRouter = true;\n error.from = from;\n error.to = to;\n error.type = type;\n\n return error\n}\n\nvar propertiesToLog = ['params', 'query', 'hash'];\n\nfunction stringifyRoute (to) {\n if (typeof to === 'string') { return to }\n if ('path' in to) { return to.path }\n var location = {};\n propertiesToLog.forEach(function (key) {\n if (key in to) { location[key] = to[key]; }\n });\n return JSON.stringify(location, null, 2)\n}\n\nfunction isError (err) {\n return Object.prototype.toString.call(err).indexOf('Error') > -1\n}\n\nfunction isNavigationFailure (err, errorType) {\n return (\n isError(err) &&\n err._isRouter &&\n (errorType == null || err.type === errorType)\n )\n}\n\n/* */\n\nfunction runQueue (queue, fn, cb) {\n var step = function (index) {\n if (index >= queue.length) {\n cb();\n } else {\n if (queue[index]) {\n fn(queue[index], function () {\n step(index + 1);\n });\n } else {\n step(index + 1);\n }\n }\n };\n step(0);\n}\n\n/* */\n\nfunction resolveAsyncComponents (matched) {\n return function (to, from, next) {\n var hasAsync = false;\n var pending = 0;\n var error = null;\n\n flatMapComponents(matched, function (def, _, match, key) {\n // if it's a function and doesn't have cid attached,\n // assume it's an async component resolve function.\n // we are not using Vue's default async resolving mechanism because\n // we want to halt the navigation until the incoming component has been\n // resolved.\n if (typeof def === 'function' && def.cid === undefined) {\n hasAsync = true;\n pending++;\n\n var resolve = once(function (resolvedDef) {\n if (isESModule(resolvedDef)) {\n resolvedDef = resolvedDef.default;\n }\n // save resolved on async factory in case it's used elsewhere\n def.resolved = typeof resolvedDef === 'function'\n ? resolvedDef\n : _Vue.extend(resolvedDef);\n match.components[key] = resolvedDef;\n pending--;\n if (pending <= 0) {\n next();\n }\n });\n\n var reject = once(function (reason) {\n var msg = \"Failed to resolve async component \" + key + \": \" + reason;\n process.env.NODE_ENV !== 'production' && warn(false, msg);\n if (!error) {\n error = isError(reason)\n ? reason\n : new Error(msg);\n next(error);\n }\n });\n\n var res;\n try {\n res = def(resolve, reject);\n } catch (e) {\n reject(e);\n }\n if (res) {\n if (typeof res.then === 'function') {\n res.then(resolve, reject);\n } else {\n // new syntax in Vue 2.3\n var comp = res.component;\n if (comp && typeof comp.then === 'function') {\n comp.then(resolve, reject);\n }\n }\n }\n }\n });\n\n if (!hasAsync) { next(); }\n }\n}\n\nfunction flatMapComponents (\n matched,\n fn\n) {\n return flatten(matched.map(function (m) {\n return Object.keys(m.components).map(function (key) { return fn(\n m.components[key],\n m.instances[key],\n m, key\n ); })\n }))\n}\n\nfunction flatten (arr) {\n return Array.prototype.concat.apply([], arr)\n}\n\nvar hasSymbol =\n typeof Symbol === 'function' &&\n typeof Symbol.toStringTag === 'symbol';\n\nfunction isESModule (obj) {\n return obj.__esModule || (hasSymbol && obj[Symbol.toStringTag] === 'Module')\n}\n\n// in Webpack 2, require.ensure now also returns a Promise\n// so the resolve/reject functions may get called an extra time\n// if the user uses an arrow function shorthand that happens to\n// return that Promise.\nfunction once (fn) {\n var called = false;\n return function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n if (called) { return }\n called = true;\n return fn.apply(this, args)\n }\n}\n\n/* */\n\nvar History = function History (router, base) {\n this.router = router;\n this.base = normalizeBase(base);\n // start with a route object that stands for \"nowhere\"\n this.current = START;\n this.pending = null;\n this.ready = false;\n this.readyCbs = [];\n this.readyErrorCbs = [];\n this.errorCbs = [];\n this.listeners = [];\n};\n\nHistory.prototype.listen = function listen (cb) {\n this.cb = cb;\n};\n\nHistory.prototype.onReady = function onReady (cb, errorCb) {\n if (this.ready) {\n cb();\n } else {\n this.readyCbs.push(cb);\n if (errorCb) {\n this.readyErrorCbs.push(errorCb);\n }\n }\n};\n\nHistory.prototype.onError = function onError (errorCb) {\n this.errorCbs.push(errorCb);\n};\n\nHistory.prototype.transitionTo = function transitionTo (\n location,\n onComplete,\n onAbort\n) {\n var this$1$1 = this;\n\n var route;\n // catch redirect option https://github.com/vuejs/vue-router/issues/3201\n try {\n route = this.router.match(location, this.current);\n } catch (e) {\n this.errorCbs.forEach(function (cb) {\n cb(e);\n });\n // Exception should still be thrown\n throw e\n }\n var prev = this.current;\n this.confirmTransition(\n route,\n function () {\n this$1$1.updateRoute(route);\n onComplete && onComplete(route);\n this$1$1.ensureURL();\n this$1$1.router.afterHooks.forEach(function (hook) {\n hook && hook(route, prev);\n });\n\n // fire ready cbs once\n if (!this$1$1.ready) {\n this$1$1.ready = true;\n this$1$1.readyCbs.forEach(function (cb) {\n cb(route);\n });\n }\n },\n function (err) {\n if (onAbort) {\n onAbort(err);\n }\n if (err && !this$1$1.ready) {\n // Initial redirection should not mark the history as ready yet\n // because it's triggered by the redirection instead\n // https://github.com/vuejs/vue-router/issues/3225\n // https://github.com/vuejs/vue-router/issues/3331\n if (!isNavigationFailure(err, NavigationFailureType.redirected) || prev !== START) {\n this$1$1.ready = true;\n this$1$1.readyErrorCbs.forEach(function (cb) {\n cb(err);\n });\n }\n }\n }\n );\n};\n\nHistory.prototype.confirmTransition = function confirmTransition (route, onComplete, onAbort) {\n var this$1$1 = this;\n\n var current = this.current;\n this.pending = route;\n var abort = function (err) {\n // changed after adding errors with\n // https://github.com/vuejs/vue-router/pull/3047 before that change,\n // redirect and aborted navigation would produce an err == null\n if (!isNavigationFailure(err) && isError(err)) {\n if (this$1$1.errorCbs.length) {\n this$1$1.errorCbs.forEach(function (cb) {\n cb(err);\n });\n } else {\n if (process.env.NODE_ENV !== 'production') {\n warn(false, 'uncaught error during route navigation:');\n }\n console.error(err);\n }\n }\n onAbort && onAbort(err);\n };\n var lastRouteIndex = route.matched.length - 1;\n var lastCurrentIndex = current.matched.length - 1;\n if (\n isSameRoute(route, current) &&\n // in the case the route map has been dynamically appended to\n lastRouteIndex === lastCurrentIndex &&\n route.matched[lastRouteIndex] === current.matched[lastCurrentIndex]\n ) {\n this.ensureURL();\n if (route.hash) {\n handleScroll(this.router, current, route, false);\n }\n return abort(createNavigationDuplicatedError(current, route))\n }\n\n var ref = resolveQueue(\n this.current.matched,\n route.matched\n );\n var updated = ref.updated;\n var deactivated = ref.deactivated;\n var activated = ref.activated;\n\n var queue = [].concat(\n // in-component leave guards\n extractLeaveGuards(deactivated),\n // global before hooks\n this.router.beforeHooks,\n // in-component update hooks\n extractUpdateHooks(updated),\n // in-config enter guards\n activated.map(function (m) { return m.beforeEnter; }),\n // async components\n resolveAsyncComponents(activated)\n );\n\n var iterator = function (hook, next) {\n if (this$1$1.pending !== route) {\n return abort(createNavigationCancelledError(current, route))\n }\n try {\n hook(route, current, function (to) {\n if (to === false) {\n // next(false) -> abort navigation, ensure current URL\n this$1$1.ensureURL(true);\n abort(createNavigationAbortedError(current, route));\n } else if (isError(to)) {\n this$1$1.ensureURL(true);\n abort(to);\n } else if (\n typeof to === 'string' ||\n (typeof to === 'object' &&\n (typeof to.path === 'string' || typeof to.name === 'string'))\n ) {\n // next('/') or next({ path: '/' }) -> redirect\n abort(createNavigationRedirectedError(current, route));\n if (typeof to === 'object' && to.replace) {\n this$1$1.replace(to);\n } else {\n this$1$1.push(to);\n }\n } else {\n // confirm transition and pass on the value\n next(to);\n }\n });\n } catch (e) {\n abort(e);\n }\n };\n\n runQueue(queue, iterator, function () {\n // wait until async components are resolved before\n // extracting in-component enter guards\n var enterGuards = extractEnterGuards(activated);\n var queue = enterGuards.concat(this$1$1.router.resolveHooks);\n runQueue(queue, iterator, function () {\n if (this$1$1.pending !== route) {\n return abort(createNavigationCancelledError(current, route))\n }\n this$1$1.pending = null;\n onComplete(route);\n if (this$1$1.router.app) {\n this$1$1.router.app.$nextTick(function () {\n handleRouteEntered(route);\n });\n }\n });\n });\n};\n\nHistory.prototype.updateRoute = function updateRoute (route) {\n this.current = route;\n this.cb && this.cb(route);\n};\n\nHistory.prototype.setupListeners = function setupListeners () {\n // Default implementation is empty\n};\n\nHistory.prototype.teardown = function teardown () {\n // clean up event listeners\n // https://github.com/vuejs/vue-router/issues/2341\n this.listeners.forEach(function (cleanupListener) {\n cleanupListener();\n });\n this.listeners = [];\n\n // reset current history route\n // https://github.com/vuejs/vue-router/issues/3294\n this.current = START;\n this.pending = null;\n};\n\nfunction normalizeBase (base) {\n if (!base) {\n if (inBrowser) {\n // respect <base> tag\n var baseEl = document.querySelector('base');\n base = (baseEl && baseEl.getAttribute('href')) || '/';\n // strip full URL origin\n base = base.replace(/^https?:\\/\\/[^\\/]+/, '');\n } else {\n base = '/';\n }\n }\n // make sure there's the starting slash\n if (base.charAt(0) !== '/') {\n base = '/' + base;\n }\n // remove trailing slash\n return base.replace(/\\/$/, '')\n}\n\nfunction resolveQueue (\n current,\n next\n) {\n var i;\n var max = Math.max(current.length, next.length);\n for (i = 0; i < max; i++) {\n if (current[i] !== next[i]) {\n break\n }\n }\n return {\n updated: next.slice(0, i),\n activated: next.slice(i),\n deactivated: current.slice(i)\n }\n}\n\nfunction extractGuards (\n records,\n name,\n bind,\n reverse\n) {\n var guards = flatMapComponents(records, function (def, instance, match, key) {\n var guard = extractGuard(def, name);\n if (guard) {\n return Array.isArray(guard)\n ? guard.map(function (guard) { return bind(guard, instance, match, key); })\n : bind(guard, instance, match, key)\n }\n });\n return flatten(reverse ? guards.reverse() : guards)\n}\n\nfunction extractGuard (\n def,\n key\n) {\n if (typeof def !== 'function') {\n // extend now so that global mixins are applied.\n def = _Vue.extend(def);\n }\n return def.options[key]\n}\n\nfunction extractLeaveGuards (deactivated) {\n return extractGuards(deactivated, 'beforeRouteLeave', bindGuard, true)\n}\n\nfunction extractUpdateHooks (updated) {\n return extractGuards(updated, 'beforeRouteUpdate', bindGuard)\n}\n\nfunction bindGuard (guard, instance) {\n if (instance) {\n return function boundRouteGuard () {\n return guard.apply(instance, arguments)\n }\n }\n}\n\nfunction extractEnterGuards (\n activated\n) {\n return extractGuards(\n activated,\n 'beforeRouteEnter',\n function (guard, _, match, key) {\n return bindEnterGuard(guard, match, key)\n }\n )\n}\n\nfunction bindEnterGuard (\n guard,\n match,\n key\n) {\n return function routeEnterGuard (to, from, next) {\n return guard(to, from, function (cb) {\n if (typeof cb === 'function') {\n if (!match.enteredCbs[key]) {\n match.enteredCbs[key] = [];\n }\n match.enteredCbs[key].push(cb);\n }\n next(cb);\n })\n }\n}\n\n/* */\n\nvar HTML5History = /*@__PURE__*/(function (History) {\n function HTML5History (router, base) {\n History.call(this, router, base);\n\n this._startLocation = getLocation(this.base);\n }\n\n if ( History ) HTML5History.__proto__ = History;\n HTML5History.prototype = Object.create( History && History.prototype );\n HTML5History.prototype.constructor = HTML5History;\n\n HTML5History.prototype.setupListeners = function setupListeners () {\n var this$1$1 = this;\n\n if (this.listeners.length > 0) {\n return\n }\n\n var router = this.router;\n var expectScroll = router.options.scrollBehavior;\n var supportsScroll = supportsPushState && expectScroll;\n\n if (supportsScroll) {\n this.listeners.push(setupScroll());\n }\n\n var handleRoutingEvent = function () {\n var current = this$1$1.current;\n\n // Avoiding first `popstate` event dispatched in some browsers but first\n // history route not updated since async guard at the same time.\n var location = getLocation(this$1$1.base);\n if (this$1$1.current === START && location === this$1$1._startLocation) {\n return\n }\n\n this$1$1.transitionTo(location, function (route) {\n if (supportsScroll) {\n handleScroll(router, route, current, true);\n }\n });\n };\n window.addEventListener('popstate', handleRoutingEvent);\n this.listeners.push(function () {\n window.removeEventListener('popstate', handleRoutingEvent);\n });\n };\n\n HTML5History.prototype.go = function go (n) {\n window.history.go(n);\n };\n\n HTML5History.prototype.push = function push (location, onComplete, onAbort) {\n var this$1$1 = this;\n\n var ref = this;\n var fromRoute = ref.current;\n this.transitionTo(location, function (route) {\n pushState(cleanPath(this$1$1.base + route.fullPath));\n handleScroll(this$1$1.router, route, fromRoute, false);\n onComplete && onComplete(route);\n }, onAbort);\n };\n\n HTML5History.prototype.replace = function replace (location, onComplete, onAbort) {\n var this$1$1 = this;\n\n var ref = this;\n var fromRoute = ref.current;\n this.transitionTo(location, function (route) {\n replaceState(cleanPath(this$1$1.base + route.fullPath));\n handleScroll(this$1$1.router, route, fromRoute, false);\n onComplete && onComplete(route);\n }, onAbort);\n };\n\n HTML5History.prototype.ensureURL = function ensureURL (push) {\n if (getLocation(this.base) !== this.current.fullPath) {\n var current = cleanPath(this.base + this.current.fullPath);\n push ? pushState(current) : replaceState(current);\n }\n };\n\n HTML5History.prototype.getCurrentLocation = function getCurrentLocation () {\n return getLocation(this.base)\n };\n\n return HTML5History;\n}(History));\n\nfunction getLocation (base) {\n var path = window.location.pathname;\n var pathLowerCase = path.toLowerCase();\n var baseLowerCase = base.toLowerCase();\n // base=\"/a\" shouldn't turn path=\"/app\" into \"/a/pp\"\n // https://github.com/vuejs/vue-router/issues/3555\n // so we ensure the trailing slash in the base\n if (base && ((pathLowerCase === baseLowerCase) ||\n (pathLowerCase.indexOf(cleanPath(baseLowerCase + '/')) === 0))) {\n path = path.slice(base.length);\n }\n return (path || '/') + window.location.search + window.location.hash\n}\n\n/* */\n\nvar HashHistory = /*@__PURE__*/(function (History) {\n function HashHistory (router, base, fallback) {\n History.call(this, router, base);\n // check history fallback deeplinking\n if (fallback && checkFallback(this.base)) {\n return\n }\n ensureSlash();\n }\n\n if ( History ) HashHistory.__proto__ = History;\n HashHistory.prototype = Object.create( History && History.prototype );\n HashHistory.prototype.constructor = HashHistory;\n\n // this is delayed until the app mounts\n // to avoid the hashchange listener being fired too early\n HashHistory.prototype.setupListeners = function setupListeners () {\n var this$1$1 = this;\n\n if (this.listeners.length > 0) {\n return\n }\n\n var router = this.router;\n var expectScroll = router.options.scrollBehavior;\n var supportsScroll = supportsPushState && expectScroll;\n\n if (supportsScroll) {\n this.listeners.push(setupScroll());\n }\n\n var handleRoutingEvent = function () {\n var current = this$1$1.current;\n if (!ensureSlash()) {\n return\n }\n this$1$1.transitionTo(getHash(), function (route) {\n if (supportsScroll) {\n handleScroll(this$1$1.router, route, current, true);\n }\n if (!supportsPushState) {\n replaceHash(route.fullPath);\n }\n });\n };\n var eventType = supportsPushState ? 'popstate' : 'hashchange';\n window.addEventListener(\n eventType,\n handleRoutingEvent\n );\n this.listeners.push(function () {\n window.removeEventListener(eventType, handleRoutingEvent);\n });\n };\n\n HashHistory.prototype.push = function push (location, onComplete, onAbort) {\n var this$1$1 = this;\n\n var ref = this;\n var fromRoute = ref.current;\n this.transitionTo(\n location,\n function (route) {\n pushHash(route.fullPath);\n handleScroll(this$1$1.router, route, fromRoute, false);\n onComplete && onComplete(route);\n },\n onAbort\n );\n };\n\n HashHistory.prototype.replace = function replace (location, onComplete, onAbort) {\n var this$1$1 = this;\n\n var ref = this;\n var fromRoute = ref.current;\n this.transitionTo(\n location,\n function (route) {\n replaceHash(route.fullPath);\n handleScroll(this$1$1.router, route, fromRoute, false);\n onComplete && onComplete(route);\n },\n onAbort\n );\n };\n\n HashHistory.prototype.go = function go (n) {\n window.history.go(n);\n };\n\n HashHistory.prototype.ensureURL = function ensureURL (push) {\n var current = this.current.fullPath;\n if (getHash() !== current) {\n push ? pushHash(current) : replaceHash(current);\n }\n };\n\n HashHistory.prototype.getCurrentLocation = function getCurrentLocation () {\n return getHash()\n };\n\n return HashHistory;\n}(History));\n\nfunction checkFallback (base) {\n var location = getLocation(base);\n if (!/^\\/#/.test(location)) {\n window.location.replace(cleanPath(base + '/#' + location));\n return true\n }\n}\n\nfunction ensureSlash () {\n var path = getHash();\n if (path.charAt(0) === '/') {\n return true\n }\n replaceHash('/' + path);\n return false\n}\n\nfunction getHash () {\n // We can't use window.location.hash here because it's not\n // consistent across browsers - Firefox will pre-decode it!\n var href = window.location.href;\n var index = href.indexOf('#');\n // empty path\n if (index < 0) { return '' }\n\n href = href.slice(index + 1);\n\n return href\n}\n\nfunction getUrl (path) {\n var href = window.location.href;\n var i = href.indexOf('#');\n var base = i >= 0 ? href.slice(0, i) : href;\n return (base + \"#\" + path)\n}\n\nfunction pushHash (path) {\n if (supportsPushState) {\n pushState(getUrl(path));\n } else {\n window.location.hash = path;\n }\n}\n\nfunction replaceHash (path) {\n if (supportsPushState) {\n replaceState(getUrl(path));\n } else {\n window.location.replace(getUrl(path));\n }\n}\n\n/* */\n\nvar AbstractHistory = /*@__PURE__*/(function (History) {\n function AbstractHistory (router, base) {\n History.call(this, router, base);\n this.stack = [];\n this.index = -1;\n }\n\n if ( History ) AbstractHistory.__proto__ = History;\n AbstractHistory.prototype = Object.create( History && History.prototype );\n AbstractHistory.prototype.constructor = AbstractHistory;\n\n AbstractHistory.prototype.push = function push (location, onComplete, onAbort) {\n var this$1$1 = this;\n\n this.transitionTo(\n location,\n function (route) {\n this$1$1.stack = this$1$1.stack.slice(0, this$1$1.index + 1).concat(route);\n this$1$1.index++;\n onComplete && onComplete(route);\n },\n onAbort\n );\n };\n\n AbstractHistory.prototype.replace = function replace (location, onComplete, onAbort) {\n var this$1$1 = this;\n\n this.transitionTo(\n location,\n function (route) {\n this$1$1.stack = this$1$1.stack.slice(0, this$1$1.index).concat(route);\n onComplete && onComplete(route);\n },\n onAbort\n );\n };\n\n AbstractHistory.prototype.go = function go (n) {\n var this$1$1 = this;\n\n var targetIndex = this.index + n;\n if (targetIndex < 0 || targetIndex >= this.stack.length) {\n return\n }\n var route = this.stack[targetIndex];\n this.confirmTransition(\n route,\n function () {\n var prev = this$1$1.current;\n this$1$1.index = targetIndex;\n this$1$1.updateRoute(route);\n this$1$1.router.afterHooks.forEach(function (hook) {\n hook && hook(route, prev);\n });\n },\n function (err) {\n if (isNavigationFailure(err, NavigationFailureType.duplicated)) {\n this$1$1.index = targetIndex;\n }\n }\n );\n };\n\n AbstractHistory.prototype.getCurrentLocation = function getCurrentLocation () {\n var current = this.stack[this.stack.length - 1];\n return current ? current.fullPath : '/'\n };\n\n AbstractHistory.prototype.ensureURL = function ensureURL () {\n // noop\n };\n\n return AbstractHistory;\n}(History));\n\n/* */\n\n\n\nvar VueRouter = function VueRouter (options) {\n if ( options === void 0 ) options = {};\n\n if (process.env.NODE_ENV !== 'production') {\n warn(this instanceof VueRouter, \"Router must be called with the new operator.\");\n }\n this.app = null;\n this.apps = [];\n this.options = options;\n this.beforeHooks = [];\n this.resolveHooks = [];\n this.afterHooks = [];\n this.matcher = createMatcher(options.routes || [], this);\n\n var mode = options.mode || 'hash';\n this.fallback =\n mode === 'history' && !supportsPushState && options.fallback !== false;\n if (this.fallback) {\n mode = 'hash';\n }\n if (!inBrowser) {\n mode = 'abstract';\n }\n this.mode = mode;\n\n switch (mode) {\n case 'history':\n this.history = new HTML5History(this, options.base);\n break\n case 'hash':\n this.history = new HashHistory(this, options.base, this.fallback);\n break\n case 'abstract':\n this.history = new AbstractHistory(this, options.base);\n break\n default:\n if (process.env.NODE_ENV !== 'production') {\n assert(false, (\"invalid mode: \" + mode));\n }\n }\n};\n\nvar prototypeAccessors = { currentRoute: { configurable: true } };\n\nVueRouter.prototype.match = function match (raw, current, redirectedFrom) {\n return this.matcher.match(raw, current, redirectedFrom)\n};\n\nprototypeAccessors.currentRoute.get = function () {\n return this.history && this.history.current\n};\n\nVueRouter.prototype.init = function init (app /* Vue component instance */) {\n var this$1$1 = this;\n\n process.env.NODE_ENV !== 'production' &&\n assert(\n install.installed,\n \"not installed. Make sure to call `Vue.use(VueRouter)` \" +\n \"before creating root instance.\"\n );\n\n this.apps.push(app);\n\n // set up app destroyed handler\n // https://github.com/vuejs/vue-router/issues/2639\n app.$once('hook:destroyed', function () {\n // clean out app from this.apps array once destroyed\n var index = this$1$1.apps.indexOf(app);\n if (index > -1) { this$1$1.apps.splice(index, 1); }\n // ensure we still have a main app or null if no apps\n // we do not release the router so it can be reused\n if (this$1$1.app === app) { this$1$1.app = this$1$1.apps[0] || null; }\n\n if (!this$1$1.app) { this$1$1.history.teardown(); }\n });\n\n // main app previously initialized\n // return as we don't need to set up new history listener\n if (this.app) {\n return\n }\n\n this.app = app;\n\n var history = this.history;\n\n if (history instanceof HTML5History || history instanceof HashHistory) {\n var handleInitialScroll = function (routeOrError) {\n var from = history.current;\n var expectScroll = this$1$1.options.scrollBehavior;\n var supportsScroll = supportsPushState && expectScroll;\n\n if (supportsScroll && 'fullPath' in routeOrError) {\n handleScroll(this$1$1, routeOrError, from, false);\n }\n };\n var setupListeners = function (routeOrError) {\n history.setupListeners();\n handleInitialScroll(routeOrError);\n };\n history.transitionTo(\n history.getCurrentLocation(),\n setupListeners,\n setupListeners\n );\n }\n\n history.listen(function (route) {\n this$1$1.apps.forEach(function (app) {\n app._route = route;\n });\n });\n};\n\nVueRouter.prototype.beforeEach = function beforeEach (fn) {\n return registerHook(this.beforeHooks, fn)\n};\n\nVueRouter.prototype.beforeResolve = function beforeResolve (fn) {\n return registerHook(this.resolveHooks, fn)\n};\n\nVueRouter.prototype.afterEach = function afterEach (fn) {\n return registerHook(this.afterHooks, fn)\n};\n\nVueRouter.prototype.onReady = function onReady (cb, errorCb) {\n this.history.onReady(cb, errorCb);\n};\n\nVueRouter.prototype.onError = function onError (errorCb) {\n this.history.onError(errorCb);\n};\n\nVueRouter.prototype.push = function push (location, onComplete, onAbort) {\n var this$1$1 = this;\n\n // $flow-disable-line\n if (!onComplete && !onAbort && typeof Promise !== 'undefined') {\n return new Promise(function (resolve, reject) {\n this$1$1.history.push(location, resolve, reject);\n })\n } else {\n this.history.push(location, onComplete, onAbort);\n }\n};\n\nVueRouter.prototype.replace = function replace (location, onComplete, onAbort) {\n var this$1$1 = this;\n\n // $flow-disable-line\n if (!onComplete && !onAbort && typeof Promise !== 'undefined') {\n return new Promise(function (resolve, reject) {\n this$1$1.history.replace(location, resolve, reject);\n })\n } else {\n this.history.replace(location, onComplete, onAbort);\n }\n};\n\nVueRouter.prototype.go = function go (n) {\n this.history.go(n);\n};\n\nVueRouter.prototype.back = function back () {\n this.go(-1);\n};\n\nVueRouter.prototype.forward = function forward () {\n this.go(1);\n};\n\nVueRouter.prototype.getMatchedComponents = function getMatchedComponents (to) {\n var route = to\n ? to.matched\n ? to\n : this.resolve(to).route\n : this.currentRoute;\n if (!route) {\n return []\n }\n return [].concat.apply(\n [],\n route.matched.map(function (m) {\n return Object.keys(m.components).map(function (key) {\n return m.components[key]\n })\n })\n )\n};\n\nVueRouter.prototype.resolve = function resolve (\n to,\n current,\n append\n) {\n current = current || this.history.current;\n var location = normalizeLocation(to, current, append, this);\n var route = this.match(location, current);\n var fullPath = route.redirectedFrom || route.fullPath;\n var base = this.history.base;\n var href = createHref(base, fullPath, this.mode);\n return {\n location: location,\n route: route,\n href: href,\n // for backwards compat\n normalizedTo: location,\n resolved: route\n }\n};\n\nVueRouter.prototype.getRoutes = function getRoutes () {\n return this.matcher.getRoutes()\n};\n\nVueRouter.prototype.addRoute = function addRoute (parentOrRoute, route) {\n this.matcher.addRoute(parentOrRoute, route);\n if (this.history.current !== START) {\n this.history.transitionTo(this.history.getCurrentLocation());\n }\n};\n\nVueRouter.prototype.addRoutes = function addRoutes (routes) {\n if (process.env.NODE_ENV !== 'production') {\n warn(false, 'router.addRoutes() is deprecated and has been removed in Vue Router 4. Use router.addRoute() instead.');\n }\n this.matcher.addRoutes(routes);\n if (this.history.current !== START) {\n this.history.transitionTo(this.history.getCurrentLocation());\n }\n};\n\nObject.defineProperties( VueRouter.prototype, prototypeAccessors );\n\nvar VueRouter$1 = VueRouter;\n\nfunction registerHook (list, fn) {\n list.push(fn);\n return function () {\n var i = list.indexOf(fn);\n if (i > -1) { list.splice(i, 1); }\n }\n}\n\nfunction createHref (base, fullPath, mode) {\n var path = mode === 'hash' ? '#' + fullPath : fullPath;\n return base ? cleanPath(base + '/' + path) : path\n}\n\n// We cannot remove this as it would be a breaking change\nVueRouter.install = install;\nVueRouter.version = '3.6.5';\nVueRouter.isNavigationFailure = isNavigationFailure;\nVueRouter.NavigationFailureType = NavigationFailureType;\nVueRouter.START_LOCATION = START;\n\nif (inBrowser && window.Vue) {\n window.Vue.use(VueRouter);\n}\n\nvar version = '3.6.5';\n\nexport { NavigationFailureType, Link as RouterLink, View as RouterView, START as START_LOCATION, VueRouter$1 as default, isNavigationFailure, version };\n","exports.sync = function (store, router, options) {\n var moduleName = (options || {}).moduleName || 'route'\n\n store.registerModule(moduleName, {\n namespaced: true,\n state: cloneRoute(router.currentRoute),\n mutations: {\n 'ROUTE_CHANGED': function ROUTE_CHANGED (state, transition) {\n store.state[moduleName] = cloneRoute(transition.to, transition.from)\n }\n }\n })\n\n var isTimeTraveling = false\n var currentPath\n\n // sync router on store change\n var storeUnwatch = store.watch(\n function (state) { return state[moduleName]; },\n function (route) {\n var fullPath = route.fullPath;\n if (fullPath === currentPath) {\n return\n }\n if (currentPath != null) {\n isTimeTraveling = true\n router.push(route)\n }\n currentPath = fullPath\n },\n { sync: true }\n )\n\n // sync store on router navigation\n var afterEachUnHook = router.afterEach(function (to, from) {\n if (isTimeTraveling) {\n isTimeTraveling = false\n return\n }\n currentPath = to.fullPath\n store.commit(moduleName + '/ROUTE_CHANGED', { to: to, from: from })\n })\n\n return function unsync () {\n // On unsync, remove router hook\n if (afterEachUnHook != null) {\n afterEachUnHook()\n }\n\n // On unsync, remove store watch\n if (storeUnwatch != null) {\n storeUnwatch()\n }\n\n // On unsync, unregister Module with store\n store.unregisterModule(moduleName)\n }\n}\n\nfunction cloneRoute (to, from) {\n var clone = {\n name: to.name,\n path: to.path,\n hash: to.hash,\n query: to.query,\n params: to.params,\n fullPath: to.fullPath,\n meta: to.meta\n }\n if (from) {\n clone.from = cloneRoute(from)\n }\n return Object.freeze(clone)\n}\n\n","import { getCurrentUser as A, onRequestTokenUpdate as ue, getRequestToken as de } from \"@nextcloud/auth\";\nimport { getLoggerBuilder as B } from \"@nextcloud/logger\";\nimport { getCanonicalLocale as ae } from \"@nextcloud/l10n\";\nimport { join as le, basename as fe, extname as ce, dirname as I } from \"path\";\nimport { encodePath as he } from \"@nextcloud/paths\";\nimport { generateRemoteUrl as pe } from \"@nextcloud/router\";\nimport { createClient as ge, getPatcher as we } from \"webdav\";\nimport { CancelablePromise as me } from \"cancelable-promise\";\n/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\nconst Ne = (e) => e === null ? B().setApp(\"files\").build() : B().setApp(\"files\").setUid(e.uid).build(), m = Ne(A());\n/**\n * @copyright Copyright (c) 2021 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\nclass Ee {\n _entries = [];\n registerEntry(t) {\n this.validateEntry(t), this._entries.push(t);\n }\n unregisterEntry(t) {\n const r = typeof t == \"string\" ? this.getEntryIndex(t) : this.getEntryIndex(t.id);\n if (r === -1) {\n m.warn(\"Entry not found, nothing removed\", { entry: t, entries: this.getEntries() });\n return;\n }\n this._entries.splice(r, 1);\n }\n /**\n * Get the list of registered entries\n *\n * @param {Folder} context the creation context. Usually the current folder\n */\n getEntries(t) {\n return t ? this._entries.filter((r) => typeof r.enabled == \"function\" ? r.enabled(t) : !0) : this._entries;\n }\n getEntryIndex(t) {\n return this._entries.findIndex((r) => r.id === t);\n }\n validateEntry(t) {\n if (!t.id || !t.displayName || !(t.iconSvgInline || t.iconClass) || !t.handler)\n throw new Error(\"Invalid entry\");\n if (typeof t.id != \"string\" || typeof t.displayName != \"string\")\n throw new Error(\"Invalid id or displayName property\");\n if (t.iconClass && typeof t.iconClass != \"string\" || t.iconSvgInline && typeof t.iconSvgInline != \"string\")\n throw new Error(\"Invalid icon provided\");\n if (t.enabled !== void 0 && typeof t.enabled != \"function\")\n throw new Error(\"Invalid enabled property\");\n if (typeof t.handler != \"function\")\n throw new Error(\"Invalid handler property\");\n if (\"order\" in t && typeof t.order != \"number\")\n throw new Error(\"Invalid order property\");\n if (this.getEntryIndex(t.id) !== -1)\n throw new Error(\"Duplicate entry\");\n }\n}\nconst F = function() {\n return typeof window._nc_newfilemenu > \"u\" && (window._nc_newfilemenu = new Ee(), m.debug(\"NewFileMenu initialized\")), window._nc_newfilemenu;\n};\n/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\nconst O = [\"B\", \"KB\", \"MB\", \"GB\", \"TB\", \"PB\"], P = [\"B\", \"KiB\", \"MiB\", \"GiB\", \"TiB\", \"PiB\"];\nfunction Qt(e, t = !1, r = !1, s = !1) {\n r = r && !s, typeof e == \"string\" && (e = Number(e));\n let n = e > 0 ? Math.floor(Math.log(e) / Math.log(s ? 1e3 : 1024)) : 0;\n n = Math.min((r ? P.length : O.length) - 1, n);\n const i = r ? P[n] : O[n];\n let d = (e / Math.pow(s ? 1e3 : 1024, n)).toFixed(1);\n return t === !0 && n === 0 ? (d !== \"0.0\" ? \"< 1 \" : \"0 \") + (r ? P[1] : O[1]) : (n < 2 ? d = parseFloat(d).toFixed(0) : d = parseFloat(d).toLocaleString(ae()), d + \" \" + i);\n}\nfunction Dt(e, t = !1) {\n try {\n e = `${e}`.toLocaleLowerCase().replaceAll(/\\s+/g, \"\").replaceAll(\",\", \".\");\n } catch {\n return null;\n }\n const r = e.match(/^([0-9]*(\\.[0-9]*)?)([kmgtp]?)(i?)b?$/);\n if (r === null || r[1] === \".\" || r[1] === \"\")\n return null;\n const s = {\n \"\": 0,\n k: 1,\n m: 2,\n g: 3,\n t: 4,\n p: 5,\n e: 6\n }, n = `${r[1]}`, i = r[4] === \"i\" || t ? 1024 : 1e3;\n return Math.round(Number.parseFloat(n) * i ** s[r[3]]);\n}\n/**\n * @copyright Copyright (c) 2023 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\nvar W = /* @__PURE__ */ ((e) => (e.DEFAULT = \"default\", e.HIDDEN = \"hidden\", e))(W || {});\nclass er {\n _action;\n constructor(t) {\n this.validateAction(t), this._action = t;\n }\n get id() {\n return this._action.id;\n }\n get displayName() {\n return this._action.displayName;\n }\n get title() {\n return this._action.title;\n }\n get iconSvgInline() {\n return this._action.iconSvgInline;\n }\n get enabled() {\n return this._action.enabled;\n }\n get exec() {\n return this._action.exec;\n }\n get execBatch() {\n return this._action.execBatch;\n }\n get order() {\n return this._action.order;\n }\n get parent() {\n return this._action.parent;\n }\n get default() {\n return this._action.default;\n }\n get inline() {\n return this._action.inline;\n }\n get renderInline() {\n return this._action.renderInline;\n }\n validateAction(t) {\n if (!t.id || typeof t.id != \"string\")\n throw new Error(\"Invalid id\");\n if (!t.displayName || typeof t.displayName != \"function\")\n throw new Error(\"Invalid displayName function\");\n if (\"title\" in t && typeof t.title != \"function\")\n throw new Error(\"Invalid title function\");\n if (!t.iconSvgInline || typeof t.iconSvgInline != \"function\")\n throw new Error(\"Invalid iconSvgInline function\");\n if (!t.exec || typeof t.exec != \"function\")\n throw new Error(\"Invalid exec function\");\n if (\"enabled\" in t && typeof t.enabled != \"function\")\n throw new Error(\"Invalid enabled function\");\n if (\"execBatch\" in t && typeof t.execBatch != \"function\")\n throw new Error(\"Invalid execBatch function\");\n if (\"order\" in t && typeof t.order != \"number\")\n throw new Error(\"Invalid order\");\n if (\"parent\" in t && typeof t.parent != \"string\")\n throw new Error(\"Invalid parent\");\n if (t.default && !Object.values(W).includes(t.default))\n throw new Error(\"Invalid default\");\n if (\"inline\" in t && typeof t.inline != \"function\")\n throw new Error(\"Invalid inline function\");\n if (\"renderInline\" in t && typeof t.renderInline != \"function\")\n throw new Error(\"Invalid renderInline function\");\n }\n}\nconst tr = function(e) {\n if (typeof window._nc_fileactions > \"u\" && (window._nc_fileactions = [], m.debug(\"FileActions initialized\")), window._nc_fileactions.find((t) => t.id === e.id)) {\n m.error(`FileAction ${e.id} already registered`, { action: e });\n return;\n }\n window._nc_fileactions.push(e);\n}, rr = function() {\n return typeof window._nc_fileactions > \"u\" && (window._nc_fileactions = [], m.debug(\"FileActions initialized\")), window._nc_fileactions;\n};\n/**\n * @copyright Copyright (c) 2023 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\nclass nr {\n _header;\n constructor(t) {\n this.validateHeader(t), this._header = t;\n }\n get id() {\n return this._header.id;\n }\n get order() {\n return this._header.order;\n }\n get enabled() {\n return this._header.enabled;\n }\n get render() {\n return this._header.render;\n }\n get updated() {\n return this._header.updated;\n }\n validateHeader(t) {\n if (!t.id || !t.render || !t.updated)\n throw new Error(\"Invalid header: id, render and updated are required\");\n if (typeof t.id != \"string\")\n throw new Error(\"Invalid id property\");\n if (t.enabled !== void 0 && typeof t.enabled != \"function\")\n throw new Error(\"Invalid enabled property\");\n if (t.render && typeof t.render != \"function\")\n throw new Error(\"Invalid render property\");\n if (t.updated && typeof t.updated != \"function\")\n throw new Error(\"Invalid updated property\");\n }\n}\nconst ir = function(e) {\n if (typeof window._nc_filelistheader > \"u\" && (window._nc_filelistheader = [], m.debug(\"FileListHeaders initialized\")), window._nc_filelistheader.find((t) => t.id === e.id)) {\n m.error(`Header ${e.id} already registered`, { header: e });\n return;\n }\n window._nc_filelistheader.push(e);\n}, sr = function() {\n return typeof window._nc_filelistheader > \"u\" && (window._nc_filelistheader = [], m.debug(\"FileListHeaders initialized\")), window._nc_filelistheader;\n};\n/**\n * @copyright Copyright (c) 2022 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\nvar N = /* @__PURE__ */ ((e) => (e[e.NONE = 0] = \"NONE\", e[e.CREATE = 4] = \"CREATE\", e[e.READ = 1] = \"READ\", e[e.UPDATE = 2] = \"UPDATE\", e[e.DELETE = 8] = \"DELETE\", e[e.SHARE = 16] = \"SHARE\", e[e.ALL = 31] = \"ALL\", e))(N || {});\n/**\n * @copyright Copyright (c) 2023 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Ferdinand Thiessen <opensource@fthiessen.de>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\nconst Z = [\n \"d:getcontentlength\",\n \"d:getcontenttype\",\n \"d:getetag\",\n \"d:getlastmodified\",\n \"d:quota-available-bytes\",\n \"d:resourcetype\",\n \"nc:has-preview\",\n \"nc:is-encrypted\",\n \"nc:mount-type\",\n \"oc:comments-unread\",\n \"oc:favorite\",\n \"oc:fileid\",\n \"oc:owner-display-name\",\n \"oc:owner-id\",\n \"oc:permissions\",\n \"oc:size\"\n], j = {\n d: \"DAV:\",\n nc: \"http://nextcloud.org/ns\",\n oc: \"http://owncloud.org/ns\",\n ocs: \"http://open-collaboration-services.org/ns\"\n}, or = function(e, t = { nc: \"http://nextcloud.org/ns\" }) {\n typeof window._nc_dav_properties > \"u\" && (window._nc_dav_properties = [...Z], window._nc_dav_namespaces = { ...j });\n const r = { ...window._nc_dav_namespaces, ...t };\n if (window._nc_dav_properties.find((n) => n === e))\n return m.warn(`${e} already registered`, { prop: e }), !1;\n if (e.startsWith(\"<\") || e.split(\":\").length !== 2)\n return m.error(`${e} is not valid. See example: 'oc:fileid'`, { prop: e }), !1;\n const s = e.split(\":\")[0];\n return r[s] ? (window._nc_dav_properties.push(e), window._nc_dav_namespaces = r, !0) : (m.error(`${e} namespace unknown`, { prop: e, namespaces: r }), !1);\n}, V = function() {\n return typeof window._nc_dav_properties > \"u\" && (window._nc_dav_properties = [...Z]), window._nc_dav_properties.map((e) => `<${e} />`).join(\" \");\n}, S = function() {\n return typeof window._nc_dav_namespaces > \"u\" && (window._nc_dav_namespaces = { ...j }), Object.keys(window._nc_dav_namespaces).map((e) => `xmlns:${e}=\"${window._nc_dav_namespaces?.[e]}\"`).join(\" \");\n}, ur = function() {\n return `<?xml version=\"1.0\"?>\n\t\t<d:propfind ${S()}>\n\t\t\t<d:prop>\n\t\t\t\t${V()}\n\t\t\t</d:prop>\n\t\t</d:propfind>`;\n}, be = function() {\n return `<?xml version=\"1.0\"?>\n\t\t<oc:filter-files ${S()}>\n\t\t\t<d:prop>\n\t\t\t\t${V()}\n\t\t\t</d:prop>\n\t\t\t<oc:filter-rules>\n\t\t\t\t<oc:favorite>1</oc:favorite>\n\t\t\t</oc:filter-rules>\n\t\t</oc:filter-files>`;\n}, dr = function(e) {\n return `<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<d:searchrequest ${S()}\n\txmlns:ns=\"https://github.com/icewind1991/SearchDAV/ns\">\n\t<d:basicsearch>\n\t\t<d:select>\n\t\t\t<d:prop>\n\t\t\t\t${V()}\n\t\t\t</d:prop>\n\t\t</d:select>\n\t\t<d:from>\n\t\t\t<d:scope>\n\t\t\t\t<d:href>/files/${A()?.uid}/</d:href>\n\t\t\t\t<d:depth>infinity</d:depth>\n\t\t\t</d:scope>\n\t\t</d:from>\n\t\t<d:where>\n\t\t\t<d:and>\n\t\t\t\t<d:or>\n\t\t\t\t\t<d:not>\n\t\t\t\t\t\t<d:eq>\n\t\t\t\t\t\t\t<d:prop>\n\t\t\t\t\t\t\t\t<d:getcontenttype/>\n\t\t\t\t\t\t\t</d:prop>\n\t\t\t\t\t\t\t<d:literal>httpd/unix-directory</d:literal>\n\t\t\t\t\t\t</d:eq>\n\t\t\t\t\t</d:not>\n\t\t\t\t\t<d:eq>\n\t\t\t\t\t\t<d:prop>\n\t\t\t\t\t\t\t<oc:size/>\n\t\t\t\t\t\t</d:prop>\n\t\t\t\t\t\t<d:literal>0</d:literal>\n\t\t\t\t\t</d:eq>\n\t\t\t\t</d:or>\n\t\t\t\t<d:gt>\n\t\t\t\t\t<d:prop>\n\t\t\t\t\t\t<d:getlastmodified/>\n\t\t\t\t\t</d:prop>\n\t\t\t\t\t<d:literal>${e}</d:literal>\n\t\t\t\t</d:gt>\n\t\t\t</d:and>\n\t\t</d:where>\n\t\t<d:orderby>\n\t\t\t<d:order>\n\t\t\t\t<d:prop>\n\t\t\t\t\t<d:getlastmodified/>\n\t\t\t\t</d:prop>\n\t\t\t\t<d:descending/>\n\t\t\t</d:order>\n\t\t</d:orderby>\n\t\t<d:limit>\n\t\t\t<d:nresults>100</d:nresults>\n\t\t\t<ns:firstresult>0</ns:firstresult>\n\t\t</d:limit>\n\t</d:basicsearch>\n</d:searchrequest>`;\n};\n/**\n * @copyright Copyright (c) 2023 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Ferdinand Thiessen <opensource@fthiessen.de>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\nconst ye = function(e = \"\") {\n let t = N.NONE;\n return e && ((e.includes(\"C\") || e.includes(\"K\")) && (t |= N.CREATE), e.includes(\"G\") && (t |= N.READ), (e.includes(\"W\") || e.includes(\"N\") || e.includes(\"V\")) && (t |= N.UPDATE), e.includes(\"D\") && (t |= N.DELETE), e.includes(\"R\") && (t |= N.SHARE)), t;\n};\n/**\n * @copyright Copyright (c) 2022 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\nvar L = /* @__PURE__ */ ((e) => (e.Folder = \"folder\", e.File = \"file\", e))(L || {});\n/**\n * @copyright Copyright (c) 2022 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\nconst Y = function(e, t) {\n return e.match(t) !== null;\n}, q = (e, t) => {\n if (e.id && typeof e.id != \"number\")\n throw new Error(\"Invalid id type of value\");\n if (!e.source)\n throw new Error(\"Missing mandatory source\");\n try {\n new URL(e.source);\n } catch {\n throw new Error(\"Invalid source format, source must be a valid URL\");\n }\n if (!e.source.startsWith(\"http\"))\n throw new Error(\"Invalid source format, only http(s) is supported\");\n if (e.mtime && !(e.mtime instanceof Date))\n throw new Error(\"Invalid mtime type\");\n if (e.crtime && !(e.crtime instanceof Date))\n throw new Error(\"Invalid crtime type\");\n if (!e.mime || typeof e.mime != \"string\" || !e.mime.match(/^[-\\w.]+\\/[-+\\w.]+$/gi))\n throw new Error(\"Missing or invalid mandatory mime\");\n if (\"size\" in e && typeof e.size != \"number\" && e.size !== void 0)\n throw new Error(\"Invalid size type\");\n if (\"permissions\" in e && e.permissions !== void 0 && !(typeof e.permissions == \"number\" && e.permissions >= N.NONE && e.permissions <= N.ALL))\n throw new Error(\"Invalid permissions\");\n if (e.owner && e.owner !== null && typeof e.owner != \"string\")\n throw new Error(\"Invalid owner type\");\n if (e.attributes && typeof e.attributes != \"object\")\n throw new Error(\"Invalid attributes type\");\n if (e.root && typeof e.root != \"string\")\n throw new Error(\"Invalid root type\");\n if (e.root && !e.root.startsWith(\"/\"))\n throw new Error(\"Root must start with a leading slash\");\n if (e.root && !e.source.includes(e.root))\n throw new Error(\"Root must be part of the source\");\n if (e.root && Y(e.source, t)) {\n const r = e.source.match(t)[0];\n if (!e.source.includes(le(r, e.root)))\n throw new Error(\"The root must be relative to the service. e.g /files/emma\");\n }\n if (e.status && !Object.values(J).includes(e.status))\n throw new Error(\"Status must be a valid NodeStatus\");\n};\n/**\n * @copyright Copyright (c) 2022 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\nvar J = /* @__PURE__ */ ((e) => (e.NEW = \"new\", e.FAILED = \"failed\", e.LOADING = \"loading\", e.LOCKED = \"locked\", e))(J || {});\nclass Q {\n _data;\n _attributes;\n _knownDavService = /(remote|public)\\.php\\/(web)?dav/i;\n constructor(t, r) {\n q(t, r || this._knownDavService), this._data = t;\n const s = {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n set: (n, i, d) => (this.updateMtime(), Reflect.set(n, i, d)),\n deleteProperty: (n, i) => (this.updateMtime(), Reflect.deleteProperty(n, i))\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n };\n this._attributes = new Proxy(t.attributes || {}, s), delete this._data.attributes, r && (this._knownDavService = r);\n }\n /**\n * Get the source url to this object\n */\n get source() {\n return this._data.source.replace(/\\/$/i, \"\");\n }\n /**\n * Get the encoded source url to this object for requests purposes\n */\n get encodedSource() {\n const { origin: t } = new URL(this.source);\n return t + he(this.source.slice(t.length));\n }\n /**\n * Get this object name\n */\n get basename() {\n return fe(this.source);\n }\n /**\n * Get this object's extension\n */\n get extension() {\n return ce(this.source);\n }\n /**\n * Get the directory path leading to this object\n * Will use the relative path to root if available\n */\n get dirname() {\n if (this.root) {\n let r = this.source;\n this.isDavRessource && (r = r.split(this._knownDavService).pop());\n const s = r.indexOf(this.root), n = this.root.replace(/\\/$/, \"\");\n return I(r.slice(s + n.length) || \"/\");\n }\n const t = new URL(this.source);\n return I(t.pathname);\n }\n /**\n * Get the file mime\n */\n get mime() {\n return this._data.mime;\n }\n /**\n * Get the file modification time\n */\n get mtime() {\n return this._data.mtime;\n }\n /**\n * Get the file creation time\n */\n get crtime() {\n return this._data.crtime;\n }\n /**\n * Get the file size\n */\n get size() {\n return this._data.size;\n }\n /**\n * Get the file attribute\n */\n get attributes() {\n return this._attributes;\n }\n /**\n * Get the file permissions\n */\n get permissions() {\n return this.owner === null && !this.isDavRessource ? N.READ : this._data.permissions !== void 0 ? this._data.permissions : N.NONE;\n }\n /**\n * Get the file owner\n */\n get owner() {\n return this.isDavRessource ? this._data.owner : null;\n }\n /**\n * Is this a dav-related ressource ?\n */\n get isDavRessource() {\n return Y(this.source, this._knownDavService);\n }\n /**\n * Get the dav root of this object\n */\n get root() {\n return this._data.root ? this._data.root.replace(/^(.+)\\/$/, \"$1\") : this.isDavRessource && I(this.source).split(this._knownDavService).pop() || null;\n }\n /**\n * Get the absolute path of this object relative to the root\n */\n get path() {\n if (this.root) {\n let t = this.source;\n this.isDavRessource && (t = t.split(this._knownDavService).pop());\n const r = t.indexOf(this.root), s = this.root.replace(/\\/$/, \"\");\n return t.slice(r + s.length) || \"/\";\n }\n return (this.dirname + \"/\" + this.basename).replace(/\\/\\//g, \"/\");\n }\n /**\n * Get the node id if defined.\n * Will look for the fileid in attributes if undefined.\n */\n get fileid() {\n return this._data?.id || this.attributes?.fileid;\n }\n /**\n * Get the node status.\n */\n get status() {\n return this._data?.status;\n }\n /**\n * Set the node status.\n */\n set status(t) {\n this._data.status = t;\n }\n /**\n * Move the node to a new destination\n *\n * @param {string} destination the new source.\n * e.g. https://cloud.domain.com/remote.php/dav/files/emma/Photos/picture.jpg\n */\n move(t) {\n q({ ...this._data, source: t }, this._knownDavService), this._data.source = t, this.updateMtime();\n }\n /**\n * Rename the node\n * This aliases the move method for easier usage\n *\n * @param basename The new name of the node\n */\n rename(t) {\n if (t.includes(\"/\"))\n throw new Error(\"Invalid basename\");\n this.move(I(this.source) + \"/\" + t);\n }\n /**\n * Update the mtime if exists.\n */\n updateMtime() {\n this._data.mtime && (this._data.mtime = /* @__PURE__ */ new Date());\n }\n}\n/**\n * @copyright Copyright (c) 2022 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\nclass _e extends Q {\n get type() {\n return L.File;\n }\n}\n/**\n * @copyright Copyright (c) 2022 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\nclass ve extends Q {\n constructor(t) {\n super({\n ...t,\n mime: \"httpd/unix-directory\"\n });\n }\n get type() {\n return L.Folder;\n }\n get extension() {\n return null;\n }\n get mime() {\n return \"httpd/unix-directory\";\n }\n}\n/**\n * @copyright Copyright (c) 2023 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Ferdinand Thiessen <opensource@fthiessen.de>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\nconst D = `/files/${A()?.uid}`, ee = pe(\"dav\"), ar = function(e = ee, t = {}) {\n const r = ge(e, { headers: t });\n function s(i) {\n r.setHeaders({\n ...t,\n // Add this so the server knows it is an request from the browser\n \"X-Requested-With\": \"XMLHttpRequest\",\n // Inject user auth\n requesttoken: i ?? \"\"\n });\n }\n return ue(s), s(de()), we().patch(\"fetch\", (i, d) => {\n const u = d.headers;\n return u?.method && (d.method = u.method, delete u.method), fetch(i, d);\n }), r;\n}, lr = (e, t = \"/\", r = D) => {\n const s = new AbortController();\n return new me(async (n, i, d) => {\n d(() => s.abort());\n try {\n const o = (await e.getDirectoryContents(`${r}${t}`, {\n signal: s.signal,\n details: !0,\n data: be(),\n headers: {\n // see davGetClient for patched webdav client\n method: \"REPORT\"\n },\n includeSelf: !0\n })).data.filter((a) => a.filename !== t).map((a) => Te(a, r));\n n(o);\n } catch (u) {\n i(u);\n }\n });\n}, Te = function(e, t = D, r = ee) {\n const s = A()?.uid;\n if (!s)\n throw new Error(\"No user id found\");\n const n = e.props, i = ye(n?.permissions), d = (n?.[\"owner-id\"] || s).toString(), u = {\n id: n?.fileid || 0,\n source: `${r}${e.filename}`,\n mtime: new Date(Date.parse(e.lastmod)),\n mime: e.mime || \"application/octet-stream\",\n size: n?.size || Number.parseInt(n.getcontentlength || \"0\"),\n permissions: i,\n owner: d,\n root: t,\n attributes: {\n ...e,\n ...n,\n hasPreview: n?.[\"has-preview\"]\n }\n };\n return delete u.attributes?.props, e.type === \"file\" ? new _e(u) : new ve(u);\n};\n/**\n * @copyright Copyright (c) 2022 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\nclass Ie {\n _views = [];\n _currentView = null;\n register(t) {\n if (this._views.find((r) => r.id === t.id))\n throw new Error(`View id ${t.id} is already registered`);\n this._views.push(t);\n }\n remove(t) {\n const r = this._views.findIndex((s) => s.id === t);\n r !== -1 && this._views.splice(r, 1);\n }\n get views() {\n return this._views;\n }\n setActive(t) {\n this._currentView = t;\n }\n get active() {\n return this._currentView;\n }\n}\nconst fr = function() {\n return typeof window._nc_navigation > \"u\" && (window._nc_navigation = new Ie(), m.debug(\"Navigation service initialized\")), window._nc_navigation;\n};\n/**\n * @copyright Copyright (c) 2022 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\nclass Ae {\n _column;\n constructor(t) {\n Ce(t), this._column = t;\n }\n get id() {\n return this._column.id;\n }\n get title() {\n return this._column.title;\n }\n get render() {\n return this._column.render;\n }\n get sort() {\n return this._column.sort;\n }\n get summary() {\n return this._column.summary;\n }\n}\nconst Ce = function(e) {\n if (!e.id || typeof e.id != \"string\")\n throw new Error(\"A column id is required\");\n if (!e.title || typeof e.title != \"string\")\n throw new Error(\"A column title is required\");\n if (!e.render || typeof e.render != \"function\")\n throw new Error(\"A render function is required\");\n if (e.sort && typeof e.sort != \"function\")\n throw new Error(\"Column sortFunction must be a function\");\n if (e.summary && typeof e.summary != \"function\")\n throw new Error(\"Column summary must be a function\");\n return !0;\n};\nvar R = {}, C = {};\n(function(e) {\n const t = \":A-Za-z_\\\\u00C0-\\\\u00D6\\\\u00D8-\\\\u00F6\\\\u00F8-\\\\u02FF\\\\u0370-\\\\u037D\\\\u037F-\\\\u1FFF\\\\u200C-\\\\u200D\\\\u2070-\\\\u218F\\\\u2C00-\\\\u2FEF\\\\u3001-\\\\uD7FF\\\\uF900-\\\\uFDCF\\\\uFDF0-\\\\uFFFD\", r = t + \"\\\\-.\\\\d\\\\u00B7\\\\u0300-\\\\u036F\\\\u203F-\\\\u2040\", s = \"[\" + t + \"][\" + r + \"]*\", n = new RegExp(\"^\" + s + \"$\"), i = function(u, o) {\n const a = [];\n let l = o.exec(u);\n for (; l; ) {\n const f = [];\n f.startIndex = o.lastIndex - l[0].length;\n const c = l.length;\n for (let g = 0; g < c; g++)\n f.push(l[g]);\n a.push(f), l = o.exec(u);\n }\n return a;\n }, d = function(u) {\n const o = n.exec(u);\n return !(o === null || typeof o > \"u\");\n };\n e.isExist = function(u) {\n return typeof u < \"u\";\n }, e.isEmptyObject = function(u) {\n return Object.keys(u).length === 0;\n }, e.merge = function(u, o, a) {\n if (o) {\n const l = Object.keys(o), f = l.length;\n for (let c = 0; c < f; c++)\n a === \"strict\" ? u[l[c]] = [o[l[c]]] : u[l[c]] = o[l[c]];\n }\n }, e.getValue = function(u) {\n return e.isExist(u) ? u : \"\";\n }, e.isName = d, e.getAllMatches = i, e.nameRegexp = s;\n})(C);\nconst M = C, Oe = {\n allowBooleanAttributes: !1,\n //A tag can have attributes without any value\n unpairedTags: []\n};\nR.validate = function(e, t) {\n t = Object.assign({}, Oe, t);\n const r = [];\n let s = !1, n = !1;\n e[0] === \"\\uFEFF\" && (e = e.substr(1));\n for (let i = 0; i < e.length; i++)\n if (e[i] === \"<\" && e[i + 1] === \"?\") {\n if (i += 2, i = U(e, i), i.err)\n return i;\n } else if (e[i] === \"<\") {\n let d = i;\n if (i++, e[i] === \"!\") {\n i = G(e, i);\n continue;\n } else {\n let u = !1;\n e[i] === \"/\" && (u = !0, i++);\n let o = \"\";\n for (; i < e.length && e[i] !== \">\" && e[i] !== \" \" && e[i] !== \"\t\" && e[i] !== `\n` && e[i] !== \"\\r\"; i++)\n o += e[i];\n if (o = o.trim(), o[o.length - 1] === \"/\" && (o = o.substring(0, o.length - 1), i--), !Re(o)) {\n let f;\n return o.trim().length === 0 ? f = \"Invalid space after '<'.\" : f = \"Tag '\" + o + \"' is an invalid name.\", p(\"InvalidTag\", f, w(e, i));\n }\n const a = $e(e, i);\n if (a === !1)\n return p(\"InvalidAttr\", \"Attributes for '\" + o + \"' have open quote.\", w(e, i));\n let l = a.value;\n if (i = a.index, l[l.length - 1] === \"/\") {\n const f = i - l.length;\n l = l.substring(0, l.length - 1);\n const c = z(l, t);\n if (c === !0)\n s = !0;\n else\n return p(c.err.code, c.err.msg, w(e, f + c.err.line));\n } else if (u)\n if (a.tagClosed) {\n if (l.trim().length > 0)\n return p(\"InvalidTag\", \"Closing tag '\" + o + \"' can't have attributes or invalid starting.\", w(e, d));\n {\n const f = r.pop();\n if (o !== f.tagName) {\n let c = w(e, f.tagStartPos);\n return p(\n \"InvalidTag\",\n \"Expected closing tag '\" + f.tagName + \"' (opened in line \" + c.line + \", col \" + c.col + \") instead of closing tag '\" + o + \"'.\",\n w(e, d)\n );\n }\n r.length == 0 && (n = !0);\n }\n } else\n return p(\"InvalidTag\", \"Closing tag '\" + o + \"' doesn't have proper closing.\", w(e, i));\n else {\n const f = z(l, t);\n if (f !== !0)\n return p(f.err.code, f.err.msg, w(e, i - l.length + f.err.line));\n if (n === !0)\n return p(\"InvalidXml\", \"Multiple possible root nodes found.\", w(e, i));\n t.unpairedTags.indexOf(o) !== -1 || r.push({ tagName: o, tagStartPos: d }), s = !0;\n }\n for (i++; i < e.length; i++)\n if (e[i] === \"<\")\n if (e[i + 1] === \"!\") {\n i++, i = G(e, i);\n continue;\n } else if (e[i + 1] === \"?\") {\n if (i = U(e, ++i), i.err)\n return i;\n } else\n break;\n else if (e[i] === \"&\") {\n const f = Se(e, i);\n if (f == -1)\n return p(\"InvalidChar\", \"char '&' is not expected.\", w(e, i));\n i = f;\n } else if (n === !0 && !X(e[i]))\n return p(\"InvalidXml\", \"Extra text at the end\", w(e, i));\n e[i] === \"<\" && i--;\n }\n } else {\n if (X(e[i]))\n continue;\n return p(\"InvalidChar\", \"char '\" + e[i] + \"' is not expected.\", w(e, i));\n }\n if (s) {\n if (r.length == 1)\n return p(\"InvalidTag\", \"Unclosed tag '\" + r[0].tagName + \"'.\", w(e, r[0].tagStartPos));\n if (r.length > 0)\n return p(\"InvalidXml\", \"Invalid '\" + JSON.stringify(r.map((i) => i.tagName), null, 4).replace(/\\r?\\n/g, \"\") + \"' found.\", { line: 1, col: 1 });\n } else\n return p(\"InvalidXml\", \"Start tag expected.\", 1);\n return !0;\n};\nfunction X(e) {\n return e === \" \" || e === \"\t\" || e === `\n` || e === \"\\r\";\n}\nfunction U(e, t) {\n const r = t;\n for (; t < e.length; t++)\n if (e[t] == \"?\" || e[t] == \" \") {\n const s = e.substr(r, t - r);\n if (t > 5 && s === \"xml\")\n return p(\"InvalidXml\", \"XML declaration allowed only at the start of the document.\", w(e, t));\n if (e[t] == \"?\" && e[t + 1] == \">\") {\n t++;\n break;\n } else\n continue;\n }\n return t;\n}\nfunction G(e, t) {\n if (e.length > t + 5 && e[t + 1] === \"-\" && e[t + 2] === \"-\") {\n for (t += 3; t < e.length; t++)\n if (e[t] === \"-\" && e[t + 1] === \"-\" && e[t + 2] === \">\") {\n t += 2;\n break;\n }\n } else if (e.length > t + 8 && e[t + 1] === \"D\" && e[t + 2] === \"O\" && e[t + 3] === \"C\" && e[t + 4] === \"T\" && e[t + 5] === \"Y\" && e[t + 6] === \"P\" && e[t + 7] === \"E\") {\n let r = 1;\n for (t += 8; t < e.length; t++)\n if (e[t] === \"<\")\n r++;\n else if (e[t] === \">\" && (r--, r === 0))\n break;\n } else if (e.length > t + 9 && e[t + 1] === \"[\" && e[t + 2] === \"C\" && e[t + 3] === \"D\" && e[t + 4] === \"A\" && e[t + 5] === \"T\" && e[t + 6] === \"A\" && e[t + 7] === \"[\") {\n for (t += 8; t < e.length; t++)\n if (e[t] === \"]\" && e[t + 1] === \"]\" && e[t + 2] === \">\") {\n t += 2;\n break;\n }\n }\n return t;\n}\nconst Pe = '\"', xe = \"'\";\nfunction $e(e, t) {\n let r = \"\", s = \"\", n = !1;\n for (; t < e.length; t++) {\n if (e[t] === Pe || e[t] === xe)\n s === \"\" ? s = e[t] : s !== e[t] || (s = \"\");\n else if (e[t] === \">\" && s === \"\") {\n n = !0;\n break;\n }\n r += e[t];\n }\n return s !== \"\" ? !1 : {\n value: r,\n index: t,\n tagClosed: n\n };\n}\nconst Fe = new RegExp(`(\\\\s*)([^\\\\s=]+)(\\\\s*=)?(\\\\s*(['\"])(([\\\\s\\\\S])*?)\\\\5)?`, \"g\");\nfunction z(e, t) {\n const r = M.getAllMatches(e, Fe), s = {};\n for (let n = 0; n < r.length; n++) {\n if (r[n][1].length === 0)\n return p(\"InvalidAttr\", \"Attribute '\" + r[n][2] + \"' has no space in starting.\", v(r[n]));\n if (r[n][3] !== void 0 && r[n][4] === void 0)\n return p(\"InvalidAttr\", \"Attribute '\" + r[n][2] + \"' is without value.\", v(r[n]));\n if (r[n][3] === void 0 && !t.allowBooleanAttributes)\n return p(\"InvalidAttr\", \"boolean attribute '\" + r[n][2] + \"' is not allowed.\", v(r[n]));\n const i = r[n][2];\n if (!Le(i))\n return p(\"InvalidAttr\", \"Attribute '\" + i + \"' is an invalid name.\", v(r[n]));\n if (!s.hasOwnProperty(i))\n s[i] = 1;\n else\n return p(\"InvalidAttr\", \"Attribute '\" + i + \"' is repeated.\", v(r[n]));\n }\n return !0;\n}\nfunction Ve(e, t) {\n let r = /\\d/;\n for (e[t] === \"x\" && (t++, r = /[\\da-fA-F]/); t < e.length; t++) {\n if (e[t] === \";\")\n return t;\n if (!e[t].match(r))\n break;\n }\n return -1;\n}\nfunction Se(e, t) {\n if (t++, e[t] === \";\")\n return -1;\n if (e[t] === \"#\")\n return t++, Ve(e, t);\n let r = 0;\n for (; t < e.length; t++, r++)\n if (!(e[t].match(/\\w/) && r < 20)) {\n if (e[t] === \";\")\n break;\n return -1;\n }\n return t;\n}\nfunction p(e, t, r) {\n return {\n err: {\n code: e,\n msg: t,\n line: r.line || r,\n col: r.col\n }\n };\n}\nfunction Le(e) {\n return M.isName(e);\n}\nfunction Re(e) {\n return M.isName(e);\n}\nfunction w(e, t) {\n const r = e.substring(0, t).split(/\\r?\\n/);\n return {\n line: r.length,\n // column number is last line's length + 1, because column numbering starts at 1:\n col: r[r.length - 1].length + 1\n };\n}\nfunction v(e) {\n return e.startIndex + e[1].length;\n}\nvar k = {};\nconst te = {\n preserveOrder: !1,\n attributeNamePrefix: \"@_\",\n attributesGroupName: !1,\n textNodeName: \"#text\",\n ignoreAttributes: !0,\n removeNSPrefix: !1,\n // remove NS from tag name or attribute name if true\n allowBooleanAttributes: !1,\n //a tag can have attributes without any value\n //ignoreRootElement : false,\n parseTagValue: !0,\n parseAttributeValue: !1,\n trimValues: !0,\n //Trim string values of tag and attributes\n cdataPropName: !1,\n numberParseOptions: {\n hex: !0,\n leadingZeros: !0,\n eNotation: !0\n },\n tagValueProcessor: function(e, t) {\n return t;\n },\n attributeValueProcessor: function(e, t) {\n return t;\n },\n stopNodes: [],\n //nested tags will not be parsed even for errors\n alwaysCreateTextNode: !1,\n isArray: () => !1,\n commentPropName: !1,\n unpairedTags: [],\n processEntities: !0,\n htmlEntities: !1,\n ignoreDeclaration: !1,\n ignorePiTags: !1,\n transformTagName: !1,\n transformAttributeName: !1,\n updateTag: function(e, t, r) {\n return e;\n }\n // skipEmptyListItem: false\n}, Me = function(e) {\n return Object.assign({}, te, e);\n};\nk.buildOptions = Me;\nk.defaultOptions = te;\nclass ke {\n constructor(t) {\n this.tagname = t, this.child = [], this[\":@\"] = {};\n }\n add(t, r) {\n t === \"__proto__\" && (t = \"#__proto__\"), this.child.push({ [t]: r });\n }\n addChild(t) {\n t.tagname === \"__proto__\" && (t.tagname = \"#__proto__\"), t[\":@\"] && Object.keys(t[\":@\"]).length > 0 ? this.child.push({ [t.tagname]: t.child, \":@\": t[\":@\"] }) : this.child.push({ [t.tagname]: t.child });\n }\n}\nvar Be = ke;\nconst qe = C;\nfunction Xe(e, t) {\n const r = {};\n if (e[t + 3] === \"O\" && e[t + 4] === \"C\" && e[t + 5] === \"T\" && e[t + 6] === \"Y\" && e[t + 7] === \"P\" && e[t + 8] === \"E\") {\n t = t + 9;\n let s = 1, n = !1, i = !1, d = \"\";\n for (; t < e.length; t++)\n if (e[t] === \"<\" && !i) {\n if (n && ze(e, t))\n t += 7, [entityName, val, t] = Ue(e, t + 1), val.indexOf(\"&\") === -1 && (r[Ze(entityName)] = {\n regx: RegExp(`&${entityName};`, \"g\"),\n val\n });\n else if (n && He(e, t))\n t += 8;\n else if (n && Ke(e, t))\n t += 8;\n else if (n && We(e, t))\n t += 9;\n else if (Ge)\n i = !0;\n else\n throw new Error(\"Invalid DOCTYPE\");\n s++, d = \"\";\n } else if (e[t] === \">\") {\n if (i ? e[t - 1] === \"-\" && e[t - 2] === \"-\" && (i = !1, s--) : s--, s === 0)\n break;\n } else\n e[t] === \"[\" ? n = !0 : d += e[t];\n if (s !== 0)\n throw new Error(\"Unclosed DOCTYPE\");\n } else\n throw new Error(\"Invalid Tag instead of DOCTYPE\");\n return { entities: r, i: t };\n}\nfunction Ue(e, t) {\n let r = \"\";\n for (; t < e.length && e[t] !== \"'\" && e[t] !== '\"'; t++)\n r += e[t];\n if (r = r.trim(), r.indexOf(\" \") !== -1)\n throw new Error(\"External entites are not supported\");\n const s = e[t++];\n let n = \"\";\n for (; t < e.length && e[t] !== s; t++)\n n += e[t];\n return [r, n, t];\n}\nfunction Ge(e, t) {\n return e[t + 1] === \"!\" && e[t + 2] === \"-\" && e[t + 3] === \"-\";\n}\nfunction ze(e, t) {\n return e[t + 1] === \"!\" && e[t + 2] === \"E\" && e[t + 3] === \"N\" && e[t + 4] === \"T\" && e[t + 5] === \"I\" && e[t + 6] === \"T\" && e[t + 7] === \"Y\";\n}\nfunction He(e, t) {\n return e[t + 1] === \"!\" && e[t + 2] === \"E\" && e[t + 3] === \"L\" && e[t + 4] === \"E\" && e[t + 5] === \"M\" && e[t + 6] === \"E\" && e[t + 7] === \"N\" && e[t + 8] === \"T\";\n}\nfunction Ke(e, t) {\n return e[t + 1] === \"!\" && e[t + 2] === \"A\" && e[t + 3] === \"T\" && e[t + 4] === \"T\" && e[t + 5] === \"L\" && e[t + 6] === \"I\" && e[t + 7] === \"S\" && e[t + 8] === \"T\";\n}\nfunction We(e, t) {\n return e[t + 1] === \"!\" && e[t + 2] === \"N\" && e[t + 3] === \"O\" && e[t + 4] === \"T\" && e[t + 5] === \"A\" && e[t + 6] === \"T\" && e[t + 7] === \"I\" && e[t + 8] === \"O\" && e[t + 9] === \"N\";\n}\nfunction Ze(e) {\n if (qe.isName(e))\n return e;\n throw new Error(`Invalid entity name ${e}`);\n}\nvar je = Xe;\nconst Ye = /^[-+]?0x[a-fA-F0-9]+$/, Je = /^([\\-\\+])?(0*)(\\.[0-9]+([eE]\\-?[0-9]+)?|[0-9]+(\\.[0-9]+([eE]\\-?[0-9]+)?)?)$/;\n!Number.parseInt && window.parseInt && (Number.parseInt = window.parseInt);\n!Number.parseFloat && window.parseFloat && (Number.parseFloat = window.parseFloat);\nconst Qe = {\n hex: !0,\n leadingZeros: !0,\n decimalPoint: \".\",\n eNotation: !0\n //skipLike: /regex/\n};\nfunction De(e, t = {}) {\n if (t = Object.assign({}, Qe, t), !e || typeof e != \"string\")\n return e;\n let r = e.trim();\n if (t.skipLike !== void 0 && t.skipLike.test(r))\n return e;\n if (t.hex && Ye.test(r))\n return Number.parseInt(r, 16);\n {\n const s = Je.exec(r);\n if (s) {\n const n = s[1], i = s[2];\n let d = et(s[3]);\n const u = s[4] || s[6];\n if (!t.leadingZeros && i.length > 0 && n && r[2] !== \".\")\n return e;\n if (!t.leadingZeros && i.length > 0 && !n && r[1] !== \".\")\n return e;\n {\n const o = Number(r), a = \"\" + o;\n return a.search(/[eE]/) !== -1 || u ? t.eNotation ? o : e : r.indexOf(\".\") !== -1 ? a === \"0\" && d === \"\" || a === d || n && a === \"-\" + d ? o : e : i ? d === a || n + d === a ? o : e : r === a || r === n + a ? o : e;\n }\n } else\n return e;\n }\n}\nfunction et(e) {\n return e && e.indexOf(\".\") !== -1 && (e = e.replace(/0+$/, \"\"), e === \".\" ? e = \"0\" : e[0] === \".\" ? e = \"0\" + e : e[e.length - 1] === \".\" && (e = e.substr(0, e.length - 1))), e;\n}\nvar tt = De;\nconst re = C, T = Be, rt = je, nt = tt;\nlet it = class {\n constructor(t) {\n this.options = t, this.currentNode = null, this.tagsNodeStack = [], this.docTypeEntities = {}, this.lastEntities = {\n apos: { regex: /&(apos|#39|#x27);/g, val: \"'\" },\n gt: { regex: /&(gt|#62|#x3E);/g, val: \">\" },\n lt: { regex: /&(lt|#60|#x3C);/g, val: \"<\" },\n quot: { regex: /&(quot|#34|#x22);/g, val: '\"' }\n }, this.ampEntity = { regex: /&(amp|#38|#x26);/g, val: \"&\" }, this.htmlEntities = {\n space: { regex: /&(nbsp|#160);/g, val: \" \" },\n // \"lt\" : { regex: /&(lt|#60);/g, val: \"<\" },\n // \"gt\" : { regex: /&(gt|#62);/g, val: \">\" },\n // \"amp\" : { regex: /&(amp|#38);/g, val: \"&\" },\n // \"quot\" : { regex: /&(quot|#34);/g, val: \"\\\"\" },\n // \"apos\" : { regex: /&(apos|#39);/g, val: \"'\" },\n cent: { regex: /&(cent|#162);/g, val: \"¢\" },\n pound: { regex: /&(pound|#163);/g, val: \"£\" },\n yen: { regex: /&(yen|#165);/g, val: \"¥\" },\n euro: { regex: /&(euro|#8364);/g, val: \"€\" },\n copyright: { regex: /&(copy|#169);/g, val: \"©\" },\n reg: { regex: /&(reg|#174);/g, val: \"®\" },\n inr: { regex: /&(inr|#8377);/g, val: \"₹\" },\n num_dec: { regex: /&#([0-9]{1,7});/g, val: (r, s) => String.fromCharCode(Number.parseInt(s, 10)) },\n num_hex: { regex: /&#x([0-9a-fA-F]{1,6});/g, val: (r, s) => String.fromCharCode(Number.parseInt(s, 16)) }\n }, this.addExternalEntities = st, this.parseXml = lt, this.parseTextData = ot, this.resolveNameSpace = ut, this.buildAttributesMap = at, this.isItStopNode = pt, this.replaceEntitiesValue = ct, this.readStopNodeData = wt, this.saveTextToParentTag = ht, this.addChild = ft;\n }\n};\nfunction st(e) {\n const t = Object.keys(e);\n for (let r = 0; r < t.length; r++) {\n const s = t[r];\n this.lastEntities[s] = {\n regex: new RegExp(\"&\" + s + \";\", \"g\"),\n val: e[s]\n };\n }\n}\nfunction ot(e, t, r, s, n, i, d) {\n if (e !== void 0 && (this.options.trimValues && !s && (e = e.trim()), e.length > 0)) {\n d || (e = this.replaceEntitiesValue(e));\n const u = this.options.tagValueProcessor(t, e, r, n, i);\n return u == null ? e : typeof u != typeof e || u !== e ? u : this.options.trimValues ? $(e, this.options.parseTagValue, this.options.numberParseOptions) : e.trim() === e ? $(e, this.options.parseTagValue, this.options.numberParseOptions) : e;\n }\n}\nfunction ut(e) {\n if (this.options.removeNSPrefix) {\n const t = e.split(\":\"), r = e.charAt(0) === \"/\" ? \"/\" : \"\";\n if (t[0] === \"xmlns\")\n return \"\";\n t.length === 2 && (e = r + t[1]);\n }\n return e;\n}\nconst dt = new RegExp(`([^\\\\s=]+)\\\\s*(=\\\\s*(['\"])([\\\\s\\\\S]*?)\\\\3)?`, \"gm\");\nfunction at(e, t, r) {\n if (!this.options.ignoreAttributes && typeof e == \"string\") {\n const s = re.getAllMatches(e, dt), n = s.length, i = {};\n for (let d = 0; d < n; d++) {\n const u = this.resolveNameSpace(s[d][1]);\n let o = s[d][4], a = this.options.attributeNamePrefix + u;\n if (u.length)\n if (this.options.transformAttributeName && (a = this.options.transformAttributeName(a)), a === \"__proto__\" && (a = \"#__proto__\"), o !== void 0) {\n this.options.trimValues && (o = o.trim()), o = this.replaceEntitiesValue(o);\n const l = this.options.attributeValueProcessor(u, o, t);\n l == null ? i[a] = o : typeof l != typeof o || l !== o ? i[a] = l : i[a] = $(\n o,\n this.options.parseAttributeValue,\n this.options.numberParseOptions\n );\n } else\n this.options.allowBooleanAttributes && (i[a] = !0);\n }\n if (!Object.keys(i).length)\n return;\n if (this.options.attributesGroupName) {\n const d = {};\n return d[this.options.attributesGroupName] = i, d;\n }\n return i;\n }\n}\nconst lt = function(e) {\n e = e.replace(/\\r\\n?/g, `\n`);\n const t = new T(\"!xml\");\n let r = t, s = \"\", n = \"\";\n for (let i = 0; i < e.length; i++)\n if (e[i] === \"<\")\n if (e[i + 1] === \"/\") {\n const u = y(e, \">\", i, \"Closing Tag is not closed.\");\n let o = e.substring(i + 2, u).trim();\n if (this.options.removeNSPrefix) {\n const f = o.indexOf(\":\");\n f !== -1 && (o = o.substr(f + 1));\n }\n this.options.transformTagName && (o = this.options.transformTagName(o)), r && (s = this.saveTextToParentTag(s, r, n));\n const a = n.substring(n.lastIndexOf(\".\") + 1);\n if (o && this.options.unpairedTags.indexOf(o) !== -1)\n throw new Error(`Unpaired tag can not be used as closing tag: </${o}>`);\n let l = 0;\n a && this.options.unpairedTags.indexOf(a) !== -1 ? (l = n.lastIndexOf(\".\", n.lastIndexOf(\".\") - 1), this.tagsNodeStack.pop()) : l = n.lastIndexOf(\".\"), n = n.substring(0, l), r = this.tagsNodeStack.pop(), s = \"\", i = u;\n } else if (e[i + 1] === \"?\") {\n let u = x(e, i, !1, \"?>\");\n if (!u)\n throw new Error(\"Pi Tag is not closed.\");\n if (s = this.saveTextToParentTag(s, r, n), !(this.options.ignoreDeclaration && u.tagName === \"?xml\" || this.options.ignorePiTags)) {\n const o = new T(u.tagName);\n o.add(this.options.textNodeName, \"\"), u.tagName !== u.tagExp && u.attrExpPresent && (o[\":@\"] = this.buildAttributesMap(u.tagExp, n, u.tagName)), this.addChild(r, o, n);\n }\n i = u.closeIndex + 1;\n } else if (e.substr(i + 1, 3) === \"!--\") {\n const u = y(e, \"-->\", i + 4, \"Comment is not closed.\");\n if (this.options.commentPropName) {\n const o = e.substring(i + 4, u - 2);\n s = this.saveTextToParentTag(s, r, n), r.add(this.options.commentPropName, [{ [this.options.textNodeName]: o }]);\n }\n i = u;\n } else if (e.substr(i + 1, 2) === \"!D\") {\n const u = rt(e, i);\n this.docTypeEntities = u.entities, i = u.i;\n } else if (e.substr(i + 1, 2) === \"![\") {\n const u = y(e, \"]]>\", i, \"CDATA is not closed.\") - 2, o = e.substring(i + 9, u);\n s = this.saveTextToParentTag(s, r, n);\n let a = this.parseTextData(o, r.tagname, n, !0, !1, !0, !0);\n a == null && (a = \"\"), this.options.cdataPropName ? r.add(this.options.cdataPropName, [{ [this.options.textNodeName]: o }]) : r.add(this.options.textNodeName, a), i = u + 2;\n } else {\n let u = x(e, i, this.options.removeNSPrefix), o = u.tagName;\n const a = u.rawTagName;\n let l = u.tagExp, f = u.attrExpPresent, c = u.closeIndex;\n this.options.transformTagName && (o = this.options.transformTagName(o)), r && s && r.tagname !== \"!xml\" && (s = this.saveTextToParentTag(s, r, n, !1));\n const g = r;\n if (g && this.options.unpairedTags.indexOf(g.tagname) !== -1 && (r = this.tagsNodeStack.pop(), n = n.substring(0, n.lastIndexOf(\".\"))), o !== t.tagname && (n += n ? \".\" + o : o), this.isItStopNode(this.options.stopNodes, n, o)) {\n let h = \"\";\n if (l.length > 0 && l.lastIndexOf(\"/\") === l.length - 1)\n i = u.closeIndex;\n else if (this.options.unpairedTags.indexOf(o) !== -1)\n i = u.closeIndex;\n else {\n const E = this.readStopNodeData(e, a, c + 1);\n if (!E)\n throw new Error(`Unexpected end of ${a}`);\n i = E.i, h = E.tagContent;\n }\n const _ = new T(o);\n o !== l && f && (_[\":@\"] = this.buildAttributesMap(l, n, o)), h && (h = this.parseTextData(h, o, n, !0, f, !0, !0)), n = n.substr(0, n.lastIndexOf(\".\")), _.add(this.options.textNodeName, h), this.addChild(r, _, n);\n } else {\n if (l.length > 0 && l.lastIndexOf(\"/\") === l.length - 1) {\n o[o.length - 1] === \"/\" ? (o = o.substr(0, o.length - 1), n = n.substr(0, n.length - 1), l = o) : l = l.substr(0, l.length - 1), this.options.transformTagName && (o = this.options.transformTagName(o));\n const h = new T(o);\n o !== l && f && (h[\":@\"] = this.buildAttributesMap(l, n, o)), this.addChild(r, h, n), n = n.substr(0, n.lastIndexOf(\".\"));\n } else {\n const h = new T(o);\n this.tagsNodeStack.push(r), o !== l && f && (h[\":@\"] = this.buildAttributesMap(l, n, o)), this.addChild(r, h, n), r = h;\n }\n s = \"\", i = c;\n }\n }\n else\n s += e[i];\n return t.child;\n};\nfunction ft(e, t, r) {\n const s = this.options.updateTag(t.tagname, r, t[\":@\"]);\n s === !1 || (typeof s == \"string\" && (t.tagname = s), e.addChild(t));\n}\nconst ct = function(e) {\n if (this.options.processEntities) {\n for (let t in this.docTypeEntities) {\n const r = this.docTypeEntities[t];\n e = e.replace(r.regx, r.val);\n }\n for (let t in this.lastEntities) {\n const r = this.lastEntities[t];\n e = e.replace(r.regex, r.val);\n }\n if (this.options.htmlEntities)\n for (let t in this.htmlEntities) {\n const r = this.htmlEntities[t];\n e = e.replace(r.regex, r.val);\n }\n e = e.replace(this.ampEntity.regex, this.ampEntity.val);\n }\n return e;\n};\nfunction ht(e, t, r, s) {\n return e && (s === void 0 && (s = Object.keys(t.child).length === 0), e = this.parseTextData(\n e,\n t.tagname,\n r,\n !1,\n t[\":@\"] ? Object.keys(t[\":@\"]).length !== 0 : !1,\n s\n ), e !== void 0 && e !== \"\" && t.add(this.options.textNodeName, e), e = \"\"), e;\n}\nfunction pt(e, t, r) {\n const s = \"*.\" + r;\n for (const n in e) {\n const i = e[n];\n if (s === i || t === i)\n return !0;\n }\n return !1;\n}\nfunction gt(e, t, r = \">\") {\n let s, n = \"\";\n for (let i = t; i < e.length; i++) {\n let d = e[i];\n if (s)\n d === s && (s = \"\");\n else if (d === '\"' || d === \"'\")\n s = d;\n else if (d === r[0])\n if (r[1]) {\n if (e[i + 1] === r[1])\n return {\n data: n,\n index: i\n };\n } else\n return {\n data: n,\n index: i\n };\n else\n d === \"\t\" && (d = \" \");\n n += d;\n }\n}\nfunction y(e, t, r, s) {\n const n = e.indexOf(t, r);\n if (n === -1)\n throw new Error(s);\n return n + t.length - 1;\n}\nfunction x(e, t, r, s = \">\") {\n const n = gt(e, t + 1, s);\n if (!n)\n return;\n let i = n.data;\n const d = n.index, u = i.search(/\\s/);\n let o = i, a = !0;\n u !== -1 && (o = i.substring(0, u), i = i.substring(u + 1).trimStart());\n const l = o;\n if (r) {\n const f = o.indexOf(\":\");\n f !== -1 && (o = o.substr(f + 1), a = o !== n.data.substr(f + 1));\n }\n return {\n tagName: o,\n tagExp: i,\n closeIndex: d,\n attrExpPresent: a,\n rawTagName: l\n };\n}\nfunction wt(e, t, r) {\n const s = r;\n let n = 1;\n for (; r < e.length; r++)\n if (e[r] === \"<\")\n if (e[r + 1] === \"/\") {\n const i = y(e, \">\", r, `${t} is not closed`);\n if (e.substring(r + 2, i).trim() === t && (n--, n === 0))\n return {\n tagContent: e.substring(s, r),\n i\n };\n r = i;\n } else if (e[r + 1] === \"?\")\n r = y(e, \"?>\", r + 1, \"StopNode is not closed.\");\n else if (e.substr(r + 1, 3) === \"!--\")\n r = y(e, \"-->\", r + 3, \"StopNode is not closed.\");\n else if (e.substr(r + 1, 2) === \"![\")\n r = y(e, \"]]>\", r, \"StopNode is not closed.\") - 2;\n else {\n const i = x(e, r, \">\");\n i && ((i && i.tagName) === t && i.tagExp[i.tagExp.length - 1] !== \"/\" && n++, r = i.closeIndex);\n }\n}\nfunction $(e, t, r) {\n if (t && typeof e == \"string\") {\n const s = e.trim();\n return s === \"true\" ? !0 : s === \"false\" ? !1 : nt(e, r);\n } else\n return re.isExist(e) ? e : \"\";\n}\nvar mt = it, ne = {};\nfunction Nt(e, t) {\n return ie(e, t);\n}\nfunction ie(e, t, r) {\n let s;\n const n = {};\n for (let i = 0; i < e.length; i++) {\n const d = e[i], u = Et(d);\n let o = \"\";\n if (r === void 0 ? o = u : o = r + \".\" + u, u === t.textNodeName)\n s === void 0 ? s = d[u] : s += \"\" + d[u];\n else {\n if (u === void 0)\n continue;\n if (d[u]) {\n let a = ie(d[u], t, o);\n const l = yt(a, t);\n d[\":@\"] ? bt(a, d[\":@\"], o, t) : Object.keys(a).length === 1 && a[t.textNodeName] !== void 0 && !t.alwaysCreateTextNode ? a = a[t.textNodeName] : Object.keys(a).length === 0 && (t.alwaysCreateTextNode ? a[t.textNodeName] = \"\" : a = \"\"), n[u] !== void 0 && n.hasOwnProperty(u) ? (Array.isArray(n[u]) || (n[u] = [n[u]]), n[u].push(a)) : t.isArray(u, o, l) ? n[u] = [a] : n[u] = a;\n }\n }\n }\n return typeof s == \"string\" ? s.length > 0 && (n[t.textNodeName] = s) : s !== void 0 && (n[t.textNodeName] = s), n;\n}\nfunction Et(e) {\n const t = Object.keys(e);\n for (let r = 0; r < t.length; r++) {\n const s = t[r];\n if (s !== \":@\")\n return s;\n }\n}\nfunction bt(e, t, r, s) {\n if (t) {\n const n = Object.keys(t), i = n.length;\n for (let d = 0; d < i; d++) {\n const u = n[d];\n s.isArray(u, r + \".\" + u, !0, !0) ? e[u] = [t[u]] : e[u] = t[u];\n }\n }\n}\nfunction yt(e, t) {\n const { textNodeName: r } = t, s = Object.keys(e).length;\n return !!(s === 0 || s === 1 && (e[r] || typeof e[r] == \"boolean\" || e[r] === 0));\n}\nne.prettify = Nt;\nconst { buildOptions: _t } = k, vt = mt, { prettify: Tt } = ne, It = R;\nlet At = class {\n constructor(t) {\n this.externalEntities = {}, this.options = _t(t);\n }\n /**\n * Parse XML dats to JS object \n * @param {string|Buffer} xmlData \n * @param {boolean|Object} validationOption \n */\n parse(t, r) {\n if (typeof t != \"string\")\n if (t.toString)\n t = t.toString();\n else\n throw new Error(\"XML data is accepted in String or Bytes[] form.\");\n if (r) {\n r === !0 && (r = {});\n const i = It.validate(t, r);\n if (i !== !0)\n throw Error(`${i.err.msg}:${i.err.line}:${i.err.col}`);\n }\n const s = new vt(this.options);\n s.addExternalEntities(this.externalEntities);\n const n = s.parseXml(t);\n return this.options.preserveOrder || n === void 0 ? n : Tt(n, this.options);\n }\n /**\n * Add Entity which is not by default supported by this library\n * @param {string} key \n * @param {string} value \n */\n addEntity(t, r) {\n if (r.indexOf(\"&\") !== -1)\n throw new Error(\"Entity value can't have '&'\");\n if (t.indexOf(\"&\") !== -1 || t.indexOf(\";\") !== -1)\n throw new Error(\"An entity must be set without '&' and ';'. Eg. use '#xD' for '
'\");\n if (r === \"&\")\n throw new Error(\"An entity with value '&' is not permitted\");\n this.externalEntities[t] = r;\n }\n};\nvar Ct = At;\nconst Ot = `\n`;\nfunction Pt(e, t) {\n let r = \"\";\n return t.format && t.indentBy.length > 0 && (r = Ot), se(e, t, \"\", r);\n}\nfunction se(e, t, r, s) {\n let n = \"\", i = !1;\n for (let d = 0; d < e.length; d++) {\n const u = e[d], o = xt(u);\n if (o === void 0)\n continue;\n let a = \"\";\n if (r.length === 0 ? a = o : a = `${r}.${o}`, o === t.textNodeName) {\n let h = u[o];\n $t(a, t) || (h = t.tagValueProcessor(o, h), h = oe(h, t)), i && (n += s), n += h, i = !1;\n continue;\n } else if (o === t.cdataPropName) {\n i && (n += s), n += `<![CDATA[${u[o][0][t.textNodeName]}]]>`, i = !1;\n continue;\n } else if (o === t.commentPropName) {\n n += s + `<!--${u[o][0][t.textNodeName]}-->`, i = !0;\n continue;\n } else if (o[0] === \"?\") {\n const h = H(u[\":@\"], t), _ = o === \"?xml\" ? \"\" : s;\n let E = u[o][0][t.textNodeName];\n E = E.length !== 0 ? \" \" + E : \"\", n += _ + `<${o}${E}${h}?>`, i = !0;\n continue;\n }\n let l = s;\n l !== \"\" && (l += t.indentBy);\n const f = H(u[\":@\"], t), c = s + `<${o}${f}`, g = se(u[o], t, a, l);\n t.unpairedTags.indexOf(o) !== -1 ? t.suppressUnpairedNode ? n += c + \">\" : n += c + \"/>\" : (!g || g.length === 0) && t.suppressEmptyNode ? n += c + \"/>\" : g && g.endsWith(\">\") ? n += c + `>${g}${s}</${o}>` : (n += c + \">\", g && s !== \"\" && (g.includes(\"/>\") || g.includes(\"</\")) ? n += s + t.indentBy + g + s : n += g, n += `</${o}>`), i = !0;\n }\n return n;\n}\nfunction xt(e) {\n const t = Object.keys(e);\n for (let r = 0; r < t.length; r++) {\n const s = t[r];\n if (e.hasOwnProperty(s) && s !== \":@\")\n return s;\n }\n}\nfunction H(e, t) {\n let r = \"\";\n if (e && !t.ignoreAttributes)\n for (let s in e) {\n if (!e.hasOwnProperty(s))\n continue;\n let n = t.attributeValueProcessor(s, e[s]);\n n = oe(n, t), n === !0 && t.suppressBooleanAttributes ? r += ` ${s.substr(t.attributeNamePrefix.length)}` : r += ` ${s.substr(t.attributeNamePrefix.length)}=\"${n}\"`;\n }\n return r;\n}\nfunction $t(e, t) {\n e = e.substr(0, e.length - t.textNodeName.length - 1);\n let r = e.substr(e.lastIndexOf(\".\") + 1);\n for (let s in t.stopNodes)\n if (t.stopNodes[s] === e || t.stopNodes[s] === \"*.\" + r)\n return !0;\n return !1;\n}\nfunction oe(e, t) {\n if (e && e.length > 0 && t.processEntities)\n for (let r = 0; r < t.entities.length; r++) {\n const s = t.entities[r];\n e = e.replace(s.regex, s.val);\n }\n return e;\n}\nvar Ft = Pt;\nconst Vt = Ft, St = {\n attributeNamePrefix: \"@_\",\n attributesGroupName: !1,\n textNodeName: \"#text\",\n ignoreAttributes: !0,\n cdataPropName: !1,\n format: !1,\n indentBy: \" \",\n suppressEmptyNode: !1,\n suppressUnpairedNode: !0,\n suppressBooleanAttributes: !0,\n tagValueProcessor: function(e, t) {\n return t;\n },\n attributeValueProcessor: function(e, t) {\n return t;\n },\n preserveOrder: !1,\n commentPropName: !1,\n unpairedTags: [],\n entities: [\n { regex: new RegExp(\"&\", \"g\"), val: \"&\" },\n //it must be on top\n { regex: new RegExp(\">\", \"g\"), val: \">\" },\n { regex: new RegExp(\"<\", \"g\"), val: \"<\" },\n { regex: new RegExp(\"'\", \"g\"), val: \"'\" },\n { regex: new RegExp('\"', \"g\"), val: \""\" }\n ],\n processEntities: !0,\n stopNodes: [],\n // transformTagName: false,\n // transformAttributeName: false,\n oneListGroup: !1\n};\nfunction b(e) {\n this.options = Object.assign({}, St, e), this.options.ignoreAttributes || this.options.attributesGroupName ? this.isAttribute = function() {\n return !1;\n } : (this.attrPrefixLen = this.options.attributeNamePrefix.length, this.isAttribute = Mt), this.processTextOrObjNode = Lt, this.options.format ? (this.indentate = Rt, this.tagEndChar = `>\n`, this.newLine = `\n`) : (this.indentate = function() {\n return \"\";\n }, this.tagEndChar = \">\", this.newLine = \"\");\n}\nb.prototype.build = function(e) {\n return this.options.preserveOrder ? Vt(e, this.options) : (Array.isArray(e) && this.options.arrayNodeName && this.options.arrayNodeName.length > 1 && (e = {\n [this.options.arrayNodeName]: e\n }), this.j2x(e, 0).val);\n};\nb.prototype.j2x = function(e, t) {\n let r = \"\", s = \"\";\n for (let n in e)\n if (Object.prototype.hasOwnProperty.call(e, n))\n if (typeof e[n] > \"u\")\n this.isAttribute(n) && (s += \"\");\n else if (e[n] === null)\n this.isAttribute(n) ? s += \"\" : n[0] === \"?\" ? s += this.indentate(t) + \"<\" + n + \"?\" + this.tagEndChar : s += this.indentate(t) + \"<\" + n + \"/\" + this.tagEndChar;\n else if (e[n] instanceof Date)\n s += this.buildTextValNode(e[n], n, \"\", t);\n else if (typeof e[n] != \"object\") {\n const i = this.isAttribute(n);\n if (i)\n r += this.buildAttrPairStr(i, \"\" + e[n]);\n else if (n === this.options.textNodeName) {\n let d = this.options.tagValueProcessor(n, \"\" + e[n]);\n s += this.replaceEntitiesValue(d);\n } else\n s += this.buildTextValNode(e[n], n, \"\", t);\n } else if (Array.isArray(e[n])) {\n const i = e[n].length;\n let d = \"\";\n for (let u = 0; u < i; u++) {\n const o = e[n][u];\n typeof o > \"u\" || (o === null ? n[0] === \"?\" ? s += this.indentate(t) + \"<\" + n + \"?\" + this.tagEndChar : s += this.indentate(t) + \"<\" + n + \"/\" + this.tagEndChar : typeof o == \"object\" ? this.options.oneListGroup ? d += this.j2x(o, t + 1).val : d += this.processTextOrObjNode(o, n, t) : d += this.buildTextValNode(o, n, \"\", t));\n }\n this.options.oneListGroup && (d = this.buildObjectNode(d, n, \"\", t)), s += d;\n } else if (this.options.attributesGroupName && n === this.options.attributesGroupName) {\n const i = Object.keys(e[n]), d = i.length;\n for (let u = 0; u < d; u++)\n r += this.buildAttrPairStr(i[u], \"\" + e[n][i[u]]);\n } else\n s += this.processTextOrObjNode(e[n], n, t);\n return { attrStr: r, val: s };\n};\nb.prototype.buildAttrPairStr = function(e, t) {\n return t = this.options.attributeValueProcessor(e, \"\" + t), t = this.replaceEntitiesValue(t), this.options.suppressBooleanAttributes && t === \"true\" ? \" \" + e : \" \" + e + '=\"' + t + '\"';\n};\nfunction Lt(e, t, r) {\n const s = this.j2x(e, r + 1);\n return e[this.options.textNodeName] !== void 0 && Object.keys(e).length === 1 ? this.buildTextValNode(e[this.options.textNodeName], t, s.attrStr, r) : this.buildObjectNode(s.val, t, s.attrStr, r);\n}\nb.prototype.buildObjectNode = function(e, t, r, s) {\n if (e === \"\")\n return t[0] === \"?\" ? this.indentate(s) + \"<\" + t + r + \"?\" + this.tagEndChar : this.indentate(s) + \"<\" + t + r + this.closeTag(t) + this.tagEndChar;\n {\n let n = \"</\" + t + this.tagEndChar, i = \"\";\n return t[0] === \"?\" && (i = \"?\", n = \"\"), (r || r === \"\") && e.indexOf(\"<\") === -1 ? this.indentate(s) + \"<\" + t + r + i + \">\" + e + n : this.options.commentPropName !== !1 && t === this.options.commentPropName && i.length === 0 ? this.indentate(s) + `<!--${e}-->` + this.newLine : this.indentate(s) + \"<\" + t + r + i + this.tagEndChar + e + this.indentate(s) + n;\n }\n};\nb.prototype.closeTag = function(e) {\n let t = \"\";\n return this.options.unpairedTags.indexOf(e) !== -1 ? this.options.suppressUnpairedNode || (t = \"/\") : this.options.suppressEmptyNode ? t = \"/\" : t = `></${e}`, t;\n};\nb.prototype.buildTextValNode = function(e, t, r, s) {\n if (this.options.cdataPropName !== !1 && t === this.options.cdataPropName)\n return this.indentate(s) + `<![CDATA[${e}]]>` + this.newLine;\n if (this.options.commentPropName !== !1 && t === this.options.commentPropName)\n return this.indentate(s) + `<!--${e}-->` + this.newLine;\n if (t[0] === \"?\")\n return this.indentate(s) + \"<\" + t + r + \"?\" + this.tagEndChar;\n {\n let n = this.options.tagValueProcessor(t, e);\n return n = this.replaceEntitiesValue(n), n === \"\" ? this.indentate(s) + \"<\" + t + r + this.closeTag(t) + this.tagEndChar : this.indentate(s) + \"<\" + t + r + \">\" + n + \"</\" + t + this.tagEndChar;\n }\n};\nb.prototype.replaceEntitiesValue = function(e) {\n if (e && e.length > 0 && this.options.processEntities)\n for (let t = 0; t < this.options.entities.length; t++) {\n const r = this.options.entities[t];\n e = e.replace(r.regex, r.val);\n }\n return e;\n};\nfunction Rt(e) {\n return this.options.indentBy.repeat(e);\n}\nfunction Mt(e) {\n return e.startsWith(this.options.attributeNamePrefix) && e !== this.options.textNodeName ? e.substr(this.attrPrefixLen) : !1;\n}\nvar kt = b;\nconst Bt = R, qt = Ct, Xt = kt;\nvar K = {\n XMLParser: qt,\n XMLValidator: Bt,\n XMLBuilder: Xt\n};\nfunction Ut(e) {\n if (typeof e != \"string\")\n throw new TypeError(`Expected a \\`string\\`, got \\`${typeof e}\\``);\n if (e = e.trim(), e.length === 0 || K.XMLValidator.validate(e) !== !0)\n return !1;\n let t;\n const r = new K.XMLParser();\n try {\n t = r.parse(e);\n } catch {\n return !1;\n }\n return !(!t || !(\"svg\" in t));\n}\n/**\n * @copyright Copyright (c) 2022 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\nclass pr {\n _view;\n constructor(t) {\n Gt(t), this._view = t;\n }\n get id() {\n return this._view.id;\n }\n get name() {\n return this._view.name;\n }\n get caption() {\n return this._view.caption;\n }\n get emptyTitle() {\n return this._view.emptyTitle;\n }\n get emptyCaption() {\n return this._view.emptyCaption;\n }\n get getContents() {\n return this._view.getContents;\n }\n get icon() {\n return this._view.icon;\n }\n set icon(t) {\n this._view.icon = t;\n }\n get order() {\n return this._view.order;\n }\n set order(t) {\n this._view.order = t;\n }\n get params() {\n return this._view.params;\n }\n set params(t) {\n this._view.params = t;\n }\n get columns() {\n return this._view.columns;\n }\n get emptyView() {\n return this._view.emptyView;\n }\n get parent() {\n return this._view.parent;\n }\n get sticky() {\n return this._view.sticky;\n }\n get expanded() {\n return this._view.expanded;\n }\n set expanded(t) {\n this._view.expanded = t;\n }\n get defaultSortKey() {\n return this._view.defaultSortKey;\n }\n}\nconst Gt = function(e) {\n if (!e.id || typeof e.id != \"string\")\n throw new Error(\"View id is required and must be a string\");\n if (!e.name || typeof e.name != \"string\")\n throw new Error(\"View name is required and must be a string\");\n if (e.columns && e.columns.length > 0 && (!e.caption || typeof e.caption != \"string\"))\n throw new Error(\"View caption is required for top-level views and must be a string\");\n if (!e.getContents || typeof e.getContents != \"function\")\n throw new Error(\"View getContents is required and must be a function\");\n if (!e.icon || typeof e.icon != \"string\" || !Ut(e.icon))\n throw new Error(\"View icon is required and must be a valid svg string\");\n if (!(\"order\" in e) || typeof e.order != \"number\")\n throw new Error(\"View order is required and must be a number\");\n if (e.columns && e.columns.forEach((t) => {\n if (!(t instanceof Ae))\n throw new Error(\"View columns must be an array of Column. Invalid column found\");\n }), e.emptyView && typeof e.emptyView != \"function\")\n throw new Error(\"View emptyView must be a function\");\n if (e.parent && typeof e.parent != \"string\")\n throw new Error(\"View parent must be a string\");\n if (\"sticky\" in e && typeof e.sticky != \"boolean\")\n throw new Error(\"View sticky must be a boolean\");\n if (\"expanded\" in e && typeof e.expanded != \"boolean\")\n throw new Error(\"View expanded must be a boolean\");\n if (e.defaultSortKey && typeof e.defaultSortKey != \"string\")\n throw new Error(\"View defaultSortKey must be a string\");\n return !0;\n};\n/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\nconst gr = function(e) {\n return F().registerEntry(e);\n}, wr = function(e) {\n return F().unregisterEntry(e);\n}, mr = function(e) {\n return F().getEntries(e).sort((r, s) => r.order !== void 0 && s.order !== void 0 && r.order !== s.order ? r.order - s.order : r.displayName.localeCompare(s.displayName, void 0, { numeric: !0, sensitivity: \"base\" }));\n};\nexport {\n Ae as Column,\n W as DefaultType,\n _e as File,\n er as FileAction,\n L as FileType,\n ve as Folder,\n nr as Header,\n Ie as Navigation,\n Q as Node,\n J as NodeStatus,\n N as Permission,\n pr as View,\n gr as addNewFileMenuEntry,\n ar as davGetClient,\n ur as davGetDefaultPropfind,\n be as davGetFavoritesReport,\n dr as davGetRecentSearch,\n ye as davParsePermissions,\n ee as davRemoteURL,\n Te as davResultToNode,\n D as davRootPath,\n j as defaultDavNamespaces,\n Z as defaultDavProperties,\n Qt as formatFileSize,\n S as getDavNameSpaces,\n V as getDavProperties,\n lr as getFavoriteNodes,\n rr as getFileActions,\n sr as getFileListHeaders,\n fr as getNavigation,\n mr as getNewFileMenuEntries,\n Dt as parseFileSize,\n or as registerDavProperty,\n tr as registerFileAction,\n ir as registerFileListHeaders,\n wr as removeNewFileMenuEntry\n};\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\tid: moduleId,\n\t\tloaded: false,\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Flag the module as loaded\n\tmodule.loaded = true;\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n// expose the modules object (__webpack_modules__)\n__webpack_require__.m = __webpack_modules__;\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.f = {};\n// This file contains only the entry chunk.\n// The chunk loading function for additional chunks\n__webpack_require__.e = (chunkId) => {\n\treturn Promise.all(Object.keys(__webpack_require__.f).reduce((promises, key) => {\n\t\t__webpack_require__.f[key](chunkId, promises);\n\t\treturn promises;\n\t}, []));\n};","// This function allow to reference async chunks\n__webpack_require__.u = (chunkId) => {\n\t// return url for filenames based on template\n\treturn \"\" + ({\"3239\":\"settings-users\",\"4529\":\"settings-apps-view\"}[chunkId] || chunkId) + \"-\" + chunkId + \".js?v=\" + {\"1110\":\"a5d6e6f59aa058840a1e\",\"1439\":\"8111a630d23ed528e83e\",\"1544\":\"339855cf6016c557e17a\",\"3239\":\"7e3101aa20fe47be15fe\",\"3865\":\"1b3dd2786e4df4dcbf8d\",\"4529\":\"2724acfa2ab8a8267428\",\"5455\":\"8915a218db5b7bc90f34\",\"8630\":\"eb1ab06c4928352754c5\"}[chunkId] + \"\";\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","__webpack_require__.nmd = (module) => {\n\tmodule.paths = [];\n\tif (!module.children) module.children = [];\n\treturn module;\n};","__webpack_require__.j = 2689;","var scriptUrl;\nif (__webpack_require__.g.importScripts) scriptUrl = __webpack_require__.g.location + \"\";\nvar document = __webpack_require__.g.document;\nif (!scriptUrl && document) {\n\tif (document.currentScript)\n\t\tscriptUrl = document.currentScript.src;\n\tif (!scriptUrl) {\n\t\tvar scripts = document.getElementsByTagName(\"script\");\n\t\tif(scripts.length) {\n\t\t\tvar i = scripts.length - 1;\n\t\t\twhile (i > -1 && (!scriptUrl || !/^http(s?):/.test(scriptUrl))) scriptUrl = scripts[i--].src;\n\t\t}\n\t}\n}\n// When supporting browsers where an automatic publicPath is not supported you must specify an output.publicPath manually via configuration\n// or pass an empty string (\"\") and set the __webpack_public_path__ variable from your code to use your own logic.\nif (!scriptUrl) throw new Error(\"Automatic publicPath is not supported in this browser\");\nscriptUrl = scriptUrl.replace(/#.*$/, \"\").replace(/\\?.*$/, \"\").replace(/\\/[^\\/]+$/, \"/\");\n__webpack_require__.p = scriptUrl;","__webpack_require__.b = document.baseURI || self.location.href;\n\n// object to store loaded and loading chunks\n// undefined = chunk not loaded, null = chunk preloaded/prefetched\n// [resolve, reject, Promise] = chunk loading, 0 = chunk loaded\nvar installedChunks = {\n\t2689: 0\n};\n\n__webpack_require__.f.j = (chunkId, promises) => {\n\t\t// JSONP chunk loading for javascript\n\t\tvar installedChunkData = __webpack_require__.o(installedChunks, chunkId) ? installedChunks[chunkId] : undefined;\n\t\tif(installedChunkData !== 0) { // 0 means \"already installed\".\n\n\t\t\t// a Promise means \"currently loading\".\n\t\t\tif(installedChunkData) {\n\t\t\t\tpromises.push(installedChunkData[2]);\n\t\t\t} else {\n\t\t\t\tif(true) { // all chunks have JS\n\t\t\t\t\t// setup Promise in chunk cache\n\t\t\t\t\tvar promise = new Promise((resolve, reject) => (installedChunkData = installedChunks[chunkId] = [resolve, reject]));\n\t\t\t\t\tpromises.push(installedChunkData[2] = promise);\n\n\t\t\t\t\t// start chunk loading\n\t\t\t\t\tvar url = __webpack_require__.p + __webpack_require__.u(chunkId);\n\t\t\t\t\t// create error before stack unwound to get useful stacktrace later\n\t\t\t\t\tvar error = new Error();\n\t\t\t\t\tvar loadingEnded = (event) => {\n\t\t\t\t\t\tif(__webpack_require__.o(installedChunks, chunkId)) {\n\t\t\t\t\t\t\tinstalledChunkData = installedChunks[chunkId];\n\t\t\t\t\t\t\tif(installedChunkData !== 0) installedChunks[chunkId] = undefined;\n\t\t\t\t\t\t\tif(installedChunkData) {\n\t\t\t\t\t\t\t\tvar errorType = event && (event.type === 'load' ? 'missing' : event.type);\n\t\t\t\t\t\t\t\tvar realSrc = event && event.target && event.target.src;\n\t\t\t\t\t\t\t\terror.message = 'Loading chunk ' + chunkId + ' failed.\\n(' + errorType + ': ' + realSrc + ')';\n\t\t\t\t\t\t\t\terror.name = 'ChunkLoadError';\n\t\t\t\t\t\t\t\terror.type = errorType;\n\t\t\t\t\t\t\t\terror.request = realSrc;\n\t\t\t\t\t\t\t\tinstalledChunkData[1](error);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t\t__webpack_require__.l(url, loadingEnded, \"chunk-\" + chunkId, chunkId);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n};\n\n// no prefetching\n\n// no preloaded\n\n// no HMR\n\n// no HMR manifest\n\n__webpack_require__.O.j = (chunkId) => (installedChunks[chunkId] === 0);\n\n// install a JSONP callback for chunk loading\nvar webpackJsonpCallback = (parentChunkLoadingFunction, data) => {\n\tvar chunkIds = data[0];\n\tvar moreModules = data[1];\n\tvar runtime = data[2];\n\t// add \"moreModules\" to the modules object,\n\t// then flag all \"chunkIds\" as loaded and fire callback\n\tvar moduleId, chunkId, i = 0;\n\tif(chunkIds.some((id) => (installedChunks[id] !== 0))) {\n\t\tfor(moduleId in moreModules) {\n\t\t\tif(__webpack_require__.o(moreModules, moduleId)) {\n\t\t\t\t__webpack_require__.m[moduleId] = moreModules[moduleId];\n\t\t\t}\n\t\t}\n\t\tif(runtime) var result = runtime(__webpack_require__);\n\t}\n\tif(parentChunkLoadingFunction) parentChunkLoadingFunction(data);\n\tfor(;i < chunkIds.length; i++) {\n\t\tchunkId = chunkIds[i];\n\t\tif(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) {\n\t\t\tinstalledChunks[chunkId][0]();\n\t\t}\n\t\tinstalledChunks[chunkId] = 0;\n\t}\n\treturn __webpack_require__.O(result);\n}\n\nvar chunkLoadingGlobal = self[\"webpackChunknextcloud\"] = self[\"webpackChunknextcloud\"] || [];\nchunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0));\nchunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal));","__webpack_require__.nc = undefined;","// startup\n// Load entry module and return exports\n// This entry module depends on other loaded chunks and execution need to be delayed\nvar __webpack_exports__ = __webpack_require__.O(undefined, [4208], () => (__webpack_require__(74329)))\n__webpack_exports__ = __webpack_require__.O(__webpack_exports__);\n"],"names":["deferred","inProgress","dataWebpackPrefix","sanitize","url","replace","requireAdmin","confirmPassword","get","options","axios","post","data","put","delete","params","localStorage","getBuilder","persist","build","defaults","id","name","usercount","disabled","canAdd","canRemove","state","users","groups","orderBy","GroupSorting","UserCount","minPasswordLength","usersOffset","usersLimit","disabledUsersOffset","disabledUsersLimit","userCount","showConfig","showStoragePath","getItem","showUserBackend","showLastLogin","showNewUserForm","showLanguages","mutations","appendUsers","usersObj","existingUsers","map","_ref","newUsers","Object","values","filter","_ref2","includes","concat","updateDisabledUsers","_usersObj","setPasswordPolicyMinLength","length","initGroups","_ref3","group","assign","addGroup","_ref4","gid","displayName","find","unshift","e","console","error","renameGroup","_ref5","groupIndex","findIndex","groupSearch","updatedGroup","splice","removeGroup","addUserGroup","_ref6","userid","user","enabled","push","removeUserGroup","_ref7","indexOf","addUserSubAdmin","_ref8","subadmin","removeUserSubAdmin","_ref9","deleteUser","userIndex","this","commit","actionType","addUserData","response","ocs","enableDisableUser","_ref10","updateUserCounts","_ref11","disabledGroup","forEach","userGroup","warn","logger","setUserData","_ref12","key","value","humanValue","parseFileSize","resetUsers","setShowConfig","_ref13","setItem","JSON","stringify","setGroupSorting","sorting","oldValue","generateUrl","String","catch","showError","t","getters","getUsers","getGroups","getSubadminGroups","getSortedGroups","sort","a","b","numA","numB","localeCompare","getGroupSorting","getPasswordPolicyMinLength","getUsersOffset","getUsersLimit","getDisabledUsersOffset","getDisabledUsersLimit","getUserCount","getShowConfig","CancelToken","searchRequestCancelSource","actions","searchUsers","context","_ref14","offset","limit","search","api","generateOcsUrl","isCancel","getUser","userId","_ref15","cancel","source","trim","encodeURIComponent","cancelToken","token","then","usersCount","keys","getDisabledUsers","_ref16","_ref17","limitParam","getUsersFromList","_ref18","getUsersFromGroup","_ref19","groupid","groupId","getCapabilities","password_policy","minLength","_ref20","_ref21","_ref22","_ref23","_ref24","wipeUserDevices","addUser","_ref25","_ref26","dispatch","password","email","quota","language","manager","_ref27","userStatus","_ref28","allowedEmpty","Promise","reject","Error","sendWelcomeMail","APPS_API_FAILURE","message","isHTML","initCategories","categories","updateCount","updateCategories","categoriesPromise","gettingCategoriesPromise","setUpdateCount","addCategory","category","appendCategories","categoriesArray","setAllApps","apps","setError","appId","Array","isArray","_id","app","clearError","enableApp","active","setInstallState","canInstall","disableApp","removable","canUnInstall","uninstallApp","needsDownload","installed","updateApp","version","update","resetApps","reset","startLoading","Vue","loading","stopLoading","appIds","_appId","update_required","showInfo","onClick","window","location","reload","close","setTimeout","forceEnableApp","finally","getAllApps","getCategories","shouldRefetchCategories","arguments","undefined","categoriesPromiseResponse","bundles","loadState","getAppBundles","getUpdateCount","getCategoryById","selectedCategoryId","setServerData","serverData","getServerData","setAppConfig","use","Vuex","API_FAILURE","meta","store","useStore","Store","modules","settings","oc","strict","process","getLoggerBuilder","setApp","detectUser","_defineComponent","__name","setup","__props","__sfc","NcContent","_vm","_c","_self","_setupProxy","attrs","_v","path","components","default","UserManagement","navigation","UserManagementNavigation","props","children","redirect","AppStore","AppStoreNavigation","sidebar","AppStoreSidebar","Router","mode","base","linkActiveClass","routes","VTooltip","defaultHtml","sync","router","__webpack_nonce__","btoa","_getRequestToken","getRequestToken","prototype","n","PiniaVuePlugin","pinia","createPinia","render","h","SettingsApp","el","extend","encodeReserveRE","encodeReserveReplacer","c","charCodeAt","toString","commaRE","encode","str","decode","decodeURIComponent","err","castQueryParamValue","parseQuery","query","res","split","param","parts","shift","val","join","stringifyQuery","obj","result","val2","x","trailingSlashRE","createRoute","record","redirectedFrom","clone","route","hash","fullPath","getFullPath","matched","formatMatch","freeze","START","parent","ref","_stringifyQuery","isSameRoute","onlyPath","isObjectEqual","aKeys","bKeys","every","i","aVal","bVal","handleRouteEntered","instances","instance","cbs","enteredCbs","i$1","_isBeingDestroyed","View","functional","type","_","routerView","$createElement","$route","cache","_routerViewCache","depth","inactive","_routerRoot","vnodeData","$vnode","keepAlive","_directInactive","_inactive","$parent","routerViewDepth","cachedData","cachedComponent","component","configProps","fillPropsinData","registerRouteInstance","vm","current","hook","prepatch","vnode","componentInstance","init","propsToPass","config","resolveProps","resolvePath","relative","append","firstChar","charAt","stack","pop","segments","segment","cleanPath","isarray","arr","call","pathToRegexp_1","pathToRegexp","RegExp","match","prefix","delimiter","optional","repeat","partial","asterisk","pattern","attachKeys","regexpToRegexp","flags","arrayToRegexp","tokensToRegExp","parse","stringToRegexp","parse_1","tokensToFunction_1","tokensToFunction","tokensToRegExp_1","PATH_REGEXP","tokens","index","defaultDelimiter","exec","m","escaped","slice","next","capture","modifier","escapeGroup","escapeString","substr","encodeURIComponentPretty","encodeURI","toUpperCase","matches","opts","pretty","TypeError","j","test","re","sensitive","end","endsWithDelimiter","compile","regexpCompileCache","create","fillParams","routeMsg","filler","pathMatch","normalizeLocation","raw","_normalized","params$1","rawPath","parsedPath","hashIndex","queryIndex","parsePath","basePath","extraQuery","_parseQuery","parsedQuery","resolveQuery","_Vue","noop","Link","to","required","tag","custom","Boolean","exact","exactPath","activeClass","exactActiveClass","ariaCurrentValue","event","this$1$1","$router","resolve","href","classes","globalActiveClass","globalExactActiveClass","linkExactActiveClass","activeClassFallback","exactActiveClassFallback","compareTarget","target","queryIncludes","isIncludedRoute","handler","guardEvent","on","click","class","scopedSlot","$scopedSlots","$hasNormal","navigate","isActive","isExactActive","findAnchor","$slots","isStatic","aData","handler$1","event$1","aAttrs","metaKey","altKey","ctrlKey","shiftKey","defaultPrevented","button","currentTarget","getAttribute","preventDefault","child","inBrowser","createRouteMap","oldPathList","oldPathMap","oldNameMap","parentRoute","pathList","pathMap","nameMap","addRouteRecord","l","matchAs","pathToRegexpOptions","normalizedPath","normalizePath","caseSensitive","regex","compileRouteRegex","alias","beforeEnter","childMatchAs","aliases","aliasRoute","createMatcher","currentRoute","_createRoute","paramNames","record$1","matchRoute","originalRedirect","hasOwnProperty","resolveRecordPath","aliasedMatch","aliasedRecord","addRoute","parentOrRoute","getRoutes","addRoutes","len","Time","performance","now","Date","genStateKey","toFixed","_key","getStateKey","setStateKey","positionStore","setupScroll","history","scrollRestoration","protocolAndPath","protocol","host","absolutePath","stateCopy","replaceState","addEventListener","handlePopState","removeEventListener","handleScroll","from","isPop","behavior","scrollBehavior","$nextTick","position","getScrollPosition","shouldScroll","scrollToPosition","saveScrollPosition","pageXOffset","y","pageYOffset","isValidPosition","isNumber","normalizePosition","v","hashStartsWithNumberRE","isObject","selector","document","getElementById","querySelector","docRect","documentElement","getBoundingClientRect","elRect","left","top","getElementPosition","style","scrollTo","ua","supportsPushState","navigator","userAgent","pushState","NavigationFailureType","redirected","aborted","cancelled","duplicated","createNavigationCancelledError","createRouterError","_isRouter","propertiesToLog","isError","isNavigationFailure","errorType","runQueue","queue","fn","cb","step","flatMapComponents","flatten","apply","hasSymbol","Symbol","toStringTag","once","called","args","History","baseEl","normalizeBase","pending","ready","readyCbs","readyErrorCbs","errorCbs","listeners","extractGuards","records","bind","reverse","guards","def","guard","extractGuard","bindGuard","listen","onReady","errorCb","onError","transitionTo","onComplete","onAbort","prev","confirmTransition","updateRoute","ensureURL","afterHooks","abort","lastRouteIndex","lastCurrentIndex","max","Math","updated","activated","deactivated","resolveQueue","extractLeaveGuards","beforeHooks","extractUpdateHooks","hasAsync","cid","resolvedDef","__esModule","resolved","reason","msg","comp","iterator","createNavigationAbortedError","createNavigationRedirectedError","enterGuards","bindEnterGuard","extractEnterGuards","resolveHooks","setupListeners","teardown","cleanupListener","HTML5History","_startLocation","getLocation","__proto__","constructor","expectScroll","supportsScroll","handleRoutingEvent","go","fromRoute","getCurrentLocation","pathname","pathLowerCase","toLowerCase","baseLowerCase","HashHistory","fallback","checkFallback","ensureSlash","getHash","replaceHash","eventType","pushHash","getUrl","AbstractHistory","targetIndex","VueRouter","matcher","prototypeAccessors","configurable","$once","routeOrError","handleInitialScroll","_route","beforeEach","registerHook","beforeResolve","afterEach","back","forward","getMatchedComponents","createHref","normalizedTo","defineProperties","VueRouter$1","list","install","isDef","registerInstance","callVal","$options","_parentVnode","mixin","beforeCreate","_router","util","defineReactive","destroyed","defineProperty","strats","optionMergeStrategies","beforeRouteEnter","beforeRouteLeave","beforeRouteUpdate","created","START_LOCATION","cloneRoute","exports","moduleName","registerModule","namespaced","transition","currentPath","isTimeTraveling","storeUnwatch","watch","afterEachUnHook","unregisterModule","setUid","uid","O","P","Qt","r","s","Number","floor","log","min","d","pow","parseFloat","toLocaleString","Dt","toLocaleLowerCase","replaceAll","round","k","g","p","N","NONE","CREATE","READ","UPDATE","DELETE","SHARE","ALL","Z","nc","V","_nc_dav_properties","S","_nc_dav_namespaces","ur","dr","L","Folder","File","Y","q","URL","startsWith","mtime","crtime","mime","size","permissions","owner","attributes","root","status","J","NEW","FAILED","LOADING","LOCKED","Q","_data","_attributes","_knownDavService","set","updateMtime","Reflect","deleteProperty","Proxy","encodedSource","origin","basename","extension","dirname","isDavRessource","fileid","move","rename","_e","ve","super","D","ee","ar","headers","setHeaders","requesttoken","patch","u","method","fetch","lr","AbortController","async","getDirectoryContents","signal","details","includeSelf","filename","Te","ye","lastmod","parseInt","getcontentlength","hasPreview","C","isExist","isEmptyObject","merge","o","f","getValue","isName","getAllMatches","startIndex","lastIndex","nameRegexp","te","preserveOrder","attributeNamePrefix","attributesGroupName","textNodeName","ignoreAttributes","removeNSPrefix","allowBooleanAttributes","parseTagValue","parseAttributeValue","trimValues","cdataPropName","numberParseOptions","hex","leadingZeros","eNotation","tagValueProcessor","attributeValueProcessor","stopNodes","alwaysCreateTextNode","commentPropName","unpairedTags","processEntities","htmlEntities","ignoreDeclaration","ignorePiTags","transformTagName","transformAttributeName","updateTag","buildOptions","defaultOptions","ne","ie","Et","yt","bt","prettify","_t","Tt","se","xt","$t","oe","H","E","indentBy","suppressUnpairedNode","suppressEmptyNode","endsWith","suppressBooleanAttributes","lastIndexOf","entities","Vt","format","St","oneListGroup","isAttribute","attrPrefixLen","Mt","processTextOrObjNode","Lt","indentate","Rt","tagEndChar","newLine","j2x","buildTextValNode","attrStr","buildObjectNode","arrayNodeName","buildAttrPairStr","replaceEntitiesValue","closeTag","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","module","loaded","__webpack_modules__","chunkIds","priority","notFulfilled","Infinity","fulfilled","getter","definition","enumerable","chunkId","all","reduce","promises","globalThis","Function","prop","done","script","needAttach","scripts","getElementsByTagName","createElement","charset","timeout","setAttribute","src","onScriptComplete","onerror","onload","clearTimeout","doneFns","parentNode","removeChild","head","appendChild","nmd","paths","scriptUrl","importScripts","currentScript","baseURI","self","installedChunks","installedChunkData","promise","realSrc","request","webpackJsonpCallback","parentChunkLoadingFunction","moreModules","runtime","some","chunkLoadingGlobal","__webpack_exports__"],"sourceRoot":""}
\ No newline at end of file +{"version":3,"file":"settings-vue-settings-apps-users-management.js?v=ffb4d7435d3d155f134e","mappings":";UAAIA,ECAAC,EACAC,8KC6BJ,MAAMC,EAAW,SAASC,GACzB,OAAOA,EAAIC,QAAQ,MAAO,GAC3B,EAEA,EAiCaC,KACJC,EAAAA,EAAAA,KAlCT,EAoCIC,CAACJ,EAAKK,IACDC,EAAAA,EAAMF,IAAIL,EAASC,GAAMK,GArClC,EAuCKE,CAACP,EAAKQ,IACFF,EAAAA,EAAMC,KAAKR,EAASC,GAAMQ,GAxCnC,EA6CIC,CAACT,EAAKQ,IACDF,EAAAA,EAAMG,IAAIV,EAASC,GAAMQ,GA9ClC,EAgDOE,CAACV,EAAKQ,IACJF,EAAAA,EAAMI,OAAOX,EAASC,GAAM,CAAEW,OAAQH,8BC3C/C,MAAMI,GAAeC,EAAAA,EAAAA,IAAW,YAAYC,SAAQ,GAAMC,QAEpDC,EACE,CACNC,GAAI,GACJC,KAAM,GACNC,UAAW,EACXC,SAAU,EACVC,QAAQ,EACRC,WAAW,GAIPC,EAAQ,CACbC,MAAO,GACPC,OAAQ,GACRC,QAASC,EAAAA,EAAaC,UACtBC,kBAAmB,EACnBC,YAAa,EACbC,WAAY,GACZC,oBAAqB,EACrBC,mBAAoB,GACpBC,UAAW,EACXC,WAAY,CACXC,gBAA+E,SAA9DxB,EAAayB,QAAQ,qCACtCC,gBAA+E,SAA9D1B,EAAayB,QAAQ,qCACtCE,cAA2E,SAA5D3B,EAAayB,QAAQ,mCACpCG,gBAA+E,SAA9D5B,EAAayB,QAAQ,qCACtCI,cAA2E,SAA5D7B,EAAayB,QAAQ,qCAIhCK,EAAY,CACjBC,WAAAA,CAAYpB,EAAOqB,GAClB,MAAMC,EAAgBtB,EAAMC,MAAMsB,KAAIC,IAAA,IAAC,GAAE9B,GAAI8B,EAAA,OAAK9B,CAAE,IAC9C+B,EAAWC,OAAOC,OAAON,GAC7BO,QAAOC,IAAA,IAAC,GAAEnC,GAAImC,EAAA,OAAMP,EAAcQ,SAASpC,EAAG,IAE1CO,EAAQD,EAAMC,MAAM8B,OAAON,GACjCzB,EAAMO,aAAeP,EAAMQ,WAC3BR,EAAMC,MAAQA,CACf,EACA+B,mBAAAA,CAAoBhC,EAAOiC,GAC1BjC,EAAMS,qBAAuBT,EAAMU,kBACpC,EACAwB,0BAAAA,CAA2BlC,EAAOmC,GACjCnC,EAAMM,kBAA+B,KAAX6B,EAAgBA,EAAS,CACpD,EACAC,UAAAA,CAAWpC,EAAKqC,GAAkC,IAAhC,OAAEnC,EAAM,QAAEC,EAAO,UAAEQ,GAAW0B,EAC/CrC,EAAME,OAASA,EAAOqB,KAAIe,GAASZ,OAAOa,OAAO,CAAC,EAAG9C,EAAgB6C,KACrEtC,EAAMG,QAAUA,EAChBH,EAAMW,UAAYA,CACnB,EACA6B,QAAAA,CAASxC,EAAKyC,GAAwB,IAAtB,IAAEC,EAAG,YAAEC,GAAaF,EACnC,IACC,QAA8D,IAAnDzC,EAAME,OAAO0C,MAAMN,GAAUA,EAAM5C,KAAOgD,IACpD,OAGD,MAAMJ,EAAQZ,OAAOa,OAAO,CAAC,EAAG9C,EAAgB,CAC/CC,GAAIgD,EACJ/C,KAAMgD,IAEP3C,EAAME,OAAO2C,QAAQP,EACtB,CAAE,MAAOQ,GACRC,EAAQC,MAAM,qBAAuBF,EACtC,CACD,EACAG,WAAAA,CAAYjD,EAAKkD,GAAwB,IAAtB,IAAER,EAAG,YAAEC,GAAaO,EACtC,MAAMC,EAAanD,EAAME,OAAOkD,WAAUC,GAAeA,EAAY3D,KAAOgD,IAC5E,GAAIS,GAAc,EAAG,CACpB,MAAMG,EAAetD,EAAME,OAAOiD,GAClCG,EAAa3D,KAAOgD,EACpB3C,EAAME,OAAOqD,OAAOJ,EAAY,EAAGG,EACpC,CACD,EACAE,WAAAA,CAAYxD,EAAO0C,GAClB,MAAMS,EAAanD,EAAME,OAAOkD,WAAUC,GAAeA,EAAY3D,KAAOgD,IACxES,GAAc,GACjBnD,EAAME,OAAOqD,OAAOJ,EAAY,EAElC,EACAM,YAAAA,CAAazD,EAAK0D,GAAmB,IAAjB,OAAEC,EAAM,IAAEjB,GAAKgB,EAClC,MAAMpB,EAAQtC,EAAME,OAAO0C,MAAKS,GAAeA,EAAY3D,KAAOgD,IAC5DkB,EAAO5D,EAAMC,MAAM2C,MAAKgB,GAAQA,EAAKlE,KAAOiE,IAE9CrB,GAASsB,EAAKC,SAAW7D,EAAMW,UAAY,GAC9C2B,EAAM1C,YAEQgE,EAAK1D,OACb4D,KAAKpB,EACb,EACAqB,eAAAA,CAAgB/D,EAAKgE,GAAmB,IAAjB,OAAEL,EAAM,IAAEjB,GAAKsB,EACrC,MAAM1B,EAAQtC,EAAME,OAAO0C,MAAKS,GAAeA,EAAY3D,KAAOgD,IAC5DkB,EAAO5D,EAAMC,MAAM2C,MAAKgB,GAAQA,EAAKlE,KAAOiE,IAE9CrB,GAASsB,EAAKC,SAAW7D,EAAMW,UAAY,GAC9C2B,EAAM1C,YAEP,MAAMM,EAAS0D,EAAK1D,OACpBA,EAAOqD,OAAOrD,EAAO+D,QAAQvB,GAAM,EACpC,EACAwB,eAAAA,CAAgBlE,EAAKmE,GAAmB,IAAjB,OAAER,EAAM,IAAEjB,GAAKyB,EACtBnE,EAAMC,MAAM2C,MAAKgB,GAAQA,EAAKlE,KAAOiE,IAAQS,SACrDN,KAAKpB,EACb,EACA2B,kBAAAA,CAAmBrE,EAAKsE,GAAmB,IAAjB,OAAEX,EAAM,IAAEjB,GAAK4B,EACxC,MAAMpE,EAASF,EAAMC,MAAM2C,MAAKgB,GAAQA,EAAKlE,KAAOiE,IAAQS,SAC5DlE,EAAOqD,OAAOrD,EAAO+D,QAAQvB,GAAM,EACpC,EACA6B,UAAAA,CAAWvE,EAAO2D,GACjB,MAAMa,EAAYxE,EAAMC,MAAMmD,WAAUQ,GAAQA,EAAKlE,KAAOiE,IAC5Dc,KAAKC,OAAO,mBAAoB,CAAEd,KAAM5D,EAAMC,MAAMuE,GAAYG,WAAY,WAC5E3E,EAAMC,MAAMsD,OAAOiB,EAAW,EAC/B,EACAI,WAAAA,CAAY5E,EAAO6E,GAClB,MAAMjB,EAAOiB,EAAS5F,KAAK6F,IAAI7F,KAC/Be,EAAMC,MAAM4C,QAAQe,GACpBa,KAAKC,OAAO,mBAAoB,CAAEd,OAAMe,WAAY,UACrD,EACAI,iBAAAA,CAAkB/E,EAAKgF,GAAuB,IAArB,OAAErB,EAAM,QAAEE,GAASmB,EAC3C,MAAMpB,EAAO5D,EAAMC,MAAM2C,MAAKgB,GAAQA,EAAKlE,KAAOiE,IAClDC,EAAKC,QAAUA,EACfY,KAAKC,OAAO,mBAAoB,CAAEd,OAAMe,WAAYd,EAAU,SAAW,WAC1E,EAEAoB,gBAAAA,CAAiBjF,EAAKkF,GAAwB,IAAtB,KAAEtB,EAAI,WAAEe,GAAYO,EAE3C,GAAwB,IAApBlF,EAAMW,UACT,OAGD,MAAMwE,EAAgBnF,EAAME,OAAO0C,MAAKN,GAAsB,aAAbA,EAAM5C,KACvD,OAAQiF,GACR,IAAK,SACL,IAAK,UACJQ,EAAcvF,WAAagE,EAAKC,SAAW,EAAI,EAC/C7D,EAAMW,WAAaiD,EAAKC,QAAU,GAAK,EACvCD,EAAK1D,OAAOkF,SAAQC,IACLrF,EAAME,OAAO0C,MAAKS,GAAeA,EAAY3D,KAAO2F,IAC5DxF,UAAY+D,EAAKC,SAAW,EAAI,CAAC,IAExC,MACD,IAAK,SACJ7D,EAAMW,YAENiD,EAAK1D,OAAOkF,SAAQC,IACnBrF,EAAME,OACJ0C,MAAKS,GAAeA,EAAY3D,KAAO2F,IACpCzF,WAAW,IAEjB,MACD,IAAK,SACAgE,EAAKC,SACR7D,EAAMW,YACNiD,EAAK1D,OAAOkF,SAAQC,IACnB,MAAM/C,EAAQtC,EAAME,OAAO0C,MAAKS,GAAeA,EAAY3D,KAAO2F,IAC7D/C,EAILA,EAAM1C,YAHLmD,EAAQuC,KAAK,cAAgBD,EAAY,sCAGzB,MAGlBF,EAAcvF,YACdgE,EAAK1D,OAAOkF,SAAQC,IACLrF,EAAME,OAAO0C,MAAKS,GAAeA,EAAY3D,KAAO2F,IAC5DxF,UAAU,KAGlB,MACD,QACC0F,EAAAA,EAAOvC,MAAM,6CAADjB,OAA8C4C,EAAU,MAGtE,EACAa,WAAAA,CAAYxF,EAAKyF,GAA0B,IAAxB,OAAE9B,EAAM,IAAE+B,EAAG,MAAEC,GAAOF,EACxC,GAAY,UAARC,EAAiB,CACpB,MAAME,GAAaC,EAAAA,EAAAA,IAAcF,GAAO,GACxC3F,EAAMC,MAAM2C,MAAKgB,GAAQA,EAAKlE,KAAOiE,IAAQ+B,GAAKA,GAAsB,OAAfE,EAAsBA,EAAaD,CAC7F,MACC3F,EAAMC,MAAM2C,MAAKgB,GAAQA,EAAKlE,KAAOiE,IAAQ+B,GAAOC,CAEtD,EAOAG,UAAAA,CAAW9F,GACVA,EAAMC,MAAQ,GACdD,EAAMO,YAAc,EACpBP,EAAMS,oBAAsB,CAC7B,EAEAsF,aAAAA,CAAc/F,EAAKgG,GAAkB,IAAhB,IAAEN,EAAG,MAAEC,GAAOK,EAClC3G,EAAa4G,QAAQ,qBAADlE,OAAsB2D,GAAOQ,KAAKC,UAAUR,IAChE3F,EAAMY,WAAW8E,GAAOC,CACzB,EAEAS,eAAAA,CAAgBpG,EAAOqG,GACtB,MAAMC,EAAWtG,EAAMG,QACvBH,EAAMG,QAAUkG,EAGhBtH,EAAAA,EAAMC,MACLuH,EAAAA,EAAAA,IAAY,4CACZ,CACCZ,MAAOa,OAAOH,KAEdI,OAAOzD,IACRhD,EAAMG,QAAUmG,GAChBI,EAAAA,EAAAA,IAAUC,EAAE,WAAY,gCACxBpB,EAAAA,EAAOvC,MAAMA,EAAM,GAErB,GAGK4D,EAAU,CACfC,SAAS7G,GACDA,EAAMC,MAEd6G,UAAU9G,GACFA,EAAME,OAEd6G,kBAAkB/G,GAEVA,EAAME,OAAO0B,QAAOU,GAAsB,UAAbA,EAAM5C,IAA+B,aAAb4C,EAAM5C,KAEnEsH,eAAAA,CAAgBhH,GACf,MAAME,EAAS,IAAIF,EAAME,QACzB,OAAIF,EAAMG,UAAYC,EAAAA,EAAaC,UAC3BH,EAAO+G,MAAK,CAACC,EAAGC,KACtB,MAAMC,EAAOF,EAAEtH,UAAYsH,EAAErH,SACvBwH,EAAOF,EAAEvH,UAAYuH,EAAEtH,SAC7B,OAAQuH,EAAOC,EAAQ,EAAKA,EAAOD,GAAQ,EAAIF,EAAEvH,KAAK2H,cAAcH,EAAExH,KAAM,IAGtEO,EAAO+G,MAAK,CAACC,EAAGC,IAAMD,EAAEvH,KAAK2H,cAAcH,EAAExH,OAEtD,EACA4H,gBAAgBvH,GACRA,EAAMG,QAEdqH,2BAA2BxH,GACnBA,EAAMM,kBAEdmH,eAAezH,GACPA,EAAMO,YAEdmH,cAAc1H,GACNA,EAAMQ,WAEdmH,uBAAuB3H,GACfA,EAAMS,oBAEdmH,sBAAsB5H,GACdA,EAAMU,mBAEdmH,aAAa7H,GACLA,EAAMW,UAEdmH,cAAc9H,GACNA,EAAMY,YAITmH,EAAchJ,EAAAA,EAAMgJ,YAC1B,IAAIC,EAA4B,KAEhC,MAycA,GAAiBhI,QAAOmB,YAAWyF,UAASqB,QAzc5B,CAYfC,WAAAA,CAAYC,EAAOC,GAA6B,IAA3B,OAAEC,EAAM,MAAEC,EAAK,OAAEC,GAAQH,EAG7C,OAFAG,EAA2B,iBAAXA,EAAsBA,EAAS,GAExCC,GAAQC,EAAAA,EAAAA,IAAe,oEAAqE,CAAEJ,SAAQC,QAAOC,YAAW9B,OAAOzD,IAChIjE,EAAAA,EAAM2J,SAAS1F,IACnBmF,EAAQzD,OAAO,cAAe1B,EAC/B,GAEF,EASA2F,QAAOA,CAACR,EAASS,IACTJ,GAAQC,EAAAA,EAAAA,IAAe,eAAD1G,OAAgB6G,KAAWnC,OAAOzD,IACzDjE,EAAAA,EAAM2J,SAAS1F,IACnBmF,EAAQzD,OAAO,cAAe1B,EAC/B,IAeF6D,QAAAA,CAASsB,EAAOU,GAAoC,IAAlC,OAAER,EAAM,MAAEC,EAAK,OAAEC,EAAM,MAAEjG,GAAOuG,EAejD,OAdIb,GACHA,EAA0Bc,OAAO,iDAElCd,EAA4BD,EAAYgB,SACxCR,EAA2B,iBAAXA,EAAsBA,EAAS,GAO/CA,EAASA,EAAO7J,QAAQ,aAAc,IAAIsK,OAE1C1G,EAAyB,iBAAVA,EAAqBA,EAAQ,GAC9B,KAAVA,EACIkG,GAAQC,EAAAA,EAAAA,IAAe,mFAAoF,CAAEnG,MAAO2G,mBAAmB3G,GAAQ+F,SAAQC,QAAOC,WAAW,CAC/KW,YAAalB,EAA0BmB,QAEtCC,MAAMvE,IACN,MAAMwE,EAAa3H,OAAO4H,KAAKzE,EAAS5F,KAAK6F,IAAI7F,KAAKgB,OAAOkC,OAI7D,OAHIkH,EAAa,GAChBlB,EAAQzD,OAAO,cAAeG,EAAS5F,KAAK6F,IAAI7F,KAAKgB,OAE/CoJ,CAAU,IAEjB5C,OAAOzD,IACFjE,EAAAA,EAAM2J,SAAS1F,IACnBmF,EAAQzD,OAAO,cAAe1B,EAC/B,IAIIwF,GAAQC,EAAAA,EAAAA,IAAe,oEAAqE,CAAEJ,SAAQC,QAAOC,WAAW,CAC9HW,YAAalB,EAA0BmB,QAEtCC,MAAMvE,IACN,MAAMwE,EAAa3H,OAAO4H,KAAKzE,EAAS5F,KAAK6F,IAAI7F,KAAKgB,OAAOkC,OAI7D,OAHIkH,EAAa,GAChBlB,EAAQzD,OAAO,cAAeG,EAAS5F,KAAK6F,IAAI7F,KAAKgB,OAE/CoJ,CAAU,IAEjB5C,OAAOzD,IACFjE,EAAAA,EAAM2J,SAAS1F,IACnBmF,EAAQzD,OAAO,cAAe1B,EAC/B,GAEH,EAWA,sBAAMuG,CAAiBpB,EAAOqB,GAAqB,IAAnB,OAAEnB,EAAM,MAAEC,GAAOkB,EAChD,MAAM/K,GAAMgK,EAAAA,EAAAA,IAAe,qDAAsD,CAAEJ,SAAQC,UAC3F,IACC,MAAMzD,QAAiB2D,EAAQ/J,GACzB4K,EAAa3H,OAAO4H,KAAKzE,EAAS5F,KAAK6F,IAAI7F,KAAKgB,OAAOkC,OAK7D,OAJIkH,EAAa,IAChBlB,EAAQzD,OAAO,cAAeG,EAAS5F,KAAK6F,IAAI7F,KAAKgB,OACrDkI,EAAQzD,OAAO,sBAAuBG,EAAS5F,KAAK6F,IAAI7F,KAAKgB,QAEvDoJ,CACR,CAAE,MAAOrG,GACRmF,EAAQzD,OAAO,cAAe1B,EAC/B,CACD,EAEA8D,SAAAA,CAAUqB,EAAOsB,GAA6B,IAA3B,OAAEpB,EAAM,MAAEC,EAAK,OAAEC,GAAQkB,EAC3ClB,EAA2B,iBAAXA,EAAsBA,EAAS,GAC/C,MAAMmB,GAAwB,IAAXpB,EAAe,GAAK,UAAHvG,OAAauG,GACjD,OAAOE,GAAQC,EAAAA,EAAAA,IAAe,+CAAgD,CAAEJ,SAAQE,WAAYmB,GAClGN,MAAMvE,GACFnD,OAAO4H,KAAKzE,EAAS5F,KAAK6F,IAAI7F,KAAKiB,QAAQiC,OAAS,IACvD0C,EAAS5F,KAAK6F,IAAI7F,KAAKiB,OAAOkF,SAAQ,SAAS9C,GAC9C6F,EAAQzD,OAAO,WAAY,CAAEhC,IAAKJ,EAAOK,YAAaL,GACvD,KACO,KAIRmE,OAAOzD,GAAUmF,EAAQzD,OAAO,cAAe1B,IAClD,EAYA2G,gBAAAA,CAAiBxB,EAAOyB,GAA6B,IAA3B,OAAEvB,EAAM,MAAEC,EAAK,OAAEC,GAAQqB,EAElD,OADArB,EAA2B,iBAAXA,EAAsBA,EAAS,GACxCC,GAAQC,EAAAA,EAAAA,IAAe,oEAAqE,CAAEJ,SAAQC,QAAOC,YAClHa,MAAMvE,GACFnD,OAAO4H,KAAKzE,EAAS5F,KAAK6F,IAAI7F,KAAKgB,OAAOkC,OAAS,IACtDgG,EAAQzD,OAAO,cAAeG,EAAS5F,KAAK6F,IAAI7F,KAAKgB,QAC9C,KAIRwG,OAAOzD,GAAUmF,EAAQzD,OAAO,cAAe1B,IAClD,EAYA6G,iBAAAA,CAAkB1B,EAAO2B,GAA8B,IAA5B,QAAEC,EAAO,OAAE1B,EAAM,MAAEC,GAAOwB,EACpD,OAAOtB,GAAQC,EAAAA,EAAAA,IAAe,8DAA+D,CAAEuB,QAASf,mBAAmBc,GAAU1B,SAAQC,WAC3Ic,MAAMvE,GAAasD,EAAQzD,OAAO,mBAAoBG,EAAS5F,KAAK6F,IAAI7F,KAAKgB,SAC7EwG,OAAOzD,GAAUmF,EAAQzD,OAAO,cAAe1B,IAClD,EAEAwE,2BAA2BW,OACtB8B,EAAAA,EAAAA,KAAkBC,mBAAmBD,EAAAA,EAAAA,KAAkBC,gBAAgBC,aAC1EhC,EAAQzD,OAAO,8BAA8BuF,EAAAA,EAAAA,KAAkBC,gBAAgBC,YACxEF,EAAAA,EAAAA,KAAkBC,gBAAgBC,WAY3C3H,SAAQA,CAAC2F,EAASzF,IACV8F,IAAmBY,MAAMvE,GACxB2D,GAASC,EAAAA,EAAAA,IAAe,gBAAiB,CAAEsB,QAASrH,IACzD0G,MAAMvE,IACNsD,EAAQzD,OAAO,WAAY,CAAEhC,MAAKC,YAAaD,IACxC,CAAEA,MAAKC,YAAaD,MAE3B+D,OAAOzD,IAAY,MAAMA,CAAK,MAC9ByD,OAAOzD,IAIT,MAHAmF,EAAQzD,OAAO,cAAe,CAAEhC,MAAKM,UAG/BA,CAAK,IAYbC,WAAAA,CAAYkF,EAAOiC,GAA4B,IAA1B,QAAEL,EAAO,YAAEpH,GAAayH,EAC5C,OAAO5B,IAAmBY,MAAMvE,GACxB2D,GAAQC,EAAAA,EAAAA,IAAe,yBAA0B,CAAEuB,QAASf,mBAAmBc,KAAa,CAAErE,IAAK,cAAeC,MAAOhD,IAC9HyG,MAAMvE,IACNsD,EAAQzD,OAAO,cAAe,CAAEhC,IAAKqH,EAASpH,gBACvC,CAAEoH,UAASpH,kBAElB8D,OAAOzD,IAAY,MAAMA,CAAK,MAC9ByD,OAAOzD,IAIT,MAHAmF,EAAQzD,OAAO,cAAe,CAAEqF,UAAS/G,UAGnCA,CAAK,GAEb,EASAQ,YAAWA,CAAC2E,EAASzF,IACb8F,IAAmBY,MAAMvE,GACxB2D,GAAWC,EAAAA,EAAAA,IAAe,yBAA0B,CAAEuB,QAASf,mBAAmBvG,MACvF0G,MAAMvE,GAAasD,EAAQzD,OAAO,cAAehC,KACjD+D,OAAOzD,IAAY,MAAMA,CAAK,MAC9ByD,OAAOzD,GAAUmF,EAAQzD,OAAO,cAAe,CAAEhC,MAAKM,YAY1DS,YAAAA,CAAa0E,EAAOkC,GAAmB,IAAjB,OAAE1G,EAAM,IAAEjB,GAAK2H,EACpC,OAAO7B,IAAmBY,MAAMvE,GACxB2D,GAASC,EAAAA,EAAAA,IAAe,8BAA+B,CAAE9E,WAAW,CAAEoG,QAASrH,IACpF0G,MAAMvE,GAAasD,EAAQzD,OAAO,eAAgB,CAAEf,SAAQjB,UAC5D+D,OAAOzD,IAAY,MAAMA,CAAK,MAC9ByD,OAAOzD,GAAUmF,EAAQzD,OAAO,cAAe,CAAEf,SAAQX,WAC7D,EAWAe,eAAAA,CAAgBoE,EAAOmC,GAAmB,IAAjB,OAAE3G,EAAM,IAAEjB,GAAK4H,EACvC,OAAO9B,IAAmBY,MAAMvE,GACxB2D,GAAWC,EAAAA,EAAAA,IAAe,8BAA+B,CAAE9E,WAAW,CAAEoG,QAASrH,IACtF0G,MAAMvE,GAAasD,EAAQzD,OAAO,kBAAmB,CAAEf,SAAQjB,UAC/D+D,OAAOzD,IAAY,MAAMA,CAAK,MAC9ByD,OAAOzD,IAIT,MAHAmF,EAAQzD,OAAO,cAAe,CAAEf,SAAQX,UAGlCA,CAAK,GAEb,EAWAkB,eAAAA,CAAgBiE,EAAOoC,GAAmB,IAAjB,OAAE5G,EAAM,IAAEjB,GAAK6H,EACvC,OAAO/B,IAAmBY,MAAMvE,GACxB2D,GAASC,EAAAA,EAAAA,IAAe,iCAAkC,CAAE9E,WAAW,CAAEoG,QAASrH,IACvF0G,MAAMvE,GAAasD,EAAQzD,OAAO,kBAAmB,CAAEf,SAAQjB,UAC/D+D,OAAOzD,IAAY,MAAMA,CAAK,MAC9ByD,OAAOzD,GAAUmF,EAAQzD,OAAO,cAAe,CAAEf,SAAQX,WAC7D,EAWAqB,kBAAAA,CAAmB8D,EAAOqC,GAAmB,IAAjB,OAAE7G,EAAM,IAAEjB,GAAK8H,EAC1C,OAAOhC,IAAmBY,MAAMvE,GACxB2D,GAAWC,EAAAA,EAAAA,IAAe,iCAAkC,CAAE9E,WAAW,CAAEoG,QAASrH,IACzF0G,MAAMvE,GAAasD,EAAQzD,OAAO,qBAAsB,CAAEf,SAAQjB,UAClE+D,OAAOzD,IAAY,MAAMA,CAAK,MAC9ByD,OAAOzD,GAAUmF,EAAQzD,OAAO,cAAe,CAAEf,SAAQX,WAC7D,EASAyH,gBAAeA,CAACtC,EAASxE,IACjB6E,IAAmBY,MAAMvE,GACxB2D,GAASC,EAAAA,EAAAA,IAAe,4BAA6B,CAAE9E,YAC5D8C,OAAOzD,IAAY,MAAMA,CAAK,MAC9ByD,OAAOzD,GAAUmF,EAAQzD,OAAO,cAAe,CAAEf,SAAQX,YAU7DuB,WAAUA,CAAC4D,EAASxE,IACZ6E,IAAmBY,MAAMvE,GACxB2D,GAAWC,EAAAA,EAAAA,IAAe,uBAAwB,CAAE9E,YACzDyF,MAAMvE,GAAasD,EAAQzD,OAAO,aAAcf,KAChD8C,OAAOzD,IAAY,MAAMA,CAAK,MAC9ByD,OAAOzD,GAAUmF,EAAQzD,OAAO,cAAe,CAAEf,SAAQX,YAqB7D0H,OAAAA,CAAOC,EAAAC,GAA6G,IAA5G,OAAElG,EAAM,SAAEmG,GAAUF,GAAE,OAAEhH,EAAM,SAAEmH,EAAQ,YAAEnI,EAAW,MAAEoI,EAAK,OAAE7K,EAAM,SAAEkE,EAAQ,MAAE4G,EAAK,SAAEC,EAAQ,QAAEC,GAASN,EACjH,OAAOpC,IAAmBY,MAAMvE,GACxB2D,GAASC,EAAAA,EAAAA,IAAe,eAAgB,CAAE9E,SAAQmH,WAAUnI,cAAaoI,QAAO7K,SAAQkE,WAAU4G,QAAOC,WAAUC,YACxH9B,MAAMvE,GAAagG,EAAS,cAAelH,GAAUkB,EAAS5F,KAAK6F,IAAI7F,KAAKS,MAC5E+G,OAAOzD,IAAY,MAAMA,CAAK,MAC9ByD,OAAOzD,IAET,MADA0B,EAAO,cAAe,CAAEf,SAAQX,UAC1BA,CAAK,GAEb,EASA4B,YAAWA,CAACuD,EAASxE,IACb6E,IAAmBY,MAAMvE,GACxB2D,GAAQC,EAAAA,EAAAA,IAAe,uBAAwB,CAAE9E,YACtDyF,MAAMvE,GAAasD,EAAQzD,OAAO,cAAeG,KACjD4B,OAAOzD,IAAY,MAAMA,CAAK,MAC9ByD,OAAOzD,GAAUmF,EAAQzD,OAAO,cAAe,CAAEf,SAAQX,YAY7D+B,iBAAAA,CAAkBoD,EAAOgD,GAA8B,IAA5B,OAAExH,EAAM,QAAEE,GAAU,GAAMsH,EACpD,MAAMC,EAAavH,EAAU,SAAW,UACxC,OAAO2E,IAAmBY,MAAMvE,GACxB2D,GAAQC,EAAAA,EAAAA,IAAe,oCAAqC,CAAE9E,SAAQyH,gBAC3EhC,MAAMvE,GAAasD,EAAQzD,OAAO,oBAAqB,CAAEf,SAAQE,cACjE4C,OAAOzD,IAAY,MAAMA,CAAK,MAC9ByD,OAAOzD,GAAUmF,EAAQzD,OAAO,cAAe,CAAEf,SAAQX,WAC7D,EAYAwC,WAAAA,CAAY2C,EAAOkD,GAA0B,IAAxB,OAAE1H,EAAM,IAAE+B,EAAG,MAAEC,GAAO0F,EAC1C,MAAMC,EAAe,CAAC,QAAS,cAAe,WAC9C,OAA2F,IAAvF,CAAC,QAAS,WAAY,QAAS,cAAe,WAAY,WAAWrH,QAAQyB,IAE3D,iBAAVC,KAEuB,IAA/B2F,EAAarH,QAAQyB,IAAeC,EAAMxD,OAAS,IAClB,IAA/BmJ,EAAarH,QAAQyB,IAGlB8C,IAAmBY,MAAMvE,GACxB2D,GAAQC,EAAAA,EAAAA,IAAe,uBAAwB,CAAE9E,WAAW,CAAE+B,MAAKC,UACxEyD,MAAMvE,GAAasD,EAAQzD,OAAO,cAAe,CAAEf,SAAQ+B,MAAKC,YAChEc,OAAOzD,IAAY,MAAMA,CAAK,MAC9ByD,OAAOzD,GAAUmF,EAAQzD,OAAO,cAAe,CAAEf,SAAQX,YAGvDuI,QAAQC,OAAO,IAAIC,MAAM,wBACjC,EASAC,gBAAeA,CAACvD,EAASxE,IACjB6E,IAAmBY,MAAMvE,GACxB2D,GAASC,EAAAA,EAAAA,IAAe,+BAAgC,CAAE9E,YAC/DyF,MAAKvE,IAAY,IACjB4B,OAAOzD,IAAY,MAAMA,CAAK,MAC9ByD,OAAOzD,GAAUmF,EAAQzD,OAAO,cAAe,CAAEf,SAAQX,wCC9tB9D,MASM7B,EAAY,CAEjBwK,gBAAAA,CAAiB3L,EAAOgD,IACvB0D,EAAAA,EAAAA,IAAUC,EAAE,WAAY,4DAA8D,OAAS3D,EAAMA,MAAM6B,SAAS5F,KAAKA,KAAK2M,QAAS,CAAEC,QAAQ,IACjJ9I,EAAQC,MAAMhD,EAAOgD,EACtB,EAEA8I,cAAAA,CAAe9L,EAAKwB,GAA+B,IAA7B,WAAEuK,EAAU,YAAEC,GAAaxK,EAChDxB,EAAM+L,WAAaA,EACnB/L,EAAMgM,YAAcA,CACrB,EAEAC,gBAAAA,CAAiBjM,EAAOkM,GACvBlM,EAAMmM,yBAA2BD,CAClC,EAEAE,cAAAA,CAAepM,EAAOgM,GACrBhM,EAAMgM,YAAcA,CACrB,EAEAK,WAAAA,CAAYrM,EAAOsM,GAClBtM,EAAM+L,WAAWjI,KAAKwI,EACvB,EAEAC,gBAAAA,CAAiBvM,EAAOwM,GAEvBxM,EAAM+L,WAAaS,CACpB,EAEAC,UAAAA,CAAWzM,EAAO0M,GACjB1M,EAAM0M,KAAOA,CACd,EAEAC,QAAAA,CAAS3M,EAAK6B,GAAoB,IAAlB,MAAE+K,EAAK,MAAE5J,GAAOnB,EAC1BgL,MAAMC,QAAQF,KAClBA,EAAQ,CAACA,IAEVA,EAAMxH,SAAS2H,IACF/M,EAAM0M,KAAK9J,MAAKoK,GAAOA,EAAItN,KAAOqN,IAC1C/J,MAAQA,CAAK,GAEnB,EAEAiK,UAAAA,CAAWjN,EAAKqC,GAAoB,IAAlB,MAAEuK,EAAK,MAAE5J,GAAOX,EACrBrC,EAAM0M,KAAK9J,MAAKoK,GAAOA,EAAItN,KAAOkN,IAC1C5J,MAAQ,IACb,EAEAkK,SAAAA,CAAUlN,EAAKyC,GAAqB,IAAnB,MAAEmK,EAAK,OAAE1M,GAAQuC,EACjC,MAAMuK,EAAMhN,EAAM0M,KAAK9J,MAAKoK,GAAOA,EAAItN,KAAOkN,IAC9CI,EAAIG,QAAS,EACbH,EAAI9M,OAASA,CACd,EAEAkN,eAAAA,CAAgBpN,EAAKkD,GAAyB,IAAvB,MAAE0J,EAAK,WAAES,GAAYnK,EAC3C,MAAM8J,EAAMhN,EAAM0M,KAAK9J,MAAKoK,GAAOA,EAAItN,KAAOkN,IAC1CI,IACHA,EAAIK,YAA4B,IAAfA,EAEnB,EAEAC,UAAAA,CAAWtN,EAAO4M,GACjB,MAAMI,EAAMhN,EAAM0M,KAAK9J,MAAKoK,GAAOA,EAAItN,KAAOkN,IAC9CI,EAAIG,QAAS,EACbH,EAAI9M,OAAS,GACT8M,EAAIO,YACPP,EAAIQ,cAAe,EAErB,EAEAC,YAAAA,CAAazN,EAAO4M,GACnB5M,EAAM0M,KAAK9J,MAAKoK,GAAOA,EAAItN,KAAOkN,IAAOO,QAAS,EAClDnN,EAAM0M,KAAK9J,MAAKoK,GAAOA,EAAItN,KAAOkN,IAAO1M,OAAS,GAClDF,EAAM0M,KAAK9J,MAAKoK,GAAOA,EAAItN,KAAOkN,IAAOc,eAAgB,EACzD1N,EAAM0M,KAAK9J,MAAKoK,GAAOA,EAAItN,KAAOkN,IAAOe,WAAY,EACrD3N,EAAM0M,KAAK9J,MAAKoK,GAAOA,EAAItN,KAAOkN,IAAOY,cAAe,EACxDxN,EAAM0M,KAAK9J,MAAKoK,GAAOA,EAAItN,KAAOkN,IAAOS,YAAa,CACvD,EAEAO,SAAAA,CAAU5N,EAAO4M,GAChB,MAAMI,EAAMhN,EAAM0M,KAAK9J,MAAKoK,GAAOA,EAAItN,KAAOkN,IACxCiB,EAAUb,EAAIc,OACpBd,EAAIc,OAAS,KACbd,EAAIa,QAAUA,EACd7N,EAAMgM,aAEP,EAEA+B,SAAAA,CAAU/N,GACTA,EAAM0M,KAAO,EACd,EACAsB,KAAAA,CAAMhO,GACLA,EAAM0M,KAAO,GACb1M,EAAM+L,WAAa,GACnB/L,EAAMgM,YAAc,CACrB,EACAiC,YAAAA,CAAajO,EAAON,GACfmN,MAAMC,QAAQpN,GACjBA,EAAG0F,SAAS2H,IACXmB,EAAAA,GAAAA,IAAQlO,EAAMmO,QAASpB,GAAK,EAAK,IAGlCmB,EAAAA,GAAAA,IAAQlO,EAAMmO,QAASzO,GAAI,EAE7B,EACA0O,WAAAA,CAAYpO,EAAON,GACdmN,MAAMC,QAAQpN,GACjBA,EAAG0F,SAAS2H,IACXmB,EAAAA,GAAAA,IAAQlO,EAAMmO,QAASpB,GAAK,EAAM,IAGnCmB,EAAAA,GAAAA,IAAQlO,EAAMmO,QAASzO,GAAI,EAE7B,GA0BKuI,EAAU,CAEfiF,SAAAA,CAAU/E,EAAOzE,GAAqB,IACjCgJ,GADc,MAAEE,EAAK,OAAE1M,GAAQwD,EAOnC,OAJCgJ,EADGG,MAAMC,QAAQF,GACVA,EAEA,CAACA,GAEFpE,IAAmBY,MAAMvE,IAC/BsD,EAAQzD,OAAO,eAAgBgI,GAC/BvE,EAAQzD,OAAO,eAAgB,WACxB8D,GAASjC,EAAAA,EAAAA,IAAY,wBAAyB,CAAE8H,OAAQ3B,EAAMxM,WACnEkJ,MAAMvE,IACNsD,EAAQzD,OAAO,cAAegI,GAC9BvE,EAAQzD,OAAO,cAAe,WAC9BgI,EAAKtH,SAAQkJ,IACZnG,EAAQzD,OAAO,YAAa,CAAEkI,MAAO0B,EAAQpO,UAAS,IAIhDsI,GAAQjC,EAAAA,EAAAA,IAAY,gBACzB6C,MAAK,KACDvE,EAAS5F,KAAKsP,mBACjBC,EAAAA,EAAAA,IACC7H,EACC,WACA,6GAED,CACC8H,QAASA,IAAMC,OAAOC,SAASC,SAC/BC,OAAO,IAITC,YAAW,WACVH,SAASC,QACV,GAAG,KACJ,IAEAnI,OAAM,KACDoG,MAAMC,QAAQF,MAClBlG,EAAAA,EAAAA,IAAUC,EAAE,WAAY,2EACxBwB,EAAQzD,OAAO,WAAY,CAC1BkI,MAAOF,EACP1J,MAAO2D,EAAE,WAAY,4EAEtBwB,EAAQ0C,SAAS,aAAc,CAAE+B,UAClC,OAGFnG,OAAOzD,IACPmF,EAAQzD,OAAO,cAAegI,GAC9BvE,EAAQzD,OAAO,cAAe,WAC9ByD,EAAQzD,OAAO,WAAY,CAC1BkI,MAAOF,EACP1J,MAAOA,EAAM6B,SAAS5F,KAAKA,KAAK2M,UAEjCzD,EAAQzD,OAAO,mBAAoB,CAAEkI,QAAO5J,SAAQ,OAEpDyD,OAAOzD,GAAUmF,EAAQzD,OAAO,cAAe,CAAEkI,QAAO5J,WAC5D,EACA+L,cAAAA,CAAe5G,EAAOnE,GAAqB,IACtC0I,GADmB,MAAEE,EAAK,OAAE1M,GAAQ8D,EAOxC,OAJC0I,EADGG,MAAMC,QAAQF,GACVA,EAEA,CAACA,GAEFpE,IAAmBY,MAAK,KAC9BjB,EAAQzD,OAAO,eAAgBgI,GAC/BvE,EAAQzD,OAAO,eAAgB,WACxB8D,GAASjC,EAAAA,EAAAA,IAAY,uBAAwB,CAAEqG,UACpDxD,MAAMvE,IACNsD,EAAQzD,OAAO,kBAAmB,CAAEkI,QAAOS,YAAY,GAAO,IAE9D5G,OAAOzD,IACPmF,EAAQzD,OAAO,cAAegI,GAC9BvE,EAAQzD,OAAO,cAAe,WAC9ByD,EAAQzD,OAAO,WAAY,CAC1BkI,MAAOF,EACP1J,MAAOA,EAAM6B,SAAS5F,KAAKA,KAAK2M,UAEjCzD,EAAQzD,OAAO,mBAAoB,CAAEkI,QAAO5J,SAAQ,IAEpDgM,SAAQ,KACR7G,EAAQzD,OAAO,cAAegI,GAC9BvE,EAAQzD,OAAO,cAAe,UAAU,OAExC+B,OAAOzD,GAAUmF,EAAQzD,OAAO,cAAe,CAAEkI,QAAO5J,WAC5D,EACAsK,UAAAA,CAAWnF,EAAOhE,GAAa,IAC1BuI,GADe,MAAEE,GAAOzI,EAO5B,OAJCuI,EADGG,MAAMC,QAAQF,GACVA,EAEA,CAACA,GAEFpE,IAAmBY,MAAMvE,IAC/BsD,EAAQzD,OAAO,eAAgBgI,GACxBlE,GAASjC,EAAAA,EAAAA,IAAY,yBAA0B,CAAE8H,OAAQ3B,IAC9DtD,MAAMvE,IACNsD,EAAQzD,OAAO,cAAegI,GAC9BA,EAAKtH,SAAQkJ,IACZnG,EAAQzD,OAAO,aAAc4J,EAAO,KAE9B,KAEP7H,OAAOzD,IACPmF,EAAQzD,OAAO,cAAegI,GAC9BvE,EAAQzD,OAAO,mBAAoB,CAAEkI,QAAO5J,SAAQ,OAEpDyD,OAAOzD,GAAUmF,EAAQzD,OAAO,cAAe,CAAEkI,QAAO5J,WAC5D,EACAyK,YAAAA,CAAatF,EAAO7D,GAAa,IAAX,MAAEsI,GAAOtI,EAC9B,OAAOkE,IAAmBY,MAAMvE,IAC/BsD,EAAQzD,OAAO,eAAgBkI,GACxBpE,GAAQjC,EAAAA,EAAAA,IAAY,2BAADxE,OAA4B6K,KACpDxD,MAAMvE,IACNsD,EAAQzD,OAAO,cAAekI,GAC9BzE,EAAQzD,OAAO,eAAgBkI,IACxB,KAEPnG,OAAOzD,IACPmF,EAAQzD,OAAO,cAAekI,GAC9BzE,EAAQzD,OAAO,mBAAoB,CAAEkI,QAAO5J,SAAQ,OAEpDyD,OAAOzD,GAAUmF,EAAQzD,OAAO,cAAe,CAAEkI,QAAO5J,WAC5D,EAEA4K,SAAAA,CAAUzF,EAAOnD,GAAa,IAAX,MAAE4H,GAAO5H,EAC3B,OAAOwD,IAAmBY,MAAMvE,IAC/BsD,EAAQzD,OAAO,eAAgBkI,GAC/BzE,EAAQzD,OAAO,eAAgB,WACxB8D,GAAQjC,EAAAA,EAAAA,IAAY,wBAADxE,OAAyB6K,KACjDxD,MAAMvE,IACNsD,EAAQzD,OAAO,cAAe,WAC9ByD,EAAQzD,OAAO,cAAekI,GAC9BzE,EAAQzD,OAAO,YAAakI,IACrB,KAEPnG,OAAOzD,IACPmF,EAAQzD,OAAO,cAAekI,GAC9BzE,EAAQzD,OAAO,cAAe,WAC9ByD,EAAQzD,OAAO,mBAAoB,CAAEkI,QAAO5J,SAAQ,OAEpDyD,OAAOzD,GAAUmF,EAAQzD,OAAO,cAAe,CAAEkI,QAAO5J,WAC5D,EAEAiM,WAAW9G,IACVA,EAAQzD,OAAO,eAAgB,QACxB8D,GAAQjC,EAAAA,EAAAA,IAAY,uBACzB6C,MAAMvE,IACNsD,EAAQzD,OAAO,aAAcG,EAAS5F,KAAKyN,MAC3CvE,EAAQzD,OAAO,cAAe,SACvB,KAEP+B,OAAOzD,GAAUmF,EAAQzD,OAAO,cAAe1B,MAGlD,mBAAMkM,CAAc/G,GAAmD,IAA1C,wBAAEgH,GAA0B,GAAOC,UAAAjN,OAAA,QAAAkN,IAAAD,UAAA,GAAAA,UAAA,GAAG,CAAC,EACnE,GAAID,IAA4BhH,EAAQnI,MAAMmM,yBAA0B,CACvEhE,EAAQzD,OAAO,eAAgB,cAC/B,IACC,MAAMwH,EAAoB1D,GAAQjC,EAAAA,EAAAA,IAAY,6BAC9C4B,EAAQzD,OAAO,mBAAoBwH,GACnC,MAAMoD,QAAkCpD,EACxC,OAAIoD,EAA0BrQ,KAAKkD,OAAS,GAC3CgG,EAAQzD,OAAO,mBAAoB4K,EAA0BrQ,MAC7DkJ,EAAQzD,OAAO,cAAe,eACvB,IAERyD,EAAQzD,OAAO,cAAe,eACvB,EACR,CAAE,MAAO1B,GACRmF,EAAQzD,OAAO,cAAe1B,EAC/B,CACD,CACA,OAAOmF,EAAQnI,MAAMmM,wBACtB,GAID,GAAiBnM,MA3UH,CACb0M,KAAM,GACN6C,SAASC,EAAAA,EAAAA,GAAU,WAAY,kBAAmB,IAClDzD,WAAY,GACZC,aAAawD,EAAAA,EAAAA,GAAU,WAAY,sBAAuB,GAC1DrB,QAAS,CAAC,EACVhC,yBAA0B,MAqUHhL,UAAS,EAAEyF,QA9MnB,CACfuH,QAAQnO,GACA,SAASN,GACf,OAAOM,EAAMmO,QAAQzO,EACtB,EAEDwP,cAAclP,GACNA,EAAM+L,WAEdkD,WAAWjP,GACHA,EAAM0M,KAEd+C,cAAczP,GACNA,EAAMuP,QAEdG,eAAe1P,GACPA,EAAMgM,YAEd2D,gBAAkB3P,GAAW4P,GACrB5P,EAAM+L,WAAWnJ,MAAM0J,GAAaA,EAAS5M,KAAOkQ,KA2LjB3H,QAAOA,GC9U7C9G,EAAY,CACjB0O,aAAAA,CAAc7P,EAAOf,GACpBe,EAAM8P,WAAa7Q,CACpB,GASD,GAAiBe,MAfH,CACb8P,YAAYN,EAAAA,EAAAA,GAAU,WAAY,gBAAiB,CAAC,IAc7BrO,UAAS,EAAEyF,QAPnB,CACfmJ,cAAc/P,GACNA,EAAM8P,YAK6B7H,QAF5B,CAAC,GCWjB,GAAiBjI,MAtBH,CAAC,EAsBSmB,UArBN,CAAC,EAqBgByF,QApBnB,CAAC,EAoB2BqB,QAnB5B,CAWf+H,YAAAA,CAAa7H,EAAO3G,GAAuB,IAArB,IAAEwL,EAAG,IAAEtH,EAAG,MAAEC,GAAOnE,EACxC,OAAOgH,IAAmBY,MAAMvE,GACxB2D,GAASC,EAAAA,EAAAA,IAAe,uDAAwD,CAAEuE,MAAKtH,QAAQ,CAAEC,UACtGc,OAAOzD,IAAY,MAAMA,CAAK,MAC9ByD,OAAOzD,GAAUmF,EAAQzD,OAAO,cAAe,CAAEsI,MAAKtH,MAAKC,QAAO3C,WACtE,mBCdDkL,EAAAA,GAAI+B,IAAIC,EAAAA,IAER,MAEM/O,EAAY,CACjBgP,WAAAA,CAAYnQ,EAAOgD,GAClB,IACC,MAAM4I,EAAU5I,EAAMA,MAAM6B,SAAS5F,KAAK6F,IAAIsL,KAAKxE,SACnDlF,EAAAA,EAAAA,IAAUC,EAAE,WAAY,4DAA8D,OAASiF,EAAS,CAAEC,QAAQ,GACnH,CAAE,MAAO/I,IACR4D,EAAAA,EAAAA,IAAUC,EAAE,WAAY,4DACzB,CACA5D,EAAQC,MAAMhD,EAAOgD,EACtB,GAGD,IAAIqN,EAAQ,KAEL,MAAMC,EAAWA,KACT,OAAVD,IACHA,EAAQ,IAAIE,EAAAA,GAAM,CACjBC,QAAS,CACRvQ,MAAK,EACLyM,KAAI,EACJ+D,SAAQ,EACRC,GAAEA,GAEHC,QAzBWC,EA0BXzP,UAASA,KAGJkP,iCCtCD,IAAIjQ,mBACX,SAAWA,GACPA,EAAaA,EAAwB,UAAI,GAAK,YAC9CA,EAAaA,EAAwB,UAAI,GAAK,WACjD,CAHD,CAGGA,IAAiBA,EAAe,CAAC,mDCNpC,SAAeyQ,WAAAA,MACVC,OAAO,YACPC,aACAvR,iGCvBL,MCFsQ,GDEzOwR,EAAAA,EAAAA,IAAiB,CAC1CC,OAAQ,cACRC,MAAMC,IACK,CAAEC,OAAO,EAAMC,UAASA,EAAAA,MEavC,GAXgB,cACd,GFRW,WAAkB,IAAIC,EAAI7M,KAAK8M,EAAGD,EAAIE,MAAMD,GAAgC,OAAOA,EAA7BD,EAAIE,MAAMC,YAA6BJ,UAAU,CAACK,MAAM,CAAC,WAAW,aAAa,CAACH,EAAG,cAAc,CAACG,MAAM,CAAC,KAAO,gBAAgBJ,EAAIK,GAAG,KAAKJ,EAAG,eAAeD,EAAIK,GAAG,KAAKJ,EAAG,cAAc,CAACG,MAAM,CAAC,KAAO,cAAc,EAC7R,GACsB,IESpB,EACA,KACA,KACA,MAI8B,kCCjBhC,MAkDA,EA7Ce,CACX,CACI/R,KAAM,QACNiS,KAAM,qCACNC,WAAY,CACRC,QAPWC,IAAM,mEAQjBC,WAPqBC,IAAM,oEAS/BC,OAAO,EACPC,SAAU,CACN,CACIP,KAAM,iBACNjS,KAAM,WAIlB,CACIiS,KAAM,oCACNjS,KAAM,OAENyS,SAAU,CACNzS,KAAM,gBACNP,OAAQ,CACJkN,SAAU,aAGlBuF,WAAY,CACRC,QAhCKO,IAAM,kEAiCXL,WAhCeM,IAAM,mEAiCrBC,QAhCYC,IAAM,oEAkCtBL,SAAU,CACN,CACIP,KAAM,YACNjS,KAAM,gBACNwS,SAAU,CACN,CACIP,KAAM,MACNjS,KAAM,qBChB9BuO,EAAAA,GAAI+B,IAAIwC,EAAAA,IACR,MAQA,EARe,IAAIA,EAAAA,GAAO,CACtBC,KAAM,UAGNC,MAAMpM,EAAAA,EAAAA,IAAY,IAClBqM,gBAAiB,SACjBC,OAAMA,2CCHV3E,EAAAA,GAAI+B,IAAI6C,EAAAA,GAAU,CAAEC,aAAa,IACjC,MAAM1C,GAAQC,EAAAA,EAAAA,MACd0C,EAAAA,EAAAA,GAAK3C,EAAO4C,GAGZC,EAAAA,GAAoBC,KAAsB,QAAlBC,GAACC,EAAAA,EAAAA,aAAiB,IAAAD,EAAAA,EAAI,IAE9ClF,EAAAA,GAAIoF,UAAU3M,EAAIA,EAAAA,GAClBuH,EAAAA,GAAIoF,UAAUC,EAAIA,EAAAA,GAClBrF,EAAAA,GAAI+B,IAAIuD,EAAAA,IACR,MAAMC,GAAQC,EAAAA,EAAAA,MACd,IAAmBxF,EAAAA,GAAI,CACnB+E,OAAM,EACN5C,MAAK,EACLoD,MAAK,EACLE,OAAQC,GAAKA,EAAEC,GACfC,GAAI,sFC7BR,SAASC,EAAQ7M,EAAGC,GAClB,IAAK,IAAIzB,KAAOyB,EACdD,EAAExB,GAAOyB,EAAEzB,GAEb,OAAOwB,CACT,CAIA,IAAI8M,EAAkB,WAClBC,EAAwB,SAAUC,GAAK,MAAO,IAAMA,EAAEC,WAAW,GAAGC,SAAS,GAAK,EAClFC,EAAU,OAKVC,EAAS,SAAUC,GAAO,OAAOtL,mBAAmBsL,GACnD7V,QAAQsV,EAAiBC,GACzBvV,QAAQ2V,EAAS,IAAM,EAE5B,SAASG,EAAQD,GACf,IACE,OAAOE,mBAAmBF,EAC5B,CAAE,MAAOG,GAIT,CACA,OAAOH,CACT,CA0BA,IAAII,EAAsB,SAAUhP,GAAS,OAAiB,MAATA,GAAkC,iBAAVA,EAAqBA,EAAQa,OAAOb,EAAS,EAE1H,SAASiP,EAAYC,GACnB,IAAIC,EAAM,CAAC,EAIX,OAFAD,EAAQA,EAAM7L,OAAOtK,QAAQ,YAAa,MAM1CmW,EAAME,MAAM,KAAK3P,SAAQ,SAAU4P,GACjC,IAAIC,EAAQD,EAAMtW,QAAQ,MAAO,KAAKqW,MAAM,KACxCrP,EAAM8O,EAAOS,EAAMC,SACnBC,EAAMF,EAAM9S,OAAS,EAAIqS,EAAOS,EAAMG,KAAK,MAAQ,UAEtC/F,IAAbyF,EAAIpP,GACNoP,EAAIpP,GAAOyP,EACFtI,MAAMC,QAAQgI,EAAIpP,IAC3BoP,EAAIpP,GAAK5B,KAAKqR,GAEdL,EAAIpP,GAAO,CAACoP,EAAIpP,GAAMyP,EAE1B,IAEOL,GAjBEA,CAkBX,CAEA,SAASO,EAAgBC,GACvB,IAAIR,EAAMQ,EACN5T,OAAO4H,KAAKgM,GACX/T,KAAI,SAAUmE,GACb,IAAIyP,EAAMG,EAAI5P,GAEd,QAAY2J,IAAR8F,EACF,MAAO,GAGT,GAAY,OAARA,EACF,OAAOb,EAAO5O,GAGhB,GAAImH,MAAMC,QAAQqI,GAAM,CACtB,IAAII,EAAS,GAWb,OAVAJ,EAAI/P,SAAQ,SAAUoQ,QACPnG,IAATmG,IAGS,OAATA,EACFD,EAAOzR,KAAKwQ,EAAO5O,IAEnB6P,EAAOzR,KAAKwQ,EAAO5O,GAAO,IAAM4O,EAAOkB,IAE3C,IACOD,EAAOH,KAAK,IACrB,CAEA,OAAOd,EAAO5O,GAAO,IAAM4O,EAAOa,EACpC,IACCvT,QAAO,SAAU6T,GAAK,OAAOA,EAAEtT,OAAS,CAAG,IAC3CiT,KAAK,KACN,KACJ,OAAON,EAAO,IAAMA,EAAO,EAC7B,CAIA,IAAIY,EAAkB,OAEtB,SAASC,EACPC,EACAjH,EACAkH,EACA5C,GAEA,IAAIoC,EAAiBpC,GAAUA,EAAOnU,QAAQuW,eAE1CR,EAAQlG,EAASkG,OAAS,CAAC,EAC/B,IACEA,EAAQiB,EAAMjB,EAChB,CAAE,MAAO/R,GAAI,CAEb,IAAIiT,EAAQ,CACVpW,KAAMgP,EAAShP,MAASiW,GAAUA,EAAOjW,KACzCyQ,KAAOwF,GAAUA,EAAOxF,MAAS,CAAC,EAClCwB,KAAMjD,EAASiD,MAAQ,IACvBoE,KAAMrH,EAASqH,MAAQ,GACvBnB,MAAOA,EACPzV,OAAQuP,EAASvP,QAAU,CAAC,EAC5B6W,SAAUC,EAAYvH,EAAU0G,GAChCc,QAASP,EAASQ,EAAYR,GAAU,IAK1C,OAHIC,IACFE,EAAMF,eAAiBK,EAAYL,EAAgBR,IAE9C3T,OAAO2U,OAAON,EACvB,CAEA,SAASD,EAAOnQ,GACd,GAAIkH,MAAMC,QAAQnH,GAChB,OAAOA,EAAMpE,IAAIuU,GACZ,GAAInQ,GAA0B,iBAAVA,EAAoB,CAC7C,IAAImP,EAAM,CAAC,EACX,IAAK,IAAIpP,KAAOC,EACdmP,EAAIpP,GAAOoQ,EAAMnQ,EAAMD,IAEzB,OAAOoP,CACT,CACE,OAAOnP,CAEX,CAGA,IAAI2Q,EAAQX,EAAY,KAAM,CAC5B/D,KAAM,MAGR,SAASwE,EAAaR,GAEpB,IADA,IAAId,EAAM,GACHc,GACLd,EAAIjS,QAAQ+S,GACZA,EAASA,EAAOW,OAElB,OAAOzB,CACT,CAEA,SAASoB,EACPM,EACAC,GAEA,IAAI7E,EAAO4E,EAAI5E,KACXiD,EAAQ2B,EAAI3B,WAAsB,IAAVA,IAAmBA,EAAQ,CAAC,GACxD,IAAImB,EAAOQ,EAAIR,KAGf,YAHmC,IAATA,IAAkBA,EAAO,KAG3CpE,GAAQ,MADA6E,GAAmBpB,GACFR,GAASmB,CAC5C,CAEA,SAASU,EAAaxP,EAAGC,EAAGwP,GAC1B,OAAIxP,IAAMmP,EACDpP,IAAMC,IACHA,IAEDD,EAAE0K,MAAQzK,EAAEyK,KACd1K,EAAE0K,KAAKlT,QAAQgX,EAAiB,MAAQvO,EAAEyK,KAAKlT,QAAQgX,EAAiB,MAAQiB,GACrFzP,EAAE8O,OAAS7O,EAAE6O,MACbY,EAAc1P,EAAE2N,MAAO1N,EAAE0N,WAClB3N,EAAEvH,OAAQwH,EAAExH,OAEnBuH,EAAEvH,OAASwH,EAAExH,OACZgX,GACCzP,EAAE8O,OAAS7O,EAAE6O,MACfY,EAAc1P,EAAE2N,MAAO1N,EAAE0N,QACzB+B,EAAc1P,EAAE9H,OAAQ+H,EAAE/H,SAMhC,CAEA,SAASwX,EAAe1P,EAAGC,GAKzB,QAJW,IAAND,IAAeA,EAAI,CAAC,QACd,IAANC,IAAeA,EAAI,CAAC,IAGpBD,IAAMC,EAAK,OAAOD,IAAMC,EAC7B,IAAI0P,EAAQnV,OAAO4H,KAAKpC,GAAGD,OACvB6P,EAAQpV,OAAO4H,KAAKnC,GAAGF,OAC3B,OAAI4P,EAAM1U,SAAW2U,EAAM3U,QAGpB0U,EAAME,OAAM,SAAUrR,EAAKsR,GAChC,IAAIC,EAAO/P,EAAExB,GAEb,GADWoR,EAAME,KACJtR,EAAO,OAAO,EAC3B,IAAIwR,EAAO/P,EAAEzB,GAEb,OAAY,MAARuR,GAAwB,MAARC,EAAuBD,IAASC,EAEhC,iBAATD,GAAqC,iBAATC,EAC9BN,EAAcK,EAAMC,GAEtB1Q,OAAOyQ,KAAUzQ,OAAO0Q,EACjC,GACF,CAqBA,SAASC,EAAoBpB,GAC3B,IAAK,IAAIiB,EAAI,EAAGA,EAAIjB,EAAMI,QAAQhU,OAAQ6U,IAAK,CAC7C,IAAIpB,EAASG,EAAMI,QAAQa,GAC3B,IAAK,IAAIrX,KAAQiW,EAAOwB,UAAW,CACjC,IAAIC,EAAWzB,EAAOwB,UAAUzX,GAC5B2X,EAAM1B,EAAO2B,WAAW5X,GAC5B,GAAK0X,GAAaC,EAAlB,QACO1B,EAAO2B,WAAW5X,GACzB,IAAK,IAAI6X,EAAM,EAAGA,EAAMF,EAAInV,OAAQqV,IAC7BH,EAASI,mBAAqBH,EAAIE,GAAKH,EAHZ,CAKpC,CACF,CACF,CAEA,IAAIK,EAAO,CACT/X,KAAM,aACNgY,YAAY,EACZzF,MAAO,CACLvS,KAAM,CACJiY,KAAMpR,OACNsL,QAAS,YAGb6B,OAAQ,SAAiBkE,EAAGrB,GAC1B,IAAItE,EAAQsE,EAAItE,MACZC,EAAWqE,EAAIrE,SACfoE,EAASC,EAAID,OACbtX,EAAOuX,EAAIvX,KAGfA,EAAK6Y,YAAa,EAalB,IATA,IAAIlE,EAAI2C,EAAOwB,eACXpY,EAAOuS,EAAMvS,KACboW,EAAQQ,EAAOyB,OACfC,EAAQ1B,EAAO2B,mBAAqB3B,EAAO2B,iBAAmB,CAAC,GAI/DC,EAAQ,EACRC,GAAW,EACR7B,GAAUA,EAAO8B,cAAgB9B,GAAQ,CAC9C,IAAI+B,EAAY/B,EAAOgC,OAAShC,EAAOgC,OAAOtZ,KAAO,CAAC,EAClDqZ,EAAUR,YACZK,IAEEG,EAAUE,WAAajC,EAAOkC,iBAAmBlC,EAAOmC,YAC1DN,GAAW,GAEb7B,EAASA,EAAOoC,OAClB,CAIA,GAHA1Z,EAAK2Z,gBAAkBT,EAGnBC,EAAU,CACZ,IAAIS,EAAaZ,EAAMtY,GACnBmZ,EAAkBD,GAAcA,EAAWE,UAC/C,OAAID,GAGED,EAAWG,aACbC,EAAgBH,EAAiB7Z,EAAM4Z,EAAW9C,MAAO8C,EAAWG,aAE/DpF,EAAEkF,EAAiB7Z,EAAMkT,IAGzByB,GAEX,CAEA,IAAIuC,EAAUJ,EAAMI,QAAQgC,GACxBY,EAAY5C,GAAWA,EAAQtE,WAAWlS,GAG9C,IAAKwW,IAAY4C,EAEf,OADAd,EAAMtY,GAAQ,KACPiU,IAITqE,EAAMtY,GAAQ,CAAEoZ,UAAWA,GAI3B9Z,EAAKia,sBAAwB,SAAUC,EAAIhE,GAEzC,IAAIiE,EAAUjD,EAAQiB,UAAUzX,IAE7BwV,GAAOiE,IAAYD,IAClBhE,GAAOiE,IAAYD,KAErBhD,EAAQiB,UAAUzX,GAAQwV,EAE9B,GAIElW,EAAKoa,OAASpa,EAAKoa,KAAO,CAAC,IAAIC,SAAW,SAAUzB,EAAG0B,GACvDpD,EAAQiB,UAAUzX,GAAQ4Z,EAAMC,iBAClC,EAIAva,EAAKoa,KAAKI,KAAO,SAAUF,GACrBA,EAAMta,KAAKuZ,WACbe,EAAMC,mBACND,EAAMC,oBAAsBrD,EAAQiB,UAAUzX,KAE9CwW,EAAQiB,UAAUzX,GAAQ4Z,EAAMC,mBAMlCrC,EAAmBpB,EACrB,EAEA,IAAIiD,EAAc7C,EAAQjE,OAASiE,EAAQjE,MAAMvS,GAUjD,OARIqZ,IACFjF,EAAOkE,EAAMtY,GAAO,CAClBoW,MAAOA,EACPiD,YAAaA,IAEfC,EAAgBF,EAAW9Z,EAAM8W,EAAOiD,IAGnCpF,EAAEmF,EAAW9Z,EAAMkT,EAC5B,GAGF,SAAS8G,EAAiBF,EAAW9Z,EAAM8W,EAAOiD,GAEhD,IAAIU,EAAcza,EAAKiT,MAezB,SAAuB6D,EAAO4D,GAC5B,cAAeA,GACb,IAAK,YACH,OACF,IAAK,SACH,OAAOA,EACT,IAAK,WACH,OAAOA,EAAO5D,GAChB,IAAK,UACH,OAAO4D,EAAS5D,EAAM3W,YAASiQ,EAUrC,CAlCiCuK,CAAa7D,EAAOiD,GACnD,GAAIU,EAAa,CAEfA,EAAcza,EAAKiT,MAAQ6B,EAAO,CAAC,EAAG2F,GAEtC,IAAIhI,EAAQzS,EAAKyS,MAAQzS,EAAKyS,OAAS,CAAC,EACxC,IAAK,IAAIhM,KAAOgU,EACTX,EAAU7G,OAAWxM,KAAOqT,EAAU7G,QACzCR,EAAMhM,GAAOgU,EAAYhU,UAClBgU,EAAYhU,GAGzB,CACF,CAyBA,SAASmU,EACPC,EACAnH,EACAoH,GAEA,IAAIC,EAAYF,EAASG,OAAO,GAChC,GAAkB,MAAdD,EACF,OAAOF,EAGT,GAAkB,MAAdE,GAAmC,MAAdA,EACvB,OAAOrH,EAAOmH,EAGhB,IAAII,EAAQvH,EAAKoC,MAAM,KAKlBgF,GAAWG,EAAMA,EAAM/X,OAAS,IACnC+X,EAAMC,MAKR,IADA,IAAIC,EAAWN,EAASpb,QAAQ,MAAO,IAAIqW,MAAM,KACxCiC,EAAI,EAAGA,EAAIoD,EAASjY,OAAQ6U,IAAK,CACxC,IAAIqD,EAAUD,EAASpD,GACP,OAAZqD,EACFH,EAAMC,MACe,MAAZE,GACTH,EAAMpW,KAAKuW,EAEf,CAOA,MAJiB,KAAbH,EAAM,IACRA,EAAMrX,QAAQ,IAGTqX,EAAM9E,KAAK,IACpB,CAyBA,SAASkF,EAAW1I,GAClB,OAAOA,EAAKlT,QAAQ,gBAAiB,IACvC,CAEA,IAAI6b,EAAU1N,MAAMC,SAAW,SAAU0N,GACvC,MAA8C,kBAAvC9Y,OAAO4R,UAAUc,SAASqG,KAAKD,EACxC,EAKIE,EAmZJ,SAASC,EAAc/I,EAAMtI,EAAMxK,GAQjC,OAPKyb,EAAQjR,KACXxK,EAAkCwK,GAAQxK,EAC1CwK,EAAO,IAGTxK,EAAUA,GAAW,CAAC,EAElB8S,aAAgBgJ,OAlJtB,SAAyBhJ,EAAMtI,GAE7B,IAAIpJ,EAAS0R,EAAK7I,OAAO8R,MAAM,aAE/B,GAAI3a,EACF,IAAK,IAAI8W,EAAI,EAAGA,EAAI9W,EAAOiC,OAAQ6U,IACjC1N,EAAKxF,KAAK,CACRnE,KAAMqX,EACN8D,OAAQ,KACRC,UAAW,KACXC,UAAU,EACVC,QAAQ,EACRC,SAAS,EACTC,UAAU,EACVC,QAAS,OAKf,OAAOC,EAAWzJ,EAAMtI,EAC1B,CA+HWgS,CAAe1J,EAA4B,GAGhD2I,EAAQ3I,GAxHd,SAAwBA,EAAMtI,EAAMxK,GAGlC,IAFA,IAAImW,EAAQ,GAEH+B,EAAI,EAAGA,EAAIpF,EAAKzP,OAAQ6U,IAC/B/B,EAAMnR,KAAK6W,EAAa/I,EAAKoF,GAAI1N,EAAMxK,GAASiK,QAKlD,OAAOsS,EAFM,IAAIT,OAAO,MAAQ3F,EAAMG,KAAK,KAAO,IAAKmG,EAAMzc,IAEnCwK,EAC5B,CA+GWkS,CAAoC,EAA8B,EAAQ1c,GArGrF,SAAyB8S,EAAMtI,EAAMxK,GACnC,OAAO2c,EAAeC,EAAM9J,EAAM9S,GAAUwK,EAAMxK,EACpD,CAsGS6c,CAAqC,EAA8B,EAAQ7c,EACpF,EAnaI8c,EAAUF,EAEVG,EAAqBC,EACrBC,EAAmBN,EAOnBO,EAAc,IAAIpB,OAAO,CAG3B,UAOA,0GACAxF,KAAK,KAAM,KASb,SAASsG,EAAOnH,EAAKzV,GAQnB,IAPA,IAKIgW,EALAmH,EAAS,GACTvW,EAAM,EACNwW,EAAQ,EACRtK,EAAO,GACPuK,EAAmBrd,GAAWA,EAAQic,WAAa,IAGf,OAAhCjG,EAAMkH,EAAYI,KAAK7H,KAAe,CAC5C,IAAI8H,EAAIvH,EAAI,GACRwH,EAAUxH,EAAI,GACdzM,EAASyM,EAAIoH,MAKjB,GAJAtK,GAAQ2C,EAAIgI,MAAML,EAAO7T,GACzB6T,EAAQ7T,EAASgU,EAAEla,OAGfma,EACF1K,GAAQ0K,EAAQ,OADlB,CAKA,IAAIE,EAAOjI,EAAI2H,GACXpB,EAAShG,EAAI,GACbnV,EAAOmV,EAAI,GACX2H,EAAU3H,EAAI,GACdxS,EAAQwS,EAAI,GACZ4H,EAAW5H,EAAI,GACfqG,EAAWrG,EAAI,GAGflD,IACFqK,EAAOnY,KAAK8N,GACZA,EAAO,IAGT,IAAIsJ,EAAoB,MAAVJ,GAA0B,MAAR0B,GAAgBA,IAAS1B,EACrDG,EAAsB,MAAbyB,GAAiC,MAAbA,EAC7B1B,EAAwB,MAAb0B,GAAiC,MAAbA,EAC/B3B,EAAYjG,EAAI,IAAMqH,EACtBf,EAAUqB,GAAWna,EAEzB2Z,EAAOnY,KAAK,CACVnE,KAAMA,GAAQ+F,IACdoV,OAAQA,GAAU,GAClBC,UAAWA,EACXC,SAAUA,EACVC,OAAQA,EACRC,QAASA,EACTC,WAAYA,EACZC,QAASA,EAAUuB,EAAYvB,GAAYD,EAAW,KAAO,KAAOyB,EAAa7B,GAAa,OA9BhG,CAgCF,CAYA,OATImB,EAAQ3H,EAAIpS,SACdyP,GAAQ2C,EAAIsI,OAAOX,IAIjBtK,GACFqK,EAAOnY,KAAK8N,GAGPqK,CACT,CAmBA,SAASa,EAA0BvI,GACjC,OAAOwI,UAAUxI,GAAK7V,QAAQ,WAAW,SAAUwV,GACjD,MAAO,IAAMA,EAAEC,WAAW,GAAGC,SAAS,IAAI4I,aAC5C,GACF,CAiBA,SAASlB,EAAkBG,EAAQnd,GAKjC,IAHA,IAAIme,EAAU,IAAIpQ,MAAMoP,EAAO9Z,QAGtB6U,EAAI,EAAGA,EAAIiF,EAAO9Z,OAAQ6U,IACR,iBAAdiF,EAAOjF,KAChBiG,EAAQjG,GAAK,IAAI4D,OAAO,OAASqB,EAAOjF,GAAGoE,QAAU,KAAMG,EAAMzc,KAIrE,OAAO,SAAUwW,EAAK4H,GAMpB,IALA,IAAItL,EAAO,GACP3S,EAAOqW,GAAO,CAAC,EAEfhB,GADU4I,GAAQ,CAAC,GACFC,OAASL,EAA2B7T,mBAEhD+N,EAAI,EAAGA,EAAIiF,EAAO9Z,OAAQ6U,IAAK,CACtC,IAAI7N,EAAQ8S,EAAOjF,GAEnB,GAAqB,iBAAV7N,EAAX,CAMA,IACIkR,EADA1U,EAAQ1G,EAAKkK,EAAMxJ,MAGvB,GAAa,MAATgG,EAAe,CACjB,GAAIwD,EAAM6R,SAAU,CAEd7R,EAAM+R,UACRtJ,GAAQzI,EAAM2R,QAGhB,QACF,CACE,MAAM,IAAIsC,UAAU,aAAejU,EAAMxJ,KAAO,kBAEpD,CAEA,GAAI4a,EAAQ5U,GAAZ,CACE,IAAKwD,EAAM8R,OACT,MAAM,IAAImC,UAAU,aAAejU,EAAMxJ,KAAO,kCAAoCuG,KAAKC,UAAUR,GAAS,KAG9G,GAAqB,IAAjBA,EAAMxD,OAAc,CACtB,GAAIgH,EAAM6R,SACR,SAEA,MAAM,IAAIoC,UAAU,aAAejU,EAAMxJ,KAAO,oBAEpD,CAEA,IAAK,IAAI0d,EAAI,EAAGA,EAAI1X,EAAMxD,OAAQkb,IAAK,CAGrC,GAFAhD,EAAU/F,EAAO3O,EAAM0X,KAElBJ,EAAQjG,GAAGsG,KAAKjD,GACnB,MAAM,IAAI+C,UAAU,iBAAmBjU,EAAMxJ,KAAO,eAAiBwJ,EAAMiS,QAAU,oBAAsBlV,KAAKC,UAAUkU,GAAW,KAGvIzI,IAAe,IAANyL,EAAUlU,EAAM2R,OAAS3R,EAAM4R,WAAaV,CACvD,CAGF,KAxBA,CA4BA,GAFAA,EAAUlR,EAAMgS,SA5Eb4B,UA4EuCpX,GA5ExBjH,QAAQ,SAAS,SAAUwV,GAC/C,MAAO,IAAMA,EAAEC,WAAW,GAAGC,SAAS,IAAI4I,aAC5C,IA0EuD1I,EAAO3O,IAErDsX,EAAQjG,GAAGsG,KAAKjD,GACnB,MAAM,IAAI+C,UAAU,aAAejU,EAAMxJ,KAAO,eAAiBwJ,EAAMiS,QAAU,oBAAsBf,EAAU,KAGnHzI,GAAQzI,EAAM2R,OAAST,CARvB,CA1CA,MAHEzI,GAAQzI,CAsDZ,CAEA,OAAOyI,CACT,CACF,CAQA,SAASgL,EAAcrI,GACrB,OAAOA,EAAI7V,QAAQ,6BAA8B,OACnD,CAQA,SAASie,EAAara,GACpB,OAAOA,EAAM5D,QAAQ,gBAAiB,OACxC,CASA,SAAS2c,EAAYkC,EAAIjU,GAEvB,OADAiU,EAAGjU,KAAOA,EACHiU,CACT,CAQA,SAAShC,EAAOzc,GACd,OAAOA,GAAWA,EAAQ0e,UAAY,GAAK,GAC7C,CAuEA,SAAS/B,EAAgBQ,EAAQ3S,EAAMxK,GAChCyb,EAAQjR,KACXxK,EAAkCwK,GAAQxK,EAC1CwK,EAAO,IAUT,IALA,IAAIqH,GAFJ7R,EAAUA,GAAW,CAAC,GAED6R,OACjB8M,GAAsB,IAAhB3e,EAAQ2e,IACd1H,EAAQ,GAGHiB,EAAI,EAAGA,EAAIiF,EAAO9Z,OAAQ6U,IAAK,CACtC,IAAI7N,EAAQ8S,EAAOjF,GAEnB,GAAqB,iBAAV7N,EACT4M,GAAS6G,EAAazT,OACjB,CACL,IAAI2R,EAAS8B,EAAazT,EAAM2R,QAC5B2B,EAAU,MAAQtT,EAAMiS,QAAU,IAEtC9R,EAAKxF,KAAKqF,GAENA,EAAM8R,SACRwB,GAAW,MAAQ3B,EAAS2B,EAAU,MAaxC1G,GANI0G,EAJAtT,EAAM6R,SACH7R,EAAM+R,QAGCJ,EAAS,IAAM2B,EAAU,KAFzB,MAAQ3B,EAAS,IAAM2B,EAAU,MAKnC3B,EAAS,IAAM2B,EAAU,GAIvC,CACF,CAEA,IAAI1B,EAAY6B,EAAa9d,EAAQic,WAAa,KAC9C2C,EAAoB3H,EAAMwG,OAAOxB,EAAU5Y,UAAY4Y,EAkB3D,OAZKpK,IACHoF,GAAS2H,EAAoB3H,EAAMwG,MAAM,GAAIxB,EAAU5Y,QAAU4T,GAAS,MAAQgF,EAAY,WAI9FhF,GADE0H,EACO,IAIA9M,GAAU+M,EAAoB,GAAK,MAAQ3C,EAAY,MAG3DM,EAAW,IAAIT,OAAO,IAAM7E,EAAOwF,EAAMzc,IAAWwK,EAC7D,CAgCAoR,EAAegB,MAAQE,EACvBlB,EAAeiD,QA9Tf,SAAkBpJ,EAAKzV,GACrB,OAAOgd,EAAiBJ,EAAMnH,EAAKzV,GAAUA,EAC/C,EA6TA4b,EAAeoB,iBAAmBD,EAClCnB,EAAee,eAAiBM,EAKhC,IAAI6B,EAAqBlc,OAAOmc,OAAO,MAEvC,SAASC,EACPlM,EACAxS,EACA2e,GAEA3e,EAASA,GAAU,CAAC,EACpB,IACE,IAAI4e,EACFJ,EAAmBhM,KAClBgM,EAAmBhM,GAAQ8I,EAAeiD,QAAQ/L,IAMrD,MAFgC,iBAArBxS,EAAO6e,YAA0B7e,EAAO,GAAKA,EAAO6e,WAExDD,EAAO5e,EAAQ,CAAE+d,QAAQ,GAClC,CAAE,MAAOra,GAKP,MAAO,EACT,CAAE,eAEO1D,EAAO,EAChB,CACF,CAIA,SAAS8e,EACPC,EACA/E,EACAW,EACA9G,GAEA,IAAIuJ,EAAsB,iBAAR2B,EAAmB,CAAEvM,KAAMuM,GAAQA,EAErD,GAAI3B,EAAK4B,YACP,OAAO5B,EACF,GAAIA,EAAK7c,KAAM,CAEpB,IAAIP,GADJod,EAAOzI,EAAO,CAAC,EAAGoK,IACA/e,OAIlB,OAHIA,GAA4B,iBAAXA,IACnBod,EAAKpd,OAAS2U,EAAO,CAAC,EAAG3U,IAEpBod,CACT,CAGA,IAAKA,EAAK5K,MAAQ4K,EAAKpd,QAAUga,EAAS,EACxCoD,EAAOzI,EAAO,CAAC,EAAGyI,IACb4B,aAAc,EACnB,IAAIC,EAAWtK,EAAOA,EAAO,CAAC,EAAGqF,EAAQha,QAASod,EAAKpd,QACvD,GAAIga,EAAQzZ,KACV6c,EAAK7c,KAAOyZ,EAAQzZ,KACpB6c,EAAKpd,OAASif,OACT,GAAIjF,EAAQjD,QAAQhU,OAAQ,CACjC,IAAImc,EAAUlF,EAAQjD,QAAQiD,EAAQjD,QAAQhU,OAAS,GAAGyP,KAC1D4K,EAAK5K,KAAOkM,EAAWQ,EAASD,EAAsBjF,EAAY,KACpE,CAGA,OAAOoD,CACT,CAEA,IAAI+B,EAnhBN,SAAoB3M,GAClB,IAAIoE,EAAO,GACPnB,EAAQ,GAER2J,EAAY5M,EAAK3N,QAAQ,KACzBua,GAAa,IACfxI,EAAOpE,EAAK2K,MAAMiC,GAClB5M,EAAOA,EAAK2K,MAAM,EAAGiC,IAGvB,IAAIC,EAAa7M,EAAK3N,QAAQ,KAM9B,OALIwa,GAAc,IAChB5J,EAAQjD,EAAK2K,MAAMkC,EAAa,GAChC7M,EAAOA,EAAK2K,MAAM,EAAGkC,IAGhB,CACL7M,KAAMA,EACNiD,MAAOA,EACPmB,KAAMA,EAEV,CA8fmB0I,CAAUlC,EAAK5K,MAAQ,IACpC+M,EAAYvF,GAAWA,EAAQxH,MAAS,IACxCA,EAAO2M,EAAW3M,KAClBiI,EAAY0E,EAAW3M,KAAM+M,EAAU5E,GAAUyC,EAAKzC,QACtD4E,EAEA9J,EAv9BN,SACEA,EACA+J,EACAC,QAEoB,IAAfD,IAAwBA,EAAa,CAAC,GAE3C,IACIE,EADApD,EAAQmD,GAAejK,EAE3B,IACEkK,EAAcpD,EAAM7G,GAAS,GAC/B,CAAE,MAAO/R,GAEPgc,EAAc,CAAC,CACjB,CACA,IAAK,IAAIpZ,KAAOkZ,EAAY,CAC1B,IAAIjZ,EAAQiZ,EAAWlZ,GACvBoZ,EAAYpZ,GAAOmH,MAAMC,QAAQnH,GAC7BA,EAAMpE,IAAIoT,GACVA,EAAoBhP,EAC1B,CACA,OAAOmZ,CACT,CAi8BcC,CACVR,EAAW1J,MACX2H,EAAK3H,MACL5B,GAAUA,EAAOnU,QAAQ8V,YAGvBoB,EAAOwG,EAAKxG,MAAQuI,EAAWvI,KAKnC,OAJIA,GAA2B,MAAnBA,EAAKiE,OAAO,KACtBjE,EAAO,IAAMA,GAGR,CACLoI,aAAa,EACbxM,KAAMA,EACNiD,MAAOA,EACPmB,KAAMA,EAEV,CAKA,IA4NIgJ,EAzNAC,EAAO,WAAa,EAMpBC,EAAO,CACTvf,KAAM,aACNuS,MAAO,CACLiN,GAAI,CACFvH,KAbQ,CAACpR,OAAQ9E,QAcjB0d,UAAU,GAEZC,IAAK,CACHzH,KAAMpR,OACNsL,QAAS,KAEXwN,OAAQC,QACRC,MAAOD,QACPE,UAAWF,QACXxF,OAAQwF,QACR7gB,QAAS6gB,QACTG,YAAalZ,OACbmZ,iBAAkBnZ,OAClBoZ,iBAAkB,CAChBhI,KAAMpR,OACNsL,QAAS,QAEX+N,MAAO,CACLjI,KA/BW,CAACpR,OAAQqG,OAgCpBiF,QAAS,UAGb6B,OAAQ,SAAiBC,GACvB,IAAIkM,EAAWrb,KAEXwO,EAASxO,KAAKsb,QACd3G,EAAU3U,KAAKuT,OACfxB,EAAMvD,EAAO+M,QACfvb,KAAK0a,GACL/F,EACA3U,KAAKsV,QAEHpL,EAAW6H,EAAI7H,SACfoH,EAAQS,EAAIT,MACZkK,EAAOzJ,EAAIyJ,KAEXC,EAAU,CAAC,EACXC,EAAoBlN,EAAOnU,QAAQ8T,gBACnCwN,EAAyBnN,EAAOnU,QAAQuhB,qBAExCC,EACmB,MAArBH,EAA4B,qBAAuBA,EACjDI,EACwB,MAA1BH,EACI,2BACAA,EACFV,EACkB,MAApBjb,KAAKib,YAAsBY,EAAsB7b,KAAKib,YACpDC,EACuB,MAAzBlb,KAAKkb,iBACDY,EACA9b,KAAKkb,iBAEPa,EAAgBzK,EAAMF,eACtBF,EAAY,KAAMuI,EAAkBnI,EAAMF,gBAAiB,KAAM5C,GACjE8C,EAEJmK,EAAQP,GAAoBjJ,EAAY0C,EAASoH,EAAe/b,KAAKgb,WACrES,EAAQR,GAAejb,KAAK+a,OAAS/a,KAAKgb,UACtCS,EAAQP,GAn2BhB,SAA0BvG,EAASqH,GACjC,OAGQ,IAFNrH,EAAQxH,KAAKlT,QAAQgX,EAAiB,KAAKzR,QACzCwc,EAAO7O,KAAKlT,QAAQgX,EAAiB,SAErC+K,EAAOzK,MAAQoD,EAAQpD,OAASyK,EAAOzK,OAK7C,SAAwBoD,EAASqH,GAC/B,IAAK,IAAI/a,KAAO+a,EACd,KAAM/a,KAAO0T,GACX,OAAO,EAGX,OAAO,CACT,CAXIsH,CAActH,EAAQvE,MAAO4L,EAAO5L,MAExC,CA41BQ8L,CAAgBvH,EAASoH,GAE7B,IAAIZ,EAAmBM,EAAQP,GAAoBlb,KAAKmb,iBAAmB,KAEvEgB,EAAU,SAAU9d,GAClB+d,EAAW/d,KACTgd,EAASphB,QACXuU,EAAOvU,QAAQiQ,EAAUsQ,GAEzBhM,EAAOnP,KAAK6K,EAAUsQ,GAG5B,EAEI6B,EAAK,CAAEC,MAAOF,GACdhU,MAAMC,QAAQrI,KAAKob,OACrBpb,KAAKob,MAAMza,SAAQ,SAAUtC,GAC3Bge,EAAGhe,GAAK8d,CACV,IAEAE,EAAGrc,KAAKob,OAASe,EAGnB,IAAI3hB,EAAO,CAAE+hB,MAAOd,GAEhBe,GACDxc,KAAKyc,aAAaC,YACnB1c,KAAKyc,aAAapP,SAClBrN,KAAKyc,aAAapP,QAAQ,CACxBmO,KAAMA,EACNlK,MAAOA,EACPqL,SAAUR,EACVS,SAAUnB,EAAQR,GAClB4B,cAAepB,EAAQP,KAG3B,GAAIsB,EAAY,CAKd,GAA0B,IAAtBA,EAAW9e,OACb,OAAO8e,EAAW,GACb,GAAIA,EAAW9e,OAAS,IAAM8e,EAAW9e,OAO9C,OAA6B,IAAtB8e,EAAW9e,OAAeyR,IAAMA,EAAE,OAAQ,CAAC,EAAGqN,EAEzD,CAmBA,GAAiB,MAAbxc,KAAK4a,IACPpgB,EAAK6hB,GAAKA,EACV7hB,EAAKyS,MAAQ,CAAEuO,KAAMA,EAAM,eAAgBL,OACtC,CAEL,IAAI1Y,EAAIqa,EAAW9c,KAAK+c,OAAO1P,SAC/B,GAAI5K,EAAG,CAELA,EAAEua,UAAW,EACb,IAAIC,EAASxa,EAAEjI,KAAO8U,EAAO,CAAC,EAAG7M,EAAEjI,MAGnC,IAAK,IAAI4gB,KAFT6B,EAAMZ,GAAKY,EAAMZ,IAAM,CAAC,EAENY,EAAMZ,GAAI,CAC1B,IAAIa,EAAYD,EAAMZ,GAAGjB,GACrBA,KAASiB,IACXY,EAAMZ,GAAGjB,GAAShT,MAAMC,QAAQ6U,GAAaA,EAAY,CAACA,GAE9D,CAEA,IAAK,IAAIC,KAAWd,EACdc,KAAWF,EAAMZ,GAEnBY,EAAMZ,GAAGc,GAAS9d,KAAKgd,EAAGc,IAE1BF,EAAMZ,GAAGc,GAAWhB,EAIxB,IAAIiB,EAAU3a,EAAEjI,KAAKyS,MAAQqC,EAAO,CAAC,EAAG7M,EAAEjI,KAAKyS,OAC/CmQ,EAAO5B,KAAOA,EACd4B,EAAO,gBAAkBjC,CAC3B,MAEE3gB,EAAK6hB,GAAKA,CAEd,CAEA,OAAOlN,EAAEnP,KAAK4a,IAAKpgB,EAAMwF,KAAK+c,OAAO1P,QACvC,GAGF,SAAS+O,EAAY/d,GAEnB,KAAIA,EAAEgf,SAAWhf,EAAEif,QAAUjf,EAAEkf,SAAWlf,EAAEmf,UAExCnf,EAAEof,uBAEW7S,IAAbvM,EAAEqf,QAAqC,IAAbrf,EAAEqf,QAAhC,CAEA,GAAIrf,EAAEsf,eAAiBtf,EAAEsf,cAAcC,aAAc,CACnD,IAAI5B,EAAS3d,EAAEsf,cAAcC,aAAa,UAC1C,GAAI,cAAc/E,KAAKmD,GAAW,MACpC,CAKA,OAHI3d,EAAEwf,gBACJxf,EAAEwf,kBAEG,CAVgD,CAWzD,CAEA,SAASf,EAAYpP,GACnB,GAAIA,EAEF,IADA,IAAIoQ,EACKvL,EAAI,EAAGA,EAAI7E,EAAShQ,OAAQ6U,IAAK,CAExC,GAAkB,OADlBuL,EAAQpQ,EAAS6E,IACPqI,IACR,OAAOkD,EAET,GAAIA,EAAMpQ,WAAaoQ,EAAQhB,EAAWgB,EAAMpQ,WAC9C,OAAOoQ,CAEX,CAEJ,CAsDA,IAAIC,EAA8B,oBAAX9T,OAIvB,SAAS+T,EACP5P,EACA6P,EACAC,EACAC,EACAC,GAGA,IAAIC,EAAWJ,GAAe,GAE1BK,EAAUJ,GAAcjhB,OAAOmc,OAAO,MAEtCmF,EAAUJ,GAAclhB,OAAOmc,OAAO,MAE1ChL,EAAOzN,SAAQ,SAAU2Q,GACvBkN,EAAeH,EAAUC,EAASC,EAASjN,EAAO8M,EACpD,IAGA,IAAK,IAAI7L,EAAI,EAAGkM,EAAIJ,EAAS3gB,OAAQ6U,EAAIkM,EAAGlM,IACtB,MAAhB8L,EAAS9L,KACX8L,EAAShf,KAAKgf,EAASvf,OAAOyT,EAAG,GAAG,IACpCkM,IACAlM,KAgBJ,MAAO,CACL8L,SAAUA,EACVC,QAASA,EACTC,QAASA,EAEb,CAEA,SAASC,EACPH,EACAC,EACAC,EACAjN,EACAQ,EACA4M,GAEA,IAAIvR,EAAOmE,EAAMnE,KACbjS,EAAOoW,EAAMpW,KAmBbyjB,EACFrN,EAAMqN,qBAAuB,CAAC,EAC5BC,EA2HN,SACEzR,EACA2E,EACA5F,GAGA,OADKA,IAAUiB,EAAOA,EAAKlT,QAAQ,MAAO,KAC1B,MAAZkT,EAAK,IACK,MAAV2E,EAD0B3E,EAEvB0I,EAAY/D,EAAW,KAAI,IAAM3E,EAC1C,CApIuB0R,CAAc1R,EAAM2E,EAAQ6M,EAAoBzS,QAElC,kBAAxBoF,EAAMwN,gBACfH,EAAoB5F,UAAYzH,EAAMwN,eAGxC,IAAI3N,EAAS,CACXhE,KAAMyR,EACNG,MAAOC,EAAkBJ,EAAgBD,GACzCvR,WAAYkE,EAAMlE,YAAc,CAAEC,QAASiE,EAAMgD,WACjD2K,MAAO3N,EAAM2N,MACc,iBAAhB3N,EAAM2N,MACX,CAAC3N,EAAM2N,OACP3N,EAAM2N,MACR,GACJtM,UAAW,CAAC,EACZG,WAAY,CAAC,EACb5X,KAAMA,EACN4W,OAAQA,EACR4M,QAASA,EACT/Q,SAAU2D,EAAM3D,SAChBuR,YAAa5N,EAAM4N,YACnBvT,KAAM2F,EAAM3F,MAAQ,CAAC,EACrB8B,MACiB,MAAf6D,EAAM7D,MACF,CAAC,EACD6D,EAAMlE,WACJkE,EAAM7D,MACN,CAAEJ,QAASiE,EAAM7D,QAoC3B,GAjCI6D,EAAM5D,UAoBR4D,EAAM5D,SAAS/M,SAAQ,SAAUmd,GAC/B,IAAIqB,EAAeT,EACf7I,EAAW6I,EAAU,IAAOZ,EAAU,WACtClT,EACJ4T,EAAeH,EAAUC,EAASC,EAAST,EAAO3M,EAAQgO,EAC5D,IAGGb,EAAQnN,EAAOhE,QAClBkR,EAAShf,KAAK8R,EAAOhE,MACrBmR,EAAQnN,EAAOhE,MAAQgE,QAGLvG,IAAhB0G,EAAM2N,MAER,IADA,IAAIG,EAAUhX,MAAMC,QAAQiJ,EAAM2N,OAAS3N,EAAM2N,MAAQ,CAAC3N,EAAM2N,OACvD1M,EAAI,EAAGA,EAAI6M,EAAQ1hB,SAAU6U,EAAG,CAWvC,IAAI8M,EAAa,CACflS,KAXUiS,EAAQ7M,GAYlB7E,SAAU4D,EAAM5D,UAElB8Q,EACEH,EACAC,EACAC,EACAc,EACAvN,EACAX,EAAOhE,MAAQ,IAEnB,CAGEjS,IACGqjB,EAAQrjB,KACXqjB,EAAQrjB,GAAQiW,GAStB,CAEA,SAAS6N,EACP7R,EACAwR,GAaA,OAXY1I,EAAe9I,EAAM,GAAIwR,EAYvC,CAiBA,SAASW,EACPlR,EACAI,GAEA,IAAIuD,EAAMiM,EAAe5P,GACrBiQ,EAAWtM,EAAIsM,SACfC,EAAUvM,EAAIuM,QACdC,EAAUxM,EAAIwM,QA4BlB,SAASnI,EACPsD,EACA6F,EACAnO,GAEA,IAAIlH,EAAWuP,EAAkBC,EAAK6F,GAAc,EAAO/Q,GACvDtT,EAAOgP,EAAShP,KAEpB,GAAIA,EAAM,CACR,IAAIiW,EAASoN,EAAQrjB,GAIrB,IAAKiW,EAAU,OAAOqO,EAAa,KAAMtV,GACzC,IAAIuV,EAAatO,EAAO4N,MAAMla,KAC3B1H,QAAO,SAAU8D,GAAO,OAAQA,EAAIsV,QAAU,IAC9CzZ,KAAI,SAAUmE,GAAO,OAAOA,EAAI/F,IAAM,IAMzC,GAJ+B,iBAApBgP,EAASvP,SAClBuP,EAASvP,OAAS,CAAC,GAGjB4kB,GAA+C,iBAAxBA,EAAa5kB,OACtC,IAAK,IAAIsG,KAAOse,EAAa5kB,SACrBsG,KAAOiJ,EAASvP,SAAW8kB,EAAWjgB,QAAQyB,IAAQ,IAC1DiJ,EAASvP,OAAOsG,GAAOse,EAAa5kB,OAAOsG,IAMjD,OADAiJ,EAASiD,KAAOkM,EAAWlI,EAAOhE,KAAMjD,EAASvP,QAC1C6kB,EAAarO,EAAQjH,EAAUkH,EACxC,CAAO,GAAIlH,EAASiD,KAAM,CACxBjD,EAASvP,OAAS,CAAC,EACnB,IAAK,IAAI4X,EAAI,EAAGA,EAAI8L,EAAS3gB,OAAQ6U,IAAK,CACxC,IAAIpF,EAAOkR,EAAS9L,GAChBmN,EAAWpB,EAAQnR,GACvB,GAAIwS,EAAWD,EAASX,MAAO7U,EAASiD,KAAMjD,EAASvP,QACrD,OAAO6kB,EAAaE,EAAUxV,EAAUkH,EAE5C,CACF,CAEA,OAAOoO,EAAa,KAAMtV,EAC5B,CAsFA,SAASsV,EACPrO,EACAjH,EACAkH,GAEA,OAAID,GAAUA,EAAOxD,SAzFvB,SACEwD,EACAjH,GAEA,IAAI0V,EAAmBzO,EAAOxD,SAC1BA,EAAuC,mBAArBiS,EAClBA,EAAiB1O,EAAYC,EAAQjH,EAAU,KAAMsE,IACrDoR,EAMJ,GAJwB,iBAAbjS,IACTA,EAAW,CAAER,KAAMQ,KAGhBA,GAAgC,iBAAbA,EAMtB,OAAO6R,EAAa,KAAMtV,GAG5B,IAAI4O,EAAKnL,EACLzS,EAAO4d,EAAG5d,KACViS,EAAO2L,EAAG3L,KACViD,EAAQlG,EAASkG,MACjBmB,EAAOrH,EAASqH,KAChB5W,EAASuP,EAASvP,OAKtB,GAJAyV,EAAQ0I,EAAG+G,eAAe,SAAW/G,EAAG1I,MAAQA,EAChDmB,EAAOuH,EAAG+G,eAAe,QAAU/G,EAAGvH,KAAOA,EAC7C5W,EAASme,EAAG+G,eAAe,UAAY/G,EAAGne,OAASA,EAE/CO,EAMF,OAJmBqjB,EAAQrjB,GAIpBkb,EAAM,CACXuD,aAAa,EACbze,KAAMA,EACNkV,MAAOA,EACPmB,KAAMA,EACN5W,OAAQA,QACPiQ,EAAWV,GACT,GAAIiD,EAAM,CAEf,IAAI0M,EAmFV,SAA4B1M,EAAMgE,GAChC,OAAOiE,EAAYjI,EAAMgE,EAAOW,OAASX,EAAOW,OAAO3E,KAAO,KAAK,EACrE,CArFoB2S,CAAkB3S,EAAMgE,GAItC,OAAOiF,EAAM,CACXuD,aAAa,EACbxM,KAJiBkM,EAAWQ,EAASlf,GAKrCyV,MAAOA,EACPmB,KAAMA,QACL3G,EAAWV,EAChB,CAIE,OAAOsV,EAAa,KAAMtV,EAE9B,CA2BWyD,CAASwD,EAAQC,GAAkBlH,GAExCiH,GAAUA,EAAOuN,QA3BvB,SACEvN,EACAjH,EACAwU,GAEA,IACIqB,EAAe3J,EAAM,CACvBuD,aAAa,EACbxM,KAHgBkM,EAAWqF,EAASxU,EAASvP,UAK/C,GAAIolB,EAAc,CAChB,IAAIrO,EAAUqO,EAAarO,QACvBsO,EAAgBtO,EAAQA,EAAQhU,OAAS,GAE7C,OADAwM,EAASvP,OAASolB,EAAaplB,OACxB6kB,EAAaQ,EAAe9V,EACrC,CACA,OAAOsV,EAAa,KAAMtV,EAC5B,CAWW+U,CAAM9N,EAAQjH,EAAUiH,EAAOuN,SAEjCxN,EAAYC,EAAQjH,EAAUkH,EAAgB5C,EACvD,CAEA,MAAO,CACL4H,MAAOA,EACP6J,SAxKF,SAAmBC,EAAe5O,GAChC,IAAIQ,EAAmC,iBAAlBoO,EAA8B3B,EAAQ2B,QAAiBtV,EAE5EoT,EAAe,CAAC1M,GAAS4O,GAAgB7B,EAAUC,EAASC,EAASzM,GAGjEA,GAAUA,EAAOmN,MAAMvhB,QACzBsgB,EAEElM,EAAOmN,MAAMniB,KAAI,SAAUmiB,GAAS,MAAO,CAAG9R,KAAM8R,EAAOvR,SAAU,CAAC4D,GAAW,IACjF+M,EACAC,EACAC,EACAzM,EAGN,EAyJEqO,UAvJF,WACE,OAAO9B,EAASvhB,KAAI,SAAUqQ,GAAQ,OAAOmR,EAAQnR,EAAO,GAC9D,EAsJEiT,UA9KF,SAAoBhS,GAClB4P,EAAe5P,EAAQiQ,EAAUC,EAASC,EAC5C,EA8KF,CAEA,SAASoB,EACPZ,EACA5R,EACAxS,GAEA,IAAIid,EAAIzK,EAAKiJ,MAAM2I,GAEnB,IAAKnH,EACH,OAAO,EACF,IAAKjd,EACV,OAAO,EAGT,IAAK,IAAI4X,EAAI,EAAG8N,EAAMzI,EAAEla,OAAQ6U,EAAI8N,IAAO9N,EAAG,CAC5C,IAAItR,EAAM8d,EAAMla,KAAK0N,EAAI,GACrBtR,IAEFtG,EAAOsG,EAAI/F,MAAQ,aAA+B,iBAAT0c,EAAErF,GAAkBxC,EAAO6H,EAAErF,IAAMqF,EAAErF,GAElF,CAEA,OAAO,CACT,CASA,IAAI+N,GACFvC,GAAa9T,OAAOsW,aAAetW,OAAOsW,YAAYC,IAClDvW,OAAOsW,YACPE,KAEN,SAASC,KACP,OAAOJ,GAAKE,MAAMG,QAAQ,EAC5B,CAEA,IAAIC,GAAOF,KAEX,SAASG,KACP,OAAOD,EACT,CAEA,SAASE,GAAa7f,GACpB,OAAQ2f,GAAO3f,CACjB,CAIA,IAAI8f,GAAgB9jB,OAAOmc,OAAO,MAElC,SAAS4H,KAEH,sBAAuB/W,OAAOgX,UAChChX,OAAOgX,QAAQC,kBAAoB,UAOrC,IAAIC,EAAkBlX,OAAOC,SAASkX,SAAW,KAAOnX,OAAOC,SAASmX,KACpEC,EAAerX,OAAOC,SAASsR,KAAKvhB,QAAQknB,EAAiB,IAE7DI,EAAYjS,EAAO,CAAC,EAAGrF,OAAOgX,QAAQ1lB,OAI1C,OAHAgmB,EAAUtgB,IAAM4f,KAChB5W,OAAOgX,QAAQO,aAAaD,EAAW,GAAID,GAC3CrX,OAAOwX,iBAAiB,WAAYC,IAC7B,WACLzX,OAAO0X,oBAAoB,WAAYD,GACzC,CACF,CAEA,SAASE,GACPpT,EACAkM,EACAmH,EACAC,GAEA,GAAKtT,EAAOjG,IAAZ,CAIA,IAAIwZ,EAAWvT,EAAOnU,QAAQ2nB,eACzBD,GASLvT,EAAOjG,IAAI0Z,WAAU,WACnB,IAAIC,EA6CR,WACE,IAAIjhB,EAAM4f,KACV,GAAI5f,EACF,OAAO8f,GAAc9f,EAEzB,CAlDmBkhB,GACXC,EAAeL,EAAS/L,KAC1BxH,EACAkM,EACAmH,EACAC,EAAQI,EAAW,MAGhBE,IAI4B,mBAAtBA,EAAazd,KACtByd,EACGzd,MAAK,SAAUyd,GACdC,GAAiB,EAAgBH,EACnC,IACClgB,OAAM,SAAUiO,GAIjB,IAEFoS,GAAiBD,EAAcF,GAEnC,GAtCA,CAuCF,CAEA,SAASI,KACP,IAAIrhB,EAAM4f,KACN5f,IACF8f,GAAc9f,GAAO,CACnB+P,EAAG/G,OAAOsY,YACVC,EAAGvY,OAAOwY,aAGhB,CAEA,SAASf,GAAgBrjB,GACvBikB,KACIjkB,EAAE9C,OAAS8C,EAAE9C,MAAM0F,KACrB6f,GAAYziB,EAAE9C,MAAM0F,IAExB,CAmBA,SAASyhB,GAAiB7R,GACxB,OAAO8R,GAAS9R,EAAIG,IAAM2R,GAAS9R,EAAI2R,EACzC,CAEA,SAASI,GAAmB/R,GAC1B,MAAO,CACLG,EAAG2R,GAAS9R,EAAIG,GAAKH,EAAIG,EAAI/G,OAAOsY,YACpCC,EAAGG,GAAS9R,EAAI2R,GAAK3R,EAAI2R,EAAIvY,OAAOwY,YAExC,CASA,SAASE,GAAUE,GACjB,MAAoB,iBAANA,CAChB,CAEA,IAAIC,GAAyB,OAE7B,SAAST,GAAkBD,EAAcF,GACvC,IAdwBrR,EAcpBkS,EAAmC,iBAAjBX,EACtB,GAAIW,GAA6C,iBAA1BX,EAAaY,SAAuB,CAGzD,IAAI3T,EAAKyT,GAAuBjK,KAAKuJ,EAAaY,UAC9CC,SAASC,eAAed,EAAaY,SAASlL,MAAM,IACpDmL,SAASE,cAAcf,EAAaY,UAExC,GAAI3T,EAAI,CACN,IAAIzL,EACFwe,EAAaxe,QAAyC,iBAAxBwe,EAAaxe,OACvCwe,EAAaxe,OACb,CAAC,EAEPse,EAjDN,SAA6B7S,EAAIzL,GAC/B,IACIwf,EADQH,SAASI,gBACDC,wBAChBC,EAASlU,EAAGiU,wBAChB,MAAO,CACLtS,EAAGuS,EAAOC,KAAOJ,EAAQI,KAAO5f,EAAOoN,EACvCwR,EAAGe,EAAOE,IAAML,EAAQK,IAAM7f,EAAO4e,EAEzC,CAyCiBkB,CAAmBrU,EAD9BzL,EA1BG,CACLoN,EAAG2R,IAFmB9R,EA2BKjN,GAzBXoN,GAAKH,EAAIG,EAAI,EAC7BwR,EAAGG,GAAS9R,EAAI2R,GAAK3R,EAAI2R,EAAI,GA0B7B,MAAWE,GAAgBN,KACzBF,EAAWU,GAAkBR,GAEjC,MAAWW,GAAYL,GAAgBN,KACrCF,EAAWU,GAAkBR,IAG3BF,IAEE,mBAAoBe,SAASI,gBAAgBM,MAC/C1Z,OAAO2Z,SAAS,CACdJ,KAAMtB,EAASlR,EACfyS,IAAKvB,EAASM,EAEdT,SAAUK,EAAaL,WAGzB9X,OAAO2Z,SAAS1B,EAASlR,EAAGkR,EAASM,GAG3C,CAIA,IAGQqB,GAHJC,GACF/F,KAKmC,KAH7B8F,GAAK5Z,OAAO8Z,UAAUC,WAGpBxkB,QAAQ,gBAAuD,IAA/BqkB,GAAGrkB,QAAQ,iBACd,IAAjCqkB,GAAGrkB,QAAQ,mBACe,IAA1BqkB,GAAGrkB,QAAQ,YACsB,IAAjCqkB,GAAGrkB,QAAQ,mBAKNyK,OAAOgX,SAA+C,mBAA7BhX,OAAOgX,QAAQgD,UAGnD,SAASA,GAAWjqB,EAAKC,GACvBqoB,KAGA,IAAIrB,EAAUhX,OAAOgX,QACrB,IACE,GAAIhnB,EAAS,CAEX,IAAIsnB,EAAYjS,EAAO,CAAC,EAAG2R,EAAQ1lB,OACnCgmB,EAAUtgB,IAAM4f,KAChBI,EAAQO,aAAaD,EAAW,GAAIvnB,EACtC,MACEinB,EAAQgD,UAAU,CAAEhjB,IAAK6f,GAAYJ,OAAkB,GAAI1mB,EAE/D,CAAE,MAAOqE,GACP4L,OAAOC,SAASjQ,EAAU,UAAY,UAAUD,EAClD,CACF,CAEA,SAASwnB,GAAcxnB,GACrBiqB,GAAUjqB,GAAK,EACjB,CAGA,IAAIkqB,GAAwB,CAC1BC,WAAY,EACZC,QAAS,EACTC,UAAW,EACXC,WAAY,IA0Bd,SAASC,GAAgC1C,EAAMnH,GAC7C,OAAO8J,GACL3C,EACAnH,EACAwJ,GAAsBG,UACrB,8BAAkCxC,EAAa,SAAI,SAAcnH,EAAW,SAAI,2BAErF,CAWA,SAAS8J,GAAmB3C,EAAMnH,EAAIvH,EAAMhM,GAC1C,IAAI5I,EAAQ,IAAIyI,MAAMG,GAMtB,OALA5I,EAAMkmB,WAAY,EAClBlmB,EAAMsjB,KAAOA,EACbtjB,EAAMmc,GAAKA,EACXnc,EAAM4U,KAAOA,EAEN5U,CACT,CAEA,IAAImmB,GAAkB,CAAC,SAAU,QAAS,QAY1C,SAASC,GAAS1U,GAChB,OAAOhT,OAAO4R,UAAUc,SAASqG,KAAK/F,GAAKzQ,QAAQ,UAAY,CACjE,CAEA,SAASolB,GAAqB3U,EAAK4U,GACjC,OACEF,GAAQ1U,IACRA,EAAIwU,YACU,MAAbI,GAAqB5U,EAAIkD,OAAS0R,EAEvC,CAIA,SAASC,GAAUC,EAAOC,EAAIC,GAC5B,IAAIC,EAAO,SAAUzN,GACfA,GAASsN,EAAMrnB,OACjBunB,IAEIF,EAAMtN,GACRuN,EAAGD,EAAMtN,IAAQ,WACfyN,EAAKzN,EAAQ,EACf,IAEAyN,EAAKzN,EAAQ,EAGnB,EACAyN,EAAK,EACP,CAsEA,SAASC,GACPzT,EACAsT,GAEA,OAAOI,GAAQ1T,EAAQ5U,KAAI,SAAU8a,GACnC,OAAO3a,OAAO4H,KAAK+S,EAAExK,YAAYtQ,KAAI,SAAUmE,GAAO,OAAO+jB,EAC3DpN,EAAExK,WAAWnM,GACb2W,EAAEjF,UAAU1R,GACZ2W,EAAG3W,EACF,GACL,IACF,CAEA,SAASmkB,GAASrP,GAChB,OAAO3N,MAAMyG,UAAUvR,OAAO+nB,MAAM,GAAItP,EAC1C,CAEA,IAAIuP,GACgB,mBAAXC,QACuB,iBAAvBA,OAAOC,YAUhB,SAASC,GAAMT,GACb,IAAIU,GAAS,EACb,OAAO,WAEL,IADA,IAAIC,EAAO,GAAItF,EAAM1V,UAAUjN,OACvB2iB,KAAQsF,EAAMtF,GAAQ1V,UAAW0V,GAEzC,IAAIqF,EAEJ,OADAA,GAAS,EACFV,EAAGK,MAAMrlB,KAAM2lB,EACxB,CACF,CAIA,IAAIC,GAAU,SAAkBpX,EAAQN,GACtClO,KAAKwO,OAASA,EACdxO,KAAKkO,KAgOP,SAAwBA,GACtB,IAAKA,EACH,GAAI6P,EAAW,CAEb,IAAI8H,EAAS5C,SAASE,cAAc,QAGpCjV,GAFAA,EAAQ2X,GAAUA,EAAOjI,aAAa,SAAY,KAEtC3jB,QAAQ,qBAAsB,GAC5C,MACEiU,EAAO,IAQX,MAJuB,MAAnBA,EAAKsH,OAAO,KACdtH,EAAO,IAAMA,GAGRA,EAAKjU,QAAQ,MAAO,GAC7B,CAlPc6rB,CAAc5X,GAE1BlO,KAAK2U,QAAU9C,EACf7R,KAAK+lB,QAAU,KACf/lB,KAAKgmB,OAAQ,EACbhmB,KAAKimB,SAAW,GAChBjmB,KAAKkmB,cAAgB,GACrBlmB,KAAKmmB,SAAW,GAChBnmB,KAAKomB,UAAY,EACnB,EA6PA,SAASC,GACPC,EACAprB,EACAqrB,EACAC,GAEA,IAAIC,EAAStB,GAAkBmB,GAAS,SAAUI,EAAK9T,EAAUwD,EAAOnV,GACtE,IAAI0lB,EAUR,SACED,EACAzlB,GAMA,MAJmB,mBAARylB,IAETA,EAAMnM,EAAKjL,OAAOoX,IAEbA,EAAIrsB,QAAQ4G,EACrB,CAnBgB2lB,CAAaF,EAAKxrB,GAC9B,GAAIyrB,EACF,OAAOve,MAAMC,QAAQse,GACjBA,EAAM7pB,KAAI,SAAU6pB,GAAS,OAAOJ,EAAKI,EAAO/T,EAAUwD,EAAOnV,EAAM,IACvEslB,EAAKI,EAAO/T,EAAUwD,EAAOnV,EAErC,IACA,OAAOmkB,GAAQoB,EAAUC,EAAOD,UAAYC,EAC9C,CAqBA,SAASI,GAAWF,EAAO/T,GACzB,GAAIA,EACF,OAAO,WACL,OAAO+T,EAAMtB,MAAMzS,EAAUjI,UAC/B,CAEJ,CArSAib,GAAQ/W,UAAUiY,OAAS,SAAiB7B,GAC1CjlB,KAAKilB,GAAKA,CACZ,EAEAW,GAAQ/W,UAAUkY,QAAU,SAAkB9B,EAAI+B,GAC5ChnB,KAAKgmB,MACPf,KAEAjlB,KAAKimB,SAAS5mB,KAAK4lB,GACf+B,GACFhnB,KAAKkmB,cAAc7mB,KAAK2nB,GAG9B,EAEApB,GAAQ/W,UAAUoY,QAAU,SAAkBD,GAC5ChnB,KAAKmmB,SAAS9mB,KAAK2nB,EACrB,EAEApB,GAAQ/W,UAAUqY,aAAe,SAC/Bhd,EACAid,EACAC,GAEE,IAEE9V,EAFE+J,EAAWrb,KAIjB,IACEsR,EAAQtR,KAAKwO,OAAO4H,MAAMlM,EAAUlK,KAAK2U,QAC3C,CAAE,MAAOtW,GAKP,MAJA2B,KAAKmmB,SAASxlB,SAAQ,SAAUskB,GAC9BA,EAAG5mB,EACL,IAEMA,CACR,CACA,IAAIgpB,EAAOrnB,KAAK2U,QAChB3U,KAAKsnB,kBACHhW,GACA,WACE+J,EAASkM,YAAYjW,GACrB6V,GAAcA,EAAW7V,GACzB+J,EAASmM,YACTnM,EAAS7M,OAAOiZ,WAAW9mB,SAAQ,SAAUiU,GAC3CA,GAAQA,EAAKtD,EAAO+V,EACtB,IAGKhM,EAAS2K,QACZ3K,EAAS2K,OAAQ,EACjB3K,EAAS4K,SAAStlB,SAAQ,SAAUskB,GAClCA,EAAG3T,EACL,IAEJ,IACA,SAAUrB,GACJmX,GACFA,EAAQnX,GAENA,IAAQoL,EAAS2K,QAKdpB,GAAoB3U,EAAKiU,GAAsBC,aAAekD,IAASxV,IAC1EwJ,EAAS2K,OAAQ,EACjB3K,EAAS6K,cAAcvlB,SAAQ,SAAUskB,GACvCA,EAAGhV,EACL,KAGN,GAEJ,EAEA2V,GAAQ/W,UAAUyY,kBAAoB,SAA4BhW,EAAO6V,EAAYC,GACjF,IAAI/L,EAAWrb,KAEb2U,EAAU3U,KAAK2U,QACnB3U,KAAK+lB,QAAUzU,EACf,IAhSwCuQ,EACpCtjB,EA+RAmpB,EAAQ,SAAUzX,IAIf2U,GAAoB3U,IAAQ0U,GAAQ1U,KACnCoL,EAAS8K,SAASzoB,OACpB2d,EAAS8K,SAASxlB,SAAQ,SAAUskB,GAClCA,EAAGhV,EACL,IAKA3R,EAAQC,MAAM0R,IAGlBmX,GAAWA,EAAQnX,EACrB,EACI0X,EAAiBrW,EAAMI,QAAQhU,OAAS,EACxCkqB,EAAmBjT,EAAQjD,QAAQhU,OAAS,EAChD,GACEuU,EAAYX,EAAOqD,IAEnBgT,IAAmBC,GACnBtW,EAAMI,QAAQiW,KAAoBhT,EAAQjD,QAAQkW,GAMlD,OAJA5nB,KAAKwnB,YACDlW,EAAMC,MACRqQ,GAAa5hB,KAAKwO,OAAQmG,EAASrD,GAAO,GAErCoW,IA7TLnpB,EAAQimB,GAD4B3C,EA8TOlN,EAASrD,EA1TtD4S,GAAsBI,WACrB,sDAA0DzC,EAAa,SAAI,OAGxE3mB,KAAO,uBACNqD,IAwTP,IA5O+BmT,EA4O3BK,EAuHN,SACE4C,EACAoD,GAEA,IAAIxF,EACAsV,EAAMC,KAAKD,IAAIlT,EAAQjX,OAAQqa,EAAKra,QACxC,IAAK6U,EAAI,EAAGA,EAAIsV,GACVlT,EAAQpC,KAAOwF,EAAKxF,GADLA,KAKrB,MAAO,CACLwV,QAAShQ,EAAKD,MAAM,EAAGvF,GACvByV,UAAWjQ,EAAKD,MAAMvF,GACtB0V,YAAatT,EAAQmD,MAAMvF,GAE/B,CAvIY2V,CACRloB,KAAK2U,QAAQjD,QACbJ,EAAMI,SAEFqW,EAAUhW,EAAIgW,QACdE,EAAclW,EAAIkW,YAClBD,EAAYjW,EAAIiW,UAElBjD,EAAQ,GAAGznB,OA6JjB,SAA6B2qB,GAC3B,OAAO5B,GAAc4B,EAAa,mBAAoBpB,IAAW,EACnE,CA7JIsB,CAAmBF,GAEnBjoB,KAAKwO,OAAO4Z,YA6JhB,SAA6BL,GAC3B,OAAO1B,GAAc0B,EAAS,oBAAqBlB,GACrD,CA7JIwB,CAAmBN,GAEnBC,EAAUlrB,KAAI,SAAU8a,GAAK,OAAOA,EAAEsH,WAAa,KA5PtBxN,EA8PNsW,EA7PlB,SAAUtN,EAAImH,EAAM9J,GACzB,IAAIuQ,GAAW,EACXvC,EAAU,EACVxnB,EAAQ,KAEZ4mB,GAAkBzT,GAAS,SAAUgV,EAAKtT,EAAGgD,EAAOnV,GAMlD,GAAmB,mBAARylB,QAAkC9b,IAAZ8b,EAAI6B,IAAmB,CACtDD,GAAW,EACXvC,IAEA,IA0BI1V,EA1BAkL,EAAUkK,IAAK,SAAU+C,GAuErC,IAAqB3X,MAtEI2X,GAuEZC,YAAenD,IAAyC,WAA5BzU,EAAI0U,OAAOC,gBAtExCgD,EAAcA,EAAYnb,SAG5BqZ,EAAIgC,SAAkC,mBAAhBF,EAClBA,EACAjO,EAAKjL,OAAOkZ,GAChBpS,EAAMhJ,WAAWnM,GAAOunB,IACxBzC,GACe,GACbhO,GAEJ,IAEIhR,EAAS0e,IAAK,SAAUkD,GAC1B,IAAIC,EAAM,qCAAuC3nB,EAAM,KAAO0nB,EAEzDpqB,IACHA,EAAQomB,GAAQgE,GACZA,EACA,IAAI3hB,MAAM4hB,GACd7Q,EAAKxZ,GAET,IAGA,IACE8R,EAAMqW,EAAInL,EAASxU,EACrB,CAAE,MAAO1I,GACP0I,EAAO1I,EACT,CACA,GAAIgS,EACF,GAAwB,mBAAbA,EAAI1L,KACb0L,EAAI1L,KAAK4W,EAASxU,OACb,CAEL,IAAI8hB,EAAOxY,EAAIiE,UACXuU,GAA6B,mBAAdA,EAAKlkB,MACtBkkB,EAAKlkB,KAAK4W,EAASxU,EAEvB,CAEJ,CACF,IAEKuhB,GAAYvQ,GACnB,IAkMI+Q,EAAW,SAAUlU,EAAMmD,GAC7B,GAAIsD,EAAS0K,UAAYzU,EACvB,OAAOoW,EAAMnD,GAA+B5P,EAASrD,IAEvD,IACEsD,EAAKtD,EAAOqD,GAAS,SAAU+F,IAClB,IAAPA,GAEFW,EAASmM,WAAU,GACnBE,EA1UV,SAAuC7F,EAAMnH,GAC3C,OAAO8J,GACL3C,EACAnH,EACAwJ,GAAsBE,QACrB,4BAAgCvC,EAAa,SAAI,SAAcnH,EAAW,SAAI,4BAEnF,CAmUgBqO,CAA6BpU,EAASrD,KACnCqT,GAAQjK,IACjBW,EAASmM,WAAU,GACnBE,EAAMhN,IAEQ,iBAAPA,GACQ,iBAAPA,IACc,iBAAZA,EAAGvN,MAAwC,iBAAZuN,EAAGxf,OAG5CwsB,EApXV,SAA0C7F,EAAMnH,GAC9C,OAAO8J,GACL3C,EACAnH,EACAwJ,GAAsBC,WACrB,+BAAmCtC,EAAa,SAAI,SAgDzD,SAAyBnH,GACvB,GAAkB,iBAAPA,EAAmB,OAAOA,EACrC,GAAI,SAAUA,EAAM,OAAOA,EAAGvN,KAC9B,IAAIjD,EAAW,CAAC,EAIhB,OAHAwa,GAAgB/jB,SAAQ,SAAUM,GAC5BA,KAAOyZ,IAAMxQ,EAASjJ,GAAOyZ,EAAGzZ,GACtC,IACOQ,KAAKC,UAAUwI,EAAU,KAAM,EACxC,CAxDsE,CAChEwQ,GACG,4BAET,CA2WgBsO,CAAgCrU,EAASrD,IAC7B,iBAAPoJ,GAAmBA,EAAGzgB,QAC/BohB,EAASphB,QAAQygB,GAEjBW,EAAShc,KAAKqb,IAIhB3C,EAAK2C,EAET,GACF,CAAE,MAAOrc,GACPqpB,EAAMrpB,EACR,CACF,EAEAymB,GAASC,EAAO+D,GAAU,WAGxB,IAAIG,EA0HR,SACEjB,GAEA,OAAO3B,GACL2B,EACA,oBACA,SAAUrB,EAAOvT,EAAGgD,EAAOnV,GACzB,OAKN,SACE0lB,EACAvQ,EACAnV,GAEA,OAAO,SAA0ByZ,EAAImH,EAAM9J,GACzC,OAAO4O,EAAMjM,EAAImH,GAAM,SAAUoD,GACb,mBAAPA,IACJ7O,EAAMtD,WAAW7R,KACpBmV,EAAMtD,WAAW7R,GAAO,IAE1BmV,EAAMtD,WAAW7R,GAAK5B,KAAK4lB,IAE7BlN,EAAKkN,EACP,GACF,CACF,CArBaiE,CAAevC,EAAOvQ,EAAOnV,EACtC,GAEJ,CApIsBkoB,CAAmBnB,GAErClD,GADYmE,EAAY3rB,OAAO+d,EAAS7M,OAAO4a,cAC/BN,GAAU,WACxB,GAAIzN,EAAS0K,UAAYzU,EACvB,OAAOoW,EAAMnD,GAA+B5P,EAASrD,IAEvD+J,EAAS0K,QAAU,KACnBoB,EAAW7V,GACP+J,EAAS7M,OAAOjG,KAClB8S,EAAS7M,OAAOjG,IAAI0Z,WAAU,WAC5BvP,EAAmBpB,EACrB,GAEJ,GACF,GACF,EAEAsU,GAAQ/W,UAAU0Y,YAAc,SAAsBjW,GACpDtR,KAAK2U,QAAUrD,EACftR,KAAKilB,IAAMjlB,KAAKilB,GAAG3T,EACrB,EAEAsU,GAAQ/W,UAAUwa,eAAiB,WAEnC,EAEAzD,GAAQ/W,UAAUya,SAAW,WAG3BtpB,KAAKomB,UAAUzlB,SAAQ,SAAU4oB,GAC/BA,GACF,IACAvpB,KAAKomB,UAAY,GAIjBpmB,KAAK2U,QAAU9C,EACf7R,KAAK+lB,QAAU,IACjB,EAoHA,IAAIyD,GAA6B,SAAU5D,GACzC,SAAS4D,EAAchb,EAAQN,GAC7B0X,EAAQ5P,KAAKhW,KAAMwO,EAAQN,GAE3BlO,KAAKypB,eAAiBC,GAAY1pB,KAAKkO,KACzC,CAkFA,OAhFK0X,IAAU4D,EAAaG,UAAY/D,GACxC4D,EAAa3a,UAAY5R,OAAOmc,OAAQwM,GAAWA,EAAQ/W,WAC3D2a,EAAa3a,UAAU+a,YAAcJ,EAErCA,EAAa3a,UAAUwa,eAAiB,WACtC,IAAIhO,EAAWrb,KAEf,KAAIA,KAAKomB,UAAU1oB,OAAS,GAA5B,CAIA,IAAI8Q,EAASxO,KAAKwO,OACdqb,EAAerb,EAAOnU,QAAQ2nB,eAC9B8H,EAAiBhG,IAAqB+F,EAEtCC,GACF9pB,KAAKomB,UAAU/mB,KAAK2hB,MAGtB,IAAI+I,EAAqB,WACvB,IAAIpV,EAAU0G,EAAS1G,QAInBzK,EAAWwf,GAAYrO,EAASnN,MAChCmN,EAAS1G,UAAY9C,GAAS3H,IAAamR,EAASoO,gBAIxDpO,EAAS6L,aAAahd,GAAU,SAAUoH,GACpCwY,GACFlI,GAAapT,EAAQ8C,EAAOqD,GAAS,EAEzC,GACF,EACA1K,OAAOwX,iBAAiB,WAAYsI,GACpC/pB,KAAKomB,UAAU/mB,MAAK,WAClB4K,OAAO0X,oBAAoB,WAAYoI,EACzC,GA7BA,CA8BF,EAEAP,EAAa3a,UAAUmb,GAAK,SAAalb,GACvC7E,OAAOgX,QAAQ+I,GAAGlb,EACpB,EAEA0a,EAAa3a,UAAUxP,KAAO,SAAe6K,EAAUid,EAAYC,GACjE,IAAI/L,EAAWrb,KAGXiqB,EADMjqB,KACU2U,QACpB3U,KAAKknB,aAAahd,GAAU,SAAUoH,GACpC2S,GAAUpO,EAAUwF,EAASnN,KAAOoD,EAAME,WAC1CoQ,GAAavG,EAAS7M,OAAQ8C,EAAO2Y,GAAW,GAChD9C,GAAcA,EAAW7V,EAC3B,GAAG8V,EACL,EAEAoC,EAAa3a,UAAU5U,QAAU,SAAkBiQ,EAAUid,EAAYC,GACvE,IAAI/L,EAAWrb,KAGXiqB,EADMjqB,KACU2U,QACpB3U,KAAKknB,aAAahd,GAAU,SAAUoH,GACpCkQ,GAAa3L,EAAUwF,EAASnN,KAAOoD,EAAME,WAC7CoQ,GAAavG,EAAS7M,OAAQ8C,EAAO2Y,GAAW,GAChD9C,GAAcA,EAAW7V,EAC3B,GAAG8V,EACL,EAEAoC,EAAa3a,UAAU2Y,UAAY,SAAoBnoB,GACrD,GAAIqqB,GAAY1pB,KAAKkO,QAAUlO,KAAK2U,QAAQnD,SAAU,CACpD,IAAImD,EAAUkB,EAAU7V,KAAKkO,KAAOlO,KAAK2U,QAAQnD,UACjDnS,EAAO4kB,GAAUtP,GAAW6M,GAAa7M,EAC3C,CACF,EAEA6U,EAAa3a,UAAUqb,mBAAqB,WAC1C,OAAOR,GAAY1pB,KAAKkO,KAC1B,EAEOsb,CACT,CAxFgC,CAwF9B5D,IAEF,SAAS8D,GAAaxb,GACpB,IAAIf,EAAOlD,OAAOC,SAASigB,SACvBC,EAAgBjd,EAAKkd,cACrBC,EAAgBpc,EAAKmc,cAQzB,OAJInc,GAAUkc,IAAkBE,GAC6B,IAA1DF,EAAc5qB,QAAQqW,EAAUyU,EAAgB,QACjDnd,EAAOA,EAAK2K,MAAM5J,EAAKxQ,UAEjByP,GAAQ,KAAOlD,OAAOC,SAASpG,OAASmG,OAAOC,SAASqH,IAClE,CAIA,IAAIgZ,GAA4B,SAAU3E,GACxC,SAAS2E,EAAa/b,EAAQN,EAAMsc,GAClC5E,EAAQ5P,KAAKhW,KAAMwO,EAAQN,GAEvBsc,GAqGR,SAAwBtc,GACtB,IAAIhE,EAAWwf,GAAYxb,GAC3B,IAAK,OAAO2K,KAAK3O,GAEf,OADAD,OAAOC,SAASjQ,QAAQ4b,EAAU3H,EAAO,KAAOhE,KACzC,CAEX,CA3GoBugB,CAAczqB,KAAKkO,OAGnCwc,IACF,CA8FA,OA5FK9E,IAAU2E,EAAYZ,UAAY/D,GACvC2E,EAAY1b,UAAY5R,OAAOmc,OAAQwM,GAAWA,EAAQ/W,WAC1D0b,EAAY1b,UAAU+a,YAAcW,EAIpCA,EAAY1b,UAAUwa,eAAiB,WACrC,IAAIhO,EAAWrb,KAEf,KAAIA,KAAKomB,UAAU1oB,OAAS,GAA5B,CAIA,IACImsB,EADS7pB,KAAKwO,OACQnU,QAAQ2nB,eAC9B8H,EAAiBhG,IAAqB+F,EAEtCC,GACF9pB,KAAKomB,UAAU/mB,KAAK2hB,MAGtB,IAAI+I,EAAqB,WACvB,IAAIpV,EAAU0G,EAAS1G,QAClB+V,MAGLrP,EAAS6L,aAAayD,MAAW,SAAUrZ,GACrCwY,GACFlI,GAAavG,EAAS7M,OAAQ8C,EAAOqD,GAAS,GAE3CmP,IACH8G,GAAYtZ,EAAME,SAEtB,GACF,EACIqZ,EAAY/G,GAAoB,WAAa,aACjD7Z,OAAOwX,iBACLoJ,EACAd,GAEF/pB,KAAKomB,UAAU/mB,MAAK,WAClB4K,OAAO0X,oBAAoBkJ,EAAWd,EACxC,GA/BA,CAgCF,EAEAQ,EAAY1b,UAAUxP,KAAO,SAAe6K,EAAUid,EAAYC,GAChE,IAAI/L,EAAWrb,KAGXiqB,EADMjqB,KACU2U,QACpB3U,KAAKknB,aACHhd,GACA,SAAUoH,GACRwZ,GAASxZ,EAAME,UACfoQ,GAAavG,EAAS7M,OAAQ8C,EAAO2Y,GAAW,GAChD9C,GAAcA,EAAW7V,EAC3B,GACA8V,EAEJ,EAEAmD,EAAY1b,UAAU5U,QAAU,SAAkBiQ,EAAUid,EAAYC,GACtE,IAAI/L,EAAWrb,KAGXiqB,EADMjqB,KACU2U,QACpB3U,KAAKknB,aACHhd,GACA,SAAUoH,GACRsZ,GAAYtZ,EAAME,UAClBoQ,GAAavG,EAAS7M,OAAQ8C,EAAO2Y,GAAW,GAChD9C,GAAcA,EAAW7V,EAC3B,GACA8V,EAEJ,EAEAmD,EAAY1b,UAAUmb,GAAK,SAAalb,GACtC7E,OAAOgX,QAAQ+I,GAAGlb,EACpB,EAEAyb,EAAY1b,UAAU2Y,UAAY,SAAoBnoB,GACpD,IAAIsV,EAAU3U,KAAK2U,QAAQnD,SACvBmZ,OAAchW,IAChBtV,EAAOyrB,GAASnW,GAAWiW,GAAYjW,GAE3C,EAEA4V,EAAY1b,UAAUqb,mBAAqB,WACzC,OAAOS,IACT,EAEOJ,CACT,CAvG+B,CAuG7B3E,IAUF,SAAS8E,KACP,IAAIvd,EAAOwd,KACX,MAAuB,MAAnBxd,EAAKqI,OAAO,KAGhBoV,GAAY,IAAMzd,IACX,EACT,CAEA,SAASwd,KAGP,IAAInP,EAAOvR,OAAOC,SAASsR,KACvB/D,EAAQ+D,EAAKhc,QAAQ,KAEzB,OAAIiY,EAAQ,EAAY,GAExB+D,EAAOA,EAAK1D,MAAML,EAAQ,EAG5B,CAEA,SAASsT,GAAQ5d,GACf,IAAIqO,EAAOvR,OAAOC,SAASsR,KACvBjJ,EAAIiJ,EAAKhc,QAAQ,KAErB,OADW+S,GAAK,EAAIiJ,EAAK1D,MAAM,EAAGvF,GAAKiJ,GACxB,IAAMrO,CACvB,CAEA,SAAS2d,GAAU3d,GACb2W,GACFG,GAAU8G,GAAO5d,IAEjBlD,OAAOC,SAASqH,KAAOpE,CAE3B,CAEA,SAASyd,GAAazd,GAChB2W,GACFtC,GAAauJ,GAAO5d,IAEpBlD,OAAOC,SAASjQ,QAAQ8wB,GAAO5d,GAEnC,CAIA,IAAI6d,GAAgC,SAAUpF,GAC5C,SAASoF,EAAiBxc,EAAQN,GAChC0X,EAAQ5P,KAAKhW,KAAMwO,EAAQN,GAC3BlO,KAAKyV,MAAQ,GACbzV,KAAKyX,OAAS,CAChB,CAoEA,OAlEKmO,IAAUoF,EAAgBrB,UAAY/D,GAC3CoF,EAAgBnc,UAAY5R,OAAOmc,OAAQwM,GAAWA,EAAQ/W,WAC9Dmc,EAAgBnc,UAAU+a,YAAcoB,EAExCA,EAAgBnc,UAAUxP,KAAO,SAAe6K,EAAUid,EAAYC,GACpE,IAAI/L,EAAWrb,KAEfA,KAAKknB,aACHhd,GACA,SAAUoH,GACR+J,EAAS5F,MAAQ4F,EAAS5F,MAAMqC,MAAM,EAAGuD,EAAS5D,MAAQ,GAAGna,OAAOgU,GACpE+J,EAAS5D,QACT0P,GAAcA,EAAW7V,EAC3B,GACA8V,EAEJ,EAEA4D,EAAgBnc,UAAU5U,QAAU,SAAkBiQ,EAAUid,EAAYC,GAC1E,IAAI/L,EAAWrb,KAEfA,KAAKknB,aACHhd,GACA,SAAUoH,GACR+J,EAAS5F,MAAQ4F,EAAS5F,MAAMqC,MAAM,EAAGuD,EAAS5D,OAAOna,OAAOgU,GAChE6V,GAAcA,EAAW7V,EAC3B,GACA8V,EAEJ,EAEA4D,EAAgBnc,UAAUmb,GAAK,SAAalb,GAC1C,IAAIuM,EAAWrb,KAEXirB,EAAcjrB,KAAKyX,MAAQ3I,EAC/B,KAAImc,EAAc,GAAKA,GAAejrB,KAAKyV,MAAM/X,QAAjD,CAGA,IAAI4T,EAAQtR,KAAKyV,MAAMwV,GACvBjrB,KAAKsnB,kBACHhW,GACA,WACE,IAAI+V,EAAOhM,EAAS1G,QACpB0G,EAAS5D,MAAQwT,EACjB5P,EAASkM,YAAYjW,GACrB+J,EAAS7M,OAAOiZ,WAAW9mB,SAAQ,SAAUiU,GAC3CA,GAAQA,EAAKtD,EAAO+V,EACtB,GACF,IACA,SAAUpX,GACJ2U,GAAoB3U,EAAKiU,GAAsBI,cACjDjJ,EAAS5D,MAAQwT,EAErB,GAhBF,CAkBF,EAEAD,EAAgBnc,UAAUqb,mBAAqB,WAC7C,IAAIvV,EAAU3U,KAAKyV,MAAMzV,KAAKyV,MAAM/X,OAAS,GAC7C,OAAOiX,EAAUA,EAAQnD,SAAW,GACtC,EAEAwZ,EAAgBnc,UAAU2Y,UAAY,WAEtC,EAEOwD,CACT,CA1EmC,CA0EjCpF,IAMEsF,GAAY,SAAoB7wB,QACjB,IAAZA,IAAqBA,EAAU,CAAC,GAKrC2F,KAAKuI,IAAM,KACXvI,KAAKiI,KAAO,GACZjI,KAAK3F,QAAUA,EACf2F,KAAKooB,YAAc,GACnBpoB,KAAKopB,aAAe,GACpBppB,KAAKynB,WAAa,GAClBznB,KAAKmrB,QAAU7L,EAAcjlB,EAAQ+T,QAAU,GAAIpO,MAEnD,IAAIiO,EAAO5T,EAAQ4T,MAAQ,OAW3B,OAVAjO,KAAKwqB,SACM,YAATvc,IAAuB6V,KAA0C,IAArBzpB,EAAQmwB,SAClDxqB,KAAKwqB,WACPvc,EAAO,QAEJ8P,IACH9P,EAAO,YAETjO,KAAKiO,KAAOA,EAEJA,GACN,IAAK,UACHjO,KAAKihB,QAAU,IAAIuI,GAAaxpB,KAAM3F,EAAQ6T,MAC9C,MACF,IAAK,OACHlO,KAAKihB,QAAU,IAAIsJ,GAAYvqB,KAAM3F,EAAQ6T,KAAMlO,KAAKwqB,UACxD,MACF,IAAK,WACHxqB,KAAKihB,QAAU,IAAI+J,GAAgBhrB,KAAM3F,EAAQ6T,MAOvD,EAEIkd,GAAqB,CAAE7L,aAAc,CAAE8L,cAAc,IAEzDH,GAAUrc,UAAUuH,MAAQ,SAAgBsD,EAAK/E,EAASvD,GACxD,OAAOpR,KAAKmrB,QAAQ/U,MAAMsD,EAAK/E,EAASvD,EAC1C,EAEAga,GAAmB7L,aAAanlB,IAAM,WACpC,OAAO4F,KAAKihB,SAAWjhB,KAAKihB,QAAQtM,OACtC,EAEAuW,GAAUrc,UAAUmG,KAAO,SAAezM,GACtC,IAAI8S,EAAWrb,KA0BjB,GAjBAA,KAAKiI,KAAK5I,KAAKkJ,GAIfA,EAAI+iB,MAAM,kBAAkB,WAE1B,IAAI7T,EAAQ4D,EAASpT,KAAKzI,QAAQ+I,GAC9BkP,GAAS,GAAK4D,EAASpT,KAAKnJ,OAAO2Y,EAAO,GAG1C4D,EAAS9S,MAAQA,IAAO8S,EAAS9S,IAAM8S,EAASpT,KAAK,IAAM,MAE1DoT,EAAS9S,KAAO8S,EAAS4F,QAAQqI,UACxC,KAIItpB,KAAKuI,IAAT,CAIAvI,KAAKuI,IAAMA,EAEX,IAAI0Y,EAAUjhB,KAAKihB,QAEnB,GAAIA,aAAmBuI,IAAgBvI,aAAmBsJ,GAAa,CACrE,IASIlB,EAAiB,SAAUkC,GAC7BtK,EAAQoI,iBAVgB,SAAUkC,GAClC,IAAI1J,EAAOZ,EAAQtM,QACfkV,EAAexO,EAAShhB,QAAQ2nB,eACf8B,IAAqB+F,GAEpB,aAAc0B,GAClC3J,GAAavG,EAAUkQ,EAAc1J,GAAM,EAE/C,CAGE2J,CAAoBD,EACtB,EACAtK,EAAQiG,aACNjG,EAAQiJ,qBACRb,EACAA,EAEJ,CAEApI,EAAQ6F,QAAO,SAAUxV,GACvB+J,EAASpT,KAAKtH,SAAQ,SAAU4H,GAC9BA,EAAIkjB,OAASna,CACf,GACF,GA/BA,CAgCF,EAEA4Z,GAAUrc,UAAU6c,WAAa,SAAqB1G,GACpD,OAAO2G,GAAa3rB,KAAKooB,YAAapD,EACxC,EAEAkG,GAAUrc,UAAU+c,cAAgB,SAAwB5G,GAC1D,OAAO2G,GAAa3rB,KAAKopB,aAAcpE,EACzC,EAEAkG,GAAUrc,UAAUgd,UAAY,SAAoB7G,GAClD,OAAO2G,GAAa3rB,KAAKynB,WAAYzC,EACvC,EAEAkG,GAAUrc,UAAUkY,QAAU,SAAkB9B,EAAI+B,GAClDhnB,KAAKihB,QAAQ8F,QAAQ9B,EAAI+B,EAC3B,EAEAkE,GAAUrc,UAAUoY,QAAU,SAAkBD,GAC9ChnB,KAAKihB,QAAQgG,QAAQD,EACvB,EAEAkE,GAAUrc,UAAUxP,KAAO,SAAe6K,EAAUid,EAAYC,GAC5D,IAAI/L,EAAWrb,KAGjB,IAAKmnB,IAAeC,GAA8B,oBAAZtgB,QACpC,OAAO,IAAIA,SAAQ,SAAUyU,EAASxU,GACpCsU,EAAS4F,QAAQ5hB,KAAK6K,EAAUqR,EAASxU,EAC3C,IAEA/G,KAAKihB,QAAQ5hB,KAAK6K,EAAUid,EAAYC,EAE5C,EAEA8D,GAAUrc,UAAU5U,QAAU,SAAkBiQ,EAAUid,EAAYC,GAClE,IAAI/L,EAAWrb,KAGjB,IAAKmnB,IAAeC,GAA8B,oBAAZtgB,QACpC,OAAO,IAAIA,SAAQ,SAAUyU,EAASxU,GACpCsU,EAAS4F,QAAQhnB,QAAQiQ,EAAUqR,EAASxU,EAC9C,IAEA/G,KAAKihB,QAAQhnB,QAAQiQ,EAAUid,EAAYC,EAE/C,EAEA8D,GAAUrc,UAAUmb,GAAK,SAAalb,GACpC9O,KAAKihB,QAAQ+I,GAAGlb,EAClB,EAEAoc,GAAUrc,UAAUid,KAAO,WACzB9rB,KAAKgqB,IAAI,EACX,EAEAkB,GAAUrc,UAAUkd,QAAU,WAC5B/rB,KAAKgqB,GAAG,EACV,EAEAkB,GAAUrc,UAAUmd,qBAAuB,SAA+BtR,GACxE,IAAIpJ,EAAQoJ,EACRA,EAAGhJ,QACDgJ,EACA1a,KAAKub,QAAQb,GAAIpJ,MACnBtR,KAAKuf,aACT,OAAKjO,EAGE,GAAGhU,OAAO+nB,MACf,GACA/T,EAAMI,QAAQ5U,KAAI,SAAU8a,GAC1B,OAAO3a,OAAO4H,KAAK+S,EAAExK,YAAYtQ,KAAI,SAAUmE,GAC7C,OAAO2W,EAAExK,WAAWnM,EACtB,GACF,KARO,EAUX,EAEAiqB,GAAUrc,UAAU0M,QAAU,SAC5Bb,EACA/F,EACAW,GAGA,IAAIpL,EAAWuP,EAAkBiB,EADjC/F,EAAUA,GAAW3U,KAAKihB,QAAQtM,QACYW,EAAQtV,MAClDsR,EAAQtR,KAAKoW,MAAMlM,EAAUyK,GAC7BnD,EAAWF,EAAMF,gBAAkBE,EAAME,SAEzCgK,EA4CN,SAAqBtN,EAAMsD,EAAUvD,GACnC,IAAId,EAAgB,SAATc,EAAkB,IAAMuD,EAAWA,EAC9C,OAAOtD,EAAO2H,EAAU3H,EAAO,IAAMf,GAAQA,CAC/C,CA/Ca8e,CADAjsB,KAAKihB,QAAQ/S,KACIsD,EAAUxR,KAAKiO,MAC3C,MAAO,CACL/D,SAAUA,EACVoH,MAAOA,EACPkK,KAAMA,EAEN0Q,aAAchiB,EACdwe,SAAUpX,EAEd,EAEA4Z,GAAUrc,UAAUsR,UAAY,WAC9B,OAAOngB,KAAKmrB,QAAQhL,WACtB,EAEA+K,GAAUrc,UAAUoR,SAAW,SAAmBC,EAAe5O,GAC/DtR,KAAKmrB,QAAQlL,SAASC,EAAe5O,GACjCtR,KAAKihB,QAAQtM,UAAY9C,GAC3B7R,KAAKihB,QAAQiG,aAAalnB,KAAKihB,QAAQiJ,qBAE3C,EAEAgB,GAAUrc,UAAUuR,UAAY,SAAoBhS,GAIlDpO,KAAKmrB,QAAQ/K,UAAUhS,GACnBpO,KAAKihB,QAAQtM,UAAY9C,GAC3B7R,KAAKihB,QAAQiG,aAAalnB,KAAKihB,QAAQiJ,qBAE3C,EAEAjtB,OAAOkvB,iBAAkBjB,GAAUrc,UAAWuc,IAE9C,IAAIgB,GAAclB,GAElB,SAASS,GAAcU,EAAMrH,GAE3B,OADAqH,EAAKhtB,KAAK2lB,GACH,WACL,IAAIzS,EAAI8Z,EAAK7sB,QAAQwlB,GACjBzS,GAAK,GAAK8Z,EAAKvtB,OAAOyT,EAAG,EAC/B,CACF,CAQA2Y,GAAUoB,QA70DV,SAASA,EAAS7iB,GAChB,IAAI6iB,EAAQpjB,WAAaqR,IAAS9Q,EAAlC,CACA6iB,EAAQpjB,WAAY,EAEpBqR,EAAO9Q,EAEP,IAAI8iB,EAAQ,SAAU1J,GAAK,YAAajY,IAANiY,CAAiB,EAE/C2J,EAAmB,SAAU9X,EAAI+X,GACnC,IAAIla,EAAImC,EAAGgY,SAASC,aAChBJ,EAAMha,IAAMga,EAAMha,EAAIA,EAAE/X,OAAS+xB,EAAMha,EAAIA,EAAEkC,wBAC/ClC,EAAEmC,EAAI+X,EAEV,EAEAhjB,EAAImjB,MAAM,CACRC,aAAc,WACRN,EAAMvsB,KAAK0sB,SAASle,SACtBxO,KAAK4T,YAAc5T,KACnBA,KAAK8sB,QAAU9sB,KAAK0sB,SAASle,OAC7BxO,KAAK8sB,QAAQ9X,KAAKhV,MAClByJ,EAAIsjB,KAAKC,eAAehtB,KAAM,SAAUA,KAAK8sB,QAAQ7L,QAAQtM,UAE7D3U,KAAK4T,YAAe5T,KAAKkU,SAAWlU,KAAKkU,QAAQN,aAAgB5T,KAEnEwsB,EAAiBxsB,KAAMA,KACzB,EACAitB,UAAW,WACTT,EAAiBxsB,KACnB,IAGF/C,OAAOiwB,eAAezjB,EAAIoF,UAAW,UAAW,CAC9CzU,IAAK,WAAkB,OAAO4F,KAAK4T,YAAYkZ,OAAQ,IAGzD7vB,OAAOiwB,eAAezjB,EAAIoF,UAAW,SAAU,CAC7CzU,IAAK,WAAkB,OAAO4F,KAAK4T,YAAY6X,MAAO,IAGxDhiB,EAAI6K,UAAU,aAAcrB,GAC5BxJ,EAAI6K,UAAU,aAAcmG,GAE5B,IAAI0S,EAAS1jB,EAAIyL,OAAOkY,sBAExBD,EAAOE,iBAAmBF,EAAOG,iBAAmBH,EAAOI,kBAAoBJ,EAAOK,OA5CtC,CA6ClD,EAgyDAtC,GAAU9hB,QAAU,QACpB8hB,GAAUtG,oBAAsBA,GAChCsG,GAAUhH,sBAAwBA,GAClCgH,GAAUuC,eAAiB5b,EAEvBkM,GAAa9T,OAAOR,KACtBQ,OAAOR,IAAI+B,IAAI0f,mBCthGjB,SAASwC,EAAYhT,EAAImH,GACvB,IAAIxQ,EAAQ,CACVnW,KAAMwf,EAAGxf,KACTiS,KAAMuN,EAAGvN,KACToE,KAAMmJ,EAAGnJ,KACTnB,MAAOsK,EAAGtK,MACVzV,OAAQ+f,EAAG/f,OACX6W,SAAUkJ,EAAGlJ,SACb7F,KAAM+O,EAAG/O,MAKX,OAHIkW,IACFxQ,EAAMwQ,KAAO6L,EAAW7L,IAEnB5kB,OAAO2U,OAAOP,EACvB,CAzEAsc,EAAQ,EAAO,SAAU/hB,EAAO4C,EAAQnU,GACtC,IAAIuzB,GAAcvzB,GAAW,CAAC,GAAGuzB,YAAc,QAE/ChiB,EAAMiiB,eAAeD,EAAY,CAC/BE,YAAY,EACZvyB,MAAOmyB,EAAWlf,EAAO+Q,cACzB7iB,UAAW,CACT,cAAiB,SAAwBnB,EAAOwyB,GAC9CniB,EAAMrQ,MAAMqyB,GAAcF,EAAWK,EAAWrT,GAAIqT,EAAWlM,KACjE,KAIJ,IACImM,EADAC,GAAkB,EAIlBC,EAAetiB,EAAMuiB,OACvB,SAAU5yB,GAAS,OAAOA,EAAMqyB,EAAa,IAC7C,SAAUtc,GACR,IAAIE,EAAWF,EAAME,SACjBA,IAAawc,IAGE,MAAfA,IACFC,GAAkB,EAClBzf,EAAOnP,KAAKiS,IAEd0c,EAAcxc,EAChB,GACA,CAAEjD,MAAM,IAIN6f,EAAkB5f,EAAOqd,WAAU,SAAUnR,EAAImH,GAC/CoM,EACFA,GAAkB,GAGpBD,EAActT,EAAGlJ,SACjB5F,EAAM3L,OAAO2tB,EAAa,iBAAkB,CAAElT,GAAIA,EAAImH,KAAMA,IAC9D,IAEA,OAAO,WAEkB,MAAnBuM,GACFA,IAIkB,MAAhBF,GACFA,IAIFtiB,EAAMyiB,iBAAiBT,EACzB,CACF,uIC5BYvvB,0FAAY,QAAZA,GAAmG,YAAhF,UAAIgO,OAAO,SAAStR,SAAU,UAAIsR,OAAO,SAASiiB,OAAOjwB,EAAEkwB,KAAKxzB,QA+D/F,MAyBMyzB,EAAI,CAAC,IAAK,KAAM,KAAM,KAAM,KAAM,MAAOC,EAAI,CAAC,IAAK,MAAO,MAAO,MAAO,MAAO,OACrF,SAASC,EAAGrwB,EAAG6D,GAAI,EAAIysB,GAAI,EAAIC,GAAI,GACjCD,EAAIA,IAAMC,EAAe,iBAALvwB,IAAkBA,EAAIwwB,OAAOxwB,IACjD,IAAIyQ,EAAIzQ,EAAI,EAAIypB,KAAKgH,MAAMhH,KAAKiH,IAAI1wB,GAAKypB,KAAKiH,IAAIH,EAAI,IAAM,OAAS,EACrE9f,EAAIgZ,KAAKkH,KAAKL,EAAIF,EAAE/wB,OAAS8wB,EAAE9wB,QAAU,EAAGoR,GAC5C,MAAMyD,EAAIoc,EAAIF,EAAE3f,GAAK0f,EAAE1f,GACvB,IAAImgB,GAAK5wB,EAAIypB,KAAKoH,IAAIN,EAAI,IAAM,KAAM9f,IAAI6R,QAAQ,GAClD,OAAa,IAANze,GAAkB,IAAN4M,GAAiB,QAANmgB,EAAc,OAAS,OAASN,EAAIF,EAAE,GAAKD,EAAE,KAAeS,EAARngB,EAAI,EAAQqgB,WAAWF,GAAGtO,QAAQ,GAASwO,WAAWF,GAAGG,gBAAe,WAAOH,EAAI,IAAM1c,EAC7K,CACA,SAAS8c,EAAGhxB,EAAG6D,GAAI,GACjB,IACE7D,EAAI,GAAGA,IAAIixB,oBAAoBC,WAAW,OAAQ,IAAIA,WAAW,IAAK,IACxE,CAAE,MACA,OAAO,IACT,CACA,MAAMZ,EAAItwB,EAAE+X,MAAM,yCAClB,GAAU,OAANuY,GAAuB,MAATA,EAAE,IAAuB,KAATA,EAAE,GAClC,OAAO,KACT,MAQG7f,EAAI,GAAG6f,EAAE,KAAMpc,EAAa,MAAToc,EAAE,IAAczsB,EAAI,KAAO,IACjD,OAAO4lB,KAAK0H,MAAMX,OAAOM,WAAWrgB,GAAKyD,GAT/B,CACR,GAAI,EACJkd,EAAG,EACH7X,EAAG,EACH8X,EAAG,EACHxtB,EAAG,EACHytB,EAAG,EACHtxB,EAAG,GAE2CswB,EAAE,IACpD,CAwLA,IAAIiB,EAAoB,CAAEvxB,IAAOA,EAAEA,EAAEwxB,KAAO,GAAK,OAAQxxB,EAAEA,EAAEyxB,OAAS,GAAK,SAAUzxB,EAAEA,EAAE0xB,KAAO,GAAK,OAAQ1xB,EAAEA,EAAE2xB,OAAS,GAAK,SAAU3xB,EAAEA,EAAE4xB,OAAS,GAAK,SAAU5xB,EAAEA,EAAE6xB,MAAQ,IAAM,QAAS7xB,EAAEA,EAAE8xB,IAAM,IAAM,MAAO9xB,GAA/L,CAAmMuxB,GAAK,CAAC,GAuBjO,MAAMQ,EAAI,CACR,qBACA,mBACA,YACA,oBACA,0BACA,iBACA,iBACA,kBACA,gBACA,qBACA,cACA,YACA,wBACA,cACA,iBACA,WACCxX,EAAI,CACLqW,EAAG,OACHoB,GAAI,0BACJpkB,GAAI,yBACJ5L,IAAK,6CAUJiwB,EAAI,WACL,cAAcrmB,OAAOsmB,mBAAqB,MAAQtmB,OAAOsmB,mBAAqB,IAAIH,IAAKnmB,OAAOsmB,mBAAmBzzB,KAAKuB,GAAM,IAAIA,SAAQsS,KAAK,IAC/I,EAAG6f,EAAI,WACL,cAAcvmB,OAAOwmB,mBAAqB,MAAQxmB,OAAOwmB,mBAAqB,IAAK7X,IAAM3b,OAAO4H,KAAKoF,OAAOwmB,oBAAoB3zB,KAAKuB,GAAM,SAASA,MAAM4L,OAAOwmB,qBAAqBpyB,QAAOsS,KAAK,IACpM,EAAG+f,EAAK,WACN,MAAO,0CACOF,iCAEVF,yCAGN,EAUGK,EAAK,SAAStyB,GACf,MAAO,4DACUmyB,8HAKbF,iGAKe,WAAK/B,0nBA0BRlwB,yXAkBlB,EAgDA,IAAIuyB,EAAoB,CAAEvyB,IAAOA,EAAEwyB,OAAS,SAAUxyB,EAAEyyB,KAAO,OAAQzyB,GAA/C,CAAmDuyB,GAAK,CAAC,GAsBjF,MAAMG,EAAI,SAAS1yB,EAAG6D,GACpB,OAAsB,OAAf7D,EAAE+X,MAAMlU,EACjB,EAAG8uB,EAAI,CAAC3yB,EAAG6D,KACT,GAAI7D,EAAEpD,IAAqB,iBAARoD,EAAEpD,GACnB,MAAM,IAAI+L,MAAM,4BAClB,IAAK3I,EAAEiG,OACL,MAAM,IAAI0C,MAAM,4BAClB,IACE,IAAIiqB,IAAI5yB,EAAEiG,OACZ,CAAE,MACA,MAAM,IAAI0C,MAAM,oDAClB,CACA,IAAK3I,EAAEiG,OAAO4sB,WAAW,QACvB,MAAM,IAAIlqB,MAAM,oDAClB,GAAI3I,EAAE8yB,SAAW9yB,EAAE8yB,iBAAiB1Q,MAClC,MAAM,IAAIzZ,MAAM,sBAClB,GAAI3I,EAAE+yB,UAAY/yB,EAAE+yB,kBAAkB3Q,MACpC,MAAM,IAAIzZ,MAAM,uBAClB,IAAK3I,EAAEgzB,MAAyB,iBAAVhzB,EAAEgzB,OAAqBhzB,EAAEgzB,KAAKjb,MAAM,yBACxD,MAAM,IAAIpP,MAAM,qCAClB,GAAI,SAAU3I,GAAsB,iBAAVA,EAAEizB,WAA+B,IAAXjzB,EAAEizB,KAChD,MAAM,IAAItqB,MAAM,qBAClB,GAAI,gBAAiB3I,QAAuB,IAAlBA,EAAEkzB,eAAoD,iBAAjBlzB,EAAEkzB,aAA2BlzB,EAAEkzB,aAAe3B,EAAEC,MAAQxxB,EAAEkzB,aAAe3B,EAAEO,KACxI,MAAM,IAAInpB,MAAM,uBAClB,GAAI3I,EAAEmzB,OAAqB,OAAZnzB,EAAEmzB,OAAoC,iBAAXnzB,EAAEmzB,MAC1C,MAAM,IAAIxqB,MAAM,sBAClB,GAAI3I,EAAEozB,YAAqC,iBAAhBpzB,EAAEozB,WAC3B,MAAM,IAAIzqB,MAAM,2BAClB,GAAI3I,EAAEqzB,MAAyB,iBAAVrzB,EAAEqzB,KACrB,MAAM,IAAI1qB,MAAM,qBAClB,GAAI3I,EAAEqzB,OAASrzB,EAAEqzB,KAAKR,WAAW,KAC/B,MAAM,IAAIlqB,MAAM,wCAClB,GAAI3I,EAAEqzB,OAASrzB,EAAEiG,OAAOjH,SAASgB,EAAEqzB,MACjC,MAAM,IAAI1qB,MAAM,mCAClB,GAAI3I,EAAEqzB,MAAQX,EAAE1yB,EAAEiG,OAAQpC,GAAI,CAC5B,MAAMysB,EAAItwB,EAAEiG,OAAO8R,MAAMlU,GAAG,GAC5B,IAAK7D,EAAEiG,OAAOjH,UAAS,UAAGsxB,EAAGtwB,EAAEqzB,OAC7B,MAAM,IAAI1qB,MAAM,4DACpB,CACA,GAAI3I,EAAEszB,SAAW10B,OAAOC,OAAO00B,GAAGv0B,SAASgB,EAAEszB,QAC3C,MAAM,IAAI3qB,MAAM,oCAAoC,EAuBxD,IAAI4qB,EAAoB,CAAEvzB,IAAOA,EAAEwzB,IAAM,MAAOxzB,EAAEyzB,OAAS,SAAUzzB,EAAE0zB,QAAU,UAAW1zB,EAAE2zB,OAAS,SAAU3zB,GAAzF,CAA6FuzB,GAAK,CAAC,GAC3H,MAAMK,EACJC,MACAC,YACAC,iBAAmB,mCACnB,WAAAxI,CAAY1nB,EAAGysB,GACbqC,EAAE9uB,EAAGysB,GAAK3uB,KAAKoyB,kBAAmBpyB,KAAKkyB,MAAQhwB,EAC/C,MAAM0sB,EAAI,CAERyD,IAAK,CAACvjB,EAAGyD,EAAG0c,KAAOjvB,KAAKsyB,cAAeC,QAAQF,IAAIvjB,EAAGyD,EAAG0c,IACzDuD,eAAgB,CAAC1jB,EAAGyD,KAAOvS,KAAKsyB,cAAeC,QAAQC,eAAe1jB,EAAGyD,KAG3EvS,KAAKmyB,YAAc,IAAIM,MAAMvwB,EAAEuvB,YAAc,CAAC,EAAG7C,UAAW5uB,KAAKkyB,MAAMT,WAAY9C,IAAM3uB,KAAKoyB,iBAAmBzD,EACnH,CAIA,UAAIrqB,GACF,OAAOtE,KAAKkyB,MAAM5tB,OAAOrK,QAAQ,OAAQ,GAC3C,CAIA,iBAAIy4B,GACF,MAAQC,OAAQzwB,GAAM,IAAI+uB,IAAIjxB,KAAKsE,QACnC,OAAOpC,GAAI,QAAGlC,KAAKsE,OAAOwT,MAAM5V,EAAExE,QACpC,CAIA,YAAIk1B,GACF,OAAO,cAAG5yB,KAAKsE,OACjB,CAIA,aAAIuuB,GACF,OAAO,aAAG7yB,KAAKsE,OACjB,CAKA,WAAIwuB,GACF,GAAI9yB,KAAK0xB,KAAM,CACb,IAAI/C,EAAI3uB,KAAKsE,OACbtE,KAAK+yB,iBAAmBpE,EAAIA,EAAEre,MAAMtQ,KAAKoyB,kBAAkB1c,OAC3D,MAAMkZ,EAAID,EAAEnvB,QAAQQ,KAAK0xB,MAAO5iB,EAAI9O,KAAK0xB,KAAKz3B,QAAQ,MAAO,IAC7D,OAAO,aAAE00B,EAAE7W,MAAM8W,EAAI9f,EAAEpR,SAAW,IACpC,CACA,MAAMwE,EAAI,IAAI+uB,IAAIjxB,KAAKsE,QACvB,OAAO,aAAEpC,EAAEioB,SACb,CAIA,QAAIkH,GACF,OAAOrxB,KAAKkyB,MAAMb,IACpB,CAIA,SAAIF,GACF,OAAOnxB,KAAKkyB,MAAMf,KACpB,CAIA,UAAIC,GACF,OAAOpxB,KAAKkyB,MAAMd,MACpB,CAIA,QAAIE,GACF,OAAOtxB,KAAKkyB,MAAMZ,IACpB,CAIA,cAAIG,GACF,OAAOzxB,KAAKmyB,WACd,CAIA,eAAIZ,GACF,OAAsB,OAAfvxB,KAAKwxB,OAAmBxxB,KAAK+yB,oBAAqD,IAA3B/yB,KAAKkyB,MAAMX,YAAyBvxB,KAAKkyB,MAAMX,YAAc3B,EAAEC,KAAxED,EAAEG,IACzD,CAIA,SAAIyB,GACF,OAAOxxB,KAAK+yB,eAAiB/yB,KAAKkyB,MAAMV,MAAQ,IAClD,CAIA,kBAAIuB,GACF,OAAOhC,EAAE/wB,KAAKsE,OAAQtE,KAAKoyB,iBAC7B,CAIA,QAAIV,GACF,OAAO1xB,KAAKkyB,MAAMR,KAAO1xB,KAAKkyB,MAAMR,KAAKz3B,QAAQ,WAAY,MAAQ+F,KAAK+yB,iBAAkB,aAAE/yB,KAAKsE,QAAQgM,MAAMtQ,KAAKoyB,kBAAkB1c,OAAS,IACnJ,CAIA,QAAIvI,GACF,GAAInN,KAAK0xB,KAAM,CACb,IAAIxvB,EAAIlC,KAAKsE,OACbtE,KAAK+yB,iBAAmB7wB,EAAIA,EAAEoO,MAAMtQ,KAAKoyB,kBAAkB1c,OAC3D,MAAMiZ,EAAIzsB,EAAE1C,QAAQQ,KAAK0xB,MAAO9C,EAAI5uB,KAAK0xB,KAAKz3B,QAAQ,MAAO,IAC7D,OAAOiI,EAAE4V,MAAM6W,EAAIC,EAAElxB,SAAW,GAClC,CACA,OAAQsC,KAAK8yB,QAAU,IAAM9yB,KAAK4yB,UAAU34B,QAAQ,QAAS,IAC/D,CAKA,UAAI+4B,GACF,OAAOhzB,KAAKkyB,OAAOj3B,IAAM+E,KAAKyxB,YAAYuB,MAC5C,CAIA,UAAIrB,GACF,OAAO3xB,KAAKkyB,OAAOP,MACrB,CAIA,UAAIA,CAAOzvB,GACTlC,KAAKkyB,MAAMP,OAASzvB,CACtB,CAOA,IAAA+wB,CAAK/wB,GACH8uB,EAAE,IAAKhxB,KAAKkyB,MAAO5tB,OAAQpC,GAAKlC,KAAKoyB,kBAAmBpyB,KAAKkyB,MAAM5tB,OAASpC,EAAGlC,KAAKsyB,aACtF,CAOA,MAAAY,CAAOhxB,GACL,GAAIA,EAAE7E,SAAS,KACb,MAAM,IAAI2J,MAAM,oBAClBhH,KAAKizB,MAAK,aAAEjzB,KAAKsE,QAAU,IAAMpC,EACnC,CAIA,WAAAowB,GACEtyB,KAAKkyB,MAAMf,QAAUnxB,KAAKkyB,MAAMf,MAAwB,IAAI1Q,KAC9D,EAuBF,MAAM0S,UAAWlB,EACf,QAAI9e,GACF,OAAOyd,EAAEE,IACX,EAuBF,MAAMsC,UAAWnB,EACf,WAAArI,CAAY1nB,GACVmxB,MAAM,IACDnxB,EACHmvB,KAAM,wBAEV,CACA,QAAIle,GACF,OAAOyd,EAAEC,MACX,CACA,aAAIgC,GACF,OAAO,IACT,CACA,QAAIxB,GACF,MAAO,sBACT,EAwBF,MAAMiC,EAAI,WAAU,WAAK/E,MAAOgF,GAAK,QAAG,OAAQC,EAAK,SAASn1B,EAAIk1B,EAAIrxB,EAAI,CAAC,GACzE,MAAMysB,GAAI,QAAGtwB,EAAG,CAAEo1B,QAASvxB,IAC3B,SAAS0sB,EAAErc,GACToc,EAAE+E,WAAW,IACRxxB,EAEH,mBAAoB,iBAEpByxB,aAAcphB,GAAK,IAEvB,CACA,OAAO,QAAGqc,GAAIA,GAAE,YAAO,UAAKgF,MAAM,SAAS,CAACrhB,EAAG0c,KAC7C,MAAM4E,EAAI5E,EAAEwE,QACZ,OAAOI,GAAGC,SAAW7E,EAAE6E,OAASD,EAAEC,cAAeD,EAAEC,QAASC,MAAMxhB,EAAG0c,EAAE,IACrEN,CACN,EAAGqF,EAAK,CAAC31B,EAAG6D,EAAI,IAAKysB,EAAI2E,KACvB,MAAM1E,EAAI,IAAIqF,gBACd,OAAO,IAAI,qBAAGC,MAAOplB,EAAGyD,EAAG0c,KACzBA,GAAE,IAAML,EAAElH,UACV,IAWE5Y,SAViBzQ,EAAE81B,qBAAqB,GAAGxF,IAAIzsB,IAAK,CAClDkyB,OAAQxF,EAAEwF,OACVC,SAAS,EACT75B,KAzdC,+CACYg2B,iCAEfF,wIAudEmD,QAAS,CAEPK,OAAQ,UAEVQ,aAAa,KACX95B,KAAK2C,QAAQsF,GAAMA,EAAE8xB,WAAaryB,IAAGpF,KAAK2F,GAAM+xB,EAAG/xB,EAAGksB,KAE5D,CAAE,MAAOkF,GACPthB,EAAEshB,EACJ,IACA,EACDW,EAAK,SAASn2B,EAAG6D,EAAIoxB,EAAG3E,EAAI4E,GAC7B,MAAM3E,GAAI,WAAKL,IACf,IAAKK,EACH,MAAM,IAAI5nB,MAAM,oBAClB,MAAM8H,EAAIzQ,EAAEoP,MAAO8E,EAjZV,SAASlU,EAAI,IACtB,IAAI6D,EAAI0tB,EAAEC,KACV,OAAOxxB,KAAOA,EAAEhB,SAAS,MAAQgB,EAAEhB,SAAS,QAAU6E,GAAK0tB,EAAEE,QAASzxB,EAAEhB,SAAS,OAAS6E,GAAK0tB,EAAEG,OAAQ1xB,EAAEhB,SAAS,MAAQgB,EAAEhB,SAAS,MAAQgB,EAAEhB,SAAS,QAAU6E,GAAK0tB,EAAEI,QAAS3xB,EAAEhB,SAAS,OAAS6E,GAAK0tB,EAAEK,QAAS5xB,EAAEhB,SAAS,OAAS6E,GAAK0tB,EAAEM,QAAShuB,CAC9P,CA8YyBuyB,CAAG3lB,GAAGyiB,aAActC,GAAKngB,IAAI,aAAe8f,GAAGjf,WAAYkkB,EAAI,CACpF54B,GAAI6T,GAAGkkB,QAAU,EACjB1uB,OAAQ,GAAGqqB,IAAItwB,EAAEk2B,WACjBpD,MAAO,IAAI1Q,KAAKA,KAAKxJ,MAAM5Y,EAAEq2B,UAC7BrD,KAAMhzB,EAAEgzB,MAAQ,2BAChBC,KAAMxiB,GAAGwiB,MAAQzC,OAAO8F,SAAS7lB,EAAE8lB,kBAAoB,KACvDrD,YAAahf,EACbif,MAAOvC,EACPyC,KAAMxvB,EACNuvB,WAAY,IACPpzB,KACAyQ,EACH+lB,WAAY/lB,IAAI,iBAGpB,cAAc+kB,EAAEpC,YAAYhkB,MAAkB,SAAXpP,EAAE8U,KAAkB,IAAIggB,EAAGU,GAAK,IAAIT,EAAGS,EAC5E,EAsGA,IAAYiB,EAAI,CAAC,GACjB,SAAUz2B,GACR,MAAM6D,EAAI,gLAAyO0sB,EAAI,IAAM1sB,EAAI,KAAlEA,EAAwD,iDAA2B4M,EAAI,IAAIqH,OAAO,IAAMyY,EAAI,KAgB3SvwB,EAAE02B,QAAU,SAASlB,GACnB,cAAcA,EAAI,GACpB,EAAGx1B,EAAE22B,cAAgB,SAASnB,GAC5B,OAAiC,IAA1B52B,OAAO4H,KAAKgvB,GAAGn2B,MACxB,EAAGW,EAAE42B,MAAQ,SAASpB,EAAGqB,EAAGzyB,GAC1B,GAAIyyB,EAAG,CACL,MAAMzW,EAAIxhB,OAAO4H,KAAKqwB,GAAIC,EAAI1W,EAAE/gB,OAChC,IAAK,IAAI+R,EAAI,EAAGA,EAAI0lB,EAAG1lB,IACJokB,EAAEpV,EAAEhP,IAAf,WAANhN,EAA2B,CAACyyB,EAAEzW,EAAEhP,KAAiBylB,EAAEzW,EAAEhP,GACzD,CACF,EAAGpR,EAAE+2B,SAAW,SAASvB,GACvB,OAAOx1B,EAAE02B,QAAQlB,GAAKA,EAAI,EAC5B,EAAGx1B,EAAEg3B,OAhBE,SAASxB,GACd,MAAMqB,EAAIpmB,EAAE6I,KAAKkc,GACjB,QAAe,OAANqB,UAAqBA,EAAI,IACpC,EAaiB72B,EAAEi3B,cA5BkS,SAASzB,EAAGqB,GAC/T,MAAMzyB,EAAI,GACV,IAAIgc,EAAIyW,EAAEvd,KAAKkc,GACf,KAAOpV,GAAK,CACV,MAAM0W,EAAI,GACVA,EAAEI,WAAaL,EAAEM,UAAY/W,EAAE,GAAG/gB,OAClC,MAAM+R,EAAIgP,EAAE/gB,OACZ,IAAK,IAAIgyB,EAAI,EAAGA,EAAIjgB,EAAGigB,IACrByF,EAAE91B,KAAKof,EAAEiR,IACXjtB,EAAEpD,KAAK81B,GAAI1W,EAAIyW,EAAEvd,KAAKkc,EACxB,CACA,OAAOpxB,CACT,EAgBsCpE,EAAEo3B,WAAa7G,CACtD,CA9BD,CA8BGkG,GAkKQ,IAAI3e,OAAO,0DAA0D,KAuEhF,IAAIsZ,EAAI,CAAC,EACT,MAAMiG,EAAK,CACTC,eAAe,EACfC,oBAAqB,KACrBC,qBAAqB,EACrBC,aAAc,QACdC,kBAAkB,EAClBC,gBAAgB,EAEhBC,wBAAwB,EAGxBC,eAAe,EACfC,qBAAqB,EACrBC,YAAY,EAEZC,eAAe,EACfC,mBAAoB,CAClBC,KAAK,EACLC,cAAc,EACdC,WAAW,GAEbC,kBAAmB,SAASr4B,EAAG6D,GAC7B,OAAOA,CACT,EACAy0B,wBAAyB,SAASt4B,EAAG6D,GACnC,OAAOA,CACT,EACA00B,UAAW,GAEXC,sBAAsB,EACtBxuB,QAAS,KAAM,EACfyuB,iBAAiB,EACjBC,aAAc,GACdC,iBAAiB,EACjBC,cAAc,EACdC,mBAAmB,EACnBC,cAAc,EACdC,kBAAkB,EAClBC,wBAAwB,EACxBC,UAAW,SAASj5B,EAAG6D,EAAGysB,GACxB,OAAOtwB,CACT,GAKFoxB,EAAE8H,aAHM,SAASl5B,GACf,OAAOpB,OAAOa,OAAO,CAAC,EAAG43B,EAAIr3B,EAC/B,EAEAoxB,EAAE+H,eAAiB9B,GAkFlB7G,OAAO8F,UAAY1qB,OAAO0qB,WAAa9F,OAAO8F,SAAW1qB,OAAO0qB,WAChE9F,OAAOM,YAAcllB,OAAOklB,aAAeN,OAAOM,WAAallB,OAAOklB,YA2F5D,IAAIhZ,OAAO,+CAA+C,MAyOrE,IAAashB,EAAK,CAAC,EAInB,SAASC,EAAGr5B,EAAG6D,EAAGysB,GAChB,IAAIC,EACJ,MAAM9f,EAAI,CAAC,EACX,IAAK,IAAIyD,EAAI,EAAGA,EAAIlU,EAAEX,OAAQ6U,IAAK,CACjC,MAAM0c,EAAI5wB,EAAEkU,GAAIshB,EAAI8D,EAAG1I,GACvB,IAAIiG,EAAI,GACR,GAAmBA,OAAT,IAANvG,EAAmBkF,EAAQlF,EAAI,IAAMkF,EAAGA,IAAM3xB,EAAE4zB,kBAC5C,IAANlH,EAAeA,EAAIK,EAAE4E,GAAKjF,GAAK,GAAKK,EAAE4E,OACnC,CACH,QAAU,IAANA,EACF,SACF,GAAI5E,EAAE4E,GAAI,CACR,IAAIpxB,EAAIi1B,EAAGzI,EAAE4E,GAAI3xB,EAAGgzB,GACpB,MAAMzW,EAAImZ,EAAGn1B,EAAGP,GAChB+sB,EAAE,MAAQ4I,EAAGp1B,EAAGwsB,EAAE,MAAOiG,EAAGhzB,GAA+B,IAA1BjF,OAAO4H,KAAKpC,GAAG/E,aAAsC,IAAtB+E,EAAEP,EAAE4zB,eAA6B5zB,EAAE20B,qBAAyE,IAA1B55B,OAAO4H,KAAKpC,GAAG/E,SAAiBwE,EAAE20B,qBAAuBp0B,EAAEP,EAAE4zB,cAAgB,GAAKrzB,EAAI,IAA9GA,EAAIA,EAAEP,EAAE4zB,mBAAoH,IAAThnB,EAAE+kB,IAAiB/kB,EAAE+Q,eAAegU,IAAMzrB,MAAMC,QAAQyG,EAAE+kB,MAAQ/kB,EAAE+kB,GAAK,CAAC/kB,EAAE+kB,KAAM/kB,EAAE+kB,GAAGx0B,KAAKoD,IAAMP,EAAEmG,QAAQwrB,EAAGqB,EAAGzW,GAAK3P,EAAE+kB,GAAK,CAACpxB,GAAKqM,EAAE+kB,GAAKpxB,CAC1X,CACF,CACF,CACA,MAAmB,iBAALmsB,EAAgBA,EAAElxB,OAAS,IAAMoR,EAAE5M,EAAE4zB,cAAgBlH,QAAW,IAANA,IAAiB9f,EAAE5M,EAAE4zB,cAAgBlH,GAAI9f,CACnH,CACA,SAAS6oB,EAAGt5B,GACV,MAAM6D,EAAIjF,OAAO4H,KAAKxG,GACtB,IAAK,IAAIswB,EAAI,EAAGA,EAAIzsB,EAAExE,OAAQixB,IAAK,CACjC,MAAMC,EAAI1sB,EAAEysB,GACZ,GAAU,OAANC,EACF,OAAOA,CACX,CACF,CACA,SAASiJ,EAAGx5B,EAAG6D,EAAGysB,EAAGC,GACnB,GAAI1sB,EAAG,CACL,MAAM4M,EAAI7R,OAAO4H,KAAK3C,GAAIqQ,EAAIzD,EAAEpR,OAChC,IAAK,IAAIuxB,EAAI,EAAGA,EAAI1c,EAAG0c,IAAK,CAC1B,MAAM4E,EAAI/kB,EAAEmgB,GACZL,EAAEvmB,QAAQwrB,EAAGlF,EAAI,IAAMkF,GAAG,GAAI,GAAMx1B,EAAEw1B,GAAK,CAAC3xB,EAAE2xB,IAAMx1B,EAAEw1B,GAAK3xB,EAAE2xB,EAC/D,CACF,CACF,CACA,SAAS+D,EAAGv5B,EAAG6D,GACb,MAAQ4zB,aAAcnH,GAAMzsB,EAAG0sB,EAAI3xB,OAAO4H,KAAKxG,GAAGX,OAClD,QAAgB,IAANkxB,IAAiB,IAANA,IAAYvwB,EAAEswB,IAAqB,kBAARtwB,EAAEswB,IAA4B,IAATtwB,EAAEswB,IACzE,CACA8I,EAAGK,SA5CH,SAAYz5B,EAAG6D,GACb,OAAOw1B,EAAGr5B,EAAG6D,EACf,EA2CA,MAAQq1B,aAAcQ,GAAOtI,GAAcqI,SAAUE,GAAOP,EAiD5D,SAASQ,EAAG55B,EAAG6D,EAAGysB,EAAGC,GACnB,IAAI9f,EAAI,GAAIyD,GAAI,EAChB,IAAK,IAAI0c,EAAI,EAAGA,EAAI5wB,EAAEX,OAAQuxB,IAAK,CACjC,MAAM4E,EAAIx1B,EAAE4wB,GAAIiG,EAAIgD,EAAGrE,GACvB,QAAU,IAANqB,EACF,SACF,IAAIzyB,EAAI,GACR,GAAqBA,EAAJ,IAAbksB,EAAEjxB,OAAmBw3B,EAAQ,GAAGvG,KAAKuG,IAAKA,IAAMhzB,EAAE4zB,aAAc,CAClE,IAAI3mB,EAAI0kB,EAAEqB,GACViD,EAAG11B,EAAGP,KAAOiN,EAAIjN,EAAEw0B,kBAAkBxB,EAAG/lB,GAAIA,EAAIipB,EAAGjpB,EAAGjN,IAAKqQ,IAAMzD,GAAK8f,GAAI9f,GAAKK,EAAGoD,GAAI,EACtF,QACF,CAAO,GAAI2iB,IAAMhzB,EAAEm0B,cAAe,CAChC9jB,IAAMzD,GAAK8f,GAAI9f,GAAK,YAAY+kB,EAAEqB,GAAG,GAAGhzB,EAAE4zB,mBAAoBvjB,GAAI,EAClE,QACF,CAAO,GAAI2iB,IAAMhzB,EAAE40B,gBAAiB,CAClChoB,GAAK8f,EAAI,UAAOiF,EAAEqB,GAAG,GAAGhzB,EAAE4zB,sBAAoBvjB,GAAI,EAClD,QACF,CAAO,GAAa,MAAT2iB,EAAE,GAAY,CACvB,MAAM/lB,EAAIkpB,EAAExE,EAAE,MAAO3xB,GAAIkR,EAAU,SAAN8hB,EAAe,GAAKtG,EACjD,IAAI0J,EAAIzE,EAAEqB,GAAG,GAAGhzB,EAAE4zB,cAClBwC,EAAiB,IAAbA,EAAE56B,OAAe,IAAM46B,EAAI,GAAIxpB,GAAKsE,EAAI,IAAI8hB,IAAIoD,IAAInpB,MAAOoD,GAAI,EACnE,QACF,CACA,IAAIkM,EAAImQ,EACF,KAANnQ,IAAaA,GAAKvc,EAAEq2B,UACpB,MAAyB9oB,EAAImf,EAAI,IAAIsG,IAA3BmD,EAAExE,EAAE,MAAO3xB,KAAyBwtB,EAAIuI,EAAGpE,EAAEqB,GAAIhzB,EAAGO,EAAGgc,IAClC,IAA/Bvc,EAAE60B,aAAav3B,QAAQ01B,GAAYhzB,EAAEs2B,qBAAuB1pB,GAAKW,EAAI,IAAMX,GAAKW,EAAI,KAASigB,GAAkB,IAAbA,EAAEhyB,SAAiBwE,EAAEu2B,kBAAoC/I,GAAKA,EAAEgJ,SAAS,KAAO5pB,GAAKW,EAAI,IAAIigB,IAAId,MAAMsG,MAAQpmB,GAAKW,EAAI,IAAKigB,GAAW,KAANd,IAAac,EAAEryB,SAAS,OAASqyB,EAAEryB,SAAS,OAASyR,GAAK8f,EAAI1sB,EAAEq2B,SAAW7I,EAAId,EAAI9f,GAAK4gB,EAAG5gB,GAAK,KAAKomB,MAA9LpmB,GAAKW,EAAI,KAA4L8C,GAAI,CACtV,CACA,OAAOzD,CACT,CACA,SAASopB,EAAG75B,GACV,MAAM6D,EAAIjF,OAAO4H,KAAKxG,GACtB,IAAK,IAAIswB,EAAI,EAAGA,EAAIzsB,EAAExE,OAAQixB,IAAK,CACjC,MAAMC,EAAI1sB,EAAEysB,GACZ,GAAItwB,EAAEwhB,eAAe+O,IAAY,OAANA,EACzB,OAAOA,CACX,CACF,CACA,SAASyJ,EAAEh6B,EAAG6D,GACZ,IAAIysB,EAAI,GACR,GAAItwB,IAAM6D,EAAE6zB,iBACV,IAAK,IAAInH,KAAKvwB,EAAG,CACf,IAAKA,EAAEwhB,eAAe+O,GACpB,SACF,IAAI9f,EAAI5M,EAAEy0B,wBAAwB/H,EAAGvwB,EAAEuwB,IACvC9f,EAAIspB,EAAGtpB,EAAG5M,IAAU,IAAN4M,GAAY5M,EAAEy2B,0BAA4BhK,GAAK,IAAIC,EAAExW,OAAOlW,EAAE0zB,oBAAoBl4B,UAAYixB,GAAK,IAAIC,EAAExW,OAAOlW,EAAE0zB,oBAAoBl4B,YAAYoR,IAClK,CACF,OAAO6f,CACT,CACA,SAASwJ,EAAG95B,EAAG6D,GAEb,IAAIysB,GADJtwB,EAAIA,EAAE+Z,OAAO,EAAG/Z,EAAEX,OAASwE,EAAE4zB,aAAap4B,OAAS,IACzC0a,OAAO/Z,EAAEu6B,YAAY,KAAO,GACtC,IAAK,IAAIhK,KAAK1sB,EAAE00B,UACd,GAAI10B,EAAE00B,UAAUhI,KAAOvwB,GAAK6D,EAAE00B,UAAUhI,KAAO,KAAOD,EACpD,OAAO,EACX,OAAO,CACT,CACA,SAASyJ,EAAG/5B,EAAG6D,GACb,GAAI7D,GAAKA,EAAEX,OAAS,GAAKwE,EAAE80B,gBACzB,IAAK,IAAIrI,EAAI,EAAGA,EAAIzsB,EAAE22B,SAASn7B,OAAQixB,IAAK,CAC1C,MAAMC,EAAI1sB,EAAE22B,SAASlK,GACrBtwB,EAAIA,EAAEpE,QAAQ20B,EAAE7P,MAAO6P,EAAEle,IAC3B,CACF,OAAOrS,CACT,CAEA,MAAMy6B,EAtEN,SAAYz6B,EAAG6D,GACb,IAAIysB,EAAI,GACR,OAAOzsB,EAAE62B,QAAU72B,EAAEq2B,SAAS76B,OAAS,IAAMixB,EAJpC,MAI6CsJ,EAAG55B,EAAG6D,EAAG,GAAIysB,EACrE,EAmEeqK,EAAK,CAClBpD,oBAAqB,KACrBC,qBAAqB,EACrBC,aAAc,QACdC,kBAAkB,EAClBM,eAAe,EACf0C,QAAQ,EACRR,SAAU,KACVE,mBAAmB,EACnBD,sBAAsB,EACtBG,2BAA2B,EAC3BjC,kBAAmB,SAASr4B,EAAG6D,GAC7B,OAAOA,CACT,EACAy0B,wBAAyB,SAASt4B,EAAG6D,GACnC,OAAOA,CACT,EACAyzB,eAAe,EACfmB,iBAAiB,EACjBC,aAAc,GACd8B,SAAU,CACR,CAAE9Z,MAAO,IAAI5I,OAAO,IAAK,KAAMzF,IAAK,SAEpC,CAAEqO,MAAO,IAAI5I,OAAO,IAAK,KAAMzF,IAAK,QACpC,CAAEqO,MAAO,IAAI5I,OAAO,IAAK,KAAMzF,IAAK,QACpC,CAAEqO,MAAO,IAAI5I,OAAO,IAAK,KAAMzF,IAAK,UACpC,CAAEqO,MAAO,IAAI5I,OAAO,IAAK,KAAMzF,IAAK,WAEtCsmB,iBAAiB,EACjBJ,UAAW,GAGXqC,cAAc,GAEhB,SAASv2B,EAAErE,GACT2B,KAAK3F,QAAU4C,OAAOa,OAAO,CAAC,EAAGk7B,EAAI36B,GAAI2B,KAAK3F,QAAQ07B,kBAAoB/1B,KAAK3F,QAAQw7B,oBAAsB71B,KAAKk5B,YAAc,WAC9H,OAAO,CACT,GAAKl5B,KAAKm5B,cAAgBn5B,KAAK3F,QAAQu7B,oBAAoBl4B,OAAQsC,KAAKk5B,YAAcE,IAAKp5B,KAAKq5B,qBAAuBC,EAAIt5B,KAAK3F,QAAQ0+B,QAAU/4B,KAAKu5B,UAAYC,GAAIx5B,KAAKy5B,WAAa,MACxLz5B,KAAK05B,QAAU,OACZ15B,KAAKu5B,UAAY,WACnB,MAAO,EACT,EAAGv5B,KAAKy5B,WAAa,IAAKz5B,KAAK05B,QAAU,GAC3C,CA4CA,SAASJ,EAAGj7B,EAAG6D,EAAGysB,GAChB,MAAMC,EAAI5uB,KAAK25B,IAAIt7B,EAAGswB,EAAI,GAC1B,YAAwC,IAAjCtwB,EAAE2B,KAAK3F,QAAQy7B,eAAsD,IAA1B74B,OAAO4H,KAAKxG,GAAGX,OAAesC,KAAK45B,iBAAiBv7B,EAAE2B,KAAK3F,QAAQy7B,cAAe5zB,EAAG0sB,EAAEiL,QAASlL,GAAK3uB,KAAK85B,gBAAgBlL,EAAEle,IAAKxO,EAAG0sB,EAAEiL,QAASlL,EACnM,CAiCA,SAAS6K,GAAGn7B,GACV,OAAO2B,KAAK3F,QAAQk+B,SAAS/hB,OAAOnY,EACtC,CACA,SAAS+6B,GAAG/6B,GACV,SAAOA,EAAE6yB,WAAWlxB,KAAK3F,QAAQu7B,sBAAwBv3B,IAAM2B,KAAK3F,QAAQy7B,eAAez3B,EAAE+Z,OAAOpY,KAAKm5B,cAC3G,CApFAz2B,EAAEmM,UAAU9T,MAAQ,SAASsD,GAC3B,OAAO2B,KAAK3F,QAAQs7B,cAAgBmD,EAAGz6B,EAAG2B,KAAK3F,UAAY+N,MAAMC,QAAQhK,IAAM2B,KAAK3F,QAAQ0/B,eAAiB/5B,KAAK3F,QAAQ0/B,cAAcr8B,OAAS,IAAMW,EAAI,CACzJ,CAAC2B,KAAK3F,QAAQ0/B,eAAgB17B,IAC5B2B,KAAK25B,IAAIt7B,EAAG,GAAGqS,IACrB,EACAhO,EAAEmM,UAAU8qB,IAAM,SAASt7B,EAAG6D,GAC5B,IAAIysB,EAAI,GAAIC,EAAI,GAChB,IAAK,IAAI9f,KAAKzQ,EACZ,GAAIpB,OAAO4R,UAAUgR,eAAe7J,KAAK3X,EAAGyQ,GAC1C,UAAWzQ,EAAEyQ,GAAK,IAChB9O,KAAKk5B,YAAYpqB,KAAO8f,GAAK,SAC1B,GAAa,OAATvwB,EAAEyQ,GACT9O,KAAKk5B,YAAYpqB,GAAK8f,GAAK,GAAc,MAAT9f,EAAE,GAAa8f,GAAK5uB,KAAKu5B,UAAUr3B,GAAK,IAAM4M,EAAI,IAAM9O,KAAKy5B,WAAa7K,GAAK5uB,KAAKu5B,UAAUr3B,GAAK,IAAM4M,EAAI,IAAM9O,KAAKy5B,gBACrJ,GAAIp7B,EAAEyQ,aAAc2R,KACvBmO,GAAK5uB,KAAK45B,iBAAiBv7B,EAAEyQ,GAAIA,EAAG,GAAI5M,QACrC,GAAmB,iBAAR7D,EAAEyQ,GAAgB,CAChC,MAAMyD,EAAIvS,KAAKk5B,YAAYpqB,GAC3B,GAAIyD,EACFoc,GAAK3uB,KAAKg6B,iBAAiBznB,EAAG,GAAKlU,EAAEyQ,SAClC,GAAIA,IAAM9O,KAAK3F,QAAQy7B,aAAc,CACxC,IAAI7G,EAAIjvB,KAAK3F,QAAQq8B,kBAAkB5nB,EAAG,GAAKzQ,EAAEyQ,IACjD8f,GAAK5uB,KAAKi6B,qBAAqBhL,EACjC,MACEL,GAAK5uB,KAAK45B,iBAAiBv7B,EAAEyQ,GAAIA,EAAG,GAAI5M,EAC5C,MAAO,GAAIkG,MAAMC,QAAQhK,EAAEyQ,IAAK,CAC9B,MAAMyD,EAAIlU,EAAEyQ,GAAGpR,OACf,IAAIuxB,EAAI,GACR,IAAK,IAAI4E,EAAI,EAAGA,EAAIthB,EAAGshB,IAAK,CAC1B,MAAMqB,EAAI72B,EAAEyQ,GAAG+kB,UACRqB,EAAI,MAAc,OAANA,EAAsB,MAATpmB,EAAE,GAAa8f,GAAK5uB,KAAKu5B,UAAUr3B,GAAK,IAAM4M,EAAI,IAAM9O,KAAKy5B,WAAa7K,GAAK5uB,KAAKu5B,UAAUr3B,GAAK,IAAM4M,EAAI,IAAM9O,KAAKy5B,WAAyB,iBAALvE,EAAgBl1B,KAAK3F,QAAQ4+B,aAAehK,GAAKjvB,KAAK25B,IAAIzE,EAAGhzB,EAAI,GAAGwO,IAAMue,GAAKjvB,KAAKq5B,qBAAqBnE,EAAGpmB,EAAG5M,GAAK+sB,GAAKjvB,KAAK45B,iBAAiB1E,EAAGpmB,EAAG,GAAI5M,GACvU,CACAlC,KAAK3F,QAAQ4+B,eAAiBhK,EAAIjvB,KAAK85B,gBAAgB7K,EAAGngB,EAAG,GAAI5M,IAAK0sB,GAAKK,CAC7E,MAAO,GAAIjvB,KAAK3F,QAAQw7B,qBAAuB/mB,IAAM9O,KAAK3F,QAAQw7B,oBAAqB,CACrF,MAAMtjB,EAAItV,OAAO4H,KAAKxG,EAAEyQ,IAAKmgB,EAAI1c,EAAE7U,OACnC,IAAK,IAAIm2B,EAAI,EAAGA,EAAI5E,EAAG4E,IACrBlF,GAAK3uB,KAAKg6B,iBAAiBznB,EAAEshB,GAAI,GAAKx1B,EAAEyQ,GAAGyD,EAAEshB,IACjD,MACEjF,GAAK5uB,KAAKq5B,qBAAqBh7B,EAAEyQ,GAAIA,EAAG5M,GAC9C,MAAO,CAAE23B,QAASlL,EAAGje,IAAKke,EAC5B,EACAlsB,EAAEmM,UAAUmrB,iBAAmB,SAAS37B,EAAG6D,GACzC,OAAOA,EAAIlC,KAAK3F,QAAQs8B,wBAAwBt4B,EAAG,GAAK6D,GAAIA,EAAIlC,KAAKi6B,qBAAqB/3B,GAAIlC,KAAK3F,QAAQs+B,2BAAmC,SAANz2B,EAAe,IAAM7D,EAAI,IAAMA,EAAI,KAAO6D,EAAI,GACxL,EAKAQ,EAAEmM,UAAUirB,gBAAkB,SAASz7B,EAAG6D,EAAGysB,EAAGC,GAC9C,GAAU,KAANvwB,EACF,MAAgB,MAAT6D,EAAE,GAAalC,KAAKu5B,UAAU3K,GAAK,IAAM1sB,EAAIysB,EAAI,IAAM3uB,KAAKy5B,WAAaz5B,KAAKu5B,UAAU3K,GAAK,IAAM1sB,EAAIysB,EAAI3uB,KAAKk6B,SAASh4B,GAAKlC,KAAKy5B,WAC5I,CACE,IAAI3qB,EAAI,KAAO5M,EAAIlC,KAAKy5B,WAAYlnB,EAAI,GACxC,MAAgB,MAATrQ,EAAE,KAAeqQ,EAAI,IAAKzD,EAAI,KAAM6f,GAAW,KAANA,IAAiC,IAApBtwB,EAAEmB,QAAQ,MAAmG,IAAjCQ,KAAK3F,QAAQy8B,iBAA0B50B,IAAMlC,KAAK3F,QAAQy8B,iBAAgC,IAAbvkB,EAAE7U,OAAesC,KAAKu5B,UAAU3K,GAAK,UAAOvwB,UAAS2B,KAAK05B,QAAU15B,KAAKu5B,UAAU3K,GAAK,IAAM1sB,EAAIysB,EAAIpc,EAAIvS,KAAKy5B,WAAap7B,EAAI2B,KAAKu5B,UAAU3K,GAAK9f,EAArR9O,KAAKu5B,UAAU3K,GAAK,IAAM1sB,EAAIysB,EAAIpc,EAAI,IAAMlU,EAAIyQ,CACvI,CACF,EACApM,EAAEmM,UAAUqrB,SAAW,SAAS77B,GAC9B,IAAI6D,EAAI,GACR,OAAiD,IAA1ClC,KAAK3F,QAAQ08B,aAAav3B,QAAQnB,GAAY2B,KAAK3F,QAAQm+B,uBAAyBt2B,EAAI,KAAwCA,EAAjClC,KAAK3F,QAAQo+B,kBAAwB,IAAU,MAAMp6B,IAAK6D,CAClK,EACAQ,EAAEmM,UAAU+qB,iBAAmB,SAASv7B,EAAG6D,EAAGysB,EAAGC,GAC/C,IAAmC,IAA/B5uB,KAAK3F,QAAQg8B,eAAwBn0B,IAAMlC,KAAK3F,QAAQg8B,cAC1D,OAAOr2B,KAAKu5B,UAAU3K,GAAK,YAAYvwB,OAAS2B,KAAK05B,QACvD,IAAqC,IAAjC15B,KAAK3F,QAAQy8B,iBAA0B50B,IAAMlC,KAAK3F,QAAQy8B,gBAC5D,OAAO92B,KAAKu5B,UAAU3K,GAAK,UAAOvwB,UAAS2B,KAAK05B,QAClD,GAAa,MAATx3B,EAAE,GACJ,OAAOlC,KAAKu5B,UAAU3K,GAAK,IAAM1sB,EAAIysB,EAAI,IAAM3uB,KAAKy5B,WACtD,CACE,IAAI3qB,EAAI9O,KAAK3F,QAAQq8B,kBAAkBx0B,EAAG7D,GAC1C,OAAOyQ,EAAI9O,KAAKi6B,qBAAqBnrB,GAAU,KAANA,EAAW9O,KAAKu5B,UAAU3K,GAAK,IAAM1sB,EAAIysB,EAAI3uB,KAAKk6B,SAASh4B,GAAKlC,KAAKy5B,WAAaz5B,KAAKu5B,UAAU3K,GAAK,IAAM1sB,EAAIysB,EAAI,IAAM7f,EAAI,KAAO5M,EAAIlC,KAAKy5B,UACzL,CACF,EACA/2B,EAAEmM,UAAUorB,qBAAuB,SAAS57B,GAC1C,GAAIA,GAAKA,EAAEX,OAAS,GAAKsC,KAAK3F,QAAQ28B,gBACpC,IAAK,IAAI90B,EAAI,EAAGA,EAAIlC,KAAK3F,QAAQw+B,SAASn7B,OAAQwE,IAAK,CACrD,MAAMysB,EAAI3uB,KAAK3F,QAAQw+B,SAAS32B,GAChC7D,EAAIA,EAAEpE,QAAQ00B,EAAE5P,MAAO4P,EAAEje,IAC3B,CACF,OAAOrS,CACT,ICl9DI87B,EAA2B,CAAC,EAGhC,SAASC,EAAoBC,GAE5B,IAAIC,EAAeH,EAAyBE,GAC5C,QAAqBzvB,IAAjB0vB,EACH,OAAOA,EAAa3M,QAGrB,IAAI4M,EAASJ,EAAyBE,GAAY,CACjDp/B,GAAIo/B,EACJG,QAAQ,EACR7M,QAAS,CAAC,GAUX,OANA8M,EAAoBJ,GAAUrkB,KAAKukB,EAAO5M,QAAS4M,EAAQA,EAAO5M,QAASyM,GAG3EG,EAAOC,QAAS,EAGTD,EAAO5M,OACf,CAGAyM,EAAoBxiB,EAAI6iB,EnB5BpB7gC,EAAW,GACfwgC,EAAoB5L,EAAI,CAAC1d,EAAQ4pB,EAAU1V,EAAI2V,KAC9C,IAAGD,EAAH,CAMA,IAAIE,EAAeC,IACnB,IAAStoB,EAAI,EAAGA,EAAI3Y,EAAS8D,OAAQ6U,IAAK,CACrCmoB,EAAW9gC,EAAS2Y,GAAG,GACvByS,EAAKprB,EAAS2Y,GAAG,GACjBooB,EAAW/gC,EAAS2Y,GAAG,GAE3B,IAJA,IAGIuoB,GAAY,EACPliB,EAAI,EAAGA,EAAI8hB,EAASh9B,OAAQkb,MACpB,EAAX+hB,GAAsBC,GAAgBD,IAAa19B,OAAO4H,KAAKu1B,EAAoB5L,GAAGlc,OAAOrR,GAASm5B,EAAoB5L,EAAEvtB,GAAKy5B,EAAS9hB,MAC9I8hB,EAAS57B,OAAO8Z,IAAK,IAErBkiB,GAAY,EACTH,EAAWC,IAAcA,EAAeD,IAG7C,GAAGG,EAAW,CACblhC,EAASkF,OAAOyT,IAAK,GACrB,IAAIoc,EAAI3J,SACEpa,IAAN+jB,IAAiB7d,EAAS6d,EAC/B,CACD,CACA,OAAO7d,CArBP,CAJC6pB,EAAWA,GAAY,EACvB,IAAI,IAAIpoB,EAAI3Y,EAAS8D,OAAQ6U,EAAI,GAAK3Y,EAAS2Y,EAAI,GAAG,GAAKooB,EAAUpoB,IAAK3Y,EAAS2Y,GAAK3Y,EAAS2Y,EAAI,GACrG3Y,EAAS2Y,GAAK,CAACmoB,EAAU1V,EAAI2V,EAuBjB,EoB3BdP,EAAoBtrB,EAAKyrB,IACxB,IAAIQ,EAASR,GAAUA,EAAO9R,WAC7B,IAAO8R,EAAiB,QACxB,IAAM,EAEP,OADAH,EAAoBnL,EAAE8L,EAAQ,CAAEt4B,EAAGs4B,IAC5BA,CAAM,ECLdX,EAAoBnL,EAAI,CAACtB,EAASqN,KACjC,IAAI,IAAI/5B,KAAO+5B,EACXZ,EAAoBlF,EAAE8F,EAAY/5B,KAASm5B,EAAoBlF,EAAEvH,EAAS1sB,IAC5EhE,OAAOiwB,eAAeS,EAAS1sB,EAAK,CAAEg6B,YAAY,EAAM7gC,IAAK4gC,EAAW/5B,IAE1E,ECNDm5B,EAAoBjF,EAAI,CAAC,EAGzBiF,EAAoB/7B,EAAK68B,GACjBp0B,QAAQq0B,IAAIl+B,OAAO4H,KAAKu1B,EAAoBjF,GAAGiG,QAAO,CAACC,EAAUp6B,KACvEm5B,EAAoBjF,EAAEl0B,GAAKi6B,EAASG,GAC7BA,IACL,KCNJjB,EAAoBvG,EAAKqH,KAEX,CAAC,KAAO,iBAAiB,KAAO,sBAAsBA,IAAYA,GAAW,IAAMA,EAAU,SAAW,CAAC,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,wBAAwBA,ICHxWd,EAAoB1K,EAAI,WACvB,GAA0B,iBAAf4L,WAAyB,OAAOA,WAC3C,IACC,OAAOt7B,MAAQ,IAAIu7B,SAAS,cAAb,EAChB,CAAE,MAAOl9B,GACR,GAAsB,iBAAX4L,OAAqB,OAAOA,MACxC,CACA,CAPuB,GCAxBmwB,EAAoBlF,EAAI,CAACrkB,EAAK2qB,IAAUv+B,OAAO4R,UAAUgR,eAAe7J,KAAKnF,EAAK2qB,GxBA9E3hC,EAAa,CAAC,EACdC,EAAoB,aAExBsgC,EAAoB3b,EAAI,CAACzkB,EAAKyhC,EAAMx6B,EAAKi6B,KACxC,GAAGrhC,EAAWG,GAAQH,EAAWG,GAAKqF,KAAKo8B,OAA3C,CACA,IAAIC,EAAQC,EACZ,QAAW/wB,IAAR3J,EAEF,IADA,IAAI26B,EAAU3Y,SAAS4Y,qBAAqB,UACpCtpB,EAAI,EAAGA,EAAIqpB,EAAQl+B,OAAQ6U,IAAK,CACvC,IAAIqc,EAAIgN,EAAQrpB,GAChB,GAAGqc,EAAEhR,aAAa,QAAU5jB,GAAO40B,EAAEhR,aAAa,iBAAmB9jB,EAAoBmH,EAAK,CAAEy6B,EAAS9M,EAAG,KAAO,CACpH,CAEG8M,IACHC,GAAa,GACbD,EAASzY,SAAS6Y,cAAc,WAEzBC,QAAU,QACjBL,EAAOM,QAAU,IACb5B,EAAoB/J,IACvBqL,EAAOO,aAAa,QAAS7B,EAAoB/J,IAElDqL,EAAOO,aAAa,eAAgBniC,EAAoBmH,GAExDy6B,EAAOQ,IAAMliC,GAEdH,EAAWG,GAAO,CAACyhC,GACnB,IAAIU,EAAmB,CAAC9U,EAAMjM,KAE7BsgB,EAAOU,QAAUV,EAAOW,OAAS,KACjCC,aAAaN,GACb,IAAIO,EAAU1iC,EAAWG,GAIzB,UAHOH,EAAWG,GAClB0hC,EAAOc,YAAcd,EAAOc,WAAWC,YAAYf,GACnDa,GAAWA,EAAQ57B,SAASqkB,GAAQA,EAAG5J,KACpCiM,EAAM,OAAOA,EAAKjM,EAAM,EAExB4gB,EAAU3xB,WAAW8xB,EAAiB5V,KAAK,UAAM3b,EAAW,CAAEuI,KAAM,UAAW6I,OAAQ0f,IAAW,MACtGA,EAAOU,QAAUD,EAAiB5V,KAAK,KAAMmV,EAAOU,SACpDV,EAAOW,OAASF,EAAiB5V,KAAK,KAAMmV,EAAOW,QACnDV,GAAc1Y,SAASyZ,KAAKC,YAAYjB,EApCkB,CAoCX,EyBvChDtB,EAAoBzL,EAAKhB,IACH,oBAAXpI,QAA0BA,OAAOC,aAC1CvoB,OAAOiwB,eAAeS,EAASpI,OAAOC,YAAa,CAAEtkB,MAAO,WAE7DjE,OAAOiwB,eAAeS,EAAS,aAAc,CAAEzsB,OAAO,GAAO,ECL9Dk5B,EAAoBwC,IAAOrC,IAC1BA,EAAOsC,MAAQ,GACVtC,EAAO7sB,WAAU6sB,EAAO7sB,SAAW,IACjC6sB,GCHRH,EAAoBxhB,EAAI,WCAxB,IAAIkkB,EACA1C,EAAoB1K,EAAEqN,gBAAeD,EAAY1C,EAAoB1K,EAAExlB,SAAW,IACtF,IAAI+Y,EAAWmX,EAAoB1K,EAAEzM,SACrC,IAAK6Z,GAAa7Z,IACbA,EAAS+Z,gBACZF,EAAY7Z,EAAS+Z,cAAcd,MAC/BY,GAAW,CACf,IAAIlB,EAAU3Y,EAAS4Y,qBAAqB,UAC5C,GAAGD,EAAQl+B,OAEV,IADA,IAAI6U,EAAIqpB,EAAQl+B,OAAS,EAClB6U,GAAK,KAAOuqB,IAAc,aAAajkB,KAAKikB,KAAaA,EAAYlB,EAAQrpB,KAAK2pB,GAE3F,CAID,IAAKY,EAAW,MAAM,IAAI91B,MAAM,yDAChC81B,EAAYA,EAAU7iC,QAAQ,OAAQ,IAAIA,QAAQ,QAAS,IAAIA,QAAQ,YAAa,KACpFmgC,EAAoBzK,EAAImN,YClBxB1C,EAAoB13B,EAAIugB,SAASga,SAAWC,KAAKhzB,SAASsR,KAK1D,IAAI2hB,EAAkB,CACrB,KAAM,GAGP/C,EAAoBjF,EAAEvc,EAAI,CAACsiB,EAASG,KAElC,IAAI+B,EAAqBhD,EAAoBlF,EAAEiI,EAAiBjC,GAAWiC,EAAgBjC,QAAWtwB,EACtG,GAA0B,IAAvBwyB,EAGF,GAAGA,EACF/B,EAASh8B,KAAK+9B,EAAmB,QAC3B,CAGL,IAAIC,EAAU,IAAIv2B,SAAQ,CAACyU,EAASxU,IAAYq2B,EAAqBD,EAAgBjC,GAAW,CAAC3f,EAASxU,KAC1Gs0B,EAASh8B,KAAK+9B,EAAmB,GAAKC,GAGtC,IAAIrjC,EAAMogC,EAAoBzK,EAAIyK,EAAoBvG,EAAEqH,GAEpD38B,EAAQ,IAAIyI,MAgBhBozB,EAAoB3b,EAAEzkB,GAfFohB,IACnB,GAAGgf,EAAoBlF,EAAEiI,EAAiBjC,KAEf,KAD1BkC,EAAqBD,EAAgBjC,MACRiC,EAAgBjC,QAAWtwB,GACrDwyB,GAAoB,CACtB,IAAIvY,EAAYzJ,IAAyB,SAAfA,EAAMjI,KAAkB,UAAYiI,EAAMjI,MAChEmqB,EAAUliB,GAASA,EAAMY,QAAUZ,EAAMY,OAAOkgB,IACpD39B,EAAM4I,QAAU,iBAAmB+zB,EAAU,cAAgBrW,EAAY,KAAOyY,EAAU,IAC1F/+B,EAAMrD,KAAO,iBACbqD,EAAM4U,KAAO0R,EACbtmB,EAAMg/B,QAAUD,EAChBF,EAAmB,GAAG7+B,EACvB,CACD,GAEwC,SAAW28B,EAASA,EAE/D,CACD,EAWFd,EAAoB5L,EAAE5V,EAAKsiB,GAA0C,IAA7BiC,EAAgBjC,GAGxD,IAAIsC,EAAuB,CAACC,EAA4BjjC,KACvD,IAKI6/B,EAAUa,EALVR,EAAWlgC,EAAK,GAChBkjC,EAAcljC,EAAK,GACnBmjC,EAAUnjC,EAAK,GAGI+X,EAAI,EAC3B,GAAGmoB,EAASkD,MAAM3iC,GAAgC,IAAxBkiC,EAAgBliC,KAAa,CACtD,IAAIo/B,KAAYqD,EACZtD,EAAoBlF,EAAEwI,EAAarD,KACrCD,EAAoBxiB,EAAEyiB,GAAYqD,EAAYrD,IAGhD,GAAGsD,EAAS,IAAI7sB,EAAS6sB,EAAQvD,EAClC,CAEA,IADGqD,GAA4BA,EAA2BjjC,GACrD+X,EAAImoB,EAASh9B,OAAQ6U,IACzB2oB,EAAUR,EAASnoB,GAChB6nB,EAAoBlF,EAAEiI,EAAiBjC,IAAYiC,EAAgBjC,IACrEiC,EAAgBjC,GAAS,KAE1BiC,EAAgBjC,GAAW,EAE5B,OAAOd,EAAoB5L,EAAE1d,EAAO,EAGjC+sB,EAAqBX,KAA4B,sBAAIA,KAA4B,uBAAK,GAC1FW,EAAmBl9B,QAAQ68B,EAAqBjX,KAAK,KAAM,IAC3DsX,EAAmBx+B,KAAOm+B,EAAqBjX,KAAK,KAAMsX,EAAmBx+B,KAAKknB,KAAKsX,QCvFvFzD,EAAoB/J,QAAKzlB,ECGzB,IAAIkzB,EAAsB1D,EAAoB5L,OAAE5jB,EAAW,CAAC,OAAO,IAAOwvB,EAAoB,SAC9F0D,EAAsB1D,EAAoB5L,EAAEsP","sources":["webpack:///nextcloud/webpack/runtime/chunk loaded","webpack:///nextcloud/webpack/runtime/load script","webpack:///nextcloud/apps/settings/src/store/api.js","webpack:///nextcloud/apps/settings/src/store/users.js","webpack:///nextcloud/apps/settings/src/store/apps.js","webpack:///nextcloud/apps/settings/src/store/users-settings.js","webpack:///nextcloud/apps/settings/src/store/oc.js","webpack:///nextcloud/apps/settings/src/store/index.js","webpack:///nextcloud/apps/settings/src/constants/GroupManagement.ts","webpack:///nextcloud/apps/settings/src/logger.ts","webpack:///nextcloud/apps/settings/src/views/SettingsApp.vue","webpack:///nextcloud/apps/settings/src/views/SettingsApp.vue?vue&type=script&setup=true&lang=ts","webpack://nextcloud/./apps/settings/src/views/SettingsApp.vue?3a67","webpack:///nextcloud/apps/settings/src/router/routes.ts","webpack:///nextcloud/apps/settings/src/router/index.ts","webpack:///nextcloud/apps/settings/src/main-apps-users-management.ts","webpack:///nextcloud/node_modules/vue-router/dist/vue-router.esm.js","webpack:///nextcloud/node_modules/vuex-router-sync/index.js","webpack:///nextcloud/node_modules/@nextcloud/files/dist/index.mjs","webpack:///nextcloud/webpack/bootstrap","webpack:///nextcloud/webpack/runtime/compat get default export","webpack:///nextcloud/webpack/runtime/define property getters","webpack:///nextcloud/webpack/runtime/ensure chunk","webpack:///nextcloud/webpack/runtime/get javascript chunk filename","webpack:///nextcloud/webpack/runtime/global","webpack:///nextcloud/webpack/runtime/hasOwnProperty shorthand","webpack:///nextcloud/webpack/runtime/make namespace object","webpack:///nextcloud/webpack/runtime/node module decorator","webpack:///nextcloud/webpack/runtime/runtimeId","webpack:///nextcloud/webpack/runtime/publicPath","webpack:///nextcloud/webpack/runtime/jsonp chunk loading","webpack:///nextcloud/webpack/runtime/nonce","webpack:///nextcloud/webpack/startup"],"sourcesContent":["var deferred = [];\n__webpack_require__.O = (result, chunkIds, fn, priority) => {\n\tif(chunkIds) {\n\t\tpriority = priority || 0;\n\t\tfor(var i = deferred.length; i > 0 && deferred[i - 1][2] > priority; i--) deferred[i] = deferred[i - 1];\n\t\tdeferred[i] = [chunkIds, fn, priority];\n\t\treturn;\n\t}\n\tvar notFulfilled = Infinity;\n\tfor (var i = 0; i < deferred.length; i++) {\n\t\tvar chunkIds = deferred[i][0];\n\t\tvar fn = deferred[i][1];\n\t\tvar priority = deferred[i][2];\n\t\tvar fulfilled = true;\n\t\tfor (var j = 0; j < chunkIds.length; j++) {\n\t\t\tif ((priority & 1 === 0 || notFulfilled >= priority) && Object.keys(__webpack_require__.O).every((key) => (__webpack_require__.O[key](chunkIds[j])))) {\n\t\t\t\tchunkIds.splice(j--, 1);\n\t\t\t} else {\n\t\t\t\tfulfilled = false;\n\t\t\t\tif(priority < notFulfilled) notFulfilled = priority;\n\t\t\t}\n\t\t}\n\t\tif(fulfilled) {\n\t\t\tdeferred.splice(i--, 1)\n\t\t\tvar r = fn();\n\t\t\tif (r !== undefined) result = r;\n\t\t}\n\t}\n\treturn result;\n};","var inProgress = {};\nvar dataWebpackPrefix = \"nextcloud:\";\n// loadScript function to load a script via script tag\n__webpack_require__.l = (url, done, key, chunkId) => {\n\tif(inProgress[url]) { inProgress[url].push(done); return; }\n\tvar script, needAttach;\n\tif(key !== undefined) {\n\t\tvar scripts = document.getElementsByTagName(\"script\");\n\t\tfor(var i = 0; i < scripts.length; i++) {\n\t\t\tvar s = scripts[i];\n\t\t\tif(s.getAttribute(\"src\") == url || s.getAttribute(\"data-webpack\") == dataWebpackPrefix + key) { script = s; break; }\n\t\t}\n\t}\n\tif(!script) {\n\t\tneedAttach = true;\n\t\tscript = document.createElement('script');\n\n\t\tscript.charset = 'utf-8';\n\t\tscript.timeout = 120;\n\t\tif (__webpack_require__.nc) {\n\t\t\tscript.setAttribute(\"nonce\", __webpack_require__.nc);\n\t\t}\n\t\tscript.setAttribute(\"data-webpack\", dataWebpackPrefix + key);\n\n\t\tscript.src = url;\n\t}\n\tinProgress[url] = [done];\n\tvar onScriptComplete = (prev, event) => {\n\t\t// avoid mem leaks in IE.\n\t\tscript.onerror = script.onload = null;\n\t\tclearTimeout(timeout);\n\t\tvar doneFns = inProgress[url];\n\t\tdelete inProgress[url];\n\t\tscript.parentNode && script.parentNode.removeChild(script);\n\t\tdoneFns && doneFns.forEach((fn) => (fn(event)));\n\t\tif(prev) return prev(event);\n\t}\n\tvar timeout = setTimeout(onScriptComplete.bind(null, undefined, { type: 'timeout', target: script }), 120000);\n\tscript.onerror = onScriptComplete.bind(null, script.onerror);\n\tscript.onload = onScriptComplete.bind(null, script.onload);\n\tneedAttach && document.head.appendChild(script);\n};","/**\n * @copyright Copyright (c) 2018 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Julius Härtl <jus@bitgrid.net>\n * @author Roeland Jago Douma <roeland@famdouma.nl>\n * @author Sujith Haridasan <sujith.h@gmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport axios from '@nextcloud/axios'\nimport { confirmPassword } from '@nextcloud/password-confirmation'\nimport '@nextcloud/password-confirmation/dist/style.css'\n\nconst sanitize = function(url) {\n\treturn url.replace(/\\/$/, '') // Remove last url slash\n}\n\nexport default {\n\n\t/**\n\t * This Promise is used to chain a request that require an admin password confirmation\n\t * Since chaining Promise have a very precise behavior concerning catch and then,\n\t * you'll need to be careful when using it.\n\t * e.g\n\t * // store\n\t * action(context) {\n\t * return api.requireAdmin().then((response) => {\n\t * return api.get('url')\n\t * .then((response) => {API success})\n\t * .catch((error) => {API failure});\n\t * }).catch((error) => {requireAdmin failure});\n\t * }\n\t * // vue\n\t * this.$store.dispatch('action').then(() => {always executed})\n\t *\n\t * Since Promise.then().catch().then() will always execute the last then\n\t * this.$store.dispatch('action').then will always be executed\n\t *\n\t * If you want requireAdmin failure to also catch the API request failure\n\t * you will need to throw a new error in the api.get.catch()\n\t *\n\t * e.g\n\t * api.requireAdmin().then((response) => {\n\t * api.get('url')\n\t * .then((response) => {API success})\n\t * .catch((error) => {throw error;});\n\t * }).catch((error) => {requireAdmin OR API failure});\n\t *\n\t * @return {Promise}\n\t */\n\trequireAdmin() {\n\t\treturn confirmPassword()\n\t},\n\tget(url, options) {\n\t\treturn axios.get(sanitize(url), options)\n\t},\n\tpost(url, data) {\n\t\treturn axios.post(sanitize(url), data)\n\t},\n\tpatch(url, data) {\n\t\treturn axios.patch(sanitize(url), data)\n\t},\n\tput(url, data) {\n\t\treturn axios.put(sanitize(url), data)\n\t},\n\tdelete(url, data) {\n\t\treturn axios.delete(sanitize(url), { params: data })\n\t},\n}\n","/**\n * @copyright Copyright (c) 2018 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author Arthur Schiwon <blizzz@arthur-schiwon.de>\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author Daniel Calviño Sánchez <danxuliu@gmail.com>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Julius Härtl <jus@bitgrid.net>\n * @author Roeland Jago Douma <roeland@famdouma.nl>\n * @author Vincent Petry <vincent@nextcloud.com>\n * @author Stephan Orbaugh <stephan.orbaugh@nextcloud.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport { getBuilder } from '@nextcloud/browser-storage'\nimport { getCapabilities } from '@nextcloud/capabilities'\nimport { parseFileSize } from '@nextcloud/files'\nimport { showError } from '@nextcloud/dialogs'\nimport { generateOcsUrl, generateUrl } from '@nextcloud/router'\nimport axios from '@nextcloud/axios'\n\nimport { GroupSorting } from '../constants/GroupManagement.ts'\nimport api from './api.js'\nimport logger from '../logger.ts'\n\nconst localStorage = getBuilder('settings').persist(true).build()\n\nconst defaults = {\n\tgroup: {\n\t\tid: '',\n\t\tname: '',\n\t\tusercount: 0,\n\t\tdisabled: 0,\n\t\tcanAdd: true,\n\t\tcanRemove: true,\n\t},\n}\n\nconst state = {\n\tusers: [],\n\tgroups: [],\n\torderBy: GroupSorting.UserCount,\n\tminPasswordLength: 0,\n\tusersOffset: 0,\n\tusersLimit: 25,\n\tdisabledUsersOffset: 0,\n\tdisabledUsersLimit: 25,\n\tuserCount: 0,\n\tshowConfig: {\n\t\tshowStoragePath: localStorage.getItem('account_settings__showStoragePath') === 'true',\n\t\tshowUserBackend: localStorage.getItem('account_settings__showUserBackend') === 'true',\n\t\tshowLastLogin: localStorage.getItem('account_settings__showLastLogin') === 'true',\n\t\tshowNewUserForm: localStorage.getItem('account_settings__showNewUserForm') === 'true',\n\t\tshowLanguages: localStorage.getItem('account_settings__showLanguages') === 'true',\n\t},\n}\n\nconst mutations = {\n\tappendUsers(state, usersObj) {\n\t\tconst existingUsers = state.users.map(({ id }) => id)\n\t\tconst newUsers = Object.values(usersObj)\n\t\t\t.filter(({ id }) => !existingUsers.includes(id))\n\n\t\tconst users = state.users.concat(newUsers)\n\t\tstate.usersOffset += state.usersLimit\n\t\tstate.users = users\n\t},\n\tupdateDisabledUsers(state, _usersObj) {\n\t\tstate.disabledUsersOffset += state.disabledUsersLimit\n\t},\n\tsetPasswordPolicyMinLength(state, length) {\n\t\tstate.minPasswordLength = length !== '' ? length : 0\n\t},\n\tinitGroups(state, { groups, orderBy, userCount }) {\n\t\tstate.groups = groups.map(group => Object.assign({}, defaults.group, group))\n\t\tstate.orderBy = orderBy\n\t\tstate.userCount = userCount\n\t},\n\taddGroup(state, { gid, displayName }) {\n\t\ttry {\n\t\t\tif (typeof state.groups.find((group) => group.id === gid) !== 'undefined') {\n\t\t\t\treturn\n\t\t\t}\n\t\t\t// extend group to default values\n\t\t\tconst group = Object.assign({}, defaults.group, {\n\t\t\t\tid: gid,\n\t\t\t\tname: displayName,\n\t\t\t})\n\t\t\tstate.groups.unshift(group)\n\t\t} catch (e) {\n\t\t\tconsole.error('Can\\'t create group', e)\n\t\t}\n\t},\n\trenameGroup(state, { gid, displayName }) {\n\t\tconst groupIndex = state.groups.findIndex(groupSearch => groupSearch.id === gid)\n\t\tif (groupIndex >= 0) {\n\t\t\tconst updatedGroup = state.groups[groupIndex]\n\t\t\tupdatedGroup.name = displayName\n\t\t\tstate.groups.splice(groupIndex, 1, updatedGroup)\n\t\t}\n\t},\n\tremoveGroup(state, gid) {\n\t\tconst groupIndex = state.groups.findIndex(groupSearch => groupSearch.id === gid)\n\t\tif (groupIndex >= 0) {\n\t\t\tstate.groups.splice(groupIndex, 1)\n\t\t}\n\t},\n\taddUserGroup(state, { userid, gid }) {\n\t\tconst group = state.groups.find(groupSearch => groupSearch.id === gid)\n\t\tconst user = state.users.find(user => user.id === userid)\n\t\t// increase count if user is enabled\n\t\tif (group && user.enabled && state.userCount > 0) {\n\t\t\tgroup.usercount++\n\t\t}\n\t\tconst groups = user.groups\n\t\tgroups.push(gid)\n\t},\n\tremoveUserGroup(state, { userid, gid }) {\n\t\tconst group = state.groups.find(groupSearch => groupSearch.id === gid)\n\t\tconst user = state.users.find(user => user.id === userid)\n\t\t// lower count if user is enabled\n\t\tif (group && user.enabled && state.userCount > 0) {\n\t\t\tgroup.usercount--\n\t\t}\n\t\tconst groups = user.groups\n\t\tgroups.splice(groups.indexOf(gid), 1)\n\t},\n\taddUserSubAdmin(state, { userid, gid }) {\n\t\tconst groups = state.users.find(user => user.id === userid).subadmin\n\t\tgroups.push(gid)\n\t},\n\tremoveUserSubAdmin(state, { userid, gid }) {\n\t\tconst groups = state.users.find(user => user.id === userid).subadmin\n\t\tgroups.splice(groups.indexOf(gid), 1)\n\t},\n\tdeleteUser(state, userid) {\n\t\tconst userIndex = state.users.findIndex(user => user.id === userid)\n\t\tthis.commit('updateUserCounts', { user: state.users[userIndex], actionType: 'remove' })\n\t\tstate.users.splice(userIndex, 1)\n\t},\n\taddUserData(state, response) {\n\t\tconst user = response.data.ocs.data\n\t\tstate.users.unshift(user)\n\t\tthis.commit('updateUserCounts', { user, actionType: 'create' })\n\t},\n\tenableDisableUser(state, { userid, enabled }) {\n\t\tconst user = state.users.find(user => user.id === userid)\n\t\tuser.enabled = enabled\n\t\tthis.commit('updateUserCounts', { user, actionType: enabled ? 'enable' : 'disable' })\n\t},\n\t// update active/disabled counts, groups counts\n\tupdateUserCounts(state, { user, actionType }) {\n\t\t// 0 is a special value\n\t\tif (state.userCount === 0) {\n\t\t\treturn\n\t\t}\n\n\t\tconst disabledGroup = state.groups.find(group => group.id === 'disabled')\n\t\tswitch (actionType) {\n\t\tcase 'enable':\n\t\tcase 'disable':\n\t\t\tdisabledGroup.usercount += user.enabled ? -1 : 1 // update Disabled Users count\n\t\t\tstate.userCount += user.enabled ? 1 : -1 // update Active Users count\n\t\t\tuser.groups.forEach(userGroup => {\n\t\t\t\tconst group = state.groups.find(groupSearch => groupSearch.id === userGroup)\n\t\t\t\tgroup.disabled += user.enabled ? -1 : 1 // update group disabled count\n\t\t\t})\n\t\t\tbreak\n\t\tcase 'create':\n\t\t\tstate.userCount++ // increment Active Users count\n\n\t\t\tuser.groups.forEach(userGroup => {\n\t\t\t\tstate.groups\n\t\t\t\t\t.find(groupSearch => groupSearch.id === userGroup)\n\t\t\t\t .usercount++ // increment group total count\n\t\t\t})\n\t\t\tbreak\n\t\tcase 'remove':\n\t\t\tif (user.enabled) {\n\t\t\t\tstate.userCount-- // decrement Active Users count\n\t\t\t\tuser.groups.forEach(userGroup => {\n\t\t\t\t\tconst group = state.groups.find(groupSearch => groupSearch.id === userGroup)\n\t\t\t\t\tif (!group) {\n\t\t\t\t\t\tconsole.warn('User group ' + userGroup + ' does not exist during user removal')\n\t\t\t\t\t\treturn\n\t\t\t\t\t}\n\t\t\t\t\tgroup.usercount-- // decrement group total count\n\t\t\t\t})\n\t\t\t} else {\n\t\t\t\tdisabledGroup.usercount-- // decrement Disabled Users count\n\t\t\t\tuser.groups.forEach(userGroup => {\n\t\t\t\t\tconst group = state.groups.find(groupSearch => groupSearch.id === userGroup)\n\t\t\t\t\tgroup.disabled-- // decrement group disabled count\n\t\t\t\t})\n\t\t\t}\n\t\t\tbreak\n\t\tdefault:\n\t\t\tlogger.error(`Unknown action type in updateUserCounts: '${actionType}'`)\n\t\t\t// not throwing error to interrupt execution as this is not fatal\n\t\t}\n\t},\n\tsetUserData(state, { userid, key, value }) {\n\t\tif (key === 'quota') {\n\t\t\tconst humanValue = parseFileSize(value, true)\n\t\t\tstate.users.find(user => user.id === userid)[key][key] = humanValue !== null ? humanValue : value\n\t\t} else {\n\t\t\tstate.users.find(user => user.id === userid)[key] = value\n\t\t}\n\t},\n\n\t/**\n\t * Reset users list\n\t *\n\t * @param {object} state the store state\n\t */\n\tresetUsers(state) {\n\t\tstate.users = []\n\t\tstate.usersOffset = 0\n\t\tstate.disabledUsersOffset = 0\n\t},\n\n\tsetShowConfig(state, { key, value }) {\n\t\tlocalStorage.setItem(`account_settings__${key}`, JSON.stringify(value))\n\t\tstate.showConfig[key] = value\n\t},\n\n\tsetGroupSorting(state, sorting) {\n\t\tconst oldValue = state.orderBy\n\t\tstate.orderBy = sorting\n\n\t\t// Persist the value on the server\n\t\taxios.post(\n\t\t\tgenerateUrl('/settings/users/preferences/group.sortBy'),\n\t\t\t{\n\t\t\t\tvalue: String(sorting),\n\t\t\t},\n\t\t).catch((error) => {\n\t\t\tstate.orderBy = oldValue\n\t\t\tshowError(t('settings', 'Could not set group sorting'))\n\t\t\tlogger.error(error)\n\t\t})\n\t},\n}\n\nconst getters = {\n\tgetUsers(state) {\n\t\treturn state.users\n\t},\n\tgetGroups(state) {\n\t\treturn state.groups\n\t},\n\tgetSubadminGroups(state) {\n\t\t// Can't be subadmin of admin or disabled\n\t\treturn state.groups.filter(group => group.id !== 'admin' && group.id !== 'disabled')\n\t},\n\tgetSortedGroups(state) {\n\t\tconst groups = [...state.groups]\n\t\tif (state.orderBy === GroupSorting.UserCount) {\n\t\t\treturn groups.sort((a, b) => {\n\t\t\t\tconst numA = a.usercount - a.disabled\n\t\t\t\tconst numB = b.usercount - b.disabled\n\t\t\t\treturn (numA < numB) ? 1 : (numB < numA ? -1 : a.name.localeCompare(b.name))\n\t\t\t})\n\t\t} else {\n\t\t\treturn groups.sort((a, b) => a.name.localeCompare(b.name))\n\t\t}\n\t},\n\tgetGroupSorting(state) {\n\t\treturn state.orderBy\n\t},\n\tgetPasswordPolicyMinLength(state) {\n\t\treturn state.minPasswordLength\n\t},\n\tgetUsersOffset(state) {\n\t\treturn state.usersOffset\n\t},\n\tgetUsersLimit(state) {\n\t\treturn state.usersLimit\n\t},\n\tgetDisabledUsersOffset(state) {\n\t\treturn state.disabledUsersOffset\n\t},\n\tgetDisabledUsersLimit(state) {\n\t\treturn state.disabledUsersLimit\n\t},\n\tgetUserCount(state) {\n\t\treturn state.userCount\n\t},\n\tgetShowConfig(state) {\n\t\treturn state.showConfig\n\t},\n}\n\nconst CancelToken = axios.CancelToken\nlet searchRequestCancelSource = null\n\nconst actions = {\n\n\t/**\n\t * search users\n\t *\n\t * @param {object} context store context\n\t * @param {object} options destructuring object\n\t * @param {number} options.offset List offset to request\n\t * @param {number} options.limit List number to return from offset\n\t * @param {string} options.search Search amongst users\n\t * @return {Promise}\n\t */\n\tsearchUsers(context, { offset, limit, search }) {\n\t\tsearch = typeof search === 'string' ? search : ''\n\n\t\treturn api.get(generateOcsUrl('cloud/users/details?offset={offset}&limit={limit}&search={search}', { offset, limit, search })).catch((error) => {\n\t\t\tif (!axios.isCancel(error)) {\n\t\t\t\tcontext.commit('API_FAILURE', error)\n\t\t\t}\n\t\t})\n\t},\n\n\t/**\n\t * Get user details\n\t *\n\t * @param {object} context store context\n\t * @param {string} userId user id\n\t * @return {Promise}\n\t */\n\tgetUser(context, userId) {\n\t\treturn api.get(generateOcsUrl(`cloud/users/${userId}`)).catch((error) => {\n\t\t\tif (!axios.isCancel(error)) {\n\t\t\t\tcontext.commit('API_FAILURE', error)\n\t\t\t}\n\t\t})\n\t},\n\n\t/**\n\t * Get all users with full details\n\t *\n\t * @param {object} context store context\n\t * @param {object} options destructuring object\n\t * @param {number} options.offset List offset to request\n\t * @param {number} options.limit List number to return from offset\n\t * @param {string} options.search Search amongst users\n\t * @param {string} options.group Get users from group\n\t * @return {Promise}\n\t */\n\tgetUsers(context, { offset, limit, search, group }) {\n\t\tif (searchRequestCancelSource) {\n\t\t\tsearchRequestCancelSource.cancel('Operation canceled by another search request.')\n\t\t}\n\t\tsearchRequestCancelSource = CancelToken.source()\n\t\tsearch = typeof search === 'string' ? search : ''\n\n\t\t/**\n\t\t * Adding filters in the search bar such as in:files, in:users, etc.\n\t\t * collides with this particular search, so we need to remove them\n\t\t * here and leave only the original search query\n\t\t */\n\t\tsearch = search.replace(/in:[^\\s]+/g, '').trim()\n\n\t\tgroup = typeof group === 'string' ? group : ''\n\t\tif (group !== '') {\n\t\t\treturn api.get(generateOcsUrl('cloud/groups/{group}/users/details?offset={offset}&limit={limit}&search={search}', { group: encodeURIComponent(group), offset, limit, search }), {\n\t\t\t\tcancelToken: searchRequestCancelSource.token,\n\t\t\t})\n\t\t\t\t.then((response) => {\n\t\t\t\t\tconst usersCount = Object.keys(response.data.ocs.data.users).length\n\t\t\t\t\tif (usersCount > 0) {\n\t\t\t\t\t\tcontext.commit('appendUsers', response.data.ocs.data.users)\n\t\t\t\t\t}\n\t\t\t\t\treturn usersCount\n\t\t\t\t})\n\t\t\t\t.catch((error) => {\n\t\t\t\t\tif (!axios.isCancel(error)) {\n\t\t\t\t\t\tcontext.commit('API_FAILURE', error)\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t}\n\n\t\treturn api.get(generateOcsUrl('cloud/users/details?offset={offset}&limit={limit}&search={search}', { offset, limit, search }), {\n\t\t\tcancelToken: searchRequestCancelSource.token,\n\t\t})\n\t\t\t.then((response) => {\n\t\t\t\tconst usersCount = Object.keys(response.data.ocs.data.users).length\n\t\t\t\tif (usersCount > 0) {\n\t\t\t\t\tcontext.commit('appendUsers', response.data.ocs.data.users)\n\t\t\t\t}\n\t\t\t\treturn usersCount\n\t\t\t})\n\t\t\t.catch((error) => {\n\t\t\t\tif (!axios.isCancel(error)) {\n\t\t\t\t\tcontext.commit('API_FAILURE', error)\n\t\t\t\t}\n\t\t\t})\n\t},\n\n\t/**\n\t * Get disabled users with full details\n\t *\n\t * @param {object} context store context\n\t * @param {object} options destructuring object\n\t * @param {number} options.offset List offset to request\n\t * @param {number} options.limit List number to return from offset\n\t * @return {Promise<number>}\n\t */\n\tasync getDisabledUsers(context, { offset, limit }) {\n\t\tconst url = generateOcsUrl('cloud/users/disabled?offset={offset}&limit={limit}', { offset, limit })\n\t\ttry {\n\t\t\tconst response = await api.get(url)\n\t\t\tconst usersCount = Object.keys(response.data.ocs.data.users).length\n\t\t\tif (usersCount > 0) {\n\t\t\t\tcontext.commit('appendUsers', response.data.ocs.data.users)\n\t\t\t\tcontext.commit('updateDisabledUsers', response.data.ocs.data.users)\n\t\t\t}\n\t\t\treturn usersCount\n\t\t} catch (error) {\n\t\t\tcontext.commit('API_FAILURE', error)\n\t\t}\n\t},\n\n\tgetGroups(context, { offset, limit, search }) {\n\t\tsearch = typeof search === 'string' ? search : ''\n\t\tconst limitParam = limit === -1 ? '' : `&limit=${limit}`\n\t\treturn api.get(generateOcsUrl('cloud/groups?offset={offset}&search={search}', { offset, search }) + limitParam)\n\t\t\t.then((response) => {\n\t\t\t\tif (Object.keys(response.data.ocs.data.groups).length > 0) {\n\t\t\t\t\tresponse.data.ocs.data.groups.forEach(function(group) {\n\t\t\t\t\t\tcontext.commit('addGroup', { gid: group, displayName: group })\n\t\t\t\t\t})\n\t\t\t\t\treturn true\n\t\t\t\t}\n\t\t\t\treturn false\n\t\t\t})\n\t\t\t.catch((error) => context.commit('API_FAILURE', error))\n\t},\n\n\t/**\n\t * Get all users with full details\n\t *\n\t * @param {object} context store context\n\t * @param {object} options destructuring object\n\t * @param {number} options.offset List offset to request\n\t * @param {number} options.limit List number to return from offset\n\t * @param {string} options.search -\n\t * @return {Promise}\n\t */\n\tgetUsersFromList(context, { offset, limit, search }) {\n\t\tsearch = typeof search === 'string' ? search : ''\n\t\treturn api.get(generateOcsUrl('cloud/users/details?offset={offset}&limit={limit}&search={search}', { offset, limit, search }))\n\t\t\t.then((response) => {\n\t\t\t\tif (Object.keys(response.data.ocs.data.users).length > 0) {\n\t\t\t\t\tcontext.commit('appendUsers', response.data.ocs.data.users)\n\t\t\t\t\treturn true\n\t\t\t\t}\n\t\t\t\treturn false\n\t\t\t})\n\t\t\t.catch((error) => context.commit('API_FAILURE', error))\n\t},\n\n\t/**\n\t * Get all users with full details from a groupid\n\t *\n\t * @param {object} context store context\n\t * @param {object} options destructuring object\n\t * @param {number} options.offset List offset to request\n\t * @param {number} options.limit List number to return from offset\n\t * @param {string} options.groupid -\n\t * @return {Promise}\n\t */\n\tgetUsersFromGroup(context, { groupid, offset, limit }) {\n\t\treturn api.get(generateOcsUrl('cloud/users/{groupId}/details?offset={offset}&limit={limit}', { groupId: encodeURIComponent(groupid), offset, limit }))\n\t\t\t.then((response) => context.commit('getUsersFromList', response.data.ocs.data.users))\n\t\t\t.catch((error) => context.commit('API_FAILURE', error))\n\t},\n\n\tgetPasswordPolicyMinLength(context) {\n\t\tif (getCapabilities().password_policy && getCapabilities().password_policy.minLength) {\n\t\t\tcontext.commit('setPasswordPolicyMinLength', getCapabilities().password_policy.minLength)\n\t\t\treturn getCapabilities().password_policy.minLength\n\t\t}\n\t\treturn false\n\t},\n\n\t/**\n\t * Add group\n\t *\n\t * @param {object} context store context\n\t * @param {string} gid Group id\n\t * @return {Promise}\n\t */\n\taddGroup(context, gid) {\n\t\treturn api.requireAdmin().then((response) => {\n\t\t\treturn api.post(generateOcsUrl('cloud/groups'), { groupid: gid })\n\t\t\t\t.then((response) => {\n\t\t\t\t\tcontext.commit('addGroup', { gid, displayName: gid })\n\t\t\t\t\treturn { gid, displayName: gid }\n\t\t\t\t})\n\t\t\t\t.catch((error) => { throw error })\n\t\t}).catch((error) => {\n\t\t\tcontext.commit('API_FAILURE', { gid, error })\n\t\t\t// let's throw one more time to prevent the view\n\t\t\t// from adding the user to a group that doesn't exists\n\t\t\tthrow error\n\t\t})\n\t},\n\n\t/**\n\t * Rename group\n\t *\n\t * @param {object} context store context\n\t * @param {string} groupid Group id\n\t * @param {string} displayName Group display name\n\t * @return {Promise}\n\t */\n\trenameGroup(context, { groupid, displayName }) {\n\t\treturn api.requireAdmin().then((response) => {\n\t\t\treturn api.put(generateOcsUrl('cloud/groups/{groupId}', { groupId: encodeURIComponent(groupid) }), { key: 'displayname', value: displayName })\n\t\t\t\t.then((response) => {\n\t\t\t\t\tcontext.commit('renameGroup', { gid: groupid, displayName })\n\t\t\t\t\treturn { groupid, displayName }\n\t\t\t\t})\n\t\t\t\t.catch((error) => { throw error })\n\t\t}).catch((error) => {\n\t\t\tcontext.commit('API_FAILURE', { groupid, error })\n\t\t\t// let's throw one more time to prevent the view\n\t\t\t// from renaming the group\n\t\t\tthrow error\n\t\t})\n\t},\n\n\t/**\n\t * Remove group\n\t *\n\t * @param {object} context store context\n\t * @param {string} gid Group id\n\t * @return {Promise}\n\t */\n\tremoveGroup(context, gid) {\n\t\treturn api.requireAdmin().then((response) => {\n\t\t\treturn api.delete(generateOcsUrl('cloud/groups/{groupId}', { groupId: encodeURIComponent(gid) }))\n\t\t\t\t.then((response) => context.commit('removeGroup', gid))\n\t\t\t\t.catch((error) => { throw error })\n\t\t}).catch((error) => context.commit('API_FAILURE', { gid, error }))\n\t},\n\n\t/**\n\t * Add user to group\n\t *\n\t * @param {object} context store context\n\t * @param {object} options destructuring object\n\t * @param {string} options.userid User id\n\t * @param {string} options.gid Group id\n\t * @return {Promise}\n\t */\n\taddUserGroup(context, { userid, gid }) {\n\t\treturn api.requireAdmin().then((response) => {\n\t\t\treturn api.post(generateOcsUrl('cloud/users/{userid}/groups', { userid }), { groupid: gid })\n\t\t\t\t.then((response) => context.commit('addUserGroup', { userid, gid }))\n\t\t\t\t.catch((error) => { throw error })\n\t\t}).catch((error) => context.commit('API_FAILURE', { userid, error }))\n\t},\n\n\t/**\n\t * Remove user from group\n\t *\n\t * @param {object} context store context\n\t * @param {object} options destructuring object\n\t * @param {string} options.userid User id\n\t * @param {string} options.gid Group id\n\t * @return {Promise}\n\t */\n\tremoveUserGroup(context, { userid, gid }) {\n\t\treturn api.requireAdmin().then((response) => {\n\t\t\treturn api.delete(generateOcsUrl('cloud/users/{userid}/groups', { userid }), { groupid: gid })\n\t\t\t\t.then((response) => context.commit('removeUserGroup', { userid, gid }))\n\t\t\t\t.catch((error) => { throw error })\n\t\t}).catch((error) => {\n\t\t\tcontext.commit('API_FAILURE', { userid, error })\n\t\t\t// let's throw one more time to prevent\n\t\t\t// the view from removing the user row on failure\n\t\t\tthrow error\n\t\t})\n\t},\n\n\t/**\n\t * Add user to group admin\n\t *\n\t * @param {object} context store context\n\t * @param {object} options destructuring object\n\t * @param {string} options.userid User id\n\t * @param {string} options.gid Group id\n\t * @return {Promise}\n\t */\n\taddUserSubAdmin(context, { userid, gid }) {\n\t\treturn api.requireAdmin().then((response) => {\n\t\t\treturn api.post(generateOcsUrl('cloud/users/{userid}/subadmins', { userid }), { groupid: gid })\n\t\t\t\t.then((response) => context.commit('addUserSubAdmin', { userid, gid }))\n\t\t\t\t.catch((error) => { throw error })\n\t\t}).catch((error) => context.commit('API_FAILURE', { userid, error }))\n\t},\n\n\t/**\n\t * Remove user from group admin\n\t *\n\t * @param {object} context store context\n\t * @param {object} options destructuring object\n\t * @param {string} options.userid User id\n\t * @param {string} options.gid Group id\n\t * @return {Promise}\n\t */\n\tremoveUserSubAdmin(context, { userid, gid }) {\n\t\treturn api.requireAdmin().then((response) => {\n\t\t\treturn api.delete(generateOcsUrl('cloud/users/{userid}/subadmins', { userid }), { groupid: gid })\n\t\t\t\t.then((response) => context.commit('removeUserSubAdmin', { userid, gid }))\n\t\t\t\t.catch((error) => { throw error })\n\t\t}).catch((error) => context.commit('API_FAILURE', { userid, error }))\n\t},\n\n\t/**\n\t * Mark all user devices for remote wipe\n\t *\n\t * @param {object} context store context\n\t * @param {string} userid User id\n\t * @return {Promise}\n\t */\n\twipeUserDevices(context, userid) {\n\t\treturn api.requireAdmin().then((response) => {\n\t\t\treturn api.post(generateOcsUrl('cloud/users/{userid}/wipe', { userid }))\n\t\t\t\t.catch((error) => { throw error })\n\t\t}).catch((error) => context.commit('API_FAILURE', { userid, error }))\n\t},\n\n\t/**\n\t * Delete a user\n\t *\n\t * @param {object} context store context\n\t * @param {string} userid User id\n\t * @return {Promise}\n\t */\n\tdeleteUser(context, userid) {\n\t\treturn api.requireAdmin().then((response) => {\n\t\t\treturn api.delete(generateOcsUrl('cloud/users/{userid}', { userid }))\n\t\t\t\t.then((response) => context.commit('deleteUser', userid))\n\t\t\t\t.catch((error) => { throw error })\n\t\t}).catch((error) => context.commit('API_FAILURE', { userid, error }))\n\t},\n\n\t/**\n\t * Add a user\n\t *\n\t * @param {object} context store context\n\t * @param {Function} context.commit -\n\t * @param {Function} context.dispatch -\n\t * @param {object} options destructuring object\n\t * @param {string} options.userid User id\n\t * @param {string} options.password User password\n\t * @param {string} options.displayName User display name\n\t * @param {string} options.email User email\n\t * @param {string} options.groups User groups\n\t * @param {string} options.subadmin User subadmin groups\n\t * @param {string} options.quota User email\n\t * @param {string} options.language User language\n\t * @param {string} options.manager User manager\n\t * @return {Promise}\n\t */\n\taddUser({ commit, dispatch }, { userid, password, displayName, email, groups, subadmin, quota, language, manager }) {\n\t\treturn api.requireAdmin().then((response) => {\n\t\t\treturn api.post(generateOcsUrl('cloud/users'), { userid, password, displayName, email, groups, subadmin, quota, language, manager })\n\t\t\t\t.then((response) => dispatch('addUserData', userid || response.data.ocs.data.id))\n\t\t\t\t.catch((error) => { throw error })\n\t\t}).catch((error) => {\n\t\t\tcommit('API_FAILURE', { userid, error })\n\t\t\tthrow error\n\t\t})\n\t},\n\n\t/**\n\t * Get user data and commit addition\n\t *\n\t * @param {object} context store context\n\t * @param {string} userid User id\n\t * @return {Promise}\n\t */\n\taddUserData(context, userid) {\n\t\treturn api.requireAdmin().then((response) => {\n\t\t\treturn api.get(generateOcsUrl('cloud/users/{userid}', { userid }))\n\t\t\t\t.then((response) => context.commit('addUserData', response))\n\t\t\t\t.catch((error) => { throw error })\n\t\t}).catch((error) => context.commit('API_FAILURE', { userid, error }))\n\t},\n\n\t/**\n\t * Enable or disable user\n\t *\n\t * @param {object} context store context\n\t * @param {object} options destructuring object\n\t * @param {string} options.userid User id\n\t * @param {boolean} options.enabled User enablement status\n\t * @return {Promise}\n\t */\n\tenableDisableUser(context, { userid, enabled = true }) {\n\t\tconst userStatus = enabled ? 'enable' : 'disable'\n\t\treturn api.requireAdmin().then((response) => {\n\t\t\treturn api.put(generateOcsUrl('cloud/users/{userid}/{userStatus}', { userid, userStatus }))\n\t\t\t\t.then((response) => context.commit('enableDisableUser', { userid, enabled }))\n\t\t\t\t.catch((error) => { throw error })\n\t\t}).catch((error) => context.commit('API_FAILURE', { userid, error }))\n\t},\n\n\t/**\n\t * Edit user data\n\t *\n\t * @param {object} context store context\n\t * @param {object} options destructuring object\n\t * @param {string} options.userid User id\n\t * @param {string} options.key User field to edit\n\t * @param {string} options.value Value of the change\n\t * @return {Promise}\n\t */\n\tsetUserData(context, { userid, key, value }) {\n\t\tconst allowedEmpty = ['email', 'displayname', 'manager']\n\t\tif (['email', 'language', 'quota', 'displayname', 'password', 'manager'].indexOf(key) !== -1) {\n\t\t\t// We allow empty email or displayname\n\t\t\tif (typeof value === 'string'\n\t\t\t\t&& (\n\t\t\t\t\t(allowedEmpty.indexOf(key) === -1 && value.length > 0)\n\t\t\t\t\t|| allowedEmpty.indexOf(key) !== -1\n\t\t\t\t)\n\t\t\t) {\n\t\t\t\treturn api.requireAdmin().then((response) => {\n\t\t\t\t\treturn api.put(generateOcsUrl('cloud/users/{userid}', { userid }), { key, value })\n\t\t\t\t\t\t.then((response) => context.commit('setUserData', { userid, key, value }))\n\t\t\t\t\t\t.catch((error) => { throw error })\n\t\t\t\t}).catch((error) => context.commit('API_FAILURE', { userid, error }))\n\t\t\t}\n\t\t}\n\t\treturn Promise.reject(new Error('Invalid request data'))\n\t},\n\n\t/**\n\t * Send welcome mail\n\t *\n\t * @param {object} context store context\n\t * @param {string} userid User id\n\t * @return {Promise}\n\t */\n\tsendWelcomeMail(context, userid) {\n\t\treturn api.requireAdmin().then((response) => {\n\t\t\treturn api.post(generateOcsUrl('cloud/users/{userid}/welcome', { userid }))\n\t\t\t\t.then(response => true)\n\t\t\t\t.catch((error) => { throw error })\n\t\t}).catch((error) => context.commit('API_FAILURE', { userid, error }))\n\t},\n}\n\nexport default { state, mutations, getters, actions }\n","/**\n * @copyright Copyright (c) 2018 Julius Härtl <jus@bitgrid.net>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Julius Härtl <jus@bitgrid.net>\n * @author Roeland Jago Douma <roeland@famdouma.nl>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport api from './api.js'\nimport Vue from 'vue'\nimport { generateUrl } from '@nextcloud/router'\nimport { showError, showInfo } from '@nextcloud/dialogs'\nimport { loadState } from '@nextcloud/initial-state'\n\nconst state = {\n\tapps: [],\n\tbundles: loadState('settings', 'appstoreBundles', []),\n\tcategories: [],\n\tupdateCount: loadState('settings', 'appstoreUpdateCount', 0),\n\tloading: {},\n\tgettingCategoriesPromise: null,\n}\n\nconst mutations = {\n\n\tAPPS_API_FAILURE(state, error) {\n\t\tshowError(t('settings', 'An error occurred during the request. Unable to proceed.') + '<br>' + error.error.response.data.data.message, { isHTML: true })\n\t\tconsole.error(state, error)\n\t},\n\n\tinitCategories(state, { categories, updateCount }) {\n\t\tstate.categories = categories\n\t\tstate.updateCount = updateCount\n\t},\n\n\tupdateCategories(state, categoriesPromise) {\n\t\tstate.gettingCategoriesPromise = categoriesPromise\n\t},\n\n\tsetUpdateCount(state, updateCount) {\n\t\tstate.updateCount = updateCount\n\t},\n\n\taddCategory(state, category) {\n\t\tstate.categories.push(category)\n\t},\n\n\tappendCategories(state, categoriesArray) {\n\t\t// convert obj to array\n\t\tstate.categories = categoriesArray\n\t},\n\n\tsetAllApps(state, apps) {\n\t\tstate.apps = apps\n\t},\n\n\tsetError(state, { appId, error }) {\n\t\tif (!Array.isArray(appId)) {\n\t\t\tappId = [appId]\n\t\t}\n\t\tappId.forEach((_id) => {\n\t\t\tconst app = state.apps.find(app => app.id === _id)\n\t\t\tapp.error = error\n\t\t})\n\t},\n\n\tclearError(state, { appId, error }) {\n\t\tconst app = state.apps.find(app => app.id === appId)\n\t\tapp.error = null\n\t},\n\n\tenableApp(state, { appId, groups }) {\n\t\tconst app = state.apps.find(app => app.id === appId)\n\t\tapp.active = true\n\t\tapp.groups = groups\n\t},\n\n\tsetInstallState(state, { appId, canInstall }) {\n\t\tconst app = state.apps.find(app => app.id === appId)\n\t\tif (app) {\n\t\t\tapp.canInstall = canInstall === true\n\t\t}\n\t},\n\n\tdisableApp(state, appId) {\n\t\tconst app = state.apps.find(app => app.id === appId)\n\t\tapp.active = false\n\t\tapp.groups = []\n\t\tif (app.removable) {\n\t\t\tapp.canUnInstall = true\n\t\t}\n\t},\n\n\tuninstallApp(state, appId) {\n\t\tstate.apps.find(app => app.id === appId).active = false\n\t\tstate.apps.find(app => app.id === appId).groups = []\n\t\tstate.apps.find(app => app.id === appId).needsDownload = true\n\t\tstate.apps.find(app => app.id === appId).installed = false\n\t\tstate.apps.find(app => app.id === appId).canUnInstall = false\n\t\tstate.apps.find(app => app.id === appId).canInstall = true\n\t},\n\n\tupdateApp(state, appId) {\n\t\tconst app = state.apps.find(app => app.id === appId)\n\t\tconst version = app.update\n\t\tapp.update = null\n\t\tapp.version = version\n\t\tstate.updateCount--\n\n\t},\n\n\tresetApps(state) {\n\t\tstate.apps = []\n\t},\n\treset(state) {\n\t\tstate.apps = []\n\t\tstate.categories = []\n\t\tstate.updateCount = 0\n\t},\n\tstartLoading(state, id) {\n\t\tif (Array.isArray(id)) {\n\t\t\tid.forEach((_id) => {\n\t\t\t\tVue.set(state.loading, _id, true)\n\t\t\t})\n\t\t} else {\n\t\t\tVue.set(state.loading, id, true)\n\t\t}\n\t},\n\tstopLoading(state, id) {\n\t\tif (Array.isArray(id)) {\n\t\t\tid.forEach((_id) => {\n\t\t\t\tVue.set(state.loading, _id, false)\n\t\t\t})\n\t\t} else {\n\t\t\tVue.set(state.loading, id, false)\n\t\t}\n\t},\n}\n\nconst getters = {\n\tloading(state) {\n\t\treturn function(id) {\n\t\t\treturn state.loading[id]\n\t\t}\n\t},\n\tgetCategories(state) {\n\t\treturn state.categories\n\t},\n\tgetAllApps(state) {\n\t\treturn state.apps\n\t},\n\tgetAppBundles(state) {\n\t\treturn state.bundles\n\t},\n\tgetUpdateCount(state) {\n\t\treturn state.updateCount\n\t},\n\tgetCategoryById: (state) => (selectedCategoryId) => {\n\t\treturn state.categories.find((category) => category.id === selectedCategoryId)\n\t},\n}\n\nconst actions = {\n\n\tenableApp(context, { appId, groups }) {\n\t\tlet apps\n\t\tif (Array.isArray(appId)) {\n\t\t\tapps = appId\n\t\t} else {\n\t\t\tapps = [appId]\n\t\t}\n\t\treturn api.requireAdmin().then((response) => {\n\t\t\tcontext.commit('startLoading', apps)\n\t\t\tcontext.commit('startLoading', 'install')\n\t\t\treturn api.post(generateUrl('settings/apps/enable'), { appIds: apps, groups })\n\t\t\t\t.then((response) => {\n\t\t\t\t\tcontext.commit('stopLoading', apps)\n\t\t\t\t\tcontext.commit('stopLoading', 'install')\n\t\t\t\t\tapps.forEach(_appId => {\n\t\t\t\t\t\tcontext.commit('enableApp', { appId: _appId, groups })\n\t\t\t\t\t})\n\n\t\t\t\t\t// check for server health\n\t\t\t\t\treturn api.get(generateUrl('apps/files/'))\n\t\t\t\t\t\t.then(() => {\n\t\t\t\t\t\t\tif (response.data.update_required) {\n\t\t\t\t\t\t\t\tshowInfo(\n\t\t\t\t\t\t\t\t\tt(\n\t\t\t\t\t\t\t\t\t\t'settings',\n\t\t\t\t\t\t\t\t\t\t'The app has been enabled but needs to be updated. You will be redirected to the update page in 5 seconds.'\n\t\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\tonClick: () => window.location.reload(),\n\t\t\t\t\t\t\t\t\t\tclose: false,\n\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\tsetTimeout(function() {\n\t\t\t\t\t\t\t\t\tlocation.reload()\n\t\t\t\t\t\t\t\t}, 5000)\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t})\n\t\t\t\t\t\t.catch(() => {\n\t\t\t\t\t\t\tif (!Array.isArray(appId)) {\n\t\t\t\t\t\t\t\tshowError(t('settings', 'Error: This app cannot be enabled because it makes the server unstable'))\n\t\t\t\t\t\t\t\tcontext.commit('setError', {\n\t\t\t\t\t\t\t\t\tappId: apps,\n\t\t\t\t\t\t\t\t\terror: t('settings', 'Error: This app cannot be enabled because it makes the server unstable'),\n\t\t\t\t\t\t\t\t})\n\t\t\t\t\t\t\t\tcontext.dispatch('disableApp', { appId })\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t})\n\t\t\t\t})\n\t\t\t\t.catch((error) => {\n\t\t\t\t\tcontext.commit('stopLoading', apps)\n\t\t\t\t\tcontext.commit('stopLoading', 'install')\n\t\t\t\t\tcontext.commit('setError', {\n\t\t\t\t\t\tappId: apps,\n\t\t\t\t\t\terror: error.response.data.data.message,\n\t\t\t\t\t})\n\t\t\t\t\tcontext.commit('APPS_API_FAILURE', { appId, error })\n\t\t\t\t})\n\t\t}).catch((error) => context.commit('API_FAILURE', { appId, error }))\n\t},\n\tforceEnableApp(context, { appId, groups }) {\n\t\tlet apps\n\t\tif (Array.isArray(appId)) {\n\t\t\tapps = appId\n\t\t} else {\n\t\t\tapps = [appId]\n\t\t}\n\t\treturn api.requireAdmin().then(() => {\n\t\t\tcontext.commit('startLoading', apps)\n\t\t\tcontext.commit('startLoading', 'install')\n\t\t\treturn api.post(generateUrl('settings/apps/force'), { appId })\n\t\t\t\t.then((response) => {\n\t\t\t\t\tcontext.commit('setInstallState', { appId, canInstall: true })\n\t\t\t\t})\n\t\t\t\t.catch((error) => {\n\t\t\t\t\tcontext.commit('stopLoading', apps)\n\t\t\t\t\tcontext.commit('stopLoading', 'install')\n\t\t\t\t\tcontext.commit('setError', {\n\t\t\t\t\t\tappId: apps,\n\t\t\t\t\t\terror: error.response.data.data.message,\n\t\t\t\t\t})\n\t\t\t\t\tcontext.commit('APPS_API_FAILURE', { appId, error })\n\t\t\t\t})\n\t\t\t\t.finally(() => {\n\t\t\t\t\tcontext.commit('stopLoading', apps)\n\t\t\t\t\tcontext.commit('stopLoading', 'install')\n\t\t\t\t})\n\t\t}).catch((error) => context.commit('API_FAILURE', { appId, error }))\n\t},\n\tdisableApp(context, { appId }) {\n\t\tlet apps\n\t\tif (Array.isArray(appId)) {\n\t\t\tapps = appId\n\t\t} else {\n\t\t\tapps = [appId]\n\t\t}\n\t\treturn api.requireAdmin().then((response) => {\n\t\t\tcontext.commit('startLoading', apps)\n\t\t\treturn api.post(generateUrl('settings/apps/disable'), { appIds: apps })\n\t\t\t\t.then((response) => {\n\t\t\t\t\tcontext.commit('stopLoading', apps)\n\t\t\t\t\tapps.forEach(_appId => {\n\t\t\t\t\t\tcontext.commit('disableApp', _appId)\n\t\t\t\t\t})\n\t\t\t\t\treturn true\n\t\t\t\t})\n\t\t\t\t.catch((error) => {\n\t\t\t\t\tcontext.commit('stopLoading', apps)\n\t\t\t\t\tcontext.commit('APPS_API_FAILURE', { appId, error })\n\t\t\t\t})\n\t\t}).catch((error) => context.commit('API_FAILURE', { appId, error }))\n\t},\n\tuninstallApp(context, { appId }) {\n\t\treturn api.requireAdmin().then((response) => {\n\t\t\tcontext.commit('startLoading', appId)\n\t\t\treturn api.get(generateUrl(`settings/apps/uninstall/${appId}`))\n\t\t\t\t.then((response) => {\n\t\t\t\t\tcontext.commit('stopLoading', appId)\n\t\t\t\t\tcontext.commit('uninstallApp', appId)\n\t\t\t\t\treturn true\n\t\t\t\t})\n\t\t\t\t.catch((error) => {\n\t\t\t\t\tcontext.commit('stopLoading', appId)\n\t\t\t\t\tcontext.commit('APPS_API_FAILURE', { appId, error })\n\t\t\t\t})\n\t\t}).catch((error) => context.commit('API_FAILURE', { appId, error }))\n\t},\n\n\tupdateApp(context, { appId }) {\n\t\treturn api.requireAdmin().then((response) => {\n\t\t\tcontext.commit('startLoading', appId)\n\t\t\tcontext.commit('startLoading', 'install')\n\t\t\treturn api.get(generateUrl(`settings/apps/update/${appId}`))\n\t\t\t\t.then((response) => {\n\t\t\t\t\tcontext.commit('stopLoading', 'install')\n\t\t\t\t\tcontext.commit('stopLoading', appId)\n\t\t\t\t\tcontext.commit('updateApp', appId)\n\t\t\t\t\treturn true\n\t\t\t\t})\n\t\t\t\t.catch((error) => {\n\t\t\t\t\tcontext.commit('stopLoading', appId)\n\t\t\t\t\tcontext.commit('stopLoading', 'install')\n\t\t\t\t\tcontext.commit('APPS_API_FAILURE', { appId, error })\n\t\t\t\t})\n\t\t}).catch((error) => context.commit('API_FAILURE', { appId, error }))\n\t},\n\n\tgetAllApps(context) {\n\t\tcontext.commit('startLoading', 'list')\n\t\treturn api.get(generateUrl('settings/apps/list'))\n\t\t\t.then((response) => {\n\t\t\t\tcontext.commit('setAllApps', response.data.apps)\n\t\t\t\tcontext.commit('stopLoading', 'list')\n\t\t\t\treturn true\n\t\t\t})\n\t\t\t.catch((error) => context.commit('API_FAILURE', error))\n\t},\n\n\tasync getCategories(context, { shouldRefetchCategories = false } = {}) {\n\t\tif (shouldRefetchCategories || !context.state.gettingCategoriesPromise) {\n\t\t\tcontext.commit('startLoading', 'categories')\n\t\t\ttry {\n\t\t\t\tconst categoriesPromise = api.get(generateUrl('settings/apps/categories'))\n\t\t\t\tcontext.commit('updateCategories', categoriesPromise)\n\t\t\t\tconst categoriesPromiseResponse = await categoriesPromise\n\t\t\t\tif (categoriesPromiseResponse.data.length > 0) {\n\t\t\t\t\tcontext.commit('appendCategories', categoriesPromiseResponse.data)\n\t\t\t\t\tcontext.commit('stopLoading', 'categories')\n\t\t\t\t\treturn true\n\t\t\t\t}\n\t\t\t\tcontext.commit('stopLoading', 'categories')\n\t\t\t\treturn false\n\t\t\t} catch (error) {\n\t\t\t\tcontext.commit('API_FAILURE', error)\n\t\t\t}\n\t\t}\n\t\treturn context.state.gettingCategoriesPromise\n\t},\n\n}\n\nexport default { state, mutations, getters, actions }\n","/**\n * @copyright Copyright (c) 2018 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport { loadState } from '@nextcloud/initial-state'\n\nconst state = {\n\tserverData: loadState('settings', 'usersSettings', {}),\n}\nconst mutations = {\n\tsetServerData(state, data) {\n\t\tstate.serverData = data\n\t},\n}\nconst getters = {\n\tgetServerData(state) {\n\t\treturn state.serverData\n\t},\n}\nconst actions = {}\n\nexport default { state, mutations, getters, actions }\n","/**\n * @copyright Copyright (c) 2018 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Roeland Jago Douma <roeland@famdouma.nl>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport api from './api.js'\nimport { generateOcsUrl } from '@nextcloud/router'\n\nconst state = {}\nconst mutations = {}\nconst getters = {}\nconst actions = {\n\t/**\n\t * Set application config in database\n\t *\n\t * @param {object} context store context\n\t * @param {object} options destructuring object\n\t * @param {string} options.app Application name\n\t * @param {boolean} options.key Config key\n\t * @param {boolean} options.value Value to set\n\t * @return {Promise}\n\t */\n\tsetAppConfig(context, { app, key, value }) {\n\t\treturn api.requireAdmin().then((response) => {\n\t\t\treturn api.post(generateOcsUrl('apps/provisioning_api/api/v1/config/apps/{app}/{key}', { app, key }), { value })\n\t\t\t\t.catch((error) => { throw error })\n\t\t}).catch((error) => context.commit('API_FAILURE', { app, key, value, error }))\n\t},\n}\n\nexport default { state, mutations, getters, actions }\n","/**\n * @copyright Copyright (c) 2018 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Julius Härtl <jus@bitgrid.net>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport Vue from 'vue'\nimport Vuex, { Store } from 'vuex'\nimport users from './users.js'\nimport apps from './apps.js'\nimport settings from './users-settings.js'\nimport oc from './oc.js'\nimport { showError } from '@nextcloud/dialogs'\n\nVue.use(Vuex)\n\nconst debug = process.env.NODE_ENV !== 'production'\n\nconst mutations = {\n\tAPI_FAILURE(state, error) {\n\t\ttry {\n\t\t\tconst message = error.error.response.data.ocs.meta.message\n\t\t\tshowError(t('settings', 'An error occurred during the request. Unable to proceed.') + '<br>' + message, { isHTML: true })\n\t\t} catch (e) {\n\t\t\tshowError(t('settings', 'An error occurred during the request. Unable to proceed.'))\n\t\t}\n\t\tconsole.error(state, error)\n\t},\n}\n\nlet store = null\n\nexport const useStore = () => {\n\tif (store === null) {\n\t\tstore = new Store({\n\t\t\tmodules: {\n\t\t\t\tusers,\n\t\t\t\tapps,\n\t\t\t\tsettings,\n\t\t\t\toc,\n\t\t\t},\n\t\t\tstrict: debug,\n\t\t\tmutations,\n\t\t})\n\t}\n\treturn store\n}\n","/**\n * @copyright Copyright (c) 2024 Ferdinand Thiessen <opensource@fthiessen.de>\n *\n * @author Ferdinand Thiessen <opensource@fthiessen.de>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n/**\n * https://github.com/nextcloud/server/blob/208e38e84e1a07a49699aa90dc5b7272d24489f0/lib/private/Group/MetaData.php#L34\n */\nexport var GroupSorting;\n(function (GroupSorting) {\n GroupSorting[GroupSorting[\"UserCount\"] = 1] = \"UserCount\";\n GroupSorting[GroupSorting[\"GroupName\"] = 2] = \"GroupName\";\n})(GroupSorting || (GroupSorting = {}));\n","/**\n * @copyright 2020 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\nimport { getLoggerBuilder } from '@nextcloud/logger';\nexport default getLoggerBuilder()\n .setApp('settings')\n .detectUser()\n .build();\n","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c(_setup.NcContent,{attrs:{\"app-name\":\"settings\"}},[_c('router-view',{attrs:{\"name\":\"navigation\"}}),_vm._v(\" \"),_c('router-view'),_vm._v(\" \"),_c('router-view',{attrs:{\"name\":\"sidebar\"}})],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-4.use[1]!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SettingsApp.vue?vue&type=script&setup=true&lang=ts\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-4.use[1]!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SettingsApp.vue?vue&type=script&setup=true&lang=ts\"","import { render, staticRenderFns } from \"./SettingsApp.vue?vue&type=template&id=b0b62a76\"\nimport script from \"./SettingsApp.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./SettingsApp.vue?vue&type=script&setup=true&lang=ts\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","// Dynamic loading\nconst AppStore = () => import(/* webpackChunkName: 'settings-apps-view' */ '../views/AppStore.vue');\nconst AppStoreNavigation = () => import(/* webpackChunkName: 'settings-apps-view' */ '../views/AppStoreNavigation.vue');\nconst AppStoreSidebar = () => import(/* webpackChunkName: 'settings-apps-view' */ '../views/AppStoreSidebar.vue');\nconst UserManagement = () => import(/* webpackChunkName: 'settings-users' */ '../views/UserManagement.vue');\nconst UserManagementNavigation = () => import(/* webpackChunkName: 'settings-users' */ '../views/UserManagementNavigation.vue');\nconst routes = [\n {\n name: 'users',\n path: '/:index(index.php/)?settings/users',\n components: {\n default: UserManagement,\n navigation: UserManagementNavigation,\n },\n props: true,\n children: [\n {\n path: ':selectedGroup',\n name: 'group',\n },\n ],\n },\n {\n path: '/:index(index.php/)?settings/apps',\n name: 'apps',\n // redirect to our default route - the app discover section\n redirect: {\n name: 'apps-category',\n params: {\n category: 'discover',\n },\n },\n components: {\n default: AppStore,\n navigation: AppStoreNavigation,\n sidebar: AppStoreSidebar,\n },\n children: [\n {\n path: ':category',\n name: 'apps-category',\n children: [\n {\n path: ':id',\n name: 'apps-details',\n },\n ],\n },\n ],\n },\n];\nexport default routes;\n","/**\n * @copyright Copyright (c) 2018 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Julius Härtl <jus@bitgrid.net>\n * @author Roeland Jago Douma <roeland@famdouma.nl>\n * @author Ferdinand Thiessen <opensource@fthiessen.de>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\nimport Vue from 'vue';\nimport Router from 'vue-router';\nimport { generateUrl } from '@nextcloud/router';\nimport routes from './routes.ts';\nVue.use(Router);\nconst router = new Router({\n mode: 'history',\n // if index.php is in the url AND we got this far, then it's working:\n // let's keep using index.php in the url\n base: generateUrl(''),\n linkActiveClass: 'active',\n routes,\n});\nexport default router;\n","/**\n * @copyright Copyright (c) 2018 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author rakekniven <mark.ziegler@rakekniven.de>\n * @author Roeland Jago Douma <roeland@famdouma.nl>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\nimport Vue from 'vue';\nimport VTooltip from 'v-tooltip';\nimport { sync } from 'vuex-router-sync';\nimport { translate as t, translatePlural as n } from '@nextcloud/l10n';\nimport SettingsApp from './views/SettingsApp.vue';\nimport router from './router/index.ts';\nimport { useStore } from './store/index.js';\nimport { getRequestToken } from '@nextcloud/auth';\nimport { PiniaVuePlugin, createPinia } from 'pinia';\nVue.use(VTooltip, { defaultHtml: false });\nconst store = useStore();\nsync(store, router);\n// CSP config for webpack dynamic chunk loading\n// eslint-disable-next-line camelcase\n__webpack_nonce__ = btoa(getRequestToken() ?? '');\n// bind to window\nVue.prototype.t = t;\nVue.prototype.n = n;\nVue.use(PiniaVuePlugin);\nconst pinia = createPinia();\nexport default new Vue({\n router,\n store,\n pinia,\n render: h => h(SettingsApp),\n el: '#content',\n});\n","/*!\n * vue-router v3.6.5\n * (c) 2022 Evan You\n * @license MIT\n */\n/* */\n\nfunction assert (condition, message) {\n if (!condition) {\n throw new Error((\"[vue-router] \" + message))\n }\n}\n\nfunction warn (condition, message) {\n if (!condition) {\n typeof console !== 'undefined' && console.warn((\"[vue-router] \" + message));\n }\n}\n\nfunction extend (a, b) {\n for (var key in b) {\n a[key] = b[key];\n }\n return a\n}\n\n/* */\n\nvar encodeReserveRE = /[!'()*]/g;\nvar encodeReserveReplacer = function (c) { return '%' + c.charCodeAt(0).toString(16); };\nvar commaRE = /%2C/g;\n\n// fixed encodeURIComponent which is more conformant to RFC3986:\n// - escapes [!'()*]\n// - preserve commas\nvar encode = function (str) { return encodeURIComponent(str)\n .replace(encodeReserveRE, encodeReserveReplacer)\n .replace(commaRE, ','); };\n\nfunction decode (str) {\n try {\n return decodeURIComponent(str)\n } catch (err) {\n if (process.env.NODE_ENV !== 'production') {\n warn(false, (\"Error decoding \\\"\" + str + \"\\\". Leaving it intact.\"));\n }\n }\n return str\n}\n\nfunction resolveQuery (\n query,\n extraQuery,\n _parseQuery\n) {\n if ( extraQuery === void 0 ) extraQuery = {};\n\n var parse = _parseQuery || parseQuery;\n var parsedQuery;\n try {\n parsedQuery = parse(query || '');\n } catch (e) {\n process.env.NODE_ENV !== 'production' && warn(false, e.message);\n parsedQuery = {};\n }\n for (var key in extraQuery) {\n var value = extraQuery[key];\n parsedQuery[key] = Array.isArray(value)\n ? value.map(castQueryParamValue)\n : castQueryParamValue(value);\n }\n return parsedQuery\n}\n\nvar castQueryParamValue = function (value) { return (value == null || typeof value === 'object' ? value : String(value)); };\n\nfunction parseQuery (query) {\n var res = {};\n\n query = query.trim().replace(/^(\\?|#|&)/, '');\n\n if (!query) {\n return res\n }\n\n query.split('&').forEach(function (param) {\n var parts = param.replace(/\\+/g, ' ').split('=');\n var key = decode(parts.shift());\n var val = parts.length > 0 ? decode(parts.join('=')) : null;\n\n if (res[key] === undefined) {\n res[key] = val;\n } else if (Array.isArray(res[key])) {\n res[key].push(val);\n } else {\n res[key] = [res[key], val];\n }\n });\n\n return res\n}\n\nfunction stringifyQuery (obj) {\n var res = obj\n ? Object.keys(obj)\n .map(function (key) {\n var val = obj[key];\n\n if (val === undefined) {\n return ''\n }\n\n if (val === null) {\n return encode(key)\n }\n\n if (Array.isArray(val)) {\n var result = [];\n val.forEach(function (val2) {\n if (val2 === undefined) {\n return\n }\n if (val2 === null) {\n result.push(encode(key));\n } else {\n result.push(encode(key) + '=' + encode(val2));\n }\n });\n return result.join('&')\n }\n\n return encode(key) + '=' + encode(val)\n })\n .filter(function (x) { return x.length > 0; })\n .join('&')\n : null;\n return res ? (\"?\" + res) : ''\n}\n\n/* */\n\nvar trailingSlashRE = /\\/?$/;\n\nfunction createRoute (\n record,\n location,\n redirectedFrom,\n router\n) {\n var stringifyQuery = router && router.options.stringifyQuery;\n\n var query = location.query || {};\n try {\n query = clone(query);\n } catch (e) {}\n\n var route = {\n name: location.name || (record && record.name),\n meta: (record && record.meta) || {},\n path: location.path || '/',\n hash: location.hash || '',\n query: query,\n params: location.params || {},\n fullPath: getFullPath(location, stringifyQuery),\n matched: record ? formatMatch(record) : []\n };\n if (redirectedFrom) {\n route.redirectedFrom = getFullPath(redirectedFrom, stringifyQuery);\n }\n return Object.freeze(route)\n}\n\nfunction clone (value) {\n if (Array.isArray(value)) {\n return value.map(clone)\n } else if (value && typeof value === 'object') {\n var res = {};\n for (var key in value) {\n res[key] = clone(value[key]);\n }\n return res\n } else {\n return value\n }\n}\n\n// the starting route that represents the initial state\nvar START = createRoute(null, {\n path: '/'\n});\n\nfunction formatMatch (record) {\n var res = [];\n while (record) {\n res.unshift(record);\n record = record.parent;\n }\n return res\n}\n\nfunction getFullPath (\n ref,\n _stringifyQuery\n) {\n var path = ref.path;\n var query = ref.query; if ( query === void 0 ) query = {};\n var hash = ref.hash; if ( hash === void 0 ) hash = '';\n\n var stringify = _stringifyQuery || stringifyQuery;\n return (path || '/') + stringify(query) + hash\n}\n\nfunction isSameRoute (a, b, onlyPath) {\n if (b === START) {\n return a === b\n } else if (!b) {\n return false\n } else if (a.path && b.path) {\n return a.path.replace(trailingSlashRE, '') === b.path.replace(trailingSlashRE, '') && (onlyPath ||\n a.hash === b.hash &&\n isObjectEqual(a.query, b.query))\n } else if (a.name && b.name) {\n return (\n a.name === b.name &&\n (onlyPath || (\n a.hash === b.hash &&\n isObjectEqual(a.query, b.query) &&\n isObjectEqual(a.params, b.params))\n )\n )\n } else {\n return false\n }\n}\n\nfunction isObjectEqual (a, b) {\n if ( a === void 0 ) a = {};\n if ( b === void 0 ) b = {};\n\n // handle null value #1566\n if (!a || !b) { return a === b }\n var aKeys = Object.keys(a).sort();\n var bKeys = Object.keys(b).sort();\n if (aKeys.length !== bKeys.length) {\n return false\n }\n return aKeys.every(function (key, i) {\n var aVal = a[key];\n var bKey = bKeys[i];\n if (bKey !== key) { return false }\n var bVal = b[key];\n // query values can be null and undefined\n if (aVal == null || bVal == null) { return aVal === bVal }\n // check nested equality\n if (typeof aVal === 'object' && typeof bVal === 'object') {\n return isObjectEqual(aVal, bVal)\n }\n return String(aVal) === String(bVal)\n })\n}\n\nfunction isIncludedRoute (current, target) {\n return (\n current.path.replace(trailingSlashRE, '/').indexOf(\n target.path.replace(trailingSlashRE, '/')\n ) === 0 &&\n (!target.hash || current.hash === target.hash) &&\n queryIncludes(current.query, target.query)\n )\n}\n\nfunction queryIncludes (current, target) {\n for (var key in target) {\n if (!(key in current)) {\n return false\n }\n }\n return true\n}\n\nfunction handleRouteEntered (route) {\n for (var i = 0; i < route.matched.length; i++) {\n var record = route.matched[i];\n for (var name in record.instances) {\n var instance = record.instances[name];\n var cbs = record.enteredCbs[name];\n if (!instance || !cbs) { continue }\n delete record.enteredCbs[name];\n for (var i$1 = 0; i$1 < cbs.length; i$1++) {\n if (!instance._isBeingDestroyed) { cbs[i$1](instance); }\n }\n }\n }\n}\n\nvar View = {\n name: 'RouterView',\n functional: true,\n props: {\n name: {\n type: String,\n default: 'default'\n }\n },\n render: function render (_, ref) {\n var props = ref.props;\n var children = ref.children;\n var parent = ref.parent;\n var data = ref.data;\n\n // used by devtools to display a router-view badge\n data.routerView = true;\n\n // directly use parent context's createElement() function\n // so that components rendered by router-view can resolve named slots\n var h = parent.$createElement;\n var name = props.name;\n var route = parent.$route;\n var cache = parent._routerViewCache || (parent._routerViewCache = {});\n\n // determine current view depth, also check to see if the tree\n // has been toggled inactive but kept-alive.\n var depth = 0;\n var inactive = false;\n while (parent && parent._routerRoot !== parent) {\n var vnodeData = parent.$vnode ? parent.$vnode.data : {};\n if (vnodeData.routerView) {\n depth++;\n }\n if (vnodeData.keepAlive && parent._directInactive && parent._inactive) {\n inactive = true;\n }\n parent = parent.$parent;\n }\n data.routerViewDepth = depth;\n\n // render previous view if the tree is inactive and kept-alive\n if (inactive) {\n var cachedData = cache[name];\n var cachedComponent = cachedData && cachedData.component;\n if (cachedComponent) {\n // #2301\n // pass props\n if (cachedData.configProps) {\n fillPropsinData(cachedComponent, data, cachedData.route, cachedData.configProps);\n }\n return h(cachedComponent, data, children)\n } else {\n // render previous empty view\n return h()\n }\n }\n\n var matched = route.matched[depth];\n var component = matched && matched.components[name];\n\n // render empty node if no matched route or no config component\n if (!matched || !component) {\n cache[name] = null;\n return h()\n }\n\n // cache component\n cache[name] = { component: component };\n\n // attach instance registration hook\n // this will be called in the instance's injected lifecycle hooks\n data.registerRouteInstance = function (vm, val) {\n // val could be undefined for unregistration\n var current = matched.instances[name];\n if (\n (val && current !== vm) ||\n (!val && current === vm)\n ) {\n matched.instances[name] = val;\n }\n }\n\n // also register instance in prepatch hook\n // in case the same component instance is reused across different routes\n ;(data.hook || (data.hook = {})).prepatch = function (_, vnode) {\n matched.instances[name] = vnode.componentInstance;\n };\n\n // register instance in init hook\n // in case kept-alive component be actived when routes changed\n data.hook.init = function (vnode) {\n if (vnode.data.keepAlive &&\n vnode.componentInstance &&\n vnode.componentInstance !== matched.instances[name]\n ) {\n matched.instances[name] = vnode.componentInstance;\n }\n\n // if the route transition has already been confirmed then we weren't\n // able to call the cbs during confirmation as the component was not\n // registered yet, so we call it here.\n handleRouteEntered(route);\n };\n\n var configProps = matched.props && matched.props[name];\n // save route and configProps in cache\n if (configProps) {\n extend(cache[name], {\n route: route,\n configProps: configProps\n });\n fillPropsinData(component, data, route, configProps);\n }\n\n return h(component, data, children)\n }\n};\n\nfunction fillPropsinData (component, data, route, configProps) {\n // resolve props\n var propsToPass = data.props = resolveProps(route, configProps);\n if (propsToPass) {\n // clone to prevent mutation\n propsToPass = data.props = extend({}, propsToPass);\n // pass non-declared props as attrs\n var attrs = data.attrs = data.attrs || {};\n for (var key in propsToPass) {\n if (!component.props || !(key in component.props)) {\n attrs[key] = propsToPass[key];\n delete propsToPass[key];\n }\n }\n }\n}\n\nfunction resolveProps (route, config) {\n switch (typeof config) {\n case 'undefined':\n return\n case 'object':\n return config\n case 'function':\n return config(route)\n case 'boolean':\n return config ? route.params : undefined\n default:\n if (process.env.NODE_ENV !== 'production') {\n warn(\n false,\n \"props in \\\"\" + (route.path) + \"\\\" is a \" + (typeof config) + \", \" +\n \"expecting an object, function or boolean.\"\n );\n }\n }\n}\n\n/* */\n\nfunction resolvePath (\n relative,\n base,\n append\n) {\n var firstChar = relative.charAt(0);\n if (firstChar === '/') {\n return relative\n }\n\n if (firstChar === '?' || firstChar === '#') {\n return base + relative\n }\n\n var stack = base.split('/');\n\n // remove trailing segment if:\n // - not appending\n // - appending to trailing slash (last segment is empty)\n if (!append || !stack[stack.length - 1]) {\n stack.pop();\n }\n\n // resolve relative path\n var segments = relative.replace(/^\\//, '').split('/');\n for (var i = 0; i < segments.length; i++) {\n var segment = segments[i];\n if (segment === '..') {\n stack.pop();\n } else if (segment !== '.') {\n stack.push(segment);\n }\n }\n\n // ensure leading slash\n if (stack[0] !== '') {\n stack.unshift('');\n }\n\n return stack.join('/')\n}\n\nfunction parsePath (path) {\n var hash = '';\n var query = '';\n\n var hashIndex = path.indexOf('#');\n if (hashIndex >= 0) {\n hash = path.slice(hashIndex);\n path = path.slice(0, hashIndex);\n }\n\n var queryIndex = path.indexOf('?');\n if (queryIndex >= 0) {\n query = path.slice(queryIndex + 1);\n path = path.slice(0, queryIndex);\n }\n\n return {\n path: path,\n query: query,\n hash: hash\n }\n}\n\nfunction cleanPath (path) {\n return path.replace(/\\/(?:\\s*\\/)+/g, '/')\n}\n\nvar isarray = Array.isArray || function (arr) {\n return Object.prototype.toString.call(arr) == '[object Array]';\n};\n\n/**\n * Expose `pathToRegexp`.\n */\nvar pathToRegexp_1 = pathToRegexp;\nvar parse_1 = parse;\nvar compile_1 = compile;\nvar tokensToFunction_1 = tokensToFunction;\nvar tokensToRegExp_1 = tokensToRegExp;\n\n/**\n * The main path matching regexp utility.\n *\n * @type {RegExp}\n */\nvar PATH_REGEXP = new RegExp([\n // Match escaped characters that would otherwise appear in future matches.\n // This allows the user to escape special characters that won't transform.\n '(\\\\\\\\.)',\n // Match Express-style parameters and un-named parameters with a prefix\n // and optional suffixes. Matches appear as:\n //\n // \"/:test(\\\\d+)?\" => [\"/\", \"test\", \"\\d+\", undefined, \"?\", undefined]\n // \"/route(\\\\d+)\" => [undefined, undefined, undefined, \"\\d+\", undefined, undefined]\n // \"/*\" => [\"/\", undefined, undefined, undefined, undefined, \"*\"]\n '([\\\\/.])?(?:(?:\\\\:(\\\\w+)(?:\\\\(((?:\\\\\\\\.|[^\\\\\\\\()])+)\\\\))?|\\\\(((?:\\\\\\\\.|[^\\\\\\\\()])+)\\\\))([+*?])?|(\\\\*))'\n].join('|'), 'g');\n\n/**\n * Parse a string for the raw tokens.\n *\n * @param {string} str\n * @param {Object=} options\n * @return {!Array}\n */\nfunction parse (str, options) {\n var tokens = [];\n var key = 0;\n var index = 0;\n var path = '';\n var defaultDelimiter = options && options.delimiter || '/';\n var res;\n\n while ((res = PATH_REGEXP.exec(str)) != null) {\n var m = res[0];\n var escaped = res[1];\n var offset = res.index;\n path += str.slice(index, offset);\n index = offset + m.length;\n\n // Ignore already escaped sequences.\n if (escaped) {\n path += escaped[1];\n continue\n }\n\n var next = str[index];\n var prefix = res[2];\n var name = res[3];\n var capture = res[4];\n var group = res[5];\n var modifier = res[6];\n var asterisk = res[7];\n\n // Push the current path onto the tokens.\n if (path) {\n tokens.push(path);\n path = '';\n }\n\n var partial = prefix != null && next != null && next !== prefix;\n var repeat = modifier === '+' || modifier === '*';\n var optional = modifier === '?' || modifier === '*';\n var delimiter = res[2] || defaultDelimiter;\n var pattern = capture || group;\n\n tokens.push({\n name: name || key++,\n prefix: prefix || '',\n delimiter: delimiter,\n optional: optional,\n repeat: repeat,\n partial: partial,\n asterisk: !!asterisk,\n pattern: pattern ? escapeGroup(pattern) : (asterisk ? '.*' : '[^' + escapeString(delimiter) + ']+?')\n });\n }\n\n // Match any characters still remaining.\n if (index < str.length) {\n path += str.substr(index);\n }\n\n // If the path exists, push it onto the end.\n if (path) {\n tokens.push(path);\n }\n\n return tokens\n}\n\n/**\n * Compile a string to a template function for the path.\n *\n * @param {string} str\n * @param {Object=} options\n * @return {!function(Object=, Object=)}\n */\nfunction compile (str, options) {\n return tokensToFunction(parse(str, options), options)\n}\n\n/**\n * Prettier encoding of URI path segments.\n *\n * @param {string}\n * @return {string}\n */\nfunction encodeURIComponentPretty (str) {\n return encodeURI(str).replace(/[\\/?#]/g, function (c) {\n return '%' + c.charCodeAt(0).toString(16).toUpperCase()\n })\n}\n\n/**\n * Encode the asterisk parameter. Similar to `pretty`, but allows slashes.\n *\n * @param {string}\n * @return {string}\n */\nfunction encodeAsterisk (str) {\n return encodeURI(str).replace(/[?#]/g, function (c) {\n return '%' + c.charCodeAt(0).toString(16).toUpperCase()\n })\n}\n\n/**\n * Expose a method for transforming tokens into the path function.\n */\nfunction tokensToFunction (tokens, options) {\n // Compile all the tokens into regexps.\n var matches = new Array(tokens.length);\n\n // Compile all the patterns before compilation.\n for (var i = 0; i < tokens.length; i++) {\n if (typeof tokens[i] === 'object') {\n matches[i] = new RegExp('^(?:' + tokens[i].pattern + ')$', flags(options));\n }\n }\n\n return function (obj, opts) {\n var path = '';\n var data = obj || {};\n var options = opts || {};\n var encode = options.pretty ? encodeURIComponentPretty : encodeURIComponent;\n\n for (var i = 0; i < tokens.length; i++) {\n var token = tokens[i];\n\n if (typeof token === 'string') {\n path += token;\n\n continue\n }\n\n var value = data[token.name];\n var segment;\n\n if (value == null) {\n if (token.optional) {\n // Prepend partial segment prefixes.\n if (token.partial) {\n path += token.prefix;\n }\n\n continue\n } else {\n throw new TypeError('Expected \"' + token.name + '\" to be defined')\n }\n }\n\n if (isarray(value)) {\n if (!token.repeat) {\n throw new TypeError('Expected \"' + token.name + '\" to not repeat, but received `' + JSON.stringify(value) + '`')\n }\n\n if (value.length === 0) {\n if (token.optional) {\n continue\n } else {\n throw new TypeError('Expected \"' + token.name + '\" to not be empty')\n }\n }\n\n for (var j = 0; j < value.length; j++) {\n segment = encode(value[j]);\n\n if (!matches[i].test(segment)) {\n throw new TypeError('Expected all \"' + token.name + '\" to match \"' + token.pattern + '\", but received `' + JSON.stringify(segment) + '`')\n }\n\n path += (j === 0 ? token.prefix : token.delimiter) + segment;\n }\n\n continue\n }\n\n segment = token.asterisk ? encodeAsterisk(value) : encode(value);\n\n if (!matches[i].test(segment)) {\n throw new TypeError('Expected \"' + token.name + '\" to match \"' + token.pattern + '\", but received \"' + segment + '\"')\n }\n\n path += token.prefix + segment;\n }\n\n return path\n }\n}\n\n/**\n * Escape a regular expression string.\n *\n * @param {string} str\n * @return {string}\n */\nfunction escapeString (str) {\n return str.replace(/([.+*?=^!:${}()[\\]|\\/\\\\])/g, '\\\\$1')\n}\n\n/**\n * Escape the capturing group by escaping special characters and meaning.\n *\n * @param {string} group\n * @return {string}\n */\nfunction escapeGroup (group) {\n return group.replace(/([=!:$\\/()])/g, '\\\\$1')\n}\n\n/**\n * Attach the keys as a property of the regexp.\n *\n * @param {!RegExp} re\n * @param {Array} keys\n * @return {!RegExp}\n */\nfunction attachKeys (re, keys) {\n re.keys = keys;\n return re\n}\n\n/**\n * Get the flags for a regexp from the options.\n *\n * @param {Object} options\n * @return {string}\n */\nfunction flags (options) {\n return options && options.sensitive ? '' : 'i'\n}\n\n/**\n * Pull out keys from a regexp.\n *\n * @param {!RegExp} path\n * @param {!Array} keys\n * @return {!RegExp}\n */\nfunction regexpToRegexp (path, keys) {\n // Use a negative lookahead to match only capturing groups.\n var groups = path.source.match(/\\((?!\\?)/g);\n\n if (groups) {\n for (var i = 0; i < groups.length; i++) {\n keys.push({\n name: i,\n prefix: null,\n delimiter: null,\n optional: false,\n repeat: false,\n partial: false,\n asterisk: false,\n pattern: null\n });\n }\n }\n\n return attachKeys(path, keys)\n}\n\n/**\n * Transform an array into a regexp.\n *\n * @param {!Array} path\n * @param {Array} keys\n * @param {!Object} options\n * @return {!RegExp}\n */\nfunction arrayToRegexp (path, keys, options) {\n var parts = [];\n\n for (var i = 0; i < path.length; i++) {\n parts.push(pathToRegexp(path[i], keys, options).source);\n }\n\n var regexp = new RegExp('(?:' + parts.join('|') + ')', flags(options));\n\n return attachKeys(regexp, keys)\n}\n\n/**\n * Create a path regexp from string input.\n *\n * @param {string} path\n * @param {!Array} keys\n * @param {!Object} options\n * @return {!RegExp}\n */\nfunction stringToRegexp (path, keys, options) {\n return tokensToRegExp(parse(path, options), keys, options)\n}\n\n/**\n * Expose a function for taking tokens and returning a RegExp.\n *\n * @param {!Array} tokens\n * @param {(Array|Object)=} keys\n * @param {Object=} options\n * @return {!RegExp}\n */\nfunction tokensToRegExp (tokens, keys, options) {\n if (!isarray(keys)) {\n options = /** @type {!Object} */ (keys || options);\n keys = [];\n }\n\n options = options || {};\n\n var strict = options.strict;\n var end = options.end !== false;\n var route = '';\n\n // Iterate over the tokens and create our regexp string.\n for (var i = 0; i < tokens.length; i++) {\n var token = tokens[i];\n\n if (typeof token === 'string') {\n route += escapeString(token);\n } else {\n var prefix = escapeString(token.prefix);\n var capture = '(?:' + token.pattern + ')';\n\n keys.push(token);\n\n if (token.repeat) {\n capture += '(?:' + prefix + capture + ')*';\n }\n\n if (token.optional) {\n if (!token.partial) {\n capture = '(?:' + prefix + '(' + capture + '))?';\n } else {\n capture = prefix + '(' + capture + ')?';\n }\n } else {\n capture = prefix + '(' + capture + ')';\n }\n\n route += capture;\n }\n }\n\n var delimiter = escapeString(options.delimiter || '/');\n var endsWithDelimiter = route.slice(-delimiter.length) === delimiter;\n\n // In non-strict mode we allow a slash at the end of match. If the path to\n // match already ends with a slash, we remove it for consistency. The slash\n // is valid at the end of a path match, not in the middle. This is important\n // in non-ending mode, where \"/test/\" shouldn't match \"/test//route\".\n if (!strict) {\n route = (endsWithDelimiter ? route.slice(0, -delimiter.length) : route) + '(?:' + delimiter + '(?=$))?';\n }\n\n if (end) {\n route += '$';\n } else {\n // In non-ending mode, we need the capturing groups to match as much as\n // possible by using a positive lookahead to the end or next path segment.\n route += strict && endsWithDelimiter ? '' : '(?=' + delimiter + '|$)';\n }\n\n return attachKeys(new RegExp('^' + route, flags(options)), keys)\n}\n\n/**\n * Normalize the given path string, returning a regular expression.\n *\n * An empty array can be passed in for the keys, which will hold the\n * placeholder key descriptions. For example, using `/user/:id`, `keys` will\n * contain `[{ name: 'id', delimiter: '/', optional: false, repeat: false }]`.\n *\n * @param {(string|RegExp|Array)} path\n * @param {(Array|Object)=} keys\n * @param {Object=} options\n * @return {!RegExp}\n */\nfunction pathToRegexp (path, keys, options) {\n if (!isarray(keys)) {\n options = /** @type {!Object} */ (keys || options);\n keys = [];\n }\n\n options = options || {};\n\n if (path instanceof RegExp) {\n return regexpToRegexp(path, /** @type {!Array} */ (keys))\n }\n\n if (isarray(path)) {\n return arrayToRegexp(/** @type {!Array} */ (path), /** @type {!Array} */ (keys), options)\n }\n\n return stringToRegexp(/** @type {string} */ (path), /** @type {!Array} */ (keys), options)\n}\npathToRegexp_1.parse = parse_1;\npathToRegexp_1.compile = compile_1;\npathToRegexp_1.tokensToFunction = tokensToFunction_1;\npathToRegexp_1.tokensToRegExp = tokensToRegExp_1;\n\n/* */\n\n// $flow-disable-line\nvar regexpCompileCache = Object.create(null);\n\nfunction fillParams (\n path,\n params,\n routeMsg\n) {\n params = params || {};\n try {\n var filler =\n regexpCompileCache[path] ||\n (regexpCompileCache[path] = pathToRegexp_1.compile(path));\n\n // Fix #2505 resolving asterisk routes { name: 'not-found', params: { pathMatch: '/not-found' }}\n // and fix #3106 so that you can work with location descriptor object having params.pathMatch equal to empty string\n if (typeof params.pathMatch === 'string') { params[0] = params.pathMatch; }\n\n return filler(params, { pretty: true })\n } catch (e) {\n if (process.env.NODE_ENV !== 'production') {\n // Fix #3072 no warn if `pathMatch` is string\n warn(typeof params.pathMatch === 'string', (\"missing param for \" + routeMsg + \": \" + (e.message)));\n }\n return ''\n } finally {\n // delete the 0 if it was added\n delete params[0];\n }\n}\n\n/* */\n\nfunction normalizeLocation (\n raw,\n current,\n append,\n router\n) {\n var next = typeof raw === 'string' ? { path: raw } : raw;\n // named target\n if (next._normalized) {\n return next\n } else if (next.name) {\n next = extend({}, raw);\n var params = next.params;\n if (params && typeof params === 'object') {\n next.params = extend({}, params);\n }\n return next\n }\n\n // relative params\n if (!next.path && next.params && current) {\n next = extend({}, next);\n next._normalized = true;\n var params$1 = extend(extend({}, current.params), next.params);\n if (current.name) {\n next.name = current.name;\n next.params = params$1;\n } else if (current.matched.length) {\n var rawPath = current.matched[current.matched.length - 1].path;\n next.path = fillParams(rawPath, params$1, (\"path \" + (current.path)));\n } else if (process.env.NODE_ENV !== 'production') {\n warn(false, \"relative params navigation requires a current route.\");\n }\n return next\n }\n\n var parsedPath = parsePath(next.path || '');\n var basePath = (current && current.path) || '/';\n var path = parsedPath.path\n ? resolvePath(parsedPath.path, basePath, append || next.append)\n : basePath;\n\n var query = resolveQuery(\n parsedPath.query,\n next.query,\n router && router.options.parseQuery\n );\n\n var hash = next.hash || parsedPath.hash;\n if (hash && hash.charAt(0) !== '#') {\n hash = \"#\" + hash;\n }\n\n return {\n _normalized: true,\n path: path,\n query: query,\n hash: hash\n }\n}\n\n/* */\n\n// work around weird flow bug\nvar toTypes = [String, Object];\nvar eventTypes = [String, Array];\n\nvar noop = function () {};\n\nvar warnedCustomSlot;\nvar warnedTagProp;\nvar warnedEventProp;\n\nvar Link = {\n name: 'RouterLink',\n props: {\n to: {\n type: toTypes,\n required: true\n },\n tag: {\n type: String,\n default: 'a'\n },\n custom: Boolean,\n exact: Boolean,\n exactPath: Boolean,\n append: Boolean,\n replace: Boolean,\n activeClass: String,\n exactActiveClass: String,\n ariaCurrentValue: {\n type: String,\n default: 'page'\n },\n event: {\n type: eventTypes,\n default: 'click'\n }\n },\n render: function render (h) {\n var this$1$1 = this;\n\n var router = this.$router;\n var current = this.$route;\n var ref = router.resolve(\n this.to,\n current,\n this.append\n );\n var location = ref.location;\n var route = ref.route;\n var href = ref.href;\n\n var classes = {};\n var globalActiveClass = router.options.linkActiveClass;\n var globalExactActiveClass = router.options.linkExactActiveClass;\n // Support global empty active class\n var activeClassFallback =\n globalActiveClass == null ? 'router-link-active' : globalActiveClass;\n var exactActiveClassFallback =\n globalExactActiveClass == null\n ? 'router-link-exact-active'\n : globalExactActiveClass;\n var activeClass =\n this.activeClass == null ? activeClassFallback : this.activeClass;\n var exactActiveClass =\n this.exactActiveClass == null\n ? exactActiveClassFallback\n : this.exactActiveClass;\n\n var compareTarget = route.redirectedFrom\n ? createRoute(null, normalizeLocation(route.redirectedFrom), null, router)\n : route;\n\n classes[exactActiveClass] = isSameRoute(current, compareTarget, this.exactPath);\n classes[activeClass] = this.exact || this.exactPath\n ? classes[exactActiveClass]\n : isIncludedRoute(current, compareTarget);\n\n var ariaCurrentValue = classes[exactActiveClass] ? this.ariaCurrentValue : null;\n\n var handler = function (e) {\n if (guardEvent(e)) {\n if (this$1$1.replace) {\n router.replace(location, noop);\n } else {\n router.push(location, noop);\n }\n }\n };\n\n var on = { click: guardEvent };\n if (Array.isArray(this.event)) {\n this.event.forEach(function (e) {\n on[e] = handler;\n });\n } else {\n on[this.event] = handler;\n }\n\n var data = { class: classes };\n\n var scopedSlot =\n !this.$scopedSlots.$hasNormal &&\n this.$scopedSlots.default &&\n this.$scopedSlots.default({\n href: href,\n route: route,\n navigate: handler,\n isActive: classes[activeClass],\n isExactActive: classes[exactActiveClass]\n });\n\n if (scopedSlot) {\n if (process.env.NODE_ENV !== 'production' && !this.custom) {\n !warnedCustomSlot && warn(false, 'In Vue Router 4, the v-slot API will by default wrap its content with an <a> element. Use the custom prop to remove this warning:\\n<router-link v-slot=\"{ navigate, href }\" custom></router-link>\\n');\n warnedCustomSlot = true;\n }\n if (scopedSlot.length === 1) {\n return scopedSlot[0]\n } else if (scopedSlot.length > 1 || !scopedSlot.length) {\n if (process.env.NODE_ENV !== 'production') {\n warn(\n false,\n (\"<router-link> with to=\\\"\" + (this.to) + \"\\\" is trying to use a scoped slot but it didn't provide exactly one child. Wrapping the content with a span element.\")\n );\n }\n return scopedSlot.length === 0 ? h() : h('span', {}, scopedSlot)\n }\n }\n\n if (process.env.NODE_ENV !== 'production') {\n if ('tag' in this.$options.propsData && !warnedTagProp) {\n warn(\n false,\n \"<router-link>'s tag prop is deprecated and has been removed in Vue Router 4. Use the v-slot API to remove this warning: https://next.router.vuejs.org/guide/migration/#removal-of-event-and-tag-props-in-router-link.\"\n );\n warnedTagProp = true;\n }\n if ('event' in this.$options.propsData && !warnedEventProp) {\n warn(\n false,\n \"<router-link>'s event prop is deprecated and has been removed in Vue Router 4. Use the v-slot API to remove this warning: https://next.router.vuejs.org/guide/migration/#removal-of-event-and-tag-props-in-router-link.\"\n );\n warnedEventProp = true;\n }\n }\n\n if (this.tag === 'a') {\n data.on = on;\n data.attrs = { href: href, 'aria-current': ariaCurrentValue };\n } else {\n // find the first <a> child and apply listener and href\n var a = findAnchor(this.$slots.default);\n if (a) {\n // in case the <a> is a static node\n a.isStatic = false;\n var aData = (a.data = extend({}, a.data));\n aData.on = aData.on || {};\n // transform existing events in both objects into arrays so we can push later\n for (var event in aData.on) {\n var handler$1 = aData.on[event];\n if (event in on) {\n aData.on[event] = Array.isArray(handler$1) ? handler$1 : [handler$1];\n }\n }\n // append new listeners for router-link\n for (var event$1 in on) {\n if (event$1 in aData.on) {\n // on[event] is always a function\n aData.on[event$1].push(on[event$1]);\n } else {\n aData.on[event$1] = handler;\n }\n }\n\n var aAttrs = (a.data.attrs = extend({}, a.data.attrs));\n aAttrs.href = href;\n aAttrs['aria-current'] = ariaCurrentValue;\n } else {\n // doesn't have <a> child, apply listener to self\n data.on = on;\n }\n }\n\n return h(this.tag, data, this.$slots.default)\n }\n};\n\nfunction guardEvent (e) {\n // don't redirect with control keys\n if (e.metaKey || e.altKey || e.ctrlKey || e.shiftKey) { return }\n // don't redirect when preventDefault called\n if (e.defaultPrevented) { return }\n // don't redirect on right click\n if (e.button !== undefined && e.button !== 0) { return }\n // don't redirect if `target=\"_blank\"`\n if (e.currentTarget && e.currentTarget.getAttribute) {\n var target = e.currentTarget.getAttribute('target');\n if (/\\b_blank\\b/i.test(target)) { return }\n }\n // this may be a Weex event which doesn't have this method\n if (e.preventDefault) {\n e.preventDefault();\n }\n return true\n}\n\nfunction findAnchor (children) {\n if (children) {\n var child;\n for (var i = 0; i < children.length; i++) {\n child = children[i];\n if (child.tag === 'a') {\n return child\n }\n if (child.children && (child = findAnchor(child.children))) {\n return child\n }\n }\n }\n}\n\nvar _Vue;\n\nfunction install (Vue) {\n if (install.installed && _Vue === Vue) { return }\n install.installed = true;\n\n _Vue = Vue;\n\n var isDef = function (v) { return v !== undefined; };\n\n var registerInstance = function (vm, callVal) {\n var i = vm.$options._parentVnode;\n if (isDef(i) && isDef(i = i.data) && isDef(i = i.registerRouteInstance)) {\n i(vm, callVal);\n }\n };\n\n Vue.mixin({\n beforeCreate: function beforeCreate () {\n if (isDef(this.$options.router)) {\n this._routerRoot = this;\n this._router = this.$options.router;\n this._router.init(this);\n Vue.util.defineReactive(this, '_route', this._router.history.current);\n } else {\n this._routerRoot = (this.$parent && this.$parent._routerRoot) || this;\n }\n registerInstance(this, this);\n },\n destroyed: function destroyed () {\n registerInstance(this);\n }\n });\n\n Object.defineProperty(Vue.prototype, '$router', {\n get: function get () { return this._routerRoot._router }\n });\n\n Object.defineProperty(Vue.prototype, '$route', {\n get: function get () { return this._routerRoot._route }\n });\n\n Vue.component('RouterView', View);\n Vue.component('RouterLink', Link);\n\n var strats = Vue.config.optionMergeStrategies;\n // use the same hook merging strategy for route hooks\n strats.beforeRouteEnter = strats.beforeRouteLeave = strats.beforeRouteUpdate = strats.created;\n}\n\n/* */\n\nvar inBrowser = typeof window !== 'undefined';\n\n/* */\n\nfunction createRouteMap (\n routes,\n oldPathList,\n oldPathMap,\n oldNameMap,\n parentRoute\n) {\n // the path list is used to control path matching priority\n var pathList = oldPathList || [];\n // $flow-disable-line\n var pathMap = oldPathMap || Object.create(null);\n // $flow-disable-line\n var nameMap = oldNameMap || Object.create(null);\n\n routes.forEach(function (route) {\n addRouteRecord(pathList, pathMap, nameMap, route, parentRoute);\n });\n\n // ensure wildcard routes are always at the end\n for (var i = 0, l = pathList.length; i < l; i++) {\n if (pathList[i] === '*') {\n pathList.push(pathList.splice(i, 1)[0]);\n l--;\n i--;\n }\n }\n\n if (process.env.NODE_ENV === 'development') {\n // warn if routes do not include leading slashes\n var found = pathList\n // check for missing leading slash\n .filter(function (path) { return path && path.charAt(0) !== '*' && path.charAt(0) !== '/'; });\n\n if (found.length > 0) {\n var pathNames = found.map(function (path) { return (\"- \" + path); }).join('\\n');\n warn(false, (\"Non-nested routes must include a leading slash character. Fix the following routes: \\n\" + pathNames));\n }\n }\n\n return {\n pathList: pathList,\n pathMap: pathMap,\n nameMap: nameMap\n }\n}\n\nfunction addRouteRecord (\n pathList,\n pathMap,\n nameMap,\n route,\n parent,\n matchAs\n) {\n var path = route.path;\n var name = route.name;\n if (process.env.NODE_ENV !== 'production') {\n assert(path != null, \"\\\"path\\\" is required in a route configuration.\");\n assert(\n typeof route.component !== 'string',\n \"route config \\\"component\\\" for path: \" + (String(\n path || name\n )) + \" cannot be a \" + \"string id. Use an actual component instead.\"\n );\n\n warn(\n // eslint-disable-next-line no-control-regex\n !/[^\\u0000-\\u007F]+/.test(path),\n \"Route with path \\\"\" + path + \"\\\" contains unencoded characters, make sure \" +\n \"your path is correctly encoded before passing it to the router. Use \" +\n \"encodeURI to encode static segments of your path.\"\n );\n }\n\n var pathToRegexpOptions =\n route.pathToRegexpOptions || {};\n var normalizedPath = normalizePath(path, parent, pathToRegexpOptions.strict);\n\n if (typeof route.caseSensitive === 'boolean') {\n pathToRegexpOptions.sensitive = route.caseSensitive;\n }\n\n var record = {\n path: normalizedPath,\n regex: compileRouteRegex(normalizedPath, pathToRegexpOptions),\n components: route.components || { default: route.component },\n alias: route.alias\n ? typeof route.alias === 'string'\n ? [route.alias]\n : route.alias\n : [],\n instances: {},\n enteredCbs: {},\n name: name,\n parent: parent,\n matchAs: matchAs,\n redirect: route.redirect,\n beforeEnter: route.beforeEnter,\n meta: route.meta || {},\n props:\n route.props == null\n ? {}\n : route.components\n ? route.props\n : { default: route.props }\n };\n\n if (route.children) {\n // Warn if route is named, does not redirect and has a default child route.\n // If users navigate to this route by name, the default child will\n // not be rendered (GH Issue #629)\n if (process.env.NODE_ENV !== 'production') {\n if (\n route.name &&\n !route.redirect &&\n route.children.some(function (child) { return /^\\/?$/.test(child.path); })\n ) {\n warn(\n false,\n \"Named Route '\" + (route.name) + \"' has a default child route. \" +\n \"When navigating to this named route (:to=\\\"{name: '\" + (route.name) + \"'}\\\"), \" +\n \"the default child route will not be rendered. Remove the name from \" +\n \"this route and use the name of the default child route for named \" +\n \"links instead.\"\n );\n }\n }\n route.children.forEach(function (child) {\n var childMatchAs = matchAs\n ? cleanPath((matchAs + \"/\" + (child.path)))\n : undefined;\n addRouteRecord(pathList, pathMap, nameMap, child, record, childMatchAs);\n });\n }\n\n if (!pathMap[record.path]) {\n pathList.push(record.path);\n pathMap[record.path] = record;\n }\n\n if (route.alias !== undefined) {\n var aliases = Array.isArray(route.alias) ? route.alias : [route.alias];\n for (var i = 0; i < aliases.length; ++i) {\n var alias = aliases[i];\n if (process.env.NODE_ENV !== 'production' && alias === path) {\n warn(\n false,\n (\"Found an alias with the same value as the path: \\\"\" + path + \"\\\". You have to remove that alias. It will be ignored in development.\")\n );\n // skip in dev to make it work\n continue\n }\n\n var aliasRoute = {\n path: alias,\n children: route.children\n };\n addRouteRecord(\n pathList,\n pathMap,\n nameMap,\n aliasRoute,\n parent,\n record.path || '/' // matchAs\n );\n }\n }\n\n if (name) {\n if (!nameMap[name]) {\n nameMap[name] = record;\n } else if (process.env.NODE_ENV !== 'production' && !matchAs) {\n warn(\n false,\n \"Duplicate named routes definition: \" +\n \"{ name: \\\"\" + name + \"\\\", path: \\\"\" + (record.path) + \"\\\" }\"\n );\n }\n }\n}\n\nfunction compileRouteRegex (\n path,\n pathToRegexpOptions\n) {\n var regex = pathToRegexp_1(path, [], pathToRegexpOptions);\n if (process.env.NODE_ENV !== 'production') {\n var keys = Object.create(null);\n regex.keys.forEach(function (key) {\n warn(\n !keys[key.name],\n (\"Duplicate param keys in route with path: \\\"\" + path + \"\\\"\")\n );\n keys[key.name] = true;\n });\n }\n return regex\n}\n\nfunction normalizePath (\n path,\n parent,\n strict\n) {\n if (!strict) { path = path.replace(/\\/$/, ''); }\n if (path[0] === '/') { return path }\n if (parent == null) { return path }\n return cleanPath(((parent.path) + \"/\" + path))\n}\n\n/* */\n\n\n\nfunction createMatcher (\n routes,\n router\n) {\n var ref = createRouteMap(routes);\n var pathList = ref.pathList;\n var pathMap = ref.pathMap;\n var nameMap = ref.nameMap;\n\n function addRoutes (routes) {\n createRouteMap(routes, pathList, pathMap, nameMap);\n }\n\n function addRoute (parentOrRoute, route) {\n var parent = (typeof parentOrRoute !== 'object') ? nameMap[parentOrRoute] : undefined;\n // $flow-disable-line\n createRouteMap([route || parentOrRoute], pathList, pathMap, nameMap, parent);\n\n // add aliases of parent\n if (parent && parent.alias.length) {\n createRouteMap(\n // $flow-disable-line route is defined if parent is\n parent.alias.map(function (alias) { return ({ path: alias, children: [route] }); }),\n pathList,\n pathMap,\n nameMap,\n parent\n );\n }\n }\n\n function getRoutes () {\n return pathList.map(function (path) { return pathMap[path]; })\n }\n\n function match (\n raw,\n currentRoute,\n redirectedFrom\n ) {\n var location = normalizeLocation(raw, currentRoute, false, router);\n var name = location.name;\n\n if (name) {\n var record = nameMap[name];\n if (process.env.NODE_ENV !== 'production') {\n warn(record, (\"Route with name '\" + name + \"' does not exist\"));\n }\n if (!record) { return _createRoute(null, location) }\n var paramNames = record.regex.keys\n .filter(function (key) { return !key.optional; })\n .map(function (key) { return key.name; });\n\n if (typeof location.params !== 'object') {\n location.params = {};\n }\n\n if (currentRoute && typeof currentRoute.params === 'object') {\n for (var key in currentRoute.params) {\n if (!(key in location.params) && paramNames.indexOf(key) > -1) {\n location.params[key] = currentRoute.params[key];\n }\n }\n }\n\n location.path = fillParams(record.path, location.params, (\"named route \\\"\" + name + \"\\\"\"));\n return _createRoute(record, location, redirectedFrom)\n } else if (location.path) {\n location.params = {};\n for (var i = 0; i < pathList.length; i++) {\n var path = pathList[i];\n var record$1 = pathMap[path];\n if (matchRoute(record$1.regex, location.path, location.params)) {\n return _createRoute(record$1, location, redirectedFrom)\n }\n }\n }\n // no match\n return _createRoute(null, location)\n }\n\n function redirect (\n record,\n location\n ) {\n var originalRedirect = record.redirect;\n var redirect = typeof originalRedirect === 'function'\n ? originalRedirect(createRoute(record, location, null, router))\n : originalRedirect;\n\n if (typeof redirect === 'string') {\n redirect = { path: redirect };\n }\n\n if (!redirect || typeof redirect !== 'object') {\n if (process.env.NODE_ENV !== 'production') {\n warn(\n false, (\"invalid redirect option: \" + (JSON.stringify(redirect)))\n );\n }\n return _createRoute(null, location)\n }\n\n var re = redirect;\n var name = re.name;\n var path = re.path;\n var query = location.query;\n var hash = location.hash;\n var params = location.params;\n query = re.hasOwnProperty('query') ? re.query : query;\n hash = re.hasOwnProperty('hash') ? re.hash : hash;\n params = re.hasOwnProperty('params') ? re.params : params;\n\n if (name) {\n // resolved named direct\n var targetRecord = nameMap[name];\n if (process.env.NODE_ENV !== 'production') {\n assert(targetRecord, (\"redirect failed: named route \\\"\" + name + \"\\\" not found.\"));\n }\n return match({\n _normalized: true,\n name: name,\n query: query,\n hash: hash,\n params: params\n }, undefined, location)\n } else if (path) {\n // 1. resolve relative redirect\n var rawPath = resolveRecordPath(path, record);\n // 2. resolve params\n var resolvedPath = fillParams(rawPath, params, (\"redirect route with path \\\"\" + rawPath + \"\\\"\"));\n // 3. rematch with existing query and hash\n return match({\n _normalized: true,\n path: resolvedPath,\n query: query,\n hash: hash\n }, undefined, location)\n } else {\n if (process.env.NODE_ENV !== 'production') {\n warn(false, (\"invalid redirect option: \" + (JSON.stringify(redirect))));\n }\n return _createRoute(null, location)\n }\n }\n\n function alias (\n record,\n location,\n matchAs\n ) {\n var aliasedPath = fillParams(matchAs, location.params, (\"aliased route with path \\\"\" + matchAs + \"\\\"\"));\n var aliasedMatch = match({\n _normalized: true,\n path: aliasedPath\n });\n if (aliasedMatch) {\n var matched = aliasedMatch.matched;\n var aliasedRecord = matched[matched.length - 1];\n location.params = aliasedMatch.params;\n return _createRoute(aliasedRecord, location)\n }\n return _createRoute(null, location)\n }\n\n function _createRoute (\n record,\n location,\n redirectedFrom\n ) {\n if (record && record.redirect) {\n return redirect(record, redirectedFrom || location)\n }\n if (record && record.matchAs) {\n return alias(record, location, record.matchAs)\n }\n return createRoute(record, location, redirectedFrom, router)\n }\n\n return {\n match: match,\n addRoute: addRoute,\n getRoutes: getRoutes,\n addRoutes: addRoutes\n }\n}\n\nfunction matchRoute (\n regex,\n path,\n params\n) {\n var m = path.match(regex);\n\n if (!m) {\n return false\n } else if (!params) {\n return true\n }\n\n for (var i = 1, len = m.length; i < len; ++i) {\n var key = regex.keys[i - 1];\n if (key) {\n // Fix #1994: using * with props: true generates a param named 0\n params[key.name || 'pathMatch'] = typeof m[i] === 'string' ? decode(m[i]) : m[i];\n }\n }\n\n return true\n}\n\nfunction resolveRecordPath (path, record) {\n return resolvePath(path, record.parent ? record.parent.path : '/', true)\n}\n\n/* */\n\n// use User Timing api (if present) for more accurate key precision\nvar Time =\n inBrowser && window.performance && window.performance.now\n ? window.performance\n : Date;\n\nfunction genStateKey () {\n return Time.now().toFixed(3)\n}\n\nvar _key = genStateKey();\n\nfunction getStateKey () {\n return _key\n}\n\nfunction setStateKey (key) {\n return (_key = key)\n}\n\n/* */\n\nvar positionStore = Object.create(null);\n\nfunction setupScroll () {\n // Prevent browser scroll behavior on History popstate\n if ('scrollRestoration' in window.history) {\n window.history.scrollRestoration = 'manual';\n }\n // Fix for #1585 for Firefox\n // Fix for #2195 Add optional third attribute to workaround a bug in safari https://bugs.webkit.org/show_bug.cgi?id=182678\n // Fix for #2774 Support for apps loaded from Windows file shares not mapped to network drives: replaced location.origin with\n // window.location.protocol + '//' + window.location.host\n // location.host contains the port and location.hostname doesn't\n var protocolAndPath = window.location.protocol + '//' + window.location.host;\n var absolutePath = window.location.href.replace(protocolAndPath, '');\n // preserve existing history state as it could be overriden by the user\n var stateCopy = extend({}, window.history.state);\n stateCopy.key = getStateKey();\n window.history.replaceState(stateCopy, '', absolutePath);\n window.addEventListener('popstate', handlePopState);\n return function () {\n window.removeEventListener('popstate', handlePopState);\n }\n}\n\nfunction handleScroll (\n router,\n to,\n from,\n isPop\n) {\n if (!router.app) {\n return\n }\n\n var behavior = router.options.scrollBehavior;\n if (!behavior) {\n return\n }\n\n if (process.env.NODE_ENV !== 'production') {\n assert(typeof behavior === 'function', \"scrollBehavior must be a function\");\n }\n\n // wait until re-render finishes before scrolling\n router.app.$nextTick(function () {\n var position = getScrollPosition();\n var shouldScroll = behavior.call(\n router,\n to,\n from,\n isPop ? position : null\n );\n\n if (!shouldScroll) {\n return\n }\n\n if (typeof shouldScroll.then === 'function') {\n shouldScroll\n .then(function (shouldScroll) {\n scrollToPosition((shouldScroll), position);\n })\n .catch(function (err) {\n if (process.env.NODE_ENV !== 'production') {\n assert(false, err.toString());\n }\n });\n } else {\n scrollToPosition(shouldScroll, position);\n }\n });\n}\n\nfunction saveScrollPosition () {\n var key = getStateKey();\n if (key) {\n positionStore[key] = {\n x: window.pageXOffset,\n y: window.pageYOffset\n };\n }\n}\n\nfunction handlePopState (e) {\n saveScrollPosition();\n if (e.state && e.state.key) {\n setStateKey(e.state.key);\n }\n}\n\nfunction getScrollPosition () {\n var key = getStateKey();\n if (key) {\n return positionStore[key]\n }\n}\n\nfunction getElementPosition (el, offset) {\n var docEl = document.documentElement;\n var docRect = docEl.getBoundingClientRect();\n var elRect = el.getBoundingClientRect();\n return {\n x: elRect.left - docRect.left - offset.x,\n y: elRect.top - docRect.top - offset.y\n }\n}\n\nfunction isValidPosition (obj) {\n return isNumber(obj.x) || isNumber(obj.y)\n}\n\nfunction normalizePosition (obj) {\n return {\n x: isNumber(obj.x) ? obj.x : window.pageXOffset,\n y: isNumber(obj.y) ? obj.y : window.pageYOffset\n }\n}\n\nfunction normalizeOffset (obj) {\n return {\n x: isNumber(obj.x) ? obj.x : 0,\n y: isNumber(obj.y) ? obj.y : 0\n }\n}\n\nfunction isNumber (v) {\n return typeof v === 'number'\n}\n\nvar hashStartsWithNumberRE = /^#\\d/;\n\nfunction scrollToPosition (shouldScroll, position) {\n var isObject = typeof shouldScroll === 'object';\n if (isObject && typeof shouldScroll.selector === 'string') {\n // getElementById would still fail if the selector contains a more complicated query like #main[data-attr]\n // but at the same time, it doesn't make much sense to select an element with an id and an extra selector\n var el = hashStartsWithNumberRE.test(shouldScroll.selector) // $flow-disable-line\n ? document.getElementById(shouldScroll.selector.slice(1)) // $flow-disable-line\n : document.querySelector(shouldScroll.selector);\n\n if (el) {\n var offset =\n shouldScroll.offset && typeof shouldScroll.offset === 'object'\n ? shouldScroll.offset\n : {};\n offset = normalizeOffset(offset);\n position = getElementPosition(el, offset);\n } else if (isValidPosition(shouldScroll)) {\n position = normalizePosition(shouldScroll);\n }\n } else if (isObject && isValidPosition(shouldScroll)) {\n position = normalizePosition(shouldScroll);\n }\n\n if (position) {\n // $flow-disable-line\n if ('scrollBehavior' in document.documentElement.style) {\n window.scrollTo({\n left: position.x,\n top: position.y,\n // $flow-disable-line\n behavior: shouldScroll.behavior\n });\n } else {\n window.scrollTo(position.x, position.y);\n }\n }\n}\n\n/* */\n\nvar supportsPushState =\n inBrowser &&\n (function () {\n var ua = window.navigator.userAgent;\n\n if (\n (ua.indexOf('Android 2.') !== -1 || ua.indexOf('Android 4.0') !== -1) &&\n ua.indexOf('Mobile Safari') !== -1 &&\n ua.indexOf('Chrome') === -1 &&\n ua.indexOf('Windows Phone') === -1\n ) {\n return false\n }\n\n return window.history && typeof window.history.pushState === 'function'\n })();\n\nfunction pushState (url, replace) {\n saveScrollPosition();\n // try...catch the pushState call to get around Safari\n // DOM Exception 18 where it limits to 100 pushState calls\n var history = window.history;\n try {\n if (replace) {\n // preserve existing history state as it could be overriden by the user\n var stateCopy = extend({}, history.state);\n stateCopy.key = getStateKey();\n history.replaceState(stateCopy, '', url);\n } else {\n history.pushState({ key: setStateKey(genStateKey()) }, '', url);\n }\n } catch (e) {\n window.location[replace ? 'replace' : 'assign'](url);\n }\n}\n\nfunction replaceState (url) {\n pushState(url, true);\n}\n\n// When changing thing, also edit router.d.ts\nvar NavigationFailureType = {\n redirected: 2,\n aborted: 4,\n cancelled: 8,\n duplicated: 16\n};\n\nfunction createNavigationRedirectedError (from, to) {\n return createRouterError(\n from,\n to,\n NavigationFailureType.redirected,\n (\"Redirected when going from \\\"\" + (from.fullPath) + \"\\\" to \\\"\" + (stringifyRoute(\n to\n )) + \"\\\" via a navigation guard.\")\n )\n}\n\nfunction createNavigationDuplicatedError (from, to) {\n var error = createRouterError(\n from,\n to,\n NavigationFailureType.duplicated,\n (\"Avoided redundant navigation to current location: \\\"\" + (from.fullPath) + \"\\\".\")\n );\n // backwards compatible with the first introduction of Errors\n error.name = 'NavigationDuplicated';\n return error\n}\n\nfunction createNavigationCancelledError (from, to) {\n return createRouterError(\n from,\n to,\n NavigationFailureType.cancelled,\n (\"Navigation cancelled from \\\"\" + (from.fullPath) + \"\\\" to \\\"\" + (to.fullPath) + \"\\\" with a new navigation.\")\n )\n}\n\nfunction createNavigationAbortedError (from, to) {\n return createRouterError(\n from,\n to,\n NavigationFailureType.aborted,\n (\"Navigation aborted from \\\"\" + (from.fullPath) + \"\\\" to \\\"\" + (to.fullPath) + \"\\\" via a navigation guard.\")\n )\n}\n\nfunction createRouterError (from, to, type, message) {\n var error = new Error(message);\n error._isRouter = true;\n error.from = from;\n error.to = to;\n error.type = type;\n\n return error\n}\n\nvar propertiesToLog = ['params', 'query', 'hash'];\n\nfunction stringifyRoute (to) {\n if (typeof to === 'string') { return to }\n if ('path' in to) { return to.path }\n var location = {};\n propertiesToLog.forEach(function (key) {\n if (key in to) { location[key] = to[key]; }\n });\n return JSON.stringify(location, null, 2)\n}\n\nfunction isError (err) {\n return Object.prototype.toString.call(err).indexOf('Error') > -1\n}\n\nfunction isNavigationFailure (err, errorType) {\n return (\n isError(err) &&\n err._isRouter &&\n (errorType == null || err.type === errorType)\n )\n}\n\n/* */\n\nfunction runQueue (queue, fn, cb) {\n var step = function (index) {\n if (index >= queue.length) {\n cb();\n } else {\n if (queue[index]) {\n fn(queue[index], function () {\n step(index + 1);\n });\n } else {\n step(index + 1);\n }\n }\n };\n step(0);\n}\n\n/* */\n\nfunction resolveAsyncComponents (matched) {\n return function (to, from, next) {\n var hasAsync = false;\n var pending = 0;\n var error = null;\n\n flatMapComponents(matched, function (def, _, match, key) {\n // if it's a function and doesn't have cid attached,\n // assume it's an async component resolve function.\n // we are not using Vue's default async resolving mechanism because\n // we want to halt the navigation until the incoming component has been\n // resolved.\n if (typeof def === 'function' && def.cid === undefined) {\n hasAsync = true;\n pending++;\n\n var resolve = once(function (resolvedDef) {\n if (isESModule(resolvedDef)) {\n resolvedDef = resolvedDef.default;\n }\n // save resolved on async factory in case it's used elsewhere\n def.resolved = typeof resolvedDef === 'function'\n ? resolvedDef\n : _Vue.extend(resolvedDef);\n match.components[key] = resolvedDef;\n pending--;\n if (pending <= 0) {\n next();\n }\n });\n\n var reject = once(function (reason) {\n var msg = \"Failed to resolve async component \" + key + \": \" + reason;\n process.env.NODE_ENV !== 'production' && warn(false, msg);\n if (!error) {\n error = isError(reason)\n ? reason\n : new Error(msg);\n next(error);\n }\n });\n\n var res;\n try {\n res = def(resolve, reject);\n } catch (e) {\n reject(e);\n }\n if (res) {\n if (typeof res.then === 'function') {\n res.then(resolve, reject);\n } else {\n // new syntax in Vue 2.3\n var comp = res.component;\n if (comp && typeof comp.then === 'function') {\n comp.then(resolve, reject);\n }\n }\n }\n }\n });\n\n if (!hasAsync) { next(); }\n }\n}\n\nfunction flatMapComponents (\n matched,\n fn\n) {\n return flatten(matched.map(function (m) {\n return Object.keys(m.components).map(function (key) { return fn(\n m.components[key],\n m.instances[key],\n m, key\n ); })\n }))\n}\n\nfunction flatten (arr) {\n return Array.prototype.concat.apply([], arr)\n}\n\nvar hasSymbol =\n typeof Symbol === 'function' &&\n typeof Symbol.toStringTag === 'symbol';\n\nfunction isESModule (obj) {\n return obj.__esModule || (hasSymbol && obj[Symbol.toStringTag] === 'Module')\n}\n\n// in Webpack 2, require.ensure now also returns a Promise\n// so the resolve/reject functions may get called an extra time\n// if the user uses an arrow function shorthand that happens to\n// return that Promise.\nfunction once (fn) {\n var called = false;\n return function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n if (called) { return }\n called = true;\n return fn.apply(this, args)\n }\n}\n\n/* */\n\nvar History = function History (router, base) {\n this.router = router;\n this.base = normalizeBase(base);\n // start with a route object that stands for \"nowhere\"\n this.current = START;\n this.pending = null;\n this.ready = false;\n this.readyCbs = [];\n this.readyErrorCbs = [];\n this.errorCbs = [];\n this.listeners = [];\n};\n\nHistory.prototype.listen = function listen (cb) {\n this.cb = cb;\n};\n\nHistory.prototype.onReady = function onReady (cb, errorCb) {\n if (this.ready) {\n cb();\n } else {\n this.readyCbs.push(cb);\n if (errorCb) {\n this.readyErrorCbs.push(errorCb);\n }\n }\n};\n\nHistory.prototype.onError = function onError (errorCb) {\n this.errorCbs.push(errorCb);\n};\n\nHistory.prototype.transitionTo = function transitionTo (\n location,\n onComplete,\n onAbort\n) {\n var this$1$1 = this;\n\n var route;\n // catch redirect option https://github.com/vuejs/vue-router/issues/3201\n try {\n route = this.router.match(location, this.current);\n } catch (e) {\n this.errorCbs.forEach(function (cb) {\n cb(e);\n });\n // Exception should still be thrown\n throw e\n }\n var prev = this.current;\n this.confirmTransition(\n route,\n function () {\n this$1$1.updateRoute(route);\n onComplete && onComplete(route);\n this$1$1.ensureURL();\n this$1$1.router.afterHooks.forEach(function (hook) {\n hook && hook(route, prev);\n });\n\n // fire ready cbs once\n if (!this$1$1.ready) {\n this$1$1.ready = true;\n this$1$1.readyCbs.forEach(function (cb) {\n cb(route);\n });\n }\n },\n function (err) {\n if (onAbort) {\n onAbort(err);\n }\n if (err && !this$1$1.ready) {\n // Initial redirection should not mark the history as ready yet\n // because it's triggered by the redirection instead\n // https://github.com/vuejs/vue-router/issues/3225\n // https://github.com/vuejs/vue-router/issues/3331\n if (!isNavigationFailure(err, NavigationFailureType.redirected) || prev !== START) {\n this$1$1.ready = true;\n this$1$1.readyErrorCbs.forEach(function (cb) {\n cb(err);\n });\n }\n }\n }\n );\n};\n\nHistory.prototype.confirmTransition = function confirmTransition (route, onComplete, onAbort) {\n var this$1$1 = this;\n\n var current = this.current;\n this.pending = route;\n var abort = function (err) {\n // changed after adding errors with\n // https://github.com/vuejs/vue-router/pull/3047 before that change,\n // redirect and aborted navigation would produce an err == null\n if (!isNavigationFailure(err) && isError(err)) {\n if (this$1$1.errorCbs.length) {\n this$1$1.errorCbs.forEach(function (cb) {\n cb(err);\n });\n } else {\n if (process.env.NODE_ENV !== 'production') {\n warn(false, 'uncaught error during route navigation:');\n }\n console.error(err);\n }\n }\n onAbort && onAbort(err);\n };\n var lastRouteIndex = route.matched.length - 1;\n var lastCurrentIndex = current.matched.length - 1;\n if (\n isSameRoute(route, current) &&\n // in the case the route map has been dynamically appended to\n lastRouteIndex === lastCurrentIndex &&\n route.matched[lastRouteIndex] === current.matched[lastCurrentIndex]\n ) {\n this.ensureURL();\n if (route.hash) {\n handleScroll(this.router, current, route, false);\n }\n return abort(createNavigationDuplicatedError(current, route))\n }\n\n var ref = resolveQueue(\n this.current.matched,\n route.matched\n );\n var updated = ref.updated;\n var deactivated = ref.deactivated;\n var activated = ref.activated;\n\n var queue = [].concat(\n // in-component leave guards\n extractLeaveGuards(deactivated),\n // global before hooks\n this.router.beforeHooks,\n // in-component update hooks\n extractUpdateHooks(updated),\n // in-config enter guards\n activated.map(function (m) { return m.beforeEnter; }),\n // async components\n resolveAsyncComponents(activated)\n );\n\n var iterator = function (hook, next) {\n if (this$1$1.pending !== route) {\n return abort(createNavigationCancelledError(current, route))\n }\n try {\n hook(route, current, function (to) {\n if (to === false) {\n // next(false) -> abort navigation, ensure current URL\n this$1$1.ensureURL(true);\n abort(createNavigationAbortedError(current, route));\n } else if (isError(to)) {\n this$1$1.ensureURL(true);\n abort(to);\n } else if (\n typeof to === 'string' ||\n (typeof to === 'object' &&\n (typeof to.path === 'string' || typeof to.name === 'string'))\n ) {\n // next('/') or next({ path: '/' }) -> redirect\n abort(createNavigationRedirectedError(current, route));\n if (typeof to === 'object' && to.replace) {\n this$1$1.replace(to);\n } else {\n this$1$1.push(to);\n }\n } else {\n // confirm transition and pass on the value\n next(to);\n }\n });\n } catch (e) {\n abort(e);\n }\n };\n\n runQueue(queue, iterator, function () {\n // wait until async components are resolved before\n // extracting in-component enter guards\n var enterGuards = extractEnterGuards(activated);\n var queue = enterGuards.concat(this$1$1.router.resolveHooks);\n runQueue(queue, iterator, function () {\n if (this$1$1.pending !== route) {\n return abort(createNavigationCancelledError(current, route))\n }\n this$1$1.pending = null;\n onComplete(route);\n if (this$1$1.router.app) {\n this$1$1.router.app.$nextTick(function () {\n handleRouteEntered(route);\n });\n }\n });\n });\n};\n\nHistory.prototype.updateRoute = function updateRoute (route) {\n this.current = route;\n this.cb && this.cb(route);\n};\n\nHistory.prototype.setupListeners = function setupListeners () {\n // Default implementation is empty\n};\n\nHistory.prototype.teardown = function teardown () {\n // clean up event listeners\n // https://github.com/vuejs/vue-router/issues/2341\n this.listeners.forEach(function (cleanupListener) {\n cleanupListener();\n });\n this.listeners = [];\n\n // reset current history route\n // https://github.com/vuejs/vue-router/issues/3294\n this.current = START;\n this.pending = null;\n};\n\nfunction normalizeBase (base) {\n if (!base) {\n if (inBrowser) {\n // respect <base> tag\n var baseEl = document.querySelector('base');\n base = (baseEl && baseEl.getAttribute('href')) || '/';\n // strip full URL origin\n base = base.replace(/^https?:\\/\\/[^\\/]+/, '');\n } else {\n base = '/';\n }\n }\n // make sure there's the starting slash\n if (base.charAt(0) !== '/') {\n base = '/' + base;\n }\n // remove trailing slash\n return base.replace(/\\/$/, '')\n}\n\nfunction resolveQueue (\n current,\n next\n) {\n var i;\n var max = Math.max(current.length, next.length);\n for (i = 0; i < max; i++) {\n if (current[i] !== next[i]) {\n break\n }\n }\n return {\n updated: next.slice(0, i),\n activated: next.slice(i),\n deactivated: current.slice(i)\n }\n}\n\nfunction extractGuards (\n records,\n name,\n bind,\n reverse\n) {\n var guards = flatMapComponents(records, function (def, instance, match, key) {\n var guard = extractGuard(def, name);\n if (guard) {\n return Array.isArray(guard)\n ? guard.map(function (guard) { return bind(guard, instance, match, key); })\n : bind(guard, instance, match, key)\n }\n });\n return flatten(reverse ? guards.reverse() : guards)\n}\n\nfunction extractGuard (\n def,\n key\n) {\n if (typeof def !== 'function') {\n // extend now so that global mixins are applied.\n def = _Vue.extend(def);\n }\n return def.options[key]\n}\n\nfunction extractLeaveGuards (deactivated) {\n return extractGuards(deactivated, 'beforeRouteLeave', bindGuard, true)\n}\n\nfunction extractUpdateHooks (updated) {\n return extractGuards(updated, 'beforeRouteUpdate', bindGuard)\n}\n\nfunction bindGuard (guard, instance) {\n if (instance) {\n return function boundRouteGuard () {\n return guard.apply(instance, arguments)\n }\n }\n}\n\nfunction extractEnterGuards (\n activated\n) {\n return extractGuards(\n activated,\n 'beforeRouteEnter',\n function (guard, _, match, key) {\n return bindEnterGuard(guard, match, key)\n }\n )\n}\n\nfunction bindEnterGuard (\n guard,\n match,\n key\n) {\n return function routeEnterGuard (to, from, next) {\n return guard(to, from, function (cb) {\n if (typeof cb === 'function') {\n if (!match.enteredCbs[key]) {\n match.enteredCbs[key] = [];\n }\n match.enteredCbs[key].push(cb);\n }\n next(cb);\n })\n }\n}\n\n/* */\n\nvar HTML5History = /*@__PURE__*/(function (History) {\n function HTML5History (router, base) {\n History.call(this, router, base);\n\n this._startLocation = getLocation(this.base);\n }\n\n if ( History ) HTML5History.__proto__ = History;\n HTML5History.prototype = Object.create( History && History.prototype );\n HTML5History.prototype.constructor = HTML5History;\n\n HTML5History.prototype.setupListeners = function setupListeners () {\n var this$1$1 = this;\n\n if (this.listeners.length > 0) {\n return\n }\n\n var router = this.router;\n var expectScroll = router.options.scrollBehavior;\n var supportsScroll = supportsPushState && expectScroll;\n\n if (supportsScroll) {\n this.listeners.push(setupScroll());\n }\n\n var handleRoutingEvent = function () {\n var current = this$1$1.current;\n\n // Avoiding first `popstate` event dispatched in some browsers but first\n // history route not updated since async guard at the same time.\n var location = getLocation(this$1$1.base);\n if (this$1$1.current === START && location === this$1$1._startLocation) {\n return\n }\n\n this$1$1.transitionTo(location, function (route) {\n if (supportsScroll) {\n handleScroll(router, route, current, true);\n }\n });\n };\n window.addEventListener('popstate', handleRoutingEvent);\n this.listeners.push(function () {\n window.removeEventListener('popstate', handleRoutingEvent);\n });\n };\n\n HTML5History.prototype.go = function go (n) {\n window.history.go(n);\n };\n\n HTML5History.prototype.push = function push (location, onComplete, onAbort) {\n var this$1$1 = this;\n\n var ref = this;\n var fromRoute = ref.current;\n this.transitionTo(location, function (route) {\n pushState(cleanPath(this$1$1.base + route.fullPath));\n handleScroll(this$1$1.router, route, fromRoute, false);\n onComplete && onComplete(route);\n }, onAbort);\n };\n\n HTML5History.prototype.replace = function replace (location, onComplete, onAbort) {\n var this$1$1 = this;\n\n var ref = this;\n var fromRoute = ref.current;\n this.transitionTo(location, function (route) {\n replaceState(cleanPath(this$1$1.base + route.fullPath));\n handleScroll(this$1$1.router, route, fromRoute, false);\n onComplete && onComplete(route);\n }, onAbort);\n };\n\n HTML5History.prototype.ensureURL = function ensureURL (push) {\n if (getLocation(this.base) !== this.current.fullPath) {\n var current = cleanPath(this.base + this.current.fullPath);\n push ? pushState(current) : replaceState(current);\n }\n };\n\n HTML5History.prototype.getCurrentLocation = function getCurrentLocation () {\n return getLocation(this.base)\n };\n\n return HTML5History;\n}(History));\n\nfunction getLocation (base) {\n var path = window.location.pathname;\n var pathLowerCase = path.toLowerCase();\n var baseLowerCase = base.toLowerCase();\n // base=\"/a\" shouldn't turn path=\"/app\" into \"/a/pp\"\n // https://github.com/vuejs/vue-router/issues/3555\n // so we ensure the trailing slash in the base\n if (base && ((pathLowerCase === baseLowerCase) ||\n (pathLowerCase.indexOf(cleanPath(baseLowerCase + '/')) === 0))) {\n path = path.slice(base.length);\n }\n return (path || '/') + window.location.search + window.location.hash\n}\n\n/* */\n\nvar HashHistory = /*@__PURE__*/(function (History) {\n function HashHistory (router, base, fallback) {\n History.call(this, router, base);\n // check history fallback deeplinking\n if (fallback && checkFallback(this.base)) {\n return\n }\n ensureSlash();\n }\n\n if ( History ) HashHistory.__proto__ = History;\n HashHistory.prototype = Object.create( History && History.prototype );\n HashHistory.prototype.constructor = HashHistory;\n\n // this is delayed until the app mounts\n // to avoid the hashchange listener being fired too early\n HashHistory.prototype.setupListeners = function setupListeners () {\n var this$1$1 = this;\n\n if (this.listeners.length > 0) {\n return\n }\n\n var router = this.router;\n var expectScroll = router.options.scrollBehavior;\n var supportsScroll = supportsPushState && expectScroll;\n\n if (supportsScroll) {\n this.listeners.push(setupScroll());\n }\n\n var handleRoutingEvent = function () {\n var current = this$1$1.current;\n if (!ensureSlash()) {\n return\n }\n this$1$1.transitionTo(getHash(), function (route) {\n if (supportsScroll) {\n handleScroll(this$1$1.router, route, current, true);\n }\n if (!supportsPushState) {\n replaceHash(route.fullPath);\n }\n });\n };\n var eventType = supportsPushState ? 'popstate' : 'hashchange';\n window.addEventListener(\n eventType,\n handleRoutingEvent\n );\n this.listeners.push(function () {\n window.removeEventListener(eventType, handleRoutingEvent);\n });\n };\n\n HashHistory.prototype.push = function push (location, onComplete, onAbort) {\n var this$1$1 = this;\n\n var ref = this;\n var fromRoute = ref.current;\n this.transitionTo(\n location,\n function (route) {\n pushHash(route.fullPath);\n handleScroll(this$1$1.router, route, fromRoute, false);\n onComplete && onComplete(route);\n },\n onAbort\n );\n };\n\n HashHistory.prototype.replace = function replace (location, onComplete, onAbort) {\n var this$1$1 = this;\n\n var ref = this;\n var fromRoute = ref.current;\n this.transitionTo(\n location,\n function (route) {\n replaceHash(route.fullPath);\n handleScroll(this$1$1.router, route, fromRoute, false);\n onComplete && onComplete(route);\n },\n onAbort\n );\n };\n\n HashHistory.prototype.go = function go (n) {\n window.history.go(n);\n };\n\n HashHistory.prototype.ensureURL = function ensureURL (push) {\n var current = this.current.fullPath;\n if (getHash() !== current) {\n push ? pushHash(current) : replaceHash(current);\n }\n };\n\n HashHistory.prototype.getCurrentLocation = function getCurrentLocation () {\n return getHash()\n };\n\n return HashHistory;\n}(History));\n\nfunction checkFallback (base) {\n var location = getLocation(base);\n if (!/^\\/#/.test(location)) {\n window.location.replace(cleanPath(base + '/#' + location));\n return true\n }\n}\n\nfunction ensureSlash () {\n var path = getHash();\n if (path.charAt(0) === '/') {\n return true\n }\n replaceHash('/' + path);\n return false\n}\n\nfunction getHash () {\n // We can't use window.location.hash here because it's not\n // consistent across browsers - Firefox will pre-decode it!\n var href = window.location.href;\n var index = href.indexOf('#');\n // empty path\n if (index < 0) { return '' }\n\n href = href.slice(index + 1);\n\n return href\n}\n\nfunction getUrl (path) {\n var href = window.location.href;\n var i = href.indexOf('#');\n var base = i >= 0 ? href.slice(0, i) : href;\n return (base + \"#\" + path)\n}\n\nfunction pushHash (path) {\n if (supportsPushState) {\n pushState(getUrl(path));\n } else {\n window.location.hash = path;\n }\n}\n\nfunction replaceHash (path) {\n if (supportsPushState) {\n replaceState(getUrl(path));\n } else {\n window.location.replace(getUrl(path));\n }\n}\n\n/* */\n\nvar AbstractHistory = /*@__PURE__*/(function (History) {\n function AbstractHistory (router, base) {\n History.call(this, router, base);\n this.stack = [];\n this.index = -1;\n }\n\n if ( History ) AbstractHistory.__proto__ = History;\n AbstractHistory.prototype = Object.create( History && History.prototype );\n AbstractHistory.prototype.constructor = AbstractHistory;\n\n AbstractHistory.prototype.push = function push (location, onComplete, onAbort) {\n var this$1$1 = this;\n\n this.transitionTo(\n location,\n function (route) {\n this$1$1.stack = this$1$1.stack.slice(0, this$1$1.index + 1).concat(route);\n this$1$1.index++;\n onComplete && onComplete(route);\n },\n onAbort\n );\n };\n\n AbstractHistory.prototype.replace = function replace (location, onComplete, onAbort) {\n var this$1$1 = this;\n\n this.transitionTo(\n location,\n function (route) {\n this$1$1.stack = this$1$1.stack.slice(0, this$1$1.index).concat(route);\n onComplete && onComplete(route);\n },\n onAbort\n );\n };\n\n AbstractHistory.prototype.go = function go (n) {\n var this$1$1 = this;\n\n var targetIndex = this.index + n;\n if (targetIndex < 0 || targetIndex >= this.stack.length) {\n return\n }\n var route = this.stack[targetIndex];\n this.confirmTransition(\n route,\n function () {\n var prev = this$1$1.current;\n this$1$1.index = targetIndex;\n this$1$1.updateRoute(route);\n this$1$1.router.afterHooks.forEach(function (hook) {\n hook && hook(route, prev);\n });\n },\n function (err) {\n if (isNavigationFailure(err, NavigationFailureType.duplicated)) {\n this$1$1.index = targetIndex;\n }\n }\n );\n };\n\n AbstractHistory.prototype.getCurrentLocation = function getCurrentLocation () {\n var current = this.stack[this.stack.length - 1];\n return current ? current.fullPath : '/'\n };\n\n AbstractHistory.prototype.ensureURL = function ensureURL () {\n // noop\n };\n\n return AbstractHistory;\n}(History));\n\n/* */\n\n\n\nvar VueRouter = function VueRouter (options) {\n if ( options === void 0 ) options = {};\n\n if (process.env.NODE_ENV !== 'production') {\n warn(this instanceof VueRouter, \"Router must be called with the new operator.\");\n }\n this.app = null;\n this.apps = [];\n this.options = options;\n this.beforeHooks = [];\n this.resolveHooks = [];\n this.afterHooks = [];\n this.matcher = createMatcher(options.routes || [], this);\n\n var mode = options.mode || 'hash';\n this.fallback =\n mode === 'history' && !supportsPushState && options.fallback !== false;\n if (this.fallback) {\n mode = 'hash';\n }\n if (!inBrowser) {\n mode = 'abstract';\n }\n this.mode = mode;\n\n switch (mode) {\n case 'history':\n this.history = new HTML5History(this, options.base);\n break\n case 'hash':\n this.history = new HashHistory(this, options.base, this.fallback);\n break\n case 'abstract':\n this.history = new AbstractHistory(this, options.base);\n break\n default:\n if (process.env.NODE_ENV !== 'production') {\n assert(false, (\"invalid mode: \" + mode));\n }\n }\n};\n\nvar prototypeAccessors = { currentRoute: { configurable: true } };\n\nVueRouter.prototype.match = function match (raw, current, redirectedFrom) {\n return this.matcher.match(raw, current, redirectedFrom)\n};\n\nprototypeAccessors.currentRoute.get = function () {\n return this.history && this.history.current\n};\n\nVueRouter.prototype.init = function init (app /* Vue component instance */) {\n var this$1$1 = this;\n\n process.env.NODE_ENV !== 'production' &&\n assert(\n install.installed,\n \"not installed. Make sure to call `Vue.use(VueRouter)` \" +\n \"before creating root instance.\"\n );\n\n this.apps.push(app);\n\n // set up app destroyed handler\n // https://github.com/vuejs/vue-router/issues/2639\n app.$once('hook:destroyed', function () {\n // clean out app from this.apps array once destroyed\n var index = this$1$1.apps.indexOf(app);\n if (index > -1) { this$1$1.apps.splice(index, 1); }\n // ensure we still have a main app or null if no apps\n // we do not release the router so it can be reused\n if (this$1$1.app === app) { this$1$1.app = this$1$1.apps[0] || null; }\n\n if (!this$1$1.app) { this$1$1.history.teardown(); }\n });\n\n // main app previously initialized\n // return as we don't need to set up new history listener\n if (this.app) {\n return\n }\n\n this.app = app;\n\n var history = this.history;\n\n if (history instanceof HTML5History || history instanceof HashHistory) {\n var handleInitialScroll = function (routeOrError) {\n var from = history.current;\n var expectScroll = this$1$1.options.scrollBehavior;\n var supportsScroll = supportsPushState && expectScroll;\n\n if (supportsScroll && 'fullPath' in routeOrError) {\n handleScroll(this$1$1, routeOrError, from, false);\n }\n };\n var setupListeners = function (routeOrError) {\n history.setupListeners();\n handleInitialScroll(routeOrError);\n };\n history.transitionTo(\n history.getCurrentLocation(),\n setupListeners,\n setupListeners\n );\n }\n\n history.listen(function (route) {\n this$1$1.apps.forEach(function (app) {\n app._route = route;\n });\n });\n};\n\nVueRouter.prototype.beforeEach = function beforeEach (fn) {\n return registerHook(this.beforeHooks, fn)\n};\n\nVueRouter.prototype.beforeResolve = function beforeResolve (fn) {\n return registerHook(this.resolveHooks, fn)\n};\n\nVueRouter.prototype.afterEach = function afterEach (fn) {\n return registerHook(this.afterHooks, fn)\n};\n\nVueRouter.prototype.onReady = function onReady (cb, errorCb) {\n this.history.onReady(cb, errorCb);\n};\n\nVueRouter.prototype.onError = function onError (errorCb) {\n this.history.onError(errorCb);\n};\n\nVueRouter.prototype.push = function push (location, onComplete, onAbort) {\n var this$1$1 = this;\n\n // $flow-disable-line\n if (!onComplete && !onAbort && typeof Promise !== 'undefined') {\n return new Promise(function (resolve, reject) {\n this$1$1.history.push(location, resolve, reject);\n })\n } else {\n this.history.push(location, onComplete, onAbort);\n }\n};\n\nVueRouter.prototype.replace = function replace (location, onComplete, onAbort) {\n var this$1$1 = this;\n\n // $flow-disable-line\n if (!onComplete && !onAbort && typeof Promise !== 'undefined') {\n return new Promise(function (resolve, reject) {\n this$1$1.history.replace(location, resolve, reject);\n })\n } else {\n this.history.replace(location, onComplete, onAbort);\n }\n};\n\nVueRouter.prototype.go = function go (n) {\n this.history.go(n);\n};\n\nVueRouter.prototype.back = function back () {\n this.go(-1);\n};\n\nVueRouter.prototype.forward = function forward () {\n this.go(1);\n};\n\nVueRouter.prototype.getMatchedComponents = function getMatchedComponents (to) {\n var route = to\n ? to.matched\n ? to\n : this.resolve(to).route\n : this.currentRoute;\n if (!route) {\n return []\n }\n return [].concat.apply(\n [],\n route.matched.map(function (m) {\n return Object.keys(m.components).map(function (key) {\n return m.components[key]\n })\n })\n )\n};\n\nVueRouter.prototype.resolve = function resolve (\n to,\n current,\n append\n) {\n current = current || this.history.current;\n var location = normalizeLocation(to, current, append, this);\n var route = this.match(location, current);\n var fullPath = route.redirectedFrom || route.fullPath;\n var base = this.history.base;\n var href = createHref(base, fullPath, this.mode);\n return {\n location: location,\n route: route,\n href: href,\n // for backwards compat\n normalizedTo: location,\n resolved: route\n }\n};\n\nVueRouter.prototype.getRoutes = function getRoutes () {\n return this.matcher.getRoutes()\n};\n\nVueRouter.prototype.addRoute = function addRoute (parentOrRoute, route) {\n this.matcher.addRoute(parentOrRoute, route);\n if (this.history.current !== START) {\n this.history.transitionTo(this.history.getCurrentLocation());\n }\n};\n\nVueRouter.prototype.addRoutes = function addRoutes (routes) {\n if (process.env.NODE_ENV !== 'production') {\n warn(false, 'router.addRoutes() is deprecated and has been removed in Vue Router 4. Use router.addRoute() instead.');\n }\n this.matcher.addRoutes(routes);\n if (this.history.current !== START) {\n this.history.transitionTo(this.history.getCurrentLocation());\n }\n};\n\nObject.defineProperties( VueRouter.prototype, prototypeAccessors );\n\nvar VueRouter$1 = VueRouter;\n\nfunction registerHook (list, fn) {\n list.push(fn);\n return function () {\n var i = list.indexOf(fn);\n if (i > -1) { list.splice(i, 1); }\n }\n}\n\nfunction createHref (base, fullPath, mode) {\n var path = mode === 'hash' ? '#' + fullPath : fullPath;\n return base ? cleanPath(base + '/' + path) : path\n}\n\n// We cannot remove this as it would be a breaking change\nVueRouter.install = install;\nVueRouter.version = '3.6.5';\nVueRouter.isNavigationFailure = isNavigationFailure;\nVueRouter.NavigationFailureType = NavigationFailureType;\nVueRouter.START_LOCATION = START;\n\nif (inBrowser && window.Vue) {\n window.Vue.use(VueRouter);\n}\n\nvar version = '3.6.5';\n\nexport { NavigationFailureType, Link as RouterLink, View as RouterView, START as START_LOCATION, VueRouter$1 as default, isNavigationFailure, version };\n","exports.sync = function (store, router, options) {\n var moduleName = (options || {}).moduleName || 'route'\n\n store.registerModule(moduleName, {\n namespaced: true,\n state: cloneRoute(router.currentRoute),\n mutations: {\n 'ROUTE_CHANGED': function ROUTE_CHANGED (state, transition) {\n store.state[moduleName] = cloneRoute(transition.to, transition.from)\n }\n }\n })\n\n var isTimeTraveling = false\n var currentPath\n\n // sync router on store change\n var storeUnwatch = store.watch(\n function (state) { return state[moduleName]; },\n function (route) {\n var fullPath = route.fullPath;\n if (fullPath === currentPath) {\n return\n }\n if (currentPath != null) {\n isTimeTraveling = true\n router.push(route)\n }\n currentPath = fullPath\n },\n { sync: true }\n )\n\n // sync store on router navigation\n var afterEachUnHook = router.afterEach(function (to, from) {\n if (isTimeTraveling) {\n isTimeTraveling = false\n return\n }\n currentPath = to.fullPath\n store.commit(moduleName + '/ROUTE_CHANGED', { to: to, from: from })\n })\n\n return function unsync () {\n // On unsync, remove router hook\n if (afterEachUnHook != null) {\n afterEachUnHook()\n }\n\n // On unsync, remove store watch\n if (storeUnwatch != null) {\n storeUnwatch()\n }\n\n // On unsync, unregister Module with store\n store.unregisterModule(moduleName)\n }\n}\n\nfunction cloneRoute (to, from) {\n var clone = {\n name: to.name,\n path: to.path,\n hash: to.hash,\n query: to.query,\n params: to.params,\n fullPath: to.fullPath,\n meta: to.meta\n }\n if (from) {\n clone.from = cloneRoute(from)\n }\n return Object.freeze(clone)\n}\n\n","import { getCurrentUser as A, onRequestTokenUpdate as ue, getRequestToken as de } from \"@nextcloud/auth\";\nimport { getLoggerBuilder as B } from \"@nextcloud/logger\";\nimport { getCanonicalLocale as ae } from \"@nextcloud/l10n\";\nimport { join as le, basename as fe, extname as ce, dirname as I } from \"path\";\nimport { encodePath as he } from \"@nextcloud/paths\";\nimport { generateRemoteUrl as pe } from \"@nextcloud/router\";\nimport { createClient as ge, getPatcher as we } from \"webdav\";\nimport { CancelablePromise as me } from \"cancelable-promise\";\n/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\nconst Ne = (e) => e === null ? B().setApp(\"files\").build() : B().setApp(\"files\").setUid(e.uid).build(), m = Ne(A());\n/**\n * @copyright Copyright (c) 2021 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\nclass Ee {\n _entries = [];\n registerEntry(t) {\n this.validateEntry(t), this._entries.push(t);\n }\n unregisterEntry(t) {\n const r = typeof t == \"string\" ? this.getEntryIndex(t) : this.getEntryIndex(t.id);\n if (r === -1) {\n m.warn(\"Entry not found, nothing removed\", { entry: t, entries: this.getEntries() });\n return;\n }\n this._entries.splice(r, 1);\n }\n /**\n * Get the list of registered entries\n *\n * @param {Folder} context the creation context. Usually the current folder\n */\n getEntries(t) {\n return t ? this._entries.filter((r) => typeof r.enabled == \"function\" ? r.enabled(t) : !0) : this._entries;\n }\n getEntryIndex(t) {\n return this._entries.findIndex((r) => r.id === t);\n }\n validateEntry(t) {\n if (!t.id || !t.displayName || !(t.iconSvgInline || t.iconClass) || !t.handler)\n throw new Error(\"Invalid entry\");\n if (typeof t.id != \"string\" || typeof t.displayName != \"string\")\n throw new Error(\"Invalid id or displayName property\");\n if (t.iconClass && typeof t.iconClass != \"string\" || t.iconSvgInline && typeof t.iconSvgInline != \"string\")\n throw new Error(\"Invalid icon provided\");\n if (t.enabled !== void 0 && typeof t.enabled != \"function\")\n throw new Error(\"Invalid enabled property\");\n if (typeof t.handler != \"function\")\n throw new Error(\"Invalid handler property\");\n if (\"order\" in t && typeof t.order != \"number\")\n throw new Error(\"Invalid order property\");\n if (this.getEntryIndex(t.id) !== -1)\n throw new Error(\"Duplicate entry\");\n }\n}\nconst F = function() {\n return typeof window._nc_newfilemenu > \"u\" && (window._nc_newfilemenu = new Ee(), m.debug(\"NewFileMenu initialized\")), window._nc_newfilemenu;\n};\n/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\nconst O = [\"B\", \"KB\", \"MB\", \"GB\", \"TB\", \"PB\"], P = [\"B\", \"KiB\", \"MiB\", \"GiB\", \"TiB\", \"PiB\"];\nfunction Qt(e, t = !1, r = !1, s = !1) {\n r = r && !s, typeof e == \"string\" && (e = Number(e));\n let n = e > 0 ? Math.floor(Math.log(e) / Math.log(s ? 1e3 : 1024)) : 0;\n n = Math.min((r ? P.length : O.length) - 1, n);\n const i = r ? P[n] : O[n];\n let d = (e / Math.pow(s ? 1e3 : 1024, n)).toFixed(1);\n return t === !0 && n === 0 ? (d !== \"0.0\" ? \"< 1 \" : \"0 \") + (r ? P[1] : O[1]) : (n < 2 ? d = parseFloat(d).toFixed(0) : d = parseFloat(d).toLocaleString(ae()), d + \" \" + i);\n}\nfunction Dt(e, t = !1) {\n try {\n e = `${e}`.toLocaleLowerCase().replaceAll(/\\s+/g, \"\").replaceAll(\",\", \".\");\n } catch {\n return null;\n }\n const r = e.match(/^([0-9]*(\\.[0-9]*)?)([kmgtp]?)(i?)b?$/);\n if (r === null || r[1] === \".\" || r[1] === \"\")\n return null;\n const s = {\n \"\": 0,\n k: 1,\n m: 2,\n g: 3,\n t: 4,\n p: 5,\n e: 6\n }, n = `${r[1]}`, i = r[4] === \"i\" || t ? 1024 : 1e3;\n return Math.round(Number.parseFloat(n) * i ** s[r[3]]);\n}\n/**\n * @copyright Copyright (c) 2023 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\nvar W = /* @__PURE__ */ ((e) => (e.DEFAULT = \"default\", e.HIDDEN = \"hidden\", e))(W || {});\nclass er {\n _action;\n constructor(t) {\n this.validateAction(t), this._action = t;\n }\n get id() {\n return this._action.id;\n }\n get displayName() {\n return this._action.displayName;\n }\n get title() {\n return this._action.title;\n }\n get iconSvgInline() {\n return this._action.iconSvgInline;\n }\n get enabled() {\n return this._action.enabled;\n }\n get exec() {\n return this._action.exec;\n }\n get execBatch() {\n return this._action.execBatch;\n }\n get order() {\n return this._action.order;\n }\n get parent() {\n return this._action.parent;\n }\n get default() {\n return this._action.default;\n }\n get inline() {\n return this._action.inline;\n }\n get renderInline() {\n return this._action.renderInline;\n }\n validateAction(t) {\n if (!t.id || typeof t.id != \"string\")\n throw new Error(\"Invalid id\");\n if (!t.displayName || typeof t.displayName != \"function\")\n throw new Error(\"Invalid displayName function\");\n if (\"title\" in t && typeof t.title != \"function\")\n throw new Error(\"Invalid title function\");\n if (!t.iconSvgInline || typeof t.iconSvgInline != \"function\")\n throw new Error(\"Invalid iconSvgInline function\");\n if (!t.exec || typeof t.exec != \"function\")\n throw new Error(\"Invalid exec function\");\n if (\"enabled\" in t && typeof t.enabled != \"function\")\n throw new Error(\"Invalid enabled function\");\n if (\"execBatch\" in t && typeof t.execBatch != \"function\")\n throw new Error(\"Invalid execBatch function\");\n if (\"order\" in t && typeof t.order != \"number\")\n throw new Error(\"Invalid order\");\n if (\"parent\" in t && typeof t.parent != \"string\")\n throw new Error(\"Invalid parent\");\n if (t.default && !Object.values(W).includes(t.default))\n throw new Error(\"Invalid default\");\n if (\"inline\" in t && typeof t.inline != \"function\")\n throw new Error(\"Invalid inline function\");\n if (\"renderInline\" in t && typeof t.renderInline != \"function\")\n throw new Error(\"Invalid renderInline function\");\n }\n}\nconst tr = function(e) {\n if (typeof window._nc_fileactions > \"u\" && (window._nc_fileactions = [], m.debug(\"FileActions initialized\")), window._nc_fileactions.find((t) => t.id === e.id)) {\n m.error(`FileAction ${e.id} already registered`, { action: e });\n return;\n }\n window._nc_fileactions.push(e);\n}, rr = function() {\n return typeof window._nc_fileactions > \"u\" && (window._nc_fileactions = [], m.debug(\"FileActions initialized\")), window._nc_fileactions;\n};\n/**\n * @copyright Copyright (c) 2023 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\nclass nr {\n _header;\n constructor(t) {\n this.validateHeader(t), this._header = t;\n }\n get id() {\n return this._header.id;\n }\n get order() {\n return this._header.order;\n }\n get enabled() {\n return this._header.enabled;\n }\n get render() {\n return this._header.render;\n }\n get updated() {\n return this._header.updated;\n }\n validateHeader(t) {\n if (!t.id || !t.render || !t.updated)\n throw new Error(\"Invalid header: id, render and updated are required\");\n if (typeof t.id != \"string\")\n throw new Error(\"Invalid id property\");\n if (t.enabled !== void 0 && typeof t.enabled != \"function\")\n throw new Error(\"Invalid enabled property\");\n if (t.render && typeof t.render != \"function\")\n throw new Error(\"Invalid render property\");\n if (t.updated && typeof t.updated != \"function\")\n throw new Error(\"Invalid updated property\");\n }\n}\nconst ir = function(e) {\n if (typeof window._nc_filelistheader > \"u\" && (window._nc_filelistheader = [], m.debug(\"FileListHeaders initialized\")), window._nc_filelistheader.find((t) => t.id === e.id)) {\n m.error(`Header ${e.id} already registered`, { header: e });\n return;\n }\n window._nc_filelistheader.push(e);\n}, sr = function() {\n return typeof window._nc_filelistheader > \"u\" && (window._nc_filelistheader = [], m.debug(\"FileListHeaders initialized\")), window._nc_filelistheader;\n};\n/**\n * @copyright Copyright (c) 2022 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\nvar N = /* @__PURE__ */ ((e) => (e[e.NONE = 0] = \"NONE\", e[e.CREATE = 4] = \"CREATE\", e[e.READ = 1] = \"READ\", e[e.UPDATE = 2] = \"UPDATE\", e[e.DELETE = 8] = \"DELETE\", e[e.SHARE = 16] = \"SHARE\", e[e.ALL = 31] = \"ALL\", e))(N || {});\n/**\n * @copyright Copyright (c) 2023 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Ferdinand Thiessen <opensource@fthiessen.de>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\nconst Z = [\n \"d:getcontentlength\",\n \"d:getcontenttype\",\n \"d:getetag\",\n \"d:getlastmodified\",\n \"d:quota-available-bytes\",\n \"d:resourcetype\",\n \"nc:has-preview\",\n \"nc:is-encrypted\",\n \"nc:mount-type\",\n \"oc:comments-unread\",\n \"oc:favorite\",\n \"oc:fileid\",\n \"oc:owner-display-name\",\n \"oc:owner-id\",\n \"oc:permissions\",\n \"oc:size\"\n], j = {\n d: \"DAV:\",\n nc: \"http://nextcloud.org/ns\",\n oc: \"http://owncloud.org/ns\",\n ocs: \"http://open-collaboration-services.org/ns\"\n}, or = function(e, t = { nc: \"http://nextcloud.org/ns\" }) {\n typeof window._nc_dav_properties > \"u\" && (window._nc_dav_properties = [...Z], window._nc_dav_namespaces = { ...j });\n const r = { ...window._nc_dav_namespaces, ...t };\n if (window._nc_dav_properties.find((n) => n === e))\n return m.warn(`${e} already registered`, { prop: e }), !1;\n if (e.startsWith(\"<\") || e.split(\":\").length !== 2)\n return m.error(`${e} is not valid. See example: 'oc:fileid'`, { prop: e }), !1;\n const s = e.split(\":\")[0];\n return r[s] ? (window._nc_dav_properties.push(e), window._nc_dav_namespaces = r, !0) : (m.error(`${e} namespace unknown`, { prop: e, namespaces: r }), !1);\n}, V = function() {\n return typeof window._nc_dav_properties > \"u\" && (window._nc_dav_properties = [...Z]), window._nc_dav_properties.map((e) => `<${e} />`).join(\" \");\n}, S = function() {\n return typeof window._nc_dav_namespaces > \"u\" && (window._nc_dav_namespaces = { ...j }), Object.keys(window._nc_dav_namespaces).map((e) => `xmlns:${e}=\"${window._nc_dav_namespaces?.[e]}\"`).join(\" \");\n}, ur = function() {\n return `<?xml version=\"1.0\"?>\n\t\t<d:propfind ${S()}>\n\t\t\t<d:prop>\n\t\t\t\t${V()}\n\t\t\t</d:prop>\n\t\t</d:propfind>`;\n}, be = function() {\n return `<?xml version=\"1.0\"?>\n\t\t<oc:filter-files ${S()}>\n\t\t\t<d:prop>\n\t\t\t\t${V()}\n\t\t\t</d:prop>\n\t\t\t<oc:filter-rules>\n\t\t\t\t<oc:favorite>1</oc:favorite>\n\t\t\t</oc:filter-rules>\n\t\t</oc:filter-files>`;\n}, dr = function(e) {\n return `<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<d:searchrequest ${S()}\n\txmlns:ns=\"https://github.com/icewind1991/SearchDAV/ns\">\n\t<d:basicsearch>\n\t\t<d:select>\n\t\t\t<d:prop>\n\t\t\t\t${V()}\n\t\t\t</d:prop>\n\t\t</d:select>\n\t\t<d:from>\n\t\t\t<d:scope>\n\t\t\t\t<d:href>/files/${A()?.uid}/</d:href>\n\t\t\t\t<d:depth>infinity</d:depth>\n\t\t\t</d:scope>\n\t\t</d:from>\n\t\t<d:where>\n\t\t\t<d:and>\n\t\t\t\t<d:or>\n\t\t\t\t\t<d:not>\n\t\t\t\t\t\t<d:eq>\n\t\t\t\t\t\t\t<d:prop>\n\t\t\t\t\t\t\t\t<d:getcontenttype/>\n\t\t\t\t\t\t\t</d:prop>\n\t\t\t\t\t\t\t<d:literal>httpd/unix-directory</d:literal>\n\t\t\t\t\t\t</d:eq>\n\t\t\t\t\t</d:not>\n\t\t\t\t\t<d:eq>\n\t\t\t\t\t\t<d:prop>\n\t\t\t\t\t\t\t<oc:size/>\n\t\t\t\t\t\t</d:prop>\n\t\t\t\t\t\t<d:literal>0</d:literal>\n\t\t\t\t\t</d:eq>\n\t\t\t\t</d:or>\n\t\t\t\t<d:gt>\n\t\t\t\t\t<d:prop>\n\t\t\t\t\t\t<d:getlastmodified/>\n\t\t\t\t\t</d:prop>\n\t\t\t\t\t<d:literal>${e}</d:literal>\n\t\t\t\t</d:gt>\n\t\t\t</d:and>\n\t\t</d:where>\n\t\t<d:orderby>\n\t\t\t<d:order>\n\t\t\t\t<d:prop>\n\t\t\t\t\t<d:getlastmodified/>\n\t\t\t\t</d:prop>\n\t\t\t\t<d:descending/>\n\t\t\t</d:order>\n\t\t</d:orderby>\n\t\t<d:limit>\n\t\t\t<d:nresults>100</d:nresults>\n\t\t\t<ns:firstresult>0</ns:firstresult>\n\t\t</d:limit>\n\t</d:basicsearch>\n</d:searchrequest>`;\n};\n/**\n * @copyright Copyright (c) 2023 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Ferdinand Thiessen <opensource@fthiessen.de>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\nconst ye = function(e = \"\") {\n let t = N.NONE;\n return e && ((e.includes(\"C\") || e.includes(\"K\")) && (t |= N.CREATE), e.includes(\"G\") && (t |= N.READ), (e.includes(\"W\") || e.includes(\"N\") || e.includes(\"V\")) && (t |= N.UPDATE), e.includes(\"D\") && (t |= N.DELETE), e.includes(\"R\") && (t |= N.SHARE)), t;\n};\n/**\n * @copyright Copyright (c) 2022 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\nvar L = /* @__PURE__ */ ((e) => (e.Folder = \"folder\", e.File = \"file\", e))(L || {});\n/**\n * @copyright Copyright (c) 2022 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\nconst Y = function(e, t) {\n return e.match(t) !== null;\n}, q = (e, t) => {\n if (e.id && typeof e.id != \"number\")\n throw new Error(\"Invalid id type of value\");\n if (!e.source)\n throw new Error(\"Missing mandatory source\");\n try {\n new URL(e.source);\n } catch {\n throw new Error(\"Invalid source format, source must be a valid URL\");\n }\n if (!e.source.startsWith(\"http\"))\n throw new Error(\"Invalid source format, only http(s) is supported\");\n if (e.mtime && !(e.mtime instanceof Date))\n throw new Error(\"Invalid mtime type\");\n if (e.crtime && !(e.crtime instanceof Date))\n throw new Error(\"Invalid crtime type\");\n if (!e.mime || typeof e.mime != \"string\" || !e.mime.match(/^[-\\w.]+\\/[-+\\w.]+$/gi))\n throw new Error(\"Missing or invalid mandatory mime\");\n if (\"size\" in e && typeof e.size != \"number\" && e.size !== void 0)\n throw new Error(\"Invalid size type\");\n if (\"permissions\" in e && e.permissions !== void 0 && !(typeof e.permissions == \"number\" && e.permissions >= N.NONE && e.permissions <= N.ALL))\n throw new Error(\"Invalid permissions\");\n if (e.owner && e.owner !== null && typeof e.owner != \"string\")\n throw new Error(\"Invalid owner type\");\n if (e.attributes && typeof e.attributes != \"object\")\n throw new Error(\"Invalid attributes type\");\n if (e.root && typeof e.root != \"string\")\n throw new Error(\"Invalid root type\");\n if (e.root && !e.root.startsWith(\"/\"))\n throw new Error(\"Root must start with a leading slash\");\n if (e.root && !e.source.includes(e.root))\n throw new Error(\"Root must be part of the source\");\n if (e.root && Y(e.source, t)) {\n const r = e.source.match(t)[0];\n if (!e.source.includes(le(r, e.root)))\n throw new Error(\"The root must be relative to the service. e.g /files/emma\");\n }\n if (e.status && !Object.values(J).includes(e.status))\n throw new Error(\"Status must be a valid NodeStatus\");\n};\n/**\n * @copyright Copyright (c) 2022 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\nvar J = /* @__PURE__ */ ((e) => (e.NEW = \"new\", e.FAILED = \"failed\", e.LOADING = \"loading\", e.LOCKED = \"locked\", e))(J || {});\nclass Q {\n _data;\n _attributes;\n _knownDavService = /(remote|public)\\.php\\/(web)?dav/i;\n constructor(t, r) {\n q(t, r || this._knownDavService), this._data = t;\n const s = {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n set: (n, i, d) => (this.updateMtime(), Reflect.set(n, i, d)),\n deleteProperty: (n, i) => (this.updateMtime(), Reflect.deleteProperty(n, i))\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n };\n this._attributes = new Proxy(t.attributes || {}, s), delete this._data.attributes, r && (this._knownDavService = r);\n }\n /**\n * Get the source url to this object\n */\n get source() {\n return this._data.source.replace(/\\/$/i, \"\");\n }\n /**\n * Get the encoded source url to this object for requests purposes\n */\n get encodedSource() {\n const { origin: t } = new URL(this.source);\n return t + he(this.source.slice(t.length));\n }\n /**\n * Get this object name\n */\n get basename() {\n return fe(this.source);\n }\n /**\n * Get this object's extension\n */\n get extension() {\n return ce(this.source);\n }\n /**\n * Get the directory path leading to this object\n * Will use the relative path to root if available\n */\n get dirname() {\n if (this.root) {\n let r = this.source;\n this.isDavRessource && (r = r.split(this._knownDavService).pop());\n const s = r.indexOf(this.root), n = this.root.replace(/\\/$/, \"\");\n return I(r.slice(s + n.length) || \"/\");\n }\n const t = new URL(this.source);\n return I(t.pathname);\n }\n /**\n * Get the file mime\n */\n get mime() {\n return this._data.mime;\n }\n /**\n * Get the file modification time\n */\n get mtime() {\n return this._data.mtime;\n }\n /**\n * Get the file creation time\n */\n get crtime() {\n return this._data.crtime;\n }\n /**\n * Get the file size\n */\n get size() {\n return this._data.size;\n }\n /**\n * Get the file attribute\n */\n get attributes() {\n return this._attributes;\n }\n /**\n * Get the file permissions\n */\n get permissions() {\n return this.owner === null && !this.isDavRessource ? N.READ : this._data.permissions !== void 0 ? this._data.permissions : N.NONE;\n }\n /**\n * Get the file owner\n */\n get owner() {\n return this.isDavRessource ? this._data.owner : null;\n }\n /**\n * Is this a dav-related ressource ?\n */\n get isDavRessource() {\n return Y(this.source, this._knownDavService);\n }\n /**\n * Get the dav root of this object\n */\n get root() {\n return this._data.root ? this._data.root.replace(/^(.+)\\/$/, \"$1\") : this.isDavRessource && I(this.source).split(this._knownDavService).pop() || null;\n }\n /**\n * Get the absolute path of this object relative to the root\n */\n get path() {\n if (this.root) {\n let t = this.source;\n this.isDavRessource && (t = t.split(this._knownDavService).pop());\n const r = t.indexOf(this.root), s = this.root.replace(/\\/$/, \"\");\n return t.slice(r + s.length) || \"/\";\n }\n return (this.dirname + \"/\" + this.basename).replace(/\\/\\//g, \"/\");\n }\n /**\n * Get the node id if defined.\n * Will look for the fileid in attributes if undefined.\n */\n get fileid() {\n return this._data?.id || this.attributes?.fileid;\n }\n /**\n * Get the node status.\n */\n get status() {\n return this._data?.status;\n }\n /**\n * Set the node status.\n */\n set status(t) {\n this._data.status = t;\n }\n /**\n * Move the node to a new destination\n *\n * @param {string} destination the new source.\n * e.g. https://cloud.domain.com/remote.php/dav/files/emma/Photos/picture.jpg\n */\n move(t) {\n q({ ...this._data, source: t }, this._knownDavService), this._data.source = t, this.updateMtime();\n }\n /**\n * Rename the node\n * This aliases the move method for easier usage\n *\n * @param basename The new name of the node\n */\n rename(t) {\n if (t.includes(\"/\"))\n throw new Error(\"Invalid basename\");\n this.move(I(this.source) + \"/\" + t);\n }\n /**\n * Update the mtime if exists.\n */\n updateMtime() {\n this._data.mtime && (this._data.mtime = /* @__PURE__ */ new Date());\n }\n}\n/**\n * @copyright Copyright (c) 2022 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\nclass _e extends Q {\n get type() {\n return L.File;\n }\n}\n/**\n * @copyright Copyright (c) 2022 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\nclass ve extends Q {\n constructor(t) {\n super({\n ...t,\n mime: \"httpd/unix-directory\"\n });\n }\n get type() {\n return L.Folder;\n }\n get extension() {\n return null;\n }\n get mime() {\n return \"httpd/unix-directory\";\n }\n}\n/**\n * @copyright Copyright (c) 2023 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Ferdinand Thiessen <opensource@fthiessen.de>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\nconst D = `/files/${A()?.uid}`, ee = pe(\"dav\"), ar = function(e = ee, t = {}) {\n const r = ge(e, { headers: t });\n function s(i) {\n r.setHeaders({\n ...t,\n // Add this so the server knows it is an request from the browser\n \"X-Requested-With\": \"XMLHttpRequest\",\n // Inject user auth\n requesttoken: i ?? \"\"\n });\n }\n return ue(s), s(de()), we().patch(\"fetch\", (i, d) => {\n const u = d.headers;\n return u?.method && (d.method = u.method, delete u.method), fetch(i, d);\n }), r;\n}, lr = (e, t = \"/\", r = D) => {\n const s = new AbortController();\n return new me(async (n, i, d) => {\n d(() => s.abort());\n try {\n const o = (await e.getDirectoryContents(`${r}${t}`, {\n signal: s.signal,\n details: !0,\n data: be(),\n headers: {\n // see davGetClient for patched webdav client\n method: \"REPORT\"\n },\n includeSelf: !0\n })).data.filter((a) => a.filename !== t).map((a) => Te(a, r));\n n(o);\n } catch (u) {\n i(u);\n }\n });\n}, Te = function(e, t = D, r = ee) {\n const s = A()?.uid;\n if (!s)\n throw new Error(\"No user id found\");\n const n = e.props, i = ye(n?.permissions), d = (n?.[\"owner-id\"] || s).toString(), u = {\n id: n?.fileid || 0,\n source: `${r}${e.filename}`,\n mtime: new Date(Date.parse(e.lastmod)),\n mime: e.mime || \"application/octet-stream\",\n size: n?.size || Number.parseInt(n.getcontentlength || \"0\"),\n permissions: i,\n owner: d,\n root: t,\n attributes: {\n ...e,\n ...n,\n hasPreview: n?.[\"has-preview\"]\n }\n };\n return delete u.attributes?.props, e.type === \"file\" ? new _e(u) : new ve(u);\n};\n/**\n * @copyright Copyright (c) 2022 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\nclass Ie {\n _views = [];\n _currentView = null;\n register(t) {\n if (this._views.find((r) => r.id === t.id))\n throw new Error(`View id ${t.id} is already registered`);\n this._views.push(t);\n }\n remove(t) {\n const r = this._views.findIndex((s) => s.id === t);\n r !== -1 && this._views.splice(r, 1);\n }\n get views() {\n return this._views;\n }\n setActive(t) {\n this._currentView = t;\n }\n get active() {\n return this._currentView;\n }\n}\nconst fr = function() {\n return typeof window._nc_navigation > \"u\" && (window._nc_navigation = new Ie(), m.debug(\"Navigation service initialized\")), window._nc_navigation;\n};\n/**\n * @copyright Copyright (c) 2022 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\nclass Ae {\n _column;\n constructor(t) {\n Ce(t), this._column = t;\n }\n get id() {\n return this._column.id;\n }\n get title() {\n return this._column.title;\n }\n get render() {\n return this._column.render;\n }\n get sort() {\n return this._column.sort;\n }\n get summary() {\n return this._column.summary;\n }\n}\nconst Ce = function(e) {\n if (!e.id || typeof e.id != \"string\")\n throw new Error(\"A column id is required\");\n if (!e.title || typeof e.title != \"string\")\n throw new Error(\"A column title is required\");\n if (!e.render || typeof e.render != \"function\")\n throw new Error(\"A render function is required\");\n if (e.sort && typeof e.sort != \"function\")\n throw new Error(\"Column sortFunction must be a function\");\n if (e.summary && typeof e.summary != \"function\")\n throw new Error(\"Column summary must be a function\");\n return !0;\n};\nvar R = {}, C = {};\n(function(e) {\n const t = \":A-Za-z_\\\\u00C0-\\\\u00D6\\\\u00D8-\\\\u00F6\\\\u00F8-\\\\u02FF\\\\u0370-\\\\u037D\\\\u037F-\\\\u1FFF\\\\u200C-\\\\u200D\\\\u2070-\\\\u218F\\\\u2C00-\\\\u2FEF\\\\u3001-\\\\uD7FF\\\\uF900-\\\\uFDCF\\\\uFDF0-\\\\uFFFD\", r = t + \"\\\\-.\\\\d\\\\u00B7\\\\u0300-\\\\u036F\\\\u203F-\\\\u2040\", s = \"[\" + t + \"][\" + r + \"]*\", n = new RegExp(\"^\" + s + \"$\"), i = function(u, o) {\n const a = [];\n let l = o.exec(u);\n for (; l; ) {\n const f = [];\n f.startIndex = o.lastIndex - l[0].length;\n const c = l.length;\n for (let g = 0; g < c; g++)\n f.push(l[g]);\n a.push(f), l = o.exec(u);\n }\n return a;\n }, d = function(u) {\n const o = n.exec(u);\n return !(o === null || typeof o > \"u\");\n };\n e.isExist = function(u) {\n return typeof u < \"u\";\n }, e.isEmptyObject = function(u) {\n return Object.keys(u).length === 0;\n }, e.merge = function(u, o, a) {\n if (o) {\n const l = Object.keys(o), f = l.length;\n for (let c = 0; c < f; c++)\n a === \"strict\" ? u[l[c]] = [o[l[c]]] : u[l[c]] = o[l[c]];\n }\n }, e.getValue = function(u) {\n return e.isExist(u) ? u : \"\";\n }, e.isName = d, e.getAllMatches = i, e.nameRegexp = s;\n})(C);\nconst M = C, Oe = {\n allowBooleanAttributes: !1,\n //A tag can have attributes without any value\n unpairedTags: []\n};\nR.validate = function(e, t) {\n t = Object.assign({}, Oe, t);\n const r = [];\n let s = !1, n = !1;\n e[0] === \"\\uFEFF\" && (e = e.substr(1));\n for (let i = 0; i < e.length; i++)\n if (e[i] === \"<\" && e[i + 1] === \"?\") {\n if (i += 2, i = U(e, i), i.err)\n return i;\n } else if (e[i] === \"<\") {\n let d = i;\n if (i++, e[i] === \"!\") {\n i = G(e, i);\n continue;\n } else {\n let u = !1;\n e[i] === \"/\" && (u = !0, i++);\n let o = \"\";\n for (; i < e.length && e[i] !== \">\" && e[i] !== \" \" && e[i] !== \"\t\" && e[i] !== `\n` && e[i] !== \"\\r\"; i++)\n o += e[i];\n if (o = o.trim(), o[o.length - 1] === \"/\" && (o = o.substring(0, o.length - 1), i--), !Re(o)) {\n let f;\n return o.trim().length === 0 ? f = \"Invalid space after '<'.\" : f = \"Tag '\" + o + \"' is an invalid name.\", p(\"InvalidTag\", f, w(e, i));\n }\n const a = $e(e, i);\n if (a === !1)\n return p(\"InvalidAttr\", \"Attributes for '\" + o + \"' have open quote.\", w(e, i));\n let l = a.value;\n if (i = a.index, l[l.length - 1] === \"/\") {\n const f = i - l.length;\n l = l.substring(0, l.length - 1);\n const c = z(l, t);\n if (c === !0)\n s = !0;\n else\n return p(c.err.code, c.err.msg, w(e, f + c.err.line));\n } else if (u)\n if (a.tagClosed) {\n if (l.trim().length > 0)\n return p(\"InvalidTag\", \"Closing tag '\" + o + \"' can't have attributes or invalid starting.\", w(e, d));\n {\n const f = r.pop();\n if (o !== f.tagName) {\n let c = w(e, f.tagStartPos);\n return p(\n \"InvalidTag\",\n \"Expected closing tag '\" + f.tagName + \"' (opened in line \" + c.line + \", col \" + c.col + \") instead of closing tag '\" + o + \"'.\",\n w(e, d)\n );\n }\n r.length == 0 && (n = !0);\n }\n } else\n return p(\"InvalidTag\", \"Closing tag '\" + o + \"' doesn't have proper closing.\", w(e, i));\n else {\n const f = z(l, t);\n if (f !== !0)\n return p(f.err.code, f.err.msg, w(e, i - l.length + f.err.line));\n if (n === !0)\n return p(\"InvalidXml\", \"Multiple possible root nodes found.\", w(e, i));\n t.unpairedTags.indexOf(o) !== -1 || r.push({ tagName: o, tagStartPos: d }), s = !0;\n }\n for (i++; i < e.length; i++)\n if (e[i] === \"<\")\n if (e[i + 1] === \"!\") {\n i++, i = G(e, i);\n continue;\n } else if (e[i + 1] === \"?\") {\n if (i = U(e, ++i), i.err)\n return i;\n } else\n break;\n else if (e[i] === \"&\") {\n const f = Se(e, i);\n if (f == -1)\n return p(\"InvalidChar\", \"char '&' is not expected.\", w(e, i));\n i = f;\n } else if (n === !0 && !X(e[i]))\n return p(\"InvalidXml\", \"Extra text at the end\", w(e, i));\n e[i] === \"<\" && i--;\n }\n } else {\n if (X(e[i]))\n continue;\n return p(\"InvalidChar\", \"char '\" + e[i] + \"' is not expected.\", w(e, i));\n }\n if (s) {\n if (r.length == 1)\n return p(\"InvalidTag\", \"Unclosed tag '\" + r[0].tagName + \"'.\", w(e, r[0].tagStartPos));\n if (r.length > 0)\n return p(\"InvalidXml\", \"Invalid '\" + JSON.stringify(r.map((i) => i.tagName), null, 4).replace(/\\r?\\n/g, \"\") + \"' found.\", { line: 1, col: 1 });\n } else\n return p(\"InvalidXml\", \"Start tag expected.\", 1);\n return !0;\n};\nfunction X(e) {\n return e === \" \" || e === \"\t\" || e === `\n` || e === \"\\r\";\n}\nfunction U(e, t) {\n const r = t;\n for (; t < e.length; t++)\n if (e[t] == \"?\" || e[t] == \" \") {\n const s = e.substr(r, t - r);\n if (t > 5 && s === \"xml\")\n return p(\"InvalidXml\", \"XML declaration allowed only at the start of the document.\", w(e, t));\n if (e[t] == \"?\" && e[t + 1] == \">\") {\n t++;\n break;\n } else\n continue;\n }\n return t;\n}\nfunction G(e, t) {\n if (e.length > t + 5 && e[t + 1] === \"-\" && e[t + 2] === \"-\") {\n for (t += 3; t < e.length; t++)\n if (e[t] === \"-\" && e[t + 1] === \"-\" && e[t + 2] === \">\") {\n t += 2;\n break;\n }\n } else if (e.length > t + 8 && e[t + 1] === \"D\" && e[t + 2] === \"O\" && e[t + 3] === \"C\" && e[t + 4] === \"T\" && e[t + 5] === \"Y\" && e[t + 6] === \"P\" && e[t + 7] === \"E\") {\n let r = 1;\n for (t += 8; t < e.length; t++)\n if (e[t] === \"<\")\n r++;\n else if (e[t] === \">\" && (r--, r === 0))\n break;\n } else if (e.length > t + 9 && e[t + 1] === \"[\" && e[t + 2] === \"C\" && e[t + 3] === \"D\" && e[t + 4] === \"A\" && e[t + 5] === \"T\" && e[t + 6] === \"A\" && e[t + 7] === \"[\") {\n for (t += 8; t < e.length; t++)\n if (e[t] === \"]\" && e[t + 1] === \"]\" && e[t + 2] === \">\") {\n t += 2;\n break;\n }\n }\n return t;\n}\nconst Pe = '\"', xe = \"'\";\nfunction $e(e, t) {\n let r = \"\", s = \"\", n = !1;\n for (; t < e.length; t++) {\n if (e[t] === Pe || e[t] === xe)\n s === \"\" ? s = e[t] : s !== e[t] || (s = \"\");\n else if (e[t] === \">\" && s === \"\") {\n n = !0;\n break;\n }\n r += e[t];\n }\n return s !== \"\" ? !1 : {\n value: r,\n index: t,\n tagClosed: n\n };\n}\nconst Fe = new RegExp(`(\\\\s*)([^\\\\s=]+)(\\\\s*=)?(\\\\s*(['\"])(([\\\\s\\\\S])*?)\\\\5)?`, \"g\");\nfunction z(e, t) {\n const r = M.getAllMatches(e, Fe), s = {};\n for (let n = 0; n < r.length; n++) {\n if (r[n][1].length === 0)\n return p(\"InvalidAttr\", \"Attribute '\" + r[n][2] + \"' has no space in starting.\", v(r[n]));\n if (r[n][3] !== void 0 && r[n][4] === void 0)\n return p(\"InvalidAttr\", \"Attribute '\" + r[n][2] + \"' is without value.\", v(r[n]));\n if (r[n][3] === void 0 && !t.allowBooleanAttributes)\n return p(\"InvalidAttr\", \"boolean attribute '\" + r[n][2] + \"' is not allowed.\", v(r[n]));\n const i = r[n][2];\n if (!Le(i))\n return p(\"InvalidAttr\", \"Attribute '\" + i + \"' is an invalid name.\", v(r[n]));\n if (!s.hasOwnProperty(i))\n s[i] = 1;\n else\n return p(\"InvalidAttr\", \"Attribute '\" + i + \"' is repeated.\", v(r[n]));\n }\n return !0;\n}\nfunction Ve(e, t) {\n let r = /\\d/;\n for (e[t] === \"x\" && (t++, r = /[\\da-fA-F]/); t < e.length; t++) {\n if (e[t] === \";\")\n return t;\n if (!e[t].match(r))\n break;\n }\n return -1;\n}\nfunction Se(e, t) {\n if (t++, e[t] === \";\")\n return -1;\n if (e[t] === \"#\")\n return t++, Ve(e, t);\n let r = 0;\n for (; t < e.length; t++, r++)\n if (!(e[t].match(/\\w/) && r < 20)) {\n if (e[t] === \";\")\n break;\n return -1;\n }\n return t;\n}\nfunction p(e, t, r) {\n return {\n err: {\n code: e,\n msg: t,\n line: r.line || r,\n col: r.col\n }\n };\n}\nfunction Le(e) {\n return M.isName(e);\n}\nfunction Re(e) {\n return M.isName(e);\n}\nfunction w(e, t) {\n const r = e.substring(0, t).split(/\\r?\\n/);\n return {\n line: r.length,\n // column number is last line's length + 1, because column numbering starts at 1:\n col: r[r.length - 1].length + 1\n };\n}\nfunction v(e) {\n return e.startIndex + e[1].length;\n}\nvar k = {};\nconst te = {\n preserveOrder: !1,\n attributeNamePrefix: \"@_\",\n attributesGroupName: !1,\n textNodeName: \"#text\",\n ignoreAttributes: !0,\n removeNSPrefix: !1,\n // remove NS from tag name or attribute name if true\n allowBooleanAttributes: !1,\n //a tag can have attributes without any value\n //ignoreRootElement : false,\n parseTagValue: !0,\n parseAttributeValue: !1,\n trimValues: !0,\n //Trim string values of tag and attributes\n cdataPropName: !1,\n numberParseOptions: {\n hex: !0,\n leadingZeros: !0,\n eNotation: !0\n },\n tagValueProcessor: function(e, t) {\n return t;\n },\n attributeValueProcessor: function(e, t) {\n return t;\n },\n stopNodes: [],\n //nested tags will not be parsed even for errors\n alwaysCreateTextNode: !1,\n isArray: () => !1,\n commentPropName: !1,\n unpairedTags: [],\n processEntities: !0,\n htmlEntities: !1,\n ignoreDeclaration: !1,\n ignorePiTags: !1,\n transformTagName: !1,\n transformAttributeName: !1,\n updateTag: function(e, t, r) {\n return e;\n }\n // skipEmptyListItem: false\n}, Me = function(e) {\n return Object.assign({}, te, e);\n};\nk.buildOptions = Me;\nk.defaultOptions = te;\nclass ke {\n constructor(t) {\n this.tagname = t, this.child = [], this[\":@\"] = {};\n }\n add(t, r) {\n t === \"__proto__\" && (t = \"#__proto__\"), this.child.push({ [t]: r });\n }\n addChild(t) {\n t.tagname === \"__proto__\" && (t.tagname = \"#__proto__\"), t[\":@\"] && Object.keys(t[\":@\"]).length > 0 ? this.child.push({ [t.tagname]: t.child, \":@\": t[\":@\"] }) : this.child.push({ [t.tagname]: t.child });\n }\n}\nvar Be = ke;\nconst qe = C;\nfunction Xe(e, t) {\n const r = {};\n if (e[t + 3] === \"O\" && e[t + 4] === \"C\" && e[t + 5] === \"T\" && e[t + 6] === \"Y\" && e[t + 7] === \"P\" && e[t + 8] === \"E\") {\n t = t + 9;\n let s = 1, n = !1, i = !1, d = \"\";\n for (; t < e.length; t++)\n if (e[t] === \"<\" && !i) {\n if (n && ze(e, t))\n t += 7, [entityName, val, t] = Ue(e, t + 1), val.indexOf(\"&\") === -1 && (r[Ze(entityName)] = {\n regx: RegExp(`&${entityName};`, \"g\"),\n val\n });\n else if (n && He(e, t))\n t += 8;\n else if (n && Ke(e, t))\n t += 8;\n else if (n && We(e, t))\n t += 9;\n else if (Ge)\n i = !0;\n else\n throw new Error(\"Invalid DOCTYPE\");\n s++, d = \"\";\n } else if (e[t] === \">\") {\n if (i ? e[t - 1] === \"-\" && e[t - 2] === \"-\" && (i = !1, s--) : s--, s === 0)\n break;\n } else\n e[t] === \"[\" ? n = !0 : d += e[t];\n if (s !== 0)\n throw new Error(\"Unclosed DOCTYPE\");\n } else\n throw new Error(\"Invalid Tag instead of DOCTYPE\");\n return { entities: r, i: t };\n}\nfunction Ue(e, t) {\n let r = \"\";\n for (; t < e.length && e[t] !== \"'\" && e[t] !== '\"'; t++)\n r += e[t];\n if (r = r.trim(), r.indexOf(\" \") !== -1)\n throw new Error(\"External entites are not supported\");\n const s = e[t++];\n let n = \"\";\n for (; t < e.length && e[t] !== s; t++)\n n += e[t];\n return [r, n, t];\n}\nfunction Ge(e, t) {\n return e[t + 1] === \"!\" && e[t + 2] === \"-\" && e[t + 3] === \"-\";\n}\nfunction ze(e, t) {\n return e[t + 1] === \"!\" && e[t + 2] === \"E\" && e[t + 3] === \"N\" && e[t + 4] === \"T\" && e[t + 5] === \"I\" && e[t + 6] === \"T\" && e[t + 7] === \"Y\";\n}\nfunction He(e, t) {\n return e[t + 1] === \"!\" && e[t + 2] === \"E\" && e[t + 3] === \"L\" && e[t + 4] === \"E\" && e[t + 5] === \"M\" && e[t + 6] === \"E\" && e[t + 7] === \"N\" && e[t + 8] === \"T\";\n}\nfunction Ke(e, t) {\n return e[t + 1] === \"!\" && e[t + 2] === \"A\" && e[t + 3] === \"T\" && e[t + 4] === \"T\" && e[t + 5] === \"L\" && e[t + 6] === \"I\" && e[t + 7] === \"S\" && e[t + 8] === \"T\";\n}\nfunction We(e, t) {\n return e[t + 1] === \"!\" && e[t + 2] === \"N\" && e[t + 3] === \"O\" && e[t + 4] === \"T\" && e[t + 5] === \"A\" && e[t + 6] === \"T\" && e[t + 7] === \"I\" && e[t + 8] === \"O\" && e[t + 9] === \"N\";\n}\nfunction Ze(e) {\n if (qe.isName(e))\n return e;\n throw new Error(`Invalid entity name ${e}`);\n}\nvar je = Xe;\nconst Ye = /^[-+]?0x[a-fA-F0-9]+$/, Je = /^([\\-\\+])?(0*)(\\.[0-9]+([eE]\\-?[0-9]+)?|[0-9]+(\\.[0-9]+([eE]\\-?[0-9]+)?)?)$/;\n!Number.parseInt && window.parseInt && (Number.parseInt = window.parseInt);\n!Number.parseFloat && window.parseFloat && (Number.parseFloat = window.parseFloat);\nconst Qe = {\n hex: !0,\n leadingZeros: !0,\n decimalPoint: \".\",\n eNotation: !0\n //skipLike: /regex/\n};\nfunction De(e, t = {}) {\n if (t = Object.assign({}, Qe, t), !e || typeof e != \"string\")\n return e;\n let r = e.trim();\n if (t.skipLike !== void 0 && t.skipLike.test(r))\n return e;\n if (t.hex && Ye.test(r))\n return Number.parseInt(r, 16);\n {\n const s = Je.exec(r);\n if (s) {\n const n = s[1], i = s[2];\n let d = et(s[3]);\n const u = s[4] || s[6];\n if (!t.leadingZeros && i.length > 0 && n && r[2] !== \".\")\n return e;\n if (!t.leadingZeros && i.length > 0 && !n && r[1] !== \".\")\n return e;\n {\n const o = Number(r), a = \"\" + o;\n return a.search(/[eE]/) !== -1 || u ? t.eNotation ? o : e : r.indexOf(\".\") !== -1 ? a === \"0\" && d === \"\" || a === d || n && a === \"-\" + d ? o : e : i ? d === a || n + d === a ? o : e : r === a || r === n + a ? o : e;\n }\n } else\n return e;\n }\n}\nfunction et(e) {\n return e && e.indexOf(\".\") !== -1 && (e = e.replace(/0+$/, \"\"), e === \".\" ? e = \"0\" : e[0] === \".\" ? e = \"0\" + e : e[e.length - 1] === \".\" && (e = e.substr(0, e.length - 1))), e;\n}\nvar tt = De;\nconst re = C, T = Be, rt = je, nt = tt;\nlet it = class {\n constructor(t) {\n this.options = t, this.currentNode = null, this.tagsNodeStack = [], this.docTypeEntities = {}, this.lastEntities = {\n apos: { regex: /&(apos|#39|#x27);/g, val: \"'\" },\n gt: { regex: /&(gt|#62|#x3E);/g, val: \">\" },\n lt: { regex: /&(lt|#60|#x3C);/g, val: \"<\" },\n quot: { regex: /&(quot|#34|#x22);/g, val: '\"' }\n }, this.ampEntity = { regex: /&(amp|#38|#x26);/g, val: \"&\" }, this.htmlEntities = {\n space: { regex: /&(nbsp|#160);/g, val: \" \" },\n // \"lt\" : { regex: /&(lt|#60);/g, val: \"<\" },\n // \"gt\" : { regex: /&(gt|#62);/g, val: \">\" },\n // \"amp\" : { regex: /&(amp|#38);/g, val: \"&\" },\n // \"quot\" : { regex: /&(quot|#34);/g, val: \"\\\"\" },\n // \"apos\" : { regex: /&(apos|#39);/g, val: \"'\" },\n cent: { regex: /&(cent|#162);/g, val: \"¢\" },\n pound: { regex: /&(pound|#163);/g, val: \"£\" },\n yen: { regex: /&(yen|#165);/g, val: \"¥\" },\n euro: { regex: /&(euro|#8364);/g, val: \"€\" },\n copyright: { regex: /&(copy|#169);/g, val: \"©\" },\n reg: { regex: /&(reg|#174);/g, val: \"®\" },\n inr: { regex: /&(inr|#8377);/g, val: \"₹\" },\n num_dec: { regex: /&#([0-9]{1,7});/g, val: (r, s) => String.fromCharCode(Number.parseInt(s, 10)) },\n num_hex: { regex: /&#x([0-9a-fA-F]{1,6});/g, val: (r, s) => String.fromCharCode(Number.parseInt(s, 16)) }\n }, this.addExternalEntities = st, this.parseXml = lt, this.parseTextData = ot, this.resolveNameSpace = ut, this.buildAttributesMap = at, this.isItStopNode = pt, this.replaceEntitiesValue = ct, this.readStopNodeData = wt, this.saveTextToParentTag = ht, this.addChild = ft;\n }\n};\nfunction st(e) {\n const t = Object.keys(e);\n for (let r = 0; r < t.length; r++) {\n const s = t[r];\n this.lastEntities[s] = {\n regex: new RegExp(\"&\" + s + \";\", \"g\"),\n val: e[s]\n };\n }\n}\nfunction ot(e, t, r, s, n, i, d) {\n if (e !== void 0 && (this.options.trimValues && !s && (e = e.trim()), e.length > 0)) {\n d || (e = this.replaceEntitiesValue(e));\n const u = this.options.tagValueProcessor(t, e, r, n, i);\n return u == null ? e : typeof u != typeof e || u !== e ? u : this.options.trimValues ? $(e, this.options.parseTagValue, this.options.numberParseOptions) : e.trim() === e ? $(e, this.options.parseTagValue, this.options.numberParseOptions) : e;\n }\n}\nfunction ut(e) {\n if (this.options.removeNSPrefix) {\n const t = e.split(\":\"), r = e.charAt(0) === \"/\" ? \"/\" : \"\";\n if (t[0] === \"xmlns\")\n return \"\";\n t.length === 2 && (e = r + t[1]);\n }\n return e;\n}\nconst dt = new RegExp(`([^\\\\s=]+)\\\\s*(=\\\\s*(['\"])([\\\\s\\\\S]*?)\\\\3)?`, \"gm\");\nfunction at(e, t, r) {\n if (!this.options.ignoreAttributes && typeof e == \"string\") {\n const s = re.getAllMatches(e, dt), n = s.length, i = {};\n for (let d = 0; d < n; d++) {\n const u = this.resolveNameSpace(s[d][1]);\n let o = s[d][4], a = this.options.attributeNamePrefix + u;\n if (u.length)\n if (this.options.transformAttributeName && (a = this.options.transformAttributeName(a)), a === \"__proto__\" && (a = \"#__proto__\"), o !== void 0) {\n this.options.trimValues && (o = o.trim()), o = this.replaceEntitiesValue(o);\n const l = this.options.attributeValueProcessor(u, o, t);\n l == null ? i[a] = o : typeof l != typeof o || l !== o ? i[a] = l : i[a] = $(\n o,\n this.options.parseAttributeValue,\n this.options.numberParseOptions\n );\n } else\n this.options.allowBooleanAttributes && (i[a] = !0);\n }\n if (!Object.keys(i).length)\n return;\n if (this.options.attributesGroupName) {\n const d = {};\n return d[this.options.attributesGroupName] = i, d;\n }\n return i;\n }\n}\nconst lt = function(e) {\n e = e.replace(/\\r\\n?/g, `\n`);\n const t = new T(\"!xml\");\n let r = t, s = \"\", n = \"\";\n for (let i = 0; i < e.length; i++)\n if (e[i] === \"<\")\n if (e[i + 1] === \"/\") {\n const u = y(e, \">\", i, \"Closing Tag is not closed.\");\n let o = e.substring(i + 2, u).trim();\n if (this.options.removeNSPrefix) {\n const f = o.indexOf(\":\");\n f !== -1 && (o = o.substr(f + 1));\n }\n this.options.transformTagName && (o = this.options.transformTagName(o)), r && (s = this.saveTextToParentTag(s, r, n));\n const a = n.substring(n.lastIndexOf(\".\") + 1);\n if (o && this.options.unpairedTags.indexOf(o) !== -1)\n throw new Error(`Unpaired tag can not be used as closing tag: </${o}>`);\n let l = 0;\n a && this.options.unpairedTags.indexOf(a) !== -1 ? (l = n.lastIndexOf(\".\", n.lastIndexOf(\".\") - 1), this.tagsNodeStack.pop()) : l = n.lastIndexOf(\".\"), n = n.substring(0, l), r = this.tagsNodeStack.pop(), s = \"\", i = u;\n } else if (e[i + 1] === \"?\") {\n let u = x(e, i, !1, \"?>\");\n if (!u)\n throw new Error(\"Pi Tag is not closed.\");\n if (s = this.saveTextToParentTag(s, r, n), !(this.options.ignoreDeclaration && u.tagName === \"?xml\" || this.options.ignorePiTags)) {\n const o = new T(u.tagName);\n o.add(this.options.textNodeName, \"\"), u.tagName !== u.tagExp && u.attrExpPresent && (o[\":@\"] = this.buildAttributesMap(u.tagExp, n, u.tagName)), this.addChild(r, o, n);\n }\n i = u.closeIndex + 1;\n } else if (e.substr(i + 1, 3) === \"!--\") {\n const u = y(e, \"-->\", i + 4, \"Comment is not closed.\");\n if (this.options.commentPropName) {\n const o = e.substring(i + 4, u - 2);\n s = this.saveTextToParentTag(s, r, n), r.add(this.options.commentPropName, [{ [this.options.textNodeName]: o }]);\n }\n i = u;\n } else if (e.substr(i + 1, 2) === \"!D\") {\n const u = rt(e, i);\n this.docTypeEntities = u.entities, i = u.i;\n } else if (e.substr(i + 1, 2) === \"![\") {\n const u = y(e, \"]]>\", i, \"CDATA is not closed.\") - 2, o = e.substring(i + 9, u);\n s = this.saveTextToParentTag(s, r, n);\n let a = this.parseTextData(o, r.tagname, n, !0, !1, !0, !0);\n a == null && (a = \"\"), this.options.cdataPropName ? r.add(this.options.cdataPropName, [{ [this.options.textNodeName]: o }]) : r.add(this.options.textNodeName, a), i = u + 2;\n } else {\n let u = x(e, i, this.options.removeNSPrefix), o = u.tagName;\n const a = u.rawTagName;\n let l = u.tagExp, f = u.attrExpPresent, c = u.closeIndex;\n this.options.transformTagName && (o = this.options.transformTagName(o)), r && s && r.tagname !== \"!xml\" && (s = this.saveTextToParentTag(s, r, n, !1));\n const g = r;\n if (g && this.options.unpairedTags.indexOf(g.tagname) !== -1 && (r = this.tagsNodeStack.pop(), n = n.substring(0, n.lastIndexOf(\".\"))), o !== t.tagname && (n += n ? \".\" + o : o), this.isItStopNode(this.options.stopNodes, n, o)) {\n let h = \"\";\n if (l.length > 0 && l.lastIndexOf(\"/\") === l.length - 1)\n i = u.closeIndex;\n else if (this.options.unpairedTags.indexOf(o) !== -1)\n i = u.closeIndex;\n else {\n const E = this.readStopNodeData(e, a, c + 1);\n if (!E)\n throw new Error(`Unexpected end of ${a}`);\n i = E.i, h = E.tagContent;\n }\n const _ = new T(o);\n o !== l && f && (_[\":@\"] = this.buildAttributesMap(l, n, o)), h && (h = this.parseTextData(h, o, n, !0, f, !0, !0)), n = n.substr(0, n.lastIndexOf(\".\")), _.add(this.options.textNodeName, h), this.addChild(r, _, n);\n } else {\n if (l.length > 0 && l.lastIndexOf(\"/\") === l.length - 1) {\n o[o.length - 1] === \"/\" ? (o = o.substr(0, o.length - 1), n = n.substr(0, n.length - 1), l = o) : l = l.substr(0, l.length - 1), this.options.transformTagName && (o = this.options.transformTagName(o));\n const h = new T(o);\n o !== l && f && (h[\":@\"] = this.buildAttributesMap(l, n, o)), this.addChild(r, h, n), n = n.substr(0, n.lastIndexOf(\".\"));\n } else {\n const h = new T(o);\n this.tagsNodeStack.push(r), o !== l && f && (h[\":@\"] = this.buildAttributesMap(l, n, o)), this.addChild(r, h, n), r = h;\n }\n s = \"\", i = c;\n }\n }\n else\n s += e[i];\n return t.child;\n};\nfunction ft(e, t, r) {\n const s = this.options.updateTag(t.tagname, r, t[\":@\"]);\n s === !1 || (typeof s == \"string\" && (t.tagname = s), e.addChild(t));\n}\nconst ct = function(e) {\n if (this.options.processEntities) {\n for (let t in this.docTypeEntities) {\n const r = this.docTypeEntities[t];\n e = e.replace(r.regx, r.val);\n }\n for (let t in this.lastEntities) {\n const r = this.lastEntities[t];\n e = e.replace(r.regex, r.val);\n }\n if (this.options.htmlEntities)\n for (let t in this.htmlEntities) {\n const r = this.htmlEntities[t];\n e = e.replace(r.regex, r.val);\n }\n e = e.replace(this.ampEntity.regex, this.ampEntity.val);\n }\n return e;\n};\nfunction ht(e, t, r, s) {\n return e && (s === void 0 && (s = Object.keys(t.child).length === 0), e = this.parseTextData(\n e,\n t.tagname,\n r,\n !1,\n t[\":@\"] ? Object.keys(t[\":@\"]).length !== 0 : !1,\n s\n ), e !== void 0 && e !== \"\" && t.add(this.options.textNodeName, e), e = \"\"), e;\n}\nfunction pt(e, t, r) {\n const s = \"*.\" + r;\n for (const n in e) {\n const i = e[n];\n if (s === i || t === i)\n return !0;\n }\n return !1;\n}\nfunction gt(e, t, r = \">\") {\n let s, n = \"\";\n for (let i = t; i < e.length; i++) {\n let d = e[i];\n if (s)\n d === s && (s = \"\");\n else if (d === '\"' || d === \"'\")\n s = d;\n else if (d === r[0])\n if (r[1]) {\n if (e[i + 1] === r[1])\n return {\n data: n,\n index: i\n };\n } else\n return {\n data: n,\n index: i\n };\n else\n d === \"\t\" && (d = \" \");\n n += d;\n }\n}\nfunction y(e, t, r, s) {\n const n = e.indexOf(t, r);\n if (n === -1)\n throw new Error(s);\n return n + t.length - 1;\n}\nfunction x(e, t, r, s = \">\") {\n const n = gt(e, t + 1, s);\n if (!n)\n return;\n let i = n.data;\n const d = n.index, u = i.search(/\\s/);\n let o = i, a = !0;\n u !== -1 && (o = i.substring(0, u), i = i.substring(u + 1).trimStart());\n const l = o;\n if (r) {\n const f = o.indexOf(\":\");\n f !== -1 && (o = o.substr(f + 1), a = o !== n.data.substr(f + 1));\n }\n return {\n tagName: o,\n tagExp: i,\n closeIndex: d,\n attrExpPresent: a,\n rawTagName: l\n };\n}\nfunction wt(e, t, r) {\n const s = r;\n let n = 1;\n for (; r < e.length; r++)\n if (e[r] === \"<\")\n if (e[r + 1] === \"/\") {\n const i = y(e, \">\", r, `${t} is not closed`);\n if (e.substring(r + 2, i).trim() === t && (n--, n === 0))\n return {\n tagContent: e.substring(s, r),\n i\n };\n r = i;\n } else if (e[r + 1] === \"?\")\n r = y(e, \"?>\", r + 1, \"StopNode is not closed.\");\n else if (e.substr(r + 1, 3) === \"!--\")\n r = y(e, \"-->\", r + 3, \"StopNode is not closed.\");\n else if (e.substr(r + 1, 2) === \"![\")\n r = y(e, \"]]>\", r, \"StopNode is not closed.\") - 2;\n else {\n const i = x(e, r, \">\");\n i && ((i && i.tagName) === t && i.tagExp[i.tagExp.length - 1] !== \"/\" && n++, r = i.closeIndex);\n }\n}\nfunction $(e, t, r) {\n if (t && typeof e == \"string\") {\n const s = e.trim();\n return s === \"true\" ? !0 : s === \"false\" ? !1 : nt(e, r);\n } else\n return re.isExist(e) ? e : \"\";\n}\nvar mt = it, ne = {};\nfunction Nt(e, t) {\n return ie(e, t);\n}\nfunction ie(e, t, r) {\n let s;\n const n = {};\n for (let i = 0; i < e.length; i++) {\n const d = e[i], u = Et(d);\n let o = \"\";\n if (r === void 0 ? o = u : o = r + \".\" + u, u === t.textNodeName)\n s === void 0 ? s = d[u] : s += \"\" + d[u];\n else {\n if (u === void 0)\n continue;\n if (d[u]) {\n let a = ie(d[u], t, o);\n const l = yt(a, t);\n d[\":@\"] ? bt(a, d[\":@\"], o, t) : Object.keys(a).length === 1 && a[t.textNodeName] !== void 0 && !t.alwaysCreateTextNode ? a = a[t.textNodeName] : Object.keys(a).length === 0 && (t.alwaysCreateTextNode ? a[t.textNodeName] = \"\" : a = \"\"), n[u] !== void 0 && n.hasOwnProperty(u) ? (Array.isArray(n[u]) || (n[u] = [n[u]]), n[u].push(a)) : t.isArray(u, o, l) ? n[u] = [a] : n[u] = a;\n }\n }\n }\n return typeof s == \"string\" ? s.length > 0 && (n[t.textNodeName] = s) : s !== void 0 && (n[t.textNodeName] = s), n;\n}\nfunction Et(e) {\n const t = Object.keys(e);\n for (let r = 0; r < t.length; r++) {\n const s = t[r];\n if (s !== \":@\")\n return s;\n }\n}\nfunction bt(e, t, r, s) {\n if (t) {\n const n = Object.keys(t), i = n.length;\n for (let d = 0; d < i; d++) {\n const u = n[d];\n s.isArray(u, r + \".\" + u, !0, !0) ? e[u] = [t[u]] : e[u] = t[u];\n }\n }\n}\nfunction yt(e, t) {\n const { textNodeName: r } = t, s = Object.keys(e).length;\n return !!(s === 0 || s === 1 && (e[r] || typeof e[r] == \"boolean\" || e[r] === 0));\n}\nne.prettify = Nt;\nconst { buildOptions: _t } = k, vt = mt, { prettify: Tt } = ne, It = R;\nlet At = class {\n constructor(t) {\n this.externalEntities = {}, this.options = _t(t);\n }\n /**\n * Parse XML dats to JS object \n * @param {string|Buffer} xmlData \n * @param {boolean|Object} validationOption \n */\n parse(t, r) {\n if (typeof t != \"string\")\n if (t.toString)\n t = t.toString();\n else\n throw new Error(\"XML data is accepted in String or Bytes[] form.\");\n if (r) {\n r === !0 && (r = {});\n const i = It.validate(t, r);\n if (i !== !0)\n throw Error(`${i.err.msg}:${i.err.line}:${i.err.col}`);\n }\n const s = new vt(this.options);\n s.addExternalEntities(this.externalEntities);\n const n = s.parseXml(t);\n return this.options.preserveOrder || n === void 0 ? n : Tt(n, this.options);\n }\n /**\n * Add Entity which is not by default supported by this library\n * @param {string} key \n * @param {string} value \n */\n addEntity(t, r) {\n if (r.indexOf(\"&\") !== -1)\n throw new Error(\"Entity value can't have '&'\");\n if (t.indexOf(\"&\") !== -1 || t.indexOf(\";\") !== -1)\n throw new Error(\"An entity must be set without '&' and ';'. Eg. use '#xD' for '
'\");\n if (r === \"&\")\n throw new Error(\"An entity with value '&' is not permitted\");\n this.externalEntities[t] = r;\n }\n};\nvar Ct = At;\nconst Ot = `\n`;\nfunction Pt(e, t) {\n let r = \"\";\n return t.format && t.indentBy.length > 0 && (r = Ot), se(e, t, \"\", r);\n}\nfunction se(e, t, r, s) {\n let n = \"\", i = !1;\n for (let d = 0; d < e.length; d++) {\n const u = e[d], o = xt(u);\n if (o === void 0)\n continue;\n let a = \"\";\n if (r.length === 0 ? a = o : a = `${r}.${o}`, o === t.textNodeName) {\n let h = u[o];\n $t(a, t) || (h = t.tagValueProcessor(o, h), h = oe(h, t)), i && (n += s), n += h, i = !1;\n continue;\n } else if (o === t.cdataPropName) {\n i && (n += s), n += `<![CDATA[${u[o][0][t.textNodeName]}]]>`, i = !1;\n continue;\n } else if (o === t.commentPropName) {\n n += s + `<!--${u[o][0][t.textNodeName]}-->`, i = !0;\n continue;\n } else if (o[0] === \"?\") {\n const h = H(u[\":@\"], t), _ = o === \"?xml\" ? \"\" : s;\n let E = u[o][0][t.textNodeName];\n E = E.length !== 0 ? \" \" + E : \"\", n += _ + `<${o}${E}${h}?>`, i = !0;\n continue;\n }\n let l = s;\n l !== \"\" && (l += t.indentBy);\n const f = H(u[\":@\"], t), c = s + `<${o}${f}`, g = se(u[o], t, a, l);\n t.unpairedTags.indexOf(o) !== -1 ? t.suppressUnpairedNode ? n += c + \">\" : n += c + \"/>\" : (!g || g.length === 0) && t.suppressEmptyNode ? n += c + \"/>\" : g && g.endsWith(\">\") ? n += c + `>${g}${s}</${o}>` : (n += c + \">\", g && s !== \"\" && (g.includes(\"/>\") || g.includes(\"</\")) ? n += s + t.indentBy + g + s : n += g, n += `</${o}>`), i = !0;\n }\n return n;\n}\nfunction xt(e) {\n const t = Object.keys(e);\n for (let r = 0; r < t.length; r++) {\n const s = t[r];\n if (e.hasOwnProperty(s) && s !== \":@\")\n return s;\n }\n}\nfunction H(e, t) {\n let r = \"\";\n if (e && !t.ignoreAttributes)\n for (let s in e) {\n if (!e.hasOwnProperty(s))\n continue;\n let n = t.attributeValueProcessor(s, e[s]);\n n = oe(n, t), n === !0 && t.suppressBooleanAttributes ? r += ` ${s.substr(t.attributeNamePrefix.length)}` : r += ` ${s.substr(t.attributeNamePrefix.length)}=\"${n}\"`;\n }\n return r;\n}\nfunction $t(e, t) {\n e = e.substr(0, e.length - t.textNodeName.length - 1);\n let r = e.substr(e.lastIndexOf(\".\") + 1);\n for (let s in t.stopNodes)\n if (t.stopNodes[s] === e || t.stopNodes[s] === \"*.\" + r)\n return !0;\n return !1;\n}\nfunction oe(e, t) {\n if (e && e.length > 0 && t.processEntities)\n for (let r = 0; r < t.entities.length; r++) {\n const s = t.entities[r];\n e = e.replace(s.regex, s.val);\n }\n return e;\n}\nvar Ft = Pt;\nconst Vt = Ft, St = {\n attributeNamePrefix: \"@_\",\n attributesGroupName: !1,\n textNodeName: \"#text\",\n ignoreAttributes: !0,\n cdataPropName: !1,\n format: !1,\n indentBy: \" \",\n suppressEmptyNode: !1,\n suppressUnpairedNode: !0,\n suppressBooleanAttributes: !0,\n tagValueProcessor: function(e, t) {\n return t;\n },\n attributeValueProcessor: function(e, t) {\n return t;\n },\n preserveOrder: !1,\n commentPropName: !1,\n unpairedTags: [],\n entities: [\n { regex: new RegExp(\"&\", \"g\"), val: \"&\" },\n //it must be on top\n { regex: new RegExp(\">\", \"g\"), val: \">\" },\n { regex: new RegExp(\"<\", \"g\"), val: \"<\" },\n { regex: new RegExp(\"'\", \"g\"), val: \"'\" },\n { regex: new RegExp('\"', \"g\"), val: \""\" }\n ],\n processEntities: !0,\n stopNodes: [],\n // transformTagName: false,\n // transformAttributeName: false,\n oneListGroup: !1\n};\nfunction b(e) {\n this.options = Object.assign({}, St, e), this.options.ignoreAttributes || this.options.attributesGroupName ? this.isAttribute = function() {\n return !1;\n } : (this.attrPrefixLen = this.options.attributeNamePrefix.length, this.isAttribute = Mt), this.processTextOrObjNode = Lt, this.options.format ? (this.indentate = Rt, this.tagEndChar = `>\n`, this.newLine = `\n`) : (this.indentate = function() {\n return \"\";\n }, this.tagEndChar = \">\", this.newLine = \"\");\n}\nb.prototype.build = function(e) {\n return this.options.preserveOrder ? Vt(e, this.options) : (Array.isArray(e) && this.options.arrayNodeName && this.options.arrayNodeName.length > 1 && (e = {\n [this.options.arrayNodeName]: e\n }), this.j2x(e, 0).val);\n};\nb.prototype.j2x = function(e, t) {\n let r = \"\", s = \"\";\n for (let n in e)\n if (Object.prototype.hasOwnProperty.call(e, n))\n if (typeof e[n] > \"u\")\n this.isAttribute(n) && (s += \"\");\n else if (e[n] === null)\n this.isAttribute(n) ? s += \"\" : n[0] === \"?\" ? s += this.indentate(t) + \"<\" + n + \"?\" + this.tagEndChar : s += this.indentate(t) + \"<\" + n + \"/\" + this.tagEndChar;\n else if (e[n] instanceof Date)\n s += this.buildTextValNode(e[n], n, \"\", t);\n else if (typeof e[n] != \"object\") {\n const i = this.isAttribute(n);\n if (i)\n r += this.buildAttrPairStr(i, \"\" + e[n]);\n else if (n === this.options.textNodeName) {\n let d = this.options.tagValueProcessor(n, \"\" + e[n]);\n s += this.replaceEntitiesValue(d);\n } else\n s += this.buildTextValNode(e[n], n, \"\", t);\n } else if (Array.isArray(e[n])) {\n const i = e[n].length;\n let d = \"\";\n for (let u = 0; u < i; u++) {\n const o = e[n][u];\n typeof o > \"u\" || (o === null ? n[0] === \"?\" ? s += this.indentate(t) + \"<\" + n + \"?\" + this.tagEndChar : s += this.indentate(t) + \"<\" + n + \"/\" + this.tagEndChar : typeof o == \"object\" ? this.options.oneListGroup ? d += this.j2x(o, t + 1).val : d += this.processTextOrObjNode(o, n, t) : d += this.buildTextValNode(o, n, \"\", t));\n }\n this.options.oneListGroup && (d = this.buildObjectNode(d, n, \"\", t)), s += d;\n } else if (this.options.attributesGroupName && n === this.options.attributesGroupName) {\n const i = Object.keys(e[n]), d = i.length;\n for (let u = 0; u < d; u++)\n r += this.buildAttrPairStr(i[u], \"\" + e[n][i[u]]);\n } else\n s += this.processTextOrObjNode(e[n], n, t);\n return { attrStr: r, val: s };\n};\nb.prototype.buildAttrPairStr = function(e, t) {\n return t = this.options.attributeValueProcessor(e, \"\" + t), t = this.replaceEntitiesValue(t), this.options.suppressBooleanAttributes && t === \"true\" ? \" \" + e : \" \" + e + '=\"' + t + '\"';\n};\nfunction Lt(e, t, r) {\n const s = this.j2x(e, r + 1);\n return e[this.options.textNodeName] !== void 0 && Object.keys(e).length === 1 ? this.buildTextValNode(e[this.options.textNodeName], t, s.attrStr, r) : this.buildObjectNode(s.val, t, s.attrStr, r);\n}\nb.prototype.buildObjectNode = function(e, t, r, s) {\n if (e === \"\")\n return t[0] === \"?\" ? this.indentate(s) + \"<\" + t + r + \"?\" + this.tagEndChar : this.indentate(s) + \"<\" + t + r + this.closeTag(t) + this.tagEndChar;\n {\n let n = \"</\" + t + this.tagEndChar, i = \"\";\n return t[0] === \"?\" && (i = \"?\", n = \"\"), (r || r === \"\") && e.indexOf(\"<\") === -1 ? this.indentate(s) + \"<\" + t + r + i + \">\" + e + n : this.options.commentPropName !== !1 && t === this.options.commentPropName && i.length === 0 ? this.indentate(s) + `<!--${e}-->` + this.newLine : this.indentate(s) + \"<\" + t + r + i + this.tagEndChar + e + this.indentate(s) + n;\n }\n};\nb.prototype.closeTag = function(e) {\n let t = \"\";\n return this.options.unpairedTags.indexOf(e) !== -1 ? this.options.suppressUnpairedNode || (t = \"/\") : this.options.suppressEmptyNode ? t = \"/\" : t = `></${e}`, t;\n};\nb.prototype.buildTextValNode = function(e, t, r, s) {\n if (this.options.cdataPropName !== !1 && t === this.options.cdataPropName)\n return this.indentate(s) + `<![CDATA[${e}]]>` + this.newLine;\n if (this.options.commentPropName !== !1 && t === this.options.commentPropName)\n return this.indentate(s) + `<!--${e}-->` + this.newLine;\n if (t[0] === \"?\")\n return this.indentate(s) + \"<\" + t + r + \"?\" + this.tagEndChar;\n {\n let n = this.options.tagValueProcessor(t, e);\n return n = this.replaceEntitiesValue(n), n === \"\" ? this.indentate(s) + \"<\" + t + r + this.closeTag(t) + this.tagEndChar : this.indentate(s) + \"<\" + t + r + \">\" + n + \"</\" + t + this.tagEndChar;\n }\n};\nb.prototype.replaceEntitiesValue = function(e) {\n if (e && e.length > 0 && this.options.processEntities)\n for (let t = 0; t < this.options.entities.length; t++) {\n const r = this.options.entities[t];\n e = e.replace(r.regex, r.val);\n }\n return e;\n};\nfunction Rt(e) {\n return this.options.indentBy.repeat(e);\n}\nfunction Mt(e) {\n return e.startsWith(this.options.attributeNamePrefix) && e !== this.options.textNodeName ? e.substr(this.attrPrefixLen) : !1;\n}\nvar kt = b;\nconst Bt = R, qt = Ct, Xt = kt;\nvar K = {\n XMLParser: qt,\n XMLValidator: Bt,\n XMLBuilder: Xt\n};\nfunction Ut(e) {\n if (typeof e != \"string\")\n throw new TypeError(`Expected a \\`string\\`, got \\`${typeof e}\\``);\n if (e = e.trim(), e.length === 0 || K.XMLValidator.validate(e) !== !0)\n return !1;\n let t;\n const r = new K.XMLParser();\n try {\n t = r.parse(e);\n } catch {\n return !1;\n }\n return !(!t || !(\"svg\" in t));\n}\n/**\n * @copyright Copyright (c) 2022 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\nclass pr {\n _view;\n constructor(t) {\n Gt(t), this._view = t;\n }\n get id() {\n return this._view.id;\n }\n get name() {\n return this._view.name;\n }\n get caption() {\n return this._view.caption;\n }\n get emptyTitle() {\n return this._view.emptyTitle;\n }\n get emptyCaption() {\n return this._view.emptyCaption;\n }\n get getContents() {\n return this._view.getContents;\n }\n get icon() {\n return this._view.icon;\n }\n set icon(t) {\n this._view.icon = t;\n }\n get order() {\n return this._view.order;\n }\n set order(t) {\n this._view.order = t;\n }\n get params() {\n return this._view.params;\n }\n set params(t) {\n this._view.params = t;\n }\n get columns() {\n return this._view.columns;\n }\n get emptyView() {\n return this._view.emptyView;\n }\n get parent() {\n return this._view.parent;\n }\n get sticky() {\n return this._view.sticky;\n }\n get expanded() {\n return this._view.expanded;\n }\n set expanded(t) {\n this._view.expanded = t;\n }\n get defaultSortKey() {\n return this._view.defaultSortKey;\n }\n}\nconst Gt = function(e) {\n if (!e.id || typeof e.id != \"string\")\n throw new Error(\"View id is required and must be a string\");\n if (!e.name || typeof e.name != \"string\")\n throw new Error(\"View name is required and must be a string\");\n if (e.columns && e.columns.length > 0 && (!e.caption || typeof e.caption != \"string\"))\n throw new Error(\"View caption is required for top-level views and must be a string\");\n if (!e.getContents || typeof e.getContents != \"function\")\n throw new Error(\"View getContents is required and must be a function\");\n if (!e.icon || typeof e.icon != \"string\" || !Ut(e.icon))\n throw new Error(\"View icon is required and must be a valid svg string\");\n if (!(\"order\" in e) || typeof e.order != \"number\")\n throw new Error(\"View order is required and must be a number\");\n if (e.columns && e.columns.forEach((t) => {\n if (!(t instanceof Ae))\n throw new Error(\"View columns must be an array of Column. Invalid column found\");\n }), e.emptyView && typeof e.emptyView != \"function\")\n throw new Error(\"View emptyView must be a function\");\n if (e.parent && typeof e.parent != \"string\")\n throw new Error(\"View parent must be a string\");\n if (\"sticky\" in e && typeof e.sticky != \"boolean\")\n throw new Error(\"View sticky must be a boolean\");\n if (\"expanded\" in e && typeof e.expanded != \"boolean\")\n throw new Error(\"View expanded must be a boolean\");\n if (e.defaultSortKey && typeof e.defaultSortKey != \"string\")\n throw new Error(\"View defaultSortKey must be a string\");\n return !0;\n};\n/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\nconst gr = function(e) {\n return F().registerEntry(e);\n}, wr = function(e) {\n return F().unregisterEntry(e);\n}, mr = function(e) {\n return F().getEntries(e).sort((r, s) => r.order !== void 0 && s.order !== void 0 && r.order !== s.order ? r.order - s.order : r.displayName.localeCompare(s.displayName, void 0, { numeric: !0, sensitivity: \"base\" }));\n};\nexport {\n Ae as Column,\n W as DefaultType,\n _e as File,\n er as FileAction,\n L as FileType,\n ve as Folder,\n nr as Header,\n Ie as Navigation,\n Q as Node,\n J as NodeStatus,\n N as Permission,\n pr as View,\n gr as addNewFileMenuEntry,\n ar as davGetClient,\n ur as davGetDefaultPropfind,\n be as davGetFavoritesReport,\n dr as davGetRecentSearch,\n ye as davParsePermissions,\n ee as davRemoteURL,\n Te as davResultToNode,\n D as davRootPath,\n j as defaultDavNamespaces,\n Z as defaultDavProperties,\n Qt as formatFileSize,\n S as getDavNameSpaces,\n V as getDavProperties,\n lr as getFavoriteNodes,\n rr as getFileActions,\n sr as getFileListHeaders,\n fr as getNavigation,\n mr as getNewFileMenuEntries,\n Dt as parseFileSize,\n or as registerDavProperty,\n tr as registerFileAction,\n ir as registerFileListHeaders,\n wr as removeNewFileMenuEntry\n};\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\tid: moduleId,\n\t\tloaded: false,\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Flag the module as loaded\n\tmodule.loaded = true;\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n// expose the modules object (__webpack_modules__)\n__webpack_require__.m = __webpack_modules__;\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.f = {};\n// This file contains only the entry chunk.\n// The chunk loading function for additional chunks\n__webpack_require__.e = (chunkId) => {\n\treturn Promise.all(Object.keys(__webpack_require__.f).reduce((promises, key) => {\n\t\t__webpack_require__.f[key](chunkId, promises);\n\t\treturn promises;\n\t}, []));\n};","// This function allow to reference async chunks\n__webpack_require__.u = (chunkId) => {\n\t// return url for filenames based on template\n\treturn \"\" + ({\"3239\":\"settings-users\",\"4529\":\"settings-apps-view\"}[chunkId] || chunkId) + \"-\" + chunkId + \".js?v=\" + {\"1110\":\"a5d6e6f59aa058840a1e\",\"1439\":\"8111a630d23ed528e83e\",\"1544\":\"339855cf6016c557e17a\",\"3239\":\"a0d2948d88455156ef59\",\"3865\":\"1b3dd2786e4df4dcbf8d\",\"4529\":\"2724acfa2ab8a8267428\",\"5455\":\"8915a218db5b7bc90f34\",\"8630\":\"eb1ab06c4928352754c5\"}[chunkId] + \"\";\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","__webpack_require__.nmd = (module) => {\n\tmodule.paths = [];\n\tif (!module.children) module.children = [];\n\treturn module;\n};","__webpack_require__.j = 2689;","var scriptUrl;\nif (__webpack_require__.g.importScripts) scriptUrl = __webpack_require__.g.location + \"\";\nvar document = __webpack_require__.g.document;\nif (!scriptUrl && document) {\n\tif (document.currentScript)\n\t\tscriptUrl = document.currentScript.src;\n\tif (!scriptUrl) {\n\t\tvar scripts = document.getElementsByTagName(\"script\");\n\t\tif(scripts.length) {\n\t\t\tvar i = scripts.length - 1;\n\t\t\twhile (i > -1 && (!scriptUrl || !/^http(s?):/.test(scriptUrl))) scriptUrl = scripts[i--].src;\n\t\t}\n\t}\n}\n// When supporting browsers where an automatic publicPath is not supported you must specify an output.publicPath manually via configuration\n// or pass an empty string (\"\") and set the __webpack_public_path__ variable from your code to use your own logic.\nif (!scriptUrl) throw new Error(\"Automatic publicPath is not supported in this browser\");\nscriptUrl = scriptUrl.replace(/#.*$/, \"\").replace(/\\?.*$/, \"\").replace(/\\/[^\\/]+$/, \"/\");\n__webpack_require__.p = scriptUrl;","__webpack_require__.b = document.baseURI || self.location.href;\n\n// object to store loaded and loading chunks\n// undefined = chunk not loaded, null = chunk preloaded/prefetched\n// [resolve, reject, Promise] = chunk loading, 0 = chunk loaded\nvar installedChunks = {\n\t2689: 0\n};\n\n__webpack_require__.f.j = (chunkId, promises) => {\n\t\t// JSONP chunk loading for javascript\n\t\tvar installedChunkData = __webpack_require__.o(installedChunks, chunkId) ? installedChunks[chunkId] : undefined;\n\t\tif(installedChunkData !== 0) { // 0 means \"already installed\".\n\n\t\t\t// a Promise means \"currently loading\".\n\t\t\tif(installedChunkData) {\n\t\t\t\tpromises.push(installedChunkData[2]);\n\t\t\t} else {\n\t\t\t\tif(true) { // all chunks have JS\n\t\t\t\t\t// setup Promise in chunk cache\n\t\t\t\t\tvar promise = new Promise((resolve, reject) => (installedChunkData = installedChunks[chunkId] = [resolve, reject]));\n\t\t\t\t\tpromises.push(installedChunkData[2] = promise);\n\n\t\t\t\t\t// start chunk loading\n\t\t\t\t\tvar url = __webpack_require__.p + __webpack_require__.u(chunkId);\n\t\t\t\t\t// create error before stack unwound to get useful stacktrace later\n\t\t\t\t\tvar error = new Error();\n\t\t\t\t\tvar loadingEnded = (event) => {\n\t\t\t\t\t\tif(__webpack_require__.o(installedChunks, chunkId)) {\n\t\t\t\t\t\t\tinstalledChunkData = installedChunks[chunkId];\n\t\t\t\t\t\t\tif(installedChunkData !== 0) installedChunks[chunkId] = undefined;\n\t\t\t\t\t\t\tif(installedChunkData) {\n\t\t\t\t\t\t\t\tvar errorType = event && (event.type === 'load' ? 'missing' : event.type);\n\t\t\t\t\t\t\t\tvar realSrc = event && event.target && event.target.src;\n\t\t\t\t\t\t\t\terror.message = 'Loading chunk ' + chunkId + ' failed.\\n(' + errorType + ': ' + realSrc + ')';\n\t\t\t\t\t\t\t\terror.name = 'ChunkLoadError';\n\t\t\t\t\t\t\t\terror.type = errorType;\n\t\t\t\t\t\t\t\terror.request = realSrc;\n\t\t\t\t\t\t\t\tinstalledChunkData[1](error);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t\t__webpack_require__.l(url, loadingEnded, \"chunk-\" + chunkId, chunkId);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n};\n\n// no prefetching\n\n// no preloaded\n\n// no HMR\n\n// no HMR manifest\n\n__webpack_require__.O.j = (chunkId) => (installedChunks[chunkId] === 0);\n\n// install a JSONP callback for chunk loading\nvar webpackJsonpCallback = (parentChunkLoadingFunction, data) => {\n\tvar chunkIds = data[0];\n\tvar moreModules = data[1];\n\tvar runtime = data[2];\n\t// add \"moreModules\" to the modules object,\n\t// then flag all \"chunkIds\" as loaded and fire callback\n\tvar moduleId, chunkId, i = 0;\n\tif(chunkIds.some((id) => (installedChunks[id] !== 0))) {\n\t\tfor(moduleId in moreModules) {\n\t\t\tif(__webpack_require__.o(moreModules, moduleId)) {\n\t\t\t\t__webpack_require__.m[moduleId] = moreModules[moduleId];\n\t\t\t}\n\t\t}\n\t\tif(runtime) var result = runtime(__webpack_require__);\n\t}\n\tif(parentChunkLoadingFunction) parentChunkLoadingFunction(data);\n\tfor(;i < chunkIds.length; i++) {\n\t\tchunkId = chunkIds[i];\n\t\tif(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) {\n\t\t\tinstalledChunks[chunkId][0]();\n\t\t}\n\t\tinstalledChunks[chunkId] = 0;\n\t}\n\treturn __webpack_require__.O(result);\n}\n\nvar chunkLoadingGlobal = self[\"webpackChunknextcloud\"] = self[\"webpackChunknextcloud\"] || [];\nchunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0));\nchunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal));","__webpack_require__.nc = undefined;","// startup\n// Load entry module and return exports\n// This entry module depends on other loaded chunks and execution need to be delayed\nvar __webpack_exports__ = __webpack_require__.O(undefined, [4208], () => (__webpack_require__(74329)))\n__webpack_exports__ = __webpack_require__.O(__webpack_exports__);\n"],"names":["deferred","inProgress","dataWebpackPrefix","sanitize","url","replace","requireAdmin","confirmPassword","get","options","axios","post","data","put","delete","params","localStorage","getBuilder","persist","build","defaults","id","name","usercount","disabled","canAdd","canRemove","state","users","groups","orderBy","GroupSorting","UserCount","minPasswordLength","usersOffset","usersLimit","disabledUsersOffset","disabledUsersLimit","userCount","showConfig","showStoragePath","getItem","showUserBackend","showLastLogin","showNewUserForm","showLanguages","mutations","appendUsers","usersObj","existingUsers","map","_ref","newUsers","Object","values","filter","_ref2","includes","concat","updateDisabledUsers","_usersObj","setPasswordPolicyMinLength","length","initGroups","_ref3","group","assign","addGroup","_ref4","gid","displayName","find","unshift","e","console","error","renameGroup","_ref5","groupIndex","findIndex","groupSearch","updatedGroup","splice","removeGroup","addUserGroup","_ref6","userid","user","enabled","push","removeUserGroup","_ref7","indexOf","addUserSubAdmin","_ref8","subadmin","removeUserSubAdmin","_ref9","deleteUser","userIndex","this","commit","actionType","addUserData","response","ocs","enableDisableUser","_ref10","updateUserCounts","_ref11","disabledGroup","forEach","userGroup","warn","logger","setUserData","_ref12","key","value","humanValue","parseFileSize","resetUsers","setShowConfig","_ref13","setItem","JSON","stringify","setGroupSorting","sorting","oldValue","generateUrl","String","catch","showError","t","getters","getUsers","getGroups","getSubadminGroups","getSortedGroups","sort","a","b","numA","numB","localeCompare","getGroupSorting","getPasswordPolicyMinLength","getUsersOffset","getUsersLimit","getDisabledUsersOffset","getDisabledUsersLimit","getUserCount","getShowConfig","CancelToken","searchRequestCancelSource","actions","searchUsers","context","_ref14","offset","limit","search","api","generateOcsUrl","isCancel","getUser","userId","_ref15","cancel","source","trim","encodeURIComponent","cancelToken","token","then","usersCount","keys","getDisabledUsers","_ref16","_ref17","limitParam","getUsersFromList","_ref18","getUsersFromGroup","_ref19","groupid","groupId","getCapabilities","password_policy","minLength","_ref20","_ref21","_ref22","_ref23","_ref24","wipeUserDevices","addUser","_ref25","_ref26","dispatch","password","email","quota","language","manager","_ref27","userStatus","_ref28","allowedEmpty","Promise","reject","Error","sendWelcomeMail","APPS_API_FAILURE","message","isHTML","initCategories","categories","updateCount","updateCategories","categoriesPromise","gettingCategoriesPromise","setUpdateCount","addCategory","category","appendCategories","categoriesArray","setAllApps","apps","setError","appId","Array","isArray","_id","app","clearError","enableApp","active","setInstallState","canInstall","disableApp","removable","canUnInstall","uninstallApp","needsDownload","installed","updateApp","version","update","resetApps","reset","startLoading","Vue","loading","stopLoading","appIds","_appId","update_required","showInfo","onClick","window","location","reload","close","setTimeout","forceEnableApp","finally","getAllApps","getCategories","shouldRefetchCategories","arguments","undefined","categoriesPromiseResponse","bundles","loadState","getAppBundles","getUpdateCount","getCategoryById","selectedCategoryId","setServerData","serverData","getServerData","setAppConfig","use","Vuex","API_FAILURE","meta","store","useStore","Store","modules","settings","oc","strict","process","getLoggerBuilder","setApp","detectUser","_defineComponent","__name","setup","__props","__sfc","NcContent","_vm","_c","_self","_setupProxy","attrs","_v","path","components","default","UserManagement","navigation","UserManagementNavigation","props","children","redirect","AppStore","AppStoreNavigation","sidebar","AppStoreSidebar","Router","mode","base","linkActiveClass","routes","VTooltip","defaultHtml","sync","router","__webpack_nonce__","btoa","_getRequestToken","getRequestToken","prototype","n","PiniaVuePlugin","pinia","createPinia","render","h","SettingsApp","el","extend","encodeReserveRE","encodeReserveReplacer","c","charCodeAt","toString","commaRE","encode","str","decode","decodeURIComponent","err","castQueryParamValue","parseQuery","query","res","split","param","parts","shift","val","join","stringifyQuery","obj","result","val2","x","trailingSlashRE","createRoute","record","redirectedFrom","clone","route","hash","fullPath","getFullPath","matched","formatMatch","freeze","START","parent","ref","_stringifyQuery","isSameRoute","onlyPath","isObjectEqual","aKeys","bKeys","every","i","aVal","bVal","handleRouteEntered","instances","instance","cbs","enteredCbs","i$1","_isBeingDestroyed","View","functional","type","_","routerView","$createElement","$route","cache","_routerViewCache","depth","inactive","_routerRoot","vnodeData","$vnode","keepAlive","_directInactive","_inactive","$parent","routerViewDepth","cachedData","cachedComponent","component","configProps","fillPropsinData","registerRouteInstance","vm","current","hook","prepatch","vnode","componentInstance","init","propsToPass","config","resolveProps","resolvePath","relative","append","firstChar","charAt","stack","pop","segments","segment","cleanPath","isarray","arr","call","pathToRegexp_1","pathToRegexp","RegExp","match","prefix","delimiter","optional","repeat","partial","asterisk","pattern","attachKeys","regexpToRegexp","flags","arrayToRegexp","tokensToRegExp","parse","stringToRegexp","parse_1","tokensToFunction_1","tokensToFunction","tokensToRegExp_1","PATH_REGEXP","tokens","index","defaultDelimiter","exec","m","escaped","slice","next","capture","modifier","escapeGroup","escapeString","substr","encodeURIComponentPretty","encodeURI","toUpperCase","matches","opts","pretty","TypeError","j","test","re","sensitive","end","endsWithDelimiter","compile","regexpCompileCache","create","fillParams","routeMsg","filler","pathMatch","normalizeLocation","raw","_normalized","params$1","rawPath","parsedPath","hashIndex","queryIndex","parsePath","basePath","extraQuery","_parseQuery","parsedQuery","resolveQuery","_Vue","noop","Link","to","required","tag","custom","Boolean","exact","exactPath","activeClass","exactActiveClass","ariaCurrentValue","event","this$1$1","$router","resolve","href","classes","globalActiveClass","globalExactActiveClass","linkExactActiveClass","activeClassFallback","exactActiveClassFallback","compareTarget","target","queryIncludes","isIncludedRoute","handler","guardEvent","on","click","class","scopedSlot","$scopedSlots","$hasNormal","navigate","isActive","isExactActive","findAnchor","$slots","isStatic","aData","handler$1","event$1","aAttrs","metaKey","altKey","ctrlKey","shiftKey","defaultPrevented","button","currentTarget","getAttribute","preventDefault","child","inBrowser","createRouteMap","oldPathList","oldPathMap","oldNameMap","parentRoute","pathList","pathMap","nameMap","addRouteRecord","l","matchAs","pathToRegexpOptions","normalizedPath","normalizePath","caseSensitive","regex","compileRouteRegex","alias","beforeEnter","childMatchAs","aliases","aliasRoute","createMatcher","currentRoute","_createRoute","paramNames","record$1","matchRoute","originalRedirect","hasOwnProperty","resolveRecordPath","aliasedMatch","aliasedRecord","addRoute","parentOrRoute","getRoutes","addRoutes","len","Time","performance","now","Date","genStateKey","toFixed","_key","getStateKey","setStateKey","positionStore","setupScroll","history","scrollRestoration","protocolAndPath","protocol","host","absolutePath","stateCopy","replaceState","addEventListener","handlePopState","removeEventListener","handleScroll","from","isPop","behavior","scrollBehavior","$nextTick","position","getScrollPosition","shouldScroll","scrollToPosition","saveScrollPosition","pageXOffset","y","pageYOffset","isValidPosition","isNumber","normalizePosition","v","hashStartsWithNumberRE","isObject","selector","document","getElementById","querySelector","docRect","documentElement","getBoundingClientRect","elRect","left","top","getElementPosition","style","scrollTo","ua","supportsPushState","navigator","userAgent","pushState","NavigationFailureType","redirected","aborted","cancelled","duplicated","createNavigationCancelledError","createRouterError","_isRouter","propertiesToLog","isError","isNavigationFailure","errorType","runQueue","queue","fn","cb","step","flatMapComponents","flatten","apply","hasSymbol","Symbol","toStringTag","once","called","args","History","baseEl","normalizeBase","pending","ready","readyCbs","readyErrorCbs","errorCbs","listeners","extractGuards","records","bind","reverse","guards","def","guard","extractGuard","bindGuard","listen","onReady","errorCb","onError","transitionTo","onComplete","onAbort","prev","confirmTransition","updateRoute","ensureURL","afterHooks","abort","lastRouteIndex","lastCurrentIndex","max","Math","updated","activated","deactivated","resolveQueue","extractLeaveGuards","beforeHooks","extractUpdateHooks","hasAsync","cid","resolvedDef","__esModule","resolved","reason","msg","comp","iterator","createNavigationAbortedError","createNavigationRedirectedError","enterGuards","bindEnterGuard","extractEnterGuards","resolveHooks","setupListeners","teardown","cleanupListener","HTML5History","_startLocation","getLocation","__proto__","constructor","expectScroll","supportsScroll","handleRoutingEvent","go","fromRoute","getCurrentLocation","pathname","pathLowerCase","toLowerCase","baseLowerCase","HashHistory","fallback","checkFallback","ensureSlash","getHash","replaceHash","eventType","pushHash","getUrl","AbstractHistory","targetIndex","VueRouter","matcher","prototypeAccessors","configurable","$once","routeOrError","handleInitialScroll","_route","beforeEach","registerHook","beforeResolve","afterEach","back","forward","getMatchedComponents","createHref","normalizedTo","defineProperties","VueRouter$1","list","install","isDef","registerInstance","callVal","$options","_parentVnode","mixin","beforeCreate","_router","util","defineReactive","destroyed","defineProperty","strats","optionMergeStrategies","beforeRouteEnter","beforeRouteLeave","beforeRouteUpdate","created","START_LOCATION","cloneRoute","exports","moduleName","registerModule","namespaced","transition","currentPath","isTimeTraveling","storeUnwatch","watch","afterEachUnHook","unregisterModule","setUid","uid","O","P","Qt","r","s","Number","floor","log","min","d","pow","parseFloat","toLocaleString","Dt","toLocaleLowerCase","replaceAll","round","k","g","p","N","NONE","CREATE","READ","UPDATE","DELETE","SHARE","ALL","Z","nc","V","_nc_dav_properties","S","_nc_dav_namespaces","ur","dr","L","Folder","File","Y","q","URL","startsWith","mtime","crtime","mime","size","permissions","owner","attributes","root","status","J","NEW","FAILED","LOADING","LOCKED","Q","_data","_attributes","_knownDavService","set","updateMtime","Reflect","deleteProperty","Proxy","encodedSource","origin","basename","extension","dirname","isDavRessource","fileid","move","rename","_e","ve","super","D","ee","ar","headers","setHeaders","requesttoken","patch","u","method","fetch","lr","AbortController","async","getDirectoryContents","signal","details","includeSelf","filename","Te","ye","lastmod","parseInt","getcontentlength","hasPreview","C","isExist","isEmptyObject","merge","o","f","getValue","isName","getAllMatches","startIndex","lastIndex","nameRegexp","te","preserveOrder","attributeNamePrefix","attributesGroupName","textNodeName","ignoreAttributes","removeNSPrefix","allowBooleanAttributes","parseTagValue","parseAttributeValue","trimValues","cdataPropName","numberParseOptions","hex","leadingZeros","eNotation","tagValueProcessor","attributeValueProcessor","stopNodes","alwaysCreateTextNode","commentPropName","unpairedTags","processEntities","htmlEntities","ignoreDeclaration","ignorePiTags","transformTagName","transformAttributeName","updateTag","buildOptions","defaultOptions","ne","ie","Et","yt","bt","prettify","_t","Tt","se","xt","$t","oe","H","E","indentBy","suppressUnpairedNode","suppressEmptyNode","endsWith","suppressBooleanAttributes","lastIndexOf","entities","Vt","format","St","oneListGroup","isAttribute","attrPrefixLen","Mt","processTextOrObjNode","Lt","indentate","Rt","tagEndChar","newLine","j2x","buildTextValNode","attrStr","buildObjectNode","arrayNodeName","buildAttrPairStr","replaceEntitiesValue","closeTag","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","module","loaded","__webpack_modules__","chunkIds","priority","notFulfilled","Infinity","fulfilled","getter","definition","enumerable","chunkId","all","reduce","promises","globalThis","Function","prop","done","script","needAttach","scripts","getElementsByTagName","createElement","charset","timeout","setAttribute","src","onScriptComplete","onerror","onload","clearTimeout","doneFns","parentNode","removeChild","head","appendChild","nmd","paths","scriptUrl","importScripts","currentScript","baseURI","self","installedChunks","installedChunkData","promise","realSrc","request","webpackJsonpCallback","parentChunkLoadingFunction","moreModules","runtime","some","chunkLoadingGlobal","__webpack_exports__"],"sourceRoot":""}
\ No newline at end of file |