MOON
Server: Apache
System: Linux server1.studioinfinity.com.br 2.6.32-954.3.5.lve1.4.90.el6.x86_64 #1 SMP Tue Feb 21 12:26:30 UTC 2023 x86_64
User: artinside (517)
PHP: 7.4.33
Disabled: exec,passthru,shell_exec,system
Upload Files
File: //opt/netdata/usr/local/share/netdata/web/v3/2248.663b5b21950fc130261c.chunk.js
try{!function(){var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{},s=(new e.Error).stack;s&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[s]="6aa77a84-6651-4967-bf98-d5e3ee930f93",e._sentryDebugIdIdentifier="sentry-dbid-6aa77a84-6651-4967-bf98-d5e3ee930f93")}()}catch(e){}!function(){try{("undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{}).SENTRY_RELEASE={id:"ff6b4c14193f160501d7117c313cc3a769881a66"}}catch(e){}}(),(self.webpackChunkcloud_frontend=self.webpackChunkcloud_frontend||[]).push([[2248],{1457:(e,s,r)=>{r.d(s,{Rq:()=>a,oL:()=>i,u:()=>o,ue:()=>n});var l=r(52035),t=r(84929);const n={items:[],error:"",id:null,loading:!0,loaded:!1},a=(0,t.Iz)((()=>(0,l.eU)(0))),i=(0,t.Iz)((e=>(0,l.eU)({...n,id:e}))),o=(0,t.Iz)((()=>(0,l.eU)(null)))},34646:(e,s,r)=>{r.d(s,{FX:()=>n,ON:()=>i,Uj:()=>o,Zl:()=>t,lG:()=>a,lt:()=>d});var l=r(91130);const t=e=>l.A.get(`/api/v3/spaces/${e}/scim`),n=(e,s)=>e?l.A.get(`/api/v3/spaces/${s}/scim/${e}`):Promise.resolve({data:null}),a=(e,s)=>l.A.post(`/api/v3/spaces/${e}/scim`,s),i=(e,s,r)=>l.A.patch(`/api/v3/spaces/${s}/scim/${e}`,r),o=(e,s)=>l.A.delete(`/api/v3/spaces/${s}/scim/${e}`),d=(e,s)=>e?l.A.post(`/api/v3/spaces/${s}/scim/${e}/rotate-token`):Promise.resolve({data:null})},52248:(e,s,r)=>{r.r(s),r.d(s,{default:()=>le});var l=r(80689),t=r(99728),n=r(53746),a=r(63956);const i=()=>{(0,n.A)();const{loaded:e,items:s}=(0,a.Xy)(),{available:r,SCIMID:l}=e?(s||[])[0]:{};return{scimItemsLoaded:e,scimAvailable:r,scimId:l}};r(98992),r(54520),r(81454),r(37550);var o=r(96540),d=r(34843),c=r(52035),u=r(84929),m=r(91130);var p=r(57377);const g=(0,u.Iz)((e=>{let{spaceId:s,scimId:r}=e;return(0,u.Rq)((0,c.eU)((()=>(e=>{let{spaceId:s,scimId:r}=e;return m.A.get(`/api/v3/spaces/${s}/scim/${r}/membership-rules/options`)})({spaceId:s,scimId:r}))))}),p.Ay),h=(e,s,r)=>{const{state:l,data:t,error:n}=r(e);return r(s)||{loaded:"loading"!==l,rules:t?.data||[],hasError:"hasError"===l,error:n}},I=(0,u.Iz)((()=>(0,c.eU)(0)),p.Ay),b=(0,u.Iz)((e=>{let{spaceId:s,scimId:r}=e;const l=(0,u.Rq)((0,c.eU)((e=>(e(I({spaceId:s,scimId:r})),(e=>{let{spaceId:s,scimId:r}=e;return m.A.get(`/api/v3/spaces/${s}/scim/${r}/membership-rules`)})({spaceId:s,scimId:r}))))),t=(0,u.tx)();return(0,c.eU)((e=>h(l,t,e)),((e,n,a)=>{if(a===u.Ut)return n(t,u.Ut),void n(I({spaceId:s,scimId:r}),(e=>e+1));const i=h(l,t,e);n(t,"function"===typeof a?a(i):a)}))}),p.Ay);var x=r(24609);const v="new-scim-rule",f=e=>{let{scimId:s}=e;const r=(0,x.vt)(),l=(0,d.md)(g({spaceId:r,scimId:s}));return{loaded:"loading"!==l.state,options:l.data?.data||{},hasError:"hasError"===l.state,error:l.error}},y=e=>{let{scimId:s}=e;const r=(0,x.vt)();return(0,d.Xr)(b({spaceId:r,scimId:s}))};var j=r(47090);const C=e=>{let{scimId:s}=e;const{loaded:r,hasError:l,options:t,error:n}=f({scimId:s}),{loaded:a,rules:i,hasError:c,error:u}=(e=>{let{scimId:s}=e;const r=(0,x.vt)();return(0,d.md)(b({spaceId:r,scimId:s}))})({scimId:s}),m=r&&a,p=m&&(l||c),g=m&&!p&&0===i.length,h=p?n||u:null,I=h?(0,j.o)(h.response?.data?.errorMsgKey):null,y=(0,o.useMemo)((()=>(t?.groups||[]).filter((e=>{let{id:s}=e;return!(i||[]).map((e=>{let{scimGroupID:s}=e;return s})).includes(s)}))),[t,i]),C=(0,o.useMemo)((()=>(i||[]).some((e=>{let{role:s}=e;return"admin"===s}))),[i]),A=(0,o.useMemo)((()=>m&&!!y.length&&!i.some((e=>{let{id:s}=e;return s===v}))),[m,i,y]);return{loaded:m,rules:i,unassignedGroups:y,adminExists:C,showEmptyRules:g,canAddNewRule:A,hasError:p,error:I}};var A=r(74848);const E=e=>{let{children:s}=e;return(0,A.jsx)(l.Flex,{"data-testid":"scim-groups-empty-rules",height:"100%",alignItems:"center",justifyContent:"center",children:(0,A.jsx)(l.Flex,{width:{max:"562px"},column:!0,gap:4,alignItems:"center",children:s})})},k=e=>{let{scimId:s,...r}=e;const t=(e=>{let{scimId:s}=e;const r=y({scimId:s}),l={id:v,isEdit:!0};return(0,o.useCallback)((()=>{r((e=>({...e,rules:[...e?.rules||[],l]})))}),[r])})({scimId:s});return(0,A.jsx)(l.Button,{...r,onClick:t})},S=(0,o.memo)((e=>{let{scimId:s}=e;return(0,A.jsxs)(E,{children:[(0,A.jsx)(l.TextBig,{textAlign:"center",lineHeight:"20px",children:"Here you can create rules to automatically assign users to roles and rooms based on the SCIM group they belong."}),(0,A.jsx)(l.Box,{children:(0,A.jsx)(k,{label:"Create a new rule",large:!0,scimId:s})})]})}));var w=r(6304),M=r(63872);const D=e=>{let{scimId:s,onSuccess:r}=e;const l=(0,x.vt)(),[t,,n,a]=(0,w.A)(),[i,d]=(0,M.A)(),c=(0,o.useCallback)((e=>{n(),(e=>{let{spaceId:s,scimId:r,payload:l}=e;return m.A.post(`/api/v3/spaces/${s}/scim/${r}/membership-rules`,l)})({spaceId:l,scimId:s,payload:e}).then((e=>{let{data:s}=e;i({header:"Success",text:"Successfully created SCIM membership rule."}),"function"===typeof r&&r(s)})).catch((e=>{d(e)})).finally((()=>{a()}))}),[s,n,a,r,i,d]);return{loading:t,create:c}},R=e=>{let{scimId:s,onSuccess:r}=e;const l=(0,x.vt)(),[t,,n,a]=(0,w.A)(),[i,d]=(0,M.A)(),c=(0,o.useCallback)((e=>{const{id:t,...o}=e;n(),(e=>{let{spaceId:s,scimId:r,ruleId:l,payload:t}=e;return m.A.put(`/api/v3/spaces/${s}/scim/${r}/membership-rules/${l}`,t)})({spaceId:l,scimId:s,ruleId:t,payload:o}).then((e=>{let{data:s}=e;i({header:"Success",text:"Successfully updated SCIM membership rule."}),"function"===typeof r&&r(s)})).catch((e=>{d(e)})).finally((()=>{a()}))}),[s,n,a,r,i,d]);return{loading:t,update:c}},U=e=>{let{scimId:s,onSuccess:r}=e;const l=(0,x.vt)(),[t,,n,a]=(0,w.A)(),[i,d]=(0,M.A)(),c=(0,o.useCallback)((e=>{n(),(e=>{let{spaceId:s,scimId:r,ruleId:l}=e;return m.A.delete(`/api/v3/spaces/${s}/scim/${r}/membership-rules/${l}`)})({spaceId:l,scimId:s,ruleId:e}).then((e=>{i({header:"Success",text:"Successfully deleted SCIM membership rule."}),"function"===typeof r&&r(e)})).catch((e=>{d(e)})).finally((()=>{a()}))}),[s,n,a,r,i,d]);return{loading:t,deleteRule:c}},$=e=>{let{scimId:s,rule:r={}}=e;const[l,t]=(0,o.useState)(r),[n,,a,i]=(0,w.A)(),{id:d,scimGroupID:c,role:u,roomIDs:m,isEdit:g}=l,h=(e=>{let{scimId:s}=e;const r=y({scimId:s});return(0,o.useCallback)((function(e){let s=!(arguments.length>1&&void 0!==arguments[1])||arguments[1];r((r=>{const l=(r.rules||[]).map((r=>r.id===e?{...r,isEdit:s}:r));return{...r,rules:l}}))}))})({scimId:s}),I=(e=>{let{scimId:s}=e;const r=y({scimId:s});return(0,o.useCallback)((e=>{r((s=>{const r=(s.rules||[]).filter((s=>s.id!==e));return{...s,rules:r}}))}))})({scimId:s}),b=(e=>{let{scimId:s}=e;const r=y({scimId:s});return(0,o.useCallback)(((e,s)=>{r((r=>{const l=(r.rules||[]).map((r=>r.id===e?s:r));return{...r,rules:l}}))}))})({scimId:s}),x=(0,o.useCallback)((e=>{b(d,e)}),[d,b]),f=(0,o.useCallback)((()=>{I(d),i()}),[I,i]),{loading:j,create:C}=D({scimId:s,onSuccess:x}),{loading:A,update:E}=R({scimId:s,onSuccess:x}),{loading:k,deleteRule:S}=U({scimId:s,onSuccess:f}),M=j||A||k,$=(0,o.useMemo)((()=>!(0,p.Ay)(r,l)),[r,l]),G=(0,o.useMemo)((()=>d===v&&$),[d,$]),T=(0,o.useMemo)((()=>g&&!!c&&!!u&&m?.length||!1),[g,c,u,m?.length]),B=(0,o.useMemo)((()=>g&&$&&r?.id!==v),[r?.id,g,$]),F=(0,o.useCallback)((e=>s=>{const r=Array.isArray(s)?s.map((e=>{let{value:s}=e;return s})):s.value;t((s=>({...s,[e]:r})))}),[t]),N=(0,o.useCallback)((()=>{h(d)}),[d,h]),P=(0,o.useCallback)((()=>{h(r.id,!1),t(r)}),[r,$,h,t]),L=(0,o.useCallback)((()=>{(d===v?C:E)({id:d,scimGroupID:c,role:u,roomIDs:m})}),[d,c,u,m,C]),z=(0,o.useCallback)((()=>{d===v?I(d):S(d)}),[d,S,I]),_=(0,o.useCallback)((()=>{d!==v||$?a():z(d)}),[d,$,a,z]);return(0,o.useEffect)((()=>{t(r)}),[r,t]),{loading:M,scimGroupID:c,roomIDs:m,role:u,isEdit:g,canSave:T,canUndo:B,confirmationOpen:n,isNewUnsaved:G,onGroupChange:F("scimGroupID"),onRoleChange:F("role"),onRoomsChange:F("roomIDs"),onEdit:N,onReset:P,onSave:L,onDelete:_,onConfirmDelete:z,onDeclineDelete:i}};r(72577);var G=r(77148);const T=(0,o.memo)((e=>{let{isEdit:s,label:r,value:t,options:n,isMulti:a,disabled:i,onChange:d,error:c}=e;const u=s?l.Text:l.TextBig,m=(0,o.useMemo)((()=>n.filter((e=>{let{hidden:s}=e;return!s}))),[n]),p=(0,o.useMemo)((()=>a?n.filter((e=>(t||[]).includes(e.value))):n.find((e=>e.value===t))),[t,a]),g=(0,o.useMemo)((()=>Array.isArray(p)?p.map((e=>{let{label:s}=e;return s})).join(", "):p?.label||""),[p]);return c?(0,A.jsxs)(l.Flex,{alignItems:"center",gap:1,children:[(0,A.jsx)(l.Icon,{name:"warning_triangle",size:"small",color:"warning"}),(0,A.jsx)(l.Text,{children:c})]}):(0,A.jsxs)(A.Fragment,{children:[(0,A.jsxs)(l.Flex,{alignItems:"center",gap:2,children:[(0,A.jsxs)(u,{children:[r,s?"":":"]}),s?(0,A.jsx)(l.Select,{value:p,options:m,isMulti:a,disabled:i,onChange:d}):(0,A.jsx)(u,{strong:!0,children:g})]}),s?null:(0,A.jsx)(G.A,{vertical:!0,height:"20px",color:"border"})]})})),B=e=>{let{scimId:s,isEdit:r,label:l,value:t,onChange:n,unassignedGroups:a,...i}=e;const{loaded:d,options:c,hasError:u}=f({scimId:s}),m=(0,o.useMemo)((()=>a.map((e=>{let{id:s}=e;return s}))),[a]),p=(0,o.useMemo)((()=>(c?.groups||[]).map((e=>{let{id:s,displayName:r}=e;return{label:r,value:s,hidden:!m.includes(s)}}))),[c?.groups,m]),g=u?"Error on fetching groups":null;return d?(0,A.jsx)(T,{isEdit:r,label:l,value:t,options:p,onChange:n,error:g,...i}):null},F=e=>{let{scimId:s,isEdit:r,label:l,value:t,onChange:n}=e;const{loaded:a,options:i,hasError:d}=f({scimId:s}),c=(0,o.useMemo)((()=>(i?.roles||[]).map((e=>({label:e,value:e})))),[i?.roles]),u=d?"Error on fetching roles":null;return a?(0,A.jsx)(T,{isEdit:r,label:l,value:t,options:c,onChange:n,error:u}):null},N=e=>{let{scimId:s,isEdit:r,label:l,value:t,onChange:n}=e;const{loaded:a,options:i,hasError:d}=f({scimId:s}),c=(0,o.useMemo)((()=>(i?.rooms||[]).map((e=>{let{id:s,name:r}=e;return{label:r,value:s}}))),[i?.rooms]),u=d?"Error on fetching rooms":null;return a?(0,A.jsx)(T,{isEdit:r,label:l,value:t,options:c,isMulti:!0,onChange:n,error:u}):null},P=e=>{let{isUnsaved:s,onConfirm:r,onDecline:t}=e;const n=s?"You are going to remove this item that has some unsaved changes.":"You are going to completely remove this rule and this action cannot be reverted.";return(0,A.jsx)(l.ConfirmationDialog,{title:"Delete item?",handleConfirm:r,handleDecline:t,confirmLabel:"Yes, delete",declineLabel:"Close",backdropContainerProps:{zIndex:"120"},message:(0,A.jsxs)(l.Flex,{column:!0,gap:2,children:[(0,A.jsx)(l.TextBig,{children:n}),(0,A.jsx)(l.TextBig,{children:"Are you sure that you want to delete this item?"})]})})};var L=r(74891);const z=(0,r(94404).A)((0,L.A)(l.Button)),_=e=>({group:e?"Users that belong to group":"Group",role:e?"will be assigned the role of":"Role",rooms:e?"and will be added to room(s)":"Rooms"}),X=e=>{let{scimId:s,rule:r,unassignedGroups:t}=e;const{loading:n,scimGroupID:a,roomIDs:i,role:o,isEdit:d,canSave:c,canUndo:u,confirmationOpen:m,isNewUnsaved:p,onGroupChange:g,onRoleChange:h,onRoomsChange:I,onEdit:b,onReset:x,onSave:v,onDelete:f,onConfirmDelete:y,onDeclineDelete:j}=$({scimId:s,rule:r});return(0,A.jsxs)(A.Fragment,{children:[(0,A.jsxs)(l.Flex,{"data-testid":"scim-groups-rule-container",flex:"grow",alignItems:"center",justifyContent:"between",padding:[4],border:{side:"all",color:"border"},children:[(0,A.jsxs)(l.Flex,{alignItems:"center",gap:2,children:[(0,A.jsx)(B,{scimId:s,label:_(d).group,value:a,isEdit:d,disabled:n,onChange:g,unassignedGroups:t}),(0,A.jsx)(F,{scimId:s,label:_(d).role,value:o,isEdit:d,disabled:n,onChange:h}),(0,A.jsx)(N,{scimId:s,label:_(d).rooms,value:i,isEdit:d,disabled:n,onChange:I})]}),(0,A.jsxs)(l.Flex,{alignItems:"center",gap:2,children:[u?(0,A.jsx)(z,{flavour:"borderless",neutral:!0,icon:"refresh",disabled:n,onClick:x,tooltip:"Undo changes",feature:"ScimMembershipRule",payload:{ruleId:r.id,btnAction:"Undo rules changes"}}):null,d?(0,A.jsx)(z,{flavour:"borderless",neutral:!0,icon:"save",disabled:n||!c,onClick:v,tooltip:"Save",feature:"ScimMembershipRule",payload:{ruleId:r.id,btnAction:"Save rule"}}):(0,A.jsx)(z,{flavour:"borderless",neutral:!0,icon:"pencilOutline",disabled:n,onClick:b,tooltip:"Edit",feature:"ScimMembershipRule",payload:{ruleId:r.id,btnAction:"Edit rule"}}),(0,A.jsx)(z,{flavour:"borderless",danger:!0,icon:"trashcan",disabled:n,onClick:f,tooltip:"Delete",feature:"ScimMembershipRule",payload:{ruleId:r.id,btnAction:"Delete rule"}})]})]}),m?(0,A.jsx)(P,{isUnsaved:p,onConfirm:y,onDecline:j}):null]})};var Y=r(60908);const q=e=>{let{adminExists:s}=e;const r=(0,o.useMemo)((()=>s?"All groups have been configured":"No space administrators were assigned"),[s]),t=(0,o.useMemo)((()=>({name:s?"check":"warning_triangle",color:s?"primary":"error"})),[s]);return(0,A.jsxs)(l.Flex,{alignItems:"center",gap:2,children:[(0,A.jsx)(l.Icon,{...t}),(0,A.jsx)(l.TextBig,{children:r})]})},O=e=>{let{scimId:s,rules:r,canAddNewRule:t,unassignedGroups:n,adminExists:a}=e;return(0,A.jsx)(Y.Ay,{feature:"ScimMembershipRules",children:(0,A.jsxs)(l.Flex,{"data-testid":"scim-groups-rules-list",column:!0,gap:4,children:[r.map((e=>(0,A.jsx)(X,{scimId:s,rule:e,unassignedGroups:n},e.id))),n.length?(0,A.jsx)(l.Box,{children:(0,A.jsx)(k,{label:"Add new",scimId:s,disabled:!t})}):(0,A.jsx)(q,{adminExists:a})]})})};var Z=r(29022),H=r(55093);const J=e=>{let{scimId:s}=e;const{loaded:r,rules:t,unassignedGroups:n,adminExists:a,showEmptyRules:i,canAddNewRule:o,hasError:d,error:c}=C({scimId:s});return r?d?(0,A.jsx)(Z.A,{title:"Error",children:(0,A.jsx)(l.TextBig,{children:c})}):i?(0,A.jsx)(S,{scimId:s}):(0,A.jsx)(O,{scimId:s,rules:t,canAddNewRule:o,unassignedGroups:n,adminExists:a}):(0,A.jsx)(H.A,{title:"Loading..."})};var K=r(88934),Q=r(89942),V=r(61841),W=r(88325);const ee=(0,o.memo)((e=>{let{scimAvailable:s}=e;const r=(0,K.Zp)(),[t]=(0,V.Ay)(),{url:n}=(0,W.A)(),a=s?"You do not have any SCIM integration activated. Please activate a SCIM integration first, and then you will be able to configure user groups.":"This feature is only available to paid plans.",i=(0,o.useCallback)((()=>{const e=(0,Q.PP)();(0,Q.Z8)({...e,userManagementActiveTab:1}),r(`/spaces/${t}/settings/users`,{replace:!0})}),[t,Q.PP,Q.Z8,r]),d=(0,o.useCallback)((()=>{r(n,{replace:!0})}),[n,r]),c=(0,o.useMemo)((()=>({label:s?"Activate SCIM integration":"Upgrade now!",onClick:s?i:d,large:!0,textTransform:""})),[s,i,d]);return(0,A.jsxs)(E,{children:[(0,A.jsx)(l.TextBigger,{textAlign:"center",lineHeight:"20px",children:a}),(0,A.jsx)(l.Box,{children:(0,A.jsx)(l.Button,{...c})})]})})),se=()=>{const{scimItemsLoaded:e,scimAvailable:s,scimId:r}=i();return e?r?(0,A.jsx)(J,{scimId:r}):(0,A.jsx)(ee,{scimAvailable:s}):(0,A.jsx)(H.A,{title:"Loading..."})},re=()=>(0,A.jsx)(Z.A,{title:"No permissions",children:(0,A.jsx)(l.TextBig,{children:"You don't have permissions to view this page"})}),le=e=>{const s=(0,t.JT)("oidc:Manage");return(0,A.jsx)(Y.Ay,{tab:"ScimUserGroups",children:(0,A.jsx)(l.Flex,{"data-testid":"scim-groups-manager",column:!0,gap:4,height:"100%",overflow:{vertical:"auto"},flex:"grow",padding:[4,4,0,4],...e,children:s?(0,A.jsx)(se,{}):(0,A.jsx)(re,{})})})}},53746:(e,s,r)=>{r.d(s,{A:()=>o});var l=r(34646),t=r(24609),n=r(32052),a=r(1457),i=r(63956);const o=()=>{const e=(0,t.vt)(),s=(0,i.cP)(e),r=(0,i.Bc)();(0,n.A)((()=>({enabled:!!e,fetch:()=>(0,l.Zl)(e),onFail:e=>s({...a.ue,error:e?.response?.data||e}),onSettle:()=>s({loading:!1,loaded:!0}),onSuccess:e=>{s({...a.ue,items:e||[]})}})),[r,e])}},63956:(e,s,r)=>{r.d(s,{Bc:()=>u,Hy:()=>I,Xy:()=>h,cP:()=>g,dI:()=>b,nB:()=>m});var l=r(96540),t=r(52035),n=r(34843),a=r(84929),i=r(24609),o=r(1457),d=r(34646),c=r(57377);const u=()=>{const e=(0,i.vt)();return(0,n.md)((0,o.Rq)(e))},m=()=>{const e=(0,i.vt)(),s=(0,n.Xr)((0,o.Rq)(e));return(0,l.useCallback)((()=>s((e=>e+1))),[s])},p=(0,a.Iz)((e=>{let{id:s,key:r}=e;return(0,t.eU)((e=>{const l=e((0,o.oL)(s));return r?l[r]:l}),((e,l,t)=>{l((0,o.oL)(s),(e=>r?{...e,[r]:t}:{...e,...t}))}))}),c.Ay),g=(e,s)=>(0,n.Xr)(p({id:e,key:s})),h=e=>{const s=(0,i.vt)();return(0,n.md)(p({id:s,key:e}))},I=e=>(0,n.fp)((0,o.u)(e)),b=e=>{const s=(0,i.vt)(),[r,t]=I(s);return{integration:r,create:(0,l.useCallback)((function(){let r=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return(0,d.lG)(s,{integrationID:e,...r})}),[s]),update:(0,l.useCallback)((function(){let r=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return(0,d.ON)(e,s,r)}),[e,s]),remove:(0,l.useCallback)((()=>(0,d.Uj)(e,s).then((()=>(t(null),Promise.resolve())))),[e,s,t]),rotateToken:(0,l.useCallback)((()=>(0,d.lt)(e,s)),[e,s])}}}}]);