>>2]>>>24-b%4*8&255;j.push((k>>>4).toString(16)),j.push((k&15).toString(16))}return j.join("")},parse:function(m){for(var p=m.length,x=[],j=0;j>>3]|=parseInt(m.substr(j,2),16)<<24-j%8*4;return new f.init(x,p/2)}},y=g.Latin1={stringify:function(m){for(var p=m.words,x=m.sigBytes,j=[],b=0;b>>2]>>>24-b%4*8&255;j.push(String.fromCharCode(k))}return j.join("")},parse:function(m){for(var p=m.length,x=[],j=0;j>>2]|=(m.charCodeAt(j)&255)<<24-j%4*8;return new f.init(x,p)}},_=g.Utf8={stringify:function(m){try{return decodeURIComponent(escape(y.stringify(m)))}catch{throw new Error("Malformed UTF-8 data")}},parse:function(m){return y.parse(unescape(encodeURIComponent(m)))}},C=u.BufferedBlockAlgorithm=d.extend({reset:function(){this._data=new f.init,this._nDataBytes=0},_append:function(m){typeof m=="string"&&(m=_.parse(m)),this._data.concat(m),this._nDataBytes+=m.sigBytes},_process:function(m){var p,x=this._data,j=x.words,b=x.sigBytes,k=this.blockSize,O=k*4,M=b/O;m?M=r.ceil(M):M=r.max((M|0)-this._minBufferSize,0);var z=M*k,H=r.min(z*4,b);if(z){for(var te=0;te>>7)^(M<<14|M>>>18)^M>>>3,H=f[O-2],te=(H<<15|H>>>17)^(H<<13|H>>>19)^H>>>10;f[O]=z+f[O-7]+te+f[O-16]}var Q=x&j^~x&b,$=C&w^C&m^w&m,U=(C<<30|C>>>2)^(C<<19|C>>>13)^(C<<10|C>>>22),J=(x<<26|x>>>6)^(x<<21|x>>>11)^(x<<7|x>>>25),fe=k+J+Q+d[O]+f[O],B=U+$;k=b,b=j,j=x,x=p+fe|0,p=m,m=w,w=C,C=fe+B|0}_[0]=_[0]+C|0,_[1]=_[1]+w|0,_[2]=_[2]+m|0,_[3]=_[3]+p|0,_[4]=_[4]+x|0,_[5]=_[5]+j|0,_[6]=_[6]+b|0,_[7]=_[7]+k|0},_doFinalize:function(){var h=this._data,y=h.words,_=this._nDataBytes*8,C=h.sigBytes*8;return y[C>>>5]|=128<<24-C%32,y[(C+64>>>9<<4)+14]=r.floor(_/4294967296),y[(C+64>>>9<<4)+15]=_,h.sigBytes=y.length*4,this._process(),this._hash},clone:function(){var h=a.clone.call(this);return h._hash=this._hash.clone(),h}});i.SHA256=a._createHelper(g),i.HmacSHA256=a._createHmacHelper(g)}(Math),n.SHA256})})(Im);var $S=Im.exports;const DS=Pn($S);var Lm={exports:{}};(function(e,t){(function(n,r){e.exports=r(ca)})(Jt,function(n){return function(){var r=n,i=r.lib,o=i.WordArray,s=r.enc;s.Base64={stringify:function(c){var u=c.words,d=c.sigBytes,f=this._map;c.clamp();for(var g=[],h=0;h>>2]>>>24-h%4*8&255,_=u[h+1>>>2]>>>24-(h+1)%4*8&255,C=u[h+2>>>2]>>>24-(h+2)%4*8&255,w=y<<16|_<<8|C,m=0;m<4&&h+m*.75>>6*(3-m)&63));var p=f.charAt(64);if(p)for(;g.length%4;)g.push(p);return g.join("")},parse:function(c){var u=c.length,d=this._map,f=this._reverseMap;if(!f){f=this._reverseMap=[];for(var g=0;g>>6-h%4*2,C=y|_;f[g>>>2]|=C<<24-g%4*8,g++}return o.create(f,g)}}(),n.enc.Base64})})(Lm);var HS=Lm.exports;const Kf=Pn(HS);var Fm={exports:{}};(function(e,t){(function(n,r){e.exports=r(ca)})(Jt,function(n){return n.enc.Utf8})})(Fm);var WS=Fm.exports;const qS=Pn(WS);function _c(e){this.message=e}_c.prototype=new Error,_c.prototype.name="InvalidCharacterError";var Qf=typeof window<"u"&&window.atob&&window.atob.bind(window)||function(e){var t=String(e).replace(/=+$/,"");if(t.length%4==1)throw new _c("'atob' failed: The string to be decoded is not correctly encoded.");for(var n,r,i=0,o=0,s="";r=t.charAt(o++);~r&&(n=i%4?64*n+r:r,i++%4)?s+=String.fromCharCode(255&n>>(-2*i&6)):0)r="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=".indexOf(r);return s};function VS(e){var t=e.replace(/-/g,"+").replace(/_/g,"/");switch(t.length%4){case 0:break;case 2:t+="==";break;case 3:t+="=";break;default:throw"Illegal base64url string!"}try{return function(n){return decodeURIComponent(Qf(n).replace(/(.)/g,function(r,i){var o=i.charCodeAt(0).toString(16).toUpperCase();return o.length<2&&(o="0"+o),"%"+o}))}(t)}catch{return Qf(t)}}function Ts(e){this.message=e}function KS(e,t){if(typeof e!="string")throw new Ts("Invalid token specified");var n=(t=t||{}).header===!0?0:1;try{return JSON.parse(VS(e.split(".")[n]))}catch(r){throw new Ts("Invalid token specified: "+r.message)}}Ts.prototype=new Error,Ts.prototype.name="InvalidTokenError";var QS={debug:()=>{},info:()=>{},warn:()=>{},error:()=>{}},Ft,Mt,Qn=(e=>(e[e.NONE=0]="NONE",e[e.ERROR=1]="ERROR",e[e.WARN=2]="WARN",e[e.INFO=3]="INFO",e[e.DEBUG=4]="DEBUG",e))(Qn||{});(e=>{function t(){Ft=3,Mt=QS}e.reset=t;function n(i){if(!(0<=i&&i<=4))throw new Error("Invalid log level");Ft=i}e.setLevel=n;function r(i){Mt=i}e.setLogger=r})(Qn||(Qn={}));var G=class{constructor(e){this._name=e}debug(...e){Ft>=4&&Mt.debug(G._format(this._name,this._method),...e)}info(...e){Ft>=3&&Mt.info(G._format(this._name,this._method),...e)}warn(...e){Ft>=2&&Mt.warn(G._format(this._name,this._method),...e)}error(...e){Ft>=1&&Mt.error(G._format(this._name,this._method),...e)}throw(e){throw this.error(e),e}create(e){const t=Object.create(this);return t._method=e,t.debug("begin"),t}static createStatic(e,t){const n=new G(`${e}.${t}`);return n.debug("begin"),n}static _format(e,t){const n=`[${e}]`;return t?`${n} ${t}:`:n}static debug(e,...t){Ft>=4&&Mt.debug(G._format(e),...t)}static info(e,...t){Ft>=3&&Mt.info(G._format(e),...t)}static warn(e,...t){Ft>=2&&Mt.warn(G._format(e),...t)}static error(e,...t){Ft>=1&&Mt.error(G._format(e),...t)}};Qn.reset();var JS="10000000-1000-4000-8000-100000000000",$t=class{static _randomWord(){return US.lib.WordArray.random(1).words[0]}static generateUUIDv4(){return JS.replace(/[018]/g,t=>(+t^$t._randomWord()&15>>+t/4).toString(16)).replace(/-/g,"")}static generateCodeVerifier(){return $t.generateUUIDv4()+$t.generateUUIDv4()+$t.generateUUIDv4()}static generateCodeChallenge(e){try{const t=DS(e);return Kf.stringify(t).replace(/\+/g,"-").replace(/\//g,"_").replace(/=+$/,"")}catch(t){throw G.error("CryptoUtils.generateCodeChallenge",t),t}}static generateBasicAuth(e,t){const n=qS.parse([e,t].join(":"));return Kf.stringify(n)}},fn=class{constructor(e){this._name=e,this._logger=new G(`Event('${this._name}')`),this._callbacks=[]}addHandler(e){return this._callbacks.push(e),()=>this.removeHandler(e)}removeHandler(e){const t=this._callbacks.lastIndexOf(e);t>=0&&this._callbacks.splice(t,1)}raise(...e){this._logger.debug("raise:",...e);for(const t of this._callbacks)t(...e)}},Sc=class{static decode(e){try{return KS(e)}catch(t){throw G.error("JwtUtils.decode",t),t}}},Jf=class{static center({...e}){var t,n,r;return e.width==null&&(e.width=(t=[800,720,600,480].find(i=>i<=window.outerWidth/1.618))!=null?t:360),(n=e.left)!=null||(e.left=Math.max(0,Math.round(window.screenX+(window.outerWidth-e.width)/2))),e.height!=null&&((r=e.top)!=null||(e.top=Math.max(0,Math.round(window.screenY+(window.outerHeight-e.height)/2)))),e}static serialize(e){return Object.entries(e).filter(([,t])=>t!=null).map(([t,n])=>`${t}=${typeof n!="boolean"?n:n?"yes":"no"}`).join(",")}},wt=class extends fn{constructor(){super(...arguments),this._logger=new G(`Timer('${this._name}')`),this._timerHandle=null,this._expiration=0,this._callback=()=>{const e=this._expiration-wt.getEpochTime();this._logger.debug("timer completes in",e),this._expiration<=wt.getEpochTime()&&(this.cancel(),super.raise())}}static getEpochTime(){return Math.floor(Date.now()/1e3)}init(e){const t=this._logger.create("init");e=Math.max(Math.floor(e),1);const n=wt.getEpochTime()+e;if(this.expiration===n&&this._timerHandle){t.debug("skipping since already initialized for expiration at",this.expiration);return}this.cancel(),t.debug("using duration",e),this._expiration=n;const r=Math.min(e,5);this._timerHandle=setInterval(this._callback,r*1e3)}get expiration(){return this._expiration}cancel(){this._logger.create("cancel"),this._timerHandle&&(clearInterval(this._timerHandle),this._timerHandle=null)}},jc=class{static readParams(e,t="query"){if(!e)throw new TypeError("Invalid URL");const r=new URL(e,window.location.origin)[t==="fragment"?"hash":"search"];return new URLSearchParams(r.slice(1))}},tr=class extends Error{constructor(e,t){var n,r,i;if(super(e.error_description||e.error||""),this.form=t,this.name="ErrorResponse",!e.error)throw G.error("ErrorResponse","No error passed"),new Error("No error passed");this.error=e.error,this.error_description=(n=e.error_description)!=null?n:null,this.error_uri=(r=e.error_uri)!=null?r:null,this.state=e.userState,this.session_state=(i=e.session_state)!=null?i:null}},Bu=class extends Error{constructor(e){super(e),this.name="ErrorTimeout"}},GS=class{constructor(e){this._logger=new G("AccessTokenEvents"),this._expiringTimer=new wt("Access token expiring"),this._expiredTimer=new wt("Access token expired"),this._expiringNotificationTimeInSeconds=e.expiringNotificationTimeInSeconds}load(e){const t=this._logger.create("load");if(e.access_token&&e.expires_in!==void 0){const n=e.expires_in;if(t.debug("access token present, remaining duration:",n),n>0){let i=n-this._expiringNotificationTimeInSeconds;i<=0&&(i=1),t.debug("registering expiring timer, raising in",i,"seconds"),this._expiringTimer.init(i)}else t.debug("canceling existing expiring timer because we're past expiration."),this._expiringTimer.cancel();const r=n+1;t.debug("registering expired timer, raising in",r,"seconds"),this._expiredTimer.init(r)}else this._expiringTimer.cancel(),this._expiredTimer.cancel()}unload(){this._logger.debug("unload: canceling existing access token timers"),this._expiringTimer.cancel(),this._expiredTimer.cancel()}addAccessTokenExpiring(e){return this._expiringTimer.addHandler(e)}removeAccessTokenExpiring(e){this._expiringTimer.removeHandler(e)}addAccessTokenExpired(e){return this._expiredTimer.addHandler(e)}removeAccessTokenExpired(e){this._expiredTimer.removeHandler(e)}},YS=class{constructor(e,t,n,r,i){this._callback=e,this._client_id=t,this._intervalInSeconds=r,this._stopOnError=i,this._logger=new G("CheckSessionIFrame"),this._timer=null,this._session_state=null,this._message=s=>{s.origin===this._frame_origin&&s.source===this._frame.contentWindow&&(s.data==="error"?(this._logger.error("error message from check session op iframe"),this._stopOnError&&this.stop()):s.data==="changed"?(this._logger.debug("changed message from check session op iframe"),this.stop(),this._callback()):this._logger.debug(s.data+" message from check session op iframe"))};const o=new URL(n);this._frame_origin=o.origin,this._frame=window.document.createElement("iframe"),this._frame.style.visibility="hidden",this._frame.style.position="fixed",this._frame.style.left="-1000px",this._frame.style.top="0",this._frame.width="0",this._frame.height="0",this._frame.src=o.href}load(){return new Promise(e=>{this._frame.onload=()=>{e()},window.document.body.appendChild(this._frame),window.addEventListener("message",this._message,!1)})}start(e){if(this._session_state===e)return;this._logger.create("start"),this.stop(),this._session_state=e;const t=()=>{!this._frame.contentWindow||!this._session_state||this._frame.contentWindow.postMessage(this._client_id+" "+this._session_state,this._frame_origin)};t(),this._timer=setInterval(t,this._intervalInSeconds*1e3)}stop(){this._logger.create("stop"),this._session_state=null,this._timer&&(clearInterval(this._timer),this._timer=null)}},Mm=class{constructor(){this._logger=new G("InMemoryWebStorage"),this._data={}}clear(){this._logger.create("clear"),this._data={}}getItem(e){return this._logger.create(`getItem('${e}')`),this._data[e]}setItem(e,t){this._logger.create(`setItem('${e}')`),this._data[e]=t}removeItem(e){this._logger.create(`removeItem('${e}')`),delete this._data[e]}get length(){return Object.getOwnPropertyNames(this._data).length}key(e){return Object.getOwnPropertyNames(this._data)[e]}},Uu=class{constructor(e=[],t=null,n={}){this._jwtHandler=t,this._extraHeaders=n,this._logger=new G("JsonService"),this._contentTypes=[],this._contentTypes.push(...e,"application/json"),t&&this._contentTypes.push("application/jwt")}async fetchWithTimeout(e,t={}){const{timeoutInSeconds:n,...r}=t;if(!n)return await fetch(e,r);const i=new AbortController,o=setTimeout(()=>i.abort(),n*1e3);try{return await fetch(e,{...t,signal:i.signal})}catch(s){throw s instanceof DOMException&&s.name==="AbortError"?new Bu("Network timed out"):s}finally{clearTimeout(o)}}async getJson(e,{token:t,credentials:n}={}){const r=this._logger.create("getJson"),i={Accept:this._contentTypes.join(", ")};t&&(r.debug("token passed, setting Authorization header"),i.Authorization="Bearer "+t),this.appendExtraHeaders(i);let o;try{r.debug("url:",e),o=await this.fetchWithTimeout(e,{method:"GET",headers:i,credentials:n})}catch(c){throw r.error("Network Error"),c}r.debug("HTTP response received, status",o.status);const s=o.headers.get("Content-Type");if(s&&!this._contentTypes.find(c=>s.startsWith(c))&&r.throw(new Error(`Invalid response Content-Type: ${s??"undefined"}, from URL: ${e}`)),o.ok&&this._jwtHandler&&(s!=null&&s.startsWith("application/jwt")))return await this._jwtHandler(await o.text());let a;try{a=await o.json()}catch(c){throw r.error("Error parsing JSON response",c),o.ok?c:new Error(`${o.statusText} (${o.status})`)}if(!o.ok)throw r.error("Error from server:",a),a.error?new tr(a):new Error(`${o.statusText} (${o.status}): ${JSON.stringify(a)}`);return a}async postForm(e,{body:t,basicAuth:n,timeoutInSeconds:r,initCredentials:i}){const o=this._logger.create("postForm"),s={Accept:this._contentTypes.join(", "),"Content-Type":"application/x-www-form-urlencoded"};n!==void 0&&(s.Authorization="Basic "+n),this.appendExtraHeaders(s);let a;try{o.debug("url:",e),a=await this.fetchWithTimeout(e,{method:"POST",headers:s,body:t,timeoutInSeconds:r,credentials:i})}catch(f){throw o.error("Network error"),f}o.debug("HTTP response received, status",a.status);const c=a.headers.get("Content-Type");if(c&&!this._contentTypes.find(f=>c.startsWith(f)))throw new Error(`Invalid response Content-Type: ${c??"undefined"}, from URL: ${e}`);const u=await a.text();let d={};if(u)try{d=JSON.parse(u)}catch(f){throw o.error("Error parsing JSON response",f),a.ok?f:new Error(`${a.statusText} (${a.status})`)}if(!a.ok)throw o.error("Error from server:",d),d.error?new tr(d,t):new Error(`${a.statusText} (${a.status}): ${JSON.stringify(d)}`);return d}appendExtraHeaders(e){const t=this._logger.create("appendExtraHeaders"),n=Object.keys(this._extraHeaders),r=["authorization","accept","content-type"];n.length!==0&&n.forEach(i=>{if(r.includes(i.toLocaleLowerCase())){t.warn("Protected header could not be overridden",i,r);return}const o=typeof this._extraHeaders[i]=="function"?this._extraHeaders[i]():this._extraHeaders[i];o&&o!==""&&(e[i]=o)})}},XS=class{constructor(e){this._settings=e,this._logger=new G("MetadataService"),this._signingKeys=null,this._metadata=null,this._metadataUrl=this._settings.metadataUrl,this._jsonService=new Uu(["application/jwk-set+json"],null,this._settings.extraHeaders),this._settings.signingKeys&&(this._logger.debug("using signingKeys from settings"),this._signingKeys=this._settings.signingKeys),this._settings.metadata&&(this._logger.debug("using metadata from settings"),this._metadata=this._settings.metadata),this._settings.fetchRequestCredentials&&(this._logger.debug("using fetchRequestCredentials from settings"),this._fetchRequestCredentials=this._settings.fetchRequestCredentials)}resetSigningKeys(){this._signingKeys=null}async getMetadata(){const e=this._logger.create("getMetadata");if(this._metadata)return e.debug("using cached values"),this._metadata;if(!this._metadataUrl)throw e.throw(new Error("No authority or metadataUrl configured on settings")),null;e.debug("getting metadata from",this._metadataUrl);const t=await this._jsonService.getJson(this._metadataUrl,{credentials:this._fetchRequestCredentials});return e.debug("merging remote JSON with seed metadata"),this._metadata=Object.assign({},this._settings.metadataSeed,t),this._metadata}getIssuer(){return this._getMetadataProperty("issuer")}getAuthorizationEndpoint(){return this._getMetadataProperty("authorization_endpoint")}getUserInfoEndpoint(){return this._getMetadataProperty("userinfo_endpoint")}getTokenEndpoint(e=!0){return this._getMetadataProperty("token_endpoint",e)}getCheckSessionIframe(){return this._getMetadataProperty("check_session_iframe",!0)}getEndSessionEndpoint(){return this._getMetadataProperty("end_session_endpoint",!0)}getRevocationEndpoint(e=!0){return this._getMetadataProperty("revocation_endpoint",e)}getKeysEndpoint(e=!0){return this._getMetadataProperty("jwks_uri",e)}async _getMetadataProperty(e,t=!1){const n=this._logger.create(`_getMetadataProperty('${e}')`),r=await this.getMetadata();if(n.debug("resolved"),r[e]===void 0){if(t===!0){n.warn("Metadata does not contain optional property");return}n.throw(new Error("Metadata does not contain property "+e))}return r[e]}async getSigningKeys(){const e=this._logger.create("getSigningKeys");if(this._signingKeys)return e.debug("returning signingKeys from cache"),this._signingKeys;const t=await this.getKeysEndpoint(!1);e.debug("got jwks_uri",t);const n=await this._jsonService.getJson(t);if(e.debug("got key set",n),!Array.isArray(n.keys))throw e.throw(new Error("Missing keys on keyset")),null;return this._signingKeys=n.keys,this._signingKeys}},zm=class{constructor({prefix:e="oidc.",store:t=localStorage}={}){this._logger=new G("WebStorageStateStore"),this._store=t,this._prefix=e}async set(e,t){this._logger.create(`set('${e}')`),e=this._prefix+e,await this._store.setItem(e,t)}async get(e){return this._logger.create(`get('${e}')`),e=this._prefix+e,await this._store.getItem(e)}async remove(e){this._logger.create(`remove('${e}')`),e=this._prefix+e;const t=await this._store.getItem(e);return await this._store.removeItem(e),t}async getAllKeys(){this._logger.create("getAllKeys");const e=await this._store.length,t=[];for(let n=0;n{const r=this._logger.create("_getClaimsFromJwt");try{const i=Sc.decode(n);return r.debug("JWT decoding successful"),i}catch(i){throw r.error("Error parsing JWT response"),i}},this._jsonService=new Uu(void 0,this._getClaimsFromJwt,this._settings.extraHeaders)}async getClaims(e){const t=this._logger.create("getClaims");e||this._logger.throw(new Error("No token passed"));const n=await this._metadataService.getUserInfoEndpoint();t.debug("got userinfo url",n);const r=await this._jsonService.getJson(n,{token:e,credentials:this._settings.fetchRequestCredentials});return t.debug("got claims",r),r}},Um=class{constructor(e,t){this._settings=e,this._metadataService=t,this._logger=new G("TokenClient"),this._jsonService=new Uu(this._settings.revokeTokenAdditionalContentTypes,null,this._settings.extraHeaders)}async exchangeCode({grant_type:e="authorization_code",redirect_uri:t=this._settings.redirect_uri,client_id:n=this._settings.client_id,client_secret:r=this._settings.client_secret,...i}){const o=this._logger.create("exchangeCode");n||o.throw(new Error("A client_id is required")),t||o.throw(new Error("A redirect_uri is required")),i.code||o.throw(new Error("A code is required"));const s=new URLSearchParams({grant_type:e,redirect_uri:t});for(const[d,f]of Object.entries(i))f!=null&&s.set(d,f);let a;switch(this._settings.client_authentication){case"client_secret_basic":if(!r)throw o.throw(new Error("A client_secret is required")),null;a=$t.generateBasicAuth(n,r);break;case"client_secret_post":s.append("client_id",n),r&&s.append("client_secret",r);break}const c=await this._metadataService.getTokenEndpoint(!1);o.debug("got token endpoint");const u=await this._jsonService.postForm(c,{body:s,basicAuth:a,initCredentials:this._settings.fetchRequestCredentials});return o.debug("got response"),u}async exchangeCredentials({grant_type:e="password",client_id:t=this._settings.client_id,client_secret:n=this._settings.client_secret,scope:r=this._settings.scope,...i}){const o=this._logger.create("exchangeCredentials");t||o.throw(new Error("A client_id is required"));const s=new URLSearchParams({grant_type:e,scope:r});for(const[d,f]of Object.entries(i))f!=null&&s.set(d,f);let a;switch(this._settings.client_authentication){case"client_secret_basic":if(!n)throw o.throw(new Error("A client_secret is required")),null;a=$t.generateBasicAuth(t,n);break;case"client_secret_post":s.append("client_id",t),n&&s.append("client_secret",n);break}const c=await this._metadataService.getTokenEndpoint(!1);o.debug("got token endpoint");const u=await this._jsonService.postForm(c,{body:s,basicAuth:a,initCredentials:this._settings.fetchRequestCredentials});return o.debug("got response"),u}async exchangeRefreshToken({grant_type:e="refresh_token",client_id:t=this._settings.client_id,client_secret:n=this._settings.client_secret,timeoutInSeconds:r,...i}){const o=this._logger.create("exchangeRefreshToken");t||o.throw(new Error("A client_id is required")),i.refresh_token||o.throw(new Error("A refresh_token is required"));const s=new URLSearchParams({grant_type:e});for(const[d,f]of Object.entries(i))f!=null&&s.set(d,f);let a;switch(this._settings.client_authentication){case"client_secret_basic":if(!n)throw o.throw(new Error("A client_secret is required")),null;a=$t.generateBasicAuth(t,n);break;case"client_secret_post":s.append("client_id",t),n&&s.append("client_secret",n);break}const c=await this._metadataService.getTokenEndpoint(!1);o.debug("got token endpoint");const u=await this._jsonService.postForm(c,{body:s,basicAuth:a,timeoutInSeconds:r,initCredentials:this._settings.fetchRequestCredentials});return o.debug("got response"),u}async revoke(e){var t;const n=this._logger.create("revoke");e.token||n.throw(new Error("A token is required"));const r=await this._metadataService.getRevocationEndpoint(!1);n.debug(`got revocation endpoint, revoking ${(t=e.token_type_hint)!=null?t:"default token type"}`);const i=new URLSearchParams;for(const[o,s]of Object.entries(e))s!=null&&i.set(o,s);i.set("client_id",this._settings.client_id),this._settings.client_secret&&i.set("client_secret",this._settings.client_secret),await this._jsonService.postForm(r,{body:i}),n.debug("got response")}},sj=class{constructor(e,t,n){this._settings=e,this._metadataService=t,this._claimsService=n,this._logger=new G("ResponseValidator"),this._userInfoService=new oj(this._settings,this._metadataService),this._tokenClient=new Um(this._settings,this._metadataService)}async validateSigninResponse(e,t){const n=this._logger.create("validateSigninResponse");this._processSigninState(e,t),n.debug("state processed"),await this._processCode(e,t),n.debug("code processed"),e.isOpenId&&this._validateIdTokenAttributes(e),n.debug("tokens validated"),await this._processClaims(e,t==null?void 0:t.skipUserInfo,e.isOpenId),n.debug("claims processed")}async validateCredentialsResponse(e,t){const n=this._logger.create("validateCredentialsResponse");e.isOpenId&&this._validateIdTokenAttributes(e),n.debug("tokens validated"),await this._processClaims(e,t,e.isOpenId),n.debug("claims processed")}async validateRefreshResponse(e,t){var n,r;const i=this._logger.create("validateRefreshResponse");e.userState=t.data,(n=e.session_state)!=null||(e.session_state=t.session_state),(r=e.scope)!=null||(e.scope=t.scope),e.isOpenId&&e.id_token&&(this._validateIdTokenAttributes(e,t.id_token),i.debug("ID Token validated")),e.id_token||(e.id_token=t.id_token,e.profile=t.profile);const o=e.isOpenId&&!!e.id_token;await this._processClaims(e,!1,o),i.debug("claims processed")}validateSignoutResponse(e,t){const n=this._logger.create("validateSignoutResponse");if(t.id!==e.state&&n.throw(new Error("State does not match")),n.debug("state validated"),e.userState=t.data,e.error)throw n.warn("Response was error",e.error),new tr(e)}_processSigninState(e,t){var n;const r=this._logger.create("_processSigninState");if(t.id!==e.state&&r.throw(new Error("State does not match")),t.client_id||r.throw(new Error("No client_id on state")),t.authority||r.throw(new Error("No authority on state")),this._settings.authority!==t.authority&&r.throw(new Error("authority mismatch on settings vs. signin state")),this._settings.client_id&&this._settings.client_id!==t.client_id&&r.throw(new Error("client_id mismatch on settings vs. signin state")),r.debug("state validated"),e.userState=t.data,(n=e.scope)!=null||(e.scope=t.scope),e.error)throw r.warn("Response was error",e.error),new tr(e);t.code_verifier&&!e.code&&r.throw(new Error("Expected code in response"))}async _processClaims(e,t=!1,n=!0){const r=this._logger.create("_processClaims");if(e.profile=this._claimsService.filterProtocolClaims(e.profile),t||!this._settings.loadUserInfo||!e.access_token){r.debug("not loading user info");return}r.debug("loading user info");const i=await this._userInfoService.getClaims(e.access_token);r.debug("user info claims received from user info endpoint"),n&&i.sub!==e.profile.sub&&r.throw(new Error("subject from UserInfo response does not match subject in ID Token")),e.profile=this._claimsService.mergeClaims(e.profile,this._claimsService.filterProtocolClaims(i)),r.debug("user info claims received, updated profile:",e.profile)}async _processCode(e,t){const n=this._logger.create("_processCode");if(e.code){n.debug("Validating code");const r=await this._tokenClient.exchangeCode({client_id:t.client_id,client_secret:t.client_secret,code:e.code,redirect_uri:t.redirect_uri,code_verifier:t.code_verifier,...t.extraTokenParams});Object.assign(e,r)}else n.debug("No code to process")}_validateIdTokenAttributes(e,t){var n;const r=this._logger.create("_validateIdTokenAttributes");r.debug("decoding ID Token JWT");const i=Sc.decode((n=e.id_token)!=null?n:"");if(i.sub||r.throw(new Error("ID Token is missing a subject claim")),t){const o=Sc.decode(t);o.sub!==i.sub&&r.throw(new Error("sub in id_token does not match current sub")),o.auth_time&&o.auth_time!==i.auth_time&&r.throw(new Error("auth_time in id_token does not match original auth_time")),o.azp&&o.azp!==i.azp&&r.throw(new Error("azp in id_token does not match original azp")),!o.azp&&i.azp&&r.throw(new Error("azp not in id_token, but present in original id_token"))}e.profile=i}},Hr=class{constructor(e){this.id=e.id||$t.generateUUIDv4(),this.data=e.data,e.created&&e.created>0?this.created=e.created:this.created=wt.getEpochTime(),this.request_type=e.request_type}toStorageString(){return new G("State").create("toStorageString"),JSON.stringify({id:this.id,data:this.data,created:this.created,request_type:this.request_type})}static fromStorageString(e){return G.createStatic("State","fromStorageString"),new Hr(JSON.parse(e))}static async clearStaleState(e,t){const n=G.createStatic("State","clearStaleState"),r=wt.getEpochTime()-t,i=await e.getAllKeys();n.debug("got keys",i);for(let o=0;ow.searchParams.append("resource",p));for(const[m,p]of Object.entries({response_mode:a,...C,...h}))p!=null&&w.searchParams.append(m,p.toString());this.url=w.href}},lj="openid",Xo=class{constructor(e){this.access_token="",this.token_type="",this.profile={},this.state=e.get("state"),this.session_state=e.get("session_state"),this.error=e.get("error"),this.error_description=e.get("error_description"),this.error_uri=e.get("error_uri"),this.code=e.get("code")}get expires_in(){if(this.expires_at!==void 0)return this.expires_at-wt.getEpochTime()}set expires_in(e){typeof e=="string"&&(e=Number(e)),e!==void 0&&e>=0&&(this.expires_at=Math.floor(e)+wt.getEpochTime())}get isOpenId(){var e;return((e=this.scope)==null?void 0:e.split(" ").includes(lj))||!!this.id_token}},cj=class{constructor({url:e,state_data:t,id_token_hint:n,post_logout_redirect_uri:r,extraQueryParams:i,request_type:o}){if(this._logger=new G("SignoutRequest"),!e)throw this._logger.error("ctor: No url passed"),new Error("url");const s=new URL(e);n&&s.searchParams.append("id_token_hint",n),r&&(s.searchParams.append("post_logout_redirect_uri",r),t&&(this.state=new Hr({data:t,request_type:o}),s.searchParams.append("state",this.state.id)));for(const[a,c]of Object.entries({...i}))c!=null&&s.searchParams.append(a,c.toString());this.url=s.href}},uj=class{constructor(e){this.state=e.get("state"),this.error=e.get("error"),this.error_description=e.get("error_description"),this.error_uri=e.get("error_uri")}},dj=["nbf","jti","auth_time","nonce","acr","amr","azp","at_hash"],fj=["sub","iss","aud","exp","iat"],hj=class{constructor(e){this._settings=e,this._logger=new G("ClaimsService")}filterProtocolClaims(e){const t={...e};if(this._settings.filterProtocolClaims){let n;Array.isArray(this._settings.filterProtocolClaims)?n=this._settings.filterProtocolClaims:n=dj;for(const r of n)fj.includes(r)||delete t[r]}return t}mergeClaims(e,t){const n={...e};for(const[r,i]of Object.entries(t))for(const o of Array.isArray(i)?i:[i]){const s=n[r];s?Array.isArray(s)?s.includes(o)||s.push(o):n[r]!==o&&(typeof o=="object"&&this._settings.mergeClaims?n[r]=this.mergeClaims(s,o):n[r]=[s,o]):n[r]=o}return n}},pj=class{constructor(e){this._logger=new G("OidcClient"),this.settings=new Bm(e),this.metadataService=new XS(this.settings),this._claimsService=new hj(this.settings),this._validator=new sj(this.settings,this.metadataService,this._claimsService),this._tokenClient=new Um(this.settings,this.metadataService)}async createSigninRequest({state:e,request:t,request_uri:n,request_type:r,id_token_hint:i,login_hint:o,skipUserInfo:s,nonce:a,response_type:c=this.settings.response_type,scope:u=this.settings.scope,redirect_uri:d=this.settings.redirect_uri,prompt:f=this.settings.prompt,display:g=this.settings.display,max_age:h=this.settings.max_age,ui_locales:y=this.settings.ui_locales,acr_values:_=this.settings.acr_values,resource:C=this.settings.resource,response_mode:w=this.settings.response_mode,extraQueryParams:m=this.settings.extraQueryParams,extraTokenParams:p=this.settings.extraTokenParams}){const x=this._logger.create("createSigninRequest");if(c!=="code")throw new Error("Only the Authorization Code flow (with PKCE) is supported");const j=await this.metadataService.getAuthorizationEndpoint();x.debug("Received authorization endpoint",j);const b=new aj({url:j,authority:this.settings.authority,client_id:this.settings.client_id,redirect_uri:d,response_type:c,scope:u,state_data:e,prompt:f,display:g,max_age:h,ui_locales:y,id_token_hint:i,login_hint:o,acr_values:_,resource:C,request:t,request_uri:n,extraQueryParams:m,extraTokenParams:p,request_type:r,response_mode:w,client_secret:this.settings.client_secret,skipUserInfo:s,nonce:a,disablePKCE:this.settings.disablePKCE});await this.clearStaleState();const k=b.state;return await this.settings.stateStore.set(k.id,k.toStorageString()),b}async readSigninResponseState(e,t=!1){const n=this._logger.create("readSigninResponseState"),r=new Xo(jc.readParams(e,this.settings.response_mode));if(!r.state)throw n.throw(new Error("No state in response")),null;const i=await this.settings.stateStore[t?"remove":"get"](r.state);if(!i)throw n.throw(new Error("No matching state found in storage")),null;return{state:$u.fromStorageString(i),response:r}}async processSigninResponse(e){const t=this._logger.create("processSigninResponse"),{state:n,response:r}=await this.readSigninResponseState(e,!0);return t.debug("received state from storage; validating response"),await this._validator.validateSigninResponse(r,n),r}async processResourceOwnerPasswordCredentials({username:e,password:t,skipUserInfo:n=!1,extraTokenParams:r={}}){const i=await this._tokenClient.exchangeCredentials({username:e,password:t,...r}),o=new Xo(new URLSearchParams);return Object.assign(o,i),await this._validator.validateCredentialsResponse(o,n),o}async useRefreshToken({state:e,timeoutInSeconds:t}){var n;const r=this._logger.create("useRefreshToken");let i;if(this.settings.refreshTokenAllowedScope===void 0)i=e.scope;else{const a=this.settings.refreshTokenAllowedScope.split(" ");i=(((n=e.scope)==null?void 0:n.split(" "))||[]).filter(u=>a.includes(u)).join(" ")}const o=await this._tokenClient.exchangeRefreshToken({refresh_token:e.refresh_token,scope:i,timeoutInSeconds:t}),s=new Xo(new URLSearchParams);return Object.assign(s,o),r.debug("validating response",s),await this._validator.validateRefreshResponse(s,{...e,scope:i}),s}async createSignoutRequest({state:e,id_token_hint:t,request_type:n,post_logout_redirect_uri:r=this.settings.post_logout_redirect_uri,extraQueryParams:i=this.settings.extraQueryParams}={}){const o=this._logger.create("createSignoutRequest"),s=await this.metadataService.getEndSessionEndpoint();if(!s)throw o.throw(new Error("No end session endpoint")),null;o.debug("Received end session endpoint",s);const a=new cj({url:s,id_token_hint:t,post_logout_redirect_uri:r,state_data:e,extraQueryParams:i,request_type:n});await this.clearStaleState();const c=a.state;return c&&(o.debug("Signout request has state to persist"),await this.settings.stateStore.set(c.id,c.toStorageString())),a}async readSignoutResponseState(e,t=!1){const n=this._logger.create("readSignoutResponseState"),r=new uj(jc.readParams(e,this.settings.response_mode));if(!r.state){if(n.debug("No state in response"),r.error)throw n.warn("Response was error:",r.error),new tr(r);return{state:void 0,response:r}}const i=await this.settings.stateStore[t?"remove":"get"](r.state);if(!i)throw n.throw(new Error("No matching state found in storage")),null;return{state:Hr.fromStorageString(i),response:r}}async processSignoutResponse(e){const t=this._logger.create("processSignoutResponse"),{state:n,response:r}=await this.readSignoutResponseState(e,!0);return n?(t.debug("Received state from storage; validating response"),this._validator.validateSignoutResponse(r,n)):t.debug("No state from storage; skipping response validation"),r}clearStaleState(){return this._logger.create("clearStaleState"),Hr.clearStaleState(this.settings.stateStore,this.settings.staleStateAgeInSeconds)}async revokeToken(e,t){return this._logger.create("revokeToken"),await this._tokenClient.revoke({token:e,token_type_hint:t})}},gj=class{constructor(e){this._userManager=e,this._logger=new G("SessionMonitor"),this._start=async t=>{const n=t.session_state;if(!n)return;const r=this._logger.create("_start");if(t.profile?(this._sub=t.profile.sub,this._sid=t.profile.sid,r.debug("session_state",n,", sub",this._sub)):(this._sub=void 0,this._sid=void 0,r.debug("session_state",n,", anonymous user")),this._checkSessionIFrame){this._checkSessionIFrame.start(n);return}try{const i=await this._userManager.metadataService.getCheckSessionIframe();if(i){r.debug("initializing check session iframe");const o=this._userManager.settings.client_id,s=this._userManager.settings.checkSessionIntervalInSeconds,a=this._userManager.settings.stopCheckSessionOnError,c=new YS(this._callback,o,i,s,a);await c.load(),this._checkSessionIFrame=c,c.start(n)}else r.warn("no check session iframe found in the metadata")}catch(i){r.error("Error from getCheckSessionIframe:",i instanceof Error?i.message:i)}},this._stop=()=>{const t=this._logger.create("_stop");if(this._sub=void 0,this._sid=void 0,this._checkSessionIFrame&&this._checkSessionIFrame.stop(),this._userManager.settings.monitorAnonymousSession){const n=setInterval(async()=>{clearInterval(n);try{const r=await this._userManager.querySessionStatus();if(r){const i={session_state:r.session_state,profile:r.sub&&r.sid?{sub:r.sub,sid:r.sid}:null};this._start(i)}}catch(r){t.error("error from querySessionStatus",r instanceof Error?r.message:r)}},1e3)}},this._callback=async()=>{const t=this._logger.create("_callback");try{const n=await this._userManager.querySessionStatus();let r=!0;n&&this._checkSessionIFrame?n.sub===this._sub?(r=!1,this._checkSessionIFrame.start(n.session_state),n.sid===this._sid?t.debug("same sub still logged in at OP, restarting check session iframe; session_state",n.session_state):(t.debug("same sub still logged in at OP, session state has changed, restarting check session iframe; session_state",n.session_state),this._userManager.events._raiseUserSessionChanged())):t.debug("different subject signed into OP",n.sub):t.debug("subject no longer signed into OP"),r?this._sub?this._userManager.events._raiseUserSignedOut():this._userManager.events._raiseUserSignedIn():t.debug("no change in session detected, no event to raise")}catch(n){this._sub&&(t.debug("Error calling queryCurrentSigninSession; raising signed out event",n),this._userManager.events._raiseUserSignedOut())}},e||this._logger.throw(new Error("No user manager passed")),this._userManager.events.addUserLoaded(this._start),this._userManager.events.addUserUnloaded(this._stop),this._init().catch(t=>{this._logger.error(t)})}async _init(){this._logger.create("_init");const e=await this._userManager.getUser();if(e)this._start(e);else if(this._userManager.settings.monitorAnonymousSession){const t=await this._userManager.querySessionStatus();if(t){const n={session_state:t.session_state,profile:t.sub&&t.sid?{sub:t.sub,sid:t.sid}:null};this._start(n)}}}},Zo=class{constructor(t){var n;this.id_token=t.id_token,this.session_state=(n=t.session_state)!=null?n:null,this.access_token=t.access_token,this.refresh_token=t.refresh_token,this.token_type=t.token_type,this.scope=t.scope,this.profile=t.profile,this.expires_at=t.expires_at,this.state=t.userState}get expires_in(){if(this.expires_at!==void 0)return this.expires_at-wt.getEpochTime()}set expires_in(t){t!==void 0&&(this.expires_at=Math.floor(t)+wt.getEpochTime())}get expired(){const t=this.expires_in;if(t!==void 0)return t<=0}get scopes(){var t,n;return(n=(t=this.scope)==null?void 0:t.split(" "))!=null?n:[]}toStorageString(){return new G("User").create("toStorageString"),JSON.stringify({id_token:this.id_token,session_state:this.session_state,access_token:this.access_token,refresh_token:this.refresh_token,token_type:this.token_type,scope:this.scope,profile:this.profile,expires_at:this.expires_at})}static fromStorageString(t){return G.createStatic("User","fromStorageString"),new Zo(JSON.parse(t))}},Gf="oidc-client",$m=class{constructor(){this._abort=new fn("Window navigation aborted"),this._disposeHandlers=new Set,this._window=null}async navigate(e){const t=this._logger.create("navigate");if(!this._window)throw new Error("Attempted to navigate on a disposed window");t.debug("setting URL in window"),this._window.location.replace(e.url);const{url:n,keepOpen:r}=await new Promise((i,o)=>{const s=a=>{var c;const u=a.data,d=(c=e.scriptOrigin)!=null?c:window.location.origin;if(!(a.origin!==d||(u==null?void 0:u.source)!==Gf)){try{const f=jc.readParams(u.url,e.response_mode).get("state");if(f||t.warn("no state found in response url"),a.source!==this._window&&f!==e.state)return}catch{this._dispose(),o(new Error("Invalid response from window"))}i(u)}};window.addEventListener("message",s,!1),this._disposeHandlers.add(()=>window.removeEventListener("message",s,!1)),this._disposeHandlers.add(this._abort.addHandler(a=>{this._dispose(),o(a)}))});return t.debug("got response from window"),this._dispose(),r||this.close(),{url:n}}_dispose(){this._logger.create("_dispose");for(const e of this._disposeHandlers)e();this._disposeHandlers.clear()}static _notifyParent(e,t,n=!1,r=window.location.origin){e.postMessage({source:Gf,url:t,keepOpen:n},r)}},Dm={location:!1,toolbar:!1,height:640},Hm="_blank",mj=60,vj=2,Wm=10,yj=class extends Bm{constructor(e){const{popup_redirect_uri:t=e.redirect_uri,popup_post_logout_redirect_uri:n=e.post_logout_redirect_uri,popupWindowFeatures:r=Dm,popupWindowTarget:i=Hm,redirectMethod:o="assign",redirectTarget:s="self",iframeNotifyParentOrigin:a=e.iframeNotifyParentOrigin,iframeScriptOrigin:c=e.iframeScriptOrigin,silent_redirect_uri:u=e.redirect_uri,silentRequestTimeoutInSeconds:d=Wm,automaticSilentRenew:f=!0,validateSubOnSilentRenew:g=!0,includeIdTokenInSilentRenew:h=!1,monitorSession:y=!1,monitorAnonymousSession:_=!1,checkSessionIntervalInSeconds:C=vj,query_status_response_type:w="code",stopCheckSessionOnError:m=!0,revokeTokenTypes:p=["access_token","refresh_token"],revokeTokensOnSignout:x=!1,includeIdTokenInSilentSignout:j=!1,accessTokenExpiringNotificationTimeInSeconds:b=mj,userStore:k}=e;if(super(e),this.popup_redirect_uri=t,this.popup_post_logout_redirect_uri=n,this.popupWindowFeatures=r,this.popupWindowTarget=i,this.redirectMethod=o,this.redirectTarget=s,this.iframeNotifyParentOrigin=a,this.iframeScriptOrigin=c,this.silent_redirect_uri=u,this.silentRequestTimeoutInSeconds=d,this.automaticSilentRenew=f,this.validateSubOnSilentRenew=g,this.includeIdTokenInSilentRenew=h,this.monitorSession=y,this.monitorAnonymousSession=_,this.checkSessionIntervalInSeconds=C,this.stopCheckSessionOnError=m,this.query_status_response_type=w,this.revokeTokenTypes=p,this.revokeTokensOnSignout=x,this.includeIdTokenInSilentSignout=j,this.accessTokenExpiringNotificationTimeInSeconds=b,k)this.userStore=k;else{const O=typeof window<"u"?window.sessionStorage:new Mm;this.userStore=new zm({store:O})}}},bc=class extends $m{constructor({silentRequestTimeoutInSeconds:e=Wm}){super(),this._logger=new G("IFrameWindow"),this._timeoutInSeconds=e,this._frame=bc.createHiddenIframe(),this._window=this._frame.contentWindow}static createHiddenIframe(){const e=window.document.createElement("iframe");return e.style.visibility="hidden",e.style.position="fixed",e.style.left="-1000px",e.style.top="0",e.width="0",e.height="0",e.setAttribute("sandbox","allow-scripts allow-same-origin allow-forms"),window.document.body.appendChild(e),e}async navigate(e){this._logger.debug("navigate: Using timeout of:",this._timeoutInSeconds);const t=setTimeout(()=>this._abort.raise(new Bu("IFrame timed out without a response")),this._timeoutInSeconds*1e3);return this._disposeHandlers.add(()=>clearTimeout(t)),await super.navigate(e)}close(){var e;this._frame&&(this._frame.parentNode&&(this._frame.addEventListener("load",t=>{var n;const r=t.target;(n=r.parentNode)==null||n.removeChild(r),this._abort.raise(new Error("IFrame removed from DOM"))},!0),(e=this._frame.contentWindow)==null||e.location.replace("about:blank")),this._frame=null),this._window=null}static notifyParent(e,t){return super._notifyParent(window.parent,e,!1,t)}},xj=class{constructor(e){this._settings=e,this._logger=new G("IFrameNavigator")}async prepare({silentRequestTimeoutInSeconds:e=this._settings.silentRequestTimeoutInSeconds}){return new bc({silentRequestTimeoutInSeconds:e})}async callback(e){this._logger.create("callback"),bc.notifyParent(e,this._settings.iframeNotifyParentOrigin)}},wj=500,Yf=class extends $m{constructor({popupWindowTarget:e=Hm,popupWindowFeatures:t={}}){super(),this._logger=new G("PopupWindow");const n=Jf.center({...Dm,...t});this._window=window.open(void 0,e,Jf.serialize(n))}async navigate(e){var t;(t=this._window)==null||t.focus();const n=setInterval(()=>{(!this._window||this._window.closed)&&this._abort.raise(new Error("Popup closed by user"))},wj);return this._disposeHandlers.add(()=>clearInterval(n)),await super.navigate(e)}close(){this._window&&(this._window.closed||(this._window.close(),this._abort.raise(new Error("Popup closed")))),this._window=null}static notifyOpener(e,t){if(!window.opener)throw new Error("No window.opener. Can't complete notification.");return super._notifyParent(window.opener,e,t)}},_j=class{constructor(e){this._settings=e,this._logger=new G("PopupNavigator")}async prepare({popupWindowFeatures:e=this._settings.popupWindowFeatures,popupWindowTarget:t=this._settings.popupWindowTarget}){return new Yf({popupWindowFeatures:e,popupWindowTarget:t})}async callback(e,t=!1){this._logger.create("callback"),Yf.notifyOpener(e,t)}},Sj=class{constructor(e){this._settings=e,this._logger=new G("RedirectNavigator")}async prepare({redirectMethod:e=this._settings.redirectMethod,redirectTarget:t=this._settings.redirectTarget}){var n;this._logger.create("prepare");let r=window.self;t==="top"&&(r=(n=window.top)!=null?n:window.self);const i=r.location[e].bind(r.location);let o;return{navigate:async s=>{this._logger.create("navigate");const a=new Promise((c,u)=>{o=u});return i(s.url),await a},close:()=>{this._logger.create("close"),o==null||o(new Error("Redirect aborted")),r.stop()}}}},jj=class extends GS{constructor(e){super({expiringNotificationTimeInSeconds:e.accessTokenExpiringNotificationTimeInSeconds}),this._logger=new G("UserManagerEvents"),this._userLoaded=new fn("User loaded"),this._userUnloaded=new fn("User unloaded"),this._silentRenewError=new fn("Silent renew error"),this._userSignedIn=new fn("User signed in"),this._userSignedOut=new fn("User signed out"),this._userSessionChanged=new fn("User session changed")}load(e,t=!0){super.load(e),t&&this._userLoaded.raise(e)}unload(){super.unload(),this._userUnloaded.raise()}addUserLoaded(e){return this._userLoaded.addHandler(e)}removeUserLoaded(e){return this._userLoaded.removeHandler(e)}addUserUnloaded(e){return this._userUnloaded.addHandler(e)}removeUserUnloaded(e){return this._userUnloaded.removeHandler(e)}addSilentRenewError(e){return this._silentRenewError.addHandler(e)}removeSilentRenewError(e){return this._silentRenewError.removeHandler(e)}_raiseSilentRenewError(e){this._silentRenewError.raise(e)}addUserSignedIn(e){return this._userSignedIn.addHandler(e)}removeUserSignedIn(e){this._userSignedIn.removeHandler(e)}_raiseUserSignedIn(){this._userSignedIn.raise()}addUserSignedOut(e){return this._userSignedOut.addHandler(e)}removeUserSignedOut(e){this._userSignedOut.removeHandler(e)}_raiseUserSignedOut(){this._userSignedOut.raise()}addUserSessionChanged(e){return this._userSessionChanged.addHandler(e)}removeUserSessionChanged(e){this._userSessionChanged.removeHandler(e)}_raiseUserSessionChanged(){this._userSessionChanged.raise()}},bj=class{constructor(e){this._userManager=e,this._logger=new G("SilentRenewService"),this._isStarted=!1,this._retryTimer=new wt("Retry Silent Renew"),this._tokenExpiring=async()=>{const t=this._logger.create("_tokenExpiring");try{await this._userManager.signinSilent(),t.debug("silent token renewal successful")}catch(n){if(n instanceof Bu){t.warn("ErrorTimeout from signinSilent:",n,"retry in 5s"),this._retryTimer.init(5);return}t.error("Error from signinSilent:",n),this._userManager.events._raiseSilentRenewError(n)}}}async start(){const e=this._logger.create("start");if(!this._isStarted){this._isStarted=!0,this._userManager.events.addAccessTokenExpiring(this._tokenExpiring),this._retryTimer.addHandler(this._tokenExpiring);try{await this._userManager.getUser()}catch(t){e.error("getUser error",t)}}}stop(){this._isStarted&&(this._retryTimer.cancel(),this._retryTimer.removeHandler(this._tokenExpiring),this._userManager.events.removeAccessTokenExpiring(this._tokenExpiring),this._isStarted=!1)}},kj=class{constructor(e){this.refresh_token=e.refresh_token,this.id_token=e.id_token,this.session_state=e.session_state,this.scope=e.scope,this.profile=e.profile,this.data=e.state}},Ej=class{constructor(e){this._logger=new G("UserManager"),this.settings=new yj(e),this._client=new pj(e),this._redirectNavigator=new Sj(this.settings),this._popupNavigator=new _j(this.settings),this._iframeNavigator=new xj(this.settings),this._events=new jj(this.settings),this._silentRenewService=new bj(this),this.settings.automaticSilentRenew&&this.startSilentRenew(),this._sessionMonitor=null,this.settings.monitorSession&&(this._sessionMonitor=new gj(this))}get events(){return this._events}get metadataService(){return this._client.metadataService}async getUser(){const e=this._logger.create("getUser"),t=await this._loadUser();return t?(e.info("user loaded"),this._events.load(t,!1),t):(e.info("user not found in storage"),null)}async removeUser(){const e=this._logger.create("removeUser");await this.storeUser(null),e.info("user removed from storage"),this._events.unload()}async signinRedirect(e={}){this._logger.create("signinRedirect");const{redirectMethod:t,...n}=e,r=await this._redirectNavigator.prepare({redirectMethod:t});await this._signinStart({request_type:"si:r",...n},r)}async signinRedirectCallback(e=window.location.href){const t=this._logger.create("signinRedirectCallback"),n=await this._signinEnd(e);return n.profile&&n.profile.sub?t.info("success, signed in subject",n.profile.sub):t.info("no subject"),n}async signinResourceOwnerCredentials({username:e,password:t,skipUserInfo:n=!1}){const r=this._logger.create("signinResourceOwnerCredential"),i=await this._client.processResourceOwnerPasswordCredentials({username:e,password:t,skipUserInfo:n,extraTokenParams:this.settings.extraTokenParams});r.debug("got signin response");const o=await this._buildUser(i);return o.profile&&o.profile.sub?r.info("success, signed in subject",o.profile.sub):r.info("no subject"),o}async signinPopup(e={}){const t=this._logger.create("signinPopup"),{popupWindowFeatures:n,popupWindowTarget:r,...i}=e,o=this.settings.popup_redirect_uri;o||t.throw(new Error("No popup_redirect_uri configured"));const s=await this._popupNavigator.prepare({popupWindowFeatures:n,popupWindowTarget:r}),a=await this._signin({request_type:"si:p",redirect_uri:o,display:"popup",...i},s);return a&&(a.profile&&a.profile.sub?t.info("success, signed in subject",a.profile.sub):t.info("no subject")),a}async signinPopupCallback(e=window.location.href,t=!1){const n=this._logger.create("signinPopupCallback");await this._popupNavigator.callback(e,t),n.info("success")}async signinSilent(e={}){var t;const n=this._logger.create("signinSilent"),{silentRequestTimeoutInSeconds:r,...i}=e;let o=await this._loadUser();if(o!=null&&o.refresh_token){n.debug("using refresh token");const u=new kj(o);return await this._useRefreshToken(u)}const s=this.settings.silent_redirect_uri;s||n.throw(new Error("No silent_redirect_uri configured"));let a;o&&this.settings.validateSubOnSilentRenew&&(n.debug("subject prior to silent renew:",o.profile.sub),a=o.profile.sub);const c=await this._iframeNavigator.prepare({silentRequestTimeoutInSeconds:r});return o=await this._signin({request_type:"si:s",redirect_uri:s,prompt:"none",id_token_hint:this.settings.includeIdTokenInSilentRenew?o==null?void 0:o.id_token:void 0,...i},c,a),o&&((t=o.profile)!=null&&t.sub?n.info("success, signed in subject",o.profile.sub):n.info("no subject")),o}async _useRefreshToken(e){const t=await this._client.useRefreshToken({state:e,timeoutInSeconds:this.settings.silentRequestTimeoutInSeconds}),n=new Zo({...e,...t});return await this.storeUser(n),this._events.load(n),n}async signinSilentCallback(e=window.location.href){const t=this._logger.create("signinSilentCallback");await this._iframeNavigator.callback(e),t.info("success")}async signinCallback(e=window.location.href){const{state:t}=await this._client.readSigninResponseState(e);switch(t.request_type){case"si:r":return await this.signinRedirectCallback(e);case"si:p":return await this.signinPopupCallback(e);case"si:s":return await this.signinSilentCallback(e);default:throw new Error("invalid response_type in state")}}async signoutCallback(e=window.location.href,t=!1){const{state:n}=await this._client.readSignoutResponseState(e);if(n)switch(n.request_type){case"so:r":await this.signoutRedirectCallback(e);break;case"so:p":await this.signoutPopupCallback(e,t);break;case"so:s":await this.signoutSilentCallback(e);break;default:throw new Error("invalid response_type in state")}}async querySessionStatus(e={}){const t=this._logger.create("querySessionStatus"),{silentRequestTimeoutInSeconds:n,...r}=e,i=this.settings.silent_redirect_uri;i||t.throw(new Error("No silent_redirect_uri configured"));const o=await this._loadUser(),s=await this._iframeNavigator.prepare({silentRequestTimeoutInSeconds:n}),a=await this._signinStart({request_type:"si:s",redirect_uri:i,prompt:"none",id_token_hint:this.settings.includeIdTokenInSilentRenew?o==null?void 0:o.id_token:void 0,response_type:this.settings.query_status_response_type,scope:"openid",skipUserInfo:!0,...r},s);try{const c=await this._client.processSigninResponse(a.url);return t.debug("got signin response"),c.session_state&&c.profile.sub?(t.info("success for subject",c.profile.sub),{session_state:c.session_state,sub:c.profile.sub,sid:c.profile.sid}):(t.info("success, user not authenticated"),null)}catch(c){if(this.settings.monitorAnonymousSession&&c instanceof tr)switch(c.error){case"login_required":case"consent_required":case"interaction_required":case"account_selection_required":return t.info("success for anonymous user"),{session_state:c.session_state}}throw c}}async _signin(e,t,n){const r=await this._signinStart(e,t);return await this._signinEnd(r.url,n)}async _signinStart(e,t){const n=this._logger.create("_signinStart");try{const r=await this._client.createSigninRequest(e);return n.debug("got signin request"),await t.navigate({url:r.url,state:r.state.id,response_mode:r.state.response_mode,scriptOrigin:this.settings.iframeScriptOrigin})}catch(r){throw n.debug("error after preparing navigator, closing navigator window"),t.close(),r}}async _signinEnd(e,t){const n=this._logger.create("_signinEnd"),r=await this._client.processSigninResponse(e);return n.debug("got signin response"),await this._buildUser(r,t)}async _buildUser(e,t){const n=this._logger.create("_buildUser"),r=new Zo(e);if(t){if(t!==r.profile.sub)throw n.debug("current user does not match user returned from signin. sub from signin:",r.profile.sub),new tr({...e,error:"login_required"});n.debug("current user matches user returned from signin")}return await this.storeUser(r),n.debug("user stored"),this._events.load(r),r}async signoutRedirect(e={}){const t=this._logger.create("signoutRedirect"),{redirectMethod:n,...r}=e,i=await this._redirectNavigator.prepare({redirectMethod:n});await this._signoutStart({request_type:"so:r",post_logout_redirect_uri:this.settings.post_logout_redirect_uri,...r},i),t.info("success")}async signoutRedirectCallback(e=window.location.href){const t=this._logger.create("signoutRedirectCallback"),n=await this._signoutEnd(e);return t.info("success"),n}async signoutPopup(e={}){const t=this._logger.create("signoutPopup"),{popupWindowFeatures:n,popupWindowTarget:r,...i}=e,o=this.settings.popup_post_logout_redirect_uri,s=await this._popupNavigator.prepare({popupWindowFeatures:n,popupWindowTarget:r});await this._signout({request_type:"so:p",post_logout_redirect_uri:o,state:o==null?void 0:{},...i},s),t.info("success")}async signoutPopupCallback(e=window.location.href,t=!1){const n=this._logger.create("signoutPopupCallback");await this._popupNavigator.callback(e,t),n.info("success")}async _signout(e,t){const n=await this._signoutStart(e,t);return await this._signoutEnd(n.url)}async _signoutStart(e={},t){var n;const r=this._logger.create("_signoutStart");try{const i=await this._loadUser();r.debug("loaded current user from storage"),this.settings.revokeTokensOnSignout&&await this._revokeInternal(i);const o=e.id_token_hint||i&&i.id_token;o&&(r.debug("setting id_token_hint in signout request"),e.id_token_hint=o),await this.removeUser(),r.debug("user removed, creating signout request");const s=await this._client.createSignoutRequest(e);return r.debug("got signout request"),await t.navigate({url:s.url,state:(n=s.state)==null?void 0:n.id})}catch(i){throw r.debug("error after preparing navigator, closing navigator window"),t.close(),i}}async _signoutEnd(e){const t=this._logger.create("_signoutEnd"),n=await this._client.processSignoutResponse(e);return t.debug("got signout response"),n}async signoutSilent(e={}){var t;const n=this._logger.create("signoutSilent"),{silentRequestTimeoutInSeconds:r,...i}=e,o=this.settings.includeIdTokenInSilentSignout?(t=await this._loadUser())==null?void 0:t.id_token:void 0,s=this.settings.popup_post_logout_redirect_uri,a=await this._iframeNavigator.prepare({silentRequestTimeoutInSeconds:r});await this._signout({request_type:"so:s",post_logout_redirect_uri:s,id_token_hint:o,...i},a),n.info("success")}async signoutSilentCallback(e=window.location.href){const t=this._logger.create("signoutSilentCallback");await this._iframeNavigator.callback(e),t.info("success")}async revokeTokens(e){const t=await this._loadUser();await this._revokeInternal(t,e)}async _revokeInternal(e,t=this.settings.revokeTokenTypes){const n=this._logger.create("_revokeInternal");if(!e)return;const r=t.filter(i=>typeof e[i]=="string");if(!r.length){n.debug("no need to revoke due to no token(s)");return}for(const i of r)await this._client.revokeToken(e[i],i),n.info(`${i} revoked successfully`),i!=="access_token"&&(e[i]=null);await this.storeUser(e),n.debug("user stored"),this._events.load(e)}startSilentRenew(){this._logger.create("startSilentRenew"),this._silentRenewService.start()}stopSilentRenew(){this._silentRenewService.stop()}get _userStoreKey(){return`user:${this.settings.authority}:${this.settings.client_id}`}async _loadUser(){const e=this._logger.create("_loadUser"),t=await this.settings.userStore.get(this._userStoreKey);return t?(e.debug("user storageString loaded"),Zo.fromStorageString(t)):(e.debug("no user storageString"),null)}async storeUser(e){const t=this._logger.create("storeUser");if(e){t.debug("storing user");const n=e.toStorageString();await this.settings.userStore.set(this._userStoreKey,n)}else this._logger.debug("removing user"),await this.settings.userStore.remove(this._userStoreKey)}async clearStaleState(){await this._client.clearStaleState()}};class Du{static _checkStorageSupport(){if(this.storage_key===void 0)throw Error("This doesn't support local storage")}_getStorageKey(){return Object.getPrototypeOf(this).constructor.storage_key}_IcheckStorageSupport(){if(this._getStorageKey()===void 0)throw Error("This doesn't support local storage")}static restoreFromLocalStorage(){return _checkStorageSupport(),window.sessionStorage.getItem(this.storage_key)?new APIToken(window.sessionStorage.getItem(this.storage_key)):!1}static isCached(){return this._checkStorageSupport(),!!window.sessionStorage.getItem(this.storage_key)}saveToLocalStorage(){this._IcheckStorageSupport(),window.sessionStorage.setItem(this._getStorageKey(),JSON.stringify(this))}}Ie(Du,"storage_key");var ul;let Cj=(ul=class extends Du{constructor(n){super();Ie(this,"user");Ie(this,"key");Ie(this,"expires");Ie(this,"ip");this.user=n.user,this.key=n.key,this.expires=n.expires,this.ip=n.ip}},Ie(ul,"storage_key","pairent_api_key"),ul);const{API_ROOT:Oj,api_path:Pj}=oo,Rs=class extends Du{isLoggedIn(){return!1}constructor(t){super();for(const n in t)this[n]=t[n]}static restoreFromLocalStorage(){}static async getById(t){const n=await Pr.get(Oj+"/api/user/get",{params:{id:t}});if(n.data.error)throw new Error(n.data.error);return new Rs(n.data)}static async login(t){if(t.error!==null)throw new Error(t.error+": "+t.error_description);const n=await Pr.post(Pj("/api/auth/user/login"),t);return n.status!==200?!1:(n.data.error||(new Cj(n.data.token).saveToLocalStorage(),new Rs(n.data.user_data).saveToLocalStorage()),n.data)}};let Tr=Rs;Ie(Tr,"storage_key","pairent_user_data");const{OIDCConfig:Tj}=oo,Rj=P(LS)`
+ font-size: 11pt;
+ width: 250px;
+ height: 60px;
+ padding: 16px 20px;
+
+ font-size: 11.5pt;
+ font-weight: 700;
+ cursor: ${e=>e.disabled?"default":"pointer"};
+
+ & svg {
+ height: 14pt;
+ transform: translateY(4px);
+ margin-left: 10px;
+ }
+ &:hover {
+ background: ${e=>e.disabled?"white":"royalblue"};
+ }
+`,Xf=P.p`
+ font-size: 8pt;
+ color: gray;
+ margin-top: 16px;
+`,Nj=()=>l.jsx("svg",{xmlns:"http://www.w3.org/2000/svg",xmlSpace:"preserve",viewBox:"0 0 451.5 155.9",children:l.jsx("path",{fillRule:"evenodd",d:"M408.7 0h42.8L416 102.5l-2.8 8.1c-8.2 23.9-33.9 43.6-58 45.2h-.6c-.8.1-1.6.1-2.5.1H348c-.8 0-1.6 0-2.4-.1h-43l15.7-45.2.3-.8h35.7c9.1 0 19.2-7.8 22.5-17.2l.4-1 1.2-3.5h-32.7c-4.4 0-19.5 0-13.1-18.5l4.4-12.9 3.9-11.2L356.5 0H393l-21.7 62.8H387c2.6-7.5 15.8-45.6 21.7-62.8zm-91.2 0h25.9l-15.7 45.3h-7c-9.6 0-20.1 7.9-23.5 17.4L265 155.9c-.5 0-1-.1-1.5-.1h-43l15.8-45.2 7.8-22.6 14.8-42.5c8.3-24.1 34.4-44 58.6-45.2V0zM208 0h48.7l-20.1 58.1c-3.2 9.1-9.4 15.2-19.4 17.2l16.8.1-12.3 35.2c-8.2 23.9-33.9 43.6-58 45.2h-.7c-.8.1-1.6.1-2.5.1h-4.1c-.8 0-1.6 0-2.4-.1h-43l38.2-110.4c8.4-24.1 34.4-44 58.7-45.2l.1-.2zm-12.7 40.8h15.4l-8.1 23h-23.9l4.4-12.5c1.7-4.6 7.3-10.5 12.2-10.5zm-25.6 48.8H194l-5.5 16.1c-1.1 3.4-6.1 10.8-13.6 10.8h-14.1l8.9-26.9zM96.9 0h48.7l-20.2 58.1c-3.2 9.1-9.4 15.2-19.4 17.2l16.8.1-9.3 27.1h-.2l-2.8 8.1c-8.2 23.9-33.9 43.6-58 45.2h-.6c-.8.1-1.7.1-2.5.1h-4.1c-.8 0-1.6 0-2.4-.1H0l15.7-45.2L23.6 88l14.7-42.5C46.7 21.4 72.7 1.5 97 .3V0zM84.2 40.8h15.4l-8.1 23H67.6L72 51.3c1.7-4.6 7.3-10.5 12.2-10.5zM58.6 89.6h24.3l-5.5 16.1c-1.1 3.4-6.1 10.8-13.5 10.8H49.7l8.9-26.9z",clipRule:"evenodd"})});class Aj extends bt.Component{constructor(t){super(t),this.state={loading:!1,error:JSON.parse(window.localStorage.getItem("auth_fail"))},window.localStorage.removeItem("auth_fail"),this.openid=this.openid.bind(this)}async openid(){if(this.state.loading===!0)return;this.setState({loading:!0}),Qn.setLogger(console),Qn.setLevel(Qn.NONE),new Ej(Tj).signinRedirect()}render(){return Tr.isCached()&&(window.location.href="/"),l.jsx("div",{style:{height:"65vh"},children:l.jsxs(Nm,{children:[l.jsx("h2",{children:"Вход"}),l.jsx("hr",{}),l.jsx(Rj,{onClick:this.openid,disabled:this.state.loading,children:this.state.loading?l.jsx(ao,{size:"24px",color:"#4169e1"}):l.jsxs(l.Fragment,{children:["Войти через",l.jsx(Nj,{})]})}),l.jsxs(Xf,{children:["Вход осуществляется только через",l.jsx("br",{}),"Систему Единого Входа ВВГУ"]}),this.state.error?l.jsxs(Xf,{style:{color:"darkred",fontWeight:"600"},children:["Произошла ошибка: ",this.state.error.error,this.state.error.error_description?l.jsxs(l.Fragment,{children:[l.jsx("br",{}),this.state.error.error_description]}):null]}):null]})})}}const Ij=P.div`
+ position: relative;
+ top: 50%;
+ left: 50%;
+ transform: translate(-50%, -50%);
+ width: 400px;
+ text-align: center;
+
+ & h2 {
+ font-size: 1.8em;
+ font-weight: 600;
+ margin: 1.5em 0;
+ }
+`,Lj=P.p`
+ font-family: monospace;
+ margin: 10px 0;
+ width: 780px;
+`;class Fj extends bt.Component{constructor(t){super(t),this.response=new Xo(new URL(window.location.href).searchParams)}async componentDidMount(){if(this.response.error)return;window.localStorage.removeItem("auth_fail");let t="?";for(const r in localStorage)if(r.startsWith("oidc.")){t=JSON.parse(localStorage[r]).code_verifier,localStorage.removeItem(r);break}const n=await Tr.login({...this.response,code_verifier:t});if(n.error){window.localStorage.setItem("auth_fail",JSON.stringify(n)),window.location.href="/login";return}n.new_user?window.location.href="/register":window.location.href="/"}render(){return l.jsxs(l.Fragment,{children:[l.jsx("div",{style:{height:"65vh"},children:l.jsxs(Ij,{children:[l.jsx("h2",{children:"Подождите пожалуйста"}),l.jsx("div",{style:{margin:"36px auto",width:"fit-content"},children:l.jsx(ao,{size:"80px",color:"#0077aa"})})]})}),this.response.error?l.jsx("div",{children:l.jsxs(Nm,{children:[l.jsx("h2",{children:"Ошибка авторизации"}),l.jsx("p",{children:this.response.error}),l.jsx(Lj,{children:this.response.error_description})]})}):null]})}}const Mj=P.button`
+ border: 1px solid #c2c4c2;
+ display: inline-block;
+ padding: 12px 16px;
+ border-radius: 14px;
+
+ background: #ffffff;
+ color: gray;
+ box-shadow: 0 2px 1px #00000010;
+
+ font-size: 12pt;
+ float: left;
+
+ & ${Y} {
+ transform: translate(-4px, 2px)
+ }
+`,zj=P.div`
+ height: 100px;
+ padding-top: 32px;
+ z-index: 1;
+ position: relative;
+ display: flex;
+ align-items: center;
+ top: 0;
+
+ & h2 {
+ margin-left: 28px;
+ font-weight: 600;
+ padding: 0;
+ display: inline-block;
+ transform: translateY(4px);
+ }
+
+ & span {
+ margin-left: 14px;
+ font-weight: 500;
+ font-size: 18px;
+ line-height: 19px;
+ }
+`,Bj=P.div`
+ width: 1270px;
+ height: 650px;
+
+ background: #FFFFFF;
+ box-shadow: 0px 0px 12px rgba(0, 0, 0, 0.25);
+ border-radius: 20px;
+ margin: 27px auto;
+`,Uj=P(at)`
+ padding: 30px 26px 30px 36px;
+`,$j=P.img`
+ width: 256px;
+ height: 256px;
+
+ margin: 25px 0px 0px 65px;
+
+ border-radius: 50%;
+ box-shadow: 0px 0px 12px 2px rgba(0, 0, 0, 0.34);
+`,Dj=P.button`
+ display: flex;
+ align-items: center;
+ justify-content: center;
+
+ width: 192px;
+ height: 32px;
+
+ margin: 16px auto 0px;
+
+ font-weight: 700;
+ font-size: 16px;
+ line-height: 19px;
+ color: #FFFFFF;
+
+ background: #007EFF;
+ border-radius: 12px;
+`,Hj=P.p`
+ font-weight: 700;
+ font-size: 20px;
+ line-height: 24px;
+`,Hn=P.p`
+ font-weight: 500;
+ font-size: 14px;
+ line-height: 24px;
+`,Wj=P.input`
+ border: 1px solid #CCCCCC;
+ border-radius: 12px;
+
+ width: ${e=>e.width}px;
+ height: ${e=>e.height}px;
+
+ padding-left: 10px;
+
+ font-weight: 500;
+ font-size: 14px;
+ line-height: 18px;
+ color: #000000;
+
+ &::placeholder {
+ font-weight: 500;
+ font-size: 12px;
+ line-height: 24px;
+ color: #CCCCCC;
+ }
+`,Zf=P.textarea`
+ border: 1px solid #CCCCCC;
+ border-radius: 12px;
+
+ margin: 16px 0px 0px 55px;
+ resize: none;
+
+ padding: 8px;
+
+ font-weight: 500;
+ font-size: 14px;
+ line-height: 18px;
+ color: #000000;
+
+ &::placeholder {
+ font-weight: 500;
+ font-size: 14px;
+ line-height: 24px;
+ color: #CCCCCC;
+ }
+`,qj=P.div`
+ width: calc(100% + 15px);
+ height: 28px;
+
+ padding: 0;
+
+ font-size: 14px;
+ line-height: 28px;
+ display: inline-block;
+ align-items: center;
+ text-align: center;
+ color: #FFFFFF;
+
+ background: ${e=>e.background};
+ border-radius: 20px;
+`,Vj=P.button`
+ width: 28px;
+ height: 28px;
+
+ padding: 0px;
+
+ font-weight: 700;
+ font-size: 20px;
+
+ display: flex;
+ flex-direction: column;
+ justify-content: center;
+ align-items: center;
+ text-align: center;
+ border-radius: 70%;
+
+ color: #FFFFFF;
+ background: #D9D9D9;
+`,Kj=P.button`
+ margin-top: 14px;
+
+ width: auto;
+ height: 27px;
+
+ padding: 0;
+
+ font-weight: 500;
+ font-size: 14px;
+ line-height: 17px;
+
+ text-align: left;
+
+ color: #007EFF;
+ background: none;
+`,cr=e=>l.jsx(l.Fragment,{children:l.jsxs(at,{style:{marginTop:e.marginTop,marginLeft:19},children:[l.jsx(le,{xs:5,children:l.jsx(Hn,{children:e.title})}),l.jsx(le,{children:l.jsx(Hn,{children:e.text})})]})}),di=e=>l.jsx(l.Fragment,{children:l.jsxs(at,{style:{marginTop:e.marginTop,marginLeft:19},children:[l.jsx(le,{xs:5,children:l.jsx(Hn,{children:e.title})}),l.jsx(le,{xs:5,children:l.jsx(Wj,{width:e.width,height:e.height,placeholder:e.placeholderInput,value:e.valueInput})})]})}),cl=e=>{const t=e.list;return t.length==0?l.jsx(l.Fragment,{children:l.jsx("h1",{children:"Вы ничего не указали"})}):l.jsx(l.Fragment,{children:l.jsxs(at,{style:{marginLeft:19},children:[t.map((n,r)=>l.jsx(le,{style:{paddingLeft:0,marginRight:9,marginTop:10},children:l.jsx(qj,{background:n.color,children:n.text})},r)),e.button?l.jsx(l.Fragment,{children:l.jsx(le,{style:{paddingLeft:0,marginRight:9,marginTop:10},children:l.jsx(Vj,{children:"+"})})}):l.jsx(l.Fragment,{children:l.jsx(Kj,{children:"Изменить.."})})]})})},Qj=function(){const[e,t]=N.useState(),n=1,[r,i,o]=Xr(async u=>{const d=await Tr.getById(u);t(d),console.log(e.name)});N.useEffect(()=>{r(n)},[]);const s=[{text:"Честность",color:"#3F51B5"},{text:"Аккуратность",color:"#03BCD6"},{text:"Музыкальность",color:"#E91D65"},{text:"Общительность",color:"#03A9F4"},{text:"Дружелюбность",color:"#8CC34D"}],a=[{text:"Честность",color:"#3F51B5"},{text:"Аккуратность",color:"#03BCD6"},{text:"Музыкальность",color:"#E91D65"},{text:"Общительность",color:"#03A9F4"},{text:"Дружелюбность",color:"#8CC34D"},{text:"Мудрость",color:"#FF5923"},{text:"Адекватность",color:"#2196F4"},{text:"Щедрость",color:"#FFC308"},{text:"Вежливость",color:"#9D28B2"}],c=[{text:"Курит",color:"#94740B"},{text:"Равнодушие",color:"#D9B8B0"},{text:"Эгоист",color:"#6E3F58"},{text:"Лень",color:"#9F6844"},{text:"Лживость",color:"#AD9029"},{text:"Диструктивность",color:"#9A150C"},{text:"Токсичность",color:"#608426"}];return l.jsxs(l.Fragment,{children:[l.jsxs(zj,{children:[l.jsxs(Mj,{children:[l.jsx(Y,{src:"/images/icons/left-arrow-light.svg",width:10,height:16}),"Вернуться назад"]}),l.jsxs("h2",{children:["Личный кабинет",l.jsx("span",{children:"/ Мои данные"})]})]}),l.jsx(Bj,{children:l.jsxs(Uj,{children:[l.jsx(le,{children:l.jsxs(Dn,{children:[l.jsx(Hj,{children:"Добрый день, Александр!"}),l.jsx(Hn,{children:"Ваш статус - Студент"}),l.jsx($j,{src:"/images/avatar-test.jpg"}),l.jsxs(Dj,{children:[l.jsx(Y,{src:"/images/icons/camera.svg",width:18,height:16}),"Загрузить фото"]}),l.jsx(Zf,{rows:3,cols:30,placeholder:"Опиши себя парой предложений.."}),l.jsx(Zf,{style:{marginTop:9},rows:3,cols:30,placeholder:"Напишите сюда свои хобби.."})]})}),l.jsx(le,{children:l.jsxs(Dn,{style:{borderLeft:"1px solid #CCCCCC",height:"100%"},children:[l.jsx(cr,{marginTop:13,title:"Имя",text:"Александр"}),l.jsx(cr,{marginTop:13,title:"Фамилия",text:"Манаенков"}),l.jsx(cr,{marginTop:13,title:"Отчество",text:"Викторович"}),l.jsx(cr,{marginTop:13,title:"Дата рождения",text:"14.09.2004"}),l.jsx(cr,{marginTop:33,title:"Факультет",text:"Информационные системы (по отраслям)"}),l.jsx(cr,{marginTop:44,title:"Группа",text:"СО-ИС-20"}),l.jsx(di,{marginTop:33,title:"Телефон",width:190,height:32,placeholderInput:"Введите номер телефона"}),l.jsx(di,{marginTop:10,title:"E-mail",width:190,height:32,placeholderInput:"Введите E-mail"}),l.jsx(di,{marginTop:10,title:"Telegram",width:190,height:32,placeholderInput:"Введите Ваш телеграмм"}),l.jsx(di,{marginTop:10,title:"Discord",width:190,height:32,placeholderInput:"Введите Ваш дискорд"}),l.jsx(di,{marginTop:55,title:"Город",width:190,height:32,placeholderInput:"Введите город"})]})}),l.jsx(le,{children:l.jsxs(Dn,{style:{borderLeft:"1px solid #CCCCCC",height:"100%"},children:[l.jsx(Hn,{style:{marginLeft:19,marginTop:13},children:"Ваши личностные характеристики"}),l.jsx(cl,{list:s,button:!0}),l.jsx(Hn,{style:{marginLeft:19,marginTop:25},children:"Желаемые черты соседа"}),l.jsx(cl,{list:a}),l.jsx(Hn,{style:{marginLeft:19,marginTop:19},children:"Нежелаемые черты соседа"}),l.jsx(cl,{list:c})]})})]})})]})},Jj=Object.freeze({publicRoutes:[{path:"/",component:l.jsx(pS,{}),exact:!0},{path:"/favorites",component:l.jsx(Rf,{}),exact:!0},{path:"/comparisons",component:l.jsx(Lf,{}),exact:!0},{path:"/apartment/:id",component:l.jsx(K_,{}),exact:!0},{path:"/favorites",component:l.jsx(Rf,{}),exact:!0},{path:"/comparisons",component:l.jsx(Lf,{}),exact:!0},{path:"/tinder",component:l.jsx(IS,{}),exact:!0},{path:"/login",component:l.jsx(Aj,{}),exact:!0},{path:"/sign-in",component:l.jsx(Fj,{}),exact:!0},{path:"/psych_test",component:l.jsx(xS,{}),exact:!0},{path:"/personal_cabinet",component:l.jsx(Qj,{}),exact:!0}],privateRoutes:[]}),{publicRoutes:Gj}=Jj,Yj=()=>l.jsx(lx,{children:Gj.map(e=>l.jsx(bg,{element:e.component,path:e.path,exact:e.exact},e.path))});const Xj=function(){return l.jsxs("footer",{children:[l.jsxs("div",{className:"footerHouses",children:[l.jsxs("svg",{width:"64",height:"112",viewBox:"0 0 64 112",fill:"none",xmlns:"http://www.w3.org/2000/svg",children:[l.jsx("path",{d:"M0 16L31.5 0.5L64 16V112H0V16Z",fill:"#D9D9D9"}),l.jsx("rect",{x:"45",width:"8",height:"16",fill:"#D9D9D9"}),l.jsx("rect",{x:"37",y:"27",width:"16",height:"16",fill:"white"}),l.jsx("rect",{x:"10",y:"27",width:"16",height:"16",fill:"white"}),l.jsx("rect",{x:"37",y:"79",width:"16",height:"16",fill:"white"}),l.jsx("rect",{x:"10",y:"79",width:"16",height:"16",fill:"white"}),l.jsx("rect",{x:"37",y:"53",width:"16",height:"16",fill:"white"}),l.jsx("rect",{x:"10",y:"53",width:"16",height:"16",fill:"white"})]}),l.jsxs("svg",{width:"64",height:"64",viewBox:"0 0 64 64",fill:"none",xmlns:"http://www.w3.org/2000/svg",children:[l.jsx("rect",{width:"64",height:"64",fill:"#D9D9D9"}),l.jsx("rect",{x:"38",y:"38",width:"16",height:"16",fill:"white"}),l.jsx("rect",{x:"11",y:"38",width:"16",height:"16",fill:"white"}),l.jsx("rect",{x:"38",y:"12",width:"16",height:"16",fill:"white"}),l.jsx("rect",{x:"11",y:"12",width:"16",height:"16",fill:"white"})]})]}),l.jsx("div",{className:"footerBlock"})]})};function Zj(){return l.jsxs(l.Fragment,{children:[l.jsxs(hx,{children:[l.jsx(k1,{}),l.jsxs("main",{children:[l.jsx("div",{className:"horizontalLine"}),l.jsx(Yj,{})]})]}),l.jsx(Xj,{})]})}const eb=dl.createRoot(document.getElementById("root"));eb.render(l.jsx(Zj,{}));
diff --git a/static/index.html b/static/index.html
new file mode 100644
index 0000000..7b2ba46
--- /dev/null
+++ b/static/index.html
@@ -0,0 +1,20 @@
+
+
+
+
+ Pairent
+
+
+
+
+
+
+
+
+
+
+
+